diff --git a/src/main/java/com/cleanroommc/modularui/integration/jei/ModularUIHandler.java b/src/main/java/com/cleanroommc/modularui/integration/jei/ModularUIHandler.java index ec8b9dcda..6dfb27dd7 100644 --- a/src/main/java/com/cleanroommc/modularui/integration/jei/ModularUIHandler.java +++ b/src/main/java/com/cleanroommc/modularui/integration/jei/ModularUIHandler.java @@ -60,7 +60,7 @@ public IGuiProperties apply(@NotNull GuiScreenWrapper guiScreen) { @Nullable @Override public IRecipeTransferError transferRecipe(@NotNull ModularContainer container, @NotNull IRecipeLayout recipeLayout, @NotNull EntityPlayer player, boolean maxTransfer, boolean doTransfer) { - ModularScreen screen = ModularScreen.getCurrent(); + ModularScreen screen = container.getScreen(); if (screen instanceof JeiRecipeTransferHandler recipeTransferHandler) { return recipeTransferHandler.transferRecipe(recipeLayout, maxTransfer, !doTransfer); } diff --git a/src/main/java/com/cleanroommc/modularui/screen/GuiScreenWrapper.java b/src/main/java/com/cleanroommc/modularui/screen/GuiScreenWrapper.java index 23bde0e92..2d5542a2f 100644 --- a/src/main/java/com/cleanroommc/modularui/screen/GuiScreenWrapper.java +++ b/src/main/java/com/cleanroommc/modularui/screen/GuiScreenWrapper.java @@ -56,6 +56,7 @@ public GuiScreenWrapper(ModularContainer container, ModularScreen screen) { super(container); this.screen = screen; this.screen.construct(this); + container.setScreen(this.screen); } @Override diff --git a/src/main/java/com/cleanroommc/modularui/screen/ModularContainer.java b/src/main/java/com/cleanroommc/modularui/screen/ModularContainer.java index 6d6f44ac4..5417104c5 100644 --- a/src/main/java/com/cleanroommc/modularui/screen/ModularContainer.java +++ b/src/main/java/com/cleanroommc/modularui/screen/ModularContainer.java @@ -19,7 +19,7 @@ import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.world.World; -import net.minecraftforge.fml.common.Optional; +import net.minecraftforge.fml.common.Optional.Interface; import net.minecraftforge.fml.relauncher.Side; import net.minecraftforge.fml.relauncher.SideOnly; @@ -30,7 +30,7 @@ import java.util.*; -@Optional.Interface(modid = ModularUI.BOGO_SORT, iface = "com.cleanroommc.bogosorter.api.ISortableContainer") +@Interface(modid = ModularUI.BOGO_SORT, iface = "com.cleanroommc.bogosorter.api.ISortableContainer") public class ModularContainer extends Container implements ISortableContainer { public static ModularContainer getCurrent(EntityPlayer player) { @@ -47,6 +47,8 @@ public static ModularContainer getCurrent(EntityPlayer player) { private final List shiftClickSlots = new ArrayList<>(); private ContainerCustomizer containerCustomizer; + private Optional optionalScreen = Optional.empty(); + public ModularContainer(EntityPlayer player, PanelSyncManager panelSyncManager, String mainPanelName) { this.player = player; this.syncManager = new ModularSyncManager(this); @@ -67,6 +69,17 @@ public ModularContainer(ContainerCustomizer containerCustomizer) { this.containerCustomizer.initialize(this); } + @SideOnly(Side.CLIENT) + public void setScreen(ModularScreen screen) { + this.optionalScreen = Optional.ofNullable(screen); + } + + @Nullable + @SideOnly(Side.CLIENT) + public ModularScreen getScreen() { + return (ModularScreen) optionalScreen.orElse(null); + } + public ContainerAccessor acc() { return (ContainerAccessor) this; }