PrettyPipes/src/main/java/de/ellpeck/prettypipes/pipe/modules/stacksize/StackSizeModuleGui.java

59 lines
2.6 KiB
Java
Raw Normal View History

2020-04-18 22:30:14 +02:00
package de.ellpeck.prettypipes.pipe.modules.stacksize;
import de.ellpeck.prettypipes.PrettyPipes;
import de.ellpeck.prettypipes.packets.PacketButton;
import de.ellpeck.prettypipes.packets.PacketButton.ButtonResult;
import de.ellpeck.prettypipes.pipe.containers.AbstractPipeGui;
2023-07-07 19:54:52 +02:00
import net.minecraft.client.gui.GuiGraphics;
2021-12-02 16:55:04 +01:00
import net.minecraft.client.gui.components.Button;
import net.minecraft.client.gui.components.EditBox;
import net.minecraft.client.resources.language.I18n;
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Inventory;
2020-04-18 22:30:14 +02:00
import java.util.function.Supplier;
public class StackSizeModuleGui extends AbstractPipeGui<StackSizeModuleContainer> {
2021-12-02 16:55:04 +01:00
public StackSizeModuleGui(StackSizeModuleContainer screenContainer, Inventory inv, Component titleIn) {
2020-04-18 22:30:14 +02:00
super(screenContainer, inv, titleIn);
}
@Override
protected void init() {
super.init();
2022-06-27 13:57:06 +02:00
var textField = this.addRenderableWidget(new EditBox(this.font, this.leftPos + 7, this.topPos + 17 + 32 + 10, 40, 20, Component.translatable("info." + PrettyPipes.ID + ".max_stack_size")) {
2020-04-18 22:30:14 +02:00
@Override
2021-12-02 16:55:04 +01:00
public void insertText(String textToWrite) {
2021-12-02 17:46:56 +01:00
var ret = new StringBuilder();
for (var c : textToWrite.toCharArray()) {
2020-04-18 22:30:14 +02:00
if (Character.isDigit(c))
ret.append(c);
}
2021-12-02 16:55:04 +01:00
super.insertText(ret.toString());
2020-04-18 22:30:14 +02:00
}
2021-12-02 16:55:04 +01:00
2020-04-18 22:30:14 +02:00
});
textField.setValue(String.valueOf(StackSizeModuleItem.getMaxStackSizeForModule(this.menu.moduleStack)));
2021-12-02 16:55:04 +01:00
textField.setMaxLength(4);
2020-04-18 22:30:14 +02:00
textField.setResponder(s -> {
if (s.isEmpty())
return;
2021-12-02 17:46:56 +01:00
var amount = Integer.parseInt(s);
2021-12-02 16:55:04 +01:00
PacketButton.sendAndExecute(this.menu.tile.getBlockPos(), ButtonResult.STACK_SIZE_AMOUNT, amount);
2020-04-18 22:30:14 +02:00
});
2022-06-27 13:57:06 +02:00
Supplier<Component> buttonText = () -> Component.translatable("info." + PrettyPipes.ID + ".limit_to_max_" + (StackSizeModuleItem.getLimitToMaxStackSize(this.menu.moduleStack) ? "on" : "off"));
2023-07-07 19:54:52 +02:00
this.addRenderableWidget(Button.builder(buttonText.get(), b -> {
2021-12-02 16:55:04 +01:00
PacketButton.sendAndExecute(this.menu.tile.getBlockPos(), ButtonResult.STACK_SIZE_MODULE_BUTTON);
2020-04-18 22:30:14 +02:00
b.setMessage(buttonText.get());
2023-07-07 19:54:52 +02:00
}).bounds(this.leftPos + 7, this.topPos + 17 + 32 + 10 + 22, 120, 20).build());
2020-04-18 22:30:14 +02:00
}
@Override
2023-07-07 19:54:52 +02:00
protected void renderLabels(GuiGraphics graphics, int mouseX, int mouseY) {
super.renderLabels(graphics, mouseX, mouseY);
2023-07-07 20:44:52 +02:00
graphics.drawString(this.font, I18n.get("info." + PrettyPipes.ID + ".max_stack_size") + ":", 7, 17 + 32, 4210752, false);
2020-04-18 22:30:14 +02:00
}
}