diff --git a/src/main/java/appeng/client/gui/AEBaseScreen.java b/src/main/java/appeng/client/gui/AEBaseScreen.java index 74e2e2668..5773c0f11 100644 --- a/src/main/java/appeng/client/gui/AEBaseScreen.java +++ b/src/main/java/appeng/client/gui/AEBaseScreen.java @@ -628,15 +628,7 @@ public abstract class AEBaseScreen extends ContainerS } protected ITextComponent getGuiDisplayName(final ITextComponent in) { - return this.hasCustomInventoryName() ? new StringTextComponent(this.getInventoryName()) : in; - } - - private boolean hasCustomInventoryName() { - return this.container.getCustomName() != null; - } - - private String getInventoryName() { - return this.container.getCustomName(); + return title.getString().isEmpty() ? in : title; } /** diff --git a/src/main/java/appeng/client/gui/implementations/AESubScreen.java b/src/main/java/appeng/client/gui/implementations/AESubScreen.java index 8f540759e..a663de325 100644 --- a/src/main/java/appeng/client/gui/implementations/AESubScreen.java +++ b/src/main/java/appeng/client/gui/implementations/AESubScreen.java @@ -55,35 +55,23 @@ final class AESubScreen { IPriorityHost priorityHost = (IPriorityHost) containerTarget; this.previousContainerIcon = priorityHost.getItemStackRepresentation(); this.previousContainerType = ChestContainer.TYPE; - } - - else if (containerTarget instanceof IPriorityHost) { + } else if (containerTarget instanceof IPriorityHost) { IPriorityHost priorityHost = (IPriorityHost) containerTarget; this.previousContainerIcon = priorityHost.getItemStackRepresentation(); this.previousContainerType = priorityHost.getContainerType(); - } - - else if (containerTarget instanceof WirelessTerminalGuiObject) { + } else if (containerTarget instanceof WirelessTerminalGuiObject) { this.previousContainerIcon = definitions.items().wirelessTerminal().maybeStack(1).orElse(ItemStack.EMPTY); this.previousContainerType = WirelessTermContainer.TYPE; - } - - else if (containerTarget instanceof TerminalPart) { + } else if (containerTarget instanceof TerminalPart) { this.previousContainerIcon = parts.terminal().maybeStack(1).orElse(ItemStack.EMPTY); this.previousContainerType = MEMonitorableContainer.TYPE; - } - - else if (containerTarget instanceof CraftingTerminalPart) { + } else if (containerTarget instanceof CraftingTerminalPart) { this.previousContainerIcon = parts.craftingTerminal().maybeStack(1).orElse(ItemStack.EMPTY); this.previousContainerType = CraftingTermContainer.TYPE; - } - - else if (containerTarget instanceof PatternTerminalPart) { + } else if (containerTarget instanceof PatternTerminalPart) { this.previousContainerIcon = parts.patternTerminal().maybeStack(1).orElse(ItemStack.EMPTY); this.previousContainerType = PatternTermContainer.TYPE; - } - - else { + } else { this.previousContainerIcon = null; this.previousContainerType = null; } diff --git a/src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java b/src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java index c967aefca..421c1bb2e 100644 --- a/src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java +++ b/src/main/java/appeng/client/gui/implementations/CraftAmountScreen.java @@ -48,22 +48,28 @@ public class CraftAmountScreen extends AEBaseScreen { public void init() { super.init(); - this.amountToCraft = new NumberEntryWidget(this, 20, 30, 138, 62, NumberEntryType.CRAFT_ITEM_COUNT, value -> { - }); + this.amountToCraft = new NumberEntryWidget(this, 20, 30, 138, 62, NumberEntryType.CRAFT_ITEM_COUNT); this.amountToCraft.setValue(1); this.amountToCraft.setTextFieldBounds(62, 57, 50); this.amountToCraft.setMinValue(1); + this.amountToCraft.setHideValidationIcon(true); this.amountToCraft.addButtons(children::add, this::addButton); this.next = this.addButton( new Button(this.guiLeft + 128, this.guiTop + 51, 38, 20, GuiText.Next.text(), this::confirm)); + this.amountToCraft.setOnConfirm(() -> this.confirm(this.next)); subGui.addBackButton(this::addButton, 154, 0); + + changeFocus(true); } private void confirm(Button button) { - NetworkHandler.instance() - .sendToServer(new CraftRequestPacket((int) this.amountToCraft.getValue(), hasShiftDown())); + int amount = this.amountToCraft.getIntValue().orElse(0); + if (amount <= 0) { + return; + } + NetworkHandler.instance().sendToServer(new CraftRequestPacket(amount, hasShiftDown())); } @Override @@ -80,23 +86,9 @@ public class CraftAmountScreen extends AEBaseScreen { this.bindTexture("guis/craft_amt.png"); GuiUtils.drawTexturedModalRect(offsetX, offsetY, 0, 0, this.xSize, this.ySize, getBlitOffset()); - this.next.active = this.amountToCraft.getValue() > 0; + this.next.active = this.amountToCraft.getIntValue().orElse(0) > 0; this.amountToCraft.render(matrixStack, offsetX, offsetY, partialTicks); } - @Override - public boolean keyPressed(int keyCode, int scanCode, int p_keyPressed_3_) { - if (keyCode == 28) { - this.next.onPress(); - return true; - } else { - return super.keyPressed(keyCode, scanCode, p_keyPressed_3_); - } - } - - protected String getBackground() { - return "guis/craftAmt.png"; - } - } diff --git a/src/main/java/appeng/client/gui/implementations/CraftingStatusScreen.java b/src/main/java/appeng/client/gui/implementations/CraftingStatusScreen.java index 777dd4e15..a3b4fe4ce 100644 --- a/src/main/java/appeng/client/gui/implementations/CraftingStatusScreen.java +++ b/src/main/java/appeng/client/gui/implementations/CraftingStatusScreen.java @@ -57,7 +57,7 @@ public class CraftingStatusScreen extends CraftingCPUScreen { addButton(btn); - btn.setHideEdge(13); + btn.setHideEdge(true); }, 213, -4); } diff --git a/src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java b/src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java index 181b10ec7..216c9f563 100644 --- a/src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java +++ b/src/main/java/appeng/client/gui/implementations/LevelEmitterScreen.java @@ -35,8 +35,6 @@ import appeng.client.gui.widgets.ServerSettingToggleButton; import appeng.client.gui.widgets.SettingToggleButton; import appeng.container.implementations.LevelEmitterContainer; import appeng.core.localization.GuiText; -import appeng.core.sync.network.NetworkHandler; -import appeng.core.sync.packets.ConfigValuePacket; public class LevelEmitterScreen extends UpgradeableScreen { @@ -52,15 +50,18 @@ public class LevelEmitterScreen extends UpgradeableScreen public void init() { super.init(); - this.level = new NumberEntryWidget(this, 20, 17, 138, 62, NumberEntryType.LEVEL_ITEM_COUNT, - this::onLevelChange); + this.level = new NumberEntryWidget(this, 20, 17, 138, 62, NumberEntryType.LEVEL_ITEM_COUNT); this.level.setTextFieldBounds(25, 44, 75); this.level.addButtons(children::add, this::addButton); - container.setTextField(this.level); + this.level.setValue(container.getReportingValue()); + this.level.setOnChange(this::saveReportingValue); + this.level.setOnConfirm(this::closeScreen); + + this.changeFocus(true); } - private void onLevelChange(long level) { - NetworkHandler.instance().sendToServer(new ConfigValuePacket("LevelEmitter.Value", String.valueOf(level))); + private void saveReportingValue() { + this.level.getLongValue().ifPresent(container::setReportingValue); } @Override diff --git a/src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java b/src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java index ceedf3e1f..f8575fef9 100644 --- a/src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java +++ b/src/main/java/appeng/client/gui/implementations/MEMonitorableScreen.java @@ -237,7 +237,7 @@ public class MEMonitorableScreen extends AEBas if (this.viewCell || this instanceof WirelessTermScreen) { this.craftingStatusBtn = this.addButton(new TabButton(this.guiLeft + 170, this.guiTop - 4, 2 + 11 * 16, GuiText.CraftingStatus.text(), this.itemRenderer, btn -> showCraftingStatus())); - this.craftingStatusBtn.setHideEdge(13); + this.craftingStatusBtn.setHideEdge(true); } this.isAutoFocus = SearchBoxMode.AUTOSEARCH == searchMode || SearchBoxMode.JEI_AUTOSEARCH == searchMode diff --git a/src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java b/src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java index b31dfd6b9..7b7fbc275 100644 --- a/src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java +++ b/src/main/java/appeng/client/gui/implementations/NumberEntryWidget.java @@ -2,43 +2,60 @@ package appeng.client.gui.implementations; import java.util.ArrayList; import java.util.List; +import java.util.OptionalInt; +import java.util.OptionalLong; import java.util.function.Consumer; -import java.util.function.LongConsumer; import com.mojang.blaze3d.matrix.MatrixStack; +import net.minecraft.client.gui.AbstractGui; import net.minecraft.client.gui.FontRenderer; import net.minecraft.client.gui.IGuiEventListener; import net.minecraft.client.gui.widget.button.Button; import net.minecraft.util.text.ITextComponent; import net.minecraft.util.text.StringTextComponent; +import net.minecraft.util.text.TranslationTextComponent; import appeng.client.gui.AEBaseScreen; import appeng.client.gui.NumberEntryType; -import appeng.client.gui.widgets.ITickingWidget; -import appeng.client.gui.widgets.NumberBox; +import appeng.client.gui.widgets.ConfirmableTextField; +import appeng.client.gui.widgets.ValidationIcon; import appeng.core.AEConfig; /** * A utility widget that consists of a text-field to enter a number with * attached buttons to increment/decrement the number in fixed intervals. */ -public class NumberEntryWidget implements ITickingWidget { +public class NumberEntryWidget extends AbstractGui { + private static final ITextComponent INVALID_NUMBER = new TranslationTextComponent( + "gui.appliedenergistics2.validation.InvalidNumber"); + private static final String NUMBER_LESS_THAN_MIN_VALUE = "gui.appliedenergistics2.validation.NumberLessThanMinValue"; private static final ITextComponent PLUS = new StringTextComponent("+"); private static final ITextComponent MINUS = new StringTextComponent("-"); + private static final int TEXT_COLOR_ERROR = 0xFF1900; + private static final int TEXT_COLOR_NORMAL = 0xFFFFFF; private final AEBaseScreen parent; private final int x; private final int y; - private final NumberBox level; + private final ConfirmableTextField textField; private final NumberEntryType type; private List