Skip to content

Commit

Permalink
Updated to allow concurrent modifiction of the same Villager's invent…
Browse files Browse the repository at this point in the history
…ory at the same time.
  • Loading branch information
unixminecraft committed Mar 8, 2020
1 parent abd8547 commit 8fdea98
Show file tree
Hide file tree
Showing 4 changed files with 27 additions and 5 deletions.
2 changes: 1 addition & 1 deletion pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@
<groupId>org.unixminecraft.mcinventory.bukkit</groupId>
<artifactId>MCInventory-Bukkit</artifactId>
<packaging>jar</packaging>
<version>0.0.1</version>
<version>0.0.2</version>
<name>MCInventory-Bukkit</name>

<url>http://maven.apache.org</url>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,7 @@ public final class MCInventory extends JavaPlugin implements Listener {

private HashSet<UUID> preSelectedPlayers;
private ConcurrentHashMap<UUID, Villager> selectedVillager;
private ConcurrentHashMap<Villager, VillagerInventory> villagerInventories;
private ConcurrentHashMap<UUID, VillagerInventory> openedVillagerInventories;

@Override
Expand All @@ -63,6 +64,7 @@ public void onEnable() {

preSelectedPlayers = new HashSet<UUID>();
selectedVillager = new ConcurrentHashMap<UUID, Villager>();
villagerInventories = new ConcurrentHashMap<Villager, VillagerInventory>();
openedVillagerInventories = new ConcurrentHashMap<UUID, VillagerInventory>();

getServer().getPluginManager().registerEvents(this, this);
Expand Down Expand Up @@ -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);
Expand Down Expand Up @@ -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)
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;
}
}
2 changes: 1 addition & 1 deletion src/main/resources/plugin.yml
Original file line number Diff line number Diff line change
@@ -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

Expand Down

0 comments on commit 8fdea98

Please sign in to comment.