Kajetan Johannes Hammerle 3 years ago
commit
aa43b3ca39

+ 7 - 0
.gitignore

@@ -0,0 +1,7 @@
+/runClient
+/runServer
+/build
+/gradle
+gradle.properties
+gradlew
+/.gradle

+ 44 - 0
build.gradle

@@ -0,0 +1,44 @@
+buildscript {
+    repositories {
+        maven { url = 'https://files.minecraftforge.net/maven' }
+        jcenter()
+        mavenCentral()
+    }
+    dependencies {
+        classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
+    }
+}
+apply plugin: 'net.minecraftforge.gradle'
+// Only edit below this line, the above code adds and enables the necessary things for Forge to be setup.
+
+version = '1.0'
+group = 'me.hammerle.hefix'
+archivesBaseName = 'hefix'
+
+minecraft {
+    mappings channel: 'snapshot', version: '20200514-1.15.1'
+
+    runs {
+        client {
+            workingDirectory project.file('runClient')
+            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+            property 'forge.logging.console.level', 'info'
+            args '--username', 'kajetanjohannes'
+        }
+
+        server {
+            workingDirectory project.file('runServer')
+            property 'forge.logging.markers', 'SCAN,REGISTRIES,REGISTRYDUMP'
+            property 'forge.logging.console.level', 'info'
+        }
+    }
+}
+
+apply plugin: 'java'
+compileJava {
+    options.compilerArgs << '--release' << '8'
+}
+
+dependencies {
+    minecraft 'net.minecraftforge:forge:1.15.2-31.2.21'
+}

+ 99 - 0
src/main/java/me/hammerle/HeK.java

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

+ 11 - 0
src/main/resources/META-INF/mods.toml

@@ -0,0 +1,11 @@
+modLoader="javafml"
+loaderVersion="[31,)"
+[[mods]]
+modId="hek"
+version="0.0.1"
+displayName="HeK Mod"
+credits="kajetanjohannes"
+authors="kajetanjohannes"
+description='''
+HeK for Hegemony
+'''

+ 6 - 0
src/main/resources/pack.mcmeta

@@ -0,0 +1,6 @@
+{
+    "pack": {
+        "description": "HeK resources",
+        "pack_format": 5
+    }
+}