diff --git a/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java b/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java index 74c3a482..49686aec 100644 --- a/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java @@ -13,6 +13,7 @@ import li.cil.oc2.common.util.TooltipUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.renderer.GameRenderer; +import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.TranslatableComponent; @@ -20,6 +21,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import java.util.ArrayList; import java.util.List; import static java.util.Arrays.asList; @@ -38,6 +40,25 @@ public AbstractMachineInventoryScreen(final T container, final Inventory playerI /////////////////////////////////////////////////////////////////// + public List getExtraAreas() { + final List list = new ArrayList<>(); + list.add(new Rect2i( + leftPos - Sprites.SIDEBAR_2.width, topPos + CONTROLS_TOP, + Sprites.SIDEBAR_2.width, Sprites.SIDEBAR_2.height + )); + + if (shouldRenderEnergyBar()) { + list.add(new Rect2i( + leftPos - Sprites.SIDEBAR_2.width, topPos + ENERGY_TOP, + Sprites.SIDEBAR_2.width, Sprites.SIDEBAR_2.height + )); + } + + return list; + } + + /////////////////////////////////////////////////////////////////// + @Override protected void init() { super.init(); @@ -77,8 +98,6 @@ public void onPress() { }.withTooltip(new TranslatableComponent(Constants.MACHINE_OPEN_TERMINAL_CAPTION))); } - /////////////////////////////////////////////////////////////////// - @Override protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) { RenderSystem.setShader(GameRenderer::getPositionTexShader); diff --git a/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java b/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java index e43a06a8..dbec0454 100644 --- a/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java @@ -11,6 +11,7 @@ import li.cil.oc2.common.util.TooltipUtils; import net.minecraft.ChatFormatting; import net.minecraft.client.gui.components.EditBox; +import net.minecraft.client.renderer.Rect2i; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.TextComponent; @@ -19,6 +20,7 @@ import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; +import java.util.ArrayList; import java.util.List; import static java.util.Arrays.asList; @@ -48,6 +50,23 @@ public static boolean isInputCaptureEnabled() { return isInputCaptureEnabled; } + public List getExtraAreas() { + final List list = new ArrayList<>(); + list.add(new Rect2i( + leftPos - Sprites.SIDEBAR_3.width, topPos + CONTROLS_TOP, + Sprites.SIDEBAR_3.width, Sprites.SIDEBAR_3.height + )); + + if (shouldRenderEnergyBar()) { + list.add(new Rect2i( + leftPos - Sprites.SIDEBAR_2.width, topPos + ENERGY_TOP, + Sprites.SIDEBAR_2.width, Sprites.SIDEBAR_2.height + )); + } + + return list; + } + @Override public void containerTick() { super.containerTick(); @@ -171,7 +190,7 @@ protected void renderFg(final PoseStack stack, final float partialTicks, final i @Override protected void renderBg(final PoseStack stack, final float partialTicks, final int mouseX, final int mouseY) { - Sprites.SIDEBAR_3.draw(stack, leftPos - Sprites.SIDEBAR_2.width, topPos + CONTROLS_TOP); + Sprites.SIDEBAR_3.draw(stack, leftPos - Sprites.SIDEBAR_3.width, topPos + CONTROLS_TOP); if (shouldRenderEnergyBar()) { final int x = leftPos - Sprites.SIDEBAR_2.width; diff --git a/src/main/java/li/cil/oc2/common/integration/jei/ExtraGuiAreasJEIPlugin.java b/src/main/java/li/cil/oc2/common/integration/jei/ExtraGuiAreasJEIPlugin.java new file mode 100644 index 00000000..b81027fe --- /dev/null +++ b/src/main/java/li/cil/oc2/common/integration/jei/ExtraGuiAreasJEIPlugin.java @@ -0,0 +1,43 @@ +/* SPDX-License-Identifier: MIT */ + +package li.cil.oc2.common.integration.jei; + +import li.cil.oc2.api.API; +import li.cil.oc2.client.gui.AbstractMachineInventoryScreen; +import li.cil.oc2.client.gui.AbstractMachineTerminalScreen; +import mezz.jei.api.IModPlugin; +import mezz.jei.api.JeiPlugin; +import mezz.jei.api.gui.handlers.IGuiContainerHandler; +import mezz.jei.api.registration.IGuiHandlerRegistration; +import net.minecraft.client.renderer.Rect2i; +import net.minecraft.resources.ResourceLocation; + +import java.util.List; + +@JeiPlugin +public class ExtraGuiAreasJEIPlugin implements IModPlugin { + @Override + public ResourceLocation getPluginUid() { + return new ResourceLocation(API.MOD_ID, "extra_gui_areas"); + } + + @Override + public void registerGuiHandlers(final IGuiHandlerRegistration registration) { + registration.addGenericGuiContainerHandler(AbstractMachineInventoryScreen.class, new AbstractMachineInventoryScreenGuiContainerHandler()); + registration.addGenericGuiContainerHandler(AbstractMachineTerminalScreen.class, new AbstractMachineTerminalScreenGuiContainerHandler()); + } + + private static final class AbstractMachineInventoryScreenGuiContainerHandler implements IGuiContainerHandler> { + @Override + public List getGuiExtraAreas(final AbstractMachineInventoryScreen screen) { + return screen.getExtraAreas(); + } + } + + private static final class AbstractMachineTerminalScreenGuiContainerHandler implements IGuiContainerHandler> { + @Override + public List getGuiExtraAreas(final AbstractMachineTerminalScreen screen) { + return screen.getExtraAreas(); + } + } +} diff --git a/src/main/java/li/cil/oc2/common/integration/jei/package-info.java b/src/main/java/li/cil/oc2/common/integration/jei/package-info.java new file mode 100644 index 00000000..fdd08fd5 --- /dev/null +++ b/src/main/java/li/cil/oc2/common/integration/jei/package-info.java @@ -0,0 +1,9 @@ +/* SPDX-License-Identifier: MIT */ + +@ParametersAreNonnullByDefault +@MethodsReturnNonnullByDefault +package li.cil.oc2.common.integration.jei; + +import net.minecraft.MethodsReturnNonnullByDefault; + +import javax.annotation.ParametersAreNonnullByDefault;