diff --git a/src/main/java/de/mari_023/ae2wtlib/AE2wtlibForge.java b/src/main/java/de/mari_023/ae2wtlib/AE2wtlibForge.java index 4f4a05f1..6b802224 100644 --- a/src/main/java/de/mari_023/ae2wtlib/AE2wtlibForge.java +++ b/src/main/java/de/mari_023/ae2wtlib/AE2wtlibForge.java @@ -1,5 +1,6 @@ package de.mari_023.ae2wtlib; +import net.minecraft.client.Minecraft; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; import net.minecraft.network.codec.StreamCodec; @@ -147,6 +148,8 @@ public static void handle(ArrowLooseEvent event) { @SubscribeEvent public static void handle(ClientTickEvent.Post event) { - ClientTerminalHandler.get().checkTerminal(); + if (Minecraft.getInstance().player == null) + return; + ClientTerminalHandler.get(Minecraft.getInstance().player).checkTerminal(); } } diff --git a/src/main/java/de/mari_023/ae2wtlib/mixin/RestockRender.java b/src/main/java/de/mari_023/ae2wtlib/mixin/RestockRender.java index a6bef4c4..356268db 100644 --- a/src/main/java/de/mari_023/ae2wtlib/mixin/RestockRender.java +++ b/src/main/java/de/mari_023/ae2wtlib/mixin/RestockRender.java @@ -26,7 +26,7 @@ public abstract class RestockRender { public void renderGuiItemOverlay(Font font, ItemStack stack, int x, int y, CallbackInfo ci) { if (Minecraft.getInstance().player == null || Minecraft.getInstance().player.isCreative()) return; - ClientTerminalHandler handler = ClientTerminalHandler.get(); + ClientTerminalHandler handler = ClientTerminalHandler.get(Minecraft.getInstance().player); if (!handler.isRestockEnabled() || stack.getCount() == 1 || !handler.isRestockAble(stack)) return; renderItemDecorations(font, stack, x, y, ReadableNumberConverter.format(handler.getAccessibleAmount(stack), 3)); diff --git a/src/main/java/de/mari_023/ae2wtlib/networking/RestockAmountPacket.java b/src/main/java/de/mari_023/ae2wtlib/networking/RestockAmountPacket.java index 4430bc9e..6c2ec5ba 100644 --- a/src/main/java/de/mari_023/ae2wtlib/networking/RestockAmountPacket.java +++ b/src/main/java/de/mari_023/ae2wtlib/networking/RestockAmountPacket.java @@ -4,6 +4,7 @@ import com.google.common.collect.Maps; +import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.Holder; import net.minecraft.core.registries.Registries; import net.minecraft.network.RegistryFriendlyByteBuf; @@ -27,7 +28,9 @@ public record RestockAmountPacket(HashMap, Long> items) implements public void processPacketData(Player player) { HashMap map = Maps.newHashMapWithExpectedSize(items().size()); items().forEach((item, count) -> map.put(item.value(), count)); - ClientTerminalHandler.get().setRestockAbleItems(map); + if (!(player instanceof LocalPlayer localPlayer)) + return; + ClientTerminalHandler.get(localPlayer).setRestockAbleItems(map); } @Override diff --git a/src/main/java/de/mari_023/ae2wtlib/wct/ClientTerminalHandler.java b/src/main/java/de/mari_023/ae2wtlib/wct/ClientTerminalHandler.java index 36cec686..966b5be2 100644 --- a/src/main/java/de/mari_023/ae2wtlib/wct/ClientTerminalHandler.java +++ b/src/main/java/de/mari_023/ae2wtlib/wct/ClientTerminalHandler.java @@ -1,11 +1,10 @@ package de.mari_023.ae2wtlib.wct; import java.util.HashMap; -import java.util.Objects; import org.jetbrains.annotations.Nullable; -import net.minecraft.client.Minecraft; +import net.minecraft.client.player.LocalPlayer; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; @@ -16,14 +15,19 @@ public class ClientTerminalHandler { @Nullable private static ClientTerminalHandler instance; - private final Player player = Objects.requireNonNull(Minecraft.getInstance().player); - private final CraftingTerminalHandler craftingHandler = CraftingTerminalHandler.getCraftingTerminalHandler(player); + private final Player player; + private final CraftingTerminalHandler craftingHandler; private HashMap restockAbleItems = new HashMap<>(); private boolean restockEnabled = false; - public static ClientTerminalHandler get() { - if (instance == null || instance.player != Minecraft.getInstance().player) - instance = new ClientTerminalHandler(); + public ClientTerminalHandler(Player player) { + this.player = player; + craftingHandler = CraftingTerminalHandler.getCraftingTerminalHandler(player); + } + + public static ClientTerminalHandler get(LocalPlayer player) { + if (instance == null || instance.player != player) + instance = new ClientTerminalHandler(player); return instance; }