From 4e30d28e8db2f231f808ed5bd291036607fff280 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Florian=20N=C3=BCcke?= Date: Sat, 1 Jan 2022 04:25:08 +0100 Subject: [PATCH] Fix access to client-only type on server. Fixes #72. --- .../client/gui/AbstractMachineInventoryScreen.java | 3 +++ .../client/gui/AbstractMachineTerminalScreen.java | 3 +++ .../oc2/client/gui/AbstractModContainerScreen.java | 3 +++ .../cil/oc2/client/gui/ComputerContainerScreen.java | 3 +++ .../cil/oc2/client/gui/ComputerTerminalScreen.java | 3 +++ .../cil/oc2/client/gui/MachineTerminalWidget.java | 13 ++++++++----- .../li/cil/oc2/client/gui/RobotContainerScreen.java | 3 +++ .../li/cil/oc2/client/gui/RobotTerminalScreen.java | 3 +++ .../common/container/RobotTerminalContainer.java | 11 ++++++++--- 9 files changed, 37 insertions(+), 8 deletions(-) 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 c7b004f3..e629f202 100644 --- a/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/AbstractMachineInventoryScreen.java @@ -13,12 +13,15 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import java.util.List; import static java.util.Arrays.asList; import static li.cil.oc2.common.util.TooltipUtils.withColor; +@OnlyIn(Dist.CLIENT) public abstract class AbstractMachineInventoryScreen extends AbstractModContainerScreen { private static final int CONTROLS_TOP = 8; private static final int ENERGY_TOP = CONTROLS_TOP + Sprites.SIDEBAR_2.height + 4; 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 63f71464..e35a707c 100644 --- a/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/AbstractMachineTerminalScreen.java @@ -14,12 +14,15 @@ import net.minecraft.network.chat.Component; import net.minecraft.network.chat.FormattedText; import net.minecraft.network.chat.TranslatableComponent; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import java.util.List; import static java.util.Arrays.asList; import static li.cil.oc2.common.util.TooltipUtils.withColor; +@OnlyIn(Dist.CLIENT) public abstract class AbstractMachineTerminalScreen extends AbstractModContainerScreen { private static final int CONTROLS_TOP = 8; private static final int ENERGY_TOP = CONTROLS_TOP + Sprites.SIDEBAR_3.height + 4; diff --git a/src/main/java/li/cil/oc2/client/gui/AbstractModContainerScreen.java b/src/main/java/li/cil/oc2/client/gui/AbstractModContainerScreen.java index 3da9e6de..814bb4bb 100644 --- a/src/main/java/li/cil/oc2/client/gui/AbstractModContainerScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/AbstractModContainerScreen.java @@ -4,7 +4,10 @@ import net.minecraft.client.gui.screens.inventory.AbstractContainerScreen; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; import net.minecraft.world.inventory.AbstractContainerMenu; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +@OnlyIn(Dist.CLIENT) public abstract class AbstractModContainerScreen extends AbstractContainerScreen { public AbstractModContainerScreen(final T container, final Inventory playerInventory, final Component title) { super(container, playerInventory, title); diff --git a/src/main/java/li/cil/oc2/client/gui/ComputerContainerScreen.java b/src/main/java/li/cil/oc2/client/gui/ComputerContainerScreen.java index e7791acb..1a0ef17b 100644 --- a/src/main/java/li/cil/oc2/client/gui/ComputerContainerScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/ComputerContainerScreen.java @@ -6,7 +6,10 @@ import li.cil.oc2.common.container.ComputerInventoryContainer; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +@OnlyIn(Dist.CLIENT) public final class ComputerContainerScreen extends AbstractMachineInventoryScreen { public ComputerContainerScreen(final ComputerInventoryContainer container, final Inventory inventory, final Component title) { super(container, inventory, title); diff --git a/src/main/java/li/cil/oc2/client/gui/ComputerTerminalScreen.java b/src/main/java/li/cil/oc2/client/gui/ComputerTerminalScreen.java index 8c702256..ee9d404f 100644 --- a/src/main/java/li/cil/oc2/client/gui/ComputerTerminalScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/ComputerTerminalScreen.java @@ -3,7 +3,10 @@ package li.cil.oc2.client.gui; import li.cil.oc2.common.container.ComputerTerminalContainer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +@OnlyIn(Dist.CLIENT) public final class ComputerTerminalScreen extends AbstractMachineTerminalScreen { public ComputerTerminalScreen(final ComputerTerminalContainer container, final Inventory playerInventory, final Component title) { super(container, playerInventory, title); diff --git a/src/main/java/li/cil/oc2/client/gui/MachineTerminalWidget.java b/src/main/java/li/cil/oc2/client/gui/MachineTerminalWidget.java index 1e07e750..2a2bd0ad 100644 --- a/src/main/java/li/cil/oc2/client/gui/MachineTerminalWidget.java +++ b/src/main/java/li/cil/oc2/client/gui/MachineTerminalWidget.java @@ -8,18 +8,21 @@ import net.minecraft.client.Minecraft; import net.minecraft.client.gui.Font; import net.minecraft.client.gui.GuiComponent; import net.minecraft.network.chat.Component; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; import org.lwjgl.glfw.GLFW; import javax.annotation.Nullable; import java.nio.ByteBuffer; +@OnlyIn(Dist.CLIENT) public final class MachineTerminalWidget extends GuiComponent { - public static final int TERMINAL_WIDTH = Terminal.WIDTH * Terminal.CHAR_WIDTH / 2; - public static final int TERMINAL_HEIGHT = Terminal.HEIGHT * Terminal.CHAR_HEIGHT / 2; + private static final int TERMINAL_WIDTH = Terminal.WIDTH * Terminal.CHAR_WIDTH / 2; + private static final int TERMINAL_HEIGHT = Terminal.HEIGHT * Terminal.CHAR_HEIGHT / 2; - public static final int MARGIN_SIZE = 8; - public static final int TERMINAL_X = MARGIN_SIZE; - public static final int TERMINAL_Y = MARGIN_SIZE; + private static final int MARGIN_SIZE = 8; + private static final int TERMINAL_X = MARGIN_SIZE; + private static final int TERMINAL_Y = MARGIN_SIZE; public static final int WIDTH = Sprites.TERMINAL_SCREEN.width; public static final int HEIGHT = Sprites.TERMINAL_SCREEN.height; diff --git a/src/main/java/li/cil/oc2/client/gui/RobotContainerScreen.java b/src/main/java/li/cil/oc2/client/gui/RobotContainerScreen.java index dc30c180..821eb37a 100644 --- a/src/main/java/li/cil/oc2/client/gui/RobotContainerScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/RobotContainerScreen.java @@ -6,7 +6,10 @@ import li.cil.oc2.common.container.RobotInventoryContainer; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +@OnlyIn(Dist.CLIENT) public final class RobotContainerScreen extends AbstractMachineInventoryScreen { private static final int SLOT_SIZE = 18; diff --git a/src/main/java/li/cil/oc2/client/gui/RobotTerminalScreen.java b/src/main/java/li/cil/oc2/client/gui/RobotTerminalScreen.java index 16a627b5..45c32636 100644 --- a/src/main/java/li/cil/oc2/client/gui/RobotTerminalScreen.java +++ b/src/main/java/li/cil/oc2/client/gui/RobotTerminalScreen.java @@ -6,7 +6,10 @@ import li.cil.oc2.common.container.RobotTerminalContainer; import net.minecraft.client.renderer.GameRenderer; import net.minecraft.network.chat.Component; import net.minecraft.world.entity.player.Inventory; +import net.minecraftforge.api.distmarker.Dist; +import net.minecraftforge.api.distmarker.OnlyIn; +@OnlyIn(Dist.CLIENT) public final class RobotTerminalScreen extends AbstractMachineTerminalScreen { private static final int SLOTS_X = (MachineTerminalWidget.WIDTH - Sprites.HOTBAR.width) / 2; private static final int SLOTS_Y = MachineTerminalWidget.HEIGHT - 1; diff --git a/src/main/java/li/cil/oc2/common/container/RobotTerminalContainer.java b/src/main/java/li/cil/oc2/common/container/RobotTerminalContainer.java index 4447f245..22cc7cda 100644 --- a/src/main/java/li/cil/oc2/common/container/RobotTerminalContainer.java +++ b/src/main/java/li/cil/oc2/common/container/RobotTerminalContainer.java @@ -1,6 +1,6 @@ package li.cil.oc2.common.container; -import li.cil.oc2.client.gui.MachineTerminalWidget; +import li.cil.oc2.client.gui.Sprites; import li.cil.oc2.common.bus.CommonDeviceBusController; import li.cil.oc2.common.energy.FixedEnergyStorage; import li.cil.oc2.common.entity.RobotEntity; @@ -47,10 +47,15 @@ public final class RobotTerminalContainer extends AbstractRobotContainer { private RobotTerminalContainer(final int id, final RobotEntity robot, final ContainerData energyInfo) { super(Containers.ROBOT_TERMINAL.get(), id, robot, energyInfo); + // It's kinda dumb we need to access technically-client-side stuff here, but that's the nature of containers + // needing to specify display positions for some reason. + final int terminalScreenWidth = Sprites.TERMINAL_SCREEN.width; + final int terminalScreenHeight = Sprites.TERMINAL_SCREEN.height; + final ItemStackHandler inventory = robot.getInventory(); for (int slot = 0; slot < inventory.getSlots(); slot++) { - final int x = (MachineTerminalWidget.WIDTH - inventory.getSlots() * SLOT_SIZE) / 2 + 1 + slot * SLOT_SIZE; - addSlot(new SlotItemHandler(inventory, slot, x, MachineTerminalWidget.HEIGHT + 4)); + final int x = (terminalScreenWidth - inventory.getSlots() * SLOT_SIZE) / 2 + 1 + slot * SLOT_SIZE; + addSlot(new SlotItemHandler(inventory, slot, x, terminalScreenHeight + 4)); } } }