|
@@ -0,0 +1,99 @@
|
|
|
|
+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);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+}
|