diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/GuiBase.java b/RebornCore/src/client/java/reborncore/client/gui/builder/GuiBase.java index 709c983ab..3b71690f5 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/GuiBase.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/GuiBase.java @@ -75,7 +75,6 @@ public class GuiBase extends HandledScreen { .stack(guiTab -> wrenchStack) .draw(SlotConfigGui::draw) .click(SlotConfigGui::mouseClicked) - .mouseReleased(SlotConfigGui::mouseReleased) .hideGuiElements() .keyPressed((guiBase, keyCode, scanCode, modifiers) -> { if (hasControlDown() && keyCode == GLFW.GLFW_KEY_C) { @@ -106,7 +105,6 @@ public class GuiBase extends HandledScreen { .stack(guiTab -> GuiBase.fluidCellProvider.provide(Fluids.LAVA)) .draw(FluidConfigGui::draw) .click(FluidConfigGui::mouseClicked) - .mouseReleased(FluidConfigGui::mouseReleased) .hideGuiElements() ); @@ -324,17 +322,6 @@ public class GuiBase extends HandledScreen { return super.mouseClicked(mouseX, mouseY, mouseButton); } - // @Override - // protected void mouseClickMove(double mouseX, double mouseY, int clickedMouseButton, long timeSinceLastClick) { - // if (isConfigEnabled() && slotConfigType == SlotConfigType.ITEMS && getMachine().hasSlotConfig()) { - // GuiSlotConfiguration.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick, this); - // } - // if (isConfigEnabled() && slotConfigType == SlotConfigType.FLUIDS && getMachine().showTankConfig()) { - // GuiFluidConfiguration.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick, this); - // } - // super.mouseClickMove(mouseX, mouseY, clickedMouseButton, timeSinceLastClick); - // } - @Override public boolean mouseReleased(double mouseX, double mouseY, int state) { int offset = 0; @@ -354,9 +341,6 @@ public class GuiBase extends HandledScreen { offset -= 24; } - if (getTab().map(guiTab -> guiTab.mouseReleased(mouseX, mouseY, state)).orElse(false)) { - return true; - } return super.mouseReleased(mouseX, mouseY, state); } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/FluidConfigGui.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/FluidConfigGui.java index dab685eb3..20aeab7bb 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/FluidConfigGui.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/FluidConfigGui.java @@ -34,6 +34,7 @@ import reborncore.client.gui.builder.slot.elements.SlotType; import java.util.Collections; import java.util.List; +// Why is this static? public class FluidConfigGui { static ConfigFluidElement fluidConfigElement; @@ -43,7 +44,7 @@ public class FluidConfigGui { } public static void draw(DrawContext drawContext, GuiBase guiBase, int mouseX, int mouseY) { - fluidConfigElement.draw(drawContext, guiBase); + fluidConfigElement.draw(drawContext, guiBase, mouseX, mouseY); } public static List getVisibleElements() { @@ -52,50 +53,17 @@ public class FluidConfigGui { public static boolean mouseClicked(GuiBase guiBase, double mouseX, double mouseY, int mouseButton) { if (mouseButton == 0) { - for (ConfigFluidElement configFluidElement : getVisibleElements()) { - for (ElementBase element : configFluidElement.elements) { - if (element.isInRect(guiBase, element.getX(), element.getY(), element.getWidth(guiBase.getMachine()), element.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - element.isPressing = true; - for (ElementBase e : getVisibleElements()) { - if (e != element) { - e.isPressing = false; - } + for (ConfigFluidElement configSlotElement : getVisibleElements()) { + for (ElementBase element : Lists.reverse(configSlotElement.elements)) { + if (element.isMouseWithinRect(guiBase, mouseX, mouseY)) { + if (element.onClick(guiBase.getMachine(), guiBase, mouseX, mouseY)) { + return true; } - } else { - element.isPressing = false; } } } } + return !getVisibleElements().isEmpty(); } - - public static boolean mouseReleased(GuiBase guiBase, double mouseX, double mouseY, int mouseButton) { - boolean clicked = false; - if (mouseButton == 0) { - for (ConfigFluidElement configFluidElement : getVisibleElements()) { - if (configFluidElement.isInRect(guiBase, configFluidElement.getX(), configFluidElement.getY(), configFluidElement.getWidth(guiBase.getMachine()), configFluidElement.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - clicked = true; - } - for (ElementBase element : Lists.reverse(configFluidElement.elements)) { - if (element.isInRect(guiBase, element.getX(), element.getY(), element.getWidth(guiBase.getMachine()), element.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - element.isReleasing = true; - boolean action = element.onRelease(guiBase.getMachine(), guiBase, mouseX, mouseY); - for (ElementBase e : getVisibleElements()) { - if (e != element) { - e.isReleasing = false; - } - } - if (action) { - clicked = true; - } - break; - } else { - element.isReleasing = false; - } - } - } - } - return clicked; - } } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/GuiTab.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/GuiTab.java index 0724b6460..dd1755dcf 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/GuiTab.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/GuiTab.java @@ -71,10 +71,6 @@ public class GuiTab { return builder.click.click(guiBase, mouseX, mouseY, mouseButton); } - public boolean mouseReleased(double mouseX, double mouseY, int mouseButton) { - return builder.mouseReleased.mouseReleased(guiBase, mouseX, mouseY, mouseButton); - } - public boolean keyPress(int keyCode, int scanCode, int modifiers) { return builder.keyPressed.keyPress(guiBase, keyCode, scanCode, modifiers); } @@ -101,7 +97,6 @@ public class GuiTab { private Draw draw = (matrixStack, gui, x, y) -> { }; private Click click = (guiBase, mouseX, mouseY, mouseButton) -> false; - private MouseReleased mouseReleased = (guiBase, mouseX, mouseY, state) -> false; private KeyPressed keyPressed = (guiBase, keyCode, scanCode, modifiers) -> false; private Consumer> tips = strings -> { }; @@ -136,11 +131,6 @@ public class GuiTab { return this; } - public Builder mouseReleased(MouseReleased mouseReleased) { - this.mouseReleased = mouseReleased; - return this; - } - public Builder keyPressed(KeyPressed keyPressed) { this.keyPressed = keyPressed; return this; @@ -169,10 +159,6 @@ public class GuiTab { boolean click(GuiBase guiBase, double mouseX, double mouseY, int mouseButton); } - public interface MouseReleased { - boolean mouseReleased(GuiBase guiBase, double mouseX, double mouseY, int state); - } - public interface KeyPressed { boolean keyPress(GuiBase guiBase, int keyCode, int scanCode, int modifiers); } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/SlotConfigGui.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/SlotConfigGui.java index 003daa347..ce424678e 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/SlotConfigGui.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/SlotConfigGui.java @@ -46,6 +46,7 @@ import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; +// Why is all this static? public class SlotConfigGui { public static HashMap slotElementMap = new HashMap<>(); @@ -84,7 +85,7 @@ public class SlotConfigGui { } if (selectedSlot != -1) { - slotElementMap.get(selectedSlot).draw(drawContext, guiBase); + slotElementMap.get(selectedSlot).draw(drawContext, guiBase, mouseX, mouseY); } } @@ -134,22 +135,6 @@ public class SlotConfigGui { } public static boolean mouseClicked(GuiBase guiBase, double mouseX, double mouseY, int mouseButton) { - if (mouseButton == 0) { - for (ConfigSlotElement configSlotElement : getVisibleElements()) { - for (ElementBase element : configSlotElement.elements) { - if (element.isInRect(guiBase, element.getX(), element.getY(), element.getWidth(guiBase.getMachine()), element.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - element.isPressing = true; - for (ElementBase e : getVisibleElements()) { - if (e != element) { - e.isPressing = false; - } - } - } else { - element.isPressing = false; - } - } - } - } BuiltScreenHandler screenHandler = guiBase.builtScreenHandler; if (getVisibleElements().isEmpty()) { @@ -163,36 +148,19 @@ public class SlotConfigGui { } } } - return !getVisibleElements().isEmpty(); - } - public static boolean mouseReleased(GuiBase guiBase, double mouseX, double mouseY, int mouseButton) { - boolean clicked = false; if (mouseButton == 0) { for (ConfigSlotElement configSlotElement : getVisibleElements()) { - if (configSlotElement.isInRect(guiBase, configSlotElement.getX(), configSlotElement.getY(), configSlotElement.getWidth(guiBase.getMachine()), configSlotElement.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - clicked = true; - } for (ElementBase element : Lists.reverse(configSlotElement.elements)) { - if (element.isInRect(guiBase, element.getX(), element.getY(), element.getWidth(guiBase.getMachine()), element.getHeight(guiBase.getMachine()), mouseX, mouseY)) { - element.isReleasing = true; - boolean action = element.onRelease(guiBase.getMachine(), guiBase, mouseX, mouseY); - for (ElementBase e : getVisibleElements()) { - if (e != element) { - e.isReleasing = false; - } + if (element.isMouseWithinRect(guiBase, mouseX, mouseY)) { + if (element.onClick(guiBase.getMachine(), guiBase, mouseX, mouseY)) { + return true; } - if (action) { - clicked = true; - } - break; - } else { - element.isReleasing = false; } } } } - return clicked; - } + return !getVisibleElements().isEmpty(); + } } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/AbstractConfigPopupElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/AbstractConfigPopupElement.java index 397fa0238..72ac50bdb 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/AbstractConfigPopupElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/AbstractConfigPopupElement.java @@ -44,14 +44,14 @@ import reborncore.common.util.MachineFacing; public abstract class AbstractConfigPopupElement extends ElementBase { public boolean filter = false; - public AbstractConfigPopupElement(int x, int y, ISprite... sprites) { - super(x, y, sprites); + public AbstractConfigPopupElement(int x, int y, Sprite sprite) { + super(x, y, sprite); } @Override - public final void draw(DrawContext drawContext, GuiBase gui) { + public final void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { drawDefaultBackground(drawContext, gui, adjustX(gui, getX() - 8), adjustY(gui, getY() - 7), 84, 105 + (filter ? 15 : 0)); - super.draw(drawContext, gui); + super.draw(drawContext, gui, mouseX, mouseY); final MachineBaseBlockEntity machine = ((MachineBaseBlockEntity) gui.be); final BlockState state = machine.getCachedState(); @@ -75,23 +75,28 @@ public abstract class AbstractConfigPopupElement extends ElementBase { } @Override - public final boolean onRelease(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { + public final boolean onClick(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { if (isInBox(23, 4, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.UP.getFacing(provider), gui); + return true; } else if (isInBox(23, 23, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.FRONT.getFacing(provider), gui); + return true; } else if (isInBox(42, 23, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.RIGHT.getFacing(provider), gui); + return true; } else if (isInBox(4, 23, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.LEFT.getFacing(provider), gui); + return true; } else if (isInBox(23, 42, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.DOWN.getFacing(provider), gui); + return true; } else if (isInBox(42, 42, 16, 16, mouseX, mouseY, gui)) { cycleConfig(MachineFacing.BACK.getFacing(provider), gui); - } else { - return false; + return true; } - return true; + + return false; } protected abstract void cycleConfig(Direction side, GuiBase guiBase); diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ButtonElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ButtonElement.java index 0e7126411..62f161efe 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ButtonElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ButtonElement.java @@ -24,20 +24,29 @@ package reborncore.client.gui.builder.slot.elements; -public class ButtonElement extends ElementBase { - @SuppressWarnings("unused") - private final Sprite.Button buttonSprite; +import net.minecraft.client.gui.DrawContext; +import reborncore.client.gui.builder.GuiBase; +import reborncore.common.blockentity.MachineBaseBlockEntity; - public ButtonElement(int x, int y, Sprite.Button buttonSprite) { +public class ButtonElement extends ElementBase { + private final Sprite.Button buttonSprite; + private final Runnable onClicked; + + public ButtonElement(int x, int y, Sprite.Button buttonSprite, Runnable onClicked) { super(x, y, buttonSprite.normal()); this.buttonSprite = buttonSprite; - // TODO fix hovering, was broken anyway. -// this.addUpdateAction((gui, element) -> { -// if (isHovering) { -// element.container.setSprite(0, buttonSprite.hovered()); -// } else { -// element.container.setSprite(0, buttonSprite.normal()); -// } -// }); + this.onClicked = onClicked; + } + + @Override + public boolean onClick(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { + onClicked.run(); + return true; + } + + @Override + public void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { + setSprite(isMouseWithinRect(gui, mouseX, mouseY) ? buttonSprite.hovered() : buttonSprite.normal()); + super.draw(drawContext, gui, mouseX, mouseY); } } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/CheckBoxElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/CheckBoxElement.java index 2ea84771f..1fb4bab49 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/CheckBoxElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/CheckBoxElement.java @@ -32,47 +32,45 @@ import reborncore.common.blockentity.MachineBaseBlockEntity; import java.util.function.Predicate; public class CheckBoxElement extends ElementBase { - public Text label; - public String type; - public int labelColor, slotID; - public MachineBaseBlockEntity machineBase; - Predicate ticked; - + private final Text label; + private final Predicate ticked; + private final Runnable onChange; private final Sprite.CheckBox checkBoxSprite; - public CheckBoxElement(Text label, int labelColor, int x, int y, String type, int slotID, Sprite.CheckBox checkBoxSprite, MachineBaseBlockEntity machineBase, Predicate ticked) { - super(x, y, checkBoxSprite.normal()); - this.checkBoxSprite = checkBoxSprite; - this.type = type; - this.slotID = slotID; - this.machineBase = machineBase; + public CheckBoxElement(Text label, int x, int y, + Predicate ticked, + Runnable onChange) { + super(x, y, Sprite.LIGHT_CHECK_BOX.normal()); + this.checkBoxSprite = Sprite.LIGHT_CHECK_BOX; this.label = label; - this.labelColor = labelColor; this.ticked = ticked; + this.onChange = onChange; + updateSprites(); + } + + private void updateSprites() { if (ticked.test(this)) { - container.setSprite(0, checkBoxSprite.ticked()); + setSprite(checkBoxSprite.ticked()); } else { - container.setSprite(0, checkBoxSprite.normal()); + setSprite(checkBoxSprite.normal()); } - this.addPressAction((element, gui, provider, mouseX, mouseY) -> { - if (ticked.test(this)) { - element.container.setSprite(0, checkBoxSprite.ticked()); - } else { - element.container.setSprite(0, checkBoxSprite.normal()); - } - return true; - }); } @Override - public void draw(DrawContext drawContext, GuiBase gui) { - // super.draw(gui); - ISprite sprite = checkBoxSprite.normal(); + public boolean onClick(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { + onChange.run(); + updateSprites(); + return true; + } + + @Override + public void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { + Sprite sprite = checkBoxSprite.normal(); if (ticked.test(this)) { sprite = checkBoxSprite.ticked(); } drawSprite(drawContext, gui, sprite, getX(), getY() ); - drawText(drawContext, gui, label, getX() + checkBoxSprite.normal().width + 5, ((getY() + getHeight(gui.getMachine()) / 2) - (gui.getTextRenderer().fontHeight / 2)), labelColor); + drawText(drawContext, gui, label, getX() + checkBoxSprite.normal().width() + 5, ((getY() + getHeight() / 2) - (gui.getTextRenderer().fontHeight / 2)), 0xFFFFFFFF); } } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigFluidElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigFluidElement.java index 54a418e1e..3a5d31454 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigFluidElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigFluidElement.java @@ -46,33 +46,33 @@ public class ConfigFluidElement extends ElementBase { FluidConfigPopupElement popupElement; elements.add(popupElement = new FluidConfigPopupElement(x - 22, y - 22, this)); - elements.add(new ButtonElement(x + 37, y - 25, Sprite.EXIT_BUTTON).addReleaseAction((element, gui1, provider, mouseX, mouseY) -> { - gui.closeSelectedTab(); - return true; - })); + elements.add(new ButtonElement(x + 37, y - 25, Sprite.EXIT_BUTTON, gui::closeSelectedTab)); - elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.fluidconfig.pullin"), 0xFFFFFFFF, x - 26, y + 42, "input", 0, Sprite.LIGHT_CHECK_BOX, gui.getMachine(), - checkBoxElement -> checkBoxElement.machineBase.fluidConfiguration.autoInput()).addPressAction((element, gui12, provider, mouseX, mouseY) -> { - popupElement.updateCheckBox((CheckBoxElement) element, "input", gui12); - return true; - })); - elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.fluidconfig.pumpout"), 0xFFFFFFFF, x - 26, y + 57, "output", 0, Sprite.LIGHT_CHECK_BOX, gui.getMachine(), - checkBoxElement -> checkBoxElement.machineBase.fluidConfiguration.autoOutput()).addPressAction((element, gui13, provider, mouseX, mouseY) -> { - popupElement.updateCheckBox((CheckBoxElement) element, "output", gui13); - return true; - })); - - setWidth(85); - setHeight(105 + (filter ? 15 : 0)); + elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.fluidconfig.pullin"), x - 26, y + 42, + checkBoxElement -> gui.getMachine().fluidConfiguration.autoInput(), + () -> popupElement.updateCheckBox("input", gui))); + elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.fluidconfig.pumpout"), x - 26, y + 57, + checkBoxElement -> gui.getMachine().fluidConfiguration.autoOutput(), + () -> popupElement.updateCheckBox("output", gui))); } @Override - public void draw(DrawContext drawContext, GuiBase gui) { - super.draw(drawContext, gui); - if (isHovering) { + public int getWidth() { + return 85; + } + + @Override + public int getHeight() { + return 105 + (filter ? 15 : 0); + } + + @Override + public void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { + super.draw(drawContext, gui, mouseX, mouseY); + if (isMouseWithinRect(gui, mouseX, mouseY)) { drawSprite(drawContext, gui, type.getButtonHoverOverlay(), getX(), getY()); } - elements.forEach(elementBase -> elementBase.draw(drawContext, gui)); + elements.forEach(elementBase -> elementBase.draw(drawContext, gui, mouseX, mouseY)); } public SlotType getType() { diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigSlotElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigSlotElement.java index 0614dfe01..4b7e316bd 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigSlotElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ConfigSlotElement.java @@ -62,55 +62,56 @@ public class ConfigSlotElement extends ElementBase { .allMatch(BaseSlot::canWorldBlockInsert); - elements.add(popupElement = new SlotConfigPopupElement(this.id, x - 22, y - 22, this, inputEnabled)); - elements.add(new ButtonElement(x + 37, y - 25, Sprite.EXIT_BUTTON).addReleaseAction((element, gui1, provider, mouseX, mouseY) -> { + elements.add(popupElement = new SlotConfigPopupElement(this.id, x - 22, y - 22, inputEnabled)); + elements.add(new ButtonElement(x + 37, y - 25, Sprite.EXIT_BUTTON, () -> { SlotConfigGui.selectedSlot = -1; gui.closeSelectedTab(); - return true; })); if (inputEnabled) { - elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.autoinput"), 0xFFFFFFFF, x - 26, y + 42, "input", slotId, Sprite.LIGHT_CHECK_BOX, gui.getMachine(), - checkBoxElement -> checkBoxElement.machineBase.getSlotConfiguration().getSlotDetails(checkBoxElement.slotID).autoInput()).addPressAction((element, gui12, provider, mouseX, mouseY) -> { - popupElement.updateCheckBox((CheckBoxElement) element, "input", gui12); - return true; - })); + elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.autoinput"), x - 26, y + 42, + checkBoxElement -> gui.getMachine().getSlotConfiguration().getSlotDetails(slotId).autoInput(), + () -> popupElement.updateCheckBox("input", gui))); } - elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.autooutput"), 0xFFFFFFFF, x - 26, y + 57, "output", slotId, Sprite.LIGHT_CHECK_BOX, gui.getMachine(), - checkBoxElement -> checkBoxElement.machineBase.getSlotConfiguration().getSlotDetails(checkBoxElement.slotID).autoOutput()).addPressAction((element, gui13, provider, mouseX, mouseY) -> { - popupElement.updateCheckBox((CheckBoxElement) element, "output", gui13); - return true; - })); + elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.autooutput"), x - 26, y + 57, + checkBoxElement -> gui.getMachine().getSlotConfiguration().getSlotDetails(slotId).autoOutput(), + () -> popupElement.updateCheckBox("output", gui))); if (gui.getMachine() instanceof SlotConfiguration.SlotFilter slotFilter) { if (Arrays.stream(slotFilter.getInputSlots()).anyMatch(value -> value == slotId)) { - elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.filter_input"), 0xFFFFFFFF, x - 26, y + 72, "filter", slotId, Sprite.LIGHT_CHECK_BOX, gui.getMachine(), - checkBoxElement -> checkBoxElement.machineBase.getSlotConfiguration().getSlotDetails(checkBoxElement.slotID).filter()).addPressAction((element, gui13, provider, mouseX, mouseY) -> { - popupElement.updateCheckBox((CheckBoxElement) element, "filter", gui13); - return true; - })); + elements.add(new CheckBoxElement(Text.translatable("reborncore.gui.slotconfig.filter_input"), x - 26, y + 72, + checkBoxElement -> gui.getMachine().getSlotConfiguration().getSlotDetails(slotId).filter(), + () -> popupElement.updateCheckBox("filter", gui))); filter = true; popupElement.filter = true; } } - setWidth(85); - setHeight(105 + (filter ? 15 : 0)); } @Override - public void draw(DrawContext drawContext, GuiBase gui) { - super.draw(drawContext, gui); + public int getWidth() { + return 85; + } + + @Override + public int getHeight() { + return 105 + (filter ? 15 : 0); + } + + @Override + public void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { + super.draw(drawContext, gui, mouseX, mouseY); ItemStack stack = inventory.getStack(id); int xPos = getX() + 1 + gui.getGuiLeft(); int yPos = getY() + 1 + gui.getGuiTop(); drawContext.drawItemInSlot(gui.getTextRenderer(), stack, xPos, yPos); - if (isHovering) { + if (isMouseWithinRect(gui, mouseX, mouseY)) { drawSprite(drawContext, gui, type.getButtonHoverOverlay(), getX(), getY()); } - elements.forEach(elementBase -> elementBase.draw(drawContext, gui)); + elements.forEach(elementBase -> elementBase.draw(drawContext, gui, mouseX, mouseY)); } public SlotType getType() { diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ElementBase.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ElementBase.java index 61eb33c34..826e224cd 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ElementBase.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ElementBase.java @@ -32,54 +32,25 @@ import reborncore.client.gui.builder.GuiBase; import reborncore.client.gui.guibuilder.GuiBuilder; import reborncore.common.blockentity.MachineBaseBlockEntity; -import java.util.ArrayList; -import java.util.List; - public class ElementBase { private final int x; private final int y; - public boolean isHovering = false; - public boolean isPressing = false; - public boolean isReleasing = false; - public List pressActions = new ArrayList<>(); - public List releaseActions = new ArrayList<>(); - public SpriteContainer container; - - private int width; - private int height; + private Sprite sprite; public static final Identifier MECH_ELEMENTS = new Identifier("reborncore", "textures/gui/elements.png"); - public ElementBase(int x, int y, ISprite... sprites) { - this.container = new SpriteContainer(); - for (ISprite sprite : sprites) { - container.addSprite(sprite); - } + public ElementBase(int x, int y, Sprite sprite) { + this.sprite = sprite; this.x = x; this.y = y; } - public SpriteContainer getSpriteContainer() { - return container; + protected void setSprite(Sprite sprite) { + this.sprite = sprite; } - public void adjustDimensions(MachineBaseBlockEntity provider) { - if (container.offsetSprites != null) { - for (OffsetSprite offsetSprite : container.offsetSprites) { - if (offsetSprite.getSprite().getSprite(provider).width + offsetSprite.getOffsetX(provider) > this.width) { - this.width = offsetSprite.getSprite().getSprite(provider).width + offsetSprite.getOffsetX(provider); - } - if (offsetSprite.getSprite().getSprite(provider).height + offsetSprite.getOffsetY(provider) > this.height) { - this.height = offsetSprite.getSprite().getSprite(provider).height + offsetSprite.getOffsetY(provider); - } - } - } - } - - public void draw(DrawContext drawContext, GuiBase gui) { - for (OffsetSprite sprite : getSpriteContainer().offsetSprites) { - drawSprite(drawContext, gui, sprite.getSprite(), x + sprite.getOffsetX(gui.getMachine()), y + sprite.getOffsetY(gui.getMachine())); - } + public void draw(DrawContext drawContext, GuiBase gui, int mouseX, int mouseY) { + drawSprite(drawContext, gui, sprite, x, y); } public int getX() { @@ -90,62 +61,16 @@ public class ElementBase { return y; } - public int getWidth(MachineBaseBlockEntity provider) { - adjustDimensions(provider); - return width; - } - - public int getHeight(MachineBaseBlockEntity provider) { - adjustDimensions(provider); - return height; - } - - public void setWidth(int width) { - this.width = width; - } - - public void setHeight(int height) { - this.height = height; - } - public int getWidth() { - return width; + return sprite.width(); } public int getHeight() { - return height; + return sprite.height(); } - public ElementBase addPressAction(ElementBase.Action action) { - this.pressActions.add(action); - return this; - } - - public ElementBase addReleaseAction(ElementBase.Action action) { - this.releaseActions.add(action); - return this; - } - - public boolean onRelease(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { - for (ElementBase.Action action : releaseActions) { - if (action.execute(this, gui, provider, mouseX, mouseY)) { - return true; - } - } - if (isPressing) { - for (ElementBase.Action action : pressActions) { - action.execute(this, gui, provider, mouseX, mouseY); - } - } - return !releaseActions.isEmpty() || !pressActions.isEmpty(); - } - - public interface Action { - boolean execute(ElementBase element, GuiBase gui, MachineBaseBlockEntity provider, double mouseX, double mouseY); - } - - public interface UpdateAction { - void update(GuiBase gui, ElementBase element); + public boolean onClick(MachineBaseBlockEntity provider, GuiBase gui, double mouseX, double mouseY) { + return false; } public int adjustX(GuiBase gui, int x) { @@ -156,7 +81,11 @@ public class ElementBase { return gui.getGuiTop() + y; } - public boolean isInRect(GuiBase gui, int x, int y, int xSize, int ySize, double mouseX, double mouseY) { + public boolean isMouseWithinRect(GuiBase gui, double mouseX, double mouseY) { + return isInRect(gui, getX(), getY(), getWidth(), getHeight(), mouseX, mouseY); + } + + public static boolean isInRect(GuiBase gui, int x, int y, int xSize, int ySize, double mouseX, double mouseY) { return gui.isPointInRect(x + gui.getGuiLeft(), y + gui.getGuiTop(), xSize, ySize, mouseX, mouseY); } @@ -166,16 +95,8 @@ public class ElementBase { drawContext.drawText(gui.getTextRenderer(), text, x, y, color, false); } - public void drawSprite(DrawContext drawContext, GuiBase gui, ISprite iSprite, int x, int y) { - Sprite sprite = iSprite.getSprite(gui.getMachine()); - if (sprite != null) { - if (sprite.hasTextureInfo()) { - drawContext.drawTexture(sprite.textureLocation, x + gui.getGuiLeft(), y + gui.getGuiTop(), sprite.x, sprite.y, sprite.width, sprite.height); - } - if (sprite.hasStack()) { - drawContext.drawItem(sprite.itemStack, x + gui.getGuiLeft(), y + gui.getGuiTop()); - } - } + public void drawSprite(DrawContext drawContext, GuiBase gui, Sprite sprite, int x, int y) { + drawContext.drawTexture(sprite.textureLocation(), x + gui.getGuiLeft(), y + gui.getGuiTop(), sprite.x(), sprite.y(), sprite.width(), sprite.height()); } public void drawDefaultBackground(DrawContext drawContext, Screen gui, int x, int y, int width, int height) { diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/FluidConfigPopupElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/FluidConfigPopupElement.java index 4bf1328ea..0b0319d9d 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/FluidConfigPopupElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/FluidConfigPopupElement.java @@ -53,7 +53,7 @@ public class FluidConfigPopupElement extends AbstractConfigPopupElement { ClientNetworkManager.sendToServer(packetSave); } - public void updateCheckBox(CheckBoxElement checkBoxElement, String type, GuiBase guiBase) { + public void updateCheckBox(String type, GuiBase guiBase) { FluidConfiguration configHolder = guiBase.getMachine().fluidConfiguration; boolean input = configHolder.autoInput(); boolean output = configHolder.autoOutput(); diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ISprite.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ISprite.java deleted file mode 100644 index 7325b2cae..000000000 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/ISprite.java +++ /dev/null @@ -1,31 +0,0 @@ -/* - * This file is part of RebornCore, licensed under the MIT License (MIT). - * - * Copyright (c) 2021 TeamReborn - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package reborncore.client.gui.builder.slot.elements; - -import reborncore.common.blockentity.MachineBaseBlockEntity; - -public interface ISprite { - Sprite getSprite(MachineBaseBlockEntity provider); -} diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/OffsetSprite.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/OffsetSprite.java deleted file mode 100644 index d06a3a4fb..000000000 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/OffsetSprite.java +++ /dev/null @@ -1,69 +0,0 @@ -/* - * This file is part of RebornCore, licensed under the MIT License (MIT). - * - * Copyright (c) 2021 TeamReborn - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package reborncore.client.gui.builder.slot.elements; - -import reborncore.common.blockentity.MachineBaseBlockEntity; - -public class OffsetSprite { - public ISprite sprite; - public int offsetX = 0; - public int offsetY = 0; - - public OffsetSprite(ISprite sprite, int offsetX, int offsetY) { - this.sprite = sprite; - this.offsetX = offsetX; - this.offsetY = offsetY; - } - - public OffsetSprite(ISprite sprite) { - this.sprite = sprite; - } - - public OffsetSprite(Sprite sprite, MachineBaseBlockEntity provider) { - this.sprite = sprite; - } - - public ISprite getSprite() { - return sprite; - } - - public int getOffsetX(MachineBaseBlockEntity provider) { - return offsetX + sprite.getSprite(provider).offsetX; - } - - public OffsetSprite setOffsetX(int offsetX) { - this.offsetX = offsetX; - return this; - } - - public int getOffsetY(MachineBaseBlockEntity provider) { - return offsetY + sprite.getSprite(provider).offsetY; - } - - public OffsetSprite setOffsetY(int offsetY) { - this.offsetY = offsetY; - return this; - } -} diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotConfigPopupElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotConfigPopupElement.java index 7b2249ca2..907125e7f 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotConfigPopupElement.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotConfigPopupElement.java @@ -35,14 +35,12 @@ import reborncore.common.network.ServerBoundPackets; import reborncore.common.util.Color; public class SlotConfigPopupElement extends AbstractConfigPopupElement { - int id; - ConfigSlotElement slotElement; - boolean allowInput; + private final int id; + private final boolean allowInput; - public SlotConfigPopupElement(int slotId, int x, int y, ConfigSlotElement slotElement, boolean allowInput) { + public SlotConfigPopupElement(int slotId, int x, int y, boolean allowInput) { super(x, y, Sprite.SLOT_CONFIG_POPUP); this.id = slotId; - this.slotElement = slotElement; this.allowInput = allowInput; } @@ -62,7 +60,7 @@ public class SlotConfigPopupElement extends AbstractConfigPopupElement { ClientNetworkManager.sendToServer(packetSlotSave); } - public void updateCheckBox(CheckBoxElement checkBoxElement, String type, GuiBase guiBase) { + public void updateCheckBox(String type, GuiBase guiBase) { SlotConfiguration.SlotConfigHolder configHolder = guiBase.getMachine().getSlotConfiguration().getSlotDetails(id); boolean input = configHolder.autoInput(); boolean output = configHolder.autoOutput(); diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotElement.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotElement.java deleted file mode 100644 index d80598bee..000000000 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotElement.java +++ /dev/null @@ -1,62 +0,0 @@ -/* - * This file is part of RebornCore, licensed under the MIT License (MIT). - * - * Copyright (c) 2021 TeamReborn - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package reborncore.client.gui.builder.slot.elements; - -import net.minecraft.inventory.Inventory; - -public class SlotElement extends ElementBase { - protected Inventory slotInventory; - protected SlotType type; - int slotId, slotX, slotY; - - public SlotElement(Inventory slotInventory, int slotId, int slotX, int slotY, SlotType type, int x, int y) { - super(x, y, type.getSprite()); - this.type = type; - this.slotInventory = slotInventory; - this.slotId = slotId; - this.slotX = slotX; - this.slotY = slotY; - } - - public SlotType getType() { - return type; - } - - public Inventory getSlotInventory() { - return slotInventory; - } - - public int getSlotId() { - return slotId; - } - - public int getSlotX() { - return slotX; - } - - public int getSlotY() { - return slotY; - } -} diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotType.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotType.java index 5208c3d60..64eb4ebbc 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotType.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SlotType.java @@ -41,20 +41,6 @@ public enum SlotType { this.buttonHoverOverlay = buttonHoverOverlay; } - SlotType(int slotOffset, Sprite sprite) { - this.slotOffsetX = slotOffset; - this.slotOffsetY = slotOffset; - this.sprite = sprite; - } - - public int getSlotOffsetX() { - return slotOffsetX; - } - - public int getSlotOffsetY() { - return slotOffsetY; - } - public Sprite getSprite() { return sprite; } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/Sprite.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/Sprite.java index d4828c1ac..7d58371f9 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/Sprite.java +++ b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/Sprite.java @@ -24,13 +24,9 @@ package reborncore.client.gui.builder.slot.elements; -import net.minecraft.block.Blocks; -import net.minecraft.item.ItemStack; -import net.minecraft.item.Items; import net.minecraft.util.Identifier; -import reborncore.common.blockentity.MachineBaseBlockEntity; -public class Sprite implements ISprite { +public record Sprite(Identifier textureLocation, int x, int y, int width, int height) { public static final Sprite EMPTY = new Sprite(ElementBase.MECH_ELEMENTS, 0, 0, 0, 0); public static final Sprite SLOT_NORMAL = new Sprite(ElementBase.MECH_ELEMENTS, 0, 0, 18, 18); public static final Sprite CHARGE_SLOT_ICON = new Sprite(ElementBase.MECH_ELEMENTS, 18, 0, 18, 18); @@ -42,9 +38,6 @@ public class Sprite implements ISprite { public static final Sprite LEFT_TAB = new Sprite(ElementBase.MECH_ELEMENTS, 0, 86, 23, 26); public static final Sprite LEFT_TAB_SELECTED = new Sprite(ElementBase.MECH_ELEMENTS, 0, 60, 29, 26); public static final Sprite CONFIGURE_ICON = new Sprite(ElementBase.MECH_ELEMENTS, 26, 18, 16, 16); - public static final Sprite REDSTONE_DISABLED_ICON = new Sprite(new ItemStack(Items.GUNPOWDER)); - public static final Sprite REDSTONE_LOW_ICON = new Sprite(new ItemStack(Items.REDSTONE)); - public static final Sprite REDSTONE_HIGH_ICON = new Sprite(new ItemStack(Blocks.REDSTONE_TORCH)); public static final Sprite UPGRADE_ICON = new Sprite(ElementBase.MECH_ELEMENTS, 26, 34, 16, 16); public static final Sprite ENERGY_ICON = new Sprite(ElementBase.MECH_ELEMENTS, 46, 19, 9, 13); public static final Sprite ENERGY_ICON_EMPTY = new Sprite(ElementBase.MECH_ELEMENTS, 62, 19, 9, 13); @@ -57,65 +50,14 @@ public class Sprite implements ISprite { public static final Sprite.CheckBox DARK_CHECK_BOX = new Sprite.CheckBox(new Sprite(ElementBase.MECH_ELEMENTS, 74, 18, 13, 13), new Sprite(ElementBase.MECH_ELEMENTS, 87, 18, 16, 13)); public static final Sprite.CheckBox LIGHT_CHECK_BOX = new Sprite.CheckBox(new Sprite(ElementBase.MECH_ELEMENTS, 74, 31, 13, 13), new Sprite(ElementBase.MECH_ELEMENTS, 87, 31, 16, 13)); - public final Identifier textureLocation; - public final int x; - public final int y; - public final int width; - public final int height; - public int offsetX = 0; - public int offsetY = 0; - public ItemStack itemStack; - - public Sprite(Identifier textureLocation, int x, int y, int width, int height) { - this.textureLocation = textureLocation; - this.x = x; - this.y = y; - this.width = width; - this.height = height; - this.itemStack = null; - } - - public Sprite(ItemStack stack) { - this.textureLocation = null; - this.x = -1; - this.y = -1; - this.width = -1; - this.height = -1; - this.itemStack = stack; - } - - public boolean hasStack() { - return itemStack != null; - } - - public boolean hasTextureInfo() { - return x >= 0 && y >= 0 && width >= 0 && height >= 0; - } - - public Sprite setOffsetX(int offsetX) { - this.offsetX = offsetX; - return this; - } - - public Sprite setOffsetY(int offsetY) { - this.offsetY = offsetY; - return this; - } - - @Override - public Sprite getSprite(MachineBaseBlockEntity provider) { - return this; + public Sprite { + assert x >= 0 && y >= 0 && width >= 0 && height >= 0; } public record Button(Sprite normal, Sprite hovered) { } - public record ToggleButton(Sprite normal, - Sprite hovered, - Sprite pressed) { - } - public record CheckBox(Sprite normal, Sprite ticked) { } diff --git a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SpriteContainer.java b/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SpriteContainer.java deleted file mode 100644 index 17fd403d2..000000000 --- a/RebornCore/src/client/java/reborncore/client/gui/builder/slot/elements/SpriteContainer.java +++ /dev/null @@ -1,78 +0,0 @@ -/* - * This file is part of RebornCore, licensed under the MIT License (MIT). - * - * Copyright (c) 2021 TeamReborn - * - * Permission is hereby granted, free of charge, to any person obtaining a copy - * of this software and associated documentation files (the "Software"), to deal - * in the Software without restriction, including without limitation the rights - * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - * copies of the Software, and to permit persons to whom the Software is - * furnished to do so, subject to the following conditions: - * - * The above copyright notice and this permission notice shall be included in all - * copies or substantial portions of the Software. - * - * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE - * SOFTWARE. - */ - -package reborncore.client.gui.builder.slot.elements; - -import java.util.ArrayList; -import java.util.List; - -public class SpriteContainer { - public List offsetSprites = new ArrayList<>(); - - public SpriteContainer setSprite(int index, OffsetSprite sprite) { - offsetSprites.set(index, sprite); - return this; - } - - public SpriteContainer setSprite(int index, ISprite sprite, int offsetX, int offsetY) { - if (sprite instanceof Sprite) { - offsetSprites.set(index, new OffsetSprite(sprite).setOffsetX(((Sprite) sprite).offsetX + offsetX).setOffsetY(((Sprite) sprite).offsetY + offsetY)); - } else { - offsetSprites.set(index, new OffsetSprite(sprite, offsetX, offsetY)); - } - return this; - } - - public SpriteContainer setSprite(int index, ISprite sprite) { - if (sprite instanceof Sprite) { - offsetSprites.set(index, new OffsetSprite(sprite).setOffsetX(((Sprite) sprite).offsetX).setOffsetY(((Sprite) sprite).offsetY)); - } else { - offsetSprites.add(index, new OffsetSprite(sprite)); - } - return this; - } - - public SpriteContainer addSprite(OffsetSprite sprite) { - offsetSprites.add(sprite); - return this; - } - - public SpriteContainer addSprite(ISprite sprite, int offsetX, int offsetY) { - if (sprite instanceof Sprite) { - offsetSprites.add(new OffsetSprite(sprite).setOffsetX(((Sprite) sprite).offsetX + offsetX).setOffsetY(((Sprite) sprite).offsetY + offsetY)); - } else { - offsetSprites.add(new OffsetSprite(sprite, offsetX, offsetY)); - } - return this; - } - - public SpriteContainer addSprite(ISprite sprite) { - if (sprite instanceof Sprite) { - offsetSprites.add(new OffsetSprite(sprite).setOffsetX(((Sprite) sprite).offsetX).setOffsetY(((Sprite) sprite).offsetY)); - } else { - offsetSprites.add(new OffsetSprite(sprite)); - } - return this; - } -} diff --git a/RebornCore/src/client/java/reborncore/client/gui/guibuilder/GuiBuilder.java b/RebornCore/src/client/java/reborncore/client/gui/guibuilder/GuiBuilder.java index 1b9e9a977..c4174b407 100644 --- a/RebornCore/src/client/java/reborncore/client/gui/guibuilder/GuiBuilder.java +++ b/RebornCore/src/client/java/reborncore/client/gui/guibuilder/GuiBuilder.java @@ -116,25 +116,6 @@ public class GuiBuilder { drawContext.drawTexture(resourceLocation, x, y, 174, 0, 26, 26); } - /** - * Draws button with JEI icon in the given coords. - * - * @param gui {@link GuiBase} The GUI to draw on - * @param x {@code int} Top left corner where to place button - * @param y {@code int} Top left corner where to place button - * @param layer {@link GuiBase.Layer} The layer to draw on - */ - public void drawJEIButton(DrawContext drawContext, GuiBase gui, int x, int y, GuiBase.Layer layer) { - if (gui.hideGuiElements()) return; - if (FabricLoader.getInstance().isModLoaded("jei")) { - if (layer == GuiBase.Layer.BACKGROUND) { - x += gui.getGuiLeft(); - y += gui.getGuiTop(); - } - drawContext.drawTexture(resourceLocation, x, y, 202, 0, 12, 12); - } - } - /** * Draws lock button in either locked or unlocked state * diff --git a/src/client/java/techreborn/client/gui/GuiAlloySmelter.java b/src/client/java/techreborn/client/gui/GuiAlloySmelter.java index 83d74bb90..b1008f473 100644 --- a/src/client/java/techreborn/client/gui/GuiAlloySmelter.java +++ b/src/client/java/techreborn/client/gui/GuiAlloySmelter.java @@ -51,8 +51,6 @@ public class GuiAlloySmelter extends GuiBase { drawSlot(drawContext, 34, 47, layer); drawSlot(drawContext, 126, 47, layer); drawOutputSlot(drawContext, 80, 47, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiAssemblingMachine.java b/src/client/java/techreborn/client/gui/GuiAssemblingMachine.java index 5f25eec2b..3baffe608 100644 --- a/src/client/java/techreborn/client/gui/GuiAssemblingMachine.java +++ b/src/client/java/techreborn/client/gui/GuiAssemblingMachine.java @@ -53,8 +53,6 @@ public class GuiAssemblingMachine extends GuiBase { drawSlot(drawContext, 55, 55, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiBlastFurnace.java b/src/client/java/techreborn/client/gui/GuiBlastFurnace.java index f04464b1c..a99ecfe95 100644 --- a/src/client/java/techreborn/client/gui/GuiBlastFurnace.java +++ b/src/client/java/techreborn/client/gui/GuiBlastFurnace.java @@ -61,7 +61,6 @@ public class GuiBlastFurnace extends GuiBase { drawSlot(drawContext, 50, 47, layer); drawOutputSlotBar(drawContext, 92, 36, 2, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (hasMultiBlock) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiBlockBreaker.java b/src/client/java/techreborn/client/gui/GuiBlockBreaker.java index bf2f99dd9..f5f24e530 100644 --- a/src/client/java/techreborn/client/gui/GuiBlockBreaker.java +++ b/src/client/java/techreborn/client/gui/GuiBlockBreaker.java @@ -54,8 +54,6 @@ public class GuiBlockBreaker extends GuiBase { drawCentredText(drawContext, processor.getStatusEnum().getProgressText(processor.getProgress()), 40, processor.getStatusEnum().getColor(), layer); drawOutputSlot(drawContext, 80, 60, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiBlockPlacer.java b/src/client/java/techreborn/client/gui/GuiBlockPlacer.java index b295f6966..446407092 100644 --- a/src/client/java/techreborn/client/gui/GuiBlockPlacer.java +++ b/src/client/java/techreborn/client/gui/GuiBlockPlacer.java @@ -54,8 +54,6 @@ public class GuiBlockPlacer extends GuiBase { drawCentredText(drawContext, processor.getStatusEnum().getProgressText(processor.getProgress()), 40, processor.getStatusEnum().getColor(), layer); drawSlot(drawContext, 80, 60, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiCentrifuge.java b/src/client/java/techreborn/client/gui/GuiCentrifuge.java index 7ba04765a..c4b68c63a 100644 --- a/src/client/java/techreborn/client/gui/GuiCentrifuge.java +++ b/src/client/java/techreborn/client/gui/GuiCentrifuge.java @@ -54,8 +54,6 @@ public class GuiCentrifuge extends GuiBase { drawSlot(drawContext, 101, 25, layer); drawSlot(drawContext, 120, 44, layer); drawSlot(drawContext, 101, 63, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiChemicalReactor.java b/src/client/java/techreborn/client/gui/GuiChemicalReactor.java index 8b4d4aefb..459b1f930 100644 --- a/src/client/java/techreborn/client/gui/GuiChemicalReactor.java +++ b/src/client/java/techreborn/client/gui/GuiChemicalReactor.java @@ -50,8 +50,6 @@ public class GuiChemicalReactor extends GuiBase { drawSlot(drawContext, 34, 47, layer); drawSlot(drawContext, 126, 47, layer); drawOutputSlot(drawContext, 80, 47, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiCompressor.java b/src/client/java/techreborn/client/gui/GuiCompressor.java index 97538a9cc..3fa66b2b0 100644 --- a/src/client/java/techreborn/client/gui/GuiCompressor.java +++ b/src/client/java/techreborn/client/gui/GuiCompressor.java @@ -49,8 +49,6 @@ public class GuiCompressor extends GuiBase { drawSlot(drawContext, 55, 45, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiDieselGenerator.java b/src/client/java/techreborn/client/gui/GuiDieselGenerator.java index f6b240c1a..e58ab7fe2 100644 --- a/src/client/java/techreborn/client/gui/GuiDieselGenerator.java +++ b/src/client/java/techreborn/client/gui/GuiDieselGenerator.java @@ -46,7 +46,6 @@ public class GuiDieselGenerator extends GuiBase { final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; drawSlot(drawContext, 25, 35, layer); drawSlot(drawContext, 25, 55, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiDistillationTower.java b/src/client/java/techreborn/client/gui/GuiDistillationTower.java index 083d97874..81845a7c2 100644 --- a/src/client/java/techreborn/client/gui/GuiDistillationTower.java +++ b/src/client/java/techreborn/client/gui/GuiDistillationTower.java @@ -52,8 +52,6 @@ public class GuiDistillationTower extends GuiBase { drawSlot(drawContext, 35, 47, layer); // Four output slots drawOutputSlotBar(drawContext, 78, 36, 4, layer); - // JEI Button - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiElectricFurnace.java b/src/client/java/techreborn/client/gui/GuiElectricFurnace.java index a9589c8a7..e37995572 100644 --- a/src/client/java/techreborn/client/gui/GuiElectricFurnace.java +++ b/src/client/java/techreborn/client/gui/GuiElectricFurnace.java @@ -49,8 +49,6 @@ public class GuiElectricFurnace extends GuiBase { drawSlot(drawContext, 55, 45, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiExtractor.java b/src/client/java/techreborn/client/gui/GuiExtractor.java index 81d87119f..41de019a2 100644 --- a/src/client/java/techreborn/client/gui/GuiExtractor.java +++ b/src/client/java/techreborn/client/gui/GuiExtractor.java @@ -49,8 +49,6 @@ public class GuiExtractor extends GuiBase { drawSlot(drawContext, 55, 45, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiFluidReplicator.java b/src/client/java/techreborn/client/gui/GuiFluidReplicator.java index cf1e9c0e3..26c1cadfe 100644 --- a/src/client/java/techreborn/client/gui/GuiFluidReplicator.java +++ b/src/client/java/techreborn/client/gui/GuiFluidReplicator.java @@ -56,8 +56,6 @@ public class GuiFluidReplicator extends GuiBase { drawSlot(drawContext, 124, 35, layer); // Liquid output slot drawSlot(drawContext, 124, 55, layer); - // JEI button - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiFusionReactor.java b/src/client/java/techreborn/client/gui/GuiFusionReactor.java index 76ec6409f..65e04f411 100644 --- a/src/client/java/techreborn/client/gui/GuiFusionReactor.java +++ b/src/client/java/techreborn/client/gui/GuiFusionReactor.java @@ -71,7 +71,6 @@ public class GuiFusionReactor extends GuiBase { drawSlot(drawContext, 126, 47, layer); drawOutputSlot(drawContext, 80, 47, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiGasTurbine.java b/src/client/java/techreborn/client/gui/GuiGasTurbine.java index 376d38263..9304fcdf2 100644 --- a/src/client/java/techreborn/client/gui/GuiGasTurbine.java +++ b/src/client/java/techreborn/client/gui/GuiGasTurbine.java @@ -46,7 +46,6 @@ public class GuiGasTurbine extends GuiBase { final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; drawSlot(drawContext, 25, 35, layer); drawSlot(drawContext, 25, 55, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiGenerator.java b/src/client/java/techreborn/client/gui/GuiGenerator.java index 1227b1c2c..2ea6856d9 100644 --- a/src/client/java/techreborn/client/gui/GuiGenerator.java +++ b/src/client/java/techreborn/client/gui/GuiGenerator.java @@ -45,10 +45,7 @@ public class GuiGenerator extends GuiBase { final Layer layer = Layer.BACKGROUND; drawSlot(drawContext, 8, 72, layer); - drawSlot(drawContext, 80, 54, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiGrinder.java b/src/client/java/techreborn/client/gui/GuiGrinder.java index 3b1ae97f1..5c592083f 100644 --- a/src/client/java/techreborn/client/gui/GuiGrinder.java +++ b/src/client/java/techreborn/client/gui/GuiGrinder.java @@ -48,8 +48,6 @@ public class GuiGrinder extends GuiBase { drawSlot(drawContext, 55, 45, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiImplosionCompressor.java b/src/client/java/techreborn/client/gui/GuiImplosionCompressor.java index 13335f271..aa172b6de 100644 --- a/src/client/java/techreborn/client/gui/GuiImplosionCompressor.java +++ b/src/client/java/techreborn/client/gui/GuiImplosionCompressor.java @@ -56,8 +56,6 @@ public class GuiImplosionCompressor extends GuiBase { if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiIndustrialElectrolyzer.java b/src/client/java/techreborn/client/gui/GuiIndustrialElectrolyzer.java index c230c4ad0..928a45839 100644 --- a/src/client/java/techreborn/client/gui/GuiIndustrialElectrolyzer.java +++ b/src/client/java/techreborn/client/gui/GuiIndustrialElectrolyzer.java @@ -52,7 +52,6 @@ public class GuiIndustrialElectrolyzer extends GuiBase { drawSlot(drawContext, 81, 72, layer); //Output slots drawOutputSlotBar(drawContext, 50, 23, 4, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiIndustrialGrinder.java b/src/client/java/techreborn/client/gui/GuiIndustrialGrinder.java index 9db01eae0..b677a1d40 100644 --- a/src/client/java/techreborn/client/gui/GuiIndustrialGrinder.java +++ b/src/client/java/techreborn/client/gui/GuiIndustrialGrinder.java @@ -60,7 +60,6 @@ public class GuiIndustrialGrinder extends GuiBase { drawSlot(drawContext, 126, 54, layer); drawSlot(drawContext, 126, 72, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiIndustrialSawmill.java b/src/client/java/techreborn/client/gui/GuiIndustrialSawmill.java index a659f4ff3..62663bfef 100644 --- a/src/client/java/techreborn/client/gui/GuiIndustrialSawmill.java +++ b/src/client/java/techreborn/client/gui/GuiIndustrialSawmill.java @@ -59,7 +59,6 @@ public class GuiIndustrialSawmill extends GuiBase { drawSlot(drawContext, 126, 43, layer); drawSlot(drawContext, 126, 61, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiPlasmaGenerator.java b/src/client/java/techreborn/client/gui/GuiPlasmaGenerator.java index 66b51e02a..986c4c3b8 100644 --- a/src/client/java/techreborn/client/gui/GuiPlasmaGenerator.java +++ b/src/client/java/techreborn/client/gui/GuiPlasmaGenerator.java @@ -49,7 +49,6 @@ public class GuiPlasmaGenerator extends GuiBase { final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; drawSlot(drawContext, 25, 35, layer); drawSlot(drawContext, 25, 55, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiRollingMachine.java b/src/client/java/techreborn/client/gui/GuiRollingMachine.java index 85efcb7ef..4e90e96e8 100644 --- a/src/client/java/techreborn/client/gui/GuiRollingMachine.java +++ b/src/client/java/techreborn/client/gui/GuiRollingMachine.java @@ -61,7 +61,6 @@ public class GuiRollingMachine extends GuiBase { drawSlot(drawContext, 8, 70, layer); drawOutputSlot(drawContext, 124, gridYPos + 18, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); builder.drawLockButton(drawContext, this, 130, 4, mouseX, mouseY, layer, rollingMachine.locked); } diff --git a/src/client/java/techreborn/client/gui/GuiScrapboxinator.java b/src/client/java/techreborn/client/gui/GuiScrapboxinator.java index 6681636d4..2d4084808 100644 --- a/src/client/java/techreborn/client/gui/GuiScrapboxinator.java +++ b/src/client/java/techreborn/client/gui/GuiScrapboxinator.java @@ -51,8 +51,6 @@ public class GuiScrapboxinator extends GuiBase { drawSlot(drawContext, 55, 45, layer); // Output slot drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiSemifluidGenerator.java b/src/client/java/techreborn/client/gui/GuiSemifluidGenerator.java index 21123237c..315fa5fc0 100644 --- a/src/client/java/techreborn/client/gui/GuiSemifluidGenerator.java +++ b/src/client/java/techreborn/client/gui/GuiSemifluidGenerator.java @@ -46,7 +46,6 @@ public class GuiSemifluidGenerator extends GuiBase { final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; drawSlot(drawContext, 25, 35, layer); drawSlot(drawContext, 25, 55, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiSolidCanningMachine.java b/src/client/java/techreborn/client/gui/GuiSolidCanningMachine.java index ef21ac728..ba1b3f0d0 100644 --- a/src/client/java/techreborn/client/gui/GuiSolidCanningMachine.java +++ b/src/client/java/techreborn/client/gui/GuiSolidCanningMachine.java @@ -51,8 +51,6 @@ public class GuiSolidCanningMachine extends GuiBase { drawSlot(drawContext, 34, 47, layer); drawSlot(drawContext, 126, 47, layer); drawOutputSlot(drawContext, 80, 47, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override diff --git a/src/client/java/techreborn/client/gui/GuiThermalGenerator.java b/src/client/java/techreborn/client/gui/GuiThermalGenerator.java index 92731712a..339170385 100644 --- a/src/client/java/techreborn/client/gui/GuiThermalGenerator.java +++ b/src/client/java/techreborn/client/gui/GuiThermalGenerator.java @@ -46,7 +46,6 @@ public class GuiThermalGenerator extends GuiBase { final GuiBase.Layer layer = GuiBase.Layer.BACKGROUND; drawSlot(drawContext, 25, 35, layer); drawSlot(drawContext, 25, 55, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiVacuumFreezer.java b/src/client/java/techreborn/client/gui/GuiVacuumFreezer.java index cd871b92b..b81be6f8e 100644 --- a/src/client/java/techreborn/client/gui/GuiVacuumFreezer.java +++ b/src/client/java/techreborn/client/gui/GuiVacuumFreezer.java @@ -54,7 +54,6 @@ public class GuiVacuumFreezer extends GuiBase { // Output slot drawOutputSlot(drawContext, 101, 45, layer); - builder.drawJEIButton(drawContext, this, 158, 5, layer); if (blockEntity.isMultiblockValid()) { builder.drawHologramButton(drawContext, this, 6, 4, mouseX, mouseY, layer); } diff --git a/src/client/java/techreborn/client/gui/GuiWireMill.java b/src/client/java/techreborn/client/gui/GuiWireMill.java index 74e195741..39244dbef 100644 --- a/src/client/java/techreborn/client/gui/GuiWireMill.java +++ b/src/client/java/techreborn/client/gui/GuiWireMill.java @@ -53,8 +53,6 @@ public class GuiWireMill extends GuiBase { drawSlot(drawContext, 101, 45, layer); drawOutputSlot(drawContext, 101, 45, layer); - - builder.drawJEIButton(drawContext, this, 158, 5, layer); } @Override