Use PlayerCollection

This commit is contained in:
Daniel Saukel 2017-09-21 18:15:49 +02:00
parent 4aa23b04c3
commit b79d7f91c6
16 changed files with 82 additions and 69 deletions

View File

@ -68,7 +68,7 @@ Building DungeonsXL from source requires [Apache Maven](https://maven.apache.org
Maven automatically fetches all dependencies and builds DungeonsXL; just run _build.bat_ or enter the command _mvn clean install_.
#### DRECommons
[DRECommons](https://github.com/DRE2N/DRECommons) is a util library for common tasks. DungeonsXL contains BRCommons 3.1.1.
[DRECommons](https://github.com/DRE2N/DRECommons) is a util library for common tasks. DungeonsXL contains BRCommons 3.1.2.
#### Caliburn API
[Caliburn](https://github.com/DRE2N/CaliburnAPI) is an API to read custom items and mobs from config files. DungeonsXL contains Caliburn Beta 0.3.

View File

@ -65,7 +65,7 @@
<dependency>
<groupId>org.spigotmc</groupId>
<artifactId>spigot-api</artifactId>
<version>1.12-R0.1-SNAPSHOT</version>
<version>1.12.2-R0.1-SNAPSHOT</version>
<scope>provided</scope>
</dependency>
<dependency>
@ -77,7 +77,7 @@
<dependency>
<groupId>io.github.dre2n</groupId>
<artifactId>commons</artifactId>
<version>3.1.1</version>
<version>3.1.3</version>
</dependency>
<dependency>
<groupId>io.github.dre2n</groupId>

View File

@ -429,8 +429,8 @@ public class Announcer {
} else if (dGroup != null) {
name = ChatColor.AQUA + dGroup.getName();
playerCount = dGroup.getPlayers().size();
for (Player player : dGroup.getPlayers()) {
lore.add((dGroup.getCaptain() == player ? ChatColor.GOLD : ChatColor.GRAY) + player.getName());
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
lore.add((dGroup.getCaptain().equals(player) ? ChatColor.GOLD : ChatColor.GRAY) + player.getName());
}
}

View File

@ -41,7 +41,7 @@ public class AnnouncerStartGameTask extends BukkitRunnable {
if (dGroup == null) {
continue;
}
for (Player player : dGroup.getPlayers()) {
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
players.add(player);
}
}

View File

@ -85,7 +85,7 @@ public class EnterCommand extends DRECommand {
game.addDGroup(joining);
joining.sendMessage(DMessage.CMD_ENTER_SUCCESS.getMessage(joining.getName(), target.getName()));
for (Player player : joining.getPlayers()) {
for (Player player : joining.getPlayers().getOnlinePlayers()) {
DGamePlayer.create(player, game.getWorld(), game.getType());
}
}

View File

@ -254,9 +254,9 @@ public class GroupCommand extends DRECommand {
MessageUtil.sendCenteredMessage(sender, "&4&l[ &6" + dGroup.getName() + " &4&l]");
MessageUtil.sendMessage(sender, "&bCaptain: &e" + dGroup.getCaptain().getName());
String players = "";
for (Player player : dGroup.getPlayers()) {
players += (player == dGroup.getPlayers().get(0) ? "" : "&b, &e") + player.getName();
String players = new String();
for (String player : dGroup.getPlayers().getNames()) {
players += (players.isEmpty() ? "" : "&b, &e") + player;
}
MessageUtil.sendMessage(sender, "&bPlayers: &e" + players);
MessageUtil.sendMessage(sender, "&bDungeon: &e" + (dGroup.getDungeonName() == null ? "N/A" : dGroup.getDungeonName()));

View File

@ -88,7 +88,7 @@ public class PlayCommand extends DRECommand {
dGroup.setDungeon(dungeon);
new Game(dGroup, dungeon.getMap());
for (Player groupPlayer : dGroup.getPlayers()) {
for (Player groupPlayer : dGroup.getPlayers().getOnlinePlayers()) {
DGamePlayer.create(groupPlayer, dGroup.getGameWorld());
}
}

View File

@ -77,7 +77,7 @@ public class TestCommand extends DRECommand {
return;
}
for (Player groupPlayer : dGroup.getPlayers()) {
for (Player groupPlayer : dGroup.getPlayers().getOnlinePlayers()) {
DGamePlayer.getByPlayer(groupPlayer).ready(GameTypeDefault.TEST);
}

View File

@ -377,7 +377,7 @@ public class Game {
public Set<Player> getPlayers() {
Set<Player> toReturn = new HashSet<>();
for (DGroup dGroup : dGroups) {
toReturn.addAll(dGroup.getPlayers());
toReturn.addAll(dGroup.getPlayers().getOnlinePlayers());
}
return toReturn;
}

View File

@ -168,7 +168,7 @@ public class GroupSign extends GlobalProtection {
int j = 1;
Sign rowSign = sign;
for (Player player : dGroup.getPlayers()) {
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
if (j > 3) {
j = 0;
rowSign = (Sign) sign.getBlock().getRelative(0, -1, 0).getState();

View File

@ -534,26 +534,33 @@ public class DGamePlayer extends DInstancePlayer {
}*/
// Give secure objects to other players
int i = 0;
Player groupPlayer;
do {
groupPlayer = dGroup.getPlayers().get(i);
if (groupPlayer != null) {
for (ItemStack itemStack : getPlayer().getInventory()) {
if (itemStack != null) {
if (gameWorld.getSecureObjects().contains(itemStack)) {
groupPlayer.getInventory().addItem(itemStack);
}
Player groupPlayer = null;
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
if (player.isOnline()) {
groupPlayer = player;
break;
}
}
if (groupPlayer != null) {
for (ItemStack itemStack : getPlayer().getInventory()) {
if (itemStack != null) {
if (gameWorld.getSecureObjects().contains(itemStack)) {
groupPlayer.getInventory().addItem(itemStack);
}
}
}
i++;
} while (groupPlayer == null);
}
}
if (dGroup.getCaptain().equals(getPlayer()) && dGroup.getPlayers().size() > 0) {
// Captain here!
Player newCaptain = dGroup.getPlayers().get(0);
Player newCaptain = null;
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
if (player.isOnline()) {
newCaptain = player;
break;
}
}
dGroup.setCaptain(newCaptain);
if (message) {
MessageUtil.sendMessage(newCaptain, DMessage.PLAYER_NEW_CAPTAIN.getMessage());

View File

@ -20,6 +20,7 @@ import io.github.dre2n.commons.chat.MessageUtil;
import io.github.dre2n.commons.compatibility.CompatibilityHandler;
import io.github.dre2n.commons.compatibility.Version;
import io.github.dre2n.commons.player.PlayerUtil;
import io.github.dre2n.commons.player.PlayerWrapper;
import io.github.dre2n.dungeonsxl.DungeonsXL;
import io.github.dre2n.dungeonsxl.config.DMessage;
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
@ -28,6 +29,7 @@ import io.github.dre2n.dungeonsxl.global.DPortal;
import io.github.dre2n.dungeonsxl.world.DGameWorld;
import io.github.dre2n.dungeonsxl.world.DResourceWorld;
import java.io.File;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -39,7 +41,7 @@ import org.bukkit.potion.PotionEffect;
*
* @author Daniel Saukel
*/
public class DGlobalPlayer {
public class DGlobalPlayer implements PlayerWrapper {
DungeonsXL plugin = DungeonsXL.getInstance();
@ -86,20 +88,21 @@ public class DGlobalPlayer {
}
/* Getters and setters */
/**
* @return the player's name
*/
@Override
public String getName() {
return player.getName();
}
/**
* @return the Bukkit player
*/
@Override
public Player getPlayer() {
return player;
}
@Override
public UUID getUniqueId() {
return player.getUniqueId();
}
/**
* @return the saved data
*/

View File

@ -18,6 +18,7 @@ package io.github.dre2n.dungeonsxl.player;
import io.github.dre2n.commons.chat.MessageUtil;
import io.github.dre2n.commons.misc.NumberUtil;
import io.github.dre2n.commons.player.PlayerCollection;
import io.github.dre2n.dungeonsxl.DungeonsXL;
import io.github.dre2n.dungeonsxl.config.DMessage;
import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
@ -42,6 +43,7 @@ import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.UUID;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -59,8 +61,8 @@ public class DGroup {
private String name;
private UUID captain;
private List<UUID> players = new ArrayList<>();
private List<UUID> invitedPlayers = new ArrayList<>();
private PlayerCollection players = new PlayerCollection();
private PlayerCollection invitedPlayers = new PlayerCollection();
private Dungeon dungeon;
private List<DResourceWorld> unplayedFloors = new ArrayList<>();
private DGameWorld gameWorld;
@ -203,23 +205,19 @@ public class DGroup {
}
/**
* @return the players as a Set<Player>
* @return the players
*/
public List<Player> getPlayers() {
List<Player> players = new ArrayList<>();
for (UUID uuid : this.players) {
players.add(Bukkit.getPlayer(uuid));
}
public PlayerCollection getPlayers() {
return players;
}
/**
* @return the players as a Set<DGlobalPlayer>
*/
public List<DGlobalPlayer> getDGlobalPlayers() {
List<DGlobalPlayer> players = new ArrayList<>();
for (UUID uuid : this.players) {
players.add(dPlayers.getByPlayer(Bukkit.getPlayer(uuid)));
public Set<DGlobalPlayer> getDGlobalPlayers() {
Set<DGlobalPlayer> players = new HashSet<>();
for (UUID uuid : this.players.getUniqueIds()) {
players.add(dPlayers.getByUniqueId(uuid));
}
return players;
}
@ -227,10 +225,10 @@ public class DGroup {
/**
* @return the players as a Set<DGamePlayer>
*/
public List<DGamePlayer> getDGamePlayers() {
List<DGamePlayer> players = new ArrayList<>();
for (UUID uuid : this.players) {
DGlobalPlayer dPlayer = dPlayers.getByPlayer(Bukkit.getPlayer(uuid));
public Set<DGamePlayer> getDGamePlayers() {
Set<DGamePlayer> players = new HashSet<>();
for (UUID uuid : this.players.getUniqueIds()) {
DGlobalPlayer dPlayer = dPlayers.getByUniqueId(uuid);
if (dPlayer instanceof DGamePlayer) {
players.add((DGamePlayer) dPlayer);
}
@ -305,13 +303,8 @@ public class DGroup {
/**
* @return the players
*/
public List<Player> getInvitedPlayers() {
ArrayList<Player> players = new ArrayList<>();
for (UUID uuid : invitedPlayers) {
players.add(Bukkit.getPlayer(uuid));
}
return players;
public PlayerCollection getInvitedPlayers() {
return invitedPlayers;
}
/**
@ -365,7 +358,7 @@ public class DGroup {
// Send message
if (!silent) {
for (Player groupPlayer : getPlayers()) {
for (Player groupPlayer : players.getOnlinePlayers()) {
MessageUtil.sendMessage(groupPlayer, DungeonsXL.getInstance().getMessageConfig().getMessage(DMessage.GROUP_UNINVITED_PLAYER, getCaptain().getName(), player.getName(), name));
}
}
@ -378,13 +371,11 @@ public class DGroup {
*/
public void clearOfflineInvitedPlayers() {
ArrayList<UUID> toRemove = new ArrayList<>();
for (UUID uuid : invitedPlayers) {
for (UUID uuid : invitedPlayers.getUniqueIds()) {
if (Bukkit.getPlayer(uuid) == null) {
toRemove.add(uuid);
}
}
invitedPlayers.removeAll(toRemove);
}
@ -565,7 +556,7 @@ public class DGroup {
* @return whether there are players in the group
*/
public boolean isEmpty() {
return players.isEmpty();
return players.size() == 0;
}
/**
@ -773,7 +764,7 @@ public class DGroup {
}
boolean ready = true;
for (Player player : dGroup.getPlayers()) {
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
DGamePlayer dPlayer = DGamePlayer.getByPlayer(player);
if (dPlayer == null) {
dPlayer = new DGamePlayer(player, gameWorld);
@ -808,7 +799,7 @@ public class DGroup {
floorCount++;
for (Player player : getPlayers()) {
for (Player player : players.getOnlinePlayers()) {
DGamePlayer dPlayer = DGamePlayer.getByPlayer(player);
if (dPlayer == null) {
continue;
@ -910,7 +901,7 @@ public class DGroup {
* Send a message to all players in the group
*/
public void sendMessage(String message) {
for (Player player : getPlayers()) {
for (Player player : players.getOnlinePlayers()) {
if (player.isOnline()) {
MessageUtil.sendMessage(player, message);
}
@ -925,7 +916,7 @@ public class DGroup {
*/
public void sendMessage(String message, Player... except) {
HashSet<Player> exceptSet = new HashSet<>(Arrays.asList(except));
for (Player player : getPlayers()) {
for (Player player : players.getOnlinePlayers()) {
if (player.isOnline() && !exceptSet.contains(player)) {
MessageUtil.sendMessage(player, message);
}

View File

@ -20,6 +20,7 @@ import io.github.dre2n.dungeonsxl.DungeonsXL;
import io.github.dre2n.dungeonsxl.config.MainConfig;
import java.util.ArrayList;
import java.util.List;
import java.util.UUID;
import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
@ -60,10 +61,21 @@ public class DPlayerCache {
return dGlobalPlayer;
}
}
return new DGlobalPlayer(player);
}
/**
* @return the DGlobalPlayer which represents the player with this UUID
*/
public DGlobalPlayer getByUniqueId(UUID uuid) {
for (DGlobalPlayer dGlobalPlayer : dGlobalPlayers) {
if (dGlobalPlayer.getUniqueId().equals(uuid)) {
return dGlobalPlayer;
}
}
return null;
}
/**
* @return the dGlobalPlayers
*/

View File

@ -57,7 +57,7 @@ public class TimeIsRunningTask extends BukkitRunnable {
color = ChatColor.DARK_RED.toString();
} finally {
for (Player player : dGroup.getPlayers()) {
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
MessageUtil.sendActionBarMessage(player, DMessage.PLAYER_TIME_LEFT.getMessage(color, String.valueOf(timeLeft)));
DGamePlayer dPlayer = DGamePlayer.getByPlayer(player);

View File

@ -192,7 +192,7 @@ public class RewardChest extends GameBlock {
}
}
for (Player player : dGroup.getPlayers()) {
for (Player player : dGroup.getPlayers().getOnlinePlayers()) {
DGamePlayer dPlayer = DGamePlayer.getByPlayer(player);
if (dPlayer == null) {
continue;