From 1dd28ac0eb16a714cc0aee820a3b421416158bf0 Mon Sep 17 00:00:00 2001 From: Jikoo Date: Wed, 2 Oct 2019 07:09:42 -0400 Subject: [PATCH] Cursor/crafting progress --- .../internal/v1_14_R1/SpecialPlayerInventory.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java index e1f0aff..f41bcac 100644 --- a/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java +++ b/internal/v1_14_R1/src/main/java/com/lishid/openinv/internal/v1_14_R1/SpecialPlayerInventory.java @@ -34,6 +34,7 @@ import net.minecraft.server.v1_14_R1.EntityPlayer; import net.minecraft.server.v1_14_R1.EnumItemSlot; import net.minecraft.server.v1_14_R1.IBlockData; import net.minecraft.server.v1_14_R1.IChatBaseComponent; +import net.minecraft.server.v1_14_R1.IInventory; import net.minecraft.server.v1_14_R1.Item; import net.minecraft.server.v1_14_R1.ItemArmor; import net.minecraft.server.v1_14_R1.ItemStack; @@ -60,6 +61,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP private EntityHuman player; private List items, armor, extraSlots, crafting; @SuppressWarnings("MismatchedQueryAndUpdateOfCollection") // Backing field is mutable. + // TODO: cursor requires an additional slot listener private final List cursor = new SingleFieldList<>(this::getCarried, this::setCarried); private List> f; @@ -71,10 +73,14 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.items = this.player.inventory.items; this.armor = this.player.inventory.armor; this.extraSlots = this.player.inventory.extraSlots; - this.crafting = ((CraftInventoryCrafting) this.player.defaultContainer.getBukkitView().getTopInventory()).getInventory().getContents(); + this.crafting = this.getCrafting().getContents(); this.f = ImmutableList.of(this.items, this.armor, this.extraSlots, this.crafting, this.cursor); } + private IInventory getCrafting() { + return ((CraftInventoryCrafting) this.player.defaultContainer.getBukkitView().getTopInventory()).getInventory(); + } + @Override public void setPlayerOnline(@NotNull final Player player) { if (!this.playerOnline) { @@ -89,7 +95,7 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP this.items = this.player.inventory.items; this.armor = this.player.inventory.armor; this.extraSlots = this.player.inventory.extraSlots; - this.crafting = ((CraftInventoryCrafting) this.player.defaultContainer.getBukkitView().getTopInventory()).getInventory().getContents(); + this.crafting = this.getCrafting().getContents(); this.f = ImmutableList.of(this.items, this.armor, this.extraSlots, this.crafting, this.cursor); this.playerOnline = true; } @@ -267,11 +273,13 @@ public class SpecialPlayerInventory extends PlayerInventory implements ISpecialP @Override public void onOpen(CraftHumanEntity who) { this.transaction.add(who); + this.getCrafting().getViewers().add(who); } @Override public void onClose(CraftHumanEntity who) { this.transaction.remove(who); + this.getCrafting().getViewers().remove(who); } @Override