Skip to content

Commit

Permalink
Make reward items list thread safe; resolves #177
Browse files Browse the repository at this point in the history
  • Loading branch information
Sataniel98 committed Nov 26, 2016
1 parent c1c04bc commit 4863dbc
Show file tree
Hide file tree
Showing 2 changed files with 6 additions and 4 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand All @@ -55,7 +56,7 @@ public class DGlobalPlayer {

private ItemStack[] respawnInventory;
private ItemStack[] respawnArmor;
private List<ItemStack> rewardItems;
private CopyOnWriteArrayList<ItemStack> rewardItems;

public DGlobalPlayer(Player player) {
this(player, false);
Expand Down Expand Up @@ -236,7 +237,7 @@ public boolean hasPermission(DPermissions permission) {
/**
* @return the reward items
*/
public List<ItemStack> getRewardItems() {
public CopyOnWriteArrayList<ItemStack> getRewardItems() {
return rewardItems;
}

Expand All @@ -251,7 +252,7 @@ public boolean hasRewardItemsLeft() {
* @param rewardItems
* the reward items to set
*/
public void setRewardItems(List<ItemStack> rewardItems) {
public void setRewardItems(CopyOnWriteArrayList<ItemStack> rewardItems) {
this.rewardItems = rewardItems;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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;

Expand Down Expand Up @@ -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());
}
}
Expand Down

0 comments on commit 4863dbc

Please sign in to comment.