aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java99
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java116
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java3
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java5
5 files changed, 135 insertions, 92 deletions
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
index 72987d54..84eedd98 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperManager.java
@@ -22,11 +22,6 @@ 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.MinionHelperRepoLoader;
-import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CollectionRequirement;
-import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CustomRequirement;
-import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement;
-import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.ReputationRequirement;
-import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.SlayerRequirement;
import io.github.moulberry.notenoughupdates.util.Utils;
import net.minecraft.client.Minecraft;
import net.minecraft.inventory.Container;
@@ -34,7 +29,6 @@ import net.minecraft.inventory.ContainerChest;
import net.minecraftforge.common.MinecraftForge;
import java.util.ArrayList;
-import java.util.Collections;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@@ -46,6 +40,7 @@ public class MinionHelperManager {
private boolean shouldNotifyNoCollectionApi = false;
private final MinionHelperPriceCalculation priceCalculation = new MinionHelperPriceCalculation(this);
+ private final MinionHelperRequirementsManager requirementsManager = new MinionHelperRequirementsManager(this);
public static MinionHelperManager getInstance() {
if (instance == null) {
@@ -105,76 +100,6 @@ public class MinionHelperManager {
return minions;
}
- public List<MinionRequirement> getRequirements(Minion minion) {
- if (!minion.getRequirements().isEmpty()) {
- return minion.getRequirements();
- }
-
- Minion parent = minion.getParent();
- if (parent != null) {
- return getRequirements(parent);
- }
-
- return Collections.emptyList();
- }
-
- public boolean meetAllRequirements(Minion minion) {
- List<MinionRequirement> list = getRequirements(minion);
- for (MinionRequirement requirement : list) {
- if (!meetRequirement(minion, requirement)) {
- return false;
- }
- }
-
- return true;
- }
-
- public boolean meetRequirement(Minion minion, MinionRequirement requirement) {
- if (apiData == null) return false;
-
- if (requirement instanceof CollectionRequirement) {
- if (apiData.isCollectionApiDisabled()) return true;
-
- CollectionRequirement collectionRequirement = (CollectionRequirement) requirement;
- String collection = collectionRequirement.getCollection();
- String internalName = formatInternalName(collection);
-
- int need = collectionRequirement.getLevel();
- Map<String, Integer> highestCollectionTier = apiData.getHighestCollectionTier();
- if (highestCollectionTier.containsKey(internalName)) {
- int has = highestCollectionTier.get(internalName);
-
- return has >= need;
- }
-
- } else if (requirement instanceof SlayerRequirement) {
- SlayerRequirement slayerRequirement = (SlayerRequirement) requirement;
- String slayer = slayerRequirement.getSlayer();
- int need = slayerRequirement.getLevel();
- Map<String, Integer> slayerTiers = apiData.getSlayerTiers();
- if (slayerTiers.containsKey(slayer)) {
- return slayerTiers.get(slayer) >= need;
- }
-
- } else if (requirement instanceof ReputationRequirement) {
- ReputationRequirement reputationRequirement = (ReputationRequirement) requirement;
- int need = reputationRequirement.getReputation();
- String reputationType = reputationRequirement.getReputationType();
- if (reputationType.equals("BARBARIAN")) {
- return apiData.getBarbariansReputation() >= need;
- } else if (reputationType.equals("MAGE")) {
- return apiData.getMagesReputation() >= need;
- } else {
- Utils.addChatMessage("§c[NEU] Minion Helper: Unknown reputation type: '" + reputationType + "'");
- return false;
- }
- } else if (requirement instanceof CustomRequirement) {
- return minion.isCrafted();
- }
-
- return false;
- }
-
public String formatInternalName(String text) {
return text.toUpperCase().replace(" ", "_");
}
@@ -183,12 +108,6 @@ public class MinionHelperManager {
this.apiData = apiData;
}
- public void reloadRequirements() {
- for (Minion minion : minions.values()) {
- minion.setMeetRequirements(meetAllRequirements(minion));
- }
- }
-
public boolean isCollectionApiDisabled() {
return apiData != null && apiData.isCollectionApiDisabled();
}
@@ -259,7 +178,17 @@ public class MinionHelperManager {
MinionHelperApiLoader.getInstance().onProfileSwitch();
}
- public void reloadCraftedMinions() {
+ public MinionHelperPriceCalculation getPriceCalculation() {
+ return priceCalculation;
+ }
+
+ public ApiData getApiData() {
+ return apiData;
+ }
+
+ public void reloadData() {
+ requirementsManager.reloadRequirements();
+
if (apiData != null) {
for (String minion : apiData.getCraftedMinions()) {
getMinionById(minion).setCrafted(true);
@@ -267,7 +196,7 @@ public class MinionHelperManager {
}
}
- public MinionHelperPriceCalculation getPriceCalculation() {
- return priceCalculation;
+ public MinionHelperRequirementsManager getRequirementsManager() {
+ return requirementsManager;
}
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java
index a9a54d10..c521ab40 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperOverlay.java
@@ -192,11 +192,11 @@ public class MinionHelperOverlay {
lastHovered = minion;
String displayName = minion.getDisplayName();
lines.add("§9" + displayName + " " + minion.getTier());
- List<MinionRequirement> requirements = manager.getRequirements(minionSource.getMinion());
+ List<MinionRequirement> requirements = manager.getRequirementsManager().getRequirements(minionSource.getMinion());
if (!requirements.isEmpty()) {
for (MinionRequirement requirement : requirements) {
//TODO maybe change the §7 color
- String color = manager.meetRequirement(minion, requirement) ? "§a" : "§7";
+ String color = manager.getRequirementsManager().meetRequirement(minion, requirement) ? "§a" : "§7";
if (requirement instanceof CollectionRequirement && manager.isCollectionApiDisabled()) {
color = "§cAPI DISABLED! §7";
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java
new file mode 100644
index 00000000..ae2e6b22
--- /dev/null
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/MinionHelperRequirementsManager.java
@@ -0,0 +1,116 @@
+/*
+ * 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.miscgui.minionhelper.requirements.CollectionRequirement;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.CustomRequirement;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.MinionRequirement;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.ReputationRequirement;
+import io.github.moulberry.notenoughupdates.miscgui.minionhelper.requirements.SlayerRequirement;
+import io.github.moulberry.notenoughupdates.util.Utils;
+
+import java.util.Collections;
+import java.util.List;
+import java.util.Map;
+
+public class MinionHelperRequirementsManager {
+
+ private final MinionHelperManager manager;
+
+ public MinionHelperRequirementsManager(MinionHelperManager manager) {
+ this.manager = manager;
+ }
+
+ public List<MinionRequirement> getRequirements(Minion minion) {
+ if (!minion.getRequirements().isEmpty()) {
+ return minion.getRequirements();
+ }
+
+ Minion parent = minion.getParent();
+ if (parent != null) {
+ return getRequirements(parent);
+ }
+
+ return Collections.emptyList();
+ }
+
+ public boolean meetAllRequirements(Minion minion) {
+ List<MinionRequirement> list = getRequirements(minion);
+ for (MinionRequirement requirement : list) {
+ if (!meetRequirement(minion, requirement)) {
+ return false;
+ }
+ }
+
+ return true;
+ }
+
+ public boolean meetRequirement(Minion minion, MinionRequirement requirement) {
+ if (manager.getApiData() == null) return false;
+
+ if (requirement instanceof CollectionRequirement) {
+ if (manager.getApiData().isCollectionApiDisabled()) return true;
+
+ CollectionRequirement collectionRequirement = (CollectionRequirement) requirement;
+ String collection = collectionRequirement.getCollection();
+ String internalName = manager.formatInternalName(collection);
+
+ int need = collectionRequirement.getLevel();
+ Map<String, Integer> highestCollectionTier = manager.getApiData().getHighestCollectionTier();
+ if (highestCollectionTier.containsKey(internalName)) {
+ int has = highestCollectionTier.get(internalName);
+
+ return has >= need;
+ }
+
+ } else if (requirement instanceof SlayerRequirement) {
+ SlayerRequirement slayerRequirement = (SlayerRequirement) requirement;
+ String slayer = slayerRequirement.getSlayer();
+ int need = slayerRequirement.getLevel();
+ Map<String, Integer> slayerTiers = manager.getApiData().getSlayerTiers();
+ if (slayerTiers.containsKey(slayer)) {
+ return slayerTiers.get(slayer) >= need;
+ }
+
+ } else if (requirement instanceof ReputationRequirement) {
+ ReputationRequirement reputationRequirement = (ReputationRequirement) requirement;
+ int need = reputationRequirement.getReputation();
+ String reputationType = reputationRequirement.getReputationType();
+ if (reputationType.equals("BARBARIAN")) {
+ return manager.getApiData().getBarbariansReputation() >= need;
+ } else if (reputationType.equals("MAGE")) {
+ return manager.getApiData().getMagesReputation() >= need;
+ } else {
+ Utils.addChatMessage("§c[NEU] Minion Helper: Unknown reputation type: '" + reputationType + "'");
+ return false;
+ }
+ } else if (requirement instanceof CustomRequirement) {
+ return minion.isCrafted();
+ }
+
+ return false;
+ }
+
+ public void reloadRequirements() {
+ for (Minion minion : manager.getAllMinions().values()) {
+ minion.setMeetRequirements(meetAllRequirements(minion));
+ }
+ }
+}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java
index f225a391..16fc61a5 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperApiLoader.java
@@ -221,8 +221,7 @@ public class MinionHelperApiLoader {
craftedMinions
));
- manager.reloadRequirements();
- manager.reloadCraftedMinions();
+ manager.reloadData();
apiReadyToUse = true;
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java
index 0973b644..2bf0d8a0 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscgui/minionhelper/loaders/MinionHelperRepoLoader.java
@@ -97,8 +97,7 @@ public class MinionHelperRepoLoader {
testForMissingData();
- manager.reloadRequirements();
- manager.reloadCraftedMinions();
+ manager.reloadData();
repoReadyToUse = true;
if (error) {
@@ -193,7 +192,7 @@ public class MinionHelperRepoLoader {
Utils.addChatMessage("§c[NEU] The Minion '" + minion.getInternalName() + " has no display name!");
}
}
- if (manager.getRequirements(minion).isEmpty()) {
+ if (manager.getRequirementsManager().getRequirements(minion).isEmpty()) {
error = true;
if (NotEnoughUpdates.INSTANCE.config.hidden.dev) {
Utils.addChatMessage("§c[NEU] The Minion '" + minion.getInternalName() + " has no requirements!");