Skip to content

Commit

Permalink
Merge branch 'master' into extend_subset_widget
Browse files Browse the repository at this point in the history
  • Loading branch information
Dream-Master authored Dec 29, 2024
2 parents bde9a20 + 8dd36f1 commit 946f1b3
Show file tree
Hide file tree
Showing 10 changed files with 183 additions and 31 deletions.
2 changes: 2 additions & 0 deletions dependencies.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,7 @@

dependencies {
api('com.github.GTNewHorizons:CodeChickenCore:1.4.0:dev')
implementation('com.github.GTNewHorizons:GTNHLib:0.6.0:dev')

shadowImplementation('org.apache.commons:commons-csv:1.10.0')
}
16 changes: 12 additions & 4 deletions src/main/java/codechicken/nei/NEIClientConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -247,7 +247,7 @@ public boolean onClick(int button) {

tag.getTag("inventory.history.historyColor").setComment("Color of the history area display")
.getHexValue(0xee555555);
API.addOption(new OptionIntegerField("inventory.history.historyColor"));
API.addOption(new OptionIntegerField("inventory.history.historyColor", 0, OptionIntegerField.UNSIGNED_INT_MAX));

tag.getTag("inventory.history.useRows").setComment("Rows used in historical areas").getIntValue(2);
API.addOption(new OptionIntegerField("inventory.history.useRows", 1, 5));
Expand All @@ -273,11 +273,19 @@ public boolean onClick(int button) {

tag.getTag("inventory.collapsibleItems.expandedColor")
.setComment("Color of the collapsible item expanded state").getHexValue(0x335555EE);
API.addOption(new OptionIntegerField("inventory.collapsibleItems.expandedColor"));
API.addOption(
new OptionIntegerField(
"inventory.collapsibleItems.expandedColor",
0,
OptionIntegerField.UNSIGNED_INT_MAX));

tag.getTag("inventory.collapsibleItems.collapsedColor")
.setComment("Color of the collapsible item collapsed state").getHexValue(0x335555EE);
API.addOption(new OptionIntegerField("inventory.collapsibleItems.collapsedColor"));
API.addOption(
new OptionIntegerField(
"inventory.collapsibleItems.collapsedColor",
0,
OptionIntegerField.UNSIGNED_INT_MAX));

API.addOption(
new OptionButton(
Expand Down Expand Up @@ -315,7 +323,7 @@ public boolean onClick(int button) {
API.addOption(new OptionToggleButton("inventory.itemzoom.showName", true));

tag.getTag("inventory.itemzoom.nameColor").getHexValue(0xFFFFFFFF);
API.addOption(new OptionIntegerField("inventory.itemzoom.nameColor"));
API.addOption(new OptionIntegerField("inventory.itemzoom.nameColor", 0, OptionIntegerField.UNSIGNED_INT_MAX));

tag.getTag("inventory.itemIDs").getIntValue(1);
API.addOption(new OptionCycled("inventory.itemIDs", 3, true));
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/codechicken/nei/NEIClientUtils.java
Original file line number Diff line number Diff line change
Expand Up @@ -322,7 +322,7 @@ public static void setHourForward(int hour) {
}

public static void sendCommand(String command, Object... args) {
if (command.length() == 0) return;
if (command.isEmpty()) return;

NumberFormat numberformat = NumberFormat.getIntegerInstance();
numberformat.setGroupingUsed(false);
Expand Down
14 changes: 12 additions & 2 deletions src/main/java/codechicken/nei/NEIModContainer.java
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package codechicken.nei;

import java.io.File;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.LinkedList;
Expand Down Expand Up @@ -38,6 +39,7 @@ public class NEIModContainer extends DummyModContainer {
public static LinkedList<IConfigureNEI> plugins = new LinkedList<>();

private static boolean gregTech5Loaded;
private static boolean gtnhLibLoaded;

public NEIModContainer() {
super(getModMetadata());
Expand All @@ -59,16 +61,23 @@ public static boolean isGT5Loaded() {
return gregTech5Loaded;
}

public static boolean isGTNHLibLoaded() {
return gtnhLibLoaded;
}

@Override
public Set<ArtifactVersion> getRequirements() {
Set<ArtifactVersion> deps = new HashSet<>();
deps.add(VersionParser.parseVersionReference("CodeChickenCore@[" + CodeChickenCorePlugin.version + ",)"));
deps.add(VersionParser.parseVersionReference("CodeChickenCore@[" + codechicken.core.asm.Tags.VERSION + ",)"));
return deps;
}

@Override
public List<ArtifactVersion> getDependencies() {
return new LinkedList<>(getRequirements());
List<ArtifactVersion> deps = new ArrayList<>();
deps.add(VersionParser.parseVersionReference("CodeChickenCore@[" + codechicken.core.asm.Tags.VERSION + ",)"));
deps.add(VersionParser.parseVersionReference("gtnhlib@[0.6.0,)"));
return deps;
}

private String description;
Expand Down Expand Up @@ -106,6 +115,7 @@ public boolean registerBus(EventBus bus, LoadController controller) {
@Subscribe
public void preInit(FMLPreInitializationEvent event) {
gregTech5Loaded = Loader.isModLoaded("gregtech") && !Loader.isModLoaded("gregapi_post");
gtnhLibLoaded = Loader.isModLoaded("gtnhlib");
if (CommonUtils.isClient()) ClientHandler.preInit();
}

Expand Down
2 changes: 1 addition & 1 deletion src/main/java/codechicken/nei/NEIServerConfig.java
Original file line number Diff line number Diff line change
Expand Up @@ -197,7 +197,7 @@ private static void loadBannedItems() {
FileReader r = new FileReader(file);
int line = 0;
for (String s : IOUtils.readLines(r)) {
if (s.charAt(0) == '#' || s.trim().length() == 0) continue;
if (s.charAt(0) == '#' || s.trim().isEmpty()) continue;
int delim = s.lastIndexOf('=');
if (delim < 0) {
logger.error("line " + line + ": Missing =");
Expand Down
32 changes: 23 additions & 9 deletions src/main/java/codechicken/nei/config/OptionIntegerField.java
Original file line number Diff line number Diff line change
@@ -1,11 +1,15 @@
package codechicken.nei.config;

import codechicken.lib.gui.GuiDraw;

public class OptionIntegerField extends OptionTextField {

public final int min;
public final int max;
public static final long UNSIGNED_INT_MAX = 0xFFFFFFFFL;

public final long min;
public final long max;

public OptionIntegerField(String name, int min, int max) {
public OptionIntegerField(String name, long min, long max) {
super(name);
this.min = min;
this.max = max;
Expand All @@ -15,13 +19,23 @@ public OptionIntegerField(String name) {
this(name, Integer.MIN_VALUE, Integer.MAX_VALUE);
}

@Override
protected int getMaxInputWidth() {

if (renderTag().getValue().startsWith("0x")) {
return GuiDraw.getStringWidth("0x" + Long.toHexString(this.max).toUpperCase()) + 32;
}

return GuiDraw.getStringWidth(String.valueOf(this.max)) + 32;
}

@Override
public boolean isValidInput(String s) {
if (s.length() == 0) return true;
if (s.isEmpty()) return true;

try {
if (s.startsWith("0x")) {
Long.parseLong(s.substring(2), 16);
Long.parseUnsignedLong(s.substring(2), 16);
} else {
Integer.parseInt(s);
}
Expand All @@ -33,15 +47,15 @@ public boolean isValidInput(String s) {

@Override
public boolean isValidValue(String s) {
if (s.length() == 0 || !isValidInput(s)) return false;
int i = 0;
if (s.isEmpty() || !isValidInput(s)) return false;
long i = 0;

if (s.startsWith("0x")) {
i = (int) Long.parseLong(s.substring(2), 16);
i = Long.parseUnsignedLong(s.substring(2), 16);
} else {
i = Integer.parseInt(s);
}

return i >= min && i <= max;
return i >= this.min && i <= this.max;
}
}
19 changes: 8 additions & 11 deletions src/main/java/codechicken/nei/config/OptionTextField.java
Original file line number Diff line number Diff line change
@@ -1,13 +1,10 @@
package codechicken.nei.config;

import static codechicken.lib.gui.GuiDraw.drawString;
import static codechicken.lib.gui.GuiDraw.getStringWidth;

import java.util.List;

import codechicken.lib.gui.GuiDraw;
import codechicken.lib.vec.Rectangle4i;
import codechicken.nei.TextField;
import codechicken.nei.config.GuiOptionList.OptionScrollSlot;

public class OptionTextField extends Option {

Expand Down Expand Up @@ -36,11 +33,6 @@ public OptionTextField(String name) {
super(name);
}

@Override
public void onAdded(OptionScrollSlot slot) {
super.onAdded(slot);
}

@Override
public void update() {
textField.update();
Expand All @@ -51,11 +43,16 @@ public String getPrefix() {
return translateN(name);
}

protected int getMaxInputWidth() {
return slot.slotWidth();
}

@Override
public void draw(int mousex, int mousey, float frame) {
drawString(getPrefix(), 10, 6, -1);
GuiDraw.drawString(getPrefix(), 10, 6, -1);

textField.w = slot.slotWidth() - getStringWidth(getPrefix()) - 16;
textField.w = Math
.max(60, Math.min(getMaxInputWidth(), slot.slotWidth() - GuiDraw.getStringWidth(getPrefix())) - 16);
textField.x = slot.slotWidth() - textField.w;
textField.draw(mousex, mousey);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,7 @@ public boolean state() {
return renderTag().getBooleanValue();
}

@Override
public String getButtonText() {
return translateN(name + (state() ? ".true" : ".false"));
}
Expand Down
48 changes: 45 additions & 3 deletions src/main/java/codechicken/nei/guihook/GuiContainerManager.java
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@
import java.util.Map;
import java.util.StringJoiner;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.function.Consumer;
import java.util.regex.Pattern;

import javax.annotation.Nullable;
Expand All @@ -24,6 +25,7 @@
import net.minecraft.client.gui.FontRenderer;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.entity.RenderItem;
import net.minecraft.client.resources.IResourceManager;
Expand All @@ -38,14 +40,17 @@
import org.lwjgl.input.Keyboard;
import org.lwjgl.input.Mouse;
import org.lwjgl.opengl.GL11;
import org.lwjgl.opengl.GL12;

import codechicken.lib.gui.GuiDraw;
import codechicken.nei.ItemList;
import codechicken.nei.ItemStackSet;
import codechicken.nei.NEIClientConfig;
import codechicken.nei.NEIClientUtils;
import codechicken.nei.NEIModContainer;
import codechicken.nei.recipe.StackInfo;
import codechicken.nei.util.ReadableNumberConverter;
import codechicken.nei.util.RenderTooltipEventHelper;

public class GuiContainerManager {

Expand Down Expand Up @@ -550,8 +555,8 @@ public void renderToolTips(int mousex, int mousey) {
tooltip = handler.handleTooltip(window, mousex, mousey, tooltip);
}

ItemStack stack = getStackMouseOver(window);
if (tooltip.isEmpty() && shouldShowTooltip(window)) { // mouseover tip, not holding an item
ItemStack stack = getStackMouseOver(window);
font = getFontRenderer(stack);
if (stack != null) {
tooltip = itemDisplayNameMultiline(stack, window, true);
Expand Down Expand Up @@ -598,7 +603,32 @@ public void renderToolTips(int mousex, int mousey) {
}
}

drawPagedTooltip(font, mousex + 12, mousey - 12, tooltip);
if (NEIModContainer.isGTNHLibLoaded() && !tooltip.isEmpty()) {
if (RenderTooltipEventHelper.post(stack, this.window, mousex, mousey, font)) {
return;
}
Consumer<List<String>> alternativeRenderer = RenderTooltipEventHelper.getAlternativeRenderer();
if (alternativeRenderer == null) {
drawPagedTooltip(
RenderTooltipEventHelper.getFont(),
RenderTooltipEventHelper.getX() + 12,
RenderTooltipEventHelper.getY() - 12,
tooltip);
} else {
GL11.glDisable(GL12.GL_RESCALE_NORMAL);
RenderHelper.disableStandardItemLighting();
GL11.glDisable(GL11.GL_DEPTH_TEST);
GuiDraw.gui.incZLevel(300.0f);
alternativeRenderer.accept(tooltip);
GuiDraw.gui.incZLevel(-300.0f);
GL11.glEnable(GL11.GL_DEPTH_TEST);
RenderHelper.enableStandardItemLighting();
GL11.glEnable(GL12.GL_RESCALE_NORMAL);
}
RenderTooltipEventHelper.flush();
} else {
drawPagedTooltip(font, mousex + 12, mousey - 12, tooltip);
}

for (IContainerDrawHandler drawHandler : drawHandlers) {
drawHandler.postRenderTooltips(window, mousex, mousey, tooltip);
Expand All @@ -623,6 +653,18 @@ public static void drawPagedTooltip(FontRenderer font, int x, int y, List<String
tooltips.size(),
NEIClientConfig.getKeyName("gui.next_tooltip")));
}
if (NEIModContainer.isGTNHLibLoaded()) {
drawMultilineTip(
font,
x,
y,
tooltips.get(tooltipPage),
RenderTooltipEventHelper.getBackgroundStart(),
RenderTooltipEventHelper.getBackgroundEnd(),
RenderTooltipEventHelper.getBorderStart(),
RenderTooltipEventHelper.getBorderEnd());
return;
}
drawMultilineTip(font, x, y, tooltips.get(tooltipPage));
}

Expand Down Expand Up @@ -711,7 +753,7 @@ public void handleKeyboardInput() {
if (Keyboard.getEventKeyState() || (k == 0 && Character.isDefined(c))) {
try {
keyTyped(c, k);
} catch (java.lang.IndexOutOfBoundsException e) {
} catch (IndexOutOfBoundsException e) {
System.err.println("Caught out of bounds exception pressing " + c + " " + k);
e.printStackTrace();
}
Expand Down
Loading

0 comments on commit 946f1b3

Please sign in to comment.