Optimized codebase :)
Some checks are pending
Build plugin / build (push) Waiting to run

This commit is contained in:
2vb 2024-07-08 19:01:03 -07:00
parent c8b4820be7
commit 051b2acb70
2 changed files with 30 additions and 36 deletions

View File

@ -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

View File

@ -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() {