aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java62
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java37
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java142
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java44
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/gamemodes/SBGamemodes.java3
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalOverlay.java36
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java94
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DwarvenMinesWaypoints.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/FairySouls.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/MiningStuff.java6
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MinecraftAccessor.java15
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinRendererLivingEntity.java26
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java20
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/CommissionOverlay.java (renamed from src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CommissionOverlay.java)2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/FarmingOverlay.java199
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/FuelBar.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/TextOverlay.java20
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java72
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java57
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/HypixelApi.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/ProfileApiSyncer.java75
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/SBInfo.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/XPInformation.java90
-rw-r--r--src/main/resources/mixins.notenoughupdates.json4
25 files changed, 875 insertions, 155 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
index 4682a744..9e31c19e 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
@@ -3,20 +3,23 @@ package io.github.moulberry.notenoughupdates;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.mojang.authlib.GameProfile;
+import com.mojang.authlib.minecraft.MinecraftProfileTexture;
import io.github.moulberry.notenoughupdates.auction.CustomAHGui;
+import io.github.moulberry.notenoughupdates.core.config.Position;
import io.github.moulberry.notenoughupdates.cosmetics.CapeManager;
import io.github.moulberry.notenoughupdates.dungeons.DungeonBlocks;
import io.github.moulberry.notenoughupdates.dungeons.DungeonWin;
import io.github.moulberry.notenoughupdates.gamemodes.SBGamemodes;
import io.github.moulberry.notenoughupdates.miscfeatures.*;
import io.github.moulberry.notenoughupdates.miscgui.*;
+import io.github.moulberry.notenoughupdates.mixins.MinecraftAccessor;
+import io.github.moulberry.notenoughupdates.overlays.CommissionOverlay;
+import io.github.moulberry.notenoughupdates.overlays.FarmingOverlay;
import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer;
import io.github.moulberry.notenoughupdates.overlays.TextOverlay;
import io.github.moulberry.notenoughupdates.overlays.TextOverlayStyle;
-import io.github.moulberry.notenoughupdates.util.Constants;
-import io.github.moulberry.notenoughupdates.util.RequestFocusListener;
-import io.github.moulberry.notenoughupdates.util.SBInfo;
-import io.github.moulberry.notenoughupdates.util.Utils;
+import io.github.moulberry.notenoughupdates.util.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
@@ -27,17 +30,21 @@ import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiEditSign;
import net.minecraft.client.network.NetworkPlayerInfo;
import net.minecraft.client.renderer.GlStateManager;
+import net.minecraft.client.renderer.texture.ITextureObject;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.event.ClickEvent;
import net.minecraft.init.Blocks;
+import net.minecraft.init.Items;
import net.minecraft.inventory.ContainerChest;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
+import net.minecraft.nbt.NBTUtil;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.event.*;
import net.minecraftforge.event.entity.player.EntityInteractEvent;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
@@ -46,6 +53,7 @@ import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.eventhandler.EventPriority;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
import net.minecraftforge.fml.common.gameevent.TickEvent;
+import org.apache.commons.io.FileUtils;
import org.apache.commons.lang3.text.WordUtils;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
@@ -56,9 +64,12 @@ import java.awt.*;
import java.awt.datatransfer.StringSelection;
import java.io.File;
import java.io.IOException;
+import java.net.HttpURLConnection;
+import java.net.URL;
import java.text.NumberFormat;
import java.util.List;
import java.util.*;
+import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@@ -146,6 +157,7 @@ public class NEUEventListener {
}
return TextOverlayStyle.BACKGROUND;
}));
+ textOverlays.add(new FarmingOverlay(new Position(20, 300), () -> TextOverlayStyle.BACKGROUND));
}
/**
@@ -153,14 +165,37 @@ public class NEUEventListener {
* This is used in order to prevent the mod spamming messages.
* 2)Adds unique items to the collection log
*/
+ private boolean preloadedItems = false;
private long lastLongUpdate = 0;
private long lastSkyblockScoreboard = 0;
+
+ private final ExecutorService itemPreloader = Executors.newFixedThreadPool(10);
+ private final List<ItemStack> toPreload = new ArrayList<>();
+
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
if(event.phase != TickEvent.Phase.START) return;
if(Minecraft.getMinecraft().theWorld == null) return;
if(Minecraft.getMinecraft().thePlayer == null) return;
+ if(neu.hasSkyblockScoreboard()) {
+ if(!preloadedItems) {
+ preloadedItems = true;
+ for(JsonObject json : neu.manager.getItemInformation().values()) {
+ itemPreloader.submit(() -> {
+ ItemStack stack = neu.manager.jsonToStack(json, true, true);
+ if(stack.getItem() == Items.skull) toPreload.add(stack);
+ });
+ }
+ } else if(!toPreload.isEmpty()) {
+ System.out.println("Preload size:"+toPreload.size());
+ Utils.drawItemStack(toPreload.get(0), -100, -100);
+ toPreload.remove(0);
+ } else {
+ itemPreloader.shutdown();
+ }
+ }
+
boolean longUpdate = false;
long currentTime = System.currentTimeMillis();
if(currentTime - lastLongUpdate > 1000) {
@@ -176,6 +211,8 @@ public class NEUEventListener {
DwarvenMinesTextures.tick();
FairySouls.tick();
MiningStuff.tick();
+ ProfileApiSyncer.getInstance().tick();
+ DamageCommas.tick();
for(TextOverlay overlay : textOverlays) {
overlay.tick();
}
@@ -285,6 +322,9 @@ public class NEUEventListener {
neu.manager.auctionManager.markNeedsUpdate();
}
}
+
+
+
/*if(longUpdate && neu.hasSkyblockScoreboard()) {
if(neu.manager.getCurrentProfile() == null || neu.manager.getCurrentProfile().length() == 0) {
ProfileViewer.Profile profile = NotEnoughUpdates.profileViewer.getProfile(Minecraft.getMinecraft().thePlayer.getUniqueID().toString().replace("-", ""),
@@ -777,6 +817,8 @@ public class NEUEventListener {
}
private void renderDungeonChestOverlay(GuiScreen gui) {
+ if(neu.config.dungeonProfit.profitDisplayLoc == 3) return;
+
if(gui instanceof GuiChest && neu.config.dungeonProfit.profitDisplayLoc != 2) {
try {
int xSize = (int) Utils.getField(GuiContainer.class, gui, "xSize", "field_146999_f");
@@ -815,9 +857,10 @@ public class NEUEventListener {
internal = internal.replace("\u00CD", "I").replace("\u0130", "I");
float bazaarPrice = -1;
JsonObject bazaarInfo = neu.manager.auctionManager.getBazaarInfo(internal);
- if(bazaarInfo != null && bazaarInfo.has("avg_sell")) {
- bazaarPrice = bazaarInfo.get("avg_sell").getAsFloat();
+ if(bazaarInfo != null && bazaarInfo.has("curr_sell")) {
+ bazaarPrice = bazaarInfo.get("curr_sell").getAsFloat();
}
+ if(bazaarPrice < 5000000 && internal.equals("RECOMBOBULATOR_3000")) bazaarPrice = 5000000;
float worth = -1;
if(bazaarPrice > 0) {
@@ -918,8 +961,10 @@ public class NEUEventListener {
if(neu.config.dungeonProfit.profitDisplayLoc == 1 && !valueStringBIN2.equals(missingItem)) {
int w = Minecraft.getMinecraft().fontRendererObj.getStringWidth(plStringBIN);
GlStateManager.disableLighting();
+ GlStateManager.translate(0, 0, 200);
Minecraft.getMinecraft().fontRendererObj.drawString(plStringBIN, guiLeft+xSize-5-w, guiTop+5,
0xffffffff, true);
+ GlStateManager.translate(0, 0, -200);
return;
}
@@ -1440,9 +1485,10 @@ public class NEUEventListener {
internal = internal.replace("\u00CD", "I").replace("\u0130", "I");
float bazaarPrice = -1;
JsonObject bazaarInfo = neu.manager.auctionManager.getBazaarInfo(internal);
- if(bazaarInfo != null && bazaarInfo.has("avg_sell")) {
- bazaarPrice = bazaarInfo.get("avg_sell").getAsFloat();
+ if(bazaarInfo != null && bazaarInfo.has("curr_sell")) {
+ bazaarPrice = bazaarInfo.get("curr_sell").getAsFloat();
}
+ if(bazaarPrice < 5000000 && internal.equals("RECOMBOBULATOR_3000")) bazaarPrice = 5000000;
float worth = -1;
if(bazaarPrice > 0) {
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
index 668ac1fe..0381a70a 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUManager.java
@@ -27,6 +27,7 @@ import java.nio.charset.StandardCharsets;
import java.util.*;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
+import java.util.concurrent.ThreadPoolExecutor;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
@@ -172,8 +173,6 @@ public class NEUManager {
}*/
-
-
Thread thread = new Thread(() -> {
JDialog dialog = null;
try {
@@ -277,7 +276,6 @@ public class NEUManager {
}
});
- System.out.println("finished thread create");
File items = new File(repoLocation, "items");
if(items.exists()) {
File[] itemFiles = new File(repoLocation, "items").listFiles();
@@ -652,6 +650,8 @@ public class NEUManager {
if(ea.hasKey("id", 8)) {
internalname = ea.getString("id").replaceAll(":", "-");
+ } else {
+ return null;
}
if("PET".equals(internalname)) {
@@ -1313,28 +1313,25 @@ public class NEUManager {
}
public ItemStack jsonToStack(JsonObject json, boolean useCache) {
- return jsonToStack(json, useCache, true, false);
+ return jsonToStack(json, useCache, true);
}
- private static ExecutorService asyncItemES = Executors.newFixedThreadPool(10);
- public ItemStack jsonToStack(JsonObject json, boolean useCache, boolean useReplacements, boolean multithread) {
+ public ItemStack jsonToStack(JsonObject json, boolean useCache, boolean useReplacements) {
+ return jsonToStack(json, useCache, useReplacements, true);
+ }
+
+ public ItemStack jsonToStack(JsonObject json, boolean useCache, boolean useReplacements, boolean copyStack) {
if(json == null) return new ItemStack(Items.painting, 1, 10);
String internalname = json.get("internalname").getAsString();
if(useCache) {
- if(itemstackCache.containsKey(internalname)) {
- ItemStack stack = itemstackCache.get(internalname);
- if(stack == null) {
- if(multithread) {
- return null;
- }
- } else {
+ ItemStack stack = itemstackCache.get(internalname);
+ if(stack != null) {
+ if(copyStack) {
return stack.copy();
+ } else {
+ return stack;
}
- } else if(multithread) {
- asyncItemES.submit(() -> jsonToStack(json, true, useReplacements, false));
- itemstackCache.put(internalname, null);
- return null;
}
}
@@ -1385,7 +1382,11 @@ public class NEUManager {
}
if(useCache) itemstackCache.put(internalname, stack);
- return stack;
+ if(copyStack) {
+ return stack.copy();
+ } else {
+ return stack;
+ }
}
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java
index 9012e67e..cd81da0b 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUOverlay.java
@@ -54,6 +54,8 @@ import java.lang.reflect.InvocationTargetException;
import java.lang.reflect.Method;
import java.util.List;
import java.util.*;
+import java.util.concurrent.ExecutorService;
+import java.util.concurrent.Executors;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicReference;
@@ -264,8 +266,7 @@ public class NEUOverlay extends Gui {
@Override
public void mouseClick(float x, float y, int mouseX, int mouseY) {
if(Mouse.getEventButtonState()) {
- Minecraft.getMinecraft().thePlayer.closeScreen();
- Minecraft.getMinecraft().displayGuiScreen(new GuiScreenElementWrapper(new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config)));
+ NotEnoughUpdates.INSTANCE.openGui = new GuiScreenElementWrapper(new NEUConfigEditor(NotEnoughUpdates.INSTANCE.config));
}
}
@@ -415,7 +416,7 @@ public class NEUOverlay extends Gui {
extraScale = 1.3f;
} else if(manager.getItemInformation().containsKey(display)) {
- render = manager.jsonToStack(manager.getItemInformation().get(display));
+ render = manager.jsonToStack(manager.getItemInformation().get(display), true, true);
} else {
Item item = Item.itemRegistry.getObject(new ResourceLocation(display.toLowerCase()));
if(item != null) {
@@ -1148,6 +1149,8 @@ public class NEUOverlay extends Gui {
private HashMap<String, JsonObject> parentMap = new HashMap<>();
+ private ExecutorService searchES = Executors.newSingleThreadExecutor();
+
/**
* Clears the current item list, creating a new TreeSet if necessary.
* Adds all items that match the search AND match the sort mode to the current item list.
@@ -1156,69 +1159,77 @@ public class NEUOverlay extends Gui {
public void updateSearch() {
SunTzu.randomizeQuote();
- if(searchedItems==null) searchedItems = new TreeSet<>(getItemComparator());
- searchedItems.clear();
- searchedItemsSubgroup.clear();
- searchedItemsArr = null;
- redrawItems = true;
- Set<JsonObject> removeChildItems = new HashSet<>();
- Set<String> itemsMatch = manager.search(textField.getText(), true);
- for(String itemname : itemsMatch) {
- JsonObject item = manager.getItemInformation().get(itemname);
- if(checkMatchesSort(itemname, item)) {
- if(Constants.PARENTS != null) {
- if(Constants.PARENTS.has(itemname) && Constants.PARENTS.get(itemname).isJsonArray()) {
- List<String> children = new ArrayList<>();
- for(JsonElement e : Constants.PARENTS.get(itemname).getAsJsonArray()) {
- if(e.isJsonPrimitive()) {
- children.add(e.getAsString());
+ if(searchedItems == null) searchedItems = new TreeSet<>(getItemComparator());
+
+ searchES.submit(() -> {
+ TreeSet<JsonObject> searchedItems = new TreeSet<>(getItemComparator());
+ HashMap<String, List<String>> searchedItemsSubgroup = new HashMap<>();
+
+ Set<JsonObject> removeChildItems = new HashSet<>();
+ Set<String> itemsMatch = manager.search(textField.getText(), true);
+ for(String itemname : itemsMatch) {
+ JsonObject item = manager.getItemInformation().get(itemname);
+ if(checkMatchesSort(itemname, item)) {
+ if(Constants.PARENTS != null) {
+ if(Constants.PARENTS.has(itemname) && Constants.PARENTS.get(itemname).isJsonArray()) {
+ List<String> children = new ArrayList<>();
+ for(JsonElement e : Constants.PARENTS.get(itemname).getAsJsonArray()) {
+ if(e.isJsonPrimitive()) {
+ children.add(e.getAsString());
+ }
}
+ children.retainAll(itemsMatch);
+ for(String child : children) {
+ removeChildItems.add(manager.getItemInformation().get(child));
+ }
+ searchedItemsSubgroup.put(itemname, children);
}
- children.retainAll(itemsMatch);
- for(String child : children) {
- removeChildItems.add(manager.getItemInformation().get(child));
- }
- searchedItemsSubgroup.put(itemname, children);
}
+ searchedItems.add(item);
}
- searchedItems.add(item);
}
- }
- searchedItems.removeAll(removeChildItems);
- out:
- for(Map.Entry<String, List<String>> entry : searchedItemsSubgroup.entrySet()) {
- if(searchedItems.contains(manager.getItemInformation().get(entry.getKey()))) {
- continue;
+ searchedItems.removeAll(removeChildItems);
+ out:
+ for(Map.Entry<String, List<String>> entry : searchedItemsSubgroup.entrySet()) {
+ if(searchedItems.contains(manager.getItemInformation().get(entry.getKey()))) {
+ continue;
+ }
+ for(String itemname : entry.getValue()) {
+ JsonObject item = manager.getItemInformation().get(itemname);
+ if(item != null) searchedItems.add(item);
+ }
}
- for(String itemname : entry.getValue()) {
- JsonObject item = manager.getItemInformation().get(itemname);
- if(item != null) searchedItems.add(item);
+ switch(textField.getText().toLowerCase().trim()) {
+ case "nullzee":
+ searchedItems.add(CustomItems.NULLZEE);
+ break;
+ case "rune":
+ searchedItems.add(CustomItems.RUNE);
+ break;
+ case "2b2t":
+ searchedItems.add(CustomItems.TWOBEETWOTEE);
+ break;
+ case "ducttape":
+ case "ducttapedigger":
+ searchedItems.add(CustomItems.DUCTTAPE);
+ break;
+ case "thirtyvirus":
+ searchedItems.add(manager.getItemInformation().get("SPIKED_BAIT"));
+ break;
+ case "leocthl":
+ searchedItems.add(CustomItems.LEOCTHL);
+ break;
+ case "spinaxx":
+ searchedItems.add(CustomItems.SPINAXX);
+ break;
}
- }
- switch(textField.getText().toLowerCase().trim()) {
- case "nullzee":
- searchedItems.add(CustomItems.NULLZEE);
- break;
- case "rune":
- searchedItems.add(CustomItems.RUNE);
- break;
- case "2b2t":
- searchedItems.add(CustomItems.TWOBEETWOTEE);
- break;
- case "ducttape":
- case "ducttapedigger":
- searchedItems.add(CustomItems.DUCTTAPE);
- break;
- case "thirtyvirus":
- searchedItems.add(manager.getItemInformation().get("SPIKED_BAIT"));
- break;
- case "leocthl":
- searchedItems.add(CustomItems.LEOCTHL);
- break;
- case "spinaxx":
- searchedItems.add(CustomItems.SPINAXX);
- break;
- }
+
+ this.searchedItems = searchedItems;
+ this.searchedItemsSubgroup = searchedItemsSubgroup;
+
+ searchedItemsArr = null;
+ redrawItems = true;
+ });
}
/**
@@ -1512,8 +1523,6 @@ public class NEUOverlay extends Gui {
* is enabled)
*/
public void renderOverlay() {
- GlStateManager.enableDepth();
-
int width = Utils.peekGuiScale().getScaledWidth();
int height = Utils.peekGuiScale().getScaledHeight();
int mouseX = Mouse.getX() * width / Minecraft.getMinecraft().displayWidth;
@@ -1610,6 +1619,8 @@ public class NEUOverlay extends Gui {
if(disabled) {
return;
}
+ GlStateManager.enableDepth();
+
FontRenderer fr = Minecraft.getMinecraft().fontRendererObj;
Utils.resetGuiScale();
@@ -2086,8 +2097,11 @@ public class NEUOverlay extends Gui {
iterateItemSlots(new ItemSlotConsumer() {
public void consume(int x, int y, int id) {
JsonObject json = getSearchedItemPage(id);
- ItemStack stack = manager.jsonToStack(json, true, true, true);
- if (json == null || stack == null || !stack.hasEffect()) {
+ if(json == null) {
+ return;
+ }
+ ItemStack stack = manager.jsonToStack(json, true, true, false);
+ if (stack == null || !stack.hasEffect()) {
return;
}
@@ -2241,7 +2255,7 @@ public class NEUOverlay extends Gui {
renderEntity(x + ITEM_SIZE / 2, y + ITEM_SIZE, scale, name, entities);
} else {
if(!items) return;
- ItemStack stack = manager.jsonToStack(json, true, true, true);
+ ItemStack stack = manager.jsonToStack(json, true, true, false);
if(stack != null) {
if(glint) {
Utils.drawItemStack(stack, x, y);
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
index f2f41b17..b70dcc24 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
@@ -31,6 +31,7 @@ import io.github.moulberry.notenoughupdates.profileviewer.ProfileViewer;
import io.github.moulberry.notenoughupdates.util.SBInfo;
import io.github.moulberry.notenoughupdates.util.Constants;
import io.github.moulberry.notenoughupdates.util.Utils;
+import io.github.moulberry.notenoughupdates.util.XPInformation;
import net.minecraft.block.material.MapColor;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiScreen;
@@ -909,6 +910,7 @@ public class NotEnoughUpdates {
MinecraftForge.EVENT_BUS.register(new DwarvenMinesTextures());
MinecraftForge.EVENT_BUS.register(new DwarvenMinesWaypoints());
MinecraftForge.EVENT_BUS.register(new FuelBar());
+ MinecraftForge.EVENT_BUS.register(XPInformation.getInstance());
ClientCommandHandler.instance.registerCommand(collectionLogCommand);
ClientCommandHandler.instance.registerCommand(cosmeticsCommand);
@@ -920,7 +922,7 @@ public class NotEnoughUpdates {
ClientCommandHandler.instance.registerCommand(joinDungeonCommand);
ClientCommandHandler.instance.registerCommand(viewProfileCommand);
ClientCommandHandler.instance.registerCommand(viewProfileShortCommand);
- ClientCommandHandler.instance.registerCommand(viewCataCommand);
+ if(!Loader.isModLoaded("skyblockextras")) ClientCommandHandler.instance.registerCommand(viewCataCommand);
ClientCommandHandler.instance.registerCommand(peekCommand);
ClientCommandHandler.instance.registerCommand(tutorialCommand);
ClientCommandHandler.instance.registerCommand(overlayPlacementsCommand);
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
index 993eb78b..fa51cdca 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java
@@ -23,7 +23,10 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Items;
import net.minecraft.item.ItemMap;
import net.minecraft.item.ItemStack;
+import net.minecraft.scoreboard.Score;
+import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.scoreboard.ScorePlayerTeam;
+import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.util.*;
import net.minecraft.world.storage.MapData;
import net.minecraftforge.client.event.RenderGameOverlayEvent;
@@ -83,6 +86,7 @@ public class DungeonMap {
private Map<String, MapPosition> playerEntityMapPositions = new HashMap<>();
private Map<String, MapPosition> playerMarkerMapPositions = new HashMap<>();
+ private Set<MapPosition> rawPlayerMarkerMapPositions = new HashSet<>();
private Map<String, MapPosition> playerMarkerMapPositionsLast = new HashMap<>();
private Map<String, ResourceLocation> playerSkinMap = new HashMap<>();
@@ -586,7 +590,7 @@ public class DungeonMap {
float angle = pos.rotation;
boolean doInterp = NotEnoughUpdates.INSTANCE.config.dungeonMap.dmPlayerInterp;
- if(playerEntityMapPositions.containsKey(name)) {
+ if(!isFloorOne && playerEntityMapPositions.containsKey(name)) {
MapPosition entityPos = playerEntityMapPositions.get(name);
angle = entityPos.rotation;
@@ -994,6 +998,7 @@ public class DungeonMap {
}
}
+ private boolean isFloorOne = false;
private boolean failMap = false;
private long lastClearCache = 0;
public void renderMap(int centerX, int centerY, Color[][] colourMap, Map<String, Vec4b> mapDecorations,
@@ -1014,6 +1019,25 @@ public class DungeonMap {
failMap = false;
lastClearCache = System.currentTimeMillis();
+
+ isFloorOne = false;
+ Scoreboard scoreboard = Minecraft.getMinecraft().thePlayer.getWorldScoreboard();
+
+ ScoreObjective sidebarObjective = scoreboard.getObjectiveInDisplaySlot(1);
+
+ List<Score> scores = new ArrayList<>(scoreboard.getSortedScores(sidebarObjective));
+
+ for(int i=scores.size()-1; i>=0; i--) {
+ Score score = scores.get(i);
+ ScorePlayerTeam scoreplayerteam1 = scoreboard.getPlayersTeam(score.getPlayerName());
+ String line = ScorePlayerTeam.formatPlayerName(scoreplayerteam1, score.getPlayerName());
+ line = Utils.cleanDuplicateColourCodes(line);
+
+ if(line.contains("(F1)")) {
+ isFloorOne = true;
+ break;
+ }
+ }
}
if(failMap) {
@@ -1192,8 +1216,6 @@ public class DungeonMap {
continue;
}
-