diff options
-rw-r--r-- | src/main/java/at/lorenz/mod/ItemDisplayOverlayFeatures.kt | 2 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/LorenzMod.java | 10 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/config/Features.java | 104 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt | 48 | ||||
-rw-r--r-- | src/main/java/at/lorenz/mod/utils/GuiRender.kt | 30 |
5 files changed, 138 insertions, 56 deletions
diff --git a/src/main/java/at/lorenz/mod/ItemDisplayOverlayFeatures.kt b/src/main/java/at/lorenz/mod/ItemDisplayOverlayFeatures.kt index d542541ac..4c71449d9 100644 --- a/src/main/java/at/lorenz/mod/ItemDisplayOverlayFeatures.kt +++ b/src/main/java/at/lorenz/mod/ItemDisplayOverlayFeatures.kt @@ -75,7 +75,7 @@ class ItemDisplayOverlayFeatures { if (LorenzMod.feature.item.displayNewYearCakeNumber) { if (name.startsWith("New Year Cake")) { - return "§b" + name.split("(Year ", ")")[1] + return "§b" + name.between("(Year ", ")") } } diff --git a/src/main/java/at/lorenz/mod/LorenzMod.java b/src/main/java/at/lorenz/mod/LorenzMod.java index ef5a2479e..fb6986293 100644 --- a/src/main/java/at/lorenz/mod/LorenzMod.java +++ b/src/main/java/at/lorenz/mod/LorenzMod.java @@ -8,6 +8,7 @@ import at.lorenz.mod.chat.PlayerChatFilter; import at.lorenz.mod.config.Features; import at.lorenz.mod.dungeon.DungeonChatFilter; import at.lorenz.mod.dungeon.DungeonHighlightClickedBlocks; +import at.lorenz.mod.misc.CurrentPetDisplay; import com.google.gson.Gson; import com.google.gson.GsonBuilder; import com.thatgravyboat.skyblockhud_2.commands.Commands; @@ -52,6 +53,7 @@ public class LorenzMod { MinecraftForge.EVENT_BUS.register(new HideNotClickableItems()); MinecraftForge.EVENT_BUS.register(new DungeonHighlightClickedBlocks()); MinecraftForge.EVENT_BUS.register(new ItemDisplayOverlayFeatures()); + MinecraftForge.EVENT_BUS.register(new CurrentPetDisplay()); Commands.init(); @@ -102,15 +104,7 @@ public class LorenzMod { feature = new Features(); saveConfig(); } - // - // Textures.setTexture(config.misc.style); - // - // if (WarpHandler.load()) { - // WarpHandler.save(); - // } - // Runtime.getRuntime().addShutdownHook(new Thread(this::saveConfig)); - // Runtime.getRuntime().addShutdownHook(new Thread(TrackerFileLoader::saveTrackerStatsFile)); } public void saveConfig() { diff --git a/src/main/java/at/lorenz/mod/config/Features.java b/src/main/java/at/lorenz/mod/config/Features.java index bfd48f627..97f9be3d8 100644 --- a/src/main/java/at/lorenz/mod/config/Features.java +++ b/src/main/java/at/lorenz/mod/config/Features.java @@ -3,10 +3,12 @@ package at.lorenz.mod.config; import at.lorenz.mod.LorenzMod; import com.google.gson.annotations.Expose; import com.thatgravyboat.skyblockhud_2.config.SBHConfigEditor; +import com.thatgravyboat.skyblockhud_2.core.GuiElement; import com.thatgravyboat.skyblockhud_2.core.GuiScreenElementWrapper; import com.thatgravyboat.skyblockhud_2.core.config.Position; import com.thatgravyboat.skyblockhud_2.core.config.annotations.Category; import com.thatgravyboat.skyblockhud_2.core.config.annotations.ConfigEditorBoolean; +import com.thatgravyboat.skyblockhud_2.core.config.annotations.ConfigEditorButton; import com.thatgravyboat.skyblockhud_2.core.config.annotations.ConfigOption; import com.thatgravyboat.skyblockhud_2.core.config.gui.GuiPositionEditor; import net.minecraft.client.Minecraft; @@ -14,56 +16,30 @@ import net.minecraft.client.Minecraft; public class Features { private void editOverlay(String activeConfig, int width, int height, Position position) { - Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(position, width, height, () -> {}, () -> {}, () -> LorenzMod.screenToOpen = new GuiScreenElementWrapper(new SBHConfigEditor(LorenzMod.feature, activeConfig)))); + Minecraft.getMinecraft().displayGuiScreen(new GuiPositionEditor(position, width, height, () -> { + }, () -> { + }, () -> LorenzMod.screenToOpen = new GuiScreenElementWrapper(new SBHConfigEditor(LorenzMod.feature, activeConfig)))); } public void executeRunnable(String runnableId) { - // String activeConfigCategory = null; - // if (Minecraft.getMinecraft().currentScreen instanceof GuiScreenElementWrapper) { - // GuiScreenElementWrapper wrapper = (GuiScreenElementWrapper) Minecraft.getMinecraft().currentScreen; - // if (wrapper.element instanceof SBHConfigEditor) { - // activeConfigCategory = ((SBHConfigEditor) wrapper.element).getSelectedCategoryName(); - // } - // } - // - // switch (runnableId) { - // case "rpg": - // editOverlay(activeConfigCategory, 120, 47, rpg.rpgHudPosition); - // return; - // case "d1": - // editOverlay(activeConfigCategory, 120, 32, dungeon.dungeonPlayer1); - // return; - // case "d2": - // editOverlay(activeConfigCategory, 120, 32, dungeon.dungeonPlayer2); - // return; - // case "d3": - // editOverlay(activeConfigCategory, 120, 32, dungeon.dungeonPlayer3); - // return; - // case "d4": - // editOverlay(activeConfigCategory, 120, 32, dungeon.dungeonPlayer4); - // return; - // case "main": - // editOverlay(activeConfigCategory, 1000, 34, main.mainHudPos); - // return; - // case "ultimate": - // editOverlay(activeConfigCategory, 182, 5, dungeon.barPosition); - // return; - // case "map": - // editOverlay(activeConfigCategory, 72, 72, map.miniMapPosition); - // return; - // case "tracker": - // editOverlay(activeConfigCategory, 130, 70, trackers.trackerPosition); - // return; - // case "drill": - // editOverlay(activeConfigCategory, 136, 7, mining.drillBar); - // return; - // case "heat": - // editOverlay(activeConfigCategory, 45, 7, mining.heatBar); - // return; - // case "dialogue": - // editOverlay(activeConfigCategory, 182, 68, misc.dialoguePos); - // return; - // } + String activeConfigCategory = null; + if (Minecraft.getMinecraft().currentScreen instanceof GuiScreenElementWrapper) { + GuiScreenElementWrapper wrapper = (GuiScreenElementWrapper) Minecraft.getMinecraft().currentScreen; + GuiElement element = wrapper.element; + if (element instanceof SBHConfigEditor) { + activeConfigCategory = ((SBHConfigEditor) element).getSelectedCategoryName(); + } + } + + if (runnableId.equals("petDisplay")) { + editOverlay(activeConfigCategory, 200, 16, misc.petDisplayPos); + return; + } + + if (runnableId.equals("testPos")) { + editOverlay(activeConfigCategory, 200, 16, test.testPos); + return; + } } @Expose @@ -82,6 +58,14 @@ public class Features { @Category(name = "Bazaar", desc = "Bazaar settings.") public Bazaar bazaar = new Bazaar(); + @Expose + @Category(name = "Misc", desc = "Settings without a big category") + public Misc misc = new Misc(); + + @Expose + @Category(name = "Test", desc = "Test stuff") + public Test test = new Test(); + public static class Chat { @Expose @@ -158,4 +142,30 @@ public class Features { @ConfigEditorBoolean public boolean orderHelper = false; } + + public static class Misc { + + @Expose + @ConfigOption(name = "Pet Display", desc = "Shows the current active pet.") + @ConfigEditorBoolean + public boolean petDisplay = false; + + @Expose + @ConfigOption(name = "Pet Display Position", desc = "") + @ConfigEditorButton(runnableId = "petDisplay", buttonText = "Edit") + public Position petDisplayPos = new Position(10, 10, false, true); + } + + public static class Test { + + @Expose + @ConfigOption(name = "Enable Test", desc = "Enable Test logic") + @ConfigEditorBoolean + public boolean enabled = false; + + @Expose + @ConfigOption(name = "Test Location", desc = "testPos") + @ConfigEditorButton(runnableId = "testPos", buttonText = "Edit") + public Position testPos = new Position(10, 10, false, true); + } } diff --git a/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt b/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt new file mode 100644 index 000000000..9159dc3cc --- /dev/null +++ b/src/main/java/at/lorenz/mod/misc/CurrentPetDisplay.kt @@ -0,0 +1,48 @@ +package at.lorenz.mod.misc + +import at.lorenz.mod.LorenzMod +import at.lorenz.mod.events.LorenzChatEvent +import at.lorenz.mod.utils.GuiRender.renderString +import at.lorenz.mod.utils.LorenzUtils.between +import at.lorenz.mod.utils.LorenzUtils.matchRegex +import net.minecraftforge.client.event.RenderGameOverlayEvent +import net.minecraftforge.fml.common.eventhandler.SubscribeEvent + +class CurrentPetDisplay { + + companion object { + var currentPet: String = "" + } + + @SubscribeEvent + fun onChatMessage(event: LorenzChatEvent) { + var blocked = false + + val message = event.message + if (message.matchRegex("§aYou summoned your §r(.*)§r§a!")) { + currentPet = message.between("your §r", "§r§a") + blocked = true + } + if (message.matchRegex("§cAutopet §eequipped your §7(.*)§e! §a§lVIEW RULE")) { + currentPet = message.between("] ", "§e!") + blocked = true + } + if (message.matchRegex("§aYou despawned your §r(.*)§r§a!")) { + currentPet = "" + blocked = true + } + + if (blocked && LorenzMod.feature.misc.petDisplay) { + event.blockedReason = "pets" + } + } + + + @SubscribeEvent + fun renderOverlay(event: RenderGameOverlayEvent.Post) { + if (!LorenzMod.feature.misc.petDisplay) return + if (currentPet == "") return + + LorenzMod.feature.misc.petDisplayPos.renderString(currentPet) + } +}
\ No newline at end of file diff --git a/src/main/java/at/lorenz/mod/utils/GuiRender.kt b/src/main/java/at/lorenz/mod/utils/GuiRender.kt new file mode 100644 index 000000000..87c14df4a --- /dev/null +++ b/src/main/java/at/lorenz/mod/utils/GuiRender.kt @@ -0,0 +1,30 @@ +package at.lorenz.mod.utils + +import com.thatgravyboat.skyblockhud_2.core.config.Position +import net.minecraft.client.Minecraft +import net.minecraft.client.gui.ScaledResolution +import net.minecraft.client.renderer.GlStateManager + +object GuiRender { + + fun Position.renderString(string: String) { + + GlStateManager.pushMatrix() + val resolution = ScaledResolution(Minecraft.getMinecraft()) + + val renderer = Minecraft.getMinecraft().renderManager.fontRenderer + + val offsetX = (200 - renderer.getStringWidth(string)) / 2 + + val x = getAbsX(resolution, 200) + offsetX + val y = getAbsY(resolution, 16) + + + + GlStateManager.translate(x + 1.0, y + 1.0, 0.0) + renderer.drawStringWithShadow(string, 0f, 0f, 0) + + + GlStateManager.popMatrix() + } +}
\ No newline at end of file |