diff --git a/src/main/java/cc/fascinated/wildaddons/addon/AddonManager.java b/src/main/java/cc/fascinated/wildaddons/addon/AddonManager.java index 1cbcdbc..4d9a90d 100644 --- a/src/main/java/cc/fascinated/wildaddons/addon/AddonManager.java +++ b/src/main/java/cc/fascinated/wildaddons/addon/AddonManager.java @@ -1,6 +1,7 @@ package cc.fascinated.wildaddons.addon; 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 java.util.HashSet; @@ -16,6 +17,7 @@ public class AddonManager { public AddonManager() { registerAddon(new AutoWelcomerAddon()); registerAddon(new OverlayAddon()); + registerAddon(new MessageFilterAddon()); } /** @@ -26,4 +28,13 @@ public class AddonManager { public void registerAddon(Addon addon) { ADDONS.add(addon); } + + public static boolean isEnabled(Class clazz) { + for (Addon addon : ADDONS) { + if (addon.getClass() == clazz) { + return addon.isEnabled(); + } + } + return false; + } } diff --git a/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/AutoWelcomerAddon.java b/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/AutoWelcomerAddon.java index 389e808..016d7f5 100644 --- a/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/AutoWelcomerAddon.java +++ b/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/AutoWelcomerAddon.java @@ -5,6 +5,7 @@ import cc.fascinated.wildaddons.addon.Addon; import cc.fascinated.wildaddons.listener.PlayerListener; import cc.fascinated.wildaddons.statistic.Statistic; import cc.fascinated.wildaddons.utils.PlayerUtils; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; import java.util.concurrent.ThreadLocalRandom; @@ -18,7 +19,7 @@ public class AutoWelcomerAddon extends Addon { } @Override - public void onChat(String message, String messageStripped) { + public void onChat(String message, String messageStripped, CallbackInfo ci) { if (!this.isEnabled()) { // This addon is disabled return; } diff --git a/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/MessageFilterAddon.java b/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/MessageFilterAddon.java new file mode 100644 index 0000000..3c03635 --- /dev/null +++ b/src/main/java/cc/fascinated/wildaddons/addon/impl/chat/MessageFilterAddon.java @@ -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 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(); + } + } + } +} diff --git a/src/main/java/cc/fascinated/wildaddons/addon/impl/ui/OverlayAddon.java b/src/main/java/cc/fascinated/wildaddons/addon/impl/ui/OverlayAddon.java index 1536b16..02003a7 100644 --- a/src/main/java/cc/fascinated/wildaddons/addon/impl/ui/OverlayAddon.java +++ b/src/main/java/cc/fascinated/wildaddons/addon/impl/ui/OverlayAddon.java @@ -3,12 +3,9 @@ package cc.fascinated.wildaddons.addon.impl.ui; import cc.fascinated.wildaddons.Main; import cc.fascinated.wildaddons.addon.Addon; import cc.fascinated.wildaddons.tpsmonitor.TpsMonitor; -import cc.fascinated.wildaddons.utils.NumberUtils; import net.fabricmc.fabric.api.client.rendering.v1.HudRenderCallback; import net.minecraft.client.MinecraftClient; import net.minecraft.client.font.TextRenderer; -import net.minecraft.network.Packet; -import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; public class OverlayAddon extends Addon { diff --git a/src/main/java/cc/fascinated/wildaddons/event/EventListener.java b/src/main/java/cc/fascinated/wildaddons/event/EventListener.java index 8a9fd30..8ff227a 100644 --- a/src/main/java/cc/fascinated/wildaddons/event/EventListener.java +++ b/src/main/java/cc/fascinated/wildaddons/event/EventListener.java @@ -1,6 +1,7 @@ package cc.fascinated.wildaddons.event; import net.minecraft.network.Packet; +import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; public interface EventListener { @@ -12,7 +13,7 @@ public interface EventListener { * @param message the message * @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. diff --git a/src/main/java/cc/fascinated/wildaddons/mixin/ChatHudMixin.java b/src/main/java/cc/fascinated/wildaddons/mixin/ChatHudMixin.java index 97a5de9..ade065d 100644 --- a/src/main/java/cc/fascinated/wildaddons/mixin/ChatHudMixin.java +++ b/src/main/java/cc/fascinated/wildaddons/mixin/ChatHudMixin.java @@ -16,7 +16,7 @@ import org.spongepowered.asm.mixin.injection.callback.CallbackInfo; @Mixin(ChatHud.class) 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;(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) { if (!PlayerUtils.isOnWild()) { // Ignore if the player isn't on Wild return; @@ -25,7 +25,7 @@ public class ChatHudMixin { String stripped = TextUtils.stripColors(message); // Strip the text removing colors for (EventListener listener : EventManager.getListeners()) { - listener.onChat(message, stripped); + listener.onChat(message, stripped, ci); } } } diff --git a/src/main/java/cc/fascinated/wildaddons/mixin/MinecraftClientMixin.java b/src/main/java/cc/fascinated/wildaddons/mixin/MinecraftClientMixin.java index 435eae3..679bc65 100644 --- a/src/main/java/cc/fascinated/wildaddons/mixin/MinecraftClientMixin.java +++ b/src/main/java/cc/fascinated/wildaddons/mixin/MinecraftClientMixin.java @@ -5,7 +5,6 @@ import cc.fascinated.wildaddons.event.EventListener; import cc.fascinated.wildaddons.event.EventManager; import cc.fascinated.wildaddons.utils.PlayerUtils; import net.minecraft.client.MinecraftClient; -import net.minecraft.client.network.ClientPlayNetworkHandler; import org.spongepowered.asm.mixin.Mixin; import org.spongepowered.asm.mixin.injection.At; import org.spongepowered.asm.mixin.injection.Inject; diff --git a/src/main/java/cc/fascinated/wildaddons/statistic/Statistic.java b/src/main/java/cc/fascinated/wildaddons/statistic/Statistic.java index 6328128..762d52c 100644 --- a/src/main/java/cc/fascinated/wildaddons/statistic/Statistic.java +++ b/src/main/java/cc/fascinated/wildaddons/statistic/Statistic.java @@ -8,7 +8,8 @@ import java.util.HashMap; @Getter @RequiredArgsConstructor public enum Statistic { - PLAYERS_WELCOMED("players-welcomed"); + PLAYERS_WELCOMED("players-welcomed"), + FILTERED_MESSAGES("filtered-messages"); /** * The in memory storage for all statistics diff --git a/src/main/java/cc/fascinated/wildaddons/tpsmonitor/TpsMonitor.java b/src/main/java/cc/fascinated/wildaddons/tpsmonitor/TpsMonitor.java index bd302c6..91aceaa 100644 --- a/src/main/java/cc/fascinated/wildaddons/tpsmonitor/TpsMonitor.java +++ b/src/main/java/cc/fascinated/wildaddons/tpsmonitor/TpsMonitor.java @@ -3,7 +3,6 @@ package cc.fascinated.wildaddons.tpsmonitor; import cc.fascinated.wildaddons.event.EventListener; import cc.fascinated.wildaddons.utils.NumberUtils; import com.google.common.collect.EvictingQueue; -import lombok.Getter; import net.minecraft.network.Packet; import net.minecraft.network.packet.s2c.play.WorldTimeUpdateS2CPacket; @@ -50,7 +49,7 @@ public class TpsMonitor implements EventListener { * @return the formatted tps */ public static String getFormattedTPS() { - float tps = calculateServerTPS(); + float tps = Math.max(calculateServerTPS(), 0); return tps > 20.00 ? "20.00*" : NumberUtils.format(tps); }