diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java deleted file mode 100644 index 3324b34e811..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostFluidTarget.java +++ /dev/null @@ -1,80 +0,0 @@ -package com.gregtechceu.gtceu.api.gui.misc; - -import com.gregtechceu.gtceu.GTCEu; - -import com.lowdragmc.lowdraglib.gui.ingredient.IGhostIngredientTarget; -import com.lowdragmc.lowdraglib.gui.ingredient.Target; - -import net.minecraft.client.renderer.Rect2i; -import net.minecraft.world.level.material.Fluid; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.fluids.FluidStack; - -import com.google.common.collect.Lists; -import dev.emi.emi.api.stack.EmiStack; -import org.jetbrains.annotations.NotNull; - -import java.util.Collections; -import java.util.List; - -import static com.gregtechceu.gtceu.api.gui.widget.PhantomFluidWidget.drainFrom; - -public interface IGhostFluidTarget extends IGhostIngredientTarget { - - @OnlyIn(Dist.CLIENT) - Rect2i getRectangleBox(); - - @OnlyIn(Dist.CLIENT) - void acceptFluid(FluidStack fluidStack); - - @OnlyIn(Dist.CLIENT) - @Override - default List getPhantomTargets(Object ingredient) { - ingredient = convertIngredient(ingredient); - if (!(ingredient instanceof FluidStack) && drainFrom(ingredient) == null) { - return Collections.emptyList(); - } else { - final Rect2i rectangle = getRectangleBox(); - return Lists.newArrayList(new Target[] { new Target() { - - @NotNull - public Rect2i getArea() { - return rectangle; - } - - public void accept(@NotNull Object ingredient) { - ingredient = convertIngredient(ingredient); - - FluidStack ingredientStack; - if (ingredient instanceof FluidStack fluidStack) { - ingredientStack = fluidStack; - } else { - ingredientStack = drainFrom(ingredient); - } - - if (ingredientStack != null) { - acceptFluid(ingredientStack); - } - } - } }); - } - } - - default Object convertIngredient(Object ingredient) { - if (GTCEu.Mods.isREILoaded() && ingredient instanceof dev.architectury.fluid.FluidStack fluidStack) { - ingredient = new FluidStack(fluidStack.getFluid(), (int) fluidStack.getAmount(), fluidStack.getTag()); - } - - if (GTCEu.Mods.isEMILoaded() && ingredient instanceof EmiStack fluidEmiStack) { - Fluid fluid = fluidEmiStack.getKeyOfType(Fluid.class); - ingredient = fluid == null ? FluidStack.EMPTY : - new FluidStack(fluid, (int) fluidEmiStack.getAmount(), fluidEmiStack.getNbt()); - } - - if (GTCEu.Mods.isJEILoaded() && ingredient instanceof net.minecraftforge.fluids.FluidStack fluidStack) { - ingredient = new FluidStack(fluidStack.getFluid(), fluidStack.getAmount(), fluidStack.getTag()); - } - return ingredient; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostItemTarget.java b/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostItemTarget.java deleted file mode 100644 index e26f1e30520..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/misc/IGhostItemTarget.java +++ /dev/null @@ -1,70 +0,0 @@ -package com.gregtechceu.gtceu.api.gui.misc; - -import com.gregtechceu.gtceu.GTCEu; - -import com.lowdragmc.lowdraglib.gui.ingredient.IGhostIngredientTarget; -import com.lowdragmc.lowdraglib.gui.ingredient.Target; - -import net.minecraft.client.renderer.Rect2i; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import com.google.common.collect.Lists; -import dev.emi.emi.api.stack.EmiStack; -import mezz.jei.api.ingredients.ITypedIngredient; -import org.jetbrains.annotations.NotNull; - -import java.util.Collections; -import java.util.List; - -public interface IGhostItemTarget extends IGhostIngredientTarget { - - @OnlyIn(Dist.CLIENT) - Rect2i getRectangleBox(); - - @OnlyIn(Dist.CLIENT) - void acceptItem(ItemStack itemStack); - - @OnlyIn(Dist.CLIENT) - @Override - default List getPhantomTargets(Object ingredient) { - if (!(convertIngredient(ingredient) instanceof ItemStack)) { - return Collections.emptyList(); - } else { - final Rect2i rectangle = getRectangleBox(); - return Lists.newArrayList(new Target[] { new Target() { - - @NotNull - public Rect2i getArea() { - return rectangle; - } - - public void accept(@NotNull Object ingredient) { - ingredient = convertIngredient(ingredient); - - if (ingredient instanceof ItemStack stack) { - acceptItem(stack); - } - } - } }); - } - } - - default Object convertIngredient(Object ingredient) { - if (GTCEu.Mods.isEMILoaded() && ingredient instanceof EmiStack itemEmiStack) { - Item item = itemEmiStack.getKeyOfType(Item.class); - ItemStack itemStack = item == null ? ItemStack.EMPTY : new ItemStack(item, (int) itemEmiStack.getAmount()); - if (!itemStack.isEmpty()) { - itemStack.setTag(itemEmiStack.getNbt()); - } - ingredient = itemStack; - } - - if (GTCEu.Mods.isJEILoaded() && ingredient instanceof ITypedIngredient itemJeiStack) { - return itemJeiStack.getItemStack().orElse(ItemStack.EMPTY); - } - return ingredient; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/api/gui/util/TimedProgressSupplier.java b/src/main/java/com/gregtechceu/gtceu/api/gui/util/TimedProgressSupplier.java deleted file mode 100644 index e958d11e59d..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/api/gui/util/TimedProgressSupplier.java +++ /dev/null @@ -1,37 +0,0 @@ -package com.gregtechceu.gtceu.api.gui.util; - -import java.util.function.DoubleSupplier; - -public class TimedProgressSupplier implements DoubleSupplier { - - private final int msPerCycle; - private final int maxValue; - private final boolean countDown; - private long startTime; - - public TimedProgressSupplier(int ticksPerCycle, int maxValue, boolean countDown) { - this.msPerCycle = ticksPerCycle * 50; - this.maxValue = maxValue; - this.countDown = countDown; - this.startTime = System.currentTimeMillis(); - } - - public void resetCountdown() { - startTime = System.currentTimeMillis(); - } - - @Override - public double getAsDouble() { - return calculateTime(); - } - - private double calculateTime() { - long currentTime = System.currentTimeMillis(); - long msPassed = (currentTime - startTime) % msPerCycle; - double currentValue = (1.0 * msPassed * maxValue) / msPerCycle; - if (countDown) { - return (maxValue - currentValue) / maxValue; - } - return currentValue / maxValue; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java b/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java index 3a82b270b77..8a3e2ae9051 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java +++ b/src/main/java/com/gregtechceu/gtceu/common/cover/MachineControllerCover.java @@ -50,7 +50,7 @@ @ParametersAreNonnullByDefault @MethodsReturnNonnullByDefault -public class MachineControllerCover extends CoverBehavior implements IMuiCover {// IUICover { +public class MachineControllerCover extends CoverBehavior implements IMuiCover { @SaveField @Getter diff --git a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java index d3c71b5451c..10f0d0d0da3 100644 --- a/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/common/machine/multiblock/electric/research/HPCAMachine.java @@ -6,7 +6,6 @@ import com.gregtechceu.gtceu.api.capability.recipe.EURecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.FluidRecipeCapability; import com.gregtechceu.gtceu.api.capability.recipe.IO; -import com.gregtechceu.gtceu.api.gui.util.TimedProgressSupplier; import com.gregtechceu.gtceu.api.machine.MetaMachine; import com.gregtechceu.gtceu.api.machine.TickableSubscription; import com.gregtechceu.gtceu.api.machine.feature.multiblock.IMaintenanceMachine; @@ -88,15 +87,12 @@ public class HPCAMachine extends WorkableElectricMultiblockMachine @SaveField private double temperature = IDLE_TEMPERATURE; // start at idle temperature - private final TimedProgressSupplier progressSupplier; - @Nullable protected TickableSubscription tickSubs; public HPCAMachine(BlockEntityCreationInfo info) { super(info); this.energyContainer = new EnergyContainerList(new ArrayList<>()); - this.progressSupplier = new TimedProgressSupplier(200, 47, false); this.hpcaHandler = new HPCAGridHandler(this); } diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java deleted file mode 100644 index 2ebe1b3164e..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEFluidConfigWidget.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget; - -import com.gregtechceu.gtceu.integration.ae2.gui.widget.slot.AEFluidConfigSlotWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidList; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidSlot; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import appeng.api.stacks.GenericStack; - -public class AEFluidConfigWidget extends ConfigWidget { - - private final ExportOnlyAEFluidList fluidList; - - public AEFluidConfigWidget(int x, int y, ExportOnlyAEFluidList list) { - super(x, y, list.getInventory(), list.isStocking()); - this.fluidList = list; - } - - @Override - void init() { - int line; - this.displayList = new IConfigurableSlot[this.config.length]; - this.cached = new IConfigurableSlot[this.config.length]; - for (int index = 0; index < this.config.length; index++) { - this.displayList[index] = new ExportOnlyAEFluidSlot(); - this.cached[index] = new ExportOnlyAEFluidSlot(); - line = index / 8; - this.addWidget(new AEFluidConfigSlotWidget((index - line * 8) * 18, line * (18 * 2 + 2), this, index)); - } - } - - public boolean hasStackInConfig(GenericStack stack) { - return fluidList.hasStackInConfig(stack, true); - } - - public boolean isAutoPull() { - return fluidList.isAutoPull(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java deleted file mode 100644 index 167afbb34a5..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AEItemConfigWidget.java +++ /dev/null @@ -1,39 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget; - -import com.gregtechceu.gtceu.integration.ae2.gui.widget.slot.AEItemConfigSlotWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemList; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemSlot; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import appeng.api.stacks.GenericStack; - -public class AEItemConfigWidget extends ConfigWidget { - - private final ExportOnlyAEItemList itemList; - - public AEItemConfigWidget(int x, int y, ExportOnlyAEItemList list) { - super(x, y, list.getInventory(), list.isStocking()); - this.itemList = list; - } - - @Override - void init() { - int line; - this.displayList = new IConfigurableSlot[this.config.length]; - this.cached = new IConfigurableSlot[this.config.length]; - for (int index = 0; index < this.config.length; index++) { - this.displayList[index] = new ExportOnlyAEItemSlot(); - this.cached[index] = new ExportOnlyAEItemSlot(); - line = index / 8; - this.addWidget(new AEItemConfigSlotWidget((index - line * 8) * 18, line * (18 * 2 + 2), this, index)); - } - } - - public boolean hasStackInConfig(GenericStack stack) { - return itemList.hasStackInConfig(stack, true); - } - - public boolean isAutoPull() { - return itemList.isAutoPull(); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AETextInputButtonWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AETextInputButtonWidget.java deleted file mode 100644 index 2baeffb5d8b..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AETextInputButtonWidget.java +++ /dev/null @@ -1,91 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.widget.ToggleButtonWidget; - -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; -import com.lowdragmc.lowdraglib.gui.texture.TextTexture; -import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.network.chat.Component; - -import lombok.Getter; -import lombok.Setter; -import lombok.experimental.Accessors; - -import java.util.function.Consumer; - -@Accessors(chain = true) -public class AETextInputButtonWidget extends WidgetGroup { - - @Setter - private Consumer onConfirm; - - @Getter - @Setter - private String text = ""; - - private Component[] hoverTexts = new Component[0]; - - @Getter - private boolean isInputting; - - private Widget textField; - - public AETextInputButtonWidget() {} - - public AETextInputButtonWidget(int x, int y, int width, int height) { - super(x, y, width, height); - } - - public AETextInputButtonWidget(Position position) { - super(position); - } - - public AETextInputButtonWidget(Position position, Size size) { - super(position, size); - } - - public AETextInputButtonWidget setButtonTooltips(Component... tooltipTexts) { - this.hoverTexts = tooltipTexts; - return this; - } - - @Override - public void initWidget() { - super.initWidget(); - this.textField = new TextFieldWidget( - 0, - 0, - getSizeWidth() - getSizeHeight() - 2, - getSizeHeight(), - this::getText, - this::setText).setActive(false).setVisible(false); - this.addWidget(new ToggleButtonWidget( - getSizeWidth() - getSizeHeight(), - 0, - getSizeHeight(), - getSizeHeight(), - this::isInputting, - pressed -> { - isInputting = pressed; - if (pressed) { - textField.setActive(true); - textField.setVisible(true); - } else { - onConfirm.accept(text); - textField.setActive(false); - textField.setVisible(false); - } - }) - .setTexture( - new GuiTextureGroup(GuiTextures.VANILLA_BUTTON, new TextTexture("✎")), - new GuiTextureGroup(GuiTextures.VANILLA_BUTTON, new TextTexture("✔"))) - .setHoverTooltips(hoverTexts)); - this.addWidget(textField); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java deleted file mode 100644 index 1139bd36c2f..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/AmountSetWidget.java +++ /dev/null @@ -1,87 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import com.lowdragmc.lowdraglib.gui.widget.TextFieldWidget; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.utils.Position; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.api.stacks.GenericStack; -import lombok.Getter; -import org.jetbrains.annotations.NotNull; - -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringSized; - -public class AmountSetWidget extends Widget { - - private int index = -1; - @Getter - private final TextFieldWidget amountText; - private final ConfigWidget parentWidget; - - public AmountSetWidget(int x, int y, ConfigWidget widget) { - super(x, y, 80, 30); - this.parentWidget = widget; - this.amountText = new TextFieldWidget(x + 3, y + 12, 65, 13, this::getAmountStr, this::setNewAmount) - .setNumbersOnly(0, Integer.MAX_VALUE) - .setMaxStringLength(10); - } - - @OnlyIn(Dist.CLIENT) - public void setSlotIndexClient(int slotIndex) { - this.index = slotIndex; - writeClientAction(0, buf -> buf.writeVarInt(this.index)); - } - - public void setSlotIndex(int slotIndex) { - this.index = slotIndex; - } - - public String getAmountStr() { - if (this.index < 0) { - return "0"; - } - IConfigurableSlot slot = this.parentWidget.getConfig(this.index); - if (slot.getConfig() != null) { - return String.valueOf(slot.getConfig().amount()); - } - return "0"; - } - - public void setNewAmount(String amount) { - try { - long newAmount = Long.parseLong(amount); - if (this.index < 0) { - return; - } - IConfigurableSlot slot = this.parentWidget.getConfig(this.index); - if (newAmount > 0 && slot.getConfig() != null) { - slot.setConfig(new GenericStack(slot.getConfig().what(), newAmount)); - } - } catch (NumberFormatException ignore) {} - } - - @Override - public void handleClientAction(int id, FriendlyByteBuf buffer) { - super.handleClientAction(id, buffer); - if (id == 0) { - this.index = buffer.readVarInt(); - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInBackground(graphics, mouseX, mouseY, partialTicks); - Position position = getPosition(); - GuiTextures.BACKGROUND.draw(graphics, mouseX, mouseY, position.x, position.y, 80, 30); - drawStringSized(graphics, "Amount", position.x + 3, position.y + 3, 0x404040, false, 1f, false); - GuiTextures.DISPLAY.draw(graphics, mouseX, mouseY, position.x + 3, position.y + 11, 65, 14); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java deleted file mode 100644 index 69198688a73..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/ConfigWidget.java +++ /dev/null @@ -1,174 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget; - -import com.gregtechceu.gtceu.integration.ae2.gui.widget.slot.AEConfigSlotWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.gui.widget.WidgetGroup; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.api.stacks.GenericStack; -import it.unimi.dsi.fastutil.ints.Int2ObjectMap; -import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap; -import lombok.Getter; - -public abstract class ConfigWidget extends WidgetGroup { - - protected final IConfigurableSlot[] config; - protected IConfigurableSlot[] cached; - protected Int2ObjectMap changeMap = new Int2ObjectOpenHashMap<>(); - protected IConfigurableSlot[] displayList; - protected AmountSetWidget amountSetWidget; - protected final static int UPDATE_ID = 1000; - - @Getter - protected final boolean isStocking; - - public ConfigWidget(int x, int y, IConfigurableSlot[] config, boolean isStocking) { - super(new Position(x, y), new Size(config.length / 2 * 18, 18 * 4 + 2)); - this.isStocking = isStocking; - this.config = config; - this.init(); - this.amountSetWidget = new AmountSetWidget(31, -50, this); - this.addWidget(this.amountSetWidget); - this.addWidget(this.amountSetWidget.getAmountText()); - this.amountSetWidget.setVisible(false); - this.amountSetWidget.getAmountText().setVisible(false); - } - - @OnlyIn(Dist.CLIENT) - public void enableAmountClient(int slotIndex) { - this.amountSetWidget.setSlotIndexClient(slotIndex); - this.amountSetWidget.setVisible(true); - this.amountSetWidget.getAmountText().setVisible(true); - } - - @OnlyIn(Dist.CLIENT) - public void disableAmountClient() { - this.amountSetWidget.setSlotIndexClient(-1); - this.amountSetWidget.setVisible(false); - this.amountSetWidget.getAmountText().setVisible(false); - } - - public void enableAmount(int slotIndex) { - this.amountSetWidget.setSlotIndex(slotIndex); - this.amountSetWidget.setVisible(true); - this.amountSetWidget.getAmountText().setVisible(true); - } - - public void disableAmount() { - this.amountSetWidget.setSlotIndex(-1); - this.amountSetWidget.setVisible(false); - this.amountSetWidget.getAmountText().setVisible(false); - } - - @OnlyIn(Dist.CLIENT) - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (this.amountSetWidget.isVisible()) { - if (this.amountSetWidget.getAmountText().mouseClicked(mouseX, mouseY, button)) { - return true; - } - } - for (Widget w : this.widgets) { - if (w instanceof AEConfigSlotWidget slot) { - slot.setSelect(false); - } - } - this.disableAmountClient(); - return super.mouseClicked(mouseX, mouseY, button); - } - - abstract void init(); - - public abstract boolean hasStackInConfig(GenericStack stack); - - public abstract boolean isAutoPull(); - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - this.changeMap.clear(); - for (int index = 0; index < this.config.length; index++) { - IConfigurableSlot newSlot = this.config[index]; - IConfigurableSlot oldSlot = this.cached[index]; - GenericStack nConfig = newSlot.getConfig(); - GenericStack nStock = newSlot.getStock(); - GenericStack oConfig = oldSlot.getConfig(); - GenericStack oStock = oldSlot.getStock(); - if (!areAEStackCountsEqual(nConfig, oConfig) || !areAEStackCountsEqual(nStock, oStock)) { - this.changeMap.put(index, newSlot.copy()); - this.cached[index] = this.config[index].copy(); - this.gui.holder.markAsDirty(); - } - } - if (!this.changeMap.isEmpty()) { - this.writeUpdateInfo(UPDATE_ID, buf -> { - buf.writeVarInt(this.changeMap.size()); - for (int index : this.changeMap.keySet()) { - GenericStack sConfig = this.changeMap.get(index).getConfig(); - GenericStack sStock = this.changeMap.get(index).getStock(); - buf.writeVarInt(index); - if (sConfig != null) { - buf.writeBoolean(true); - GenericStack.writeBuffer(sConfig, buf); - } else { - buf.writeBoolean(false); - } - if (sStock != null) { - buf.writeBoolean(true); - GenericStack.writeBuffer(sStock, buf); - } else { - buf.writeBoolean(false); - } - } - }); - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - super.readUpdateInfo(id, buffer); - if (id == UPDATE_ID) { - int size = buffer.readVarInt(); - for (int i = 0; i < size; i++) { - int index = buffer.readVarInt(); - IConfigurableSlot slot = this.displayList[index]; - if (buffer.readBoolean()) { - slot.setConfig(GenericStack.readBuffer(buffer)); - } else { - slot.setConfig(null); - } - if (buffer.readBoolean()) { - slot.setStock(GenericStack.readBuffer(buffer)); - } else { - slot.setStock(null); - } - } - } - } - - public final IConfigurableSlot getConfig(int index) { - return this.config[index]; - } - - public final IConfigurableSlot getDisplay(int index) { - return this.displayList[index]; - } - - protected final boolean areAEStackCountsEqual(GenericStack s1, GenericStack s2) { - if (s2 == s1) { - return true; - } - if (s1 != null && s2 != null) { - return s1.amount() == s2.amount() && s1.what().matches(s2); - } - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java deleted file mode 100644 index 08dd66ce998..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEFluidDisplayWidget.java +++ /dev/null @@ -1,83 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.list; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.client.TooltipsHandler; -import com.gregtechceu.gtceu.utils.GTMath; - -import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.side.fluid.forge.FluidHelperImpl; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.network.chat.Component; -import net.minecraft.world.item.TooltipFlag; -import net.minecraftforge.fluids.FluidStack; - -import appeng.api.stacks.AEFluidKey; -import appeng.api.stacks.GenericStack; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import static com.gregtechceu.gtceu.integration.ae2.gui.widget.slot.AEConfigSlotWidget.drawSelectionOverlay; -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; - -/** - * Display a certain {@link FluidStack} element. - */ -public class AEFluidDisplayWidget extends Widget { - - private final AEListGridWidget gridWidget; - private final int index; - - public AEFluidDisplayWidget(int x, int y, AEListGridWidget gridWidget, int index) { - super(new Position(x, y), new Size(18, 18)); - this.gridWidget = gridWidget; - this.index = index; - } - - @Override - public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInBackground(graphics, mouseX, mouseY, partialTicks); - Position position = getPosition(); - GenericStack fluid = this.gridWidget.getAt(this.index); - GuiTextures.FLUID_SLOT.draw(graphics, mouseX, mouseY, position.x, position.y, 18, 18); - GuiTextures.NUMBER_BACKGROUND.draw(graphics, mouseX, mouseY, position.x + 18, position.y, 140, 18); - int stackX = position.x + 1; - int stackY = position.y + 1; - if (fluid != null) { - FluidStack fluidStack = fluid.what() instanceof AEFluidKey key ? - new FluidStack(key.getFluid(), GTMath.saturatedCast(fluid.amount()), key.getTag()) : - FluidStack.EMPTY; - DrawerHelper.drawFluidForGui(graphics, FluidHelperImpl.toFluidStack(fluidStack), fluid.amount(), stackX, - stackY, 16, 16); - String amountStr = String.format("x%,d", fluid.amount()); - drawText(graphics, amountStr, stackX + 20, stackY + 5, 1, 0xFFFFFFFF); - } - if (isMouseOverElement(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY, 16, 16); - } - } - - @Override - public void drawInForeground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - if (isMouseOverElement(mouseX, mouseY)) { - GenericStack fluid = this.gridWidget.getAt(this.index); - if (fluid != null) { - FluidStack fluidStack = fluid.what() instanceof AEFluidKey key ? - new FluidStack(key.getFluid(), GTMath.saturatedCast(fluid.amount()), key.getTag()) : - FluidStack.EMPTY; - List tooltips = new ArrayList<>(); - tooltips.add(fluidStack.getDisplayName()); - tooltips.add(Component.literal(String.format("%,d mB", fluid.amount()))); - TooltipsHandler.appendFluidTooltips(fluidStack, tooltips::add, TooltipFlag.NORMAL); - graphics.renderTooltip(Minecraft.getInstance().font, tooltips, Optional.empty(), mouseX, mouseY); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java deleted file mode 100644 index 3c28a821248..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEItemDisplayWidget.java +++ /dev/null @@ -1,65 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.list; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; - -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.world.item.ItemStack; - -import appeng.api.stacks.AEItemKey; -import appeng.api.stacks.GenericStack; -import org.jetbrains.annotations.NotNull; - -import static com.gregtechceu.gtceu.integration.ae2.gui.widget.slot.AEConfigSlotWidget.drawSelectionOverlay; -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawItemStack; -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawText; - -/** - * Display a certain {@link appeng.api.stacks.GenericStack} element. - */ -public class AEItemDisplayWidget extends Widget { - - private final AEListGridWidget gridWidget; - private final int index; - - public AEItemDisplayWidget(int x, int y, AEListGridWidget gridWidget, int index) { - super(new Position(x, y), new Size(18, 18)); - this.gridWidget = gridWidget; - this.index = index; - } - - @Override - public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInBackground(graphics, mouseX, mouseY, partialTicks); - Position position = getPosition(); - GenericStack item = this.gridWidget.getAt(this.index); - GuiTextures.SLOT.draw(graphics, mouseX, mouseY, position.x, position.y, 18, 18); - GuiTextures.NUMBER_BACKGROUND.draw(graphics, mouseX, mouseY, position.x + 18, position.y, 140, 18); - int stackX = position.x + 1; - int stackY = position.y + 1; - if (item != null) { - ItemStack realStack = item.what() instanceof AEItemKey key ? new ItemStack(key.getItem()) : ItemStack.EMPTY; - drawItemStack(graphics, realStack, stackX, stackY, -1, null); - String amountStr = String.format("x%,d", item.amount()); - drawText(graphics, amountStr, stackX + 20, stackY + 5, 1, 0xFFFFFFFF); - } - if (isMouseOverElement(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY, 16, 16); - } - } - - @Override - public void drawInForeground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - if (isMouseOverElement(mouseX, mouseY)) { - GenericStack item = this.gridWidget.getAt(this.index); - if (item != null) { - graphics.renderTooltip(Minecraft.getInstance().font, GenericStack.wrapInItemStack(item), mouseX, - mouseY); - } - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java deleted file mode 100644 index fe52076fd63..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/list/AEListGridWidget.java +++ /dev/null @@ -1,233 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.list; - -import com.gregtechceu.gtceu.integration.ae2.utils.KeyStorage; - -import com.lowdragmc.lowdraglib.gui.widget.DraggableScrollableWidgetGroup; -import com.lowdragmc.lowdraglib.gui.widget.Widget; - -import net.minecraft.network.FriendlyByteBuf; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.api.stacks.AEFluidKey; -import appeng.api.stacks.AEItemKey; -import appeng.api.stacks.AEKey; -import appeng.api.stacks.GenericStack; -import it.unimi.dsi.fastutil.objects.Object2LongMap; -import it.unimi.dsi.fastutil.objects.Object2LongOpenHashMap; - -import java.util.ArrayList; -import java.util.List; - -/** - * A display only widget for {@link KeyStorage} - */ -public abstract class AEListGridWidget extends DraggableScrollableWidgetGroup { - - protected final KeyStorage list; - private final int slotAmountY; - private int slotRowsAmount; - protected final static int ROW_CHANGE_ID = 2; - protected final static int CONTENT_CHANGE_ID = 3; - - protected final Object2LongMap changeMap = new Object2LongOpenHashMap<>(); - protected final KeyStorage cached = new KeyStorage(); - protected final List displayList = new ArrayList<>(); - - public AEListGridWidget(int x, int y, int slotsY, KeyStorage internalList) { - super(x, y, 18 + 140, slotsY * 18); - this.list = internalList; - this.slotAmountY = slotsY; - } - - public GenericStack getAt(int index) { - return index >= 0 && index < displayList.size() ? displayList.get(index) : null; - } - - private void addSlotRows(int amount) { - for (int i = 0; i < amount; i++) { - int widgetAmount = this.widgets.size(); - Widget widget = createDisplayWidget(0, i * 18, widgetAmount); - this.addWidget(widget); - } - } - - private void removeSlotRows(int amount) { - for (int i = 0; i < amount; i++) { - Widget slotWidget = this.widgets.remove(this.widgets.size() - 1); - removeWidget(slotWidget); - } - } - - private void modifySlotRows(int delta) { - if (delta > 0) { - addSlotRows(delta); - } else { - removeSlotRows(delta); - } - } - - protected void writeListChange(FriendlyByteBuf buffer) { - this.changeMap.clear(); - - // Remove - var cachedIt = cached.storage.object2LongEntrySet().iterator(); - while (cachedIt.hasNext()) { - var entry = cachedIt.next(); - var cachedKey = entry.getKey(); - if (!list.storage.containsKey(cachedKey)) { - this.changeMap.put(cachedKey, -entry.getLongValue()); - cachedIt.remove(); - } - } - - // Change/Add - for (var entry : list.storage.object2LongEntrySet()) { - var key = entry.getKey(); - long value = entry.getLongValue(); - long cacheValue = cached.storage.getOrDefault(key, 0); - if (cacheValue == 0) { - // Add - this.changeMap.put(key, value); - this.cached.storage.put(key, value); - } else { - // Change - if (cacheValue != value) { - this.changeMap.put(key, value - cacheValue); - this.cached.storage.put(key, value); - } - } - } - - buffer.writeVarInt(this.changeMap.size()); - for (var entry : this.changeMap.object2LongEntrySet()) { - entry.getKey().writeToPacket(buffer); - buffer.writeVarLong(entry.getLongValue()); - } - } - - protected void readListChange(FriendlyByteBuf buffer) { - int size = buffer.readVarInt(); - for (int i = 0; i < size; i++) { - var key = fromPacket(buffer); - long delta = buffer.readVarLong(); - - boolean found = false; - var li = displayList.listIterator(); - while (li.hasNext()) { - var stack = li.next(); - if (stack.what().equals(key)) { - long newAmount = stack.amount() + delta; - if (newAmount > 0) { - li.set(new GenericStack(key, newAmount)); - } else { - li.remove(); - } - found = true; - break; - } - } - if (!found) { - displayList.add(new GenericStack(key, delta)); - } - } - } - - protected abstract void toPacket(FriendlyByteBuf buffer, AEKey key); - - protected abstract AEKey fromPacket(FriendlyByteBuf buffer); - - protected abstract Widget createDisplayWidget(int x, int y, int index); - - @Override - public void detectAndSendChanges() { - super.detectAndSendChanges(); - if (this.list == null) return; - int slotRowsRequired = Math.max(this.slotAmountY, list.storage.size()); - if (this.slotRowsAmount != slotRowsRequired) { - int slotsToAdd = slotRowsRequired - this.slotRowsAmount; - this.slotRowsAmount = slotRowsRequired; - this.writeUpdateInfo(ROW_CHANGE_ID, buf -> buf.writeVarInt(slotsToAdd)); - this.modifySlotRows(slotsToAdd); - } - this.writeUpdateInfo(CONTENT_CHANGE_ID, this::writeListChange); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - super.readUpdateInfo(id, buffer); - if (id == ROW_CHANGE_ID) { - int slotsToAdd = buffer.readVarInt(); - this.modifySlotRows(slotsToAdd); - } - if (id == CONTENT_CHANGE_ID) { - this.readListChange(buffer); - } - } - - @Override - public void writeInitialData(FriendlyByteBuf buffer) { - super.writeInitialData(buffer); - if (this.list == null) return; - int slotRowsRequired = Math.max(this.slotAmountY, list.storage.size()); - int slotsToAdd = slotRowsRequired - this.slotRowsAmount; - this.slotRowsAmount = slotRowsRequired; - this.modifySlotRows(slotsToAdd); - buffer.writeVarInt(slotsToAdd); - this.writeListChange(buffer); - } - - @Override - @OnlyIn(Dist.CLIENT) - public void readInitialData(FriendlyByteBuf buffer) { - super.readInitialData(buffer); - if (this.list == null) return; - this.modifySlotRows(buffer.readVarInt()); - this.readListChange(buffer); - } - - public static class Item extends AEListGridWidget { - - public Item(int x, int y, int slotsY, KeyStorage internalList) { - super(x, y, slotsY, internalList); - } - - @Override - protected void toPacket(FriendlyByteBuf buffer, AEKey key) { - key.writeToPacket(buffer); - } - - @Override - protected AEKey fromPacket(FriendlyByteBuf buffer) { - return AEItemKey.fromPacket(buffer); - } - - @Override - protected Widget createDisplayWidget(int x, int y, int index) { - return new AEItemDisplayWidget(x, y, this, index); - } - } - - public static class Fluid extends AEListGridWidget { - - public Fluid(int x, int y, int slotsY, KeyStorage internalList) { - super(x, y, slotsY, internalList); - } - - @Override - protected void toPacket(FriendlyByteBuf buffer, AEKey key) { - key.writeToPacket(buffer); - } - - @Override - protected AEKey fromPacket(FriendlyByteBuf buffer) { - return AEFluidKey.fromPacket(buffer); - } - - @Override - protected Widget createDisplayWidget(int x, int y, int index) { - return new AEFluidDisplayWidget(x, y, this, index); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java deleted file mode 100644 index b6d04d492ce..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEConfigSlotWidget.java +++ /dev/null @@ -1,108 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.slot; - -import com.gregtechceu.gtceu.integration.ae2.gui.widget.ConfigWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import com.lowdragmc.lowdraglib.gui.widget.Widget; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.Minecraft; -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.network.chat.Component; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.api.stacks.GenericStack; -import com.mojang.blaze3d.systems.RenderSystem; -import org.jetbrains.annotations.NotNull; - -import java.util.ArrayList; -import java.util.List; -import java.util.Optional; - -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawGradientRect; - -public class AEConfigSlotWidget extends Widget { - - protected ConfigWidget parentWidget; - protected int index; - protected final static int REMOVE_ID = 1000; - protected final static int UPDATE_ID = 1001; - protected final static int AMOUNT_CHANGE_ID = 1002; - protected final static int PICK_UP_ID = 1003; - protected boolean select = false; - - public AEConfigSlotWidget(Position pos, Size size, ConfigWidget widget, int index) { - super(pos, size); - this.parentWidget = widget; - this.index = index; - } - - @OnlyIn(Dist.CLIENT) - @Override - public void drawInForeground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInForeground(graphics, mouseX, mouseY, partialTicks); - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - if (slot.getConfig() == null) { - if (mouseOverConfig(mouseX, mouseY)) { - List hoverStringList = new ArrayList<>(); - hoverStringList.add(Component.translatable("gtceu.gui.config_slot")); - if (parentWidget.isAutoPull()) { - hoverStringList.add(Component.translatable("gtceu.gui.config_slot.auto_pull_managed")); - } else { - if (!parentWidget.isStocking()) { - hoverStringList.add(Component.translatable("gtceu.gui.config_slot.set")); - hoverStringList.add(Component.translatable("gtceu.gui.config_slot.scroll")); - } else { - hoverStringList.add(Component.translatable("gtceu.gui.config_slot.set_only")); - } - hoverStringList.add(Component.translatable("gtceu.gui.config_slot.remove")); - } - graphics.renderTooltip(Minecraft.getInstance().font, hoverStringList, Optional.empty(), mouseX, mouseY); - } - } else { - GenericStack item = null; - if (mouseOverConfig(mouseX, mouseY)) { - item = slot.getConfig(); - } else if (mouseOverStock(mouseX, mouseY)) { - item = slot.getStock(); - } - if (item != null) { - graphics.renderTooltip(Minecraft.getInstance().font, GenericStack.wrapInItemStack(item), mouseX, - mouseY); - } - } - } - - public void setSelect(boolean val) { - this.select = val; - } - - protected boolean mouseOverConfig(double mouseX, double mouseY) { - Position position = getPosition(); - return isMouseOver(position.x, position.y, 18, 18, mouseX, mouseY); - } - - protected boolean mouseOverStock(double mouseX, double mouseY) { - Position position = getPosition(); - return isMouseOver(position.x, position.y + 18, 18, 18, mouseX, mouseY); - } - - @OnlyIn(Dist.CLIENT) - public static void drawSelectionOverlay(GuiGraphics graphics, int x, int y, int width, int height) { - RenderSystem.disableDepthTest(); - RenderSystem.colorMask(true, true, true, false); - drawGradientRect(graphics, x, y, width, height, -2130706433, -2130706433); - RenderSystem.colorMask(true, true, true, true); - RenderSystem.enableDepthTest(); - RenderSystem.enableBlend(); - } - - // Method for server-side validation of an attempted new configured item - protected boolean isStackValidForSlot(GenericStack stack) { - if (stack == null || stack.amount() < 0) return true; - if (!parentWidget.isStocking()) return true; - return !parentWidget.hasStackInConfig(stack); - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java deleted file mode 100644 index bbf171ffbe9..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEFluidConfigSlotWidget.java +++ /dev/null @@ -1,312 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.slot; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.misc.IGhostFluidTarget; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.ConfigWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidSlot; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAESlot; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; -import com.gregtechceu.gtceu.integration.ae2.utils.AEUtil; -import com.gregtechceu.gtceu.utils.FormattingUtil; -import com.gregtechceu.gtceu.utils.GTMath; - -import com.lowdragmc.lowdraglib.gui.util.DrawerHelper; -import com.lowdragmc.lowdraglib.side.fluid.forge.FluidHelperImpl; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.Rect2i; -import net.minecraft.core.registries.BuiltInRegistries; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.item.ItemStack; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.material.Fluids; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.common.SoundActions; -import net.minecraftforge.fluids.FluidActionResult; -import net.minecraftforge.fluids.FluidStack; -import net.minecraftforge.fluids.FluidUtil; - -import appeng.api.stacks.AEFluidKey; -import appeng.api.stacks.GenericStack; -import org.jetbrains.annotations.NotNull; - -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; - -public class AEFluidConfigSlotWidget extends AEConfigSlotWidget implements IGhostFluidTarget { - - public AEFluidConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { - super(new Position(x, y), new Size(18, 18 * 2), widget, index); - } - - @OnlyIn(Dist.CLIENT) - @Override - public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInBackground(graphics, mouseX, mouseY, partialTicks); - Position position = getPosition(); - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - GenericStack config = slot.getConfig(); - GenericStack stock = slot.getStock(); - drawSlots(graphics, mouseX, mouseY, position.x, position.y, parentWidget.isAutoPull()); - if (this.select) { - GuiTextures.SELECT_BOX.draw(graphics, mouseX, mouseY, position.x, position.y, 18, 18); - } - - int stackX = position.x + 1; - int stackY = position.y + 1; - if (config != null) { - var stack = AEUtil.toFluidStack(config); - if (!stack.isEmpty()) { - DrawerHelper.drawFluidForGui(graphics, FluidHelperImpl.toFluidStack(stack), config.amount(), stackX, - stackY, 16, 16); - if (!parentWidget.isStocking()) { - String amountStr = FormattingUtil.formatNumberReadable(config.amount(), true, - FormattingUtil.DECIMAL_FORMAT_0F, "B"); - drawStringFixedCorner(graphics, amountStr, stackX + 17, stackY + 17, 16777215, true, 0.5f); - } - } - } - if (stock != null) { - var stack = AEUtil.toFluidStack(stock); - if (!stack.isEmpty()) { - DrawerHelper.drawFluidForGui(graphics, FluidHelperImpl.toFluidStack(stack), stock.amount(), stackX, - stackY + 18, 16, - 16); - String amountStr = FormattingUtil.formatNumberReadable(stock.amount(), true, - FormattingUtil.DECIMAL_FORMAT_0F, "B"); - drawStringFixedCorner(graphics, amountStr, stackX + 17, stackY + 18 + 17, 16777215, true, 0.5f); - } - } - - if (mouseOverConfig(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY, 16, 16); - } else if (mouseOverStock(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY + 18, 16, 16); - } - } - - @OnlyIn(Dist.CLIENT) - private void drawSlots(GuiGraphics graphics, int mouseX, int mouseY, int x, int y, boolean autoPull) { - if (autoPull) { - GuiTextures.SLOT_DARK.draw(graphics, mouseX, mouseY, x, y, 18, 18); - GuiTextures.CONFIG_ARROW_DARK.draw(graphics, mouseX, mouseY, x, y, 18, 18); - } else { - GuiTextures.FLUID_SLOT.draw(graphics, mouseX, mouseY, x, y, 18, 18); - GuiTextures.CONFIG_ARROW.draw(graphics, mouseX, mouseY, x, y, 18, 18); - } - GuiTextures.SLOT_DARK.draw(graphics, mouseX, mouseY, x, y + 18, 18, 18); - } - - @OnlyIn(Dist.CLIENT) - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (mouseOverConfig(mouseX, mouseY)) { - // don't allow manual interaction with config slots when auto pull is enabled - if (parentWidget.isAutoPull()) { - return false; - } - - if (button == 1) { - // Right click to clear - writeClientAction(REMOVE_ID, buf -> {}); - - if (!parentWidget.isStocking()) { - this.parentWidget.disableAmountClient(); - } - } else if (button == 0) { - // Left click to set/select - ItemStack hold = this.gui.getModularUIContainer().getCarried(); - FluidUtil.getFluidContained(hold).ifPresent(f -> writeClientAction(UPDATE_ID, f::writeToPacket)); - - if (!parentWidget.isStocking()) { - this.parentWidget.enableAmountClient(this.index); - this.select = true; - } - } - return true; - } else if (mouseOverStock(mouseX, mouseY)) { - // Left click to pick up - if (button == 0) { - if (parentWidget.isStocking()) { - return false; - } - GenericStack stack = this.parentWidget.getDisplay(this.index).getStock(); - if (stack != null) { - writeClientAction(PICK_UP_ID, buf -> buf.writeBoolean(isShiftDown())); - } - return true; - } - } - return false; - } - - @Override - public void handleClientAction(int id, FriendlyByteBuf buffer) { - super.handleClientAction(id, buffer); - IConfigurableSlot slot = this.parentWidget.getConfig(this.index); - if (id == REMOVE_ID) { - slot.setConfig(null); - this.parentWidget.disableAmount(); - writeUpdateInfo(REMOVE_ID, buf -> {}); - } - if (id == UPDATE_ID) { - FluidStack fluid = FluidStack.readFromPacket(buffer); - var stack = AEUtil.fromFluidStack(fluid); - if (!isStackValidForSlot(stack)) return; - slot.setConfig(stack); - this.parentWidget.enableAmount(this.index); - if (fluid != FluidStack.EMPTY) { - writeUpdateInfo(UPDATE_ID, fluid::writeToPacket); - } - } - if (id == AMOUNT_CHANGE_ID) { - if (slot.getConfig() != null) { - int amt = buffer.readInt(); - slot.setConfig(ExportOnlyAESlot.copy(slot.getConfig(), amt)); - writeUpdateInfo(AMOUNT_CHANGE_ID, buf -> buf.writeInt(amt)); - } - } - if (id == PICK_UP_ID) { - if (slot.getStock() != null) { - boolean isShiftKeyDown = buffer.readBoolean(); - int clickResult = tryClickContainer(isShiftKeyDown); - if (clickResult >= 0) { - writeUpdateInfo(PICK_UP_ID, buf -> buf.writeVarInt(clickResult)); - } - } - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - super.readUpdateInfo(id, buffer); - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - if (id == REMOVE_ID) { - slot.setConfig(null); - } - if (id == UPDATE_ID) { - FluidStack fluid = new FluidStack(BuiltInRegistries.FLUID.get(buffer.readResourceLocation()), - buffer.readVarInt()); - slot.setConfig(new GenericStack(AEFluidKey.of(fluid.getFluid()), fluid.getAmount())); - } - if (id == AMOUNT_CHANGE_ID) { - if (slot.getConfig() != null) { - int amt = buffer.readInt(); - slot.setConfig(ExportOnlyAESlot.copy(slot.getConfig(), amt)); - } - } - if (id == PICK_UP_ID) { - if (slot.getStock() != null && slot.getStock().what() instanceof AEFluidKey key) { - ItemStack currentStack = gui.getModularUIContainer().getCarried(); - int newStackSize = buffer.readVarInt(); - currentStack.setCount(newStackSize); - gui.getModularUIContainer().setCarried(currentStack); - - FluidStack stack = new FluidStack(key.getFluid(), GTMath.saturatedCast(slot.getStock().amount())); - if (key.hasTag()) { - stack.setTag(key.getTag().copy()); - } - GenericStack stack1 = ExportOnlyAESlot.copy(slot.getStock(), - Math.max(0, (slot.getStock().amount() - stack.getAmount()))); - slot.setStock(stack1.amount() == 0 ? null : stack1); - } - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public Rect2i getRectangleBox() { - Rect2i rectangle = toRectangleBox(); - rectangle.setHeight(rectangle.getHeight() / 2); - return rectangle; - } - - @OnlyIn(Dist.CLIENT) - @Override - public void acceptFluid(FluidStack fluidStack) { - if (fluidStack.getRawFluid() != Fluids.EMPTY && fluidStack.getAmount() <= 0L) { - fluidStack.setAmount(1000); - } - - if (!fluidStack.isEmpty()) { - writeClientAction(UPDATE_ID, fluidStack::writeToPacket); - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public boolean mouseWheelMove(double mouseX, double mouseY, double wheelDelta) { - // Only allow the amount scrolling if not stocking, as amount is useless for stocking - if (parentWidget.isStocking()) return false; - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - Rect2i rectangle = toRectangleBox(); - rectangle.setHeight(rectangle.getHeight() / 2); - if (slot.getConfig() == null || wheelDelta == 0 || !rectangle.contains((int) mouseX, (int) mouseY)) { - return false; - } - FluidStack fluid = slot.getConfig().what() instanceof AEFluidKey fluidKey ? - new FluidStack(fluidKey.getFluid(), GTMath.saturatedCast(slot.getConfig().amount()), - fluidKey.getTag()) : - FluidStack.EMPTY; - long amt; - if (isCtrlDown()) { - amt = wheelDelta > 0 ? fluid.getAmount() * 2L : fluid.getAmount() / 2L; - } else { - amt = wheelDelta > 0 ? fluid.getAmount() + 1L : fluid.getAmount() - 1L; - } - - if (amt > 0 && amt < Integer.MAX_VALUE + 1L) { - int finalAmt = (int) amt; - writeClientAction(AMOUNT_CHANGE_ID, buf -> buf.writeInt(finalAmt)); - return true; - } - return false; - } - - private int tryClickContainer(boolean isShiftKeyDown) { - ExportOnlyAEFluidSlot fluidTank = this.parentWidget - .getConfig(this.index) instanceof ExportOnlyAEFluidSlot fluid ? fluid : null; - if (fluidTank == null) return -1; - Player player = gui.entityPlayer; - ItemStack currentStack = gui.getModularUIContainer().getCarried(); - var handler = FluidUtil.getFluidHandler(currentStack).resolve().orElse(null); - if (handler == null) return -1; - int maxAttempts = isShiftKeyDown ? currentStack.getCount() : 1; - - if (fluidTank.getFluidAmount() > 0) { - boolean performedFill = false; - FluidStack initialFluid = fluidTank.getFluid(); - for (int i = 0; i < maxAttempts; i++) { - FluidActionResult result = FluidUtil.tryFillContainer(currentStack, fluidTank, Integer.MAX_VALUE, null, - false); - if (!result.isSuccess()) break; - ItemStack remainingStack = FluidUtil - .tryFillContainer(currentStack, fluidTank, Integer.MAX_VALUE, null, true).getResult(); - currentStack.shrink(1); - performedFill = true; - if (!remainingStack.isEmpty() && !player.addItem(remainingStack)) { - Block.popResource(player.level(), player.getOnPos(), remainingStack); - break; - } - } - if (performedFill) { - SoundEvent soundevent = initialFluid.getFluid().getFluidType().getSound(initialFluid, - SoundActions.BUCKET_FILL); - if (soundevent != null) { - player.level().playSound(null, player.position().x, player.position().y + 0.5, player.position().z, - soundevent, SoundSource.BLOCKS, 1.0F, 1.0F); - } - gui.getModularUIContainer().setCarried(currentStack); - return currentStack.getCount(); - } - } - - return -1; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java deleted file mode 100644 index 574b4fdf276..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEItemConfigSlotWidget.java +++ /dev/null @@ -1,241 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.slot; - -import com.gregtechceu.gtceu.api.gui.GuiTextures; -import com.gregtechceu.gtceu.api.gui.misc.IGhostItemTarget; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.ConfigWidget; -import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAESlot; -import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; - -import com.lowdragmc.lowdraglib.gui.util.TextFormattingUtil; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.client.renderer.Rect2i; -import net.minecraft.network.FriendlyByteBuf; -import net.minecraft.world.item.ItemStack; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; - -import appeng.api.stacks.AEItemKey; -import appeng.api.stacks.GenericStack; -import org.jetbrains.annotations.NotNull; - -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawItemStack; -import static com.lowdragmc.lowdraglib.gui.util.DrawerHelper.drawStringFixedCorner; - -public class AEItemConfigSlotWidget extends AEConfigSlotWidget implements IGhostItemTarget { - - public AEItemConfigSlotWidget(int x, int y, ConfigWidget widget, int index) { - super(new Position(x, y), new Size(18, 18 * 2), widget, index); - } - - @OnlyIn(Dist.CLIENT) - @Override - public void drawInBackground(@NotNull GuiGraphics graphics, int mouseX, int mouseY, float partialTicks) { - super.drawInBackground(graphics, mouseX, mouseY, partialTicks); - Position position = getPosition(); - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - GenericStack config = slot.getConfig(); - GenericStack stock = slot.getStock(); - drawSlots(graphics, mouseX, mouseY, position.x, position.y, parentWidget.isAutoPull()); - if (this.select) { - GuiTextures.SELECT_BOX.draw(graphics, mouseX, mouseY, position.x, position.y, 18, 18); - } - int stackX = position.x + 1; - int stackY = position.y + 1; - if (config != null) { - ItemStack stack = config.what() instanceof AEItemKey key ? new ItemStack(key.getItem()) : ItemStack.EMPTY; - drawItemStack(graphics, stack, stackX, stackY, 0xFFFFFFFF, null); - - if (!parentWidget.isStocking()) { - String amountStr = TextFormattingUtil.formatLongToCompactString(config.amount(), 4); - drawStringFixedCorner(graphics, amountStr, stackX + 17, stackY + 17, 16777215, true, 0.5f); - } - } - if (stock != null) { - ItemStack stack = stock.what() instanceof AEItemKey key ? new ItemStack(key.getItem()) : ItemStack.EMPTY; - drawItemStack(graphics, stack, stackX, stackY + 18, 0xFFFFFFFF, null); - String amountStr = TextFormattingUtil.formatLongToCompactString(stock.amount(), 4); - drawStringFixedCorner(graphics, amountStr, stackX + 17, stackY + 18 + 17, 16777215, true, 0.5f); - } - if (mouseOverConfig(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY, 16, 16); - } else if (mouseOverStock(mouseX, mouseY)) { - drawSelectionOverlay(graphics, stackX, stackY + 18, 16, 16); - } - } - - @OnlyIn(Dist.CLIENT) - private void drawSlots(GuiGraphics graphics, int mouseX, int mouseY, int x, int y, boolean autoPull) { - if (autoPull) { - GuiTextures.SLOT_DARK.draw(graphics, mouseX, mouseY, x, y, 18, 18); - GuiTextures.CONFIG_ARROW.draw(graphics, mouseX, mouseY, x, y, 18, 18); - } else { - GuiTextures.SLOT.draw(graphics, mouseX, mouseY, x, y, 18, 18); - GuiTextures.CONFIG_ARROW_DARK.draw(graphics, mouseX, mouseY, x, y, 18, 18); - } - GuiTextures.SLOT_DARK.draw(graphics, mouseX, mouseY, x, y + 18, 18, 18); - } - - @OnlyIn(Dist.CLIENT) - @Override - public boolean mouseClicked(double mouseX, double mouseY, int button) { - if (mouseOverConfig(mouseX, mouseY)) { - // don't allow manual interaction with config slots when auto pull is enabled - if (parentWidget.isAutoPull()) { - return false; - } - - if (button == 1) { - // Right click to clear - writeClientAction(REMOVE_ID, buf -> {}); - - if (!parentWidget.isStocking()) { - this.parentWidget.disableAmountClient(); - } - } else if (button == 0) { - // Left click to set/select - ItemStack item = this.gui.getModularUIContainer().getCarried(); - - if (!item.isEmpty()) { - writeClientAction(UPDATE_ID, buf -> buf.writeItem(item)); - } - - if (!parentWidget.isStocking()) { - this.parentWidget.enableAmountClient(this.index); - this.select = true; - } - } - return true; - } else if (mouseOverStock(mouseX, mouseY)) { - // Left click to pick up - if (button == 0) { - if (parentWidget.isStocking()) { - return false; - } - GenericStack stack = this.parentWidget.getDisplay(this.index).getStock(); - if (stack != null) { - writeClientAction(PICK_UP_ID, buf -> {}); - } - return true; - } - } - return false; - } - - @Override - public void handleClientAction(int id, FriendlyByteBuf buffer) { - super.handleClientAction(id, buffer); - IConfigurableSlot slot = this.parentWidget.getConfig(this.index); - if (id == REMOVE_ID) { - slot.setConfig(null); - this.parentWidget.disableAmount(); - writeUpdateInfo(REMOVE_ID, buf -> {}); - } - if (id == UPDATE_ID) { - ItemStack item = buffer.readItem(); - var stack = GenericStack.fromItemStack(item); - if (!isStackValidForSlot(stack)) return; - slot.setConfig(stack); - this.parentWidget.enableAmount(this.index); - if (!item.isEmpty()) { - writeUpdateInfo(UPDATE_ID, buf -> buf.writeItem(item)); - } - } - if (id == AMOUNT_CHANGE_ID) { - if (slot.getConfig() != null) { - long amt = buffer.readVarLong(); - slot.setConfig(new GenericStack(slot.getConfig().what(), amt)); - writeUpdateInfo(AMOUNT_CHANGE_ID, buf -> buf.writeVarLong(amt)); - } - } - if (id == PICK_UP_ID) { - if (slot.getStock() != null && this.gui.getModularUIContainer().getCarried() == ItemStack.EMPTY && - slot.getStock().what() instanceof AEItemKey key) { - ItemStack stack = new ItemStack(key.getItem()); - stack.setCount(Math.min((int) slot.getStock().amount(), stack.getMaxStackSize())); - if (key.hasTag()) { - stack.setTag(key.getTag().copy()); - } - this.gui.getModularUIContainer().setCarried(stack); - GenericStack stack1 = ExportOnlyAESlot.copy(slot.getStock(), - Math.max(0, (slot.getStock().amount() - stack.getCount()))); - slot.setStock(stack1.amount() == 0 ? null : stack1); - writeUpdateInfo(PICK_UP_ID, buf -> {}); - } - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public void readUpdateInfo(int id, FriendlyByteBuf buffer) { - super.readUpdateInfo(id, buffer); - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - if (id == REMOVE_ID) { - slot.setConfig(null); - } - if (id == UPDATE_ID) { - ItemStack item = buffer.readItem(); - slot.setConfig(new GenericStack(AEItemKey.of(item.getItem(), item.getTag()), item.getCount())); - } - if (id == AMOUNT_CHANGE_ID) { - if (slot.getConfig() != null) { - long amt = buffer.readVarLong(); - slot.setConfig(new GenericStack(slot.getConfig().what(), amt)); - } - } - if (id == PICK_UP_ID) { - if (slot.getStock() != null && slot.getStock().what() instanceof AEItemKey key) { - ItemStack stack = new ItemStack(key.getItem()); - stack.setCount(Math.min((int) slot.getStock().amount(), stack.getMaxStackSize())); - if (key.hasTag()) { - stack.setTag(key.getTag().copy()); - } - this.gui.getModularUIContainer().setCarried(stack); - GenericStack stack1 = ExportOnlyAESlot.copy(slot.getStock(), - Math.max(0, (slot.getStock().amount() - stack.getCount()))); - slot.setStock(stack1.amount() == 0 ? null : stack1); - } - } - } - - @OnlyIn(Dist.CLIENT) - @Override - public Rect2i getRectangleBox() { - Rect2i rectangle = toRectangleBox(); - rectangle.setHeight(rectangle.getHeight() / 2); - return rectangle; - } - - @OnlyIn(Dist.CLIENT) - @Override - public void acceptItem(ItemStack itemStack) { - writeClientAction(UPDATE_ID, buf -> buf.writeItem(itemStack)); - } - - @OnlyIn(Dist.CLIENT) - @Override - public boolean mouseWheelMove(double mouseX, double mouseY, double wheelDelta) { - // Only allow the amount scrolling if not stocking, as amount is useless for stocking - if (parentWidget.isStocking()) return false; - IConfigurableSlot slot = this.parentWidget.getDisplay(this.index); - Rect2i rectangle = toRectangleBox(); - rectangle.setHeight(rectangle.getHeight() / 2); - if (slot.getConfig() == null || wheelDelta == 0 || !rectangle.contains((int) mouseX, (int) mouseY)) { - return false; - } - GenericStack stack = slot.getConfig(); - long amt; - if (isCtrlDown()) { - amt = wheelDelta > 0 ? stack.amount() * 2L : stack.amount() / 2L; - } else { - amt = wheelDelta > 0 ? stack.amount() + 1L : stack.amount() - 1L; - } - if (amt > 0 && amt < Integer.MAX_VALUE + 1L) { - writeClientAction(AMOUNT_CHANGE_ID, buf -> buf.writeVarLong(amt)); - return true; - } - return false; - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEPatternViewSlotWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEPatternViewSlotWidget.java deleted file mode 100644 index a3d0f477b93..00000000000 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/slot/AEPatternViewSlotWidget.java +++ /dev/null @@ -1,86 +0,0 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.slot; - -import com.gregtechceu.gtceu.api.gui.widget.SlotWidget; - -import com.lowdragmc.lowdraglib.gui.texture.GuiTextureGroup; -import com.lowdragmc.lowdraglib.gui.texture.IGuiTexture; -import com.lowdragmc.lowdraglib.utils.Position; -import com.lowdragmc.lowdraglib.utils.Size; - -import net.minecraft.client.gui.GuiGraphics; -import net.minecraft.world.Container; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import net.minecraftforge.items.IItemHandlerModifiable; - -import org.jetbrains.annotations.NotNull; - -public class AEPatternViewSlotWidget extends SlotWidget { - - protected IGuiTexture occupiedTexture; - - public AEPatternViewSlotWidget() {} - - public AEPatternViewSlotWidget( - Container inventory, - int slotIndex, - int xPosition, - int yPosition, - boolean canTakeItems, - boolean canPutItems) { - super(inventory, slotIndex, xPosition, yPosition, canTakeItems, canPutItems); - } - - public AEPatternViewSlotWidget( - IItemHandlerModifiable itemHandler, - int slotIndex, - int xPosition, - int yPosition, - boolean canTakeItems, - boolean canPutItems) { - super(itemHandler, slotIndex, xPosition, yPosition, canTakeItems, canPutItems); - } - - public AEPatternViewSlotWidget( - IItemHandlerModifiable itemHandler, int slotIndex, int xPosition, int yPosition) { - super(itemHandler, slotIndex, xPosition, yPosition); - } - - public AEPatternViewSlotWidget(Container inventory, int slotIndex, int xPosition, int yPosition) { - super(inventory, slotIndex, xPosition, yPosition); - } - - public AEPatternViewSlotWidget setOccupiedTexture(IGuiTexture... occupiedTexture) { - this.occupiedTexture = occupiedTexture.length > 1 ? new GuiTextureGroup(occupiedTexture) : occupiedTexture[0]; - return this; - } - - @Override - @OnlyIn(Dist.CLIENT) - public void updateScreen() { - super.updateScreen(); - if (occupiedTexture != null) { - occupiedTexture.updateTick(); - } - } - - @Override - @OnlyIn(Dist.CLIENT) - protected void drawBackgroundTexture(@NotNull GuiGraphics graphics, int mouseX, int mouseY) { - Position pos = getPosition(); - Size size = getSize(); - if (getHandler() != null && getHandler().hasItem()) { - if (occupiedTexture != null) { - occupiedTexture.draw(graphics, mouseX, mouseY, pos.x, pos.y, size.width, size.height); - } - } else { - if (backgroundTexture != null) { - backgroundTexture.draw(graphics, mouseX, mouseY, pos.x, pos.y, size.width, size.height); - } - } - - if (hoverTexture != null && isMouseOverElement(mouseX, mouseY)) { - hoverTexture.draw(graphics, mouseX, mouseY, pos.x, pos.y, size.width, size.height); - } - } -} diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java index 0374bf3c540..11a259d009b 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputBusPartMachine.java @@ -23,7 +23,7 @@ import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.common.mui.GTGuis; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEConfigWidget; +import com.gregtechceu.gtceu.integration.ae2.mui.AEConfigWidget; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEItemSlot; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAESlot; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java index 62d22b5a112..e4b81c45b66 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEInputHatchPartMachine.java @@ -21,7 +21,7 @@ import com.gregtechceu.gtceu.common.item.behavior.IntCircuitBehaviour; import com.gregtechceu.gtceu.common.mui.GTGuiTextures; import com.gregtechceu.gtceu.common.mui.GTGuis; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEConfigWidget; +import com.gregtechceu.gtceu.integration.ae2.mui.AEConfigWidget; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidList; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAEFluidSlot; import com.gregtechceu.gtceu.integration.ae2.slot.ExportOnlyAESlot; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java index 2df604de832..860f6675fda 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputBusPartMachine.java @@ -20,9 +20,9 @@ import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; import com.gregtechceu.gtceu.common.mui.GTGuis; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEKeyStorageSyncHandler; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEStackDisplayWidget; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.ScrollPreservingGrid; +import com.gregtechceu.gtceu.integration.ae2.mui.AEKeyStorageSyncHandler; +import com.gregtechceu.gtceu.integration.ae2.mui.AEStackDisplayWidget; +import com.gregtechceu.gtceu.integration.ae2.mui.ScrollPreservingGrid; import com.gregtechceu.gtceu.integration.ae2.utils.KeyStorage; import net.minecraft.MethodsReturnNonnullByDefault; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java index a292f24dba2..4a0c96114fa 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/machine/MEOutputHatchPartMachine.java @@ -22,9 +22,9 @@ import com.gregtechceu.gtceu.client.mui.screen.UISettings; import com.gregtechceu.gtceu.common.data.mui.GTMuiWidgets; import com.gregtechceu.gtceu.common.mui.GTGuis; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEKeyStorageSyncHandler; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.AEStackDisplayWidget; -import com.gregtechceu.gtceu.integration.ae2.gui.widget.mui.ScrollPreservingGrid; +import com.gregtechceu.gtceu.integration.ae2.mui.AEKeyStorageSyncHandler; +import com.gregtechceu.gtceu.integration.ae2.mui.AEStackDisplayWidget; +import com.gregtechceu.gtceu.integration.ae2.mui.ScrollPreservingGrid; import com.gregtechceu.gtceu.integration.ae2.utils.KeyStorage; import com.gregtechceu.gtceu.utils.GTMath; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigSyncHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigSyncHandler.java similarity index 98% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigSyncHandler.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigSyncHandler.java index 28118d95929..ffe6de1de10 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigSyncHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigSyncHandler.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.api.mui.value.sync.SyncHandler; import com.gregtechceu.gtceu.integration.ae2.slot.IConfigurableSlot; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigWidget.java similarity index 99% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigWidget.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigWidget.java index b81702351de..a5699018fb5 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEConfigWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEConfigWidget.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.mui.base.drawable.IKey; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEGuiHelper.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEGuiHelper.java similarity index 99% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEGuiHelper.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEGuiHelper.java index 75c15d4f07d..cdcc533a284 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEGuiHelper.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEGuiHelper.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.integration.ae2.utils.AEUtil; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEKeyStorageSyncHandler.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEKeyStorageSyncHandler.java similarity index 98% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEKeyStorageSyncHandler.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEKeyStorageSyncHandler.java index f595f939ebe..8f1fed22842 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEKeyStorageSyncHandler.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEKeyStorageSyncHandler.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.api.mui.value.sync.ValueSyncHandler; import com.gregtechceu.gtceu.integration.ae2.utils.KeyStorage; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEStackDisplayWidget.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEStackDisplayWidget.java similarity index 97% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEStackDisplayWidget.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEStackDisplayWidget.java index cf40210ed5e..a8959d9eab2 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/AEStackDisplayWidget.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/AEStackDisplayWidget.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.api.gui.GuiTextures; import com.gregtechceu.gtceu.api.mui.base.ITheme; diff --git a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/ScrollPreservingGrid.java b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/ScrollPreservingGrid.java similarity index 95% rename from src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/ScrollPreservingGrid.java rename to src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/ScrollPreservingGrid.java index 1f1e7cbe19b..7b61658b4ee 100644 --- a/src/main/java/com/gregtechceu/gtceu/integration/ae2/gui/widget/mui/ScrollPreservingGrid.java +++ b/src/main/java/com/gregtechceu/gtceu/integration/ae2/mui/ScrollPreservingGrid.java @@ -1,4 +1,4 @@ -package com.gregtechceu.gtceu.integration.ae2.gui.widget.mui; +package com.gregtechceu.gtceu.integration.ae2.mui; import com.gregtechceu.gtceu.api.mui.widget.scroll.ScrollData; import com.gregtechceu.gtceu.api.mui.widgets.layout.Grid;