diff --git a/gradle.properties b/gradle.properties index af4231b..aa3f91a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -6,7 +6,7 @@ minecraft_version=1.16.4 yarn_mappings=1.16.4+build.7 loader_version=0.10.8 # Mod Properties -mod_version=1.4.0 +mod_version=1.4.1 maven_group=us.potatoboy archives_base_name=InvView # Dependencies diff --git a/src/main/java/us/potatoboy/invview/ViewCommand.java b/src/main/java/us/potatoboy/invview/ViewCommand.java index 2c2c2d3..8adbc61 100644 --- a/src/main/java/us/potatoboy/invview/ViewCommand.java +++ b/src/main/java/us/potatoboy/invview/ViewCommand.java @@ -33,7 +33,7 @@ public static int inv(CommandContext context) throws Comman return; } else { NamedScreenHandlerFactory screenHandlerFactory = new SimpleNamedScreenHandlerFactory((syncId, inv, playerEntity) -> - new PlayerInventoryScreenHandler(syncId, player.inventory, requestedPlayer.inventory), + new PlayerInventoryScreenHandler(syncId, player, requestedPlayer.inventory), requestedPlayer.getDisplayName() ); @@ -107,7 +107,7 @@ public static int trinkets(CommandContext context) throws C return; } else { player.openHandledScreen(new SimpleNamedScreenHandlerFactory((syncId, inv, player1) -> - new TrinketScreenHandler(syncId, player.inventory, requestedPlayer), + new TrinketScreenHandler(syncId, player, requestedPlayer), requestedPlayer.getDisplayName() )); } diff --git a/src/main/java/us/potatoboy/invview/gui/PlayerInventoryScreenHandler.java b/src/main/java/us/potatoboy/invview/gui/PlayerInventoryScreenHandler.java index 2903ca1..be0d9cd 100644 --- a/src/main/java/us/potatoboy/invview/gui/PlayerInventoryScreenHandler.java +++ b/src/main/java/us/potatoboy/invview/gui/PlayerInventoryScreenHandler.java @@ -4,7 +4,7 @@ import net.minecraft.entity.player.PlayerEntity; import net.minecraft.entity.player.PlayerInventory; import net.minecraft.item.ItemStack; -import net.minecraft.screen.GenericContainerScreenHandler; +import net.minecraft.item.Items; import net.minecraft.screen.ScreenHandler; import net.minecraft.screen.ScreenHandlerListener; import net.minecraft.screen.ScreenHandlerType; @@ -16,14 +16,15 @@ import java.util.List; public class PlayerInventoryScreenHandler extends ScreenHandler { + private final ServerPlayerEntity player; private final PlayerInventory viewInventory; - private final PlayerInventory playerInventory; private final List listeners = Lists.newArrayList(); - public PlayerInventoryScreenHandler(int syncId, PlayerInventory playerInventory, PlayerInventory viewInventory) { + public PlayerInventoryScreenHandler(int syncId, ServerPlayerEntity player, PlayerInventory viewInventory) { super(ScreenHandlerType.GENERIC_9X5, syncId); + this.player = player; this.viewInventory = viewInventory; - this.playerInventory = playerInventory; + PlayerInventory playerInventory = player.inventory; int rows = 5; int i = (rows - 4) * 18; @@ -51,46 +52,19 @@ public boolean canUse(PlayerEntity player) { return true; } - @Override - public void addListener(ScreenHandlerListener listener) { - if (!listeners.contains(listener)) { - listeners.add(listener); - listener.onHandlerRegistered(this, getStacks()); - sendContentUpdates(); - } - } - - @Override - public void sendContentUpdates() { - for (int j = 0; j < slots.size(); ++j) { - ItemStack itemStack = slots.get(j).getStack(); - - for (ScreenHandlerListener screenHandlerListener: listeners) { - screenHandlerListener.onSlotUpdate(this, j, itemStack.copy()); - } - } - } - @Override public ItemStack transferSlot(PlayerEntity player, int index) { - if (!(player instanceof ServerPlayerEntity)) - return ItemStack.EMPTY; - - this.sendContentUpdates(); - return playerInventory.getCursorStack(); + this.resendInventory(); + return new ItemStack(Items.OAK_PLANKS); } @Override public ItemStack onSlotClick(int i, int j, SlotActionType actionType, PlayerEntity playerEntity) { - if (i < 0) - return ItemStack.EMPTY; - if (i > 40 && i < 45) { - sendContentUpdates(); - return playerInventory.getCursorStack(); + resendInventory(); + return ItemStack.EMPTY; } - sendContentUpdates(); return super.onSlotClick(i, j, actionType, playerEntity); } @@ -99,4 +73,8 @@ public void close(PlayerEntity player) { InvView.SavePlayerData((ServerPlayerEntity) viewInventory.player); super.close(player); } + + private void resendInventory() { + player.onHandlerRegistered(this, this.getStacks()); + } } diff --git a/src/main/java/us/potatoboy/invview/gui/TrinketScreenHandler.java b/src/main/java/us/potatoboy/invview/gui/TrinketScreenHandler.java index 90c5844..d2b3f1e 100644 --- a/src/main/java/us/potatoboy/invview/gui/TrinketScreenHandler.java +++ b/src/main/java/us/potatoboy/invview/gui/TrinketScreenHandler.java @@ -20,14 +20,15 @@ public class TrinketScreenHandler extends ScreenHandler { private final TrinketComponent trinketComponent; private final ServerPlayerEntity viewedPlayer; - private final PlayerInventory playerInventory; + private final ServerPlayerEntity player; private final List listeners = Lists.newArrayList(); - public TrinketScreenHandler(int syncId, PlayerInventory playerInventory, ServerPlayerEntity viewedPlayer) { + public TrinketScreenHandler(int syncId, ServerPlayerEntity player, ServerPlayerEntity viewedPlayer) { super(ScreenHandlerType.GENERIC_9X2, syncId); - this.playerInventory = playerInventory; + PlayerInventory playerInventory = player.inventory; trinketComponent = TrinketsApi.getTrinketComponent(viewedPlayer); this.viewedPlayer = viewedPlayer; + this.player = player; int rows = 2; int i = (rows - 4) * 18; @@ -55,56 +56,31 @@ public boolean canUse(PlayerEntity player) { return true; } - @Override - public void addListener(ScreenHandlerListener listener) { - if (!listeners.contains(listener)) { - listeners.add(listener); - listener.onHandlerRegistered(this, getStacks()); - sendContentUpdates(); - } - } - - @Override - public void sendContentUpdates() { - for (int j = 0; j < slots.size(); ++j) { - ItemStack itemStack = slots.get(j).getStack(); - - for (ScreenHandlerListener screenHandlerListener: listeners) { - screenHandlerListener.onSlotUpdate(this, j, itemStack.copy()); - } - } - } - @Override public ItemStack transferSlot(PlayerEntity player, int index) { - if (!(player instanceof ServerPlayerEntity)) - return ItemStack.EMPTY; - - this.sendContentUpdates(); - return playerInventory.getCursorStack(); + this.resendInventory(); + return ItemStack.EMPTY; } @Override public ItemStack onSlotClick(int i, int j, SlotActionType actionType, PlayerEntity playerEntity) { - if (actionType == SlotActionType.QUICK_MOVE) return playerInventory.getCursorStack(); - - sendContentUpdates(); - - if (i < 0) - return ItemStack.EMPTY; - if (i < TrinketSlots.getSlotCount()) { return super.onSlotClick(i, j, actionType, playerEntity); } else if (i > 17) { return super.onSlotClick(i, j, actionType, playerEntity); } else { - return playerInventory.getCursorStack(); + resendInventory(); + return ItemStack.EMPTY; } } @Override public void close(PlayerEntity player) { - InvView.SavePlayerData(viewedPlayer); + InvView.SavePlayerData(this.viewedPlayer); super.close(player); } + + private void resendInventory() { + player.onHandlerRegistered(this, this.getStacks()); + } }