From 4863dbca61ffe0b5d01d83bdc3ed3b02cc0589cc Mon Sep 17 00:00:00 2001 From: Daniel Saukel Date: Sun, 27 Nov 2016 00:03:40 +0100 Subject: [PATCH] Make reward items list thread safe; resolves #177 --- .../io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java | 7 ++++--- .../java/io/github/dre2n/dungeonsxl/reward/ItemReward.java | 3 ++- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java b/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java index 11b2b1e6..cedc40c9 100644 --- a/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java +++ b/core/src/main/java/io/github/dre2n/dungeonsxl/player/DGlobalPlayer.java @@ -30,6 +30,7 @@ import io.github.dre2n.dungeonsxl.world.DResourceWorld; import java.io.File; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import org.bukkit.Bukkit; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -55,7 +56,7 @@ public class DGlobalPlayer { private ItemStack[] respawnInventory; private ItemStack[] respawnArmor; - private List rewardItems; + private CopyOnWriteArrayList rewardItems; public DGlobalPlayer(Player player) { this(player, false); @@ -236,7 +237,7 @@ public boolean hasPermission(DPermissions permission) { /** * @return the reward items */ - public List getRewardItems() { + public CopyOnWriteArrayList getRewardItems() { return rewardItems; } @@ -251,7 +252,7 @@ public boolean hasRewardItemsLeft() { * @param rewardItems * the reward items to set */ - public void setRewardItems(List rewardItems) { + public void setRewardItems(CopyOnWriteArrayList rewardItems) { this.rewardItems = rewardItems; } diff --git a/core/src/main/java/io/github/dre2n/dungeonsxl/reward/ItemReward.java b/core/src/main/java/io/github/dre2n/dungeonsxl/reward/ItemReward.java index bc258c3f..aa188f55 100644 --- a/core/src/main/java/io/github/dre2n/dungeonsxl/reward/ItemReward.java +++ b/core/src/main/java/io/github/dre2n/dungeonsxl/reward/ItemReward.java @@ -21,6 +21,7 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.List; +import java.util.concurrent.CopyOnWriteArrayList; import org.bukkit.entity.Player; import org.bukkit.inventory.ItemStack; @@ -78,7 +79,7 @@ public void giveTo(Player player) { } else { new DLootInventory(player, items.subList(0, 54).toArray(new ItemStack[54])); - plugin.getDPlayers().getByPlayer(player).setRewardItems(items.subList(54, items.size())); + plugin.getDPlayers().getByPlayer(player).setRewardItems(new CopyOnWriteArrayList<>(items.subList(54, items.size()))); MessageUtil.sendMessage(player, DMessages.ERROR_TOO_MANY_REWARDS.getMessage()); } }