HeK.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899
  1. package me.hammerle;
  2. import java.util.Arrays;
  3. import net.minecraft.block.Block;
  4. import net.minecraft.block.Blocks;
  5. import net.minecraft.client.Minecraft;
  6. import net.minecraft.util.text.ChatType;
  7. import net.minecraft.util.text.StringTextComponent;
  8. import net.minecraftforge.client.event.ClientChatEvent;
  9. import net.minecraftforge.client.event.ClientChatReceivedEvent;
  10. import net.minecraftforge.eventbus.api.SubscribeEvent;
  11. import net.minecraftforge.fml.common.Mod;
  12. @Mod.EventBusSubscriber
  13. @Mod("hefix")
  14. public class HeK {
  15. private static String filter = "Hegemony";
  16. private static String percent = null;
  17. private static double startExp = 0.0;
  18. private static double exp = 0.0;
  19. private static double nextExp = 0.0;
  20. private static void sendMessage(String msg) {
  21. Minecraft.getInstance().ingameGUI.addChatMessage(ChatType.CHAT, new StringTextComponent(msg));
  22. }
  23. private static boolean isOre(Block b) {
  24. return b == Blocks.IRON_ORE || b == Blocks.COAL_ORE;
  25. }
  26. @SubscribeEvent
  27. public static void onClientChat(ClientChatEvent e) {
  28. if(!e.getMessage().startsWith("/")) {
  29. return;
  30. }
  31. String[] parts = e.getMessage().split(" ");
  32. switch(parts[0]) {
  33. case "/hefix":
  34. e.setCanceled(true);
  35. if(parts.length < 2) {
  36. filter = null;
  37. sendMessage("Filter cleared");
  38. return;
  39. }
  40. filter = String.join(" ", Arrays.copyOfRange(parts, 1, parts.length));
  41. sendMessage("Filter set to '" + filter + "'");
  42. break;
  43. case "/percent":
  44. e.setCanceled(true);
  45. if(parts.length < 4) {
  46. percent = null;
  47. sendMessage("EXP cleared");
  48. return;
  49. }
  50. percent = parts[1];
  51. try {
  52. exp = Double.parseDouble(parts[2]);
  53. startExp = exp;
  54. nextExp = Double.parseDouble(parts[3]);
  55. } catch(NumberFormatException ex) {
  56. sendMessage("Type valid numbers");
  57. return;
  58. }
  59. sendMessage(String.format("Percent set to '%s' and %.1f and %.1f", percent, exp, nextExp));
  60. break;
  61. }
  62. }
  63. @SubscribeEvent
  64. public static void onChatReceive(ClientChatReceivedEvent e) {
  65. String msg = e.getMessage().getFormattedText();
  66. if(filter != null && msg.contains(filter)) {
  67. e.setCanceled(true);
  68. }
  69. if(percent != null && e.getType() == ChatType.GAME_INFO && msg.contains(percent)) {
  70. msg = msg.replaceAll("§.", "");
  71. String[] parts = msg.split(" ");
  72. for(int i = 0; i < parts.length; i++) {
  73. if(parts[i].equals(percent)) {
  74. if(i == 0) {
  75. continue;
  76. }
  77. try {
  78. exp += Double.parseDouble(parts[i - 1]);
  79. double d = ((exp - startExp) * 100.0) / (nextExp - startExp);
  80. e.setMessage(new StringTextComponent(String.format("§6%s§r +%s - %.1f%%", percent, parts[i - 1], d)));
  81. return;
  82. } catch(NumberFormatException ex) {
  83. e.setMessage(new StringTextComponent(ex.getLocalizedMessage()));
  84. break;
  85. }
  86. }
  87. }
  88. e.setCanceled(true);
  89. }
  90. }
  91. }