| 
					
				 | 
			
			
				@@ -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); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+        } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+} 
			 |