NPE fixes

This commit is contained in:
Daniel Saukel 2016-05-10 01:22:48 +02:00
parent 231372956d
commit 02e738e840
6 changed files with 29 additions and 13 deletions

View File

@ -24,6 +24,7 @@ import io.github.dre2n.dungeonsxl.config.DungeonConfig;
import io.github.dre2n.dungeonsxl.config.WorldConfig; import io.github.dre2n.dungeonsxl.config.WorldConfig;
import io.github.dre2n.dungeonsxl.dungeon.Dungeon; import io.github.dre2n.dungeonsxl.dungeon.Dungeon;
import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent; import io.github.dre2n.dungeonsxl.event.dgroup.DGroupCreateEvent;
import io.github.dre2n.dungeonsxl.game.Game;
import io.github.dre2n.dungeonsxl.player.DGamePlayer; import io.github.dre2n.dungeonsxl.player.DGamePlayer;
import io.github.dre2n.dungeonsxl.player.DGroup; import io.github.dre2n.dungeonsxl.player.DGroup;
import io.github.dre2n.dungeonsxl.player.DPermissions; import io.github.dre2n.dungeonsxl.player.DPermissions;
@ -164,6 +165,7 @@ public class PlayCommand extends BRCommand {
return; return;
} }
new Game(dGroup, dGroup.getGameWorld());
if (dGroup.getGameWorld().getLobbyLocation() == null) { if (dGroup.getGameWorld().getLobbyLocation() == null) {
for (Player groupPlayer : dGroup.getPlayers()) { for (Player groupPlayer : dGroup.getPlayers()) {
new DGamePlayer(groupPlayer, dGroup.getGameWorld()); new DGamePlayer(groupPlayer, dGroup.getGameWorld());

View File

@ -58,10 +58,16 @@ public class Game {
public Game(DGroup dGroup) { public Game(DGroup dGroup) {
dGroups.add(dGroup); dGroups.add(dGroup);
started = false; started = false;
fetchRules();
plugin.getGames().add(this); plugin.getGames().add(this);
} }
public Game(DGroup dGroup, GameWorld world) {
this(dGroup);
this.world = world;
}
public Game(DGroup dGroup, GameType type, GameWorld world) { public Game(DGroup dGroup, GameType type, GameWorld world) {
this(new ArrayList<>(Arrays.asList(dGroup)), type, world); this(new ArrayList<>(Arrays.asList(dGroup)), type, world);
} }
@ -71,6 +77,7 @@ public class Game {
this.type = type; this.type = type;
this.world = world; this.world = world;
this.started = true; this.started = true;
fetchRules();
plugin.getGames().add(this); plugin.getGames().add(this);
} }
@ -196,13 +203,15 @@ public class Game {
finalRules.apply(floorConfig); finalRules.apply(floorConfig);
} }
if (getDungeon() != null) { if (dungeonConfig != null) {
finalRules.apply(dungeonConfig.getDefaultValues()); finalRules.apply(dungeonConfig.getDefaultValues());
} }
finalRules.apply(plugin.getMainConfig().getDefaultWorldConfig()); finalRules.apply(plugin.getMainConfig().getDefaultWorldConfig());
finalRules.apply(GameRules.DEFAULT_VALUES); finalRules.apply(GameRules.DEFAULT_VALUES);
rules = finalRules;
} }
/** /**

View File

@ -27,7 +27,6 @@ import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Set; import java.util.Set;
import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.GameMode; import org.bukkit.GameMode;
import org.bukkit.Material; import org.bukkit.Material;
@ -363,10 +362,8 @@ public class GameRules {
/** /**
* @return the objects to get passed to another player of the group when this player leaves * @return the objects to get passed to another player of the group when this player leaves
*/ */
public CopyOnWriteArrayList<Material> getSecureObjects() { public List<Material> getSecureObjects() {
CopyOnWriteArrayList<Material> tmpSecureObjects = new CopyOnWriteArrayList<>(); return secureObjects;
tmpSecureObjects.addAll(secureObjects);
return tmpSecureObjects;
} }
/* Actions */ /* Actions */

View File

@ -191,14 +191,15 @@ public class DPortal extends GlobalProtection {
} }
if (target == null) { if (target == null) {
MessageUtil.sendMessage(player, plugin.getMessageConfig().getMessage(DMessages.ERROR_DUNGEON_NOT_EXIST, DGroup.getByPlayer(player).getMapName())); MessageUtil.sendMessage(player, DMessages.ERROR_DUNGEON_NOT_EXIST.getMessage(DGroup.getByPlayer(player).getMapName()));
return; return;
} }
if (game != null) { if (game == null) {
game.setWorld(target); game = new Game(dGroup);
} }
game.setWorld(target);
dGroup.setGameWorld(target); dGroup.setGameWorld(target);
new DGamePlayer(player, target); new DGamePlayer(player, target);

View File

@ -83,7 +83,12 @@ public class DGamePlayer extends DInstancePlayer {
public DGamePlayer(Player player, World world) { public DGamePlayer(Player player, World world) {
super(player, world); super(player, world);
GameRules rules = Game.getByWorld(world).getRules(); Game game = Game.getByWorld(world);
if (game == null) {
game = new Game(DGroup.getByPlayer(player));
}
GameRules rules = game.getRules();
player.setGameMode(GameMode.SURVIVAL); player.setGameMode(GameMode.SURVIVAL);
if (!rules.getKeepInventoryOnEnter()) { if (!rules.getKeepInventoryOnEnter()) {

View File

@ -42,6 +42,8 @@ import java.io.FileInputStream;
import java.io.FileNotFoundException; import java.io.FileNotFoundException;
import java.io.IOException; import java.io.IOException;
import java.io.ObjectInputStream; import java.io.ObjectInputStream;
import java.util.ArrayList;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.Chunk; import org.bukkit.Chunk;
@ -76,7 +78,7 @@ public class GameWorld {
private Location locStart; private Location locStart;
private boolean isPlaying = false; private boolean isPlaying = false;
private int id; private int id;
private CopyOnWriteArrayList<Material> secureObjects = new CopyOnWriteArrayList<>(); private List<Material> secureObjects = new ArrayList<>();
private CopyOnWriteArrayList<Chunk> loadedChunks = new CopyOnWriteArrayList<>(); private CopyOnWriteArrayList<Chunk> loadedChunks = new CopyOnWriteArrayList<>();
private CopyOnWriteArrayList<Sign> signClass = new CopyOnWriteArrayList<>(); private CopyOnWriteArrayList<Sign> signClass = new CopyOnWriteArrayList<>();
@ -244,7 +246,7 @@ public class GameWorld {
/** /**
* @return the secureObjects * @return the secureObjects
*/ */
public CopyOnWriteArrayList<Material> getSecureObjects() { public List<Material> getSecureObjects() {
return secureObjects; return secureObjects;
} }
@ -252,7 +254,7 @@ public class GameWorld {
* @param secureObjects * @param secureObjects
* the secureObjects to set * the secureObjects to set
*/ */
public void setSecureObjects(CopyOnWriteArrayList<Material> secureObjects) { public void setSecureObjects(List<Material> secureObjects) {
this.secureObjects = secureObjects; this.secureObjects = secureObjects;
} }