diff options
Diffstat (limited to 'src/main')
3 files changed, 50 insertions, 42 deletions
diff --git a/src/main/java/gregtech/GT_Mod.java b/src/main/java/gregtech/GT_Mod.java index 45075e6ecf..0456350d16 100644 --- a/src/main/java/gregtech/GT_Mod.java +++ b/src/main/java/gregtech/GT_Mod.java @@ -57,6 +57,7 @@ import gregtech.api.enums.Materials; import gregtech.api.enums.Mods; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.Textures; +import gregtech.api.gui.modularui.GT_UIInfos; import gregtech.api.interfaces.internal.IGT_Mod; import gregtech.api.metatileentity.BaseMetaPipeEntity; import gregtech.api.objects.GT_ItemStack; @@ -126,7 +127,7 @@ import ic2.api.recipe.RecipeOutput; guiFactory = "gregtech.client.GT_GuiFactory", dependencies = " required-after:IC2;" + " required-after:structurelib;" + " required-after:gtnhlib@[0.0.8,);" - + " required-after:modularui@[1.1.7,);" + + " required-after:modularui@[1.1.12,);" + " after:dreamcraft;" + " after:Forestry;" + " after:PFAAGeologica;" @@ -291,6 +292,8 @@ public class GT_Mod implements IGT_Mod { GT_Log.out.println("GT_Mod: Preload-Phase finished!"); GT_Log.ore.println("GT_Mod: Preload-Phase finished!"); + GT_UIInfos.init(); + for (Runnable tRunnable : GregTech_API.sAfterGTPreload) { try { tRunnable.run(); diff --git a/src/main/java/gregtech/api/gui/modularui/GT_UIInfos.java b/src/main/java/gregtech/api/gui/modularui/GT_UIInfos.java index afa60e5583..89a0835f13 100644 --- a/src/main/java/gregtech/api/gui/modularui/GT_UIInfos.java +++ b/src/main/java/gregtech/api/gui/modularui/GT_UIInfos.java @@ -30,6 +30,8 @@ import gregtech.api.util.GT_CoverBehaviorBase; public class GT_UIInfos { + public static void init() {} + /** * Generator for {@link UIInfo} which is responsible for registering and opening UIs. Unlike * {@link com.gtnewhorizons.modularui.api.UIInfos#TILE_MODULAR_UI}, this accepts custom constructors for UI. <br> diff --git a/src/main/java/gregtech/common/gui/modularui/uifactory/SelectItemUIFactory.java b/src/main/java/gregtech/common/gui/modularui/uifactory/SelectItemUIFactory.java index 4845b2ccfb..452ca36c0c 100644 --- a/src/main/java/gregtech/common/gui/modularui/uifactory/SelectItemUIFactory.java +++ b/src/main/java/gregtech/common/gui/modularui/uifactory/SelectItemUIFactory.java @@ -10,16 +10,16 @@ import net.minecraft.client.gui.FontRenderer; import net.minecraft.item.ItemStack; import net.minecraft.util.StatCollector; +import com.gtnewhorizons.modularui.api.GlStateManager; import com.gtnewhorizons.modularui.api.ModularUITextures; +import com.gtnewhorizons.modularui.api.drawable.GuiHelper; import com.gtnewhorizons.modularui.api.drawable.IDrawable; import com.gtnewhorizons.modularui.api.drawable.ItemDrawable; import com.gtnewhorizons.modularui.api.drawable.Text; -import com.gtnewhorizons.modularui.api.forge.ItemStackHandler; import com.gtnewhorizons.modularui.api.screen.ModularWindow; import com.gtnewhorizons.modularui.api.screen.UIBuildContext; -import com.gtnewhorizons.modularui.common.internal.wrapper.BaseSlot; import com.gtnewhorizons.modularui.common.widget.ButtonWidget; -import com.gtnewhorizons.modularui.common.widget.SlotWidget; +import com.gtnewhorizons.modularui.common.widget.DrawableWidget; import com.gtnewhorizons.modularui.common.widget.TextWidget; import gregtech.api.enums.Dyes; @@ -45,7 +45,6 @@ public class SelectItemUIFactory { private boolean anotherWindow = false; private AtomicBoolean dialogOpened; private int guiTint = GT_Util.getRGBInt(Dyes.MACHINE_METAL.getRGBA()); - private final ItemStackHandler currentDisplayItemHandler = new ItemStackHandler(); private Supplier<ItemStack> currentGetter; private final GT_GUIColorOverride colorOverride = GT_GUIColorOverride.get("SelectItemUIFactory"); @@ -88,7 +87,6 @@ public class SelectItemUIFactory { this.stacks = stacks; this.noDeselect = noDeselect; this.selected = noDeselect ? Math.max(0, selected) : selected; - this.currentDisplayItemHandler.setStackInSlot(0, getCandidate(selected)); } /** @@ -131,52 +129,58 @@ public class SelectItemUIFactory { new TextWidget(header).setDefaultColor(COLOR_TITLE.get()) .setPos(25, 9)); - builder.widget(new SlotWidget(BaseSlot.phantom(currentDisplayItemHandler, 0)) { + int currentSlotX = 9 + + getFontRenderer().getStringWidth(StatCollector.translateToLocal("GT5U.gui.select.current")); + int currentSlotY = 24; + builder.widget(new DrawableWidget() { @Override - public void draw(float partialTicks) { + public void onScreenUpdate() { + super.onScreenUpdate(); if (currentGetter != null) { ItemStack current = currentGetter.get(); - currentDisplayItemHandler.setStackInSlot(0, current); selected = GT_Utility.findMatchingStackInList(stacks, current); } - super.draw(partialTicks); } - }.disableInteraction() - .setBackground(GT_UITextures.SLOT_DARK_GRAY) - .setPos( - 9 + getFontRenderer().getStringWidth(StatCollector.translateToLocal("GT5U.gui.select.current")), - 24)) + }.setDrawable(GT_UITextures.SLOT_DARK_GRAY) + .setPos(currentSlotX, currentSlotY) + .setSize(18, 18)) .widget( - new TextWidget(StatCollector.translateToLocal("GT5U.gui.select.current")) - .setDefaultColor(COLOR_TEXT_GRAY.get()) - .setPos(8, 25 + (18 - getFontRenderer().FONT_HEIGHT) / 2)); + new ItemDrawable(() -> getCandidate(getSelected())).asWidgetWithTooltip() + .setPos(currentSlotX + 1, currentSlotY + 1)); + builder.widget( + new TextWidget(StatCollector.translateToLocal("GT5U.gui.select.current")) + .setDefaultColor(COLOR_TEXT_GRAY.get()) + .setPos(8, 25 + (18 - getFontRenderer().FONT_HEIGHT) / 2)); for (int i = 0; i < stacks.size(); i++) { final int index = i; - builder.widget( - new SlotWidget(new BaseSlot(new ItemStackHandler(new ItemStack[] { stacks.get(index) }), 0, true)) { - - @Override - public ClickResult onClick(int buttonId, boolean doubleClick) { - if (buttonId == 0) { - setSelected(index); - } else if (buttonId == 1) { - setSelected(UNSELECTED); - } else { - return ClickResult.ACCEPT; - } - selectedCallback.accept(getCandidate(getSelected())); - return ClickResult.SUCCESS; - } - - @Override - public IDrawable[] getBackground() { - return new IDrawable[] { - index == selected ? GT_UITextures.SLOT_DARK_GRAY : ModularUITextures.ITEM_SLOT }; - } - }.disableInteraction() - .setPos(7 + 18 * (index % cols), 43 + 18 * (index / cols))); + builder.widget(new ButtonWidget() { + + @Override + public void draw(float partialTicks) { + GlStateManager.pushMatrix(); + // so that item z levels are properly ordered + GlStateManager.translate(0, 0, 150 * getWindowLayer()); + new ItemDrawable(stacks.get(index)).draw(1, 1, 16, 16, partialTicks); + GlStateManager.popMatrix(); + } + }.setOnClick((clickData, widget) -> { + if (clickData.mouseButton == 0) { + setSelected(index); + } else { + setSelected(UNSELECTED); + } + selectedCallback.accept(getCandidate(getSelected())); + }) + .setSynced(false, false) + .dynamicTooltip(() -> GuiHelper.getItemTooltip(stacks.get(index))) + .setUpdateTooltipEveryTick(true) + .setBackground( + () -> new IDrawable[] { + index == selected ? GT_UITextures.SLOT_DARK_GRAY : ModularUITextures.ITEM_SLOT, }) + .setPos(7 + 18 * (index % cols), 43 + 18 * (index / cols)) + .setSize(18, 18)); } if (anotherWindow) { @@ -209,7 +213,6 @@ public class SelectItemUIFactory { if (noDeselect && newSelected == UNSELECTED) return; this.selected = newSelected; - currentDisplayItemHandler.setStackInSlot(0, getCandidate(this.selected)); } private ItemStack getCandidate(int listIndex) { |