mirror of
https://github.com/DRE2N/DungeonsXL.git
synced 2024-11-28 21:48:43 +01:00
#94: Use ResourceWorld instead of String to store floors
This commit is contained in:
parent
141a35f5e7
commit
24fae9da05
@ -96,7 +96,7 @@ public class Announcer {
|
||||
|
||||
Dungeon dungeon = plugin.getDungeons().getByName(identifier);
|
||||
if (dungeon != null) {
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
}
|
||||
|
||||
} else {
|
||||
@ -137,7 +137,7 @@ public class Announcer {
|
||||
|
||||
Dungeon dungeon = plugin.getDungeons().getByName(identifier);
|
||||
if (dungeon != null) {
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
}
|
||||
|
||||
} else {
|
||||
|
@ -27,7 +27,6 @@ import io.github.dre2n.dungeonsxl.game.Game;
|
||||
import io.github.dre2n.dungeonsxl.player.DGamePlayer;
|
||||
import io.github.dre2n.dungeonsxl.player.DGroup;
|
||||
import io.github.dre2n.dungeonsxl.player.DPermissions;
|
||||
import io.github.dre2n.dungeonsxl.world.EditWorld;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
||||
@ -73,7 +72,7 @@ public class PlayCommand extends BRCommand {
|
||||
Dungeon dungeon = plugin.getDungeons().getByName(args[2]);
|
||||
if (dungeon != null) {
|
||||
multiFloor = true;
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
} else {
|
||||
displayHelp(player);
|
||||
return;
|
||||
@ -108,7 +107,7 @@ public class PlayCommand extends BRCommand {
|
||||
DungeonConfig config = dungeon.getConfig();
|
||||
|
||||
if (config != null) {
|
||||
dGroup.setMapName(config.getStartFloor());
|
||||
dGroup.setMapName(config.getStartFloor().getName());
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -17,6 +17,7 @@
|
||||
package io.github.dre2n.dungeonsxl.config;
|
||||
|
||||
import io.github.dre2n.commons.config.Messages;
|
||||
import io.github.dre2n.commons.util.messageutil.MessageUtil;
|
||||
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
@ -185,6 +186,7 @@ public enum DMessages implements Messages {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/* Getters and setters */
|
||||
@Override
|
||||
public String getIdentifier() {
|
||||
return identifier;
|
||||
@ -205,6 +207,14 @@ public enum DMessages implements Messages {
|
||||
this.message = message;
|
||||
}
|
||||
|
||||
/* Actions */
|
||||
/**
|
||||
* Sends the message to the console.
|
||||
*/
|
||||
public void debug() {
|
||||
MessageUtil.log(DungeonsXL.getInstance(), getMessage());
|
||||
}
|
||||
|
||||
/* Statics */
|
||||
/**
|
||||
* @param identifer
|
||||
|
@ -17,6 +17,9 @@
|
||||
package io.github.dre2n.dungeonsxl.config;
|
||||
|
||||
import io.github.dre2n.commons.config.BRConfig;
|
||||
import io.github.dre2n.dungeonsxl.DungeonsXL;
|
||||
import io.github.dre2n.dungeonsxl.world.ResourceWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.Worlds;
|
||||
import java.io.File;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
@ -26,11 +29,13 @@ import java.util.List;
|
||||
*/
|
||||
public class DungeonConfig extends BRConfig {
|
||||
|
||||
Worlds worlds = DungeonsXL.getInstance().getWorlds();
|
||||
|
||||
public static final int CONFIG_VERSION = 1;
|
||||
|
||||
private String startFloor;
|
||||
private String endFloor;
|
||||
private List<String> floors = new ArrayList<>();
|
||||
private ResourceWorld startFloor;
|
||||
private ResourceWorld endFloor;
|
||||
private List<ResourceWorld> floors = new ArrayList<>();
|
||||
private int floorCount;
|
||||
private boolean removeWhenPlayed;
|
||||
private WorldConfig overrideValues;
|
||||
@ -48,7 +53,7 @@ public class DungeonConfig extends BRConfig {
|
||||
/**
|
||||
* @return the startFloor
|
||||
*/
|
||||
public String getStartFloor() {
|
||||
public ResourceWorld getStartFloor() {
|
||||
return startFloor;
|
||||
}
|
||||
|
||||
@ -56,14 +61,14 @@ public class DungeonConfig extends BRConfig {
|
||||
* @param startFloor
|
||||
* the startFloor to set
|
||||
*/
|
||||
public void setStartFloor(String startFloor) {
|
||||
public void setStartFloor(ResourceWorld startFloor) {
|
||||
this.startFloor = startFloor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the endFloor
|
||||
*/
|
||||
public String getEndFloor() {
|
||||
public ResourceWorld getEndFloor() {
|
||||
return endFloor;
|
||||
}
|
||||
|
||||
@ -71,31 +76,31 @@ public class DungeonConfig extends BRConfig {
|
||||
* @param endFloor
|
||||
* the endFloor to set
|
||||
*/
|
||||
public void setEndFloor(String endFloor) {
|
||||
public void setEndFloor(ResourceWorld endFloor) {
|
||||
this.endFloor = endFloor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the floors
|
||||
*/
|
||||
public List<String> getFloors() {
|
||||
public List<ResourceWorld> getFloors() {
|
||||
return floors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param gameWorld
|
||||
* the gameWorld to add
|
||||
* @param resource
|
||||
* the resource to add
|
||||
*/
|
||||
public void addFloor(String gameWorld) {
|
||||
floors.add(gameWorld);
|
||||
public void addFloor(ResourceWorld resource) {
|
||||
floors.add(resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param gameWorld
|
||||
* the gameWorld to remove
|
||||
* @param resource
|
||||
* the resource to remove
|
||||
*/
|
||||
public void removeFloor(String gameWorld) {
|
||||
floors.remove(gameWorld);
|
||||
public void removeFloor(ResourceWorld resource) {
|
||||
floors.remove(resource);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -165,18 +170,36 @@ public class DungeonConfig extends BRConfig {
|
||||
defaultValues = worldConfig;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param resource
|
||||
* the ResourceWorld to check
|
||||
* @return true if the floor is either in the list or the start / end floor.
|
||||
*/
|
||||
public boolean containsFloor(ResourceWorld resource) {
|
||||
return floors.contains(resource) || startFloor.equals(resource) || endFloor.equals(resource);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param mapName
|
||||
* the name of the map to check
|
||||
* @return true if the floor is either in the list or the start / end floor.
|
||||
*/
|
||||
public boolean containsFloor(String mapName) {
|
||||
return containsFloor(worlds.getResourceByName(mapName));
|
||||
}
|
||||
|
||||
@Override
|
||||
public void initialize() {
|
||||
if (!config.contains("floors")) {
|
||||
config.set("floors", floors);
|
||||
config.createSection("floors");
|
||||
}
|
||||
|
||||
if (!config.contains("startFloor")) {
|
||||
config.set("startFloor", startFloor);
|
||||
config.set("startFloor", startFloor.getName());
|
||||
}
|
||||
|
||||
if (!config.contains("endFloor")) {
|
||||
config.set("endFloor", endFloor);
|
||||
config.set("endFloor", endFloor.getName());
|
||||
}
|
||||
|
||||
if (!config.contains("floorCount")) {
|
||||
@ -201,15 +224,20 @@ public class DungeonConfig extends BRConfig {
|
||||
@Override
|
||||
public void load() {
|
||||
if (config.contains("floors")) {
|
||||
floors = config.getStringList("floors");
|
||||
for (String floor : config.getStringList("floors")) {
|
||||
ResourceWorld resource = worlds.getResourceByName(floor);
|
||||
if (resource != null) {
|
||||
floors.add(resource);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if (config.contains("startFloor")) {
|
||||
startFloor = config.getString("startFloor");
|
||||
startFloor = worlds.getResourceByName(config.getString("startFloor"));
|
||||
}
|
||||
|
||||
if (config.contains("endFloor")) {
|
||||
endFloor = config.getString("endFloor");
|
||||
endFloor = worlds.getResourceByName(config.getString("endFloor"));
|
||||
}
|
||||
|
||||
if (config.contains("floorCount")) {
|
||||
|
@ -63,4 +63,11 @@ public class Dungeon {
|
||||
return config != null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return false if there are setup errors
|
||||
*/
|
||||
public boolean isSetupCorrect() {
|
||||
return config.getStartFloor() == null || config.getEndFloor() == null;
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -36,7 +36,14 @@ public class Dungeons {
|
||||
}
|
||||
|
||||
for (File file : folder.listFiles()) {
|
||||
dungeons.add(new Dungeon(file));
|
||||
Dungeon dungeon = new Dungeon(file);
|
||||
|
||||
if (dungeon.isSetupCorrect()) {
|
||||
dungeons.add(dungeon);
|
||||
|
||||
} else {
|
||||
// debug
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -236,8 +236,8 @@ public class Game {
|
||||
*
|
||||
* @return the unplayed floors
|
||||
*/
|
||||
public List<String> getUnplayedFloors() {
|
||||
List<String> unplayedFloors = new ArrayList<>();
|
||||
public List<ResourceWorld> getUnplayedFloors() {
|
||||
List<ResourceWorld> unplayedFloors = new ArrayList<>();
|
||||
for (DGroup dGroup : dGroups) {
|
||||
if (dGroup.getUnplayedFloors().size() < unplayedFloors.size()) {
|
||||
unplayedFloors = dGroup.getUnplayedFloors();
|
||||
@ -376,7 +376,7 @@ public class Game {
|
||||
}
|
||||
|
||||
int delay = rules.getTimeToNextWave();
|
||||
sendMessage(plugin.getMessageConfig().getMessage(DMessages.GROUP_WAVE_FINISHED, String.valueOf(waveCount), String.valueOf(delay)));
|
||||
sendMessage(DMessages.GROUP_WAVE_FINISHED.getMessage(String.valueOf(waveCount), String.valueOf(delay)));
|
||||
|
||||
new BukkitRunnable() {
|
||||
@Override
|
||||
|
@ -65,7 +65,7 @@ public class GameSign extends GlobalProtection {
|
||||
dungeonName = identifier;
|
||||
Dungeon dungeon = plugin.getDungeons().getByName(identifier);
|
||||
if (dungeon != null) {
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
} else {
|
||||
mapName = "invalid";
|
||||
}
|
||||
|
@ -64,7 +64,7 @@ public class GroupSign extends GlobalProtection {
|
||||
dungeonName = identifier;
|
||||
Dungeon dungeon = plugin.getDungeons().getByName(identifier);
|
||||
if (dungeon != null) {
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
} else {
|
||||
mapName = "invalid";
|
||||
}
|
||||
|
@ -639,7 +639,7 @@ public class DGamePlayer extends DInstancePlayer {
|
||||
* @param specifiedFloor
|
||||
* the name of the next floor
|
||||
*/
|
||||
public void finishFloor(String specifiedFloor) {
|
||||
public void finishFloor(ResourceWorld specifiedFloor) {
|
||||
MessageUtil.sendMessage(getPlayer(), DMessages.PLAYER_FINISHED_DUNGEON.getMessage());
|
||||
finished = true;
|
||||
|
||||
@ -681,7 +681,7 @@ public class DGamePlayer extends DInstancePlayer {
|
||||
|
||||
DungeonConfig dConfig = dGroup.getDungeon().getConfig();
|
||||
int random = NumberUtil.generateRandomInt(0, dConfig.getFloors().size());
|
||||
String newFloor = dGroup.getUnplayedFloors().get(random);
|
||||
ResourceWorld newFloor = dGroup.getUnplayedFloors().get(random);
|
||||
if (dConfig.getFloorCount() == dGroup.getFloorCount() - 1) {
|
||||
newFloor = dConfig.getEndFloor();
|
||||
|
||||
@ -689,21 +689,20 @@ public class DGamePlayer extends DInstancePlayer {
|
||||
newFloor = specifiedFloor;
|
||||
}
|
||||
|
||||
DGroupFinishFloorEvent event = new DGroupFinishFloorEvent(dGroup, dGroup.getGameWorld(), newFloor);
|
||||
/*DGroupFinishFloorEvent event = new DGroupFinishFloorEvent(dGroup, dGroup.getGameWorld(), newFloor);
|
||||
|
||||
if (event.isCancelled()) {
|
||||
return;
|
||||
}
|
||||
|
||||
*/
|
||||
Game game = dGroup.getGameWorld().getGame();
|
||||
|
||||
dGroup.removeUnplayedFloor(dGroup.getMapName());
|
||||
dGroup.setMapName(newFloor);
|
||||
dGroup.removeUnplayedFloor(dGroup.getGameWorld().getResource(), false);
|
||||
dGroup.setMapName(newFloor.getName());
|
||||
|
||||
ResourceWorld resource = plugin.getWorlds().getResourceByName(newFloor);
|
||||
GameWorld gameWorld = null;
|
||||
if (resource != null) {
|
||||
gameWorld = resource.instantiateAsGameWorld();
|
||||
if (newFloor != null) {
|
||||
gameWorld = newFloor.instantiateAsGameWorld();
|
||||
}
|
||||
dGroup.setGameWorld(gameWorld);
|
||||
|
||||
|
@ -34,6 +34,7 @@ import io.github.dre2n.dungeonsxl.requirement.Requirement;
|
||||
import io.github.dre2n.dungeonsxl.reward.Reward;
|
||||
import io.github.dre2n.dungeonsxl.task.TimeIsRunningTask;
|
||||
import io.github.dre2n.dungeonsxl.world.GameWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.ResourceWorld;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Arrays;
|
||||
import java.util.HashSet;
|
||||
@ -58,13 +59,13 @@ public class DGroup {
|
||||
private Dungeon dungeon;
|
||||
private String dungeonName;
|
||||
private String mapName;
|
||||
private List<String> unplayedFloors = new ArrayList<>();
|
||||
private List<ResourceWorld> unplayedFloors = new ArrayList<>();
|
||||
private GameWorld gameWorld;
|
||||
private boolean playing;
|
||||
private int floorCount;
|
||||
private List<Reward> rewards = new ArrayList<>();
|
||||
private BukkitTask timeIsRunningTask;
|
||||
private String nextFloor;
|
||||
private ResourceWorld nextFloor;
|
||||
|
||||
public DGroup(Player player) {
|
||||
this("Group_" + plugin.getDGroups().size(), player);
|
||||
@ -110,7 +111,7 @@ public class DGroup {
|
||||
dungeon = plugin.getDungeons().getByName(identifier);
|
||||
if (multiFloor && dungeon != null) {
|
||||
dungeonName = dungeon.getName();
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
unplayedFloors = dungeon.getConfig().getFloors();
|
||||
|
||||
} else {
|
||||
@ -379,7 +380,7 @@ public class DGroup {
|
||||
dungeon = plugin.getDungeons().getByName(name);
|
||||
if (dungeon != null) {
|
||||
dungeonName = dungeon.getName();
|
||||
mapName = dungeon.getConfig().getStartFloor();
|
||||
mapName = dungeon.getConfig().getStartFloor().getName();
|
||||
unplayedFloors = dungeon.getConfig().getFloors();
|
||||
|
||||
} else {
|
||||
@ -427,26 +428,28 @@ public class DGroup {
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the unplayedFloors
|
||||
* @return the unplayed floors
|
||||
*/
|
||||
public List<String> getUnplayedFloors() {
|
||||
public List<ResourceWorld> getUnplayedFloors() {
|
||||
return unplayedFloors;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param unplayedFloor
|
||||
* the unplayedFloor to add
|
||||
* the unplayed floor to add
|
||||
*/
|
||||
public void addUnplayedFloor(String unplayedFloor) {
|
||||
public void addUnplayedFloor(ResourceWorld unplayedFloor) {
|
||||
unplayedFloors.add(unplayedFloor);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param unplayedFloor
|
||||
* the unplayedFloor to add
|
||||
* the unplayed floor to remove
|
||||
* @param force
|
||||
* remove the floor even if removeWhenPlayed is disabled
|
||||
*/
|
||||
public void removeUnplayedFloor(String unplayedFloor) {
|
||||
if (getDungeon().getConfig().getRemoveWhenPlayed()) {
|
||||
public void removeUnplayedFloor(ResourceWorld unplayedFloor, boolean force) {
|
||||
if (getDungeon().getConfig().getRemoveWhenPlayed() || force) {
|
||||
unplayedFloors.remove(unplayedFloor);
|
||||
}
|
||||
}
|
||||
@ -543,7 +546,7 @@ public class DGroup {
|
||||
/**
|
||||
* @return the next floor the group will enter
|
||||
*/
|
||||
public String getNextFloor() {
|
||||
public ResourceWorld getNextFloor() {
|
||||
return nextFloor;
|
||||
}
|
||||
|
||||
@ -551,7 +554,7 @@ public class DGroup {
|
||||
* @param floor
|
||||
* the next floor to set
|
||||
*/
|
||||
public void setNextFloor(String floor) {
|
||||
public void setNextFloor(ResourceWorld floor) {
|
||||
nextFloor = floor;
|
||||
}
|
||||
|
||||
|
@ -19,6 +19,7 @@ package io.github.dre2n.dungeonsxl.sign;
|
||||
import io.github.dre2n.dungeonsxl.player.DGamePlayer;
|
||||
import io.github.dre2n.dungeonsxl.trigger.InteractTrigger;
|
||||
import io.github.dre2n.dungeonsxl.world.GameWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.ResourceWorld;
|
||||
import org.bukkit.ChatColor;
|
||||
import org.bukkit.Material;
|
||||
import org.bukkit.block.Sign;
|
||||
@ -31,12 +32,27 @@ public class FloorSign extends DSign {
|
||||
|
||||
private DSignType type = DSignTypeDefault.FLOOR;
|
||||
|
||||
private String floor;
|
||||
private ResourceWorld floor;
|
||||
|
||||
public FloorSign(Sign sign, String[] lines, GameWorld gameWorld) {
|
||||
super(sign, lines, gameWorld);
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the next floor
|
||||
*/
|
||||
public ResourceWorld getFloor() {
|
||||
return floor;
|
||||
}
|
||||
|
||||
/**
|
||||
* @param floor
|
||||
* the floor to set
|
||||
*/
|
||||
public void setFloor(ResourceWorld floor) {
|
||||
this.floor = floor;
|
||||
}
|
||||
|
||||
@Override
|
||||
public boolean check() {
|
||||
return true;
|
||||
@ -45,7 +61,7 @@ public class FloorSign extends DSign {
|
||||
@Override
|
||||
public void onInit() {
|
||||
if (!lines[1].isEmpty()) {
|
||||
floor = lines[1];
|
||||
floor = plugin.getWorlds().getResourceByName(lines[1]);
|
||||
}
|
||||
|
||||
if (!getTriggers().isEmpty()) {
|
||||
@ -64,7 +80,7 @@ public class FloorSign extends DSign {
|
||||
if (floor == null) {
|
||||
getSign().setLine(2, ChatColor.DARK_GREEN + "NEXT FLOOR");
|
||||
} else {
|
||||
getSign().setLine(2, ChatColor.DARK_GREEN + floor.replaceAll("_", " "));
|
||||
getSign().setLine(2, ChatColor.DARK_GREEN + floor.getName().replaceAll("_", " "));
|
||||
}
|
||||
getSign().setLine(3, ChatColor.DARK_BLUE + "############");
|
||||
getSign().update();
|
||||
|
@ -18,6 +18,7 @@ package io.github.dre2n.dungeonsxl.trigger;
|
||||
|
||||
import io.github.dre2n.dungeonsxl.event.trigger.TriggerActionEvent;
|
||||
import io.github.dre2n.dungeonsxl.world.GameWorld;
|
||||
import io.github.dre2n.dungeonsxl.world.ResourceWorld;
|
||||
import java.util.HashSet;
|
||||
import java.util.Set;
|
||||
|
||||
@ -28,7 +29,7 @@ public class ProgressTrigger extends Trigger {
|
||||
|
||||
private TriggerType type = TriggerTypeDefault.PROGRESS;
|
||||
|
||||
private String floor;
|
||||
private ResourceWorld floor;
|
||||
private int floorCount;
|
||||
private int waveCount;
|
||||
|
||||
@ -37,7 +38,7 @@ public class ProgressTrigger extends Trigger {
|
||||
this.waveCount = waveCount;
|
||||
}
|
||||
|
||||
public ProgressTrigger(String floor) {
|
||||
public ProgressTrigger(ResourceWorld floor) {
|
||||
this.floor = floor;
|
||||
}
|
||||
|
||||
@ -45,7 +46,7 @@ public class ProgressTrigger extends Trigger {
|
||||
/**
|
||||
* @return the specific floor that must be finished
|
||||
*/
|
||||
public String getFloor() {
|
||||
public ResourceWorld getFloor() {
|
||||
return floor;
|
||||
}
|
||||
|
||||
@ -53,7 +54,7 @@ public class ProgressTrigger extends Trigger {
|
||||
* @param floor
|
||||
* the specific floor to set
|
||||
*/
|
||||
public void setFloor(String floor) {
|
||||
public void setFloor(ResourceWorld floor) {
|
||||
this.floor = floor;
|
||||
}
|
||||
|
||||
@ -114,7 +115,14 @@ public class ProgressTrigger extends Trigger {
|
||||
}
|
||||
|
||||
public static ProgressTrigger getOrCreate(String floor, GameWorld gameWorld) {
|
||||
return new ProgressTrigger(floor);
|
||||
ResourceWorld resource = plugin.getWorlds().getResourceByName(floor);
|
||||
|
||||
if (resource != null) {
|
||||
return new ProgressTrigger(resource);
|
||||
|
||||
} else {
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
public static Set<ProgressTrigger> getByGameWorld(GameWorld gameWorld) {
|
||||
|
Loading…
Reference in New Issue
Block a user