From b7f16cf6b967cb7db29f5f4d76362368a9a18918 Mon Sep 17 00:00:00 2001 From: tmbRandy Date: Sat, 10 Feb 2024 01:07:24 +0100 Subject: [PATCH] Added auto compressor, auto crafter and fixed some bugs --- README.md | 19 +- build.gradle.kts | 2 +- .../tmb/randy/tmbgriefergames/core/Addon.java | 4 +- .../randy/tmbgriefergames/core/IBridge.java | 2 + .../core/commands/AutocraftCommand.java | 19 + .../core/config/AutoCrafterSubConfig.java | 38 ++ .../core/config/Configuration.java | 5 + .../core/enums/AutoCrafterNewFinalAction.java | 5 + .../core/enums/CompressorState.java | 5 + .../assets/tmbgriefergames/i18n/de_de.json | 29 ++ .../assets/tmbgriefergames/i18n/en_us.json | 29 ++ .../tmbgriefergames/textures/settings.png | Bin 46146 -> 53115 bytes .../themes/fancy/textures/settings.png | Bin 46146 -> 53115 bytes .../themes/vanilla/textures/settings.png | Bin 46146 -> 53115 bytes .../v1_12_2/util/AutoComp.java | 249 +++++++++++++ .../v1_12_2/util/AutoCrafter.java | 324 +++++++++++++++++ .../v1_12_2/util/AutoCrafterNew.java | 314 +++++++++++++++++ .../v1_12_2/util/ItemShifter.java | 2 +- .../v1_12_2/util/Simulator.java | 83 +++++ .../v1_12_2/util/VersionisedBridge.java | 39 +- .../v1_12_2/util/chat/ChatCleaner.java | 6 +- .../v1_12_2/util/click/ClickManager.java | 16 + .../tmbgriefergames/v1_8_9/util/AutoComp.java | 249 +++++++++++++ .../v1_8_9/util/AutoCrafter.java | 332 ++++++++++++++++++ .../v1_8_9/util/AutoCrafterNew.java | 318 +++++++++++++++++ .../v1_8_9/util/ItemShifter.java | 47 ++- .../v1_8_9/util/Simulator.java | 79 +++++ .../v1_8_9/util/VersionisedBridge.java | 39 +- .../v1_8_9/util/chat/ChatCleaner.java | 6 +- .../v1_8_9/util/click/ClickManager.java | 16 + settings.gradle.kts | 2 +- 31 files changed, 2244 insertions(+), 34 deletions(-) create mode 100644 core/src/main/java/tmb/randy/tmbgriefergames/core/commands/AutocraftCommand.java create mode 100644 core/src/main/java/tmb/randy/tmbgriefergames/core/config/AutoCrafterSubConfig.java create mode 100644 core/src/main/java/tmb/randy/tmbgriefergames/core/enums/AutoCrafterNewFinalAction.java create mode 100644 core/src/main/java/tmb/randy/tmbgriefergames/core/enums/CompressorState.java create mode 100644 game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoComp.java create mode 100644 game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafter.java create mode 100644 game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafterNew.java create mode 100644 game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/Simulator.java create mode 100644 game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoComp.java create mode 100644 game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafter.java create mode 100644 game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafterNew.java create mode 100644 game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/Simulator.java diff --git a/README.md b/README.md index 8654b6c..f904e19 100644 --- a/README.md +++ b/README.md @@ -2,6 +2,21 @@ ## Dieses Addon wurde speziell für das GrieferGames 1.8 Netzwerk entwickelt und bietet einige nützliche Funktionen: +### Autokomprimierer +Drücke bei geschlossenem Inventar die Pfeiltastet LINKS, RECHTS und OBEN gleichzeitig, um den Autokomprimierer zu starten. Es öffnet sich das Komprimieren-Menü mit dem Item, welches in deinem ersten Hotbar Slot liegt. Es gibt 2 verschiedene Listen, zwischen denen du während des Komprimierens mit den Pfeiltastet HOCH und RUNTER: + +#### Liste #1 (Standard) +Komprimiert die Stufen I, II, III, IV, V und fängt dann wieder von vorne an. + +#### Liste #2 (Noch schneller) +Komprimiert die kleinen Stufen häufiger: I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, V, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, I, I, II, I, I, II, I , I, II, III, I, I, II, I, I, II, I , I, II, III, IV, V, VI und fängt dann wieder von vorne an. Geeignet für extrem große Mengen an Item-drops. + +### Autocrafter V1 +Öffne dein Craftingmenü mit /craft und lege das Rezept, welches du craften willst in die Werkbank. Drücke nun SHIFT + Enter um das Rezept zu speichern. Drücke Anschließend ENTER um eine Portion nach der anderen zu craften. Optional kannst du auch den Endlosmudus aktivieren, um alles automatisch zu craften oder du lässt die Items automatisch wegwerfen. Berücksichtigt auch komprimierte Items. + +### Autocrafter V2 +Arbeitet wesentlich schneller. Lege das Item, welches gecraftet werden soll in den ersten Slot deiner Hotbar. Gib nun den Befehl /autocraft ein. Es öffnet sich das /rezepte Menü auf der Rezeptseite. Es wird nun solange der "Alles-komprimieren-Button" geklickt, bis du 9 Slots des zu craftenden Items im Inventar hast. Anschließend wechselt der Autocrafter automatisch in das Komprimieren-Menü, komprimiert die Stufen I - V einmal durch und craftet anschließend weiter. Alternativ können die gecrafteten Items auch aus dem Inventar geworfen werden. Dieser Autocrafter ist auf daraus ausgelegt, dass du dir die Items durch eine Werferanlage zudroppen lässt. Bitte übertreibe es nicht und baue mit Rücksicht auf die Serverleistung keine zu großen Werferanlagen. + ### Optisch dargestellte Plotgrenzen auf CB Nature und Extreme Die Plotgrenzen auf den beiden Natur-CBs können mit Linien grafisch dargestellt werden. Die Darstellung lässt sich bei Bedarf über einen Hotkey ein- und ausschalten. @@ -20,8 +35,8 @@ In Minecraft kann man normalerweise mit SHIFT + Doppelklick auf ein Item alles i ### Befehl /dks Wenn du z.b. 100 DKs einer Ware verkaufen willst, kannst du den Befehl /dks 100 nutzen. Du erhältst dann im Chat eine Ausgabe, wie viele Items du auf welcher Komprimierungsstufe brauchst, um die 100 DKs zu erreichen. Das funktioniert natürlich mit jeder Zahl. -### Befehl /pay / -Dieser Befehl ist das Gegenstück zu /pay Sternchen . Wenn z.B. 100 Spieler auf dem CB sind und du gibst /pay / 10000 ein, erhält jeder Spieler 100$. Es wird grundsätzlich auf volle Dollarbeträge abgerundet. +### Befehl /pay ** +Dieser Befehl ist das Gegenstück zu /pay * . Wenn z.B. 100 Spieler auf dem CB sind und du gibst /pay ** 10000 ein, erhält jeder Spieler 100$. Es wird grundsätzlich auf volle Dollarbeträge abgerundet. ### Befehl /fahndung Du suchst einen Spieler, von dem du weißt, dass er online ist aber er hat seinen aktuellen CB nicht im /profil angegeben? Mit diesem Befehl wechselst du der Reihe nach alle CBs durch (beginnend mit den stark besuchten CBs). Sobald der Spieler auf einem CB gefunden wurde, wird die Fahndung beendet und du erhältst eine Ausgabe im Chat. Du willst eine Nachricht in deinem Status verbreiten? Kein Problem. Gib nur /fahndung ohne einen Namen ein und du wechselst alle CBs einmal durch. diff --git a/build.gradle.kts b/build.gradle.kts index 03828d6..989839d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -5,7 +5,7 @@ plugins { } group = "tmb.randy" -version = "1.1.2" +version = "1.2" java.toolchain.languageVersion.set(JavaLanguageVersion.of(17)) diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/Addon.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/Addon.java index f3af017..bd1243b 100644 --- a/core/src/main/java/tmb/randy/tmbgriefergames/core/Addon.java +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/Addon.java @@ -5,6 +5,7 @@ import net.labymod.api.client.gui.screen.activity.types.IngameOverlayActivity; import net.labymod.api.client.gui.screen.key.Key; import net.labymod.api.models.addon.annotation.AddonMain; +import tmb.randy.tmbgriefergames.core.commands.AutocraftCommand; import tmb.randy.tmbgriefergames.core.commands.DKsCommand; import tmb.randy.tmbgriefergames.core.commands.PayAllCommand; import tmb.randy.tmbgriefergames.core.commands.PlayerTracerCommand; @@ -34,6 +35,7 @@ protected void enable() { this.registerCommand(new DKsCommand()); this.registerCommand(new PayAllCommand()); this.registerCommand(new PlayerTracerCommand()); + this.registerCommand(new AutocraftCommand()); gameInfoWidget = new GameInfoWidget(); @@ -63,7 +65,7 @@ public static boolean isGG() { return false; } - return Objects.requireNonNull(Laby.labyAPI().serverController().getCurrentServerData()).address().getHost().equalsIgnoreCase("griefergames.net"); + return Objects.requireNonNull(Laby.labyAPI().serverController().getCurrentServerData()).address().getHost().toLowerCase().contains("griefergames"); } public IBridge getBridge() { diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/IBridge.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/IBridge.java index 357efe9..cce9544 100644 --- a/core/src/main/java/tmb/randy/tmbgriefergames/core/IBridge.java +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/IBridge.java @@ -9,4 +9,6 @@ public interface IBridge { public boolean isFlyCountdownActive(); public String getWidgetString(); public String getItemRemoverValue(); + public void startNewAutocrafter(); + boolean isCompActive(); } diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/commands/AutocraftCommand.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/commands/AutocraftCommand.java new file mode 100644 index 0000000..7d69715 --- /dev/null +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/commands/AutocraftCommand.java @@ -0,0 +1,19 @@ +package tmb.randy.tmbgriefergames.core.commands; + +import net.labymod.api.client.chat.command.Command; +import tmb.randy.tmbgriefergames.core.Addon; + +public class AutocraftCommand extends Command { + + public AutocraftCommand() { + super("autocraft"); + } + + @Override + public boolean execute(String prefix, String[] arguments) { + + Addon.getSharedInstance().getBridge().startNewAutocrafter(); + + return true; + } +} \ No newline at end of file diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/config/AutoCrafterSubConfig.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/config/AutoCrafterSubConfig.java new file mode 100644 index 0000000..62efe71 --- /dev/null +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/config/AutoCrafterSubConfig.java @@ -0,0 +1,38 @@ +package tmb.randy.tmbgriefergames.core.config; + +import net.labymod.api.client.gui.screen.widget.widgets.input.SwitchWidget.SwitchSetting; +import net.labymod.api.client.gui.screen.widget.widgets.input.dropdown.DropdownWidget.DropdownSetting; +import net.labymod.api.configuration.loader.Config; +import net.labymod.api.configuration.loader.property.ConfigProperty; +import tmb.randy.tmbgriefergames.core.enums.AutoCrafterNewFinalAction; +import tmb.randy.tmbgriefergames.core.enums.QueueType; + +public class AutoCrafterSubConfig extends Config { + @DropdownSetting + private final ConfigProperty autoCraftSpeed = new ConfigProperty<>(QueueType.FAST); + + @SwitchSetting + private final ConfigProperty autoDrop = new ConfigProperty<>(false); + + @SwitchSetting + private final ConfigProperty endlessMode = new ConfigProperty<>(false); + + @SwitchSetting + private final ConfigProperty onlyFullStacks = new ConfigProperty<>(false); + + @DropdownSetting + private final ConfigProperty finalAction = new ConfigProperty<>(AutoCrafterNewFinalAction.COMP); + + public ConfigProperty getAutoCraftSpeed() { return this.autoCraftSpeed; } + public ConfigProperty getAutoDrop() { + return this.autoDrop; + } + + public ConfigProperty getEndlessMode() { + return this.endlessMode; + } + + public ConfigProperty getOnlyFullStacks() { return this.onlyFullStacks; } + + public ConfigProperty getFinalAction() { return finalAction; } +} \ No newline at end of file diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/config/Configuration.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/config/Configuration.java index 5b4f124..eda5f04 100644 --- a/core/src/main/java/tmb/randy/tmbgriefergames/core/config/Configuration.java +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/config/Configuration.java @@ -19,6 +19,7 @@ public Configuration() { this.tooltipConfig = new TooltipSubConfig(); this.hopperSubConfig = new HopperSubConfig(); this.natureSubConfig = new NatureSubConfig(); + this.autoCrafterConfig = new AutoCrafterSubConfig(); } @SwitchSetting @@ -29,6 +30,9 @@ public Configuration() { @SpriteSlot(size = 21, x = 2, y = 1) private final ConfigProperty itemProtection = new ConfigProperty<>(true); + @SpriteSlot(size = 21, x = 5, y = 2) + private final AutoCrafterSubConfig autoCrafterConfig; + @SpriteSlot(size = 21, x = 1) private final ChatSubConfig chatConfig; @@ -68,4 +72,5 @@ public ConfigProperty getItemProtection() { public ConfigProperty getSkipHub() {return skipHub;} public HopperSubConfig getHopperSubConfig() {return hopperSubConfig;} public NatureSubConfig getNatureSubConfig() {return natureSubConfig;} + public AutoCrafterSubConfig getAutoCrafterConfig() {return autoCrafterConfig;} } diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/AutoCrafterNewFinalAction.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/AutoCrafterNewFinalAction.java new file mode 100644 index 0000000..7e895c3 --- /dev/null +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/AutoCrafterNewFinalAction.java @@ -0,0 +1,5 @@ +package tmb.randy.tmbgriefergames.core.enums; + +public enum AutoCrafterNewFinalAction { + COMP, DROP +} diff --git a/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/CompressorState.java b/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/CompressorState.java new file mode 100644 index 0000000..ae76302 --- /dev/null +++ b/core/src/main/java/tmb/randy/tmbgriefergames/core/enums/CompressorState.java @@ -0,0 +1,5 @@ +package tmb.randy.tmbgriefergames.core.enums; + +public enum CompressorState { + NONE, WAITING_FOR_MENU1, WAITING_FOR_MENU2, COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6 +} diff --git a/core/src/main/resources/assets/tmbgriefergames/i18n/de_de.json b/core/src/main/resources/assets/tmbgriefergames/i18n/de_de.json index e92b7ba..a4e1a4f 100644 --- a/core/src/main/resources/assets/tmbgriefergames/i18n/de_de.json +++ b/core/src/main/resources/assets/tmbgriefergames/i18n/de_de.json @@ -117,6 +117,27 @@ }, "skipHub":{ "name": "Lobby überspringen" + }, + "autoCrafterConfig": { + "name": "Autocrafter", + "description": "Es gibt 2 verschiedene Autocrafter:\\n\\nV1 nutzt das Vanilla Crafting Menü (Werkbank). Lege dein Rezept in die Werkbank und speichere mit SHIFT + ENTER. Drücke anschließend ENTER, um das Rezept zu craften.\\n\\nV2 nutzt das /rezepte Menü. Lege das Item, welches du craften willst in deinen ersten Hotbar Slot. Gib anschließend /autocraft in den Chat ein. Das /rezepte Menü öffnet sich automatisch und craftet deine Items.", + "autoCraftSpeed": { + "name": "[V1] Geschwindigkeit" + }, + "autoDrop": { + "name": "[V1] Automatisch droppen" + }, + "endlessMode": { + "name": "[V1] Endlosmodus", + "description": "Kann mit ENTER Ein- oder Ausgeschaltet werden. Ist diese Option deaktiviert, muss ENTER manuell gedrückt werden, um eine Portion zu craften." + }, + "onlyFullStacks": { + "name": "[V1] Nur ganze Stacks nehmen" + }, + "finalAction": { + "name": "[V2] Schlussaktion", + "description": "Legt fest, ob bei Nutzung des Autocrafters V2 (/autocraft) die gecrafteten Items aus dem Inventar geworfen oder komprimiert werden sollen." + } } }, "chat": { @@ -183,6 +204,14 @@ "nearby": { "name": "In der Nähe" } + }, + "autoComp": { + "list": "Liste #" + }, + "autoCrafter": { + "recipeSaved": "Rezept gespeichert", + "active": "Endlosmodus §a§lAKTIV", + "inactive": "Endlosmodus §c§lDEAKTIVIERT" } } } \ No newline at end of file diff --git a/core/src/main/resources/assets/tmbgriefergames/i18n/en_us.json b/core/src/main/resources/assets/tmbgriefergames/i18n/en_us.json index 4b41877..48e2a5d 100644 --- a/core/src/main/resources/assets/tmbgriefergames/i18n/en_us.json +++ b/core/src/main/resources/assets/tmbgriefergames/i18n/en_us.json @@ -117,6 +117,27 @@ "previousPlot": { "name": "previous plot", "description": "Go to the previous plot (/p h -1)" + }, + "autoCrafterConfig": { + "name": "Autocrafter", + "description": "There are 2 different Autocrafters:\n\nV1 uses the Vanilla Crafting menu (Workbench). Place your recipe in the Workbench and save with SHIFT + ENTER. Then press ENTER to craft the recipe.\n\nV2 uses the /recipes menu. Place the item you want to craft in your first hotbar slot. Then type /autocraft in the chat. The /recipes menu will open automatically and craft your items.", + "autoCraftSpeed": { + "name": "[V1] Speed" + }, + "autoDrop": { + "name": "[V1] Auto-drop" + }, + "endlessMode": { + "name": "[V1] Endless mode", + "description": "Can be toggled on or off with ENTER. If this option is disabled, ENTER must be manually pressed to craft a batch." + }, + "onlyFullStacks": { + "name": "[V1] Take only full stacks" + }, + "finalAction": { + "name": "[V2] Final action", + "description": "Specifies whether, when using Autocrafter V2 (/autocraft), the crafted items should be dropped or compressed in the inventory." + } } }, "chat": { @@ -183,6 +204,14 @@ "nearby": { "name": "Nearby" } + }, + "autoComp": { + "list": "list #" + }, + "autoCrafter": { + "recipeSaved": "Recipe saved", + "active": "Endless mode §a§ACTIVE", + "inactive": "Endless mode §c§INACTIVE" } } } \ No newline at end of file diff --git a/core/src/main/resources/assets/tmbgriefergames/textures/settings.png b/core/src/main/resources/assets/tmbgriefergames/textures/settings.png index be9e67297730948bf46b50c262390ef8008db551..1828d454fb09bec3d6b146f4839bb127fea94dce 100644 GIT binary patch delta 36984 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 delta 29966 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 E3wwjE@Bjb+ diff --git a/core/src/main/resources/assets/tmbgriefergames/themes/fancy/textures/settings.png b/core/src/main/resources/assets/tmbgriefergames/themes/fancy/textures/settings.png index be9e67297730948bf46b50c262390ef8008db551..1828d454fb09bec3d6b146f4839bb127fea94dce 100644 GIT binary patch delta 36984 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 delta 29966 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 E3wwjE@Bjb+ diff --git a/core/src/main/resources/assets/tmbgriefergames/themes/vanilla/textures/settings.png b/core/src/main/resources/assets/tmbgriefergames/themes/vanilla/textures/settings.png index be9e67297730948bf46b50c262390ef8008db551..1828d454fb09bec3d6b146f4839bb127fea94dce 100644 GIT binary patch delta 36984 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 delta 29966 zcmZsCRa72Lur2QH?(P;`0|a+>cjv=xAiO*?9QbdHA_F7}?nQ+1Mx$$jHdN9Gv+TEZj`Y zP25Z*Ox!GlC^*C_0+9DmN z4V{eHufLZ24t^dUX_5DLf#Z>$EM=N|pbuSf zE=xM&GE5RRE+I-mdclt0|CrXX9kqUL6<@YEcd_7NbvE5f2W>DZVm%I;3gKM_bx1BI z(CtX$Gs+lX|4!afSJNr*B0Zswskwd4=ySYcL4tU^+BS}a_w&LtR|hOnSwivRv9Yh$ zo?h`askIVx%!o6wF{p;8SZy^+2dM@m-~55K^(1R@ zNZS}JOce+!wQ814zSfE}-c`Fj`?)U|ysyyQ%wm%u)V%tAf|j{F>_#=IS%@U;fzuj6 zY=wE2728L1_23r$J0aG!22V8r*5TUe{e8qM@Nnh=PM!x+Aia=G}lXx7p@Px+E_#%H2G$B zdm?V}@k5yCJ({c<%AqW)GsZ63o_oOWFZ({LQHuMbqvwyqpEV2Mw3rPyV-EvoS)B}l zigdhCUV^OIWf?l%L5Q+DMVUYK>B1N}41!fk)#>e33dEoQ#+>iE=wE|GCHx~+^K{T% zA@Id!zDc(Ya0`T%x1{H2Jic^({L!c3l#tjLc_@;?#j;(GA|7lgwSp>5)|nGW{Bk~V z7y)5TjdDRNQ3=|bm@K|uGH8GIyI{#ndWG2}*gR)%diLk&A$fTprc6t#>r$J0yAk|? zw)>vatEBi2JQ*R(-{g=Xo8U0%o`PBF*|AC&&6LQ~+|-x88Q9nyIcx}-d1OP)7g%N1 zyZ+7VKUkQZ^`lQ8&mxQ)w4%X?aKbm^X40;IjKiJCY8ZSBA#D62f1B}*V6EreNVkj< z`mMcR7-AR#_!k1 zFO5E%B^J}rfP;pY)VuFd=a6u%#?OT>Krenm|zUkPw zx1inxS|-9JRt0iu=mmVN{C~FfgpVnk4WPZV zHVOe4KYtZlANZhbvf@~Z`F#Ea$qbuce?$zaNsPBV!1YOYIegQZn;~N7fmC`}_~P-^ z#!2Zmh*?u-;ab;@Ih}d7ST%EWD;V6jBp2wz8;R-F-r>+NxUW&XSh3f+AF7thl!D+L z$LlO2_w{@tkxSOlb=T(1GI< z&fO9yeT3Ei8s#4bBv5~YLqkK$OW)_+*Sg-E*Hbftw?Ix^zVT)mauVjU3%zuuOsExa zarkQY-gbjs`abi+e;c|!Ho8JgE>{KyLPv!r1r~4Gt01*-4>@n~2i-}grUFs}7SYt^ z^2sn4#}P!6qp^Js?^TS`HP-7!e1Y8S$_DjN*-QqTyvvySZ?(0BdK#Kx^a$p9bQ0dnMUx46SNv|Zj%QQ zrqAq=dX^axofLjNHi&c@R3~jG#)7^LEX%p0;=WfvZGI^>ybT;0Xes4+@BlJCuSfc) zVKO0KW2NCwC9yXD$z!E1GD-yJNzA@9hwER}<|rlUbYGvZz3Wi2=Fiig{#q&7b#4WTtm&$$-Q+GW zr}6cMB7eMpmyB|1cD^qc0w^R@B|1BkLAS)QlmN0gGsEqp=9#EON4=xEN1jYl(^m_f zVkSgpr;y(aWx;_3U;K)!ioc>z7s>9LBa`2HLu*6fp_|5Ko4hB2&R8qQ# zj^g2Y>Ua_%zY-KHLo>&}0)L~oxcLGVkZn5SSG$jDZC$5fr2LTQ0UXoUBK?PMH#Gg+ z1j1cNaWHXPb=G$yv)`GP4pld#1FOe85lOYX$v8ts6OxY)!3tzB(&~y{W_d?OBQ5>?~m5l@GyP>-i9=gTrBC{6Jxb5v7 zZEcxk3uG0cNSL}04mnW+O8FnxW{mU+g6|3DHW^F#v7}2e{>0&Ao5?3J5F&8Sw1?01 zuU5&uFpY)WdV)1#2zi^xJ=&|G)uu6hNMTa+xEOx_m{KGG7{usJP?f>>QBfc1oJCYf zq^Vwg%kjyPa!Qt`)eE3>sC8(lLfe=am!jHI$~K#7FB3Yt5m%nR{bAt^73v6zz~ zTUz0+e8SGb)j&+c!K=z{0jGwq166FxoKf2+5F=2uS)!;QPGv`05ARnAJjA?eEHd)c zhb#Yz&J_h_!03a78NoE(B+Sexkqgz62T@WBN{w*PaUbEFF`QvkzFmCUDjRWn3yWfF zo%kfkDsY~p2o?kW(OxQFyI)7}yxUm#*X0$tW(E6S$iCoWsaI%H-o;Da@=Fbr-?=+Hfd|k!`2{F5+_t ziVZ&O2C9wY7@tOfYj&Y?q&(t=nKa7+Fdop;?Rs7_vjFbd*xqb4d_paTMr3H9=W8pj zw!>G7Bv&BoVt{J~HHa7OW{4jV?;g#B)eHE)H;cnkoPLoTeb|VEeiaPX223NcRD6kZ zaB@wIEoV7?cw?2g5~!@p3j8Q4IwvI*btJT&|MNJ6s^WIbly46=$?P3DXh%>CjM8V< zpYV}4kT|vRduTk9q<`e^{Cb(6IFfAMCJ8~^sVxPOpm}>#dN|T$qnbJ1ZRi7?o~hxA zDoK!{45C)yhd(6t?0h6oWJM*4ofbQMA^hh~hxhIz3nusPE%dZ0O8L;yYnKAau_YM= zCtKjGM^`i5FY9GDJp$9;U(Kh1NWVmD@7ENSw~MHKqJ=q*GyF{o5nPty632CsL=3O`11e{Nd4S9>QAxNhUqypwnQc`dc^He(1+VMETyU~C+&KC#JIsQMGcl~#Wv{YW zHiI1Y#}sJo3naT!YKx}(@S?|jeHBvk-G(e!zNE}qGp=zpWDEGJ=~FfUqfg%>;o+Q1 zf6L2CCC_LA`HLig>I!K4zIaRNeRWsxYVjm{JPj`8u-2WsGOxn56sEmm^X(6|S9W#j z4%Ysm;{Ay*T)p31(Z0HqnXk506+Wo!Lvc=WKS6%L202O*Z^ko(k%DT6rDcFl+thQd z-M>}k9d!10FeKH@MZ6k#J6F^A-mPgh{obE-z+~vtS_U>litw{Lx7($=c?HDZD(wnO zb0xFm-=Jegn)4PFeD1!ZX9)0+M{*se$fOE5v^1s67`qp80tmcbrb^|irrdy1WB zA*=e`ZZGa`ukMz|_N=)30r+jBNJ_fv>SBg8zpR-0_Zt*CI253ft~OVYoZ+)N5|rvr zc!m`y`2cr9N+G%Xr+%f-8Aeg$NKjwH67pkRE74!UU# zg!|=7!`Sl>JJHoPXWzO(q;At02SZ9H!da1l7Ke$piN?dxD6cPq4xUNwE4o=eSPM8_ zoe)oja<0BD^AWK8O&>WTB3^BYc~ZLyyE`S_F0RVy-l?9OJAW-OtHj0NM$+yMKJW+? zS}l+j13QFp!&Tu=xXpAkm*n|KghZ}O;~qAcUE!x0kXFIV>ov141#c`gIw&t4(nT8B z!;!zte@uQF6lj|1BgN{l2NV155Od>ZRe7m;!wvoLEwQv6=oGAiNlXP+GR7kafr$oOa3eeml1e)xQx22hK!@Ss;ysGc;RN5!5Pp7(DrfM+ib zAK~94K~J%y6@C$y83L8qV%L&4vLFUY%I^Ft8;Xjx=xxUiibA`pfM0DkUA2XmSw47ByPCFE{ zzD6%G#Omx0m>PMS)u>%`?$;&0-%epQ<7be6z^>uz@4ry9j-!eVSr; zh3o>cxtC#t%j9x=Yo)2e7R6f*M!x&WR!{246K>a-M12+`9)_G|u*o1^flt$56b~2;GbXM0DW8Zdta&|L}1>nB1r{lXPVir?}YBDzqTW zJ!ig7*ri9)3gX`*rJ}AS@gR69%xOWJ22VpV#!Ybj>6VZZv7U~S2l6z12jDi{3c$zC z8BwP(&OrRmF>wFh)hQ(J!|SAh>y=<^%u7vS$t!WKZOu-C%o*{-i3qWBh+4g4_O8x^ z**YcTuowx=&LD#a;dN*6BkLbWmspJ3+yTojst*{0< z%Yj1$#pL>I#|{ckmfV|8NY+HE->LnLPt?$;)sf@Rq)A4;1d*FqudLmc;HguE{KV@c zCMWzVu2>?=7{hl7`Zu2i#~b@Mimz{*WjKGZ)GMUCu@@y$W2m<#2e>j#a1Oc%b9h0U zU&gGE%@C3RfBiJ6BTT^b+(x5!9AJ)HgbHg3)`ab2=v`aB6GXApKTfJ!KP)vv4kduQ zd*+O!O7x={@(9i0x=o8{ItId7d%3slE&^xt11Zls`wHxMV35XTDB&H<;=<3qY0fT9Dw{ap{de-Ear_~rn&USC{cTFx^}0~;Y; zuKGeli~Y8Fr`YG!Wj$LYJCtYr@T!Fxmbfo}l*MdlP-LRDKkDgZ$?Cy|Wh)DFy#8B- zzp&bd+jry&S^=5JkVE_^@VxM<)*ifJqr~&zcC5giaE;MtfGyhehtOn+hY)D}GNHu1 zyQ8z}<;$#hE3!><&zrANj3U*iP*p>6dA_643_;%Vtshzk7cA9At%)8$)F&h57h42 z?9Z3OO`+@M$`3YV2&7n`R!@?@z(I51($rwL?SuOUWVyi5BpC1QCC}8mE`U4qC(_nk z#0B(SF4eI|K&2iZ3y(v3)To{zdK2uEzFqwomq4z&hr3n>E96u5&183NbID)78^aBa zk?sH!oLT*quCJF#1Gl`;^?>wgG+y6Qwp@K@IN$OvH0|OCp~FehN?PIo6}DaQ%Z;#U^Ac zn4eEcNxd3(jC1%OoO)?*9fTZr;^J%X@fIB8j{%|TS7`a;sOOoU1E68fok}h&--(JY zVe=0=SmR^6@O$tPUDQ)*l}44OwhDvbqTLt(&TCD?goRB$;~t^Am_l&nA?gBRk9QM? zeTCDnPAXGj$0{Jw$DmIT4;IKqO?*F{oZ9#hS#A1Q-;v{sjc3BCm#*P{ewb)Ij!+d_ z^u<-IIgtEkEo$_udxNzD%X18mCc_nhQc(!og=oEf6T&sUZDT$%hG_T~p`-Dm3@tej z+j|^>=zTsd=PMNU-ksv%D<4!RzIfH+l$mn-<1(JD{?9cr&wk5X(c5cH5pKXqAI1hM zDtyJbFDcD_i=N`kliA1N(aVi07-6R{6%hz@2AOrhOEIf~q{Ix~QB*@N(Bh+~Ch(V4 z)ElCcf9>+0%Xdm<;ec*;s7XBT7nDh0!7G~Xeo262TTc#+fgQFG1+y}vL{OvTby8K% zz|t2Z<|52~WqN4Jq(3oAt!4v>H1%13ZoaUpRF$F!@`Pm(lozO*YNW%byY;X#{kO*M znB!41DDNI87!M0po&F?~DWGdNxd zGSiJaJA-q4cM*l|7f+e0K?#=1%rIPX>gp0A#NEQvAVJ4$k(rH25ZIpK^1JUkM4MY7 zVdsijjT=i{VB1CA81(%pAgPL%$TQD1@IunXpT;E(I9Zn+xltxtk)w{cwcbp1@`G&n zeFfTQ+n!b9Qx0C36o|`d1f>ErP3;+wPAwtmMH%1k{53_c;U@LH$OC!YilrBz z#OmYlqiobv5*+G&=r2SgRCI8|@v_*Ot%AOj=|jr98E~@0oy8Eins=H7n>0rY+VboX z!?b>ezT@4*pOJKXH)_|$Y>Gf*Blnsj3NM5jLoi|?AqtU6cv~pNBss8!ze-FY*a-FA z4ygb>8J&8Cbhn!Ue`ESI%+K|wMb$6oQPt5E4cSFkVvXYEc?rD5IGiHW4{m#j z{5lfTxv@?cWZGS6G%1&C6dOvuV>xNrM_=T8=>&{MI{8Q4zN`SHyZJKmZ&e?reZ#bv z`7`P)x_zTs`eK%E&z%9$-*;M<^)+$4`J+|r#_o&A5-y`p_yKkotY3n z%*)`DV|&uY3hY9RCOAsl2yS*6A$j|cqUaPOxVxuP*tt8(*leq8CVfWVYu)&r8fkg~ z$_ZSR-iT7%QvieHnnY~(T|}EC^HMiS5V4XqZ633)D}o|_^`ILl<~@IH;8>aR*YJI$ zKctv`aKy3+w6Rx>NF{cL7<-Qn+(Kk7oG2!>d0aTRpTp6_G2u75NQbA2^iYMKfPJ6P z_lr5N(QKw$x2S|3tYA>gQ6h#kc#Km=|1_!8{m5gYB4FAlLz~+UCyuCX?!IldkCDID^K zF1K2Kk2RTr&euZNjE8;OeqJ71-QQo`jZIHU90|EW@!&K6B_%VqR8r-t1&8K|Tw~h% zH*2f?hd+SRj&&Juc5hdzk(Lfhj7g|N@ty)+8aUh62q3dyF)J9vMjx<2hEzxI;De`A zZS9HRN84dD*7pbKi;Zde+hHDL1fX`Pm6J+*yfkH^$QBmtIf*4YNRQ~P?b(pvI4&%i7r{x)?)$GtUqQHJ`FAI}}m0-mfO zD*1;{(7fZd8z0$Jk(ccN* z*V3m{LMdZ#5=>rEsSJ98^0a?674+SMzGv{OT zFu-hZkS^lD>h1ywoi0LvNWf5AtLoLqM)VD3_}#=fYTD)lYbQktKjn9X5IM|>5KT*~ z6#OZN$C3CytD1;j^2QE2Gb2oY9~tUujFe@cP2<5!uM7Si>|mJz2h#N|TTXDHxVlsD zr6sDqJ_Qfq*_8uE`c6y?K8UDS)=V10qlw-g(;-?>m~WgGz28u@r({Pm8+} z*tHf!s5SLey*>VsZ&+ z9BU%&&EDWX{!|IYAET1|VVftl`$nt;(8cc$oCX9r6}hc;@tX&4{dyCWMWlPx1JHB0 zNMeAY@cS9fknSe6G{U;X&z$~LWhr0{{rT=Ol_+3f1#5t0Ne-VWZ}^a&pz#|jSINDpS6TEYP!UD#>JLWx<)+T z3<08sv2K!R&(Uh2NirsdD#ZFRFeeyr-coMZjFu>mv0=w5&oTU;KYU#Ueb@v8jFo0| zj0zZWcZQ_CmEtxs-?f=OF8sB2--LK(t-dk%aUnUhEg>m%MHdHxD#JjJh`OdjIDSXM}QQa~~XrfPIL5L7>0LKY9z{1A6qLM)W z`<)uMV=g?*r-<$uDGm=7E9EgDNHFn6O)%QEQ)J6i5Gz69Idvq`vvE-Dc&xW8mV-Q9 z{$~26o*~GK^;aMm^^`@DAhI|^c|ovHxuH1trGD5?_3vKo54G(3Ex+;+s-UiMt$pB>BfutMol@v0EuV4wQ#F3n5A$j7`&6Rk>T>h2_`L--SWts`_Y+=yyJjJK76J&om6$ zxwn<5+3Ww_cB+94FOy|aO@+QME}c%Rzo{V6U+D)E-e*0lsXLsS%1YZ#?|+f-XC2o$ zk@4I$w-55RBXLz>tb?B(OO$RRiDLg*4~GT_3u+^8Kd zeU#nyT)%KETj^iG%iYcxEDENsDZ%}4hs9U9uMU4ns@nGfj;%%?Gl_3ya~=mRFv7x} zPUs>}WDumJ2U9BOr5c}a6q+jnlw4bgApBfGYO!u2p`bGw+rVTKU)D!|Vw119j%4&v z;zr43Eoc=d8Fu=+c(FCa-}QfWZF{ijF38ulg8|3ffdxR667mb$~& zO3V~48Z-k4HO307Wtx`S<_@wVHJ~efH=rxoe>FSC-9!DCGx}F`rft<({b0CQ^CYeM zc2uJcwkZd#6={FkvBEN%{6wPSw8ZmuURm@RtH~JNn~2 zJmO(Hq_XCL1VtgQnC|B5*CI@wkxMV>)m_qUu1a9lP3OxZZ*A9H?B6ZOk%RQtYJ0mI z*!5>A%gS+#IcVKa_JaJfgaxVtYmiMGL)ymP_be_8gF!dDciw!8MN?rg4XWgxxSPP) z3$w`ht5dyEn>bO2ZacQpX6J|C;(FVa#~#FT!dQIGY{nyTZCFFreeUanNh9^*hCZ5=3)W#%Sn zI3eF)3$@g=;{rZ{@kAe}oP@D+bA?VWISF(~J_pgV#Rxz-hZ_qEB0t<@ON{VaH6+uv z#d2XRYW=ye=&t*Iprxq@ZCOz<*($an@b8Si9YGNF6jnvG`(I@*B#rq=Y__wk0vX<9sA(K)a&i&NhWLZ9(XorKr-R*)ifh;tfzXh%F5HEUK*Xik|V zxP&c{606!`(LwuUS%Z3>tA97To)kj4xZ?AvTa}Vpu^At`T0l>;Zx3|~HG>>J>w>cn zI-dR5`Av5%Nf&|Wmj1OdN8DQ*k>J3#>2N99c~35;ImIW?;VG`*6)p_BdZ(S)qA{Nw zv$FGuFe+j9OkwauDp14o%o%GrEx+qFpugOnC@;7(NH;BDj)=joLUVQ1ss<*OalQw) z+Kb&&KfsyqFEivhPc=pwQX&(rtquGFV~5306J_|B&{e&oR3vKruarwSGYH7M1?OFi zV3+l%_C?Ym@;96)XVOkxjnpWg2|OYEorrR*w_k+g+3P9`_>)+kym)KzjSoIMi3g8O zUCsJ$fBoLU&)iPgG`ZZpz~4cayrQ94FzbkCG?YPaP_)H85B> zro{*$>su^>_QR~};<#bjuu8Mw>SWklrQTTD#lL@?+|VA2_A{Ipr-gHMj5bJO;_oGa z!(=#Is5NdP5p;SH{%t-o_IW(CsXsnLHgSwr;_EBlRSLHSlAf8~t7L zIm@8f3?$j>o4&-2KO8f zQ`cdJcjkG*Cp&`ZZscJ48d%15mim}lIqf1s zU>;>USKLOoD{DlG)M6=yXS-6Tx3ZR2R^7&H2idUmS{C^J$zJuTNF@+0JEtNl$L;J;is6B;f(~LId!*Gc>Sv1lL(2_n$s{^VHJ?;Tr80 zkiG^^L!ubp)cHGIYzCg$#pjV>m!=(pXdl5vqv_j@JU!(GHAD>&jK`DZ+#dm_vM;f_ z_Qeh^UO^#)3-neBlV#bSRW%54Rdb3R{V|k$=(buwi(7XC5zo|1}wUJ%{K_9A=2+whJnox#bJgwb(!q6M~?o4Ff7HyE|b<$*hLki z%wM<`N5X7(?GA0WGy3zWv@pHv#mpF#+4iGHFd7{5`IpFxKxB3+@r*V$aa5lF*NV9| z_?AXf>^BWYKB&g2+J75_L}t>RHz*p6ngE)X!@50y@5bitN!ZShA6V&j%B(|A7eP?0QY(+L>THI`4?+(vDm&6ajC5R zgOZJB0ovaBxE*#A??xpeW*5WCE}G;L^2jFYQl@O9Qaw2e9t*_qL(;4x^_ zTJRzHUsktbpT3e77zC34vt}ge2lUUFw3Rcovm3o%a-Wz(b5zk*@^vF=)On#`6))`v z*@fzKMZ*sQdU-x;Sb{ZS1|YEe;YT;CL|L0qSi6B)meoAta*4;;v(M-U%jn(9u{1V` z&y1D7!2x2)F~ub3+i!>s%(ORWYY27(2gm{W64}G+8?8X7(qP*#$~pCn znMPwL=&9FMmc>GR!u1ons3ls@jF$<^ zHMkurc0v|3uMTL9tgddHuI69TttU=9GqTz0%Qw_}>#8~jv$Op&iwyOLN9NLppM>;& z9CScv-y}^hql;Ae0CRZ5+GP$`Itt{k{$@i(jnMK0>j3oD`UcKroC5hc@tVlDX^L96 zaV^=Gm#szmrKzlziY3yUNxK)%ZTL+RV-jYVemn^PYz%IgBO!=P@SKS6`$ zg=5X@%iBCZQ|7&q42=;)>0zsfp5bjnowgCXF=uJhZ-SXwDa0>1lD#itLs3rU`ymTj z3FA-Jaxore!R(Zyd;tUM-;ggjOgoKtUjw_kURkOti~F38`dKhqHfW;p2g>nZ)Ku1g zi_h)-S!9$s1Nt-exXY?c?>^BBFpJvD<*Cj1FiF&swpJ=}iX8y_e;J^Z4bIqy~9|K-_uZIIh!jUw751j)=(-pzyj$A8z8EFm5hPj zN#JRty0@2ek`a^1KH>5dnrM0(t04px)$893yoxJU5osHhyDCi~9o^~w4u1Otwt90U zk=H+p|HMj{&pbEtPd@87R_A?Onvf3vgprx|h#gM{kvGm4{KQZ1zn0om_Vq`kAdY&+oubaujmOIn>E%@Q;MAYtCr^F)qiq>zQHMkt5yn~JPQU=`5v5Y+GH?Py4WpZj)lR~#qC+TejMOv26 zX{^c5hGQ)Yct=#uJWoBW?+N=$Ng>Qq@24Y3i0=uOi5og4c$7|F><8;#j97@PuTdAu z4HH+Vf4z8|XM625348{pG@B3IUp?r6zwE>4oj9I+BVW8N7!+OgJ1td-a*0Qx1fH>2 zy2!q1m{_j+GH51RH+-?tU(mr+YW9qDlNRCWA#i_sf4h5q9}X3ELMZDIQsTaR zdpRjlZ&J%BfkTc6_ANT$w|n*g3OZ{l$#0yHTQ0NfQoJX%5yxN+^ZS*KAz)iWFQ|lK z?=wi~gWibZF8B(FlrkP;w>J)DF;+!0EZztnvSB~ngS`&C{!D%3xC3D?ceg>?uWgZc zuqIdfVvOYpL>%x?;Tt>ExDSjOwBe#g>ulSOsQA$r`iZWhaxfBbTSPv<+K4}D?+3X1 zW(}{Kfpkgo>=*MDjw}?SwV@U%2h;sN{)x2qByY79_?4~h;ID>+#-Ar;TU4)cX={go z_u){1NT}rZq~cnS&5PrL`;oo!@~?ZjRsvX`BM1oXw*m}kNBqy4Nc4W;D(=eLKlIWt z?5jUg1YRJ8-%i=W!MW6cq9GrIW^OC_t`+LsW%r3NKmDAAv}i4z$3`pSh||&80Ug$f z-SOnD!yt~v+Rm~;QsA;8+HUpI8Dq1t=iJ%^)%$< z)DY&cEcOqa!?8EOnRK?N?WEl6Ug*{Ea!#T%?oVsu>>Vm_5Y}b69sY7gOD4NKu zA|s^6rFcOpxq1IGk>_hc7AH`f`m&BR6_FXzg`N^$jyw_dvG?sBERAzqk$Xj6$w<@p zyaxrMYpo?!-={lj%{^>P{{_jJuYRLiKH~C1l0=JIsE`i`Rgb~|N#dCiDaI8&#vmQZ zKEh%hIaxUFDYP9?-u~ynD#>xbRGOC=$?0)f+qt3XHAMx!4s@;4rFNN}!m7oh)Gy6S45Wk2^1O%itOk(*tHzt#KI~c$}bn-^V zxU=I_F#|iX7H2-+>}hoIaepCCt`bAAHoU()%@wRZTuV1{4Qkh0&^=VyH?h9rxNXoh zC|#wAe9UYVI;^$sWtr_kKj2?D&qIsDd&oC)lkG$rRf9xS%Z2D!Qzq zJwQ!jzlsh&%c{-S-gYnnMhOMWxOg~H45pd0zW}>m9c#9+3Ca4f52*hwJ<<7?ABX)4 zGme=1V$fN+o)w0@(J$}-w^faK4)F~F7t*1y3Nix^^cZjT2x8fl95id*xyDa42Uhwk ztfet$MB+DB+U&Odb4{_EG!(wh*gcY)rB<7{DIY<8#O?2Ng(&>~srwAqKlzGtMY%Ht zKt(PQ%-b|{gvHyz)RtOleWF#@vn+=<{3Rp8>GWY-j0x^5Mnd|2>AHSAxBv)M1v%$h zpKkT~;os`js^Q}q^97h!;5(z-hutP#PBZ(-WgYE6?Pf`bzyx_)8Q-n$f70PcGL4SX z;$mxC8ogemhw)bG3G`7Ob2V7)vK7ECocB9YoOq46d*)=%o-k@xe5kSuak%%_39awd zdmZ$+s_gk=KPZ~&_MGwq)Z357@vrymn}hcxB@5IfcQa043!A$y!$0;{e zGF0J^Pq&HKU7VMbd%u|8AKLf*9?Ho^Z-{S);&mSELdDzyxg=w5qm+CTukiqKw}~3J zj>f5)6%{L9H~Z#nf3dG>3KUcG)7{U{sH;2m{#M_t@J5ztn!T@yT$*NCE>boaM;I|V zx;3k!O5A{CfsUoyT?|o&U@wmA1@a{-j|R(Usk;I24VaO@%HR)?K%;vpC}l)c@VY?O zDU5>{xKoI#cH+)R7K-N@zWHdc&;5B`q-?nSNKO>uf z^32Q#n$9CZ1>RgAy;cb!Ra>5yL8etuk(VJto+&mqj`8a^>YQe|t*-tkJ`rNvs<-E< z6ksO)`g&izl!}G|6iCYQsorLQ3_jt-zpfth2SLy@MhTg@)U1;SPXp&>B?qkrJTi+v z;#2J)DddhgHg))|`BCvAa+}NUV*XrU&XhT~7)}(Qa`-tY6_{e{{1SnR(N8uUdngl%ZFM zzE{uDP^)vzyw&8gARfT_!(bL&vd;h}laUtJ83pGN-kG@i=l!G>wlkqKb(^!;UPnot z@xSewZl$2aAl`W7-b=)Wh6bSXc(n!D%&9~UI>0NZ=Wa>f*}e&qK4GWJ0unkQbAl$z zIUA>W_AY~GA)ulB>bQ-Bj-Hh@`;2$ODG=(P>jC=aPeiLphGt;HK`Z0__U2)}D1CC8 zgmDf{{LA6QeK=G;o*aEeFG8?|WWT4N+gQTEgZFeBxBB90J#D*e-a>5i zGY&k<;AP5K1(Q9~m1Djwg-q}yze^?ada??#OI4ZY6T7~^n0 zq&!5YqPaf`{VwpB%kWuRo!7C)RQb1KJK!jBZ45Y)r^p7`wVx#i39x1e*)_Ey z3%|UU4LX!o=wYozy@iEyp|Uc+O_5p>ap&kvKIO>`Xo6{>^|MOJ=5#J(zDV-nQBeEP}D6mR1=?R1p3uPw;{=@4=MG@VtumCpKkS!RMh$Xq3{%H5QTWq({G zBKI25g8?z(1}#HLR;4J~@!f}J`|t@Ng>B-8xUMK2OOVC1s$=+@gA&6c2CDykE~aDI zXCBi`iUQ$l$U-RJq$w3hg>Fhm!aQz|=J$)pdKqsCBdSf#U}4oJTCmOM0NyYT4V$X% zr!+j$5X|yL9RKYw=g0drbHliTk@}n|v$L5Gfcd4RgfLBZ{38b*u(qRqaxmby=jo0M z{1cQ5XQS_*Y#KmerM@l_4?0C<&~)*glaNS;7P%iWheG*ASg%<33jTNwtMLf=37f3` z)Tysfm+YHZ#x(!-0gP~T?`Oelb)-)ch{7H*Su?`+*$S(XDz{YHT;}VpFRh+Hj*u3h zSAGhuGAqPZ7+9+}q9Eq^x1n06X_dy(6)xd*{o_>0)INxvT<58x>@ z8>(^O_`V1IiNm|h2h)ekY3 zm)l^ipTqO>one@F=y)hdkf9j#LG8mK^HX8bH215fT4YaOZwAb^)AwJ#jAxk$L zkuXom|8=<#^ifJZ21Q;UL26)9^2qd;8ZHbHCMI~%CdPXa1Mf+AV^AdK@d3N*?k5t& zgD(1m=;)ZDHCI2#a}!+6{`3UROE1^x+6grcgwSX-n4pDXgl;YQUc3cWV9yf2e<*TS znhE;tjN*@02=k6_>afC9Tx2%7vdQ`Ia1?{V;OBS0?pI)|3ffzvOQ#~AX=}uC#q!BY zpr|(ZGX9DP2Pm22vh#{<>6B?r=Sz+Wx$7sRF2B2s=}xs4I?Rn5Eds}|hWK0`lbtn> zXgBbQY@nL`WbO5CXS9KUUdvO+C4!fQJjC@i=DiHqBQv=nF&KPvfseX?4*c!bUUvSV zVu@=amoYaL)zU_T9}IJf#1h0Ixusjmo5njS-f%J9fa>O?B(^xtMw9o=aT?j8&)*bw zQfaurE2u1fqCvS{G0@T2|_;-ksmyaJ8vbF06 zJ*x=vg+w|(K1^wFqLmp#F6IqHzcQIU5JV&&b}r^?%;|HtJ(Y1<-Zr<|cdiyO{QVt6 zNxVY@0k|Ucl$1uRoONVqHss`ESw;@YOU#??Ze6FeU1p6F8iJ%w8=ht;NSm?6nBa~t zEzs{c5-?&1&1iH?xejss46qQtw+3bHbYVbyg1;Rn7U6_3ZupV4dGFvwhwJHf4iIyk zP6K-H%e7yP?BaVsXCK1*bUyswl)5ocEBaCW0ivDFR+jHMrRE?ViQp96(Xzk(8_MMk zIgxm<$^+5(A-F3t4JPDMQ}4*P>yxBD)_+e1M5+V)6KG7sbnGVMi&t;fOAWs8oeN;V zzq%u!;+c{Bl0Q#sF&ps9(Y1s){637`e66wVmx*UKT=Sc$i(*P|w|um2W0q(8uRGXyx?1qE-7rPG}AJmqOz*e~^?{Xk-yCnx_+nj`=4Bk(Sr zyEdTr+sMdB3ReJ;hY@6P%rs zAUz!i;|nJP-h<;Bm#(CuirpkOufE1k2td?D$sB1>9_}YzAr#r{yU?M>!z}3gSS(bV z;Me4ZJhwROG(<4uf-#b<{6g410HnRckzyg_fdzn0Y1Mv?XPEpJ3`m;SR5*V0?8>bi z`;o*Glg_)7H=^N$y`A>s7Pa!A)ntA{Ph&|_qyHx$I5;q_M^DK8-K#d`A7yCGF0gdq z4cyt9Mo>URxZLK#)(GH$S0HpRqb=Ns=FNSI6a~pCd?SA5h$3uuX;uDG5g(yN^a)}B zX}BW^okJ7nmM#(-R#eo);6=j?NH;}RNd6lG!#@d^4=_L3H@ax6c&;c>D>}dOg?xUY zM{!9F?UgENQkohvRi(3-NDa170*)@^l1HsJ-jfeeYiOsepq&RJisE=KD%wSD%Q{Vt zZAZ%C3}hhx`?ZGqtMvOUwu?OXvh3p%ci1CReKR=dS%wC8_wtoy_y}s7#?Z7-n#djY z`Er9Wrx0xw`jf^v(~5qV>z_c!z?FWqdu#h(t5m-7jj!iUn_>s1fITDd_rcahILOvp zX%e|7zMeGx9@5oB)Hul}a!<|76P}t4qd~*W(wA5fS}+ zX9R-N`)}qlBRqD~p1?+_Rq8wbP^bkJiZB(+cTri=z64IVMdsgAL-p~F~anL z0+!iN^bZZVo#YBJAgVRs6imRu9gB-6_S;#N|^Pb){+dB0-$MwWS$1krrfj<_?i;-tUZ*}Pjet=&Z`P`|%= zWU8<6-Rtg{N>o zOir*cC!`;$@Zem`SRRcyFiQT5`1X{lo2l~c@Hd+3$~a{{APQoU(oo|Z=gXd2ZuBk< zZ8vx!od5C>Az%5suocP4k?tTIeq%6v#UsEv39TQMd5J8aB{7$3-$g4i3~ zWDY<4Rj_`-`(&OO@V)3LI!pcRWOnSIvm25o;!Vo`oe0Ar7(HhP=XN5hbY&FLuF$k{ zki|2tbF~}?WZWek$hMX=?`)h%Sg$8p(Bv8Rhf8%tq8mL8OyhFz3xuux#jwPN{D8^$ zI(yn`#Pj$Z#H5VK1Qo!Z*e`@I*s&MUk1=4XHtTZn&__haTr1?NR8PYq`MZK{=)Cs5 zEte{_N80Kk7HxdSef*|*;y`i5bNj`=MbTg_lwv~(_zvl(*!Fhx%+p&m$v~`^T-_usHue#eIcS9KrMN;Rzaodk7>r1b0mW z!Qmjd6WrZdB!mPFZpWdAO9<`+2m}a+y9YV+a6RPl{k?jx-e2&(TU%RGQ(M(N-P_%t zp6QvbzN&}KvwuX@!v<$src(_HKL*=#RIW_M>X1@svvW6nBz`%V_~e5|SmLvv-<>Wp z#C`5K5x4hEK79Nc8J~WtpWOvYe0k$>c(;gZz63l*P!)OZzM&f;QujVe_ca$MtL z3rx*Cb_k!BeV!77<-NR~{3hYD)2csSlQ@@O>h7urUyr~dlI-zOVXFY&EQ3V@HwRd9 z1ie`i0Zq-9(3|IV!S9xu%>M+Pcw#|f!NPfcIH5}`7<*HuPOiv9HRF(etlgZPRFg0! zM*zOEtZsTr?j&@#>$tRnV%VCqG5Nsf5$*rZq0B=Bng*YaIW+Y&UO}>K-B8D+qV!8c zfO-4%K9P{uR(~#IgBZ_>pPqeviRqS6s_?1-2KFln#rB&e5DD|g-hmW z@8UI0y8FD1*8!T>+#W|PHO_e}$X!pHbrV*LyjCPdjP0%@{}V*sSk(dwer_KwXh2e@ z0lL}ik_{IOo-4?QY4Jv``IS3_!MlG|=^>_y%Q>`8 zcICr-BJS{i6;?lt%yog9&)J*pijIHagG({*vx;t)`bbhr?I(xK?6$CvU#_@X*gNCZ zR@Tp7-4qcXoe%)zqO#sTdx(Nqvk{+(l@y=upQRhfHmoZBw z59&8i<+0p}3}Z3ft3ssy&j5J!*|q_GAz7!;+{w5Ad?&;xVBnQ_%y`bU(h9+(gXV{3 zlVW;7Y{7UktSjrSsZJ>3V2%ZB2*AEy`3ysn{G?pv-6_PU8Hd96mkzxUk^+r?q>gbED}hf37yhH z{5l`I*kQb#5<*I(Q&comI_8wzUL`(xlZQ<-aNtJpS`5y>Prhq&ScO*%p`b6n| zFy|On4{oZL^qz|#xK$i2%FN}GnK7Y}0Dd1%j8HlicCe)7KO?bvp~rIHanA;4kqyK# zFf6KctN?G(Uuh+Op6W29MiAt^doF$dFdczEO5AhvWgo1C#N|Wz#k48hYuNk#+KkU}KH;ZJx zGv8(dAxe^?LX>UXBhn}>EfV(|W$$ExL}s4S)c*05aXqFfoM#bUg9S{Ad9eC@*!b`| zeeAV$r>HePsKZ7F6M9`_`sY)m$#wC&R-fk;_sC$Ph83|q@T7-{-(BLTT0U{YQoCRQ z*4!yuFkG`Cu59TtxyMw&MHB(qNcGwark&Z#K_@qGPk4mmzwzm0qE&zegZ`w_%J@0J=_MjL!>vb7dV`XRCMLoZG z4;R*ygcgEx>V#6}brOe>T}(5l;=gHoKTa*Kv~-BfNd7D_M5DbEm9p0vd?L7sR(4=$ifaF>=mDUN$@pJ$`aKhuS2fP^XE38jwsYB`6o8_;w}%yU9!F%((k@L^fMa z*=VOzcJ>4a*f^=nOBeZKF*Kf>H!<-^pqDWCxl{3T7mLFULLs%+TeCtBrM;Fh@&&A< zP8~(}S3SMIi6ONfRe=(L5An^r>JQ1&7Z-Klo1brDbU@NMr_Cc{*QRv#GdsS`9=o2E zk!cnO7Dp89u=y`-@ad79U}MCWTm90Rs)rYnFai=|z+f88mDZJ@YQ;C_U$0aT?nc%_ zZGG;wrGSe7u!Fkq7@izm#b}8pgk}KY^bo<-vvAOO)5x|dG@IGDQ={wkcjma)cz z>e~2vy5o;+yF?b@lT*kbhjjn%yrZa3wO^*0*w9Pkmp z$%=w0+rBh~$wc;ZUz(Ip{)t1!R5D3ZP9L~{QZxofZX>t;! z%Nl98Z+H5V@Ga=-fJSHU1PcKTQR3E_2RiBp^bInc5k|$)1r1FGLy@pVU7om7-->tI zr9YbU=O$6;%W1m^OqZ|6Bn?7&25g$ux;2X3lT4h{}5kt$MH-HqMsFTMj?LK>bBW75-q^+ml9OrC5_i} z_2tFUvO}Fz!K<7i`o7P)cT~Rgza&@WQ;LBRYp&b+B42Q7jnTKxm%9*jiEU&oK8VqQY*O^ITm=vIT>PIBYfRcC}O~7bWT8wF2rNj{~ezWBNf~5ReH}sHFt+CqImlD>~;Cl zj*ud^^*A#+!iZ@&w7yq}aTDd+CteZ0ZBly(+@`~2mAM^GoA=cNM{f80DuL^spHZF* ze;Nebd`o-k8UC#E86?p0TxWgTm0u@rm=a3*o_m?;kyF&nK~{R}pFNF=#AtwEsm8kvKtQ?>39&Lx%BWgoDE* z0^A9E6KzcEH5qN$d{VVk_7iB0-yMDC)*MFg){)jS2{Vm(R%8uu#IgL95?F`gZn@=s zjf3WJ8B9bQq#5dSW-@?bj-&a2U1y`wmm4b^03DZI4QO@@C@LtBY%SSKHX3=E=FD~* z$G4>p0WS>iWzQ(Q@WQpe_|2O|=Y`nrPvL!%nX)0hZe>4r@8Hc7%dU2p3eG_# zKK0IxiYviq!wtKGQ6vPw-N%R2U(|nM6pH!kO{C@Lj@K&f zMghxll3+(<|8}lZ>J;Q%Okp0Vv->qI+AZQ7M{rdb#8643{!&QYPb)5Eq-X%azrcBM zFqfKYLo}2GlCA7ep{mD!LRgqxtPyyVp?>mig-4`vQ=m%k40x^$61QI{_Ii-1#k2iV zAhRA&XM1c>6})b$K~1whhQrV$svu;#di}W9sXneU3u-+yK~s#0Zo{S9wolZweKM5Q z?*^62hG6artlHqXib)_mTI**1W#@Tbk*`|8=OgO#68`>~$U58RH+&MQKphbTS#=zz z9Bm+v`88zy2k_*6Ve7zT>tyc0*pI5^SBHenez(}K_LVP+ zr|C8~KYh8JI-^b__A05bU$|zDeODEA)rilcXf0rJ+Z|>^Ry5ut6ECwTr^X*H7G_*B z*IZBKFGhg))#jn%TQ0pxG>+8q6GNMcn{LF9^Y%t?pqZpzwA%FskA!7T|6fQ0Wzxw0 zQ&7=&0Jct+HgVU-!DiH!uX&oo+`f;Ao0hG5H+Nq^4l;QJn#k082L{b67q|JKIRkMI zj&V_Y%@33cpTbDlMx+Zx>*WP+?#W^eoTZYAD!*5YPwp`pK5Xtpy7_Qgo#E~|UWUe9 zu?Vg8Tl&=2p9wgikelU(&WPS_i@}|Lb@MHN2Vt5D5vXGtv*kF|AFA*S^Xk5rxv=4a z(BuxdCvu}bT@vpcOf4=BMiM?&`fQwBf9uqrIk2k_!*~LsSgh~SRq7;#IeSk-!OP7< zdqJLbmWGW9lRbTg{L2Kpw6BwjHVa?Xaf(MQcB?@=Cgr0iu_K=-$WzTWM<42N?BfHb zeJlnYf8|_~ODR4VNIS33AMjWjuW)->lS-#CO)V?!ooIb%Y{*T{UzCB!%*^h`XVHX{W1s zFOF7kkPik{!HYESChE_}(C8OOF@AOdQm6lV=W_x#rflx!#5>M5E_wnxB4f{AV~aav zc|S)|GjHq5_+LLQ=_)=lM2w!#r)dQ3>gRVP*u@k15L!5pRBBPMB-78yNX!G<23qnH z7vp%MJ4M2YVl^J>Tgo(jpBGSX<^+Ou#aT<7L|R-XvbZ~D(R_j}4%A(uj6B;toTn2^ z_h>i$WBo}JRAEPde-S(v#s+BOhl{{<8y>vV?Wg$>mC|A*7|3u<$Uj;-9BNGq3gQ;A z(o}p+O3iNyvmz2|zk`kbgjq z#?lgE|FRDL(3jiLL_r0UqKJ#DI}G07#SXs56pAUbGCTiC)xy&flA4qTUS8@y(xRDj zTfykvbZ3$&`NqwgY(a3)R(~HE_-V~YZzFa;W2RZ$89{f~Ig)8F&I^REVi#djCU*~Q z{^8!uKd95v_Z&E7bDonw?1_J_TQ;hKOF6TP|6q?%FydHrDvI!p=9YM<%dJ1~n9i7i zJjDKDkhqA#8h@VtNiDjys^ec9&wmVDDDA0~_MhUkcW!bq>Ibnd7}60BNesDVDQw0v zN_&}vVTNtBa1^>Y6tJ4w?Wmur-1nzAV$A)>@u!#$M*Z&FOFBw5z3+^h4s`MtSO%pG zL07wE)h98*w+D^YIX+BPNv5N#Glw>pEQj5{pDHh-3|dyM_>yh@n6{z2$PUGznVl|3 z_06iYaG`wSKGmrhIdYPoh#BbJbV#$*HzmBBotE>iyb%j(3el2qur)ljoMLBNVVT+|&vXdyVr?%zQpb_vx^^sy?I3H~ z9EF>;R4+fgs;1Tvn6Nu@3-_1NfCpf!2epr48uJAa!L_*zYy9^d)MG5-w#yF#ptX0J! z^Y_c)peZP;kB5_ONf0XNlK;C?k$>OhmUamn&L{$maowYQ#>(wzuxUaT4V9Tf{RcI1?cDI2D676PSB%e z2kn$!-Wgp(n;Fvx)EGFXYM|-|Q$Q#l7_+=Hyj-Qi{p^H`2%9D6rpDp$etJVTod;xt z4qz1m{oyi>1bBx08(@=D|Bqq~&iayS&U4ek7ZkLiY>tshx>bn>G>n|OR5$Z?o}I^5 zpesCs(bA05sdw!?lZ}5np7|fIw13&3W5I|W))(r$TR#iFX>D=^?}o(odp8yS_))79 zzuxH)1!a!ov6L=-PaEr;$NEk28m%Kk3g+<|C=xyA-$aqR&&^VL@F==ZMBs@NqChJn zgG8I&PB$NQ&BBurfprtC#m9Awn^+rRw4rI;{Ag@E5!FF~>uWSQF=9u7n~kXK#a#Q_681l=(2$3)#0!~3wKM%FBaha!w5Z2rOistFVT5j zh?MGLKraBx1juHp1%T2f>P%YU^26XE6{XJ^8 zHTI(qzU*aA`c$EGT@(BHu|_q&p?xD?vN5(QIA$y$SO|8MLu3NnUnAFvZaq1oF6}BG za_TQCnkBevQkC>r-hAmgJ&wunnlI6zRu3q=4UywsM_)0up?e^er%ecQ?d*I!lS8(V zgXE)yBf*bcISt}%y){uHQvjzhTq44g<60XU=g2`fN7#ZZ8Ke2jidKp3)>G#B@5ypO z*VqWtb1>O@#un&ka;W*YiiStI^Wl0vTV(Gw`A4=t zpYTfYbUSRF6{jGE`xP*;rufoxCE~Op-wgaw;Bm~X;Hpr(MPye9()F_SejV71CF4*bzUadGkY_VZI|o1l}L|AFFTKaEAAR) z^S9af04qjl_;G71;fQU%i1{h<`T3tB+4d)!seMQOX2a%Uhdt~8o4*U;qFBIha2sq1 z)XVg$59ybDJ4zWkHhI}1leXwOoV;R8TD!TFV=)5+Vq~i(h&ov`Xlx=zo?XC4ytsio z!;yID8tY+$y-5YlU4{w|<*l1kFG?4&5XxZtQZ5d? z8w)3)9zy?ZRTj?AADzxgW?lEfdFPFuA~>cN+xio=_edM}Kl(V*tD~f38P!_~vON*# zw}DV&qRMPRkZq?My^_P@OvG)O>@WsS8`JEg3IW{$-Z%R{GgjAOO6>$)WCofuZ7_19 z(^OrPfGMk5{FTJiA?2=|g^| zY`Alrr7yNWDg{y70Ir%gC}Kk%aC{l`G+R?@Tj%}w-iN{12Vt(&`K~GIU%AIT&xC{= z#&EyVPGt+av)G`$fzCWZpGLBs^(bWn?Fu1Yg*7yC(^ai$KeYQ_^9tbo4(IK#Q!hXb zBs}x)d3)zEi1U%YT>I1{w84r+>wv-Rsx-E@en(P4v-B?}iT+AM*|9Xx>jMD45NvLR!Hj?Pf_2MISAfI}g{3wbE6vrPF#wYE%-{$BIe#KaTeC~ z<_K-Iqgf(YQ^6roPdrg?fp6J#hZdi#f7HGW@C@@Btd2k;XN(u`oGY8pYl+SY>GmC@ z$4PNX`U>-X)#)4$tB<$ir-=cg8057iw+^e+4|)m~W?1QF7QARQRM@i8twW?1yc58l z);cWOIB9_Dhc{yk%26$RX8t*RjuA^P%YI}xgiyo^e$RHU3OhTX@T{XBla;7!r~HcM zNv&7%!CNd*DzZGx87KSWcg-eDqxLyI*6?!BQ|$&_MK1g!cY4+%uoO_r{J#E^o1&$L zuS*s7`Pg@Je!0Ob%JO1U0hD=Vj}Ttq9__S#g+mOZUG(|jrYKp68)>t9jY`LN^ReF) ziS{lwSEU5nH#bFGA~76f*g3w>dD31jP0MTiu^eX$Yak!brn4P!KvK`J?ifP^4ETpv z1x#vnhh;5cf`j}dmyJMG^Yn|p-@N8EA4GKWh4}a!epSc3UYL51qAH#UzHx^a{>}me#vsYh7)2wM7&@ByjlElJH7H(dGAsYjGoQ;5G|C2n8^sDh{vKj>w z9-pceT-@17nuGRlFU6?>Z112e#uhZ?k=X?u^=XCLzc*-%8+NqF&F4>;H}B$B==eEw zt2}f3Hxg|6z9<}Gm=wCQ$XJp!*|dpLSo0Dy;;x)3QspSM%fG515U->+NYr=lMYN`R zx&0|C6bWA2;RHqrj=g^r45N1rn;Vb~Vr-&OMR13di#tBuPlw&AM07_<%sY5GTxXCf zLZ0dDPFO!QwJ_1EP!6Q9a#a&g2L6PRUMC2Y)__t2TsOB(bGpeLM) z;L;Q&52d6v2ovsGrQe@bxRnvjHkx{iJ+pDfq&ahPcEF7DzOR4OF_qXRF3dW#B8Z5j z@J%U*XY5?n!-dK4iUULzrnMZ8*vVOF3Cf-oK{I8tP#EO#4Pxods*ky+=wTi(T z0pw#p_dnrA2Yje+(5yCyYA={9=T&p>SM~US26_>7aMxwq^_s{@(tw>S`4(Y{x>|Mk)@=Bn@~VEo6PbtQRzx9L+ejcI z)_$^LFPKph5&RDEqC$cBm{L~keM@CFJkEPwT{6P8?$2!1QgXvV?)Z$lQK<@Zy@T4X zI!zUU9)l1`!8=L7azyXSH`+{n$m}*^e~CaScpSIQG1YNK?nGI=aJ2SoZar4gz_ZA> zgnQg6i&$nQ89LwSUEyDhI3W(zEq?(toT&zX)WM$5;(t_fz(BR27ypk4JwRyr4eo^+ z4KG}jZ@M&1eDQhZ6$hc~H`H3HW)%I120gvy5uBm+NRS7;D*(x-t$=3z1T+UFY||o7 zz?r8deT2ZJBn0GcZryO8GigHV)Y((4i;a6)o%r$OwN(FC@%(eJkRM*+#LU(T(6KqNBP(Qd_ZoZ~r(%e`9zZ$reb7cR@wuX8AK`?^vI$8T zZCo!i^J_+x-^sXSZNI-b0>GF32F{`)BF_Z(VbPmPIQ`N4MCMe3W~EB-+qHy&qJcAr zOoI)v@rY<-6aDkJI53hXcYa0P$u-^IEv8V%q0lMhn_OVq$Di?q30i&fkF%wgZ*~Mq zQ_**@4nC1{GtW#Zj?PD=;c7r5-)hm6^Z#uB&`xc!{_VFn_+n)LJAl!Z_aE`&R2j~l zJ5dMBEaP+1b~+W+5wFww!prd9B7%=@lv_-_ef!wPG#dL-xTtWY6C7sj5C!9vZEtHVf6)H+?;9RrAW)yR2%g( z>cw7?)4+H3Pk$OoSvl?CKRgL(SbFQJHDOA6?8I>?UpdJB+0)SoVSiSnwnPh{CNy~K zv8s#1)~15Xll6*qCZ!e?UMZ>a=aelquhYf^i9^~`5a`Dv zsPbGItP-~aDu{e3ey}7AaN05Tu^}eI3^wjjBRo6z0XU6|4O^^Mq}e)JcKa5e7=ogH z_@tX@;+Tw}xBbq3C!GVG{&U8e{&+UT;n?zA)O=mElH{lU$j%tG>$-a+mamgva`6Dv z>-n4_e;g=`M2zTkfKDt;FW;X4MiwmgmQ-P~n>u3>;GEMy5L?Y{2!zWlBzL0BGS|@r zqQMjs+tg*^DmIozW-gC4*|g86_n5BpH#z{|@$fS1((shWE9VL~PE5q7`~rjQaPJHyNBJQtAz@4)#9r_Epu; z7HsDc;4nakM}3#vena(VueqFF8L z@&mK!i=rW=+M{cD`wXNlq|!8IJ9F9+-Rg3`IKSM%bmt#^d5fQ-YFX~J+d2OQ&ysYN zfPClSc8Sw>6Ys~Am|OkWfxQD`!R2ktBJ0qn~+>S*?0k7X^S3Xs1zSB4p@!pQ&;EO-!rExAP5CCTD9l}xi!`E zcd$|qgR20L-^8XeX_J3>|EjO!AX-%>(T*mK9 zs5uB>t6Je7ty6W7sodhy=A;T7Rxw>0_yn&;?_c#AH}xhSFfh)j9Fz|U-bmeA`9JKn zia4;H5hm2cN=Va~J}`QEUr_&G|7b_Y{%_(>(wZo%%OUJA)rI%b$a$~vO%%{3GMN@d zKY+_DI0W!WRl~kq=J$?ZL)7uIZM|- zWUBLT6iPMh+S!tji-E2qZ?cccHVDkwe!bG_{1%Y7wC4JBmihH^Yx&T@^~eUn81+MA z^@$Ok47vm_%PG>Z$=(ZCNwpqtQd=D#Xxs_H$Hx#+fajaUdl|blRiIQGrDnxl3r%dC zn?88Cl42FsLDRQaX|LCK+26*Jb_IKcKeOU0r3-(DO0OigjTj@LXe!SAXg6-&`zJ1# zeVsof6T|*AV;qh`mB=$+HANNWt2Mx_TqF zvxsp-m?#)=k0RQmwOHo}gD`Tc6QQF7*)kpl-ap-Ti(O@~bV+(-ZDx=dP(UO5;>f0B z8^ZLV;>Ps+D+AE6_7iERde!r)fRs*t!dc+Huv~Afq}_*7wN)qJWd-_tj746t&7Iwt zeIF4sjMP}Zw#!yx>Iq+et;o012(Nt!DI&6r05XXo&i6mzA$R07feJraSyr zc6D=db`_#+a%%!g4`S5Qf}uW2Nsky;*(bQ=$@5#N(kTE3n4HUySwnd8AAA;}A07gY zo{1a@chwoRjeS=ZMR%D-e`i<>HH^Nx-{Uz5UQP&1P>4o%HyCrm_p3aLTR((&JbO>9 zNs9Eizp2?sSox}TiN>$aKALMt%HIEXYL+rl_5=3Py$!0QPaBMFZ_Ee+;T!$uM+Fm= zZ?ba<%>l^bT8XC)l|HYMm0Nw8)|NtL%fVN!^fUC>oGII<=>0H18jwyUvbM{fdgoOU zEQpeUWLDu>muS62%=Nxtny2aYV|cWI4+TPaapyC+;`ceZzO09OrTSAoXF26>|DEKr z6K`zWQ3A;nv}rt{iSC$m)YU=vrc4YK#SGm#22>)uJ%tT1B9GRlPl+vy)4b;*c9kF6 zt%r#fA;NGx0TUfzEvc{T18v;Wk8G5q=io?Ts2KM0(PM(4S@k?)VqVUWqqSc5M(8ll=N2@cMIso7$<81<9^?_NOn4BB!C$1i^V0=YpiQ@@(0_ zM-+EOQeWLjGd7xMt>7r^4IOP@+V_{QE0GmB3{@)+*+dEGwJc9)k8MaI$J!p69+{xQ zl)_yUoH$swV?qaVWLIhTe0?Aq>FX2DIQHMdU7_BZGM3*(ipjF&wPr5~4F#zY0*AfF zSH4}h%9B@T=P=e%oQJ%M%pkyi=>zbram1Ns0U!O&10TIC!Jyldz3n~iq&9(iR;*q2 z{cI1zqMtT;CpcDn)PT+a^oR~6Q%%Ifz=o7Xi8LK$+$~7bf)h+P0hMtFm2jk*GvWsOOQbXQ8Had zS$W)kUH`#xCbrdRPvI0;8L!b#!5lEOX~p-9mWvnLpOqrq>WTx+uXzniz4ye$VlO{Z z^X@gwa=^ae*Oh{4JvbkA`mDqn5}oAN(>g9`l*)5-iGFoROf~NicSZ+wl}!b;RzEs^ zu~m*PyZ!Tzv+DCtAO!*3BOapV2X_^LEI+7xMPrjeILRx)^d$fWlK}30yfJ+DdZzzp zno^|_qr=wHO^9iGeKI5{=>}&ePlvg$-M4R33D;A2mJek-X@$c$MmSNQ6QQ0&bjZ=B zMSEO3Ox9aVJ3q69VwV3C>(7{%Z)&=g6Ie$N(>Gqw7nY9!}HZUw47{fWB>oi1AL z&Qt2^uzNC*ly;y)t`-)nVWt@vT&3n~a!|7W>b zq1$)7DbTy2Ii+8%rK4oO?02Wz+%5v*jo|I^Q79&DsZ8MY1nSQ|fsSa4)+%a>Eif_h4rHCzO-@%kLX-LZEbN4~W%H4p;y2N>-y9k+X<4;x>w;%z?iaLn zCW`=+bj!i_C_{&Xg84VyCId%=+DuOHN9cme)Vy==9;4aDa=vU;z`hP?gz zw*Ay&YOFf@ZS}!akJvQ4lN_Z5C@=E;IAWyR+e`WA1G?My>P8vSHZ(SkJ^z7|-fILD zr<{^+OYs~8%?U4`7XpDQ43>0F>RS#mx=eZBI^oY+3(VZkV6>Mz8%~HzH~hWvLKvy$ z?Upqkto*u-Ii$48rctLcYMh2=5hMT%?QXh8SAJ(Dgu|-rLc$!yP_uD4aVyf6AY{LX z*NuQ$DIG9TA@+vY2DP4MNU1(>_IsY9UGAGjiH@S@7Er_atr&9cp%{e%4F(;w5z3 z!kC6052LHiu2dPUSXC?Qpczuua_qXPmEOz;HQic=;CuL*X4BzOw%!D?QECKjfdV-B zrfxp43F<}P|$y7MabP9%OSMpI0TgS+(mu zoVUlWBf^y-H56e1Dg4OGUu21)TYbD9h3IdLahF;y334mg%iaNoK*6CvLhz?Gv&##V z^P<1!%^zo9x$IFpyuJw*Q3M>st*vCdyK00L+W+q;5BP4%UYhb<93+`%n{QtLlW6+roe%g2kDYCP>X;UH)M zEh5B#(3$wV-PuyJK1O&fou(+`w=J+#`2fxE=dO@2RkdTxBM-+DWveigy??)YcM`@f zp~8nJCd0bVL7zqb!mlVQ2d*Lt$s1dxyjr}FSn%c{h*vQnYSb8R)>lbGmN#BD;~-3< zk`=6>e@7Ctu=>h6eazGDP8xr>TJt#GS%U@p9Hea^p3+cKr&Xo8uGU+F*>8bZ{MMI_ zCDR%%gd-ZEynd88yITVB74n`JeU8Pb^j@j-Yv0ShB|>3b=d@Z!ttgum@Ir`eu7#Um zvD0ulMbAAzqYJOT+!A3#lljWD{nrQPRbsIY;kV0Hdu6gnrQ2gP=prguqe(*@Gg06* zNFyoDnl(%F^~8LsF0=Qu?8%0BbpOX+4XY&TW%z35mEMF{YE< zlE8mw*#DOW;J+dC|4Uu&3GiRi`~P7f=>N-C*Qt3AIKwMrtf(E>L64W>d$o5}a%N%w E3wwjE@Bjb+ diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoComp.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoComp.java new file mode 100644 index 0000000..776abb1 --- /dev/null +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoComp.java @@ -0,0 +1,249 @@ +package tmb.randy.tmbgriefergames.v1_12_2.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.labymod.api.util.I18n; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiCrafting; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.CompressorState; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.Click; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.ClickManager; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class AutoComp { + + private int counter = 0; + private CompressorState compState = CompressorState.NONE; + private final LinkedList toSend = new LinkedList<>(); + private boolean compActive = false; + private final List list1 = Arrays.asList(CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5); + private final List list2 = Arrays.asList(CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5, CompressorState.COMPRESS6); + + private final List> lists = Arrays.asList(list1, list2); + + private int currentList = 0; + private int currentEntry = 0; + + public void onKeyEvent(KeyEvent event) { + if(event.state() == State.PRESS) { + if (isCompActive() && Minecraft.getMinecraft().player.openContainer != null) { + + if(Minecraft.getMinecraft().player.openContainer instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equals("§6Item-Komprimierung")) { + if (event.key() == Key.ARROW_UP) { + changeList(true); + } else if (event.key() == Key.ARROW_DOWN) { + changeList(false); + } + } + } + } else { + if ((event.key() == Key.ARROW_UP || event.key() == Key.ARROW_LEFT || event.key() == Key.ARROW_RIGHT) && Key.ARROW_UP.isPressed() && Key.ARROW_LEFT.isPressed() && Key.ARROW_RIGHT.isPressed() && !isGUIOpen()) { + startComp(); + } + } + } + } + + + public void startComp() { + if(Minecraft.getMinecraft().world == null || Minecraft.getMinecraft().player == null) { + return; + } + + compState = CompressorState.WAITING_FOR_MENU1; + Minecraft.getMinecraft().player.sendChatMessage("/rezepte"); + compActive = true; + } + + public void stopComp() { + compState = CompressorState.NONE; + currentList = 0; + currentEntry = 0; + compActive = false; + } + + public void onTickEvent(GameTickEvent event) { + + if(compState == CompressorState.NONE) { + return; + } + + counter++; + + if(counter >= 8) { + counter = 0; + } else { + return; + } + + Container cont = Minecraft.getMinecraft().player.openContainer; + if(cont instanceof ContainerChest chest) { + + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien") && compState == CompressorState.WAITING_FOR_MENU1) { + compState = CompressorState.WAITING_FOR_MENU2; + click(11); + + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung-Bauanleitung")) { + compState = CompressorState.COMPRESS1; + click(81); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung")) { + ItemStack pageIndicator = chest.getSlot(49).getStack(); + if(Item.getIdFromItem(pageIndicator.getItem()) == 397) { + String page = pageIndicator.getDisplayName(); + + int direction = getClickDirection(page); + + if(direction == -1) { + click(48); + } else if(direction == 0) { + click(52); + if(currentEntry >= lists.get(currentList).size() - 1) { + currentEntry = 0; + } else { + currentEntry++; + } + } else if(direction == 1) { + click(50); + } + } + } + } + } + + private int getClickDirection(String current) { + switch (current) { + case "§6Komprimierungsstufe 1": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1: + return 0; + case COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 2": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1: + return -1; + case COMPRESS2: + return 0; + case COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 3": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2: + return -1; + case COMPRESS3: + return 0; + case COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 4": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3: + return -1; + case COMPRESS4: + return 0; + case COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 5": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4: + return -1; + case COMPRESS5: + return 0; + case COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 6": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5: + return -1; + case COMPRESS6: + return 0; + default: + break; + } + break; + case "§6Komprimierungsstufe 7": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return -1; + default: + break; + } + break; + } + + return 0; + } + + public void changeList(boolean increase) { + + if((currentList >= lists.size()-1 && increase) || (currentList <= 0 && !increase)) { + return; + } + + counter = 0; + currentEntry = 0; + + if(increase) { + currentList++; + } else { + currentList--; + } + + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoComp.list") + (currentList + 1)); + } + + private void click(int slot) { + this.toSend.addLast(new Click(Minecraft.getMinecraft().player.openContainer.windowId, slot, 0, ClickType.QUICK_MOVE)); + ClickManager.getSharedInstance().queueClicks(QueueType.MEDIUM, this.toSend); + this.toSend.clear(); + } + + private boolean isGUIOpen() { + GuiScreen currentScreen = Minecraft.getMinecraft().currentScreen; + + // Check if a GUI is open and if it is a chest GUI + return currentScreen instanceof GuiChest || currentScreen instanceof GuiInventory + || currentScreen instanceof GuiCrafting; + } + + public boolean isCompActive() { + return compActive; + } +} diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafter.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafter.java new file mode 100644 index 0000000..b883c13 --- /dev/null +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafter.java @@ -0,0 +1,324 @@ +package tmb.randy.tmbgriefergames.v1_12_2.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.labymod.api.util.I18n; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiCrafting; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.ContainerWorkbench; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import org.apache.commons.lang3.ArrayUtils; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.Click; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.ClickManager; +import java.util.HashMap; +import java.util.LinkedList; + +public class AutoCrafter +{ + private ContainerWorkbench inv; + private int[] stored; + private int[] meta; + private String[] names; + private String output; + private int outputID; + private LinkedList toSend; + + private Simulator simulator; + private boolean endlessModeToggle = false; + + public AutoCrafter() + { + this.stored = new int[9]; + this.meta = new int[9]; + this.names = new String[9]; + this.output = ""; + this.toSend = new LinkedList<>(); + } + + + public void onKeyEvent(KeyEvent event) { + + if(Minecraft.getMinecraft().player != null && Minecraft.getMinecraft().player.openContainer != null && Minecraft.getMinecraft().currentScreen instanceof GuiCrafting) { + if(event.key() == Key.ENTER) { + if(Key.L_SHIFT.isPressed()) { + storeCrafting(); + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.recipeSaved")); + } else if(Addon.getSharedInstance().configuration().getAutoCrafterConfig().getEndlessMode().get() && event.state() == State.PRESS) { + this.setEndlessModeToggle(!endlessModeToggle); + } else if(!Addon.getSharedInstance().configuration().getAutoCrafterConfig().getEndlessMode().get() && ClickManager.getSharedInstance().isClickQueueEmpty(getCraftingSpeed())) { + craft(); + } + } + } + } + + public void onTickEvent(GameTickEvent event) { + if(endlessModeToggle && ClickManager.getSharedInstance().isClickQueueEmpty(getCraftingSpeed())) { + craft(); + } + } + + public void storeCrafting() + { + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().player.openContainer; + + if (!(this.inv.inventorySlots.get(0)).getHasStack()) + { + return; + } + ItemStack result = (this.inv.inventorySlots.get(0)).getStack(); + for (int i = 0; i < 9; i++) + { + if (this.inv.inventorySlots.get(i+1) != null) + { + ItemStack stack = (this.inv.inventorySlots.get(i+1)).getStack(); + if (stack != null) { + this.stored[i] = Item.getIdFromItem(stack.getItem()); + this.meta[i] = stack.getItemDamage(); + this.names[i] = stack.getDisplayName(); + } else { + this.stored[i] = 0; + this.meta[i] = 0; + this.names[i] = ""; + } + } + } + this.output = result.getDisplayName(); + this.outputID = Item.getIdFromItem(result.getItem()); + } + + public void craft() + { + if(!(Minecraft.getMinecraft().player.openContainer instanceof ContainerWorkbench)) { + return; + } + + this.toSend.clear(); + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().player.openContainer; + + int n = 0; + for (int i = 0; i < 9; i++) n += this.stored[i]; + if (n == 0) return; + + this.depositHeld(); + + this.simulator = new Simulator(this.inv.inventorySlots, 46); + + dropItems(); + this.simulator = new Simulator(this.inv.inventorySlots, 46); + + + if (!this.checkMaterials()) + return; + + + for (int i = 0; i < 9; i++) { + ItemStack stack = this.simulator.stackAt(i+1); + if (stack != null) { + int currID = Item.getIdFromItem(stack.getItem()); + int currMeta = stack.getItemDamage(); + String name = stack.getDisplayName(); + if (currID == stored[i] && currMeta == meta[i] && name.equals(names[i])) + continue; + else if (stored[i] == 0) + { + this.shiftClick(i+1); + continue; + } + else + this.shiftClick(i+1); + } + + if (stored[i] == 0) + continue; + boolean found = false; + for (int j = 45; j >= 10; j--) + { + ItemStack curr = this.simulator.stackAt(j); + String name = curr.getDisplayName(); + boolean isFullStack = curr.getCount() == curr.getMaxStackSize() || !Addon.getSharedInstance().configuration().getAutoCrafterConfig().getOnlyFullStacks().get(); + if (curr != null && Item.getIdFromItem(curr.getItem()) == stored[i] && curr.getItemDamage() == meta[i] && name.equals(names[i]) && isFullStack) { + this.click(j); + this.click(i+1); + found = true; + break; + } + } + if (!found) + { + int amount = 0; + int slot = -1; + for (int j = 1; j <=9; j++) + { + ItemStack curr = this.simulator.stackAt(j); + + if (curr != null && Item.getIdFromItem(curr.getItem()) == stored[i] && curr.getItemDamage() == meta[i] && curr.getCount() > amount) + { + String name = curr.getDisplayName(); + if(name.equals(names.equals(names[i]))) { + amount = curr.getCount(); + slot = j; + found = true; + } + } + } + if (found) + { + this.rightClick(slot); + this.click(i+1); + } + if (!found) + { + ItemStack displayStack = new ItemStack(Item.getItemById(stored[i])); + displayStack.setItemDamage(meta[i]); + this.sendQueue(); + return; + } + } + } + + this.shiftClick(0); + this.sendQueue(); + + + } + + private void depositHeld() { + for (int i = 10; i < 46; i++) { + if (!((Slot)this.inv.inventorySlots.get(i)).getHasStack()) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, i, 0, ClickType.PICKUP, Minecraft.getMinecraft().player); + return; + } + } + + + for (int i = 1; i < 10; i++) { + if (!((Slot)this.inv.inventorySlots.get(i)).getHasStack()) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, + i, 0, ClickType.PICKUP, Minecraft.getMinecraft().player); + return; + } + } + + + for (int i = 10; i < 46; i++) { + if (ArrayUtils.contains(stored, Item.getIdFromItem(this.inv.inventorySlots.get(i).getStack().getItem()))) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, i, 0, ClickType.PICKUP, Minecraft.getMinecraft().player); + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, -999, 0, ClickType.PICKUP, Minecraft.getMinecraft().player); + return; + } + } + + + } + + private boolean checkMaterials() + { + HashMap needed = new HashMap(); + for (int i = 0; i < 9; i++) { + if (this.stored[i] != 0) { + Integer count = needed.get(stored[i] + ":" + meta[i]); + if (count == null) + needed.put(stored[i] + ":" + meta[i], 1); + else + needed.put(stored[i] + ":" + meta[i], count + 1); + } + } + for (int i = 1; i <= 45; i++) { + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().player.openContainer; + if (this.simulator.stackAt(i) == null) + continue; + ItemStack stack = this.simulator.stackAt(i); + if (stack == null) + continue; + String item = Item.getIdFromItem(stack.getItem()) + ":" + stack.getItemDamage(); + Integer count = needed.get(item); + if (count == null) + continue; + else + { + if (stack.getCount() >= count) + needed.remove(item); + else + needed.put(item, count - stack.getCount()); + } + if (needed.size() == 0) + break; + } + + if (needed.size() > 0) { + String item = needed.keySet().iterator().next(); + ItemStack displayStack = new ItemStack(Item.getItemById(Integer.parseInt(item.split(":")[0]))); + displayStack.setItemDamage(Integer.parseInt(item.split(":")[1])); + this.toSend.clear(); + for (int k = 1; k < 10; k++) + if (this.simulator.stackAt(k) != null) + this.shiftClick(k); + this.sendQueue(); + return false; + } + return true; + } + + private void shiftClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, ClickType.QUICK_MOVE)); + this.simulator.shiftClick(slot); + } + + private void dropItems() { + + if(Addon.getSharedInstance().configuration().getAutoCrafterConfig().getAutoDrop().get()) { + for (int j = 10; j <= 45; j++) { + ItemStack curr = this.simulator.stackAt(j); + int currentID = Item.getIdFromItem(curr.getItem()); + + if (curr.getDisplayName().equals(output) && currentID == outputID) { + dropClick(j); + } + } + } + } + + private void dropClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, ClickType.PICKUP)); + this.toSend.addLast(new Click(this.inv.windowId, -999, 0, ClickType.PICKUP)); + } + + private void click(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, ClickType.PICKUP)); + this.simulator.leftClick(slot); + } + + private void rightClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 1, ClickType.PICKUP)); + this.simulator.rightClick(slot); + } + + private void sendQueue() { + ClickManager.getSharedInstance().queueClicks(getCraftingSpeed(), toSend); + this.toSend.clear(); + } + + private void setEndlessModeToggle(boolean value) { + endlessModeToggle = value; + if(value) { + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.active")); + } else { + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.inactive")); + } + } + + private QueueType getCraftingSpeed() { + return Addon.getSharedInstance().configuration().getAutoCrafterConfig().getAutoCraftSpeed().get(); + } +} \ No newline at end of file diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafterNew.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafterNew.java new file mode 100644 index 0000000..80180fe --- /dev/null +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/AutoCrafterNew.java @@ -0,0 +1,314 @@ +package tmb.randy.tmbgriefergames.v1_12_2.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.Phase; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.init.Items; +import net.minecraft.inventory.ClickType; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.Click; +import tmb.randy.tmbgriefergames.v1_12_2.util.click.ClickManager; +import java.util.LinkedList; +import static tmb.randy.tmbgriefergames.core.enums.AutoCrafterNewFinalAction.*; + +public class AutoCrafterNew { + + private enum STATE { + OPEN_RECEIPTS, OPEN_CRAFT_PAGE, CRAFT, + OPEN_INVENTORY, DROP_ITEMS, + GO_BACK, OPEN_COMP, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, RESTART + } + + private int cooldown; + private final LinkedList toSend = new LinkedList<>(); + private Item itemToCraft; + private STATE currentState = STATE.OPEN_RECEIPTS; + private boolean active; + + public void onTickEvent(GameTickEvent event) { + if(Minecraft.getMinecraft().world == null && active) { + stopCrafter(); + return; + } + + if(event.phase() == Phase.PRE && active) { + Container cont = Minecraft.getMinecraft().player.openContainer; + + switch (currentState) { + case OPEN_RECEIPTS -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if (inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(12); + } else if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + currentState = STATE.OPEN_CRAFT_PAGE; + } + } else { + Minecraft.getMinecraft().player.sendChatMessage("/rezepte"); + } + } + case OPEN_CRAFT_PAGE -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + if(itemToCraft != null) { + if(itemToCraft.equals(Items.GOLD_INGOT)) { + int slot = getSlotForGoldIngot(); + if(slot > 0) { + click(slot); + } else { + click(53); + } + } else { + int slot = getSlotForItemToCraft(); + if(slot >= 54) { + click(slot); + } + } + } + } else if (inv.getName().equalsIgnoreCase("§6Vanilla Bauanleitung")) { + currentState = STATE.CRAFT; + } + } + } + case CRAFT -> { + if(itemToCraft == null) { + itemToCraft = Minecraft.getMinecraft().player.openContainer.getSlot(25).getStack().getItem(); + } + + if(getSlotCountOfItemInInventory() >= 27) { + switch (Addon.getSharedInstance().configuration().getAutoCrafterConfig().getFinalAction().get()) { + case COMP -> { + currentState = STATE.GO_BACK; + } + case DROP -> { + Minecraft.getMinecraft().player.closeScreen(); + currentState = STATE.OPEN_INVENTORY; + } + } + } else { + if(cooldown < 6) { + cooldown++; + return; + } + + click(52); + cooldown = 0; + + } + } + case OPEN_INVENTORY -> { + if(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) { + currentState = STATE.DROP_ITEMS; + } else { + Minecraft.getMinecraft().displayGuiScreen(new GuiInventory(Minecraft.getMinecraft().player)); + } + } + case DROP_ITEMS -> { + if(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) { + if(ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.MEDIUM)) { + if(getSlotCountOfItemInInventory() <= 1) { + Minecraft.getMinecraft().player.closeScreen(); + currentState = STATE.OPEN_RECEIPTS; + } else { + ClickManager.getSharedInstance().dropItemsFromInventory(itemToCraft, true); + } + } + } + } + case GO_BACK -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Vanilla Bauanleitung") || inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + if(itemToCraft != null) { + click(45); + } + } else if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + currentState = STATE.OPEN_COMP; + } + } + } + case OPEN_COMP -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(11); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung-Bauanleitung")) { + click(81); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung")) { + currentState = STATE.COMP1; + } + } + } + case COMP1, COMP2, COMP3, COMP4, COMP5, COMP6 -> { + if(ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.MEDIUM)) { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + String headName = Minecraft.getMinecraft().player.openContainer.getSlot(49).getStack().getDisplayName(); + if(headName.contains("§6Komprimierungsstufe")) { + int step = Integer.parseInt(headName.replace("§6Komprimierungsstufe ", "")); + + switch (currentState) { + case COMP1 -> { + if(step > 1) + decreaseStep(); + else { + currentState = STATE.COMP2; + click(52); + } + } + case COMP2 -> { + if(step == 2) { + currentState = STATE.COMP3; + click(52); + } + else if (step < 2) + increaseStep(); + else if(step > 2) + decreaseStep(); + } + case COMP3 -> { + if(step == 3) { + currentState = STATE.COMP4; + click(52); + } + else if (step < 3) + increaseStep(); + else if(step > 3) + decreaseStep(); + } + case COMP4 -> { + if(step == 4) { + currentState = STATE.COMP5; + click(52); + } + else if (step < 4) + increaseStep(); + else if(step > 4) + decreaseStep(); + } + case COMP5 -> { + if(step == 5) { + currentState = STATE.COMP6; + click(52); + } + else if (step < 5) + increaseStep(); + else if(step > 5) + decreaseStep(); + } + case COMP6 -> { + if(step == 6) { + click(52); + currentState = STATE.RESTART; + } + else if (step < 6) + increaseStep(); + else if(step > 6) + decreaseStep(); + } + } + } + } + } + } + case RESTART -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + + if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + currentState = STATE.OPEN_CRAFT_PAGE; + } else if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(12); + } else { + click(45); + } + } + } + } + } + } + + private void increaseStep() { + click(50); + } + + private void decreaseStep() { + click(48); + } + + public void onKeyEvent(KeyEvent event) { + if(event.state() == State.PRESS && event.key() == Key.ESCAPE && active) { + stopCrafter(); + } + } + + public void startCrafter() { + if(!active) { + active = true; + if(!Minecraft.getMinecraft().player.inventory.getStackInSlot(0).isEmpty()) { + itemToCraft = Minecraft.getMinecraft().player.inventory.getStackInSlot(0).getItem(); + } + currentState = STATE.OPEN_RECEIPTS; + } + } + + public void stopCrafter() { + active = false; + itemToCraft = null; + currentState = STATE.OPEN_RECEIPTS; + } + + private void click(int slot) { + this.toSend.addLast(new Click(Minecraft.getMinecraft().player.openContainer.windowId, slot, 0, ClickType.QUICK_MOVE)); + ClickManager.getSharedInstance().queueClicks(QueueType.MEDIUM, this.toSend); + this.toSend.clear(); + } + + private int getSlotCountOfItemInInventory() { + int count = 0; + for (ItemStack itemStack : Minecraft.getMinecraft().player.inventory.mainInventory) { + if(itemStack.getItem().equals(itemToCraft)) { + count++; + } + } + return count; + } + + private int getSlotForItemToCraft() { + int slotCount = Minecraft.getMinecraft().player.openContainer.inventorySlots.size(); + for (int i = 54; i < slotCount; i++) { + ItemStack stack = Minecraft.getMinecraft().player.openContainer.getSlot(i).getStack(); + if(!stack.isEmpty()) { + if(stack.getItem().equals(itemToCraft)) { + return i; + } + } + } + return -1; + } + + private int getSlotForGoldIngot() { + for (int i = 10; i < 44; i++) { + ItemStack stack = Minecraft.getMinecraft().player.openContainer.getSlot(i).getStack(); + if(!stack.isEmpty()) { + if(stack.getItem().equals(Items.GOLD_INGOT)) { + if(stack.getCount() == 1) { + return i; + } + } + } + } + return -1; + } +} \ No newline at end of file diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/ItemShifter.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/ItemShifter.java index ddc5605..ca73a73 100644 --- a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/ItemShifter.java +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/ItemShifter.java @@ -133,7 +133,7 @@ public void tick(GameTickEvent event) { setTopToBottom(false); startShifting(); } - } else if (Key.ARROW_DOWN.isPressed() && ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.SLOW)) { + } else if (Key.ARROW_DOWN.isPressed() && ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.SLOW) && !Addon.getSharedInstance().getBridge().isCompActive()) { setTopToBottom(true); startShifting(); } diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/Simulator.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/Simulator.java new file mode 100644 index 0000000..762374d --- /dev/null +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/Simulator.java @@ -0,0 +1,83 @@ +package tmb.randy.tmbgriefergames.v1_12_2.util; + +import java.util.List; + +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; + +public class Simulator +{ + private int size; + private ItemStack[] slots; + private ItemStack held; + + public Simulator(List inventorySlots, int size) + { + this.size = size; + this.slots = new ItemStack[size]; + for (int i = 0; i < size; i++) + { + this.slots[i] = inventorySlots.get(i).getStack(); + } + } + + public ItemStack stackAt(int slot) + { + return this.slots[slot]; + } + + public void rightClick(int slot) + { + if (this.held != null) + return; + + if (this.slots == null) + return; + + ItemStack stack = this.slots[slot]; + int staying = stack.getCount() / 2; + this.held = new ItemStack(stack.getItem(), stack.getCount() - staying); + stack.setCount(staying); + if (stack.getCount() < 1) + this.slots[slot] = null; + } + + public void leftClick(int slot) + { + if (this.held != null) + { + if (this.slots[slot] != null) + return; + + this.slots[slot] = this.held; + this.held = null; + } + else { + if (this.slots[slot] == null) + return; + + this.held = this.slots[slot]; + this.slots[slot] = null; + } + } + + public void shiftClick(int slot) + { + int destination = this.findFirstFreeSlot(); + if (destination == 0) + return; + + this.slots[destination] = this.slots[slot]; + this.slots[slot] = null; + } + + private int findFirstFreeSlot() + { + for (int i = this.size - 36; i < this.size; i++) + { + if (this.slots[i] == null) + return i; + } + return 0; + } +} diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/VersionisedBridge.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/VersionisedBridge.java index ae4bc25..705a99b 100644 --- a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/VersionisedBridge.java +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/VersionisedBridge.java @@ -55,6 +55,9 @@ public class VersionisedBridge implements IBridge { private final ItemShifter itemShifter = new ItemShifter(); private final NatureBordersRenderer natureBordersRenderer = new NatureBordersRenderer(); private final AccountUnity accountUnity = new AccountUnity(); + private final AutoComp autoComp = new AutoComp(); + private final AutoCrafter autoCrafter = new AutoCrafter(); + private final AutoCrafterNew autoCrafterNew = new AutoCrafterNew(); private GuiScreen lastGui; @@ -112,7 +115,7 @@ public void onScoreboardRender(IngameOverlayElementRenderEvent event) { @Subscribe public void tick(GameTickEvent event) { - if(!Addon.isGG()) + if(!Laby.labyAPI().minecraft().isIngame() || Minecraft.getMinecraft().player == null || Minecraft.getMinecraft().world == null) return; GuiScreen currentScreen = Minecraft.getMinecraft().currentScreen; @@ -122,16 +125,21 @@ public void tick(GameTickEvent event) { || Minecraft.getMinecraft().currentScreen instanceof GuiCrafting || Minecraft.getMinecraft().currentScreen instanceof GuiInventory)) { ClickManager.getSharedInstance().clearAllQueues(); + autoComp.stopComp(); + ItemShifter.getSharedInsance().stopShifting(); } + onGuiOpenEvent(currentScreen); lastGui = currentScreen; } - plotSwitch.tick(event); + ClickManager.getSharedInstance().tick(event); + autoComp.onTickEvent(event); + autoCrafter.onTickEvent(event); autoHopper.tick(event); itemShifter.tick(event); - flyTimer.tick(event); - ClickManager.getSharedInstance().tick(event); + plotSwitch.tick(event); + autoCrafterNew.onTickEvent(event); } @Subscribe @@ -143,6 +151,9 @@ public void keyDown(KeyEvent event) { playerTracer.onKey(event); itemShifter.onKey(event); natureBordersRenderer.onKey(event); + autoComp.onKeyEvent(event); + autoCrafter.onKeyEvent(event); + autoCrafterNew.onKeyEvent(event); } @Subscribe @@ -170,6 +181,14 @@ public void startPlayerTracer(String name) { playerTracer.startTracer(name); } + public void onGuiOpenEvent(GuiScreen screen) { + ClickManager.getSharedInstance().clearAllQueues(); + if(screen == null) { + autoComp.stopComp(); + itemShifter.stopShifting(); + } + } + @Subscribe public void networkPayloadEvent(NetworkPayloadEvent event) { if(!Addon.isGG()) @@ -181,6 +200,8 @@ public void networkPayloadEvent(NetworkPayloadEvent event) { @Override public void cbChanged() { playerTracer.cbChanged(); + autoComp.stopComp(); + autoCrafterNew.stopCrafter(); } @Override @@ -207,4 +228,14 @@ public static boolean isChatGuiOpen() { return false; } + + @Override + public void startNewAutocrafter() { + autoCrafterNew.startCrafter(); + } + + @Override + public boolean isCompActive() { + return autoComp.isCompActive(); + } } diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/chat/ChatCleaner.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/chat/ChatCleaner.java index 68f1550..131cdc0 100644 --- a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/chat/ChatCleaner.java +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/chat/ChatCleaner.java @@ -27,6 +27,11 @@ public class ChatCleaner { public void messageReceived(ChatReceiveEvent event) { final Configuration configuration = Addon.getSharedInstance().configuration(); + String message = event.chatMessage().getPlainText(); + + if(message.equals("[Rezepte] Du hast nicht genug Material, um dieses Rezept herzustellen.")) { + event.setCancelled(true); + } if(!configuration.getChatConfig().getCleanChat().get()) @@ -34,7 +39,6 @@ public void messageReceived(ChatReceiveEvent event) { // "No friendhip requests" messages is sent before the GrieferGames Server Name is set. So it has to be handles before checking for GG. - String message = event.chatMessage().getPlainText(); if(message.equals("[Freunde] Du hast aktuell keine Freundschaftsanfragen.")) { event.setCancelled(true); } diff --git a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/click/ClickManager.java b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/click/ClickManager.java index b7e4058..bb3b12f 100644 --- a/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/click/ClickManager.java +++ b/game-runner/src/v1_12_2/java/tmb/randy/tmbgriefergames/v1_12_2/util/click/ClickManager.java @@ -4,6 +4,7 @@ import net.minecraft.client.Minecraft; import net.minecraft.inventory.ClickType; import net.minecraft.inventory.Container; +import net.minecraft.item.Item; import net.minecraft.util.EnumHand; import net.minecraft.world.World; import tmb.randy.tmbgriefergames.core.enums.QueueType; @@ -50,6 +51,21 @@ public void dropInventory() { } } + public void dropItemsFromInventory(Item item, boolean skipFirst) { + Container container = Minecraft.getMinecraft().player.openContainer; + int size = container.inventorySlots.size(); + for(int i = 9; i < size; i++) { + if(container.getSlot(i).getHasStack()) { + if(container.getSlot(i).getStack().getItem().equals(item)) { + if(skipFirst && i == 36) { + continue; + } + dropClick(i); + } + } + } + } + public void queueClicks(QueueType queueType, LinkedList queue) { queues.get(queueType).queueClicks(queue); diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoComp.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoComp.java new file mode 100644 index 0000000..be35b08 --- /dev/null +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoComp.java @@ -0,0 +1,249 @@ +package tmb.randy.tmbgriefergames.v1_8_9.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.labymod.api.util.I18n; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.GuiScreen; +import net.minecraft.client.gui.inventory.GuiChest; +import net.minecraft.client.gui.inventory.GuiCrafting; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.CompressorState; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.Click; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.ClickManager; +import java.util.Arrays; +import java.util.LinkedList; +import java.util.List; + +public class AutoComp { + + private int counter = 0; + private CompressorState compState = CompressorState.NONE; + private final LinkedList toSend = new LinkedList<>(); + private boolean compActive = false; + private final List list1 = Arrays.asList(CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5); + private final List list2 = Arrays.asList(CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1, CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS1 , CompressorState.COMPRESS1, CompressorState.COMPRESS2, CompressorState.COMPRESS3, CompressorState.COMPRESS4, CompressorState.COMPRESS5, CompressorState.COMPRESS6); + + private final List> lists = Arrays.asList(list1, list2); + + private int currentList = 0; + private int currentEntry = 0; + + public void onKeyEvent(KeyEvent event) { + if(event.state() == State.PRESS) { + if (isCompActive() && Minecraft.getMinecraft().thePlayer.openContainer != null) { + + if(Minecraft.getMinecraft().thePlayer.openContainer instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equals("§6Item-Komprimierung")) { + if (event.key() == Key.ARROW_UP) { + changeList(true); + } else if (event.key() == Key.ARROW_DOWN) { + changeList(false); + } + } + } + } else { + if ((event.key() == Key.ARROW_UP || event.key() == Key.ARROW_LEFT || event.key() == Key.ARROW_RIGHT) && Key.ARROW_UP.isPressed() && Key.ARROW_LEFT.isPressed() && Key.ARROW_RIGHT.isPressed() && !isGUIOpen()) { + startComp(); + } + } + } + } + + + public void startComp() { + if(Minecraft.getMinecraft().theWorld == null || Minecraft.getMinecraft().thePlayer == null) { + return; + } + + compState = CompressorState.WAITING_FOR_MENU1; + Minecraft.getMinecraft().thePlayer.sendChatMessage("/rezepte"); + compActive = true; + } + + public void stopComp() { + compState = CompressorState.NONE; + currentList = 0; + currentEntry = 0; + compActive = false; + } + + public void onTickEvent(GameTickEvent event) { + + if(compState == CompressorState.NONE) { + return; + } + + counter++; + + if(counter >= 8) { + counter = 0; + } else { + return; + } + + Container cont = Minecraft.getMinecraft().thePlayer.openContainer; + if(cont instanceof ContainerChest chest) { + + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien") && compState == CompressorState.WAITING_FOR_MENU1) { + compState = CompressorState.WAITING_FOR_MENU2; + click(11); + + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung-Bauanleitung")) { + compState = CompressorState.COMPRESS1; + click(81); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung")) { + ItemStack pageIndicator = chest.getSlot(49).getStack(); + if(Item.getIdFromItem(pageIndicator.getItem()) == 397) { + String page = pageIndicator.getDisplayName(); + + int direction = getClickDirection(page); + + if(direction == -1) { + click(48); + } else if(direction == 0) { + click(52); + if(currentEntry >= lists.get(currentList).size() - 1) { + currentEntry = 0; + } else { + currentEntry++; + } + } else if(direction == 1) { + click(50); + } + } + } + } + } + + private int getClickDirection(String current) { + switch (current) { + case "§6Komprimierungsstufe 1": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1: + return 0; + case COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 2": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1: + return -1; + case COMPRESS2: + return 0; + case COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 3": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2: + return -1; + case COMPRESS3: + return 0; + case COMPRESS4, COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 4": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3: + return -1; + case COMPRESS4: + return 0; + case COMPRESS5, COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 5": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4: + return -1; + case COMPRESS5: + return 0; + case COMPRESS6: + return 1; + default: + break; + } + break; + case "§6Komprimierungsstufe 6": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5: + return -1; + case COMPRESS6: + return 0; + default: + break; + } + break; + case "§6Komprimierungsstufe 7": + switch (lists.get(currentList).get(currentEntry)) { + case COMPRESS1, COMPRESS2, COMPRESS3, COMPRESS4, COMPRESS5, COMPRESS6: + return -1; + default: + break; + } + break; + } + + return 0; + } + + public void changeList(boolean increase) { + + if((currentList >= lists.size()-1 && increase) || (currentList <= 0 && !increase)) { + return; + } + + counter = 0; + currentEntry = 0; + + if(increase) { + currentList++; + } else { + currentList--; + } + + Addon.getSharedInstance().displayNotification( + I18n.getTranslation("tmbgriefergames.autoComp.list") + (currentList + 1)); + } + + private void click(int slot) { + this.toSend.addLast(new Click(Minecraft.getMinecraft().thePlayer.openContainer.windowId, slot, 0, 1)); + ClickManager.getSharedInstance().queueClicks(QueueType.MEDIUM, this.toSend); + this.toSend.clear(); + } + + private boolean isGUIOpen() { + GuiScreen currentScreen = Minecraft.getMinecraft().currentScreen; + + // Check if a GUI is open and if it is a chest GUI + return currentScreen instanceof GuiChest || currentScreen instanceof GuiInventory + || currentScreen instanceof GuiCrafting; + } + + public boolean isCompActive() { + return compActive; + } +} diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafter.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafter.java new file mode 100644 index 0000000..a75b5bc --- /dev/null +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafter.java @@ -0,0 +1,332 @@ +package tmb.randy.tmbgriefergames.v1_8_9.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.labymod.api.util.I18n; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiCrafting; +import net.minecraft.inventory.ContainerWorkbench; +import net.minecraft.inventory.Slot; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import org.apache.commons.lang3.ArrayUtils; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.Click; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.ClickManager; +import java.util.HashMap; +import java.util.LinkedList; + +public class AutoCrafter +{ + private ContainerWorkbench inv; + private int[] stored; + private int[] meta; + private String[] names; + private String output; + private Item outputItem; + private LinkedList toSend; + + private Simulator simulator; + private boolean endlessModeToggle = false; + + public AutoCrafter() + { + this.stored = new int[9]; + this.meta = new int[9]; + this.names = new String[9]; + this.output = ""; + this.toSend = new LinkedList<>(); + } + + + public void onKeyEvent(KeyEvent event) { + + if(Minecraft.getMinecraft().thePlayer != null && Minecraft.getMinecraft().thePlayer.openContainer != null && Minecraft.getMinecraft().currentScreen instanceof GuiCrafting) { + if(event.key() == Key.ENTER) { + if(Key.L_SHIFT.isPressed()) { + storeCrafting(); + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.recipeSaved")); + } else if(Addon.getSharedInstance().configuration().getAutoCrafterConfig().getEndlessMode().get() && event.state() == State.PRESS) { + this.setEndlessModeToggle(!endlessModeToggle); + } else if(!Addon.getSharedInstance().configuration().getAutoCrafterConfig().getEndlessMode().get() && ClickManager.getSharedInstance().isClickQueueEmpty(getCraftingSpeed())) { + craft(); + } + } + } + } + + public void onTickEvent(GameTickEvent event) { + if(endlessModeToggle && ClickManager.getSharedInstance().isClickQueueEmpty(getCraftingSpeed())) { + craft(); + } + } + + public void storeCrafting() + { + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().thePlayer.openContainer; + + if (!(this.inv.inventorySlots.get(0)).getHasStack()) + { + return; + } + ItemStack result = (this.inv.inventorySlots.get(0)).getStack(); + for (int i = 0; i < 9; i++) + { + if (this.inv.inventorySlots.get(i+1) != null) + { + ItemStack stack = (this.inv.inventorySlots.get(i+1)).getStack(); + if (stack != null) { + this.stored[i] = Item.getIdFromItem(stack.getItem()); + this.meta[i] = stack.getItemDamage(); + this.names[i] = stack.getDisplayName(); + } else { + this.stored[i] = 0; + this.meta[i] = 0; + this.names[i] = ""; + } + } + } + this.output = result.getDisplayName(); + this.outputItem = result.getItem(); + } + + public void craft() + { + if(!(Minecraft.getMinecraft().thePlayer.openContainer instanceof ContainerWorkbench)) { + return; + } + + this.toSend.clear(); + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().thePlayer.openContainer; + + int n = 0; + for (int i = 0; i < 9; i++) n += this.stored[i]; + if (n == 0) return; + + this.depositHeld(); + + this.simulator = new Simulator(this.inv.inventorySlots, 46); + + dropItems(); + this.simulator = new Simulator(this.inv.inventorySlots, 46); + + + if (!this.checkMaterials()) + return; + + + for (int i = 0; i < 9; i++) { + ItemStack stack = this.simulator.stackAt(i+1); + if (stack != null) { + int currID = Item.getIdFromItem(stack.getItem()); + int currMeta = stack.getItemDamage(); + String name = stack.getDisplayName(); + if (currID == stored[i] && currMeta == meta[i] && name.equals(names[i])) + continue; + else if (stored[i] == 0) + { + this.shiftClick(i+1); + continue; + } + else + this.shiftClick(i+1); + } + + if (stored[i] == 0) + continue; + boolean found = false; + for (int j = 45; j >= 10; j--) + { + ItemStack curr = this.simulator.stackAt(j); + + if(curr == null) + continue; + + String name = curr.getDisplayName(); + + boolean isFullStack = curr.stackSize == curr.getMaxStackSize() || !Addon.getSharedInstance().configuration().getAutoCrafterConfig().getOnlyFullStacks().get(); + if (curr != null && Item.getIdFromItem(curr.getItem()) == stored[i] && curr.getItemDamage() == meta[i] && name.equals(names[i]) && isFullStack) { + this.click(j); + this.click(i+1); + found = true; + break; + } + } + if (!found) + { + int amount = 0; + int slot = -1; + for (int j = 1; j <=9; j++) + { + ItemStack curr = this.simulator.stackAt(j); + + if (curr != null && Item.getIdFromItem(curr.getItem()) == stored[i] && curr.getItemDamage() == meta[i] && curr.stackSize > amount) + { + String name = curr.getDisplayName(); + if(name.equals(names.equals(names[i]))) { + amount = curr.stackSize; + slot = j; + found = true; + } + } + } + if (found) + { + this.rightClick(slot); + this.click(i+1); + } + if (!found) + { + ItemStack displayStack = new ItemStack(Item.getItemById(stored[i])); + displayStack.setItemDamage(meta[i]); + this.sendQueue(); + return; + } + } + } + + this.shiftClick(0); + this.sendQueue(); + + + } + + private void depositHeld() { + for (int i = 10; i < 46; i++) { + if (!((Slot)this.inv.inventorySlots.get(i)).getHasStack()) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, i, 0, 0, Minecraft.getMinecraft().thePlayer); + return; + } + } + + + for (int i = 1; i < 10; i++) { + if (!((Slot)this.inv.inventorySlots.get(i)).getHasStack()) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, + i, 0, 0, Minecraft.getMinecraft().thePlayer); + return; + } + } + + + for (int i = 10; i < 46; i++) { + if (ArrayUtils.contains(stored, Item.getIdFromItem(this.inv.inventorySlots.get(i).getStack().getItem()))) + { + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, i, 0, 0, Minecraft.getMinecraft().thePlayer); + Minecraft.getMinecraft().playerController.windowClick(this.inv.windowId, -999, 0, 0, Minecraft.getMinecraft().thePlayer); + return; + } + } + + + } + + private boolean checkMaterials() + { + HashMap needed = new HashMap(); + for (int i = 0; i < 9; i++) { + if (this.stored[i] != 0) { + Integer count = needed.get(stored[i] + ":" + meta[i]); + if (count == null) + needed.put(stored[i] + ":" + meta[i], 1); + else + needed.put(stored[i] + ":" + meta[i], count + 1); + } + } + for (int i = 1; i <= 45; i++) { + this.inv = (ContainerWorkbench)Minecraft.getMinecraft().thePlayer.openContainer; + if (this.simulator.stackAt(i) == null) + continue; + ItemStack stack = this.simulator.stackAt(i); + if (stack == null) + continue; + String item = Item.getIdFromItem(stack.getItem()) + ":" + stack.getItemDamage(); + Integer count = needed.get(item); + if (count == null) + continue; + else + { + if (stack.stackSize >= count) + needed.remove(item); + else + needed.put(item, count - stack.stackSize); + } + if (needed.size() == 0) + break; + } + + if (needed.size() > 0) { + String item = needed.keySet().iterator().next(); + ItemStack displayStack = new ItemStack(Item.getItemById(Integer.parseInt(item.split(":")[0]))); + displayStack.setItemDamage(Integer.parseInt(item.split(":")[1])); + this.toSend.clear(); + for (int k = 1; k < 10; k++) + if (this.simulator.stackAt(k) != null) + this.shiftClick(k); + this.sendQueue(); + return false; + } + return true; + } + + private void shiftClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, 1)); + this.simulator.shiftClick(slot); + } + + private void dropItems() { + + if(Addon.getSharedInstance().configuration().getAutoCrafterConfig().getAutoDrop().get()) { + for (int j = 10; j <= 45; j++) { + ItemStack curr = this.simulator.stackAt(j); + + if(curr == null) + continue; + + Item currentItem = curr.getItem(); + + if (curr.getDisplayName().equals(output) && currentItem.equals(outputItem)) { + dropClick(j); + } + } + } + } + + private void dropClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, 0)); + this.toSend.addLast(new Click(this.inv.windowId, -999, 0, 0)); + } + + private void click(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 0, 0)); + this.simulator.leftClick(slot); + } + + private void rightClick(int slot) { + this.toSend.addLast(new Click(this.inv.windowId, slot, 1, 0)); + this.simulator.rightClick(slot); + } + + private void sendQueue() { + ClickManager.getSharedInstance().queueClicks(getCraftingSpeed(), toSend); + this.toSend.clear(); + } + + private void setEndlessModeToggle(boolean value) { + endlessModeToggle = value; + if(value) { + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.active")); + } else { + Addon.getSharedInstance().displayNotification(I18n.getTranslation("tmbgriefergames.autoCrafter.inactive")); + } + } + + private QueueType getCraftingSpeed() { + return Addon.getSharedInstance().configuration().getAutoCrafterConfig().getAutoCraftSpeed().get(); + } +} \ No newline at end of file diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafterNew.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafterNew.java new file mode 100644 index 0000000..34d918a --- /dev/null +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/AutoCrafterNew.java @@ -0,0 +1,318 @@ +package tmb.randy.tmbgriefergames.v1_8_9.util; + +import net.labymod.api.client.gui.screen.key.Key; +import net.labymod.api.event.Phase; +import net.labymod.api.event.client.input.KeyEvent; +import net.labymod.api.event.client.input.KeyEvent.State; +import net.labymod.api.event.client.lifecycle.GameTickEvent; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.inventory.GuiInventory; +import net.minecraft.init.Items; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.ContainerChest; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import tmb.randy.tmbgriefergames.core.Addon; +import tmb.randy.tmbgriefergames.core.enums.QueueType; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.Click; +import tmb.randy.tmbgriefergames.v1_8_9.util.click.ClickManager; +import java.util.LinkedList; + +public class AutoCrafterNew { + + private enum STATE { + OPEN_RECEIPTS, OPEN_CRAFT_PAGE, CRAFT, + OPEN_INVENTORY, DROP_ITEMS, + GO_BACK, OPEN_COMP, COMP1, COMP2, COMP3, COMP4, COMP5, COMP6, RESTART + } + + private int cooldown; + private final LinkedList toSend = new LinkedList<>(); + private Item itemToCraft; + private STATE currentState = STATE.OPEN_RECEIPTS; + private boolean active; + + public void onTickEvent(GameTickEvent event) { + if(Minecraft.getMinecraft().theWorld == null && active) { + stopCrafter(); + return; + } + + if(event.phase() == Phase.PRE && active) { + Container cont = Minecraft.getMinecraft().thePlayer.openContainer; + + switch (currentState) { + case OPEN_RECEIPTS -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if (inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(12); + } else if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + currentState = STATE.OPEN_CRAFT_PAGE; + } + } else { + Minecraft.getMinecraft().thePlayer.sendChatMessage("/rezepte"); + } + } + case OPEN_CRAFT_PAGE -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + if(itemToCraft != null) { + if(itemToCraft.equals(Items.gold_ingot)) { + int slot = getSlotForGoldIngot(); + if(slot > 0) { + click(slot); + } else { + click(53); + } + } else { + int slot = getSlotForItemToCraft(); + if(slot >= 54) { + click(slot); + } + } + } + } else if (inv.getName().equalsIgnoreCase("§6Vanilla Bauanleitung")) { + currentState = STATE.CRAFT; + } + } + } + case CRAFT -> { + if(itemToCraft == null) { + itemToCraft = Minecraft.getMinecraft().thePlayer.openContainer.getSlot(25).getStack().getItem(); + } + + if(getSlotCountOfItemInInventory() >= 27) { + switch (Addon.getSharedInstance().configuration().getAutoCrafterConfig().getFinalAction().get()) { + case COMP -> { + currentState = STATE.GO_BACK; + } + case DROP -> { + Minecraft.getMinecraft().thePlayer.closeScreen(); + currentState = STATE.OPEN_INVENTORY; + } + } + } else { + if(cooldown < 6) { + cooldown++; + return; + } + + click(52); + cooldown = 0; + + } + } + case OPEN_INVENTORY -> { + if(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) { + currentState = STATE.DROP_ITEMS; + } else { + Minecraft.getMinecraft().displayGuiScreen(new GuiInventory(Minecraft.getMinecraft().thePlayer)); + } + } + case DROP_ITEMS -> { + if(Minecraft.getMinecraft().currentScreen instanceof GuiInventory) { + if(ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.MEDIUM)) { + if(getSlotCountOfItemInInventory() <= 1) { + Minecraft.getMinecraft().thePlayer.closeScreen(); + currentState = STATE.OPEN_RECEIPTS; + } else { + ClickManager.getSharedInstance().dropItemsFromInventory(itemToCraft, true); + } + } + } + } + case GO_BACK -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Vanilla Bauanleitung") || inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + if(itemToCraft != null) { + click(45); + } + } else if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + currentState = STATE.OPEN_COMP; + } + } + } + case OPEN_COMP -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(11); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung-Bauanleitung")) { + click(81); + } else if(inv.getName().equalsIgnoreCase("§6Item-Komprimierung")) { + currentState = STATE.COMP1; + } + } + } + case COMP1, COMP2, COMP3, COMP4, COMP5, COMP6 -> { + if(ClickManager.getSharedInstance().isClickQueueEmpty(QueueType.MEDIUM)) { + if(cont instanceof ContainerChest chest) { + + if(Minecraft.getMinecraft().thePlayer.openContainer.getSlot(49).getStack() == null) + break; + + String headName = Minecraft.getMinecraft().thePlayer.openContainer.getSlot(49).getStack().getDisplayName(); + if(headName.contains("§6Komprimierungsstufe")) { + int step = Integer.parseInt(headName.replace("§6Komprimierungsstufe ", "")); + + switch (currentState) { + case COMP1 -> { + if(step > 1) + decreaseStep(); + else { + currentState = STATE.COMP2; + click(52); + } + } + case COMP2 -> { + if(step == 2) { + currentState = STATE.COMP3; + click(52); + } + else if (step < 2) + increaseStep(); + else if(step > 2) + decreaseStep(); + } + case COMP3 -> { + if(step == 3) { + currentState = STATE.COMP4; + click(52); + } + else if (step < 3) + increaseStep(); + else if(step > 3) + decreaseStep(); + } + case COMP4 -> { + if(step == 4) { + currentState = STATE.COMP5; + click(52); + } + else if (step < 4) + increaseStep(); + else if(step > 4) + decreaseStep(); + } + case COMP5 -> { + if(step == 5) { + currentState = STATE.COMP6; + click(52); + } + else if (step < 5) + increaseStep(); + else if(step > 5) + decreaseStep(); + } + case COMP6 -> { + if(step == 6) { + click(52); + currentState = STATE.RESTART; + } + else if (step < 6) + increaseStep(); + else if(step > 6) + decreaseStep(); + } + } + } + } + } + } + case RESTART -> { + if(cont instanceof ContainerChest chest) { + IInventory inv = chest.getLowerChestInventory(); + + if(inv.getName().equalsIgnoreCase("§6Minecraft-Rezepte")) { + currentState = STATE.OPEN_CRAFT_PAGE; + } else if(inv.getName().equalsIgnoreCase("§6Custom-Kategorien")) { + click(12); + } else { + click(45); + } + } + } + } + } + } + + private void increaseStep() { + click(50); + } + + private void decreaseStep() { + click(48); + } + + public void onKeyEvent(KeyEvent event) { + if(event.state() == State.PRESS && event.key() == Key.ESCAPE && active) { + stopCrafter(); + } + } + + public void startCrafter() { + if(!active) { + active = true; + if(Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(0) != null) { + itemToCraft = Minecraft.getMinecraft().thePlayer.inventory.getStackInSlot(0).getItem(); + } + currentState = STATE.OPEN_RECEIPTS; + } + } + + public void stopCrafter() { + active = false; + itemToCraft = null; + currentState = STATE.OPEN_RECEIPTS; + } + + private void click(int slot) { + this.toSend.addLast(new Click(Minecraft.getMinecraft().thePlayer.openContainer.windowId, slot, 0, 1)); + ClickManager.getSharedInstance().queueClicks(QueueType.MEDIUM, this.toSend); + this.toSend.clear(); + } + + private int getSlotCountOfItemInInventory() { + int count = 0; + for (ItemStack itemStack : Minecraft.getMinecraft().thePlayer.inventory.mainInventory) { + if(itemStack == null) + continue; + + if(itemStack.getItem().equals(itemToCraft)) { + count++; + } + } + return count; + } + + private int getSlotForItemToCraft() { + int slotCount = Minecraft.getMinecraft().thePlayer.openContainer.inventorySlots.size(); + for (int i = 54; i < slotCount; i++) { + ItemStack stack = Minecraft.getMinecraft().thePlayer.openContainer.getSlot(i).getStack(); + if(stack != null) { + if(stack.getItem().equals(itemToCraft)) { + return i; + } + } + } + return -1; + } + + private int getSlotForGoldIngot() { + for (int i = 10; i < 44; i++) { + ItemStack stack = Minecraft.getMinecraft().thePlayer.openContainer.getSlot(i).getStack(); + if(stack != null) { + if(stack.getItem().equals(Items.gold_ingot)) { + if(stack.stackSize == 1) { + return i; + } + } + } + } + return -1; + } +} \ No newline at end of file diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/ItemShifter.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/ItemShifter.java index 2efc6b7..25eb7ce 100644 --- a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/ItemShifter.java +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/ItemShifter.java @@ -20,15 +20,19 @@ public class ItemShifter { - private String itemToMove = ""; - private int idToMove = 0; - + private Item itemToMove; private ContainerChest currentChest; private boolean topToBottom = true; private final LinkedList toSend = new LinkedList<>(); - private final int[] spawnerMenuItemIDs = new int[] {160, 384, 347, 76, 54}; + private final Item[] spawnerMenuItems = new Item[] { + Item.getItemById(160), + Item.getItemById(384), + Item.getItemById(347), + Item.getItemById(76), + Item.getItemById(54) + }; private static ItemShifter sharedInstance; @@ -40,8 +44,7 @@ public static ItemShifter getSharedInsance() { } public void stopShifting() { - itemToMove = ""; - idToMove = 0; + itemToMove = null; currentChest = null; topToBottom = true; } @@ -49,7 +52,10 @@ public void stopShifting() { public void startShifting() { this.currentChest = (ContainerChest) Minecraft.getMinecraft().thePlayer.openContainer; - this.itemToMove = Minecraft.getMinecraft().thePlayer.getHeldItem().getDisplayName(); + if(Minecraft.getMinecraft().thePlayer.getHeldItem() == null) + this.itemToMove = null; + else + this.itemToMove = Minecraft.getMinecraft().thePlayer.getHeldItem().getItem(); int containerSize = currentChest.inventorySlots.size(); @@ -90,12 +96,15 @@ public void startShifting() { Slot fromSlot = this.currentChest.inventorySlots.get(from); - int currentItemID = Item.getIdFromItem(fromSlot.getStack().getItem()); + if(fromSlot.getStack() == null) + continue; + + Item currentItem = fromSlot.getStack().getItem(); String currentItemName = fromSlot.getStack().getDisplayName(); if(fromSlot.getHasStack() && availableSlots > 0) { - if(!(isSpawner && ArrayUtils.contains(spawnerMenuItemIDs, currentItemID))) { - if(this.idToMove == 0 || (this.idToMove == currentItemID && this.itemToMove.equals(currentItemName))) { + if(!(isSpawner && ArrayUtils.contains(spawnerMenuItems, currentItem))) { + if(itemToMove == null || (itemToMove.equals(currentItem) && this.itemToMove.equals(currentItemName))) { this.shiftClick(from); availableSlots -= 1; } @@ -103,8 +112,7 @@ public void startShifting() { } } - this.idToMove = 0; - this.itemToMove = ""; + this.itemToMove = null; this.sendQueue(); } @@ -176,14 +184,15 @@ private void depositHeld(int fromMin, int fromMax, int destMin, int destMax) { Minecraft.getMinecraft().playerController.windowClick(this.currentChest.windowId, slot, 0, 0, Minecraft.getMinecraft().thePlayer); ItemStack stack = (this.currentChest.inventorySlots.get(slot)).getStack(); - this.idToMove = Item.getIdFromItem(stack.getItem()); - this.itemToMove = stack.getDisplayName(); - + if(stack == null) { + itemToMove = null; + } else { + this.itemToMove = stack.getItem(); + } return; } } - //Find empty slot in Destination for(int slot = fromMin; slot <= fromMax; slot++) { if (!(this.currentChest.inventorySlots.get(slot)).getHasStack()) @@ -191,8 +200,10 @@ private void depositHeld(int fromMin, int fromMax, int destMin, int destMax) { Minecraft.getMinecraft().playerController.windowClick(this.currentChest.windowId, slot, 0, 0, Minecraft.getMinecraft().thePlayer); ItemStack stack = (this.currentChest.inventorySlots.get(slot)).getStack(); - this.idToMove = Item.getIdFromItem(stack.getItem()); - this.itemToMove = stack.getDisplayName(); + if(stack == null) + return; + + this.itemToMove = stack.getItem(); return; } diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/Simulator.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/Simulator.java new file mode 100644 index 0000000..e6dfbd3 --- /dev/null +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/Simulator.java @@ -0,0 +1,79 @@ +package tmb.randy.tmbgriefergames.v1_8_9.util; + +import net.minecraft.inventory.Slot; +import net.minecraft.item.ItemStack; +import java.util.List; + +public class Simulator +{ + private int size; + private ItemStack[] slots; + private ItemStack held; + + public Simulator(List inventorySlots, int size) + { + this.size = size; + this.slots = new ItemStack[size]; + for (int i = 0; i < size; i++) + { + this.slots[i] = inventorySlots.get(i).getStack(); + } + } + + public ItemStack stackAt(int slot) + { + return this.slots[slot]; + } + + + public void rightClick(int slot) { + if (this.held != null) + return; + + if (this.slots == null) + return; + + ItemStack stack = this.slots[slot]; + int staying = stack.stackSize / 2; + this.held = new ItemStack(stack.getItem(), stack.stackSize - staying); + stack.stackSize = staying; + if (stack.stackSize < 1) + this.slots[slot] = null; + } + + public void leftClick(int slot) + { + if (this.held != null) { + if (this.slots[slot] != null) + return; + + this.slots[slot] = this.held; + this.held = null; + } else { + if (this.slots[slot] == null) + return; + + this.held = this.slots[slot]; + this.slots[slot] = null; + } + } + + public void shiftClick(int slot) { + int destination = this.findFirstFreeSlot(); + if (destination == 0) + return; + + this.slots[destination] = this.slots[slot]; + this.slots[slot] = null; + } + + private int findFirstFreeSlot() + { + for (int i = this.size - 36; i < this.size; i++) + { + if (this.slots[i] == null) + return i; + } + return 0; + } +} diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/VersionisedBridge.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/VersionisedBridge.java index b02ed61..0201ec7 100644 --- a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/VersionisedBridge.java +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/VersionisedBridge.java @@ -54,6 +54,9 @@ public class VersionisedBridge implements IBridge { private final ItemShifter itemShifter = new ItemShifter(); private final NatureBordersRenderer natureBordersRenderer = new NatureBordersRenderer(); private final AccountUnity accountUnity = new AccountUnity(); + private final AutoCrafterNew autoCrafterNew = new AutoCrafterNew(); + private final AutoCrafter autoCrafter = new AutoCrafter(); + private final AutoComp autoComp = new AutoComp(); private GuiScreen lastGui; @@ -111,7 +114,7 @@ public void onScoreboardRender(IngameOverlayElementRenderEvent event) { @Subscribe public void tick(GameTickEvent event) { - if(!Addon.isGG()) + if(!Laby.labyAPI().minecraft().isIngame() || Minecraft.getMinecraft().thePlayer == null || Minecraft.getMinecraft().theWorld == null) return; GuiScreen currentScreen = Minecraft.getMinecraft().currentScreen; @@ -121,16 +124,21 @@ public void tick(GameTickEvent event) { || Minecraft.getMinecraft().currentScreen instanceof GuiCrafting || Minecraft.getMinecraft().currentScreen instanceof GuiInventory)) { ClickManager.getSharedInstance().clearAllQueues(); + autoComp.stopComp(); + ItemShifter.getSharedInsance().stopShifting(); } + onGuiOpenEvent(currentScreen); lastGui = currentScreen; } - plotSwitch.tick(event); + ClickManager.getSharedInstance().tick(event); + autoComp.onTickEvent(event); + autoCrafter.onTickEvent(event); autoHopper.tick(event); itemShifter.tick(event); - flyTimer.tick(event); - ClickManager.getSharedInstance().tick(event); + plotSwitch.tick(event); + autoCrafterNew.onTickEvent(event); } @Subscribe @@ -142,6 +150,9 @@ public void keyDown(KeyEvent event) { playerTracer.onKey(event); itemShifter.onKey(event); natureBordersRenderer.onKey(event); + autoComp.onKeyEvent(event); + autoCrafter.onKeyEvent(event); + autoCrafterNew.onKeyEvent(event); } @Subscribe @@ -169,6 +180,14 @@ public void startPlayerTracer(String name) { playerTracer.startTracer(name); } + public void onGuiOpenEvent(GuiScreen screen) { + ClickManager.getSharedInstance().clearAllQueues(); + if(screen == null) { + autoComp.stopComp(); + itemShifter.stopShifting(); + } + } + @Subscribe public void networkPayloadEvent(NetworkPayloadEvent event) { if(!Addon.isGG()) @@ -180,6 +199,8 @@ public void networkPayloadEvent(NetworkPayloadEvent event) { @Override public void cbChanged() { playerTracer.cbChanged(); + autoComp.stopComp(); + autoCrafterNew.stopCrafter(); } @Override @@ -197,5 +218,15 @@ public String getItemRemoverValue() { return ItemClearTimerListener.getDisplayValue(); } + @Override + public void startNewAutocrafter() { + autoCrafterNew.startCrafter(); + } + + @Override + public boolean isCompActive() { + return autoComp.isCompActive(); + } + } diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/chat/ChatCleaner.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/chat/ChatCleaner.java index fc14b19..fee6d4a 100644 --- a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/chat/ChatCleaner.java +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/chat/ChatCleaner.java @@ -26,14 +26,18 @@ public class ChatCleaner { public void messageReceived(ChatReceiveEvent event) { final Configuration configuration = Addon.getSharedInstance().configuration(); + String message = event.chatMessage().getPlainText(); + if(message.equals("[Rezepte] Du hast nicht genug Material, um dieses Rezept herzustellen.")) { + event.setCancelled(true); + } if(!configuration.getChatConfig().getCleanChat().get()) return; // "No friendhip requests" messages is sent before the GrieferGames Server Name is set. So it has to be handles before checking for GG. - String message = event.chatMessage().getPlainText(); + if(message.equals("[Freunde] Du hast aktuell keine Freundschaftsanfragen.")) { event.setCancelled(true); } diff --git a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/click/ClickManager.java b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/click/ClickManager.java index 7955b3a..b9da342 100644 --- a/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/click/ClickManager.java +++ b/game-runner/src/v1_8_9/java/tmb/randy/tmbgriefergames/v1_8_9/util/click/ClickManager.java @@ -6,6 +6,7 @@ import net.labymod.api.event.client.lifecycle.GameTickEvent; import net.minecraft.client.Minecraft; import net.minecraft.inventory.Container; +import net.minecraft.item.Item; import net.minecraft.world.World; import tmb.randy.tmbgriefergames.core.enums.QueueType; @@ -48,6 +49,21 @@ public void dropInventory() { } } + public void dropItemsFromInventory(Item item, boolean skipFirst) { + Container container = Minecraft.getMinecraft().thePlayer.openContainer; + int size = container.inventorySlots.size(); + for(int i = 9; i < size; i++) { + if(container.getSlot(i).getHasStack()) { + if(container.getSlot(i).getStack().getItem().equals(item)) { + if(skipFirst && i == 36) { + continue; + } + dropClick(i); + } + } + } + } + public void queueClicks(QueueType queueType, LinkedList queue) { queues.get(queueType).queueClicks(queue); diff --git a/settings.gradle.kts b/settings.gradle.kts index d760404..3c2f335 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -1,7 +1,7 @@ rootProject.name = "griefergames-addon-by-tmb" pluginManagement { - val labyGradlePluginVersion = "0.3.29" + val labyGradlePluginVersion = "0.3.44" plugins { id("net.labymod.gradle") version (labyGradlePluginVersion) }