diff --git a/CHANGELOG.md b/CHANGELOG.md index 3531dd89d..af3489fcc 100755 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,6 +1,11 @@ # Refined Storage Changelog +### 1.9.9 + +- Fixed Refined Storage sidebuttons displaying over the JEI bookmark pagination buttons (raoulvdberge) + ### 1.9.8 + - Fixed server crash when scrolling in Grid (Darkere) - Fixed various issues with Grid interactions working without power (Darkere) - Fixed changing rotation not updating blocks (Darkere) diff --git a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GuiContainerHandler.java b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GuiContainerHandler.java index c1e4922b3..d07891b22 100644 --- a/src/main/java/com/refinedmods/refinedstorage/integration/jei/GuiContainerHandler.java +++ b/src/main/java/com/refinedmods/refinedstorage/integration/jei/GuiContainerHandler.java @@ -2,15 +2,37 @@ package com.refinedmods.refinedstorage.integration.jei; import com.refinedmods.refinedstorage.container.BaseContainer; import com.refinedmods.refinedstorage.container.slot.filter.FluidFilterSlot; +import com.refinedmods.refinedstorage.screen.BaseScreen; import com.refinedmods.refinedstorage.screen.grid.GridScreen; +import com.refinedmods.refinedstorage.screen.widget.sidebutton.SideButton; import com.refinedmods.refinedstorage.util.RenderUtils; import mezz.jei.api.gui.handlers.IGuiContainerHandler; import net.minecraft.client.gui.screen.inventory.ContainerScreen; +import net.minecraft.client.renderer.Rectangle2d; import net.minecraftforge.fluids.FluidStack; import javax.annotation.Nullable; +import java.util.ArrayList; +import java.util.Collections; +import java.util.List; public class GuiContainerHandler implements IGuiContainerHandler> { + @Override + public List getGuiExtraAreas(ContainerScreen screen) { + if (screen instanceof BaseScreen) { + List sideButtons = ((BaseScreen) screen).getSideButtons(); + + List rectangles = new ArrayList<>(); + for (SideButton sideButton : sideButtons) { + rectangles.add(new Rectangle2d(sideButton.x, sideButton.y, sideButton.getWidth(), sideButton.getHeight())); + } + + return rectangles; + } + + return Collections.emptyList(); + } + @Nullable @Override public Object getIngredientUnderMouse(ContainerScreen screen, double mouseX, double mouseY) { diff --git a/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java b/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java index 3bce0e99a..3599b2203 100644 --- a/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java +++ b/src/main/java/com/refinedmods/refinedstorage/screen/BaseScreen.java @@ -51,6 +51,8 @@ public abstract class BaseScreen extends ContainerScreen private static final ITextComponent ALTERNATIVES_TEXT = new TranslationTextComponent("gui.refinedstorage.alternatives"); + private final List sideButtons = new ArrayList<>(); + private final Logger logger = LogManager.getLogger(getClass()); private int sideButtonY; @@ -95,6 +97,7 @@ public abstract class BaseScreen extends ContainerScreen } sideButtonY = 6; + sideButtons.clear(); onPostInit(guiLeft, guiTop); @@ -271,9 +274,14 @@ public abstract class BaseScreen extends ContainerScreen sideButtonY += button.getHeight() + 2; + sideButtons.add(button); this.addButton(button); } + public List getSideButtons() { + return sideButtons; + } + public void bindTexture(String namespace, String filenameInTexturesFolder) { minecraft.getTextureManager().bindTexture(TEXTURE_CACHE.computeIfAbsent(namespace + ":" + filenameInTexturesFolder, newId -> new ResourceLocation(namespace, "textures/" + filenameInTexturesFolder))); }