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/NEUEventListener.java72
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/util/render/RenderUtils.java169
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java77
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java10
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java94
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DamageCommas.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/FairySouls.java123
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/ItemCooldowns.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscgui/AccessoryBagOverlay.java30
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinGuiContainer.java15
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java22
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/seperateSections/Toolbar.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java207
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/GuiProfileViewer.java45
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java30
16 files changed, 556 insertions, 354 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
index 38775ee7..09fa865f 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
@@ -19,10 +19,7 @@ import io.github.moulberry.notenoughupdates.overlays.*;
import io.github.moulberry.notenoughupdates.profileviewer.GuiProfileViewer;
import io.github.moulberry.notenoughupdates.util.*;
import net.minecraft.client.Minecraft;
-import net.minecraft.client.gui.FontRenderer;
-import net.minecraft.client.gui.Gui;
-import net.minecraft.client.gui.GuiScreen;
-import net.minecraft.client.gui.ScaledResolution;
+import net.minecraft.client.gui.*;
import net.minecraft.client.gui.inventory.GuiChest;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.gui.inventory.GuiEditSign;
@@ -30,12 +27,9 @@ import net.minecraft.client.gui.inventory.GuiInventory;
import net.minecraft.client.renderer.GlStateManager;
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.inventory.Slot;
-import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
@@ -166,7 +160,7 @@ public class NEUEventListener {
@SubscribeEvent
public void onWorldLoad(WorldEvent.Unload event) {
NotEnoughUpdates.INSTANCE.saveConfig();
- CrystalMetalDetectorSolver.reset();
+ CrystalMetalDetectorSolver.reset(false);
}
private static long notificationDisplayMillis = 0;
@@ -206,7 +200,9 @@ public class NEUEventListener {
@SubscribeEvent
public void onTick(TickEvent.ClientTickEvent event) {
- Keyboard.enableRepeatEvents(false);
+ if(Minecraft.getMinecraft().currentScreen == null || !(Minecraft.getMinecraft().currentScreen instanceof GuiChat)) {
+ Keyboard.enableRepeatEvents(false);
+ }
if(event.phase != TickEvent.Phase.START) return;
if(Minecraft.getMinecraft().theWorld == null) return;
if(Minecraft.getMinecraft().thePlayer == null) return;
@@ -862,7 +858,7 @@ public class NEUEventListener {
}
}
if (unformatted.startsWith("You found ") && SBInfo.getInstance().getLocation() != null && SBInfo.getInstance().getLocation().equals("crystal_hollows")){
- CrystalMetalDetectorSolver.reset();
+ CrystalMetalDetectorSolver.reset(true);
}
if(unformatted.startsWith("[NPC] Keeper of ") | unformatted.startsWith("[NPC] Professor Robot: ") || unformatted.startsWith(" ") || unformatted.startsWith("✦") ||
unformatted.equals(" You've earned a Crystal Loot Bundle!"))
@@ -1429,8 +1425,8 @@ public class NEUEventListener {
GuiChest eventGui = (GuiChest) guiScreen;
ContainerChest cc = (ContainerChest) eventGui.inventorySlots;
containerName = cc.getLowerChestInventory().getDisplayName().getUnformattedText();
- if(containerName.contains(" Profile") && eventGui.isMouseOverSlot(cc.inventorySlots.get(42), mouseX, mouseY)
- && Mouse.getEventButton() >= 0) {
+ if(containerName.contains(" Profile") && BetterContainers.profileViewerStackIndex != -1 &&
+ eventGui.isMouseOverSlot(cc.inventorySlots.get(BetterContainers.profileViewerStackIndex), mouseX, mouseY) && Mouse.getEventButton() >= 0) {
event.setCanceled(true);
if(Mouse.getEventButtonState() && eventGui.inventorySlots.inventorySlots.get(22).getStack() != null &&
eventGui.inventorySlots.inventorySlots.get(22).getStack().getTagCompound() != null){
@@ -1728,30 +1724,7 @@ public class NEUEventListener {
}
}
- private static String[] rarityArrC = new String[] {
- EnumChatFormatting.WHITE+EnumChatFormatting.BOLD.toString()+"COMMON",
- EnumChatFormatting.GREEN+EnumChatFormatting.BOLD.toString()+"UNCOMMON",
- EnumChatFormatting.BLUE+EnumChatFormatting.BOLD.toString()+"RARE",
- EnumChatFormatting.DARK_PURPLE+EnumChatFormatting.BOLD.toString()+"EPIC",
- EnumChatFormatting.GOLD+EnumChatFormatting.BOLD.toString()+"LEGENDARY",
- EnumChatFormatting.LIGHT_PURPLE+EnumChatFormatting.BOLD.toString()+"MYTHIC",
- EnumChatFormatting.RED+EnumChatFormatting.BOLD.toString()+"SPECIAL",
- EnumChatFormatting.RED+EnumChatFormatting.BOLD.toString()+"VERY SPECIAL",
- EnumChatFormatting.DARK_RED+EnumChatFormatting.BOLD.toString()+"SUPREME",
- };
- private static final HashMap<String, String> rarityArrMap = new HashMap<>();
- static {
- rarityArrMap.put("COMMON", rarityArrC[0]);
- rarityArrMap.put("UNCOMMON", rarityArrC[1]);
- rarityArrMap.put("RARE", rarityArrC[2]);
- rarityArrMap.put("EPIC", rarityArrC[3]);
- rarityArrMap.put("LEGENDARY", rarityArrC[4]);
- rarityArrMap.put("MYTHIC", rarityArrC[5]);
- rarityArrMap.put("SPECIAL", rarityArrC[6]);
- rarityArrMap.put("VERY SPECIAL", rarityArrC[7]);
- rarityArrMap.put("SUPREME", rarityArrC[8]);
- }
private HashSet<String> percentStats = new HashSet<>();
{
@@ -1826,9 +1799,9 @@ public class NEUEventListener {
out:
for (int i = list.tagCount(); i >= 0; i--) {
String line = list.getStringTagAt(i);
- for(int j=0; j<rarityArrC.length; j++) {
+ for(int j=0; j<Utils.rarityArrC.length; j++) {
for(Map.Entry<String, JsonElement> entry : enchantsObj.entrySet()) {
- if(line.contains(rarityArrC[j] + " " + entry.getKey()) || line.contains(rarityArrC[j] + " DUNGEON " + entry.getKey())) {
+ if(line.contains(Utils.rarityArrC[j] + " " + entry.getKey()) || line.contains(Utils.rarityArrC[j] + " DUNGEON " + entry.getKey())) {
allItemEnchs = entry.getValue().getAsJsonArray();
break out;
}
@@ -1907,7 +1880,7 @@ public class NEUEventListener {
JsonElement statsE = reforgeInfo.get("reforgeStats");
- String rarityFormatted = rarityArrMap.getOrDefault(rarity, rarity);
+ String rarityFormatted = Utils.rarityArrMap.getOrDefault(rarity, rarity);
JsonElement reforgeAbilityE = reforgeInfo.get("reforgeAbility");
String reforgeAbility = null;
@@ -2072,17 +2045,18 @@ public class NEUEventListener {
//9([a-zA-Z ]+?) ([0-9]+|(I|II|III|IV|V|VI|VII|VIII|IX|X))(,|$)
Pattern pattern;
try {
- pattern = Pattern.compile("(\\u00A79|\\u00A79\\u00A7d\\u00A7l)("+enchantName+") " +
- "([0-9]+|(I|II|III|IV|V|VI|VII|VIII|IX|X|XI|XII|XIII|XIV|XV|XVI|XVII|XVIII|XIX|XX))(,|$)");
+ pattern = Pattern.compile("(\\u00A79|\\u00A7(9|l)\\u00A7d\\u00A7l)(?<enchantName>"+enchantName+") " +
+ "(?<level>[0-9]+|(I|II|III|IV|V|VI|VII|VIII|IX|X|XI|XII|XIII|XIV|XV|XVI|XVII|XVIII|XIX|XX))((\\u00A79)?,|( \\u00A78(?:,?[0-9]+)*)?$)");
} catch(Exception e) {continue;} //malformed regex
Matcher matcher = pattern.matcher(line);
int matchCount = 0;
while(matcher.find() && matchCount < 5) {
- if(Utils.cleanColour(matcher.group(2)).startsWith(" ")) continue;
+ if(Utils.cleanColour(matcher.group("enchantName")).startsWith(" ")) continue;
+
matchCount++;
int level = -1;
- String levelStr = matcher.group(matcher.groupCount()-2);
+ String levelStr = matcher.group("level");
if(levelStr == null) continue;
try {
level = Integer.parseInt(levelStr);
@@ -2142,7 +2116,7 @@ public class NEUEventListener {
}
}
if(matches) {
- String enchantText = matcher.group(2);
+ String enchantText = matcher.group("enchantName");
StringBuilder extraModifiersBuilder = new StringBuilder();
if((modifierI & GuiEnchantColour.BOLD_MODIFIER) != 0) {
@@ -2168,6 +2142,8 @@ public class NEUEventListener {
"\u00A7"+colourCode+extraMods+enchantText);
line = line.replace("\u00A79\u00A7d\u00A7l"+enchantText,
"\u00A7"+colourCode+extraMods+enchantText);
+ line = line.replace("\u00A7l\u00A7d\u00A7l"+enchantText,
+ "\u00A7"+colourCode+extraMods+enchantText);
} else {
int offset = Minecraft.getMinecraft().fontRendererObj.getStringWidth(line.replaceAll(
"\\u00A79"+enchantText+".*", ""));
@@ -2177,6 +2153,10 @@ public class NEUEventListener {
"\\u00A79\\u00A7d\\u00A7l"+enchantText+".*", ""));
line = line.replace("\u00A79\u00A7d\u00A7l"+enchantText, Utils.chromaString(enchantText,
offset/12f+index, true));
+ offset = Minecraft.getMinecraft().fontRendererObj.getStringWidth(line.replaceAll(
+ "\\u00A7l\\u00A7d\\u00A7l"+enchantText+".*", ""));
+ line = line.replace("\u00A7l\u00A7d\u00A7l"+enchantText, Utils.chromaString(enchantText,
+ offset/12f+index, true));
}
}
}
@@ -2406,7 +2386,7 @@ public class NEUEventListener {
}
//7 is just a random number i chose, prob no pets with less lines than 7
if (event.toolTip.size() > 7) {
- if (Utils.cleanColour(event.toolTip.get(1)).matches("((Farming)|(Combat)|(Fishing)|(Mining)|(Foraging)|(Enchanting)|(Alchemy)) ((Mount)|(Pet)|(Morph)).*")) {
+ if (Utils.cleanColour(event.toolTip.get(1)).matches(petToolTipRegex)) {
GuiProfileViewer.PetLevel petlevel = null;
@@ -2442,12 +2422,14 @@ public class NEUEventListener {
}
return tooltipText;
}
+
+ private static final String petToolTipRegex = "((Farming)|(Combat)|(Fishing)|(Mining)|(Foraging)|(Enchanting)|(Alchemy)) ((Mount)|(Pet)|(Morph)).*";
private void petToolTipXPExtendPetMenu(ItemTooltipEvent event) {
if (NotEnoughUpdates.INSTANCE.config.tooltipTweaks.petExtendExp) {
//7 is just a random number i chose, prob no pets with less lines than 7
if (event.toolTip.size() > 7) {
- if (Utils.cleanColour(event.toolTip.get(1)).matches("((Farming)|(Combat)|(Fishing)|(Mining)|(Foraging)|(Enchanting)|(Alchemy)) ((Mount)|(Pet)).*")) {
+ if (Utils.cleanColour(event.toolTip.get(1)).matches(petToolTipRegex)) {
GuiProfileViewer.PetLevel petlevel = null;
int xpLine = -1;
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/util/render/RenderUtils.java b/src/main/java/io/github/moulberry/notenoughupdates/core/util/render/RenderUtils.java
index b63831ac..5f0ad94f 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/util/render/RenderUtils.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/util/render/RenderUtils.java
@@ -1,6 +1,8 @@
package io.github.moulberry.notenoughupdates.core.util.render;
import io.github.moulberry.notenoughupdates.core.BackgroundBlur;
+import io.github.moulberry.notenoughupdates.miscfeatures.CustomItemEffects;
+import io.github.moulberry.notenoughupdates.util.SpecialColour;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.Gui;
@@ -11,8 +13,7 @@ import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.entity.Entity;
-import net.minecraft.util.BlockPos;
-import net.minecraft.util.EnumChatFormatting;
+import net.minecraft.util.*;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL14;
import org.lwjgl.util.vector.Vector3f;
@@ -146,9 +147,173 @@ public class RenderUtils {
GlStateManager.enableTexture2D();
}
+ private static final ResourceLocation beaconBeam = new ResourceLocation("textures/entity/beacon_beam.png");
+
+ private static void renderBeaconBeam(double x, double y, double z, int rgb, float alphaMult,
+ float partialTicks, Boolean disableDepth) {
+ int height = 300;
+ int bottomOffset = 0;
+ int topOffset = bottomOffset + height;
+
+ Tessellator tessellator = Tessellator.getInstance();
+ WorldRenderer worldrenderer = tessellator.getWorldRenderer();
+
+ if (disableDepth) {
+ GlStateManager.disableDepth();
+ }
+
+ Minecraft.getMinecraft().getTextureManager().bindTexture(beaconBeam);
+ GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_S, GL11.GL_REPEAT);
+ GL11.glTexParameterf(GL11.GL_TEXTURE_2D, GL11.GL_TEXTURE_WRAP_T, GL11.GL_REPEAT);
+ GlStateManager.disableLighting();
+ GlStateManager.enableCull();
+ GlStateManager.enableTexture2D();
+ GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ONE, GL11.GL_ZERO);
+ GlStateManager.enableBlend();
+ GlStateManager.tryBlendFuncSeparate(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA, GL11.GL_ONE, GL11.GL_ZERO);
+
+ double time = Minecraft.getMinecraft().theWorld.getTotalWorldTime() + (double)partialTicks;
+ double d1 = MathHelper.func_181162_h(-time * 0.2D - (double)MathHelper.floor_double(-time * 0.1D));
+
+ float r = ((rgb >> 16) & 0xFF) / 255f;
+ float g = ((rgb >> 8) & 0xFF) / 255f;
+ float b = (rgb & 0xFF) / 255f;
+ double d2 = time * 0.025D * -1.5D;
+ double d4 = 0.5D + Math.cos(d2 + 2.356194490192345D) * 0.2D;
+ double d5 = 0.5D + Math.sin(d2 + 2.356194490192345D) * 0.2D;
+ double d6 = 0.5D + Math.cos(d2 + (Math.PI / 4D)) * 0.2D;
+ double d7 = 0.5D + Math.sin(d2 + (Math.PI / 4D)) * 0.2D;
+ double d8 = 0.5D + Math.cos(d2 + 3.9269908169872414D) * 0.2D;
+ double d9 = 0.5D + Math.sin(d2 + 3.9269908169872414D) * 0.2D;
+ double d10 = 0.5D + Math.cos(d2 + 5.497787143782138D) * 0.2D;
+ double d11 = 0.5D + Math.sin(d2 + 5.497787143782138D) * 0.2D;
+ double d14 = -1.0D + d1;
+ double d15 = (double)(height) * 2.5D + d14;
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
+ worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(1.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(0.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(1.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(0.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d6, y + topOffset, z + d7).tex(1.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d6, y + bottomOffset, z + d7).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d10, y + bottomOffset, z + d11).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d10, y + topOffset, z + d11).tex(0.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d8, y + topOffset, z + d9).tex(1.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ worldrenderer.pos(x + d8, y + bottomOffset, z + d9).tex(1.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d4, y + bottomOffset, z + d5).tex(0.0D, d14).color(r, g, b, 1.0F).endVertex();
+ worldrenderer.pos(x + d4, y + topOffset, z + d5).tex(0.0D, d15).color(r, g, b, 1.0F*alphaMult).endVertex();
+ tessellator.draw();
+
+ GlStateManager.disableCull();
+ double d12 = -1.0D + d1;
+ double d13 = height + d12;
+
+ worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
+ worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.2D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.2D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.2D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.2D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.8D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.8D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.8D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.8D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.2D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.2D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.8D, y + bottomOffset, z + 0.8D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.8D, y + topOffset, z + 0.8D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.8D).tex(1.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.8D).tex(1.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.2D, y + bottomOffset, z + 0.2D).tex(0.0D, d12).color(r, g, b, 0.25F).endVertex();
+ worldrenderer.pos(x + 0.2D, y + topOffset, z + 0.2D).tex(0.0D, d13).color(r, g, b, 0.25F*alphaMult).endVertex();
+ tessellator.draw();
+
+ GlStateManager.disableLighting();
+ GlStateManager.enableTexture2D();
+ if (disableDepth) {
+ GlStateManager.enableDepth();
+ }
+ }
+
+ private static void renderBoundingBox(double x, double y, double z, int rgb, float alphaMult, float partialTicks) {
+ AxisAlignedBB bb = new AxisAlignedBB(x, y, z, x+1, y+1, z+1);
+
+ GlStateManager.disableDepth();
+ GlStateManager.disableCull();
+ GlStateManager.disableTexture2D();
+ CustomItemEffects.drawFilledBoundingBox(bb, 1f, SpecialColour.special(0, 100, rgb));
+ GlStateManager.enableTexture2D();
+ GlStateManager.enableCull();
+ GlStateManager.enableDepth();
+ }
+
+ public static void renderBeaconBeam(BlockPos block, int rgb, float alphaMult, float partialTicks) {
+ double viewerX;
+ double viewerY;
+ double viewerZ;
+
+ Vector3f aoteInterpPos = CustomItemEffects.INSTANCE.getCurrentPosition();
+ if(aoteInterpPos != null) {
+ viewerX = aoteInterpPos.x;
+ viewerY = aoteInterpPos.y;
+ viewerZ = aoteInterpPos.z;
+ } else {
+ Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
+ viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * partialTicks;
+ viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * partialTicks;
+ viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * partialTicks;
+ }
+
+ double x = block.getX() - viewerX;
+ double y = block.getY() - viewerY;
+ double z = block.getZ() - viewerZ;
+
+ double distSq = x*x + y*y + z*z;
+
+ if(distSq > 10*10) {
+ RenderUtils.renderBeaconBeam(x, y, z, rgb, 1.0f, partialTicks, true);
+ } else {
+ RenderUtils.renderBeaconBeam(x, y, z, rgb, 1.0f, partialTicks, false);
+ }
+ }
+
+ public static void renderBeaconBeamOrBoundingBox(BlockPos block, int rgb, float alphaMult, float partialTicks) {
+ double viewerX;
+ double viewerY;
+ double viewerZ;
+
+ Vector3f aoteInterpPos = CustomItemEffects.INSTANCE.getCurrentPosition();
+ if(aoteInterpPos != null) {
+ viewerX = aoteInterpPos.x;
+ viewerY = aoteInterpPos.y;
+ viewerZ = aoteInterpPos.z;
+ } else {
+ Entity viewer = Minecraft.getMinecraft().getRenderViewEntity();
+ viewerX = viewer.lastTickPosX + (viewer.posX - viewer.lastTickPosX) * partialTicks;
+ viewerY = viewer.lastTickPosY + (viewer.posY - viewer.lastTickPosY) * partialTicks;
+ viewerZ = viewer.lastTickPosZ + (viewer.posZ - viewer.lastTickPosZ) * partialTicks;
+ }
+
+ double x = block.getX() - viewerX;
+ double y = block.getY() - viewerY;
+ double z = block.getZ() - viewerZ;
+
+ double distSq = x*x + y*y + z*z;
+
+ if(distSq > 10*10) {
+ RenderUtils.renderBeaconBeam(x, y, z, rgb, 1.0f, partialTicks, true);
+ } else {
+ RenderUtils.renderBoundingBox(x, y, z, rgb, 1.0f, partialTicks);
+ }
+ }
+
public static void renderWayPoint(String str, BlockPos loc, float partialTicks) {
renderWayPoint(str, new Vector3f(loc.getX(), loc.getY(), loc.getZ()), partialTicks);
}
+
public static void renderWayPoint(String str, Vector3f loc, float partialTicks) {
GlStateManager.alphaFunc(516, 0.1F);
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java b/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java
index 75a63644..66fb5637 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java
@@ -67,47 +67,52 @@ public class CapeManager {
}
public CapeData[] capes = new CapeData[]{
- //Content Creator
- new CapeData("jakethybro", false, true),
- new CapeData("krusty", false, true),
- new CapeData("krusty_day", false, true),
- new CapeData("krusty_sunset", false, true),
- new CapeData("krusty_night", false, true),
- new CapeData("zera", false, true),
- new CapeData("soldier", false, true),
- new CapeData("alexxoffi", false, true),
-
- //Patreon
- new CapeData("patreon1", false, false),
- new CapeData("patreon2", false, false),
- new CapeData("fade", false, false),
- new CapeData("space", false, false),
- new CapeData("mcworld", false, false),
- new CapeData("negative", false, false),
- new CapeData("void", false, false),
- new CapeData("lava", false, false),
- new CapeData("tunnel", false, false),
- new CapeData("planets", false, false),
//Admins
- new CapeData("nullzee", true, false),
- new CapeData("ironmoon", true, false),
- new CapeData("gravy", true, false),
+ new CapeData("nullzee", true, false),
+ new CapeData("ironmoon", true, false),
+ new CapeData("gravy", true, false),
+
+ //Special Other
+ new CapeData("contrib", true, false),
+ new CapeData("mbstaff", true, false),
//Partner
- new CapeData("thebakery", true, false),
- new CapeData("furf", true, false),
- new CapeData("dsm", true, false),
- new CapeData("skyclient", true, false),
- new CapeData("subreddit_dark", true, false),
- new CapeData("subreddit_light", true, false),
- new CapeData("packshq", true, false),
- new CapeData("skytils", true, false),
- new CapeData("sbp", true, false),
+ new CapeData("thebakery", true, false),
+ new CapeData("furf", true, false),
+ new CapeData("dsm", true, false),
+ new CapeData("skyclient", true, false),
+ new CapeData("subreddit_dark", true, false),
+ new CapeData("subreddit_light", true, false),
+ new CapeData("packshq", true, false),
+ new CapeData("skytils", true, false),
+ new CapeData("sbp", true, false),
+
+ //Content Creator
+ new CapeData("jakethybro", false, true),
+ new CapeData("krusty", false, true),
+ new CapeData("krusty_day", false, true),
+ new CapeData("krusty_sunset", false, true),
+ new CapeData("krusty_night", false, true),
+ new CapeData("zera", false, true),
+ new CapeData("soldier", false, true),
+ new CapeData("alexxoffi", false, true),
+ new CapeData("secondpfirsisch", false, true),
+ new CapeData("stormy_lh", false, true),
+
+ //Patreon
+ new CapeData("patreon1", false, false),
+ new CapeData("patreon2", false, false),
+ new CapeData("fade", false, false),
+ new CapeData("space", false, false),
+ new CapeData("mcworld", false, false),
+ new CapeData("negative", false, false),
+ new CapeData("void", false, false),
+ new CapeData("lava", false, false),
+ new CapeData("tunnel", false, false),
+ new CapeData("planets", false, false)
+
- //Special Other
- new CapeData("contrib", true, false),
- new CapeData("mbstaff", true, false)
};
/*private String[] capes = new String[]{"patreon1", "patreon2", "fade", "contrib", "nullzee",
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java b/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java
index 7b279ac9..b460af36 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/itemeditor/GuiElementTextField.java
@@ -42,7 +42,7 @@ public class GuiElementTextField extends GuiElement {
public GuiElementTextField(String initialText, int options) {
textField.setFocused(true);
textField.setCanLoseFocus(false);
- textField.setMaxStringLength(999);
+ textField.setMaxStringLength(9999);
textField.setText(initialText);
this.options = options;
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java
index 65ccd73f..bc92df0e 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java
@@ -57,6 +57,8 @@ public class BetterContainers {
public static HashMap<Integer, ItemStack> itemCache = new HashMap<>();
+ public static int profileViewerStackIndex = -1;
+
public static void clickSlot(int slot) {
clickedSlotMillis = System.currentTimeMillis();
clickedSlot = slot;
@@ -121,9 +123,7 @@ public class BetterContainers {
}
public static boolean isBlankStack(int index, ItemStack stack) {
- if(index == 42 && NotEnoughUpdates.INSTANCE.hasSkyblockScoreboard() &&
- (SBInfo.getInstance().lastOpenContainerName.contains("'s Profile") ||
- SBInfo.getInstance().lastOpenContainerName.contains("s' Profile"))) {
+ if(index != -1 && index == profileViewerStackIndex) {
return false;
}
@@ -137,9 +137,7 @@ public class BetterContainers {
}
public static boolean isButtonStack(int index, ItemStack stack) {
- if(index == 42 && NotEnoughUpdates.INSTANCE.hasSkyblockScoreboard() &&
- (SBInfo.getInstance().lastOpenContainerName.contains("'s Profile") ||
- SBInfo.getInstance().lastOpenContainerName.contains("s' Profile"))) {
+ if(index == profileViewerStackIndex) {
return true;
}
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 73e2b412..b2cd7cb2 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/CrystalMetalDetectorSolver.java
@@ -11,46 +11,60 @@ import java.util.List;
public class CrystalMetalDetectorSolver {
private static final Minecraft mc = Minecraft.getMinecraft();
- private static BlockPos prevPos;
- private static double prevDist = 0;
+ private static BlockPos prevPlayerPos;
+ private static double prevDistToTreasure = 0;
private static List<BlockPos> possibleBlocks = new ArrayList<>();
private static final List<BlockPos> locations = new ArrayList<>();
+ private static Boolean chestRecentlyFound = false;
+ private static long chestLastFoundMillis = 0;
+
public static void process(IChatComponent message) {
+ // Delay to keep old chest location from being treated as the new chest location
+ if (chestRecentlyFound) {
+ long currentTimeMillis = System.currentTimeMillis();
+ if (chestLastFoundMillis == 0) {
+ chestLastFoundMillis = currentTimeMillis;
+ return;
+ } else if (currentTimeMillis - chestLastFoundMillis < 1000) {
+ return;
+ }
+
+ chestLastFoundMillis = 0;
+ chestRecentlyFound = false;
+ }
+
if (SBInfo.getInstance().getLocation() != null && SBInfo.getInstance().getLocation().equals("crystal_hollows")
&& message.getUnformattedText().contains("TREASURE: "))