Add chat filter
This commit is contained in:
parent
f5c7e8532a
commit
ef3bf5f31e
@ -1,6 +1,7 @@
|
|||||||
package cc.fascinated.wildaddons.addon;
|
package cc.fascinated.wildaddons.addon;
|
||||||
|
|
||||||
import cc.fascinated.wildaddons.addon.impl.chat.AutoWelcomerAddon;
|
import cc.fascinated.wildaddons.addon.impl.chat.AutoWelcomerAddon;
|
||||||
|
import cc.fascinated.wildaddons.addon.impl.chat.MessageFilterAddon;
|
||||||
import cc.fascinated.wildaddons.addon.impl.ui.OverlayAddon;
|
import cc.fascinated.wildaddons.addon.impl.ui.OverlayAddon;
|
||||||
|
|
||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
@ -16,6 +17,7 @@ public class AddonManager {
|
|||||||
public AddonManager() {
|
public AddonManager() {
|
||||||
registerAddon(new AutoWelcomerAddon());
|
registerAddon(new AutoWelcomerAddon());
|
||||||
registerAddon(new OverlayAddon());
|
registerAddon(new OverlayAddon());
|
||||||
|
registerAddon(new MessageFilterAddon());
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -26,4 +28,13 @@ public class AddonManager {
|
|||||||
public void registerAddon(Addon addon) {
|
public void registerAddon(Addon addon) {
|
||||||
ADDONS.add(addon);
|
ADDONS.add(addon);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isEnabled(Class<?> clazz) {
|
||||||
|
for (Addon addon : ADDONS) {
|
||||||
|
if (addon.getClass() == clazz) {
|
||||||
|
return addon.isEnabled();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ import cc.fascinated.wildaddons.addon.Addon;
|
|||||||
import cc.fascinated.wildaddons.listener.PlayerListener;
|
import cc.fascinated.wildaddons.listener.PlayerListener;
|
||||||
import cc.fascinated.wildaddons.statistic.Statistic;
|
import cc.fascinated.wildaddons.statistic.Statistic;
|
||||||
import cc.fascinated.wildaddons.utils.PlayerUtils;
|
import cc.fascinated.wildaddons.utils.PlayerUtils;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
import java.util.concurrent.ThreadLocalRandom;
|
import java.util.concurrent.ThreadLocalRandom;
|
||||||
|
|
||||||
@ -18,7 +19,7 @@ public class AutoWelcomerAddon extends Addon {
|
|||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onChat(String message, String messageStripped) {
|
public void onChat(String message, String messageStripped, CallbackInfo ci) {
|
||||||
if (!this.isEnabled()) { // This addon is disabled
|
if (!this.isEnabled()) { // This addon is disabled
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,42 @@
|
|||||||
|
package cc.fascinated.wildaddons.addon.impl.chat;
|
||||||
|
|
||||||
|
import cc.fascinated.wildaddons.addon.Addon;
|
||||||
|
import cc.fascinated.wildaddons.statistic.Statistic;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
public class MessageFilterAddon extends Addon {
|
||||||
|
|
||||||
|
private final List<String> toRemove = Arrays.asList(
|
||||||
|
"⛃ Blessing",
|
||||||
|
"✌ OP CRATE",
|
||||||
|
"✌ VOTE",
|
||||||
|
"RANKS",
|
||||||
|
//"has just won a",
|
||||||
|
"+ KeyFinder",
|
||||||
|
"ALERT",
|
||||||
|
"WILDPASS",
|
||||||
|
"VALUE",
|
||||||
|
"----------------------------------------------------"
|
||||||
|
);
|
||||||
|
|
||||||
|
public MessageFilterAddon() {
|
||||||
|
super("Chat Filter", "Removes all the junk messages from chat.", Category.CHAT);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void onChat(String message, String messageStripped, CallbackInfo ci) {
|
||||||
|
if (message.equals("")) {
|
||||||
|
ci.cancel();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
for (String check : toRemove) {
|
||||||
|
if (messageStripped.startsWith(check)) {
|
||||||
|
ci.cancel();
|
||||||
|
Statistic.FILTERED_MESSAGES.increment();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -3,12 +3,9 @@ package cc.fascinated.wildaddons.addon.impl.ui;
|
|||||||
import cc.fascinated.wildaddons.Main;
|
import cc.fascinated.wildaddons.Main;
|
||||||
import cc.fascinated.wildaddons.addon.Addon;
|
import cc.fascinated.wildaddons.addon.Addon;
|
||||||
import cc.fascinated.wildaddons.tpsmonitor.TpsMonitor;
|
import cc.fascinated.wildaddons.tpsmonitor.TpsMonitor;
|
||||||
import cc.fascinated.wildaddons.utils.NumberUtils;
|
|
||||||
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
|
import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.font.TextRenderer;
|
import net.minecraft.client.font.TextRenderer;
|
||||||
import net.minecraft.network.Packet;
|
|
||||||
import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket;
|
|
||||||
|
|
||||||
public class OverlayAddon extends Addon {
|
public class OverlayAddon extends Addon {
|
||||||
|
|
||||||
|
@ -1,6 +1,7 @@
|
|||||||
package cc.fascinated.wildaddons.event;
|
package cc.fascinated.wildaddons.event;
|
||||||
|
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
|
import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
||||||
|
|
||||||
public interface EventListener {
|
public interface EventListener {
|
||||||
|
|
||||||
@ -12,7 +13,7 @@ public interface EventListener {
|
|||||||
* @param message the message
|
* @param message the message
|
||||||
* @param messageStripped the message without colors
|
* @param messageStripped the message without colors
|
||||||
*/
|
*/
|
||||||
default void onChat(String message, String messageStripped) {}
|
default void onChat(String message, String messageStripped, CallbackInfo ci) {}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Gets called when the client receives a packet.
|
* Gets called when the client receives a packet.
|
||||||
|
@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo;
|
|||||||
@Mixin(ChatHud.class)
|
@Mixin(ChatHud.class)
|
||||||
public class ChatHudMixin {
|
public class ChatHudMixin {
|
||||||
|
|
||||||
@Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V", at = @At("HEAD"))
|
@Inject(method = "addMessage(Lnet/minecraft/text/Text;Lnet/minecraft/network/message/MessageSignatureData;ILnet/minecraft/client/gui/hud/MessageIndicator;Z)V", at = @At(value = "INVOKE", target = "Lnet/minecraft/client/gui/hud/ChatHudLine$Visible;<init>(ILnet/minecraft/text/OrderedText;Lnet/minecraft/client/gui/hud/MessageIndicator;Z)V"), cancellable = true)
|
||||||
public void onChat(Text text, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) {
|
public void onChat(Text text, MessageSignatureData signature, int ticks, MessageIndicator indicator, boolean refresh, CallbackInfo ci) {
|
||||||
if (!PlayerUtils.isOnWild()) { // Ignore if the player isn't on Wild
|
if (!PlayerUtils.isOnWild()) { // Ignore if the player isn't on Wild
|
||||||
return;
|
return;
|
||||||
@ -25,7 +25,7 @@ public class ChatHudMixin {
|
|||||||
String stripped = TextUtils.stripColors(message); // Strip the text removing colors
|
String stripped = TextUtils.stripColors(message); // Strip the text removing colors
|
||||||
|
|
||||||
for (EventListener listener : EventManager.getListeners()) {
|
for (EventListener listener : EventManager.getListeners()) {
|
||||||
listener.onChat(message, stripped);
|
listener.onChat(message, stripped, ci);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,7 +5,6 @@ import cc.fascinated.wildaddons.event.EventListener;
|
|||||||
import cc.fascinated.wildaddons.event.EventManager;
|
import cc.fascinated.wildaddons.event.EventManager;
|
||||||
import cc.fascinated.wildaddons.utils.PlayerUtils;
|
import cc.fascinated.wildaddons.utils.PlayerUtils;
|
||||||
import net.minecraft.client.MinecraftClient;
|
import net.minecraft.client.MinecraftClient;
|
||||||
import net.minecraft.client.network.ClientPlayNetworkHandler;
|
|
||||||
import org.spongepowered.asm.mixin.Mixin;
|
import org.spongepowered.asm.mixin.Mixin;
|
||||||
import org.spongepowered.asm.mixin.injection.At;
|
import org.spongepowered.asm.mixin.injection.At;
|
||||||
import org.spongepowered.asm.mixin.injection.Inject;
|
import org.spongepowered.asm.mixin.injection.Inject;
|
||||||
|
@ -8,7 +8,8 @@ import java.util.HashMap;
|
|||||||
@Getter @RequiredArgsConstructor
|
@Getter @RequiredArgsConstructor
|
||||||
public enum Statistic {
|
public enum Statistic {
|
||||||
|
|
||||||
PLAYERS_WELCOMED("players-welcomed");
|
PLAYERS_WELCOMED("players-welcomed"),
|
||||||
|
FILTERED_MESSAGES("filtered-messages");
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The in memory storage for all statistics
|
* The in memory storage for all statistics
|
||||||
|
@ -3,7 +3,6 @@ package cc.fascinated.wildaddons.tpsmonitor;
|
|||||||
import cc.fascinated.wildaddons.event.EventListener;
|
import cc.fascinated.wildaddons.event.EventListener;
|
||||||
import cc.fascinated.wildaddons.utils.NumberUtils;
|
import cc.fascinated.wildaddons.utils.NumberUtils;
|
||||||
import com.google.common.collect.EvictingQueue;
|
import com.google.common.collect.EvictingQueue;
|
||||||
import lombok.Getter;
|
|
||||||
import net.minecraft.network.Packet;
|
import net.minecraft.network.Packet;
|
||||||
import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket;
|
import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket;
|
||||||
|
|
||||||
@ -50,7 +49,7 @@ public class TpsMonitor implements EventListener {
|
|||||||
* @return the formatted tps
|
* @return the formatted tps
|
||||||
*/
|
*/
|
||||||
public static String getFormattedTPS() {
|
public static String getFormattedTPS() {
|
||||||
float tps = calculateServerTPS();
|
float tps = Math.max(calculateServerTPS(), 0);
|
||||||
|
|
||||||
return tps > 20.00 ? "20.00*" : NumberUtils.format(tps);
|
return tps > 20.00 ? "20.00*" : NumberUtils.format(tps);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user