This commit is contained in:
parent
c8b4820be7
commit
051b2acb70
|
@ -105,13 +105,7 @@ public class CTB implements Minigame {
|
||||||
// Perform initialization logic here
|
// Perform initialization logic here
|
||||||
gameWorld = createGameWorld(world, uuid);
|
gameWorld = createGameWorld(world, uuid);
|
||||||
gameWorld.setAutoSave(false);
|
gameWorld.setAutoSave(false);
|
||||||
gameWorld.setGameRule(GameRule.KEEP_INVENTORY, true);
|
LevelManager.setGameRules(gameWorld);
|
||||||
gameWorld.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
|
||||||
gameWorld.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
|
||||||
gameWorld.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
|
||||||
gameWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
|
||||||
gameWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
|
||||||
gameWorld.setGameRule(GameRule.DO_MOB_LOOT, false);
|
|
||||||
// todo get player attributes and then save
|
// todo get player attributes and then save
|
||||||
if (applyOptions(world)) {
|
if (applyOptions(world)) {
|
||||||
this.teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager();
|
this.teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager();
|
||||||
|
@ -302,6 +296,7 @@ public class CTB implements Minigame {
|
||||||
players.add(player);
|
players.add(player);
|
||||||
player.getInventory().clear();
|
player.getInventory().clear();
|
||||||
player.setGameMode(GameMode.ADVENTURE);
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
|
player.setRespawnLocation(this.spawnLoc);
|
||||||
sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName()));
|
sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName()));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -310,6 +305,7 @@ public class CTB implements Minigame {
|
||||||
sendMessageToAllPlayers(messages.getString("system.player.left").replace("%player%", player.getName()));
|
sendMessageToAllPlayers(messages.getString("system.player.left").replace("%player%", player.getName()));
|
||||||
sb.removePlayer(player);
|
sb.removePlayer(player);
|
||||||
removePlayerFromTeams(player);
|
removePlayerFromTeams(player);
|
||||||
|
player.setRespawnLocation(Bukkit.getWorlds().get(0).getSpawnLocation());
|
||||||
players.remove(player);
|
players.remove(player);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -333,12 +329,18 @@ public class CTB implements Minigame {
|
||||||
void onPlayerDeath(PlayerDeathEvent event) {
|
void onPlayerDeath(PlayerDeathEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
if (!players.contains(player)) return;
|
if (!players.contains(player)) return;
|
||||||
if (state == GameState.STARTED) {
|
event.setCancelled(true);
|
||||||
|
ScoreboardTeam team = getTeam(player);
|
||||||
|
if (this.state == GameState.STARTED) {
|
||||||
addPlayerToJail(player);
|
addPlayerToJail(player);
|
||||||
|
if (team == redTeam) {
|
||||||
|
player.teleport(blueJail);
|
||||||
|
} else if (team == blueTeam) {
|
||||||
|
player.teleport(redJail);
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
player.teleport(gameWorld.getSpawnLocation());
|
player.teleport(gameWorld.getSpawnLocation());
|
||||||
}
|
}
|
||||||
event.setCancelled(true);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
|
@ -489,11 +491,11 @@ public class CTB implements Minigame {
|
||||||
if (!players.contains(player)) return;
|
if (!players.contains(player)) return;
|
||||||
if (this.state != GameState.STARTED) return;
|
if (this.state != GameState.STARTED) return;
|
||||||
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) return;
|
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) return;
|
||||||
CtbData.Territory territory = getTerritory(player);
|
ScoreboardTeam teams = getTeam(player);
|
||||||
Location jail = gameWorld.getSpawnLocation();
|
Location jail = gameWorld.getSpawnLocation();
|
||||||
if (territory.equals(CtbData.Territory.Blue)) {
|
if (teams == redTeam) {
|
||||||
jail = this.blueJail;
|
jail = this.blueJail;
|
||||||
} else if (territory.equals(CtbData.Territory.Red)) {
|
} else if (teams == blueTeam) {
|
||||||
jail = this.redJail;
|
jail = this.redJail;
|
||||||
}
|
}
|
||||||
double distanceFromJail = jail.distanceSquared(player.getLocation());
|
double distanceFromJail = jail.distanceSquared(player.getLocation());
|
||||||
|
@ -576,7 +578,8 @@ public class CTB implements Minigame {
|
||||||
Player player = event.getJailed();
|
Player player = event.getJailed();
|
||||||
if (this.state != GameState.STARTED) return;
|
if (this.state != GameState.STARTED) return;
|
||||||
if (!players.contains(player)) return;
|
if (!players.contains(player)) return;
|
||||||
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) return;
|
CtbData.PlayerState playerState = playerStateMap.get(player);
|
||||||
|
if (playerState != CtbData.PlayerState.Jailed) return;
|
||||||
CustomPlayer cPlayer = new CustomPlayer(player);
|
CustomPlayer cPlayer = new CustomPlayer(player);
|
||||||
cPlayer.sendMessage(messages.getString("system.player.jail.info"));
|
cPlayer.sendMessage(messages.getString("system.player.jail.info"));
|
||||||
for (String teamMembers : getTeam(cPlayer.player()).defaultDisplay().entries()) {
|
for (String teamMembers : getTeam(cPlayer.player()).defaultDisplay().entries()) {
|
||||||
|
@ -590,7 +593,7 @@ public class CTB implements Minigame {
|
||||||
private int seconds = 1;
|
private int seconds = 1;
|
||||||
@Override
|
@Override
|
||||||
public void run() {
|
public void run() {
|
||||||
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel();
|
// if (playerState != CtbData.PlayerState.Jailed) this.cancel();
|
||||||
if (seconds > jailTime) {
|
if (seconds > jailTime) {
|
||||||
jailbreakPlayer(player);
|
jailbreakPlayer(player);
|
||||||
this.cancel();
|
this.cancel();
|
||||||
|
@ -739,6 +742,7 @@ public class CTB implements Minigame {
|
||||||
PlayerJailedEvent jailedEvent = new PlayerJailedEvent(player);
|
PlayerJailedEvent jailedEvent = new PlayerJailedEvent(player);
|
||||||
jailedEvent.callEvent();
|
jailedEvent.callEvent();
|
||||||
ScoreboardTeam team = getTeam(player);
|
ScoreboardTeam team = getTeam(player);
|
||||||
|
// SGM.getInstance().getCLogger().log(team.name());
|
||||||
if (team == redTeam) {
|
if (team == redTeam) {
|
||||||
player.teleport(blueJail);
|
player.teleport(blueJail);
|
||||||
} else if (team == blueTeam) {
|
} else if (team == blueTeam) {
|
||||||
|
@ -746,10 +750,6 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void freePlayerFromJail(Player player) {
|
|
||||||
playerStateMap.replace(player, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable);
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<Player> getPlayers() {
|
public List<Player> getPlayers() {
|
||||||
return players;
|
return players;
|
||||||
|
@ -881,8 +881,8 @@ public class CTB implements Minigame {
|
||||||
// before processing each section in the same order as the file.
|
// before processing each section in the same order as the file.
|
||||||
private boolean applyOptions(String worldName) {
|
private boolean applyOptions(String worldName) {
|
||||||
File configFile = new File(LevelManager.mapPath + worldName + "/sgm.yml");
|
File configFile = new File(LevelManager.mapPath + worldName + "/sgm.yml");
|
||||||
SGM.getInstance().getCLogger().log(configFile.getPath());
|
// SGM.getInstance().getCLogger().log(configFile.getPath());
|
||||||
SGM.getInstance().getCLogger().log(configFile.getAbsolutePath());
|
// SGM.getInstance().getCLogger().log(configFile.getAbsolutePath());
|
||||||
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
|
YamlConfiguration config = YamlConfiguration.loadConfiguration(configFile);
|
||||||
|
|
||||||
// Set map information
|
// Set map information
|
||||||
|
|
|
@ -52,18 +52,8 @@ public class LevelManager {
|
||||||
case MAP -> new WorldCreator(mapPath + worldName, new NamespacedKey(SGM.getInstance(), key));
|
case MAP -> new WorldCreator(mapPath + worldName, new NamespacedKey(SGM.getInstance(), key));
|
||||||
};
|
};
|
||||||
World world = wc.createWorld();
|
World world = wc.createWorld();
|
||||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
setGameRules(world);
|
||||||
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
SGM.getInstance().getCLogger().log("Loaded world: " + worldName);
|
||||||
world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
|
||||||
world.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
|
||||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
|
||||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
|
||||||
world.setGameRule(GameRule.DO_MOB_LOOT, false);
|
|
||||||
if (world != null) {
|
|
||||||
SGM.getInstance().getCLogger().log("Loaded world: " + worldName);
|
|
||||||
} else {
|
|
||||||
SGM.getInstance().getCLogger().error("Failed to load world: " + worldName);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static void genDataFile(File path, String name, String game) {
|
private static void genDataFile(File path, String name, String game) {
|
||||||
|
@ -191,16 +181,20 @@ public class LevelManager {
|
||||||
}
|
}
|
||||||
world.setSpawnLocation(location);
|
world.setSpawnLocation(location);
|
||||||
world.setSpawnFlags(false, false);
|
world.setSpawnFlags(false, false);
|
||||||
|
setGameRules(world);
|
||||||
|
world.setTime(1000);
|
||||||
|
genDataFile(level, name, game.toLowerCase());
|
||||||
|
return LevelResult.SUCCESS;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void setGameRules(World world) {
|
||||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||||
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
||||||
world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
||||||
world.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
world.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
||||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
|
||||||
world.setGameRule(GameRule.DO_MOB_LOOT, false);
|
world.setGameRule(GameRule.DO_MOB_LOOT, false);
|
||||||
world.setTime(1000);
|
world.setGameRule(GameRule.DO_IMMEDIATE_RESPAWN, true);
|
||||||
genDataFile(level, name, game.toLowerCase());
|
|
||||||
return LevelResult.SUCCESS;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void loadLevels() {
|
public void loadLevels() {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user