diff --git a/pom.xml b/pom.xml
index 2e03de1..0fddd2f 100644
--- a/pom.xml
+++ b/pom.xml
@@ -5,7 +5,7 @@
org.unixminecraft.mcinventory.bukkit
MCInventory-Bukkit
jar
- 0.0.1
+ 0.0.2
MCInventory-Bukkit
http://maven.apache.org
diff --git a/src/main/java/org/unixminecraft/mcinventory/bukkit/MCInventory.java b/src/main/java/org/unixminecraft/mcinventory/bukkit/MCInventory.java
index ed09a9c..189fd93 100644
--- a/src/main/java/org/unixminecraft/mcinventory/bukkit/MCInventory.java
+++ b/src/main/java/org/unixminecraft/mcinventory/bukkit/MCInventory.java
@@ -52,6 +52,7 @@ public final class MCInventory extends JavaPlugin implements Listener {
private HashSet preSelectedPlayers;
private ConcurrentHashMap selectedVillager;
+ private ConcurrentHashMap villagerInventories;
private ConcurrentHashMap openedVillagerInventories;
@Override
@@ -63,6 +64,7 @@ public void onEnable() {
preSelectedPlayers = new HashSet();
selectedVillager = new ConcurrentHashMap();
+ villagerInventories = new ConcurrentHashMap();
openedVillagerInventories = new ConcurrentHashMap();
getServer().getPluginManager().registerEvents(this, this);
@@ -192,7 +194,17 @@ else if(parameters[0].equalsIgnoreCase("open")) {
return true;
}
- final VillagerInventory villagerInventory = new VillagerInventory(selectedVillager.get(playerId));
+ final Villager villager = selectedVillager.get(playerId);
+ final VillagerInventory villagerInventory;
+
+ if(!villagerInventories.containsKey(villager)) {
+ villagerInventory = new VillagerInventory(villager);
+ villagerInventories.put(villager, villagerInventory);
+ }
+ else {
+ villagerInventory = villagerInventories.get(villager);
+ }
+
villagerInventory.openInventory(player);
openedVillagerInventories.put(playerId, villagerInventory);
@@ -303,8 +315,12 @@ public void onInventoryClose(final InventoryCloseEvent event) {
if(!openedVillagerInventories.containsKey(playerId)) {
return;
}
+
+ if(openedVillagerInventories.get(playerId).closeInventory()) {
+ villagerInventories.remove(selectedVillager.get(playerId));
+ }
- openedVillagerInventories.get(playerId).closeInventory(player);
+ openedVillagerInventories.remove(playerId);
}
@EventHandler(priority = EventPriority.HIGHEST)
diff --git a/src/main/java/org/unixminecraft/mcinventory/bukkit/VillagerInventory.java b/src/main/java/org/unixminecraft/mcinventory/bukkit/VillagerInventory.java
index 4568735..7e196ab 100644
--- a/src/main/java/org/unixminecraft/mcinventory/bukkit/VillagerInventory.java
+++ b/src/main/java/org/unixminecraft/mcinventory/bukkit/VillagerInventory.java
@@ -42,11 +42,17 @@ InventoryView openInventory(final Player player) {
return player.openInventory(villagerInventory);
}
- void closeInventory(final Player player) {
+ boolean closeInventory() {
+
+ if(!villagerInventory.getViewers().isEmpty()) {
+ return false;
+ }
final Inventory inventory = villager.getInventory();
for(int index = 0; index < inventory.getSize(); index++) {
inventory.setItem(index, villagerInventory.getItem(index));
}
+
+ return true;
}
}
diff --git a/src/main/resources/plugin.yml b/src/main/resources/plugin.yml
index ddbc22e..87d2bf7 100644
--- a/src/main/resources/plugin.yml
+++ b/src/main/resources/plugin.yml
@@ -1,6 +1,6 @@
name: MCInventory
main: org.unixminecraft.mcinventory.bukkit.MCInventory
-version: 0.0.1
+version: 0.0.2
author: unixminecraft
api-version: 1.15