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