aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/listener/RenderListener.java19
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/ApiData.java84
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java112
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java332
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java305
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperChatLoader.java91
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperInventoryLoader.java175
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/repo/MinionHelperRepoLoader.java218
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/repo/MinionHelperRepoMinionLoader.java132
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/repo/RecipeBuilder.java75
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/render/MinionHelperOverlay.java400
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/render/MinionHelperOverlayHover.java240
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/render/MinionHelperTooltips.java91
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/render/renderables/OverviewLine.java25
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/render/renderables/OverviewText.java42
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/requirements/CollectionRequirement.java44
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/requirements/CustomRequirement.java33
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/requirements/MinionRequirement.java24
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/requirements/ReputationRequirement.java51
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/requirements/SlayerRequirement.java46
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/sources/CraftingSource.java35
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/sources/CustomSource.java33
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/sources/MinionSource.java23
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/sources/NpcSource.java47
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/util/MinionHelperPriceCalculation.java175
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/util/MinionHelperRequirementsManager.java129
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/MinionHelper.java45
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/SBInfo.java4
31 files changed, 3043 insertions, 1 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
index 09c910e9..301aec26 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
@@ -67,6 +67,7 @@ import io.github.moulberry.notenoughupdates.miscgui.CalendarOverlay;
import io.github.moulberry.notenoughupdates.miscgui.InventoryStorageSelector;
import io.github.moulberry.notenoughupdates.miscgui.SignCalculator;
import io.github.moulberry.notenoughupdates.miscgui.TrophyRewardOverlay;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperManager;
import io.github.moulberry.notenoughupdates.mixins.AccessorMinecraft;
import io.github.moulberry.notenoughupdates.options.NEUConfig;
import io.github.moulberry.notenoughupdates.overlays.EquipmentOverlay;
@@ -307,6 +308,7 @@ public class NotEnoughUpdates {
MinecraftForge.EVENT_BUS.register(AbiphoneWarning.getInstance());
MinecraftForge.EVENT_BUS.register(new BetterContainers());
MinecraftForge.EVENT_BUS.register(AuctionBINWarning.getInstance());
+ MinecraftForge.EVENT_BUS.register(MinionHelperManager.getInstance());
MinecraftForge.EVENT_BUS.register(navigation);
if (Minecraft.getMinecraft().getResourceManager() instanceof IReloadableResourceManager) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.java b/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.java
index bad9afe8..6036e796 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DevTestCommand.java
@@ -29,6 +29,7 @@ import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.Custom
import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.LocationChangeEvent;
import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.SpecialBlockZone;
import io.github.moulberry.notenoughupdates.miscgui.GuiPriceGraph;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperManager;
import io.github.moulberry.notenoughupdates.util.PronounDB;
import io.github.moulberry.notenoughupdates.util.SBInfo;
import io.github.moulberry.notenoughupdates.util.TabListUtils;
@@ -197,6 +198,9 @@ public class DevTestCommand extends ClientCommandBase {
double z = Math.floor(Minecraft.getMinecraft().thePlayer.posZ) + 0.5f;
Minecraft.getMinecraft().thePlayer.setPosition(x, Minecraft.getMinecraft().thePlayer.posY, z);
}
+ if (args.length >= 1 && args[0].equalsIgnoreCase("minion")) {
+ MinionHelperManager.getInstance().handleCommand(args);
+ }
if (args.length == 1 && args[0].equalsIgnoreCase("copytablist")) {
StringBuilder builder = new StringBuilder();
for (String name : TabListUtils.getTabList()) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/listener/RenderListener.java b/src/main/java/io/github/moulberry/notenoughupdates/listener/RenderListener.java
index 3ddb05f6..e465f3d3 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/listener/RenderListener.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/listener/RenderListener.java
@@ -50,6 +50,7 @@ import io.github.moulberry.notenoughupdates.miscgui.GuiItemRecipe;
import io.github.moulberry.notenoughupdates.miscgui.StorageOverlay;
import io.github.moulberry.notenoughupdates.miscgui.TradeWindow;
import io.github.moulberry.notenoughupdates.miscgui.TrophyRewardOverlay;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.MinionHelperManager;
import io.github.moulberry.notenoughupdates.miscgui.hex.GuiCustomHex;
import io.github.moulberry.notenoughupdates.mixins.AccessorGuiContainer;
import io.github.moulberry.notenoughupdates.options.NEUConfig;
@@ -536,6 +537,12 @@ public class RenderListener {
x += diffX;
}
}
+ if (MinionHelperManager.getInstance().inCraftedMinionsInventory()) {
+ int diffX = 172;
+ if (x > guiLeft + xSize && x < guiLeft + xSize + diffX + 5 && y > guiTop - 18 && y < guiTop + 128) {
+ x += diffX;
+ }
+ }
if (AuctionProfit.inAuctionPage()) {
if (x + 18 > guiLeft + xSize && x + 18 < guiLeft + xSize + 4 + 28 + 20 && y > guiTop - 180 &&
y < guiTop + 56) {
@@ -664,6 +671,12 @@ public class RenderListener {
x += diffX;
}
}
+ if (MinionHelperManager.getInstance().inCraftedMinionsInventory()) {
+ int diffX = 172;
+ if (x > guiLeft + xSize && x < guiLeft + xSize + diffX + 5 && y > guiTop - 18 && y < guiTop + 128) {
+ x += diffX;
+ }
+ }
if (AuctionProfit.inAuctionPage()) {
if (x + 18 > guiLeft + xSize && x + 18 < guiLeft + xSize + 4 + 28 + 20 && y > guiTop - 180 &&
y < guiTop + 56) {
@@ -1141,6 +1154,12 @@ public class RenderListener {
x += diffX;
}
}
+ if (MinionHelperManager.getInstance().inCraftedMinionsInventory()) {
+ int diffX = 172;
+ if (x > guiLeft + xSize && x < guiLeft + xSize + diffX + 5 && y > guiTop - 18 && y < guiTop + 128) {
+ x += diffX;
+ }
+ }
if (AuctionProfit.inAuctionPage()) {
if (x + 18 > guiLeft + xSize && x + 18 < guiLeft + xSize + 4 + 28 + 20 && y > guiTop - 180 &&
y < guiTop + 56) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/ApiData.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/ApiData.java
new file mode 100644
index 00000000..215c3fe7
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/ApiData.java
@@ -0,0 +1,84 @@
+/*
+ * Copyright (C) 2022 NotEnoughUpdates contributors
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.miscgui.minionhelper;
+
+import java.util.List;
+import java.util.Map;
+
+public class ApiData {
+
+ private final Map<String, Integer> highestCollectionTier;
+ private final Map<String, Integer> slayerTiers;
+ private final int magesReputation;
+ private final int barbariansReputation;
+ private final boolean collectionApiDisabled;
+ private final List<String> craftedMinions;
+ private int peltCount;
+
+ public ApiData(
+ Map<String, Integer> highestCollectionTier,
+ Map<String, Integer> slayerTiers,
+ int magesReputation,
+ int barbariansReputation,
+ boolean collectionApiDisabled,
+ List<String> craftedMinions,
+ int peltCount
+ ) {
+ this.highestCollectionTier = highestCollectionTier;
+ this.slayerTiers = slayerTiers;
+ this.magesReputation = magesReputation;
+ this.barbariansReputation = barbariansReputation;
+ this.collectionApiDisabled = collectionApiDisabled;
+ this.craftedMinions = craftedMinions;
+ this.peltCount = peltCount;
+ }
+
+ public Map<String, Integer> getHighestCollectionTier() {
+ return highestCollectionTier;
+ }
+
+ public Map<String, Integer> getSlayerTiers() {
+ return slayerTiers;
+ }
+
+ public int getMagesReputation() {
+ return magesReputation;
+ }
+
+ public int getBarbariansReputation() {
+ return barbariansReputation;
+ }
+
+ public boolean isCollectionApiDisabled() {
+ return collectionApiDisabled;
+ }
+
+ public List<String> getCraftedMinions() {
+ return craftedMinions;
+ }
+
+ public int getPeltCount() {
+ return peltCount;
+ }
+
+ public void setPeltCount(int peltCount) {
+ this.peltCount = peltCount;
+ }
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java
new file mode 100644
index 00000000..ba38b01d
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/Minion.java
@@ -0,0 +1,112 @@
+/*
+ * Copyright (C) 2022 NotEnoughUpdates contributors
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.miscgui.minionhelper;
+
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.render.renderables.OverviewLine;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.sources.CustomSource;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.sources.MinionSource;
+
+import java.util.ArrayList;
+import java.util.List;
+
+public class Minion extends OverviewLine {
+ private final String internalName;
+ private final int tier;
+ private String displayName;
+ private MinionSource minionSource;
+ private CustomSource customSource;
+ private Minion parent;
+ private final List<MinionRequirement> requirements = new ArrayList<>();
+
+ private boolean crafted = false;
+ private boolean meetRequirements = false;
+
+ public Minion(String internalName, int tier) {
+ this.internalName = internalName;
+ this.tier = tier;
+ }
+
+ public MinionSource getMinionSource() {
+ return minionSource;
+ }
+
+ public void setMinionSource(MinionSource minionSource) {
+ this.minionSource = minionSource;
+ }
+
+ public String getDisplayName() {
+ return displayName;
+ }
+
+ public void setDisplayName(String displayName) {
+ this.displayName = displayName;
+ }
+
+ public boolean isCrafted() {
+ return crafted;
+ }
+
+ public void setCrafted(boolean crafted) {
+ this.crafted = crafted;
+ }
+
+ public String getInternalName() {
+ return internalName;
+ }
+
+ public void setParent(Minion parent) {
+ this.parent = parent;
+ }
+
+ public Minion getParent() {
+ return parent;
+ }
+
+ public int getTier() {
+ return tier;
+ }
+
+ public List<MinionRequirement> getRequirements() {
+ return requirements;
+ }
+
+ public boolean doesMeetRequirements() {
+ return meetRequirements;
+ }
+
+ public void setMeetRequirements(boolean meetRequirements) {
+ this.meetRequirements = meetRequirements;
+ }
+
+ @Override
+ public void onClick() {
+ NotEnoughUpdates.INSTANCE.manager.displayGuiItemRecipe(internalName);
+ }
+
+ public void setCustomSource(CustomSource customSource) {
+ this.customSource = customSource;
+ }
+
+ public CustomSource getCustomSource() {
+ return customSource;
+ }
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java
new file mode 100644
index 00000000..f3c8a86a
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java
@@ -0,0 +1,332 @@
+/*
+ * Copyright (C) 2022 NotEnoughUpdates contributors
+ *
+ * This file is part of NotEnoughUpdates.
+ *
+ * NotEnoughUpdates is free software: you can redistribute it
+ * and/or modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation, either
+ * version 3 of the License, or (at your option) any later version.
+ *
+ * NotEnoughUpdates is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public License
+ * along with NotEnoughUpdates. If not, see <https://www.gnu.org/licenses/>.
+ */
+
+package io.github.moulberry.notenoughupdates.miscgui.minionhelper;
+
+import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.MinionHelperApiLoader;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.MinionHelperChatLoader;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.MinionHelperInventoryLoader;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.loaders.repo.MinionHelperRepoLoader;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.render.MinionHelperOverlay;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.render.MinionHelperTooltips;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.sources.CustomSource;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.sources.MinionSource;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.util.MinionHelperPriceCalculation;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.util.MinionHelperRequirementsManager;
+import io.github.moulberry.notenoughupdates.util.Utils;
+import net.minecraft.client.Minecraft;
+import net.minecraft.inventory.Container;
+import net.minecraft.inventory.ContainerChest;
+import net.minecraftforge.common.MinecraftForge;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+public class MinionHelperManager {
+ private static MinionHelperManager instance = null;
+ private final Map<String, Minion> minions = new HashMap<>();
+ private int needForNextSlot = -1;
+ private int localPelts = -1;
+
+ private final MinionHelperPriceCalculation priceCalculation = new MinionHelperPriceCalculation(this);
+ private final MinionHelperRequirementsManager requirementsManager = new MinionHelperRequirementsManager(this);
+ private final MinionHelperApiLoader api = new MinionHelperApiLoader(this);
+ private final MinionHelperRepoLoader repo = new MinionHelperRepoLoader(this);
+ private final MinionHelperOverlay overlay = new MinionHelperOverlay(this);
+ private final MinionHelperInventoryLoader inventoryLoader = new MinionHelperInventoryLoader(this);
+ private String debugPlayerUuid;
+ private String debugProfileName;
+ private int debugNeedForNextSlot = -1;
+
+ public static MinionHelperManager getInstance() {
+ if (instance == null) {
+ instance = new MinionHelperManager();
+ }
+ return instance;
+ }
+
+ private MinionHelperManager() {
+ MinecraftForge.EVENT_BUS.register(priceCalculation);
+ MinecraftForge.EVENT_BUS.register(api);
+ MinecraftForge.EVENT_BUS.register(repo);
+ MinecraftForge.EVENT_BUS.register(overlay);
+ MinecraftForge.EVENT_BUS.register(new MinionHelperTooltips(this));
+ MinecraftForge.EVENT_BUS.register(new MinionHelperChatLoader(this));
+ MinecraftForge.EVENT_BUS.register(inventoryLoader);
+ }
+
+ public boolean inCraftedMinionsInventory() {
+ if (!NotEnoughUpdates.INSTANCE.isOnSkyblock()) return false;
+
+ Minecraft minecraft = Minecraft.getMinecraft();
+ if (minecraft == null || minecraft.thePlayer == null) return false;
+
+ Container inventoryContainer = minecraft.thePlayer.openContainer;
+ if (!(inventoryContainer instanceof ContainerChest)) return false;
+ ContainerChest containerChest = (ContainerChest) inventoryContainer;
+ String name = containerChest.getLowerChestInventory().getDisplayName().getUnformattedText();
+ return name.equalsIgnoreCase("Crafted Minions");
+ }
+
+ public boolean notReady() {
+ return !repo.isReadyToUse() || !api.isReadyToUse();
+ }
+
+ public boolean isInvalidApiKey() {
+ return api.isInvalidApiKey();
+ }
+
+ public Minion getMinionById(String internalName) {
+ if (minions.containsKey(internalName)) {
+ return minions.get(internalName);
+ } else {
+ System.err.println("Cannot get minion for id '" + internalName + "'!");
+ return null;
+ }
+ }
+
+ public Minion getMinionByName(String displayName, int tier) {
+ for (Minion minion : minions.values()) {
+ if (displayName.equals(minion.getDisplayName())) {
+ if (minion.getTier() == tier) {
+ return minion;
+ }
+ }
+ }
+ System.err.println("Cannot get minion for display name '" + displayName + "'!");
+ return null;
+ }
+
+ public void createMinion(String internalName, int tier) {
+ minions.put(internalName, new Minion(internalName, tier));
+ }
+
+ public String formatInternalName(String minionName) {
+ return minionName.toUpperCase().replace(" ", "_");
+ }
+
+ private List<Minion> getChildren(Minion minion) {
+ List<Minion> list = new ArrayList<>();
+ for (Minion other : minions.values()) {
+ if (minion == other.getParent()) {
+ list.add(other);
+ list.addAll(getChildren(other));
+ break;
+ }
+ }
+ return list;
+ }
+
+ public void onProfileSwitch() {
+ for (Minion minion : minions.values()) {
+ minion.setCrafted(false);
+ minion.setMeetRequirements(false);
+ }
+
+ needForNextSlot = -1;
+ api.onProfileSwitch();
+ overlay.onProfileSwitch();
+ inventoryLoader.onProfileSwitch();
+ }
+
+ public void reloadData() {
+ requirementsManager.reloadRequirements();
+
+ ApiData apiData = api.getApiData();
+ if (apiData != null) {
+ for (String minion : apiData.getCraftedMinions()) {
+ setCrafted(getMinionById(minion));
+ }
+ }
+ }
+
+ public void setCrafted(Minion minion) {
+ minion.setCrafted(true);
+
+ if (minion.getCustomSource() != null) {
+ minion.setMeetRequirements(true);
+
+ for (Minion child : getChildren(minion)) {
+ child.setMeetRequirements(true);
+ }
+ }
+ }
+
+ public void handleCommand(String[] args) {
+ if (!NotEnoughUpdates.INSTANCE.config.minionHelper.gui) {
+ Utils.addChatMessage("§e[NEU] Minion Helper gui is disabled!");
+ return;
+ }
+
+ if (args.length > 1) {
+ String parameter = args[1];
+
+ if (parameter.equals("debugplayer")) {
+ if (args.length == 3) {
+ if (args[2].equals("reset")) {
+ Utils.addChatMessage("§e[NEU] Minion debug player reset.");
+ setDebugPlayer(null, null, -1);
+ return;
+ }
+ }
+ if (args.length < 4) {
+ Utils.addChatMessage("§c[NEU] Usage: /neudevtest minion " +
+ "setplayer <player-uuid> <player-profile-name> [need-for-next-slot]");
+ return;
+ }
+ String playerUuid = args[2];
+ String playerProfileName = args[3];
+ int need = args.length == 5 ? Integer.parseInt(args[4]) : -1;
+ setDebugPlayer(playerUuid, playerProfileName, need);
+ Utils.addChatMessage("§e[NEU] Minion debug player set.");
+ return;
+ }
+
+ if (args.length == 2) {
+ if (parameter.equals("clearminion")) {
+ minions.clear();
+ Utils.addChatMessage("minion map cleared");
+ return;
+ }
+ if (parameter.equals("reloadrepo")) {
+ repo.setDirty();
+ Utils.addChatMessage("repo reload requested");
+ return;
+ }
+ if (parameter.equals("reloadapi")) {
+ api.resetData();
+ api.setDirty();
+ Utils.addChatMessage("api reload requested");
+ return;
+ }
+ if (parameter.equals("clearapi")) {
+ api.resetData();
+ Utils.addChatMessage("api data cleared");
+ return;
+ }
+ }
+
+ if (args.length == 3) {
+ if (parameter.equals("maxperpage")) {
+ api.resetData();
+ int maxPerPage = Integer.parseInt(args[2]);
+ Utils.addChatMessage("set max per page to " + maxPerPage);
+ overlay.setMaxPerPage(maxPerPage);
+ return;
+ }
+ }
+
+ if (args.length == 4) {
+ if (parameter.equals("arrowpos")) {
+ int x = Integer.parseInt(args[2]);
+ int y = Integer.parseInt(args[3]);
+ Utils.addChatMessage("set page pos to " + x + ";" + y);
+ overlay.setTopLeft(new int[]{x, y});
+ return;
+ }
+ }
+ }
+
+ Utils.addChatMessage("");
+ Utils.addChatMessage("§3NEU Minion Helper commands: §c(for testing only!)");
+ Utils.addChatMessage("§6/neudevtest minion clearminion §7Clears the minion map");
+ Utils.addChatMessage("§6/neudevtest minion reloadrepo §7Manually loading the data from repo");
+ Utils.addChatMessage("§6/neudevtest minion reloadapi §7Manually loading the data from api");
+ Utils.addChatMessage("§6/neudevtest minion clearapi §7Clears the api data");
+ Utils.addChatMessage("§6/neudevtest minion maxperpage <number> §7Changes the max minions per page number");
+ Utils.addChatMessage("§6/neudevtest minion arrowpos <x, y> §7Changes the position of the page numbers");
+ Utils.addChatMessage("§6/neudevtest minion debugplayer <player-uuid> <player-profile-name> [need-for-next-slot] §7" +
+ "See the Minions missing of other player");
+ Utils.addChatMessage("");
+ }
+
+ private void setDebugPlayer(String playerUuid, String playerProfileName, int fakeNeedForNextSlot) {
+ this.debugPlayerUuid = playerUuid;
+ this.debugProfileName = playerProfileName;
+ this.debugNeedForNextSlot = fakeNeedForNextSlot;
+
+ onProfileSwitch();
+ }
+
+ public MinionHelperPriceCalculation getPriceCalculation() {
+ return priceCalculation;
+ }
+
+ public MinionHelperRequirementsManager getRequirementsManager() {
+ return requirementsManager;
+ }
+
+ public MinionHelperApiLoader getApi() {
+ return api;
+ }
+
+ public MinionHelperOverlay getOverlay() {
+ return overlay;
+ }
+
+ public Map<String, Minion> getAllMinions() {
+ return minions;
+ }
+
+ public void setNeedForNextSlot(int needForNextSlot) {
+ this.needForNextSlot = needForNextSlot;
+ overlay.resetCache();
+ }
+
+ public int getNeedForNextSlot() {
+ return needForNextSlot;
+ }
+
+ public void setCustomSource(Minion minion, CustomSource custom