package me.hammerle; import java.util.Arrays; import net.minecraft.block.Block; import net.minecraft.block.Blocks; import net.minecraft.client.Minecraft; import net.minecraft.util.text.ChatType; import net.minecraft.util.text.StringTextComponent; import net.minecraftforge.client.event.ClientChatEvent; import net.minecraftforge.client.event.ClientChatReceivedEvent; import net.minecraftforge.eventbus.api.SubscribeEvent; import net.minecraftforge.fml.common.Mod; @Mod.EventBusSubscriber @Mod("hefix") public class HeK { private static String filter = "Hegemony"; private static String percent = null; private static double startExp = 0.0; private static double exp = 0.0; private static double nextExp = 0.0; private static void sendMessage(String msg) { Minecraft.getInstance().ingameGUI.addChatMessage(ChatType.CHAT, new StringTextComponent(msg)); } private static boolean isOre(Block b) { return b == Blocks.IRON_ORE || b == Blocks.COAL_ORE; } @SubscribeEvent public static void onClientChat(ClientChatEvent e) { if(!e.getMessage().startsWith("/")) { return; } String[] parts = e.getMessage().split(" "); switch(parts[0]) { case "/hefix": e.setCanceled(true); if(parts.length < 2) { filter = null; sendMessage("Filter cleared"); return; } filter = String.join(" ", Arrays.copyOfRange(parts, 1, parts.length)); sendMessage("Filter set to '" + filter + "'"); break; case "/percent": e.setCanceled(true); if(parts.length < 4) { percent = null; sendMessage("EXP cleared"); return; } percent = parts[1]; try { exp = Double.parseDouble(parts[2]); startExp = exp; nextExp = Double.parseDouble(parts[3]); } catch(NumberFormatException ex) { sendMessage("Type valid numbers"); return; } sendMessage(String.format("Percent set to '%s' and %.1f and %.1f", percent, exp, nextExp)); break; } } @SubscribeEvent public static void onChatReceive(ClientChatReceivedEvent e) { String msg = e.getMessage().getFormattedText(); if(filter != null && msg.contains(filter)) { e.setCanceled(true); } if(percent != null && e.getType() == ChatType.GAME_INFO && msg.contains(percent)) { msg = msg.replaceAll("§.", ""); String[] parts = msg.split(" "); for(int i = 0; i < parts.length; i++) { if(parts[i].equals(percent)) { if(i == 0) { continue; } try { exp += Double.parseDouble(parts[i - 1]); double d = ((exp - startExp) * 100.0) / (nextExp - startExp); e.setMessage(new StringTextComponent(String.format("§6%s§r +%s - %.1f%%", percent, parts[i - 1], d))); return; } catch(NumberFormatException ex) { e.setMessage(new StringTextComponent(ex.getLocalizedMessage())); break; } } } e.setCanceled(true); } } }