diff --git a/src/main/java/de/bixilon/minosoft/objects/Player.java b/src/main/java/de/bixilon/minosoft/objects/Player.java index 450c8c53e..094c27c08 100644 --- a/src/main/java/de/bixilon/minosoft/objects/Player.java +++ b/src/main/java/de/bixilon/minosoft/objects/Player.java @@ -14,10 +14,13 @@ package de.bixilon.minosoft.objects; import de.bixilon.minosoft.game.datatypes.GameMode; +import de.bixilon.minosoft.game.datatypes.Slot; +import de.bixilon.minosoft.game.datatypes.Slots; import de.bixilon.minosoft.game.datatypes.World; import de.bixilon.minosoft.game.datatypes.entities.Location; import de.bixilon.minosoft.game.datatypes.entities.meta.HumanMetaData; +import java.util.HashMap; import java.util.UUID; public class Player { @@ -33,6 +36,7 @@ public class Player { short level; short totalExperience; HumanMetaData metaData; + HashMap inventory = new HashMap<>(); public Player(Account acc) { this.acc = acc; @@ -134,4 +138,26 @@ public class Player { public void setMetaData(HumanMetaData metaData) { this.metaData = metaData; } + + public HashMap getInventory() { + return inventory; + } + + public void setInventory(HashMap inventory) { + this.inventory = inventory; + } + + public void setInventory(Slot[] data) { + for (int i = 0; i < data.length; i++) { + setSlot(Slots.Inventory.byId(i), data[i]); + } + } + + public Slot getSlot(Slots.Inventory slot) { + return inventory.get(slot); + } + + public void setSlot(Slots.Inventory slot, Slot data) { + inventory.replace(slot, data); + } } diff --git a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java index 007bdaaf6..38279aa95 100644 --- a/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java +++ b/src/main/java/de/bixilon/minosoft/protocol/protocol/PacketHandler.java @@ -190,6 +190,11 @@ public class PacketHandler { } public void handle(PacketWindowItems pkg) { + switch (pkg.getWindowId()) { + case 0: //Inventory + connection.getPlayer().setInventory(pkg.getData()); + break; + } } public void handle(PacketEntityMetadata pkg) { @@ -198,7 +203,6 @@ public class PacketHandler { connection.getPlayer().setMetaData((HumanMetaData) pkg.getEntityData(HumanMetaData.class)); } else { connection.getPlayer().getWorld().getEntity(pkg.getEntityId()).setMetaData(pkg.getEntityData(connection.getPlayer().getWorld().getEntity(pkg.getEntityId()).getMetaData().getClass())); - } }