aboutsummaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java148
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DiagCommand.java27
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/annotations/ConfigEditorDraggableList.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java16
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/struct/ConfigProcessor.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/util/Vec3Comparable.java129
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java30
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java450
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalWishingCompassSolver.java942
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Mining.java54
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Misc.java1
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/ProfileViewer.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/BingoPage.java16
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java82
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/NEUDebugLogger.java10
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/SBInfo.java14
16 files changed, 522 insertions, 1403 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
index 951e7335..0ed68e06 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
@@ -1,5 +1,17 @@
package io.github.moulberry.notenoughupdates;
+import java.awt.Color;
+import java.io.BufferedReader;
+import java.io.BufferedWriter;
+import java.io.File;
+import java.io.FileInputStream;
+import java.io.FileOutputStream;
+import java.io.InputStreamReader;
+import java.io.OutputStreamWriter;
+import java.nio.charset.StandardCharsets;
+import java.util.HashMap;
+import java.util.Set;
+
import com.google.common.collect.Sets;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
@@ -12,9 +24,22 @@ import io.github.moulberry.notenoughupdates.listener.ChatListener;
import io.github.moulberry.notenoughupdates.listener.ItemTooltipListener;
import io.github.moulberry.notenoughupdates.listener.NEUEventListener;
import io.github.moulberry.notenoughupdates.listener.RenderListener;
-import io.github.moulberry.notenoughupdates.miscfeatures.*;
+import io.github.moulberry.notenoughupdates.miscfeatures.CrystalOverlay;
+import io.github.moulberry.notenoughupdates.miscfeatures.CrystalWishingCompassSolver;
+import io.github.moulberry.notenoughupdates.miscfeatures.CustomItemEffects;
+import io.github.moulberry.notenoughupdates.miscfeatures.DwarvenMinesWaypoints;
+import io.github.moulberry.notenoughupdates.miscfeatures.EnchantingSolvers;
+import io.github.moulberry.notenoughupdates.miscfeatures.FairySouls;
+import io.github.moulberry.notenoughupdates.miscfeatures.FishingHelper;
+import io.github.moulberry.notenoughupdates.miscfeatures.ItemCooldowns;
+import io.github.moulberry.notenoughupdates.miscfeatures.ItemCustomizeManager;
+import io.github.moulberry.notenoughupdates.miscfeatures.MiningStuff;
+import io.github.moulberry.notenoughupdates.miscfeatures.NullzeeSphere;
+import io.github.moulberry.notenoughupdates.miscfeatures.PetInfoOverlay;
+import io.github.moulberry.notenoughupdates.miscfeatures.SlotLocking;
+import io.github.moulberry.notenoughupdates.miscfeatures.StorageManager;
+import io.github.moulberry.notenoughupdates.miscfeatures.SunTzu;
import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.CustomBiomes;
-import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.CustomBlockSounds;
import io.github.moulberry.notenoughupdates.miscfeatures.customblockzones.DwarvenMinesTextures;
import io.github.moulberry.notenoughupdates.miscgui.CalendarOverlay;
import io.github.moulberry.notenoughupdates.miscgui.InventoryStorageSelector;
@@ -28,14 +53,17 @@ import io.github.moulberry.notenoughupdates.util.Utils;
import io.github.moulberry.notenoughupdates.util.XPInformation;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.resources.IReloadableResourceManager;
import net.minecraft.client.settings.KeyBinding;
import net.minecraft.event.ClickEvent;
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
-import net.minecraft.world.biome.*;
+import net.minecraft.world.biome.BiomeGenBase;
+import net.minecraft.world.biome.BiomeGenHell;
+import net.minecraft.world.biome.BiomeGenJungle;
+import net.minecraft.world.biome.BiomeGenMesa;
+import net.minecraft.world.biome.BiomeGenSnow;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.client.registry.ClientRegistry;
import net.minecraftforge.fml.common.Mod;
@@ -44,12 +72,6 @@ import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
-import java.awt.*;
-import java.io.*;
-import java.nio.charset.StandardCharsets;
-import java.util.HashMap;
-import java.util.Set;
-
@Mod(modid = NotEnoughUpdates.MODID, version = NotEnoughUpdates.VERSION, clientSideOnly = true)
public class NotEnoughUpdates {
public static final String MODID = "notenoughupdates";
@@ -57,6 +79,60 @@ public class NotEnoughUpdates {
public static final String PRE_VERSION = "0.0";
public static final int VERSION_ID = 20100;
public static final int PRE_VERSION_ID = 0;
+
+ public static NotEnoughUpdates INSTANCE = null;
+
+ public NEUManager manager;
+ public NEUOverlay overlay;
+ public NEUConfig config;
+
+ private File configFile;
+
+ public File getConfigFile() {
+ return this.configFile;
+ }
+
+ public void newConfigFile() {
+ this.configFile = new File(NotEnoughUpdates.INSTANCE.getNeuDir(), "configNew.json");
+ }
+
+ private static final long CHAT_MSG_COOLDOWN = 200;
+ private long lastChatMessage = 0;
+ private long secondLastChatMessage = 0;
+ private String currChatMessage = null;
+
+ //Stolen from Biscut and used for detecting whether in skyblock
+ private static final Set<String> SKYBLOCK_IN_ALL_LANGUAGES =
+ Sets.newHashSet("SKYBLOCK", "\u7A7A\u5C9B\u751F\u5B58", "\u7A7A\u5CF6\u751F\u5B58");
+
+ public GuiScreen openGui = null;
+ public long lastOpenedGui = 0;
+
+ public Commands commands;
+
+ public static HashMap<String, String> petRarityToColourMap = new HashMap<String, String>() {{
+ put("UNKNOWN", EnumChatFormatting.RED.toString());
+ put("COMMON", EnumChatFormatting.WHITE.toString());
+ put("UNCOMMON", EnumChatFormatting.GREEN.toString());
+ put("RARE", EnumChatFormatting.BLUE.toString());
+ put("EPIC", EnumChatFormatting.DARK_PURPLE.toString());
+ put("LEGENDARY", EnumChatFormatting.GOLD.toString());
+ put("MYTHIC", EnumChatFormatting.LIGHT_PURPLE.toString());
+ }};
+
+ public static ProfileViewer profileViewer;
+
+ public boolean packDevEnabled = false;
+
+ private final Gson gson = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create();
+ private File neuDir;
+
+ public File getNeuDir() {
+ return this.neuDir;
+ }
+
+ public Color[][] colourMap = null;
+
/**
* Registers the biomes for the crystal hollows here so optifine knows they exists
*/
@@ -90,48 +166,6 @@ public class NotEnoughUpdates {
.setBiomeName("NeuCrystalHollowsCrystalNucleus")
.setFillerBlockMetadata(5470985)
.setTemperatureRainfall(0.95F, 0.9F);
- private static final long CHAT_MSG_COOLDOWN = 200;
- //Stolen from Biscut and used for detecting whether in skyblock
- private static final Set<String> SKYBLOCK_IN_ALL_LANGUAGES =
- Sets.newHashSet("SKYBLOCK", "\u7A7A\u5C9B\u751F\u5B58", "\u7A7A\u5CF6\u751F\u5B58");
- public static NotEnoughUpdates INSTANCE = null;
- public static HashMap<String, String> petRarityToColourMap = new HashMap<String, String>() {{
- put("UNKNOWN", EnumChatFormatting.RED.toString());
- put("COMMON", EnumChatFormatting.WHITE.toString());
- put("UNCOMMON", EnumChatFormatting.GREEN.toString());
- put("RARE", EnumChatFormatting.BLUE.toString());
- put("EPIC", EnumChatFormatting.DARK_PURPLE.toString());
- put("LEGENDARY", EnumChatFormatting.GOLD.toString());
- put("MYTHIC", EnumChatFormatting.LIGHT_PURPLE.toString());
- }};
- public static ProfileViewer profileViewer;
- private final Gson gson = new GsonBuilder().setPrettyPrinting().excludeFieldsWithoutExposeAnnotation().create();
- public NEUManager manager;
- public NEUOverlay overlay;
- public NEUConfig config;
- public GuiScreen openGui = null;
- public long lastOpenedGui = 0;
- public Commands commands;
- public boolean packDevEnabled = false;
- public Color[][] colourMap = null;
- private File configFile;
- private long lastChatMessage = 0;
- private long secondLastChatMessage = 0;
- private String currChatMessage = null;
- private File neuDir;
- private boolean hasSkyblockScoreboard;
-
- public File getConfigFile() {
- return this.configFile;
- }
-
- public void newConfigFile() {
- this.configFile = new File(NotEnoughUpdates.INSTANCE.getNeuDir(), "configNew.json");
- }
-
- public File getNeuDir() {
- return this.neuDir;
- }
/**
* Instantiates NEUIo, NEUManager and NEUOverlay instances. Registers keybinds and adds a shutdown hook to clear tmp folder.
@@ -215,14 +249,6 @@ public class NotEnoughUpdates {
MinecraftForge.EVENT_BUS.register(new CrystalOverlay());
MinecraftForge.EVENT_BUS.register(new ItemCooldowns());
- if (Minecraft.getMinecraft().getResourceManager() instanceof IReloadableResourceManager) {
- IReloadableResourceManager manager = (IReloadableResourceManager) Minecraft.getMinecraft().getResourceManager();
- manager.registerReloadListener(CustomSkulls.getInstance());
- manager.registerReloadListener(NPCRetexturing.getInstance());
- manager.registerReloadListener(new ItemCustomizeManager.ReloadListener());
- manager.registerReloadListener(new CustomBlockSounds.ReloaderListener());
- }
-
this.commands = new Commands();
BackgroundBlur.registerListener();
@@ -384,6 +410,8 @@ public class NotEnoughUpdates {
return hasSkyblockScoreboard();
}
+ private boolean hasSkyblockScoreboard;
+
public boolean hasSkyblockScoreboard() {
return hasSkyblockScoreboard;
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DiagCommand.java b/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DiagCommand.java
index dab99698..88264538 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DiagCommand.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/commands/dev/DiagCommand.java
@@ -17,10 +17,8 @@ public class DiagCommand extends ClientCommandBase {
private static final String USAGE_TEXT = EnumChatFormatting.WHITE +
"Usage: /neudiag <metal | wishing | debug>\n\n" +
- "/neudiag metal Metal Detector Solver diagnostics\n" +
- " <no sub-command> Show current solution diags\n" +
- " center=<off | on> Disable / enable using center\n" +
- "/neudiag wishing Wishing Compass Solver diagnostics\n" +
+ "/neudiag metal Metal Detector Solver diagnostics\n" +
+ "/neudiag wishing Wishing Compass Solver diagnostics\n" +
"/neudiag debug\n" +
" <no sub-command> Show current flags\n" +
" <enable | disable> <flag> Enable/disable flag\n";
@@ -39,26 +37,7 @@ public class DiagCommand extends ClientCommandBase {
String command = args[0].toLowerCase();
switch (command) {
case "metal":
- if (args.length == 1) {
- CrystalMetalDetectorSolver.logDiagnosticData(true);
- return;
- }
-
- String subCommand = args[1].toLowerCase();
- if (subCommand.equals("center=off")) {
- CrystalMetalDetectorSolver.setDebugDoNotUseCenter(true);
- sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW +
- "Center coordinates-based solutions disabled"));
- }
- else if (subCommand.equals("center=on")) {
- CrystalMetalDetectorSolver.setDebugDoNotUseCenter(false);
- sender.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW +
- "Center coordinates-based solutions enabled"));
- } else {
- showUsage(sender);
- return;
- }
-
+ CrystalMetalDetectorSolver.logDiagnosticData(true);
break;
case "wishing":
CrystalWishingCompassSolver.getInstance().logDiagnosticData(true);
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/config/annotations/ConfigEditorDraggableList.java b/src/main/java/io/github/moulberry/notenoughupdates/core/config/annotations/ConfigEditorDraggableList.java
index 5063d543..61e923f5 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/config/annotations/ConfigEditorDraggableList.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/config/annotations/ConfigEditorDraggableList.java
@@ -9,5 +9,5 @@ import java.lang.annotation.Target;
@Target(ElementType.FIELD)
public @interface ConfigEditorDraggableList {
String[] exampleText();
- boolean allowRemovingElements() default true;
+ boolean allowDeleting() default true;
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java b/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java
index df373dbf..4dbde24b 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java
@@ -24,7 +24,7 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
private static final ResourceLocation DELETE = new ResourceLocation("notenoughupdates:core/delete.png");
private final String[] exampleText;
- private final boolean allowRemovingElements;
+ private final boolean enableDeleting;
private final List<Integer> activeText;
private int currentDragging = -1;
private int dragStartIndex = -1;
@@ -39,11 +39,11 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
public GuiOptionEditorDraggableList(
ConfigProcessor.ProcessedOption option,
String[] exampleText,
- boolean allowRemovingElements
+ boolean disableDeleting
) {
super(option);
- this.allowRemovingElements = allowRemovingElements;
+ this.enableDeleting = disableDeleting;
this.exampleText = exampleText;
this.activeText = (List<Integer>) option.get();
}
@@ -84,7 +84,7 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
GlStateManager.color(1, greenBlue, greenBlue, 1);
}
- if (allowRemovingElements) {
+ if (enableDeleting) {
Minecraft.getMinecraft().getTextureManager().bindTexture(DELETE);
Utils.drawTexturedRect(x + width / 6 + 27, y + 45 - 7 - 13, 11, 14, GL11.GL_NEAREST);
}
@@ -215,7 +215,7 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
dragStartIndex >= 0 && Mouse.getEventButton() == 0 &&
mouseX >= x + width / 6 + 27 - 3 && mouseX <= x + width / 6 + 27 + 11 + 3 &&
mouseY >= y + 45 - 7 - 13 - 3 && mouseY <= y + 45 - 7 - 13 + 14 + 3) {
- if (allowRemovingElements) {
+ if (enableDeleting) {
activeText.remove(dragStartIndex);
}
currentDragging = -1;
@@ -226,13 +226,13 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
if (!Mouse.isButtonDown(0) || dropdownOpen) {
currentDragging = -1;
dragStartIndex = -1;
- if (trashHoverTime > 0 && allowRemovingElements) trashHoverTime = -System.currentTimeMillis();
+ if (trashHoverTime > 0 && enableDeleting) trashHoverTime = -System.currentTimeMillis();
} else if (currentDragging >= 0 &&
mouseX >= x + width / 6 + 27 - 3 && mouseX <= x + width / 6 + 27 + 11 + 3 &&
mouseY >= y + 45 - 7 - 13 - 3 && mouseY <= y + 45 - 7 - 13 + 14 + 3) {
- if (trashHoverTime < 0 && allowRemovingElements) trashHoverTime = System.currentTimeMillis();
+ if (trashHoverTime < 0 && enableDeleting) trashHoverTime = System.currentTimeMillis();
} else {
- if (trashHoverTime > 0 && allowRemovingElements) trashHoverTime = -System.currentTimeMillis();
+ if (trashHoverTime > 0 && enableDeleting) trashHoverTime = -System.currentTimeMillis();
}
if (Mouse.getEventButtonState()) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/config/struct/ConfigProcessor.java b/src/main/java/io/github/moulberry/notenoughupdates/core/config/struct/ConfigProcessor.java
index 3eb8a2d1..0d06980a 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/config/struct/ConfigProcessor.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/config/struct/ConfigProcessor.java
@@ -147,7 +147,7 @@ public class ConfigProcessor {
if (optionField.isAnnotationPresent(ConfigEditorDraggableList.class)) {
ConfigEditorDraggableList configEditorAnnotation =
optionField.getAnnotation(ConfigEditorDraggableList.class);
- editor = new GuiOptionEditorDraggableList(option, configEditorAnnotation.exampleText(), configEditorAnnotation.allowRemovingElements());
+ editor = new GuiOptionEditorDraggableList(option, configEditorAnnotation.exampleText(), configEditorAnnotation.allowDeleting());
}
}
if (optionType.isAssignableFrom(String.class)) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/util/Vec3Comparable.java b/src/main/java/io/github/moulberry/notenoughupdates/core/util/Vec3Comparable.java
deleted file mode 100644
index cd144c21..00000000
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/util/Vec3Comparable.java
+++ /dev/null
@@ -1,129 +0,0 @@
-package io.github.moulberry.notenoughupdates.core.util;
-
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.Vec3;
-import net.minecraft.util.Vec3i;
-
-public class Vec3Comparable extends Vec3 implements Comparable<Vec3Comparable> {
- public static final Vec3Comparable NULL_VECTOR = new Vec3Comparable(0.0, 0.0, 0.0);
-
- public Vec3Comparable(double x, double y, double z) {
- super(x, y, z);
- }
-
- public Vec3Comparable(Vec3i sourceVec) {
- super(sourceVec);
- }
-
- public Vec3Comparable(Vec3 source) {
- super(source.xCoord, source.yCoord, source.zCoord);
- }
-
- public Vec3Comparable(BlockPos source) {
-
- super(source.getX(), source.getY(), source.getZ());
- }
-
- public Vec3Comparable(Vec3Comparable source) {
- super(source.xCoord, source.yCoord, source.zCoord);
- }
-
- @Override
- public Vec3Comparable subtractReverse(Vec3 vec) {
- return new Vec3Comparable(super.subtractReverse(vec));
- }
-
- @Override
- public Vec3Comparable normalize() {
- return new Vec3Comparable(super.normalize());
- }
-
- @Override
- public Vec3Comparable crossProduct(Vec3 vec) {
- return new Vec3Comparable(super.crossProduct(vec));
- }
-
- @Override
- public Vec3Comparable subtract(Vec3 vec) {
- return new Vec3Comparable(super.subtract(vec));
- }
-
- @Override
- public Vec3Comparable subtract(double x, double y, double z) {
- return new Vec3Comparable(super.subtract(x, y, z));
- }
-
- @Override
- public Vec3Comparable add(Vec3 other) {
- return new Vec3Comparable(super.add(other));
- }
-
- @Override
- public Vec3Comparable addVector(double x, double y, double z) {
- return new Vec3Comparable(super.addVector(x, y, z));
- }
-
- @Override
- public Vec3Comparable getIntermediateWithXValue(Vec3 vec, double x) {
- return new Vec3Comparable(super.getIntermediateWithXValue(vec, x));
- }
-
- @Override
- public Vec3Comparable getIntermediateWithYValue(Vec3 vec, double y) {
- return new Vec3Comparable(super.getIntermediateWithYValue(vec, y));
- }
-
- @Override
- public Vec3Comparable getIntermediateWithZValue(Vec3 vec, double z) {
- return new Vec3Comparable(super.getIntermediateWithZValue(vec, z));
- }
-
- @Override
- public Vec3Comparable rotatePitch(float pitch) {
- return new Vec3Comparable(super.rotatePitch(pitch));
- }
-
- @Override
- public Vec3Comparable rotateYaw(float yaw) {
- return new Vec3Comparable(super.rotateYaw(yaw));
- }
-
- @Override
- public boolean equals(Object other) {
- if (this == other) {
- return true;
- } else if (!(other instanceof Vec3Comparable)) {
- return false;
- } else {
- Vec3Comparable vec3c = (Vec3Comparable) other;
- return this.xCoord == vec3c.xCoord && this.yCoord == vec3c.yCoord && this.zCoord == vec3c.zCoord;
- }
- }
-
- @Override
- public int hashCode() {
- long bits = 1L;
- bits = 31L * bits + doubleToLongBits(xCoord);
- bits = 31L * bits + doubleToLongBits(yCoord);
- bits = 31L * bits + doubleToLongBits(zCoord);
- return (int) (bits ^ (bits >> 32));
- }
-
- public int compareTo(Vec3Comparable other) {
- return this.yCoord == other.yCoord ?
- (this.zCoord == other.zCoord ?
- (int)(this.xCoord - other.xCoord)
- : (int)(this.zCoord - other.zCoord))
- : (int)(this.yCoord - other.yCoord);
- }
-
- public boolean signumEquals(Vec3 other) {
- return Math.signum(xCoord) == Math.signum(other.xCoord) &&
- Math.signum(yCoord) == Math.signum(other.yCoord) &&
- Math.signum(zCoord) == Math.signum(other.zCoord);
- }
-
- private static long doubleToLongBits(double d) {
- return d == 0.0 ? 0L : Double.doubleToLongBits(d);
- }
-}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java
index c7bcc0e1..a787ca99 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/AuctionBINWarning.java
@@ -37,7 +37,9 @@ public class AuctionBINWarning extends GuiElement {
private String sellingName;
private int sellingPrice;
private int lowestPrice;
+ private int buyPercentage;
private int sellStackAmount;
+ private boolean isALoss = true;
private boolean shouldPerformCheck() {
if (!NotEnoughUpdates.INSTANCE.config.ahTweaks.enableBINWarning ||
@@ -110,14 +112,13 @@ public class AuctionBINWarning extends GuiElement {
float undercutFactor = 1 - NotEnoughUpdates.INSTANCE.config.ahTweaks.warningThreshold / 100;
if (undercutFactor < 0) undercutFactor = 0;
if (undercutFactor > 1) undercutFactor = 1;
- float overcutFactor = 1 + NotEnoughUpdates.INSTANCE.config.ahTweaks.overcutWarningThreshold / 100;
+ float overcutFactor = 1 - NotEnoughUpdates.INSTANCE.config.ahTweaks.overcutWarningThreshold / 100;
if (overcutFactor < 0) overcutFactor = 0;
+ if (overcutFactor > 1) overcutFactor = 1;
- if (
- (sellingPrice > 0 && lowestPrice > 0 &&
- ((sellingPrice > sellStackAmount * lowestPrice * overcutFactor) ||
- sellingPrice < sellStackAmount * lowestPrice * undercutFactor))
- || lowestPrice == -1) {
+ if ((sellingPrice > 0 && lowestPrice > 0 && sellingPrice < sellStackAmount * lowestPrice * undercutFactor)
+ || (sellingPrice > 0 && lowestPrice > 0 && sellingPrice > sellStackAmount * lowestPrice * (overcutFactor + 1))
+ || lowestPrice == -1) {
showWarning = true;
return true;
} else {
@@ -180,9 +181,7 @@ public class AuctionBINWarning extends GuiElement {
width / 2, height / 2 - 45 + 25, false, 170, 0xffffffff
);
TextRenderUtils.drawStringCenteredScaledMaxWidth(
- (lowestPrice > 0
- ? "has a lowest BIN of \u00a76" + lowestPriceStr + "\u00a7r coins"
- : "\u00a7cWarning: No lowest BIN found!"),
+ (lowestPrice > 0 ? "has a lowest BIN of \u00a76" + lowestPriceStr + "\u00a7r coins" : "\u00a7cWarning: No lowest BIN found!"),
Minecraft.getMinecraft().fontRendererObj,
width / 2,
height / 2 - 45 + 34,
@@ -191,16 +190,16 @@ public class AuctionBINWarning extends GuiElement {
0xffa0a0a0
);
- boolean isALoss = false;
- int buyPercentage = 0;
if (sellingPrice > lowestPrice * sellStackAmount) {
- buyPercentage = sellingPrice * 100 / (lowestPrice * sellStackAmount) - 100;
+ buyPercentage = sellingPrice * 100 / (lowestPrice * sellStackAmount);
isALoss = false;
} else if (sellingPrice < lowestPrice * sellStackAmount) {
- buyPercentage = 100 - sellingPrice * 100 / (lowestPrice * sellStackAmount);
+ buyPercentage = 100 - sellingPrice * 100 / (lowestPrice * sellStackAmount);
+ if (buyPercentage <= 0) buyPercentage = 1;
isALoss = true;
}
+
TextRenderUtils.drawStringCenteredScaledMaxWidth(
"Continue selling it for",
Minecraft.getMinecraft().fontRendererObj,
@@ -211,10 +210,7 @@ public class AuctionBINWarning extends GuiElement {
0xffa0a0a0
);
TextRenderUtils.drawStringCenteredScaledMaxWidth(
- "\u00a76" + sellingPriceStr + "\u00a7r coins?" +
- ((lowestPrice > 0 && buyPercentage > 0)
- ? "(\u00a7" + (isALoss ? "c-" : "a+") + buyPercentage + "%\u00a7r)"
- : ""),
+ "\u00a76" + sellingPriceStr + "\u00a7r coins?" + (lowestPrice > 0 ? "(\u00a7" + (isALoss ? "c-" : "a+") + buyPercentage + "%\u00a7r)" : ""),
Minecraft.getMinecraft().fontRendererObj,
width / 2,
height / 2 - 45 + 59,
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java
index f43ebda2..27c334ad 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java
@@ -1,7 +1,6 @@
package io.github.moulberry.notenoughupdates.miscfeatures;
import io.github.moulberry.notenoughupdates.NotEnoughUpdates;
-import io.github.moulberry.notenoughupdates.core.util.Vec3Comparable;
import io.github.moulberry.notenoughupdates.core.util.render.RenderUtils;
import io.github.moulberry.notenoughupdates.options.customtypes.NEUDebugFlag;
import io.github.moulberry.notenoughupdates.util.NEUDebugLogger;
@@ -12,6 +11,7 @@ import net.minecraft.util.BlockPos;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IChatComponent;
+import net.minecraft.util.Vec3;
import net.minecraft.util.Vec3i;
import java.util.Arrays;
@@ -22,35 +22,25 @@ import java.util.List;
import java.util.stream.Collectors;
public class CrystalMetalDetectorSolver {
- enum SolutionState {
- NOT_STARTED,
- MULTIPLE,
- MULTIPLE_KNOWN,
- FOUND,
- FOUND_KNOWN,
- FAILED,
- INVALID,
- }
-
private static final Minecraft mc = Minecraft.getMinecraft();
- private static Vec3Comparable prevPlayerPos;
- private static double prevDistToTreasure;
+ private static BlockPos prevPlayerPos;
+ private static double prevDistToTreasure = 0;
private static HashSet<BlockPos> possibleBlocks = new HashSet<>();
- private static final HashMap<Vec3Comparable, Double> evaluatedPlayerPositions = new HashMap<>();
- private static boolean chestRecentlyFound;
- private static long chestLastFoundMillis;
+ private static final HashMap<BlockPos, Double> evaluatedPlayerPositions = new HashMap<>();
+ private static BlockPos blockPosIfLastSolutionInvalid;
+ private static Boolean chestRecentlyFound = false;
+ private static long chestLastFoundMillis = 0;
private static final HashSet<BlockPos> openedChestPositions = new HashSet<>();
// Keeper and Mines of Divan center location info
private static Vec3i minesCenter;
- private static boolean debugDoNotUseCenter = false;
- private static boolean visitKeeperMessagePrinted;
- private static final String KEEPER_OF_STRING = "Keeper of ";
- private static final String DIAMOND_STRING = "diamond";
- private static final String LAPIS_STRING = "lapis";
- private static final String EMERALD_STRING = "emerald";
- private static final String GOLD_STRING = "gold";
+ private static boolean visitKeeperMessagePrinted = false;
+ private static String KEEPER_OF_STRING = "Keeper of ";
+ private static String DIAMOND_STRING = "diamond";
+ private static String LAPIS_STRING = "lapis";
+ private static String EMERALD_STRING = "emerald";
+ private static String GOLD_STRING = "gold";
private static final HashMap<String, Vec3i> keeperOffsets = new HashMap<String, Vec3i>() {{
put(DIAMOND_STRING, new Vec3i(33,0,3));
put(LAPIS_STRING, new Vec3i(-33,0,-3));
@@ -104,14 +94,6 @@ public class CrystalMetalDetectorSolver {
-9896946827286L // x=-37, y=-21, z=-22
));
- static Predicate<BlockPos> treasureAllowedPredicate = CrystalMetalDetectorSolver::treasureAllowed;
- static SolutionState currentState = SolutionState.NOT_STARTED;
- static SolutionState previousState = SolutionState.NOT_STARTED;
-
- public interface Predicate<BlockPos> {
- boolean check(BlockPos blockPos);
- }
-
public static void process(IChatComponent message) {
if (SBInfo.getInstance().getLocation() == null ||
!NotEnoughUpdates.INSTANCE.config.mining.metalDetectorEnabled ||
@@ -120,7 +102,7 @@ public class CrystalMetalDetectorSolver {
return;
}
- boolean centerNewlyDiscovered = locateMinesCenterIfNeeded();
+ locateMinesCenterIfNeeded();
double distToTreasure = Double.parseDouble(message
.getUnformattedText()
@@ -140,64 +122,20 @@ public class CrystalMetalDetectorSolver {
chestRecentlyFound = false;
}
- SolutionState originalState = currentState;
- int originalCount = possibleBlocks.size();
- Vec3Comparable adjustedPlayerPos = getPlayerPosAdjustedForEyeHeight();
- findPossibleSolutions(distToTreasure, adjustedPlayerPos, centerNewlyDiscovered);
- if (currentState != originalState || originalCount != possibleBlocks.size()) {
- switch (currentState) {
- case FOUND_KNOWN:
- NEUDebugLogger.log(NEUDebugFlag.METAL, "Known location identified.");
- // falls through
- case FOUND:
- mc.thePlayer.addChatMessage(new ChatComponentText(EnumChatFormatting.YELLOW + "[NEU] Found solution."));
- if (NotEnoughUpdates.INSTANCE.config.hidden.debugFlags.contains(NEUDebugFlag.METAL) &&
- (previousState == SolutionState.INVALID || previousState == SolutionState.FAILED)) {
- NEUDebugLogger.log(NEUDebugFlag.METAL,
- EnumChatFormatting.AQUA + "Solution coordinates: " +
- EnumChatFormatting.WHITE + possibleBlocks.iterator().next().toString());
- }
- break;