aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBuildTools <james.jenour@protonmail.com>2021-02-05 03:52:39 +0800
committerBuildTools <james.jenour@protonmail.com>2021-02-05 03:52:39 +0800
commitc40f8e737c62c8dadef294f8621716529d354796 (patch)
tree3f0fb8be376d09e4fa1a7d95da0624359d8f67b1
parent5ea3130efceca3148334a613471cec7f22acdf8c (diff)
downloadNotEnoughUpdates-c40f8e737c62c8dadef294f8621716529d354796.tar.gz
NotEnoughUpdates-c40f8e737c62c8dadef294f8621716529d354796.tar.bz2
NotEnoughUpdates-c40f8e737c62c8dadef294f8621716529d354796.zip
PRE15
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java203
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java5
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/Position.java58
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditor.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditorDraggableList.java42
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiPositionEditor.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/cosmetics/CapeManager.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/dungeons/DungeonMap.java7
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/dungeons/GuiDungeonMapEditor.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/BetterContainers.java1
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/DwarvenMinesWaypoints.java35
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/FlyFix.java70
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/miscfeatures/MiningStuff.java7
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinContainer.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinGuiContainer.java1
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinNetHandlerPlayClient.java23
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/mixins/MixinPlayerControllerMP.java3
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/options/NEUConfig.java201
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/FarmingOverlay.java44
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/FuelBar.java4
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/MiningOverlay.java (renamed from src/main/java/io/github/moulberry/notenoughupdates/overlays/CommissionOverlay.java)47
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/OverlayManager.java61
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/overlays/TextOverlay.java113
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/profileviewer/ProfileViewer.java12
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/Constants.java2
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/Utils.java8
-rw-r--r--src/main/java/io/github/moulberry/notenoughupdates/util/XPInformation.java21
27 files changed, 737 insertions, 253 deletions
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
index 9d619c78..8a6f77ea 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NEUEventListener.java
@@ -1,8 +1,10 @@
package io.github.moulberry.notenoughupdates;
+import com.google.common.collect.Lists;
import com.google.gson.JsonArray;
import com.google.gson.JsonElement;
import com.google.gson.JsonObject;
+import com.google.gson.JsonPrimitive;
import io.github.moulberry.notenoughupdates.auction.CustomAHGui;
import io.github.moulberry.notenoughupdates.core.BackgroundBlur;
import io.github.moulberry.notenoughupdates.core.config.Position;
@@ -12,11 +14,8 @@ 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.overlays.CommissionOverlay;
-import io.github.moulberry.notenoughupdates.overlays.FarmingOverlay;
+import io.github.moulberry.notenoughupdates.overlays.*;
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.*;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.FontRenderer;
@@ -49,6 +48,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.lang3.StringUtils;
import org.apache.commons.lang3.text.WordUtils;
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
@@ -140,19 +140,6 @@ public class NEUEventListener {
private static final Pattern BAD_ITEM_REGEX = Pattern.compile("x[0-9]{1,2}$");
- public static Class<? extends TextOverlay> dontRenderOverlay = null;
- private final List<TextOverlay> textOverlays = new ArrayList<>();
- {
- textOverlays.add(new CommissionOverlay(NotEnoughUpdates.INSTANCE.config.mining.overlayPosition, () -> {
- int style = NotEnoughUpdates.INSTANCE.config.mining.overlayStyle;
- if(style >= 0 && style < TextOverlayStyle.values().length) {
- return TextOverlayStyle.values()[style];
- }
- return TextOverlayStyle.BACKGROUND;
- }));
- textOverlays.add(new FarmingOverlay(new Position(20, 300), () -> TextOverlayStyle.BACKGROUND));
- }
-
/**
* 1)Will send the cached message from #sendChatMessage when at least 200ms has passed since the last message.
* This is used in order to prevent the mod spamming messages.
@@ -198,6 +185,12 @@ public class NEUEventListener {
DungeonBlocks.tick();
}
DungeonWin.tick();
+ FlyFix.tick();
+
+ for(TextOverlay overlay : OverlayManager.textOverlays) {
+ overlay.shouldUpdateFrequent = true;
+ }
+
if(longUpdate) {
/*for(Entity entity : Minecraft.getMinecraft().theWorld.loadedEntityList) {
if(entity instanceof EntityArmorStand) {
@@ -211,10 +204,11 @@ public class NEUEventListener {
DwarvenMinesTextures.tick();
FairySouls.tick();
MiningStuff.tick();
+ XPInformation.getInstance().tick();
ProfileApiSyncer.getInstance().tick();
DamageCommas.tick();
BackgroundBlur.tick();
- for(TextOverlay overlay : textOverlays) {
+ for(TextOverlay overlay : OverlayManager.textOverlays) {
overlay.tick();
}
if(TradeWindow.hypixelTradeWindowActive()) {
@@ -425,13 +419,13 @@ public class NEUEventListener {
long timeRemaining = 15000 - (System.currentTimeMillis() - notificationDisplayMillis);
if(event.type == RenderGameOverlayEvent.ElementType.ALL) {
DungeonWin.render(event.partialTicks);
- for(TextOverlay overlay : textOverlays) {
- if(dontRenderOverlay != null && dontRenderOverlay.isAssignableFrom(overlay.getClass())) {
+ for(TextOverlay overlay : OverlayManager.textOverlays) {
+ if(OverlayManager.dontRenderOverlay != null && OverlayManager.dontRenderOverlay.isAssignableFrom(overlay.getClass())) {
continue;
}
overlay.render();
}
- dontRenderOverlay = null;
+ OverlayManager.dontRenderOverlay = null;
}
if(event.type == RenderGameOverlayEvent.ElementType.ALL &&
timeRemaining > 0 && notificationLines != null && notificationLines.size() > 0) {
@@ -1259,6 +1253,30 @@ public class NEUEventListener {
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]);
+ }
+
+ private HashSet<String> percentStats = new HashSet<>();
+ {
+ percentStats.add("bonus_attack_speed");
+ percentStats.add("crit_damage");
+ percentStats.add("crit_chance");
+ percentStats.add("sea_creature_chance");
+ percentStats.add("ability_damage");
+ }
+
+ private String currentRarity = "COMMON";
+ private boolean showReforgeStoneStats = true;
+ private boolean pressedArrowLast = false;
+ private boolean pressedShiftLast = false;
+
@SubscribeEvent(priority = EventPriority.LOW)
public void onItemTooltipLow(ItemTooltipEvent event) {
if(!NotEnoughUpdates.INSTANCE.isOnSkyblock()) return;
@@ -1323,7 +1341,145 @@ public class NEUEventListener {
int index = 0;
List<String> newTooltip = new ArrayList<>();
for(String line : event.toolTip) {
- if(line.contains("\u00A7cR\u00A76a\u00A7ei\u00A7an\u00A7bb\u00A79o\u00A7dw\u00A79 Rune")) {
+ if(line.endsWith(EnumChatFormatting.DARK_GRAY+"Reforge Stone")) {
+ JsonObject reforgeStones = Constants.REFORGESTONES;
+
+ if(reforgeStones != null && reforgeStones.has(internalname)) {
+ boolean shift = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
+ if(!pressedShiftLast && shift) {
+ showReforgeStoneStats = !showReforgeStoneStats;
+ }
+ pressedShiftLast = shift;
+
+ newTooltip.add(line);
+ newTooltip.add("");
+ if(!showReforgeStoneStats) {
+ newTooltip.add(EnumChatFormatting.DARK_GRAY+"[Press SHIFT to show extra info]");
+ } else {
+ newTooltip.add(EnumChatFormatting.DARK_GRAY+"[Press SHIFT to hide extra info]");
+ }
+
+ JsonObject reforgeInfo = reforgeStones.get(internalname).getAsJsonObject();
+ JsonArray requiredRaritiesArray = reforgeInfo.get("requiredRarities").getAsJsonArray();
+
+ if(showReforgeStoneStats && requiredRaritiesArray.size() > 0) {
+ String reforgeName = Utils.getElementAsString(reforgeInfo.get("reforgeName"), "");
+
+ String[] requiredRarities = new String[requiredRaritiesArray.size()];
+ for(int i=0; i<requiredRaritiesArray.size(); i++) {
+ requiredRarities[i] = requiredRaritiesArray.get(i).getAsString();
+ }
+
+ int rarityIndex = requiredRarities.length-1;
+ String rarity = requiredRarities[rarityIndex];
+ for(int i=0; i<requiredRarities.length; i++) {
+ String rar = requiredRarities[i];
+ if(rar.equalsIgnoreCase(currentRarity)) {
+ rarity = rar;
+ rarityIndex = i;
+ break;
+ }
+ }
+
+ boolean left = Keyboard.isKeyDown(Keyboard.KEY_LEFT);
+ boolean right = Keyboard.isKeyDown(Keyboard.KEY_RIGHT);
+ if(!pressedArrowLast && (left || right)) {
+ if(left) {
+ rarityIndex--;
+ } else if(right) {
+ rarityIndex++;
+ }
+ if(rarityIndex < 0) rarityIndex = 0;
+ if(rarityIndex >= requiredRarities.length) rarityIndex = requiredRarities.length-1;
+ currentRarity = requiredRarities[rarityIndex];
+ rarity = currentRarity;
+ }
+ pressedArrowLast = left || right;
+
+ JsonElement statsE = reforgeInfo.get("reforgeStats");
+ if(statsE != null && statsE.isJsonObject()) {
+ JsonObject stats = statsE.getAsJsonObject();
+
+ String rarityFormatted = rarityArrMap.getOrDefault(rarity, rarity);
+
+ JsonElement reforgeAbilityE = reforgeInfo.get("reforgeAbility");
+ String reforgeAbility = null;
+ if(reforgeAbilityE != null) {
+ if(reforgeAbilityE.isJsonPrimitive() && reforgeAbilityE.getAsJsonPrimitive().isString()) {
+ reforgeAbility = Utils.getElementAsString(reforgeInfo.get("reforgeAbility"), "");
+
+ } else if(reforgeAbilityE.isJsonObject()) {
+ if(reforgeAbilityE.getAsJsonObject().has(rarity)) {
+ reforgeAbility = reforgeAbilityE.getAsJsonObject().get(rarity).getAsString();
+ }
+ }
+ }
+
+ if(reforgeAbility != null && !reforgeAbility.isEmpty()) {
+ String text = EnumChatFormatting.BLUE + (reforgeName.isEmpty() ? "Bonus: " : reforgeName + " Bonus: ") +
+ EnumChatFormatting.GRAY+reforgeAbility;
+ boolean first = true;
+ for(String s : Minecraft.getMinecraft().fontRendererObj.listFormattedStringToWidth(text, 150)) {
+ newTooltip.add((first ? "" : " ") + s);
+ first = false;
+ }
+ newTooltip.add("");
+ }
+
+ newTooltip.add(EnumChatFormatting.BLUE+"Stats for "+rarityFormatted+"\u00a79: [\u00a7l\u00a7m< \u00a79Switch\u00a7l\u27a1\u00a79]");
+
+ JsonElement statsRarE = stats.get(rarity);
+ if(statsRarE != null && statsRarE.isJsonObject()) {
+ JsonObject statsRar = statsRarE.getAsJsonObject();
+
+ TreeSet<Map.Entry<String, JsonElement>> sorted = new TreeSet<>(Map.Entry.comparingByKey());
+ sorted.addAll(statsRar.entrySet());
+
+ for(Map.Entry<String, JsonElement> entry : sorted) {
+ if(entry.getValue().isJsonPrimitive() && ((JsonPrimitive)entry.getValue()).isNumber()) {
+ float statNumF = entry.getValue().getAsFloat();
+ String statNumS;
+ if(statNumF % 1 == 0) {
+ statNumS = String.valueOf(Math.round(statNumF));
+ } else {
+ statNumS = Utils.floatToString(statNumF, 1);
+ }
+ String reforgeNamePretty = WordUtils.capitalizeFully(entry.getKey().replace("_", " "));
+ String text = EnumChatFormatting.GRAY + reforgeNamePretty + ": " + EnumChatFormatting.GREEN+"+"+statNumS;
+ if(percentStats.contains(entry.getKey())) {
+ text += "%";
+ }
+ newTooltip.add(" "+text);
+ }
+ }
+ }
+
+ JsonElement reforgeCostsE = reforgeInfo.get("reforgeCosts");
+ int reforgeCost = -1;
+ if(reforgeCostsE != null) {
+ if(reforgeCostsE.isJsonPrimitive() && reforgeCostsE.getAsJsonPrimitive().isNumber()) {
+ reforgeCost = (int)Utils.getElementAsFloat(reforgeInfo.get("reforgeAbility"), -1);
+
+ } else if(reforgeCostsE.isJsonObject()) {
+ if(reforgeCostsE.getAsJsonObject().has(rarity)) {
+ reforgeCost = (int)Utils.getElementAsFloat(reforgeCostsE.getAsJsonObject().get(rarity), -1);
+ }
+ }
+ }
+
+ if(reforgeCost >= 0) {
+ String text = EnumChatFormatting.BLUE + "Apply Cost: " + EnumChatFormatting.GOLD+NumberFormat.getNumberInstance().format(reforgeCost) +" coins";
+ newTooltip.add("");
+ newTooltip.add(text);
+ }
+
+ }
+ }
+
+ continue;
+ }
+
+ } else if(line.contains("\u00A7cR\u00A76a\u00A7ei\u00A7an\u00A7bb\u00A79o\u00A7dw\u00A79 Rune")) {
line = line.replace("\u00A7cR\u00A76a\u00A7ei\u00A7an\u00A7bb\u00A79o\u00A7dw\u00A79 Rune",
Utils.chromaString("Rainbow Rune", index, false)+EnumChatFormatting.BLUE);
} else if(hasEnchantments) {
@@ -1652,6 +1808,9 @@ public class NEUEventListener {
index++;
}
+ pressedShiftLast = Keyboard.isKeyDown(Keyboard.KEY_LSHIFT) || Keyboard.isKeyDown(Keyboard.KEY_RSHIFT);
+ pressedArrowLast = Keyboard.isKeyDown(Keyboard.KEY_LEFT) || Keyboard.isKeyDown(Keyboard.KEY_RIGHT);
+
event.toolTip.clear();
event.toolTip.addAll(newTooltip);
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
index adfe13d5..f77279b0 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/NotEnoughUpdates.java
@@ -45,6 +45,7 @@ import net.minecraft.event.ClickEvent;
import net.minecraft.event.HoverEvent;
import net.minecraft.item.ItemMap;
import net.minecraft.item.ItemStack;
+import net.minecraft.network.play.client.C13PacketPlayerAbilities;
import net.minecraft.scoreboard.ScoreObjective;
import net.minecraft.scoreboard.Scoreboard;
import net.minecraft.util.*;
@@ -663,7 +664,9 @@ public class NotEnoughUpdates {
SimpleCommand dhCommand = new SimpleCommand("dh", new SimpleCommand.ProcessCommandRunnable() {
@Override
public void processCommand(ICommandSender sender, String[] args) {
- Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp dungeon_hub");
+ //Minecraft.getMinecraft().thePlayer.sendChatMessage("/warp dungeon_hub");
+ Minecraft.getMinecraft().thePlayer.capabilities.isFlying = !Minecraft.getMinecraft().thePlayer.capabilities.isFlying;
+ Minecraft.getMinecraft().thePlayer.sendQueue.addToSendQueue(new C13PacketPlayerAbilities(Minecraft.getMinecraft().thePlayer.capabilities));
}
});
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/config/Position.java b/src/main/java/io/github/moulberry/notenoughupdates/core/config/Position.java
index 3bd4e9d2..ef27a51d 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/config/Position.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/config/Position.java
@@ -14,6 +14,8 @@ public class Position {
@Expose
private boolean centerY;
+ private static final int EDGE_OFFSET = 0;
+
public Position(int x, int y) {
this(x, y, false, false);
}
@@ -45,7 +47,7 @@ public class Position {
return y;
}
- public int getAbsX(ScaledResolution scaledResolution) {
+ public int getAbsX(ScaledResolution scaledResolution, int objWidth) {
int width = scaledResolution.getScaledWidth();
if(centerX) {
@@ -58,12 +60,12 @@ public class Position {
}
if(ret < 0) ret = 0;
- if(ret > width) ret = width;
+ if(ret > width) ret = width - objWidth;
return ret;
}
- public int getAbsY(ScaledResolution scaledResolution) {
+ public int getAbsY(ScaledResolution scaledResolution, int objHeight) {
int height = scaledResolution.getScaledHeight();
if(centerY) {
@@ -76,7 +78,7 @@ public class Position {
}
if(ret < 0) ret = 0;
- if(ret > height) ret = height;
+ if(ret > height) ret = height - objHeight;
return ret;
}
@@ -102,22 +104,22 @@ public class Position {
}
if(wasPositiveX) {
- if(this.x < 2) {
- deltaX += 2-this.x;
- this.x = 2;
+ if(this.x < EDGE_OFFSET) {
+ deltaX += EDGE_OFFSET-this.x;
+ this.x = EDGE_OFFSET;
}
- if(this.x > screenWidth-2) {
- deltaX += screenWidth-2-this.x;
- this.x = screenWidth-2;
+ if(this.x > screenWidth-EDGE_OFFSET) {
+ deltaX += screenWidth-EDGE_OFFSET-this.x;
+ this.x = screenWidth-EDGE_OFFSET;
}
} else {
- if(this.x+objWidth > -2) {
- deltaX += -2-objWidth-this.x;
- this.x = -2-objWidth;
+ if(this.x+objWidth > -EDGE_OFFSET) {
+ deltaX += -EDGE_OFFSET-objWidth-this.x;
+ this.x = -EDGE_OFFSET-objWidth;
}
- if(this.x+screenWidth < 2) {
- deltaX += 2-screenWidth-this.x;
- this.x = 2-screenWidth;
+ if(this.x+screenWidth < EDGE_OFFSET) {
+ deltaX += EDGE_OFFSET-screenWidth-this.x;
+ this.x = EDGE_OFFSET-screenWidth;
}
}
@@ -151,22 +153,22 @@ public class Position {
}
if(wasPositiveY) {
- if(this.y < 2) {
- deltaY += 2-this.y;
- this.y = 2;
+ if(this.y < EDGE_OFFSET) {
+ deltaY += EDGE_OFFSET-this.y;
+ this.y = EDGE_OFFSET;
}
- if(this.y > screenHeight-2) {
- deltaY += screenHeight-2-this.y;
- this.y = screenHeight-2;
+ if(this.y > screenHeight-EDGE_OFFSET) {
+ deltaY += screenHeight-EDGE_OFFSET-this.y;
+ this.y = screenHeight-EDGE_OFFSET;
}
} else {
- if(this.y+objHeight > -2) {
- deltaY += -2-objHeight-this.y;
- this.y = -2-objHeight;
+ if(this.y+objHeight > -EDGE_OFFSET) {
+ deltaY += -EDGE_OFFSET-objHeight-this.y;
+ this.y = -EDGE_OFFSET-objHeight;
}
- if(this.y+screenHeight < 2) {
- deltaY += 2-screenHeight-this.y;
- this.y = 2-screenHeight;
+ if(this.y+screenHeight < EDGE_OFFSET) {
+ deltaY += EDGE_OFFSET-screenHeight-this.y;
+ this.y = EDGE_OFFSET-screenHeight;
}
}
diff --git a/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditor.java b/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditor.java
index f10b63f1..e28c5a32 100644
--- a/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditor.java
+++ b/src/main/java/io/github/moulberry/notenoughupdates/core/config/gui/GuiOptionEditor.java
@@ -32,7 +32,7 @@ public abstract class GuiOptionEditor {
float paraHeight = 9 * lineCount - 1;
- while(paraHeight >= height-10) {
+ while(paraHeight >= HEIGHT-10) {
scale -= 1/8f;
lineCount = fr.listFormattedStringToWidth(option.desc, (int)(width*2/3/scale-10)).size();
paraHeight = (int)(9*scale * lineCount - 1*scale);
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 cd26b03d..103a8c92 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
@@ -49,7 +49,8 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
int height = super.getHeight() + 13;
for(int strIndex : activeText) {
- height += 10;
+ String str = exampleText[strIndex];
+ height += 10 * str.split("\n").length;
}
return height;
@@ -88,12 +89,20 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
for(int strIndex : activeText) {
String str = exampleText[strIndex];
+ String[] multilines = str.split("\n");
+
+ int ySize = multilines.length * 10;
+
if(i++ != dragStartIndex) {
- Utils.drawStringScaledMaxWidth("\u2261 "+str+EnumChatFormatting.RESET, Minecraft.getMinecraft().fontRendererObj,
- x+10, y+50+yOff, true, width-20, 0xffffffff);
+ for(int multilineIndex=0; multilineIndex<multilines.length; multilineIndex++) {
+ String line = multilines[multilineIndex];
+ Utils.drawStringScaledMaxWidth(line+EnumChatFormatting.RESET, Minecraft.getMinecraft().fontRendererObj,
+ x+20, y+50+yOff+multilineIndex*10, true, width-20, 0xffffffff);
+ }
+ Minecraft.getMinecraft().fontRendererObj.drawString("\u2261", x+10, y+50+yOff + ySize/2 - 4, 0xffffff, true);
}
- yOff += 10;
+ yOff += ySize;
}
}
@@ -129,7 +138,8 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
if(str.isEmpty()) {
str = "<NONE>";
}
- TextRenderUtils.drawStringScaledMaxWidth(str, fr, left+3, top+3+dropdownY, false, dropdownWidth-6, 0xffa0a0a0);
+ TextRenderUtils.drawStringScaledMaxWidth(str.replaceAll("(\n.*)+", " ..."),
+ fr, left+3, top+3+dropdownY, false, dropdownWidth-6, 0xffa0a0a0);
dropdownY += 12;
}
} else if(currentDragging >= 0) {
@@ -151,9 +161,20 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
String str = exampleText[currentDragging];
+ String[] multilines = str.split("\n");
+
GlStateManager.enableBlend();
- Utils.drawStringScaledMaxWidth("\u2261 "+str+EnumChatFormatting.RESET, Minecraft.getMinecraft().fontRendererObj,
- dragOffsetX + mouseX, dragOffsetY + mouseY, true, width-20, 0xffffff | (opacity << 24));
+ for(int multilineIndex=0; multilineIndex<multilines.length; multilineIndex++) {
+ String line = multilines[multilineIndex];
+ Utils.drawStringScaledMaxWidth(line+EnumChatFormatting.RESET, Minecraft.getMinecraft().fontRendererObj,
+ dragOffsetX + mouseX + 10, dragOffsetY + mouseY + multilineIndex*10, true, width-20, 0xffffff | (opacity << 24));
+ }
+
+ int ySize = multilines.length * 10;
+
+ Minecraft.getMinecraft().fontRendererObj.drawString("\u2261",
+ dragOffsetX + mouseX,
+ dragOffsetY + mouseY + ySize/2 - 4, 0xffffff, true);
}
}
@@ -230,7 +251,8 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
int yOff=0;
int i = 0;
for(int strIndex : activeText) {
- if(mouseY < y+50+yOff+10) {
+ int ySize = 10 * exampleText[strIndex].split("\n").length;
+ if(mouseY < y+50+yOff+ySize) {
dragOffsetX = x+10 - mouseX;
dragOffsetY = y+50+yOff - mouseY;
@@ -238,7 +260,7 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
dragStartIndex = i;
break;
}
- yOff += 10;
+ yOff += ySize;
i++;
}
}
@@ -253,7 +275,7 @@ public class GuiOptionEditorDraggableList extends GuiOptionEditor {
dragStartIndex = i;
break;
}
- yOff += 10;
+ yOff += 10 * exampleText[strIndex].split("\n").length;
i++;
}