diff --git a/src/main/java/xyz/twovb/sgm/SGM.java b/src/main/java/xyz/twovb/sgm/SGM.java index c786399..4c73cd3 100644 --- a/src/main/java/xyz/twovb/sgm/SGM.java +++ b/src/main/java/xyz/twovb/sgm/SGM.java @@ -10,9 +10,12 @@ import lombok.Getter; import net.megavex.scoreboardlibrary.api.ScoreboardLibrary; import net.megavex.scoreboardlibrary.api.exception.NoPacketAdapterAvailableException; import net.megavex.scoreboardlibrary.api.noop.NoopScoreboardLibrary; +import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.event.EventHandler; +import org.bukkit.event.Listener; import org.bukkit.plugin.java.JavaPlugin; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; @@ -31,7 +34,7 @@ import xyz.twovb.toolbox.utils.CustomLogger; import java.io.IOException; import java.util.Objects; -public final class SGM extends JavaPlugin { +public final class SGM extends JavaPlugin implements Listener { @Getter private static SGM instance; @@ -71,8 +74,14 @@ public final class SGM extends JavaPlugin { registerGames(); registerPlaceholders(); levelManager.loadLevels(); +// Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); } +// @EventHandler +// public void onEntityDamage() { +// +// } + private void loadScoreboard() { try { scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(this); diff --git a/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java b/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java index 3eb3938..76412ad 100644 --- a/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java +++ b/src/main/java/xyz/twovb/sgm/commands/impl/GameCommand.java @@ -70,9 +70,9 @@ public class GameCommand { new JoinGameGui().getGui().show(player); } - @Execute(name = "testjoin") - void testjoin(@Context Player player, @Arg("id") String id) { - SGM.getInstance().getGameManager().addPlayerToGame(player, UUID.fromString(id)); + @Execute(name = "addplayer") + void testjoin(@Context CommandSender sender, @Arg("player") Player target, @Arg("id") String id) { + SGM.getInstance().getGameManager().addPlayerToGame(target, UUID.fromString(id)); } } diff --git a/src/main/java/xyz/twovb/sgm/commands/impl/LevelCommand.java b/src/main/java/xyz/twovb/sgm/commands/impl/LevelCommand.java index 0a8630f..d3043b0 100644 --- a/src/main/java/xyz/twovb/sgm/commands/impl/LevelCommand.java +++ b/src/main/java/xyz/twovb/sgm/commands/impl/LevelCommand.java @@ -9,6 +9,7 @@ import dev.rollczi.litecommands.annotations.command.Command; import dev.rollczi.litecommands.annotations.context.Context; import dev.rollczi.litecommands.annotations.execute.Execute; import dev.rollczi.litecommands.annotations.permission.Permission; +import org.bukkit.GameMode; import org.bukkit.World; import org.bukkit.command.CommandSender; import org.bukkit.entity.Player; @@ -63,6 +64,7 @@ public class LevelCommand { CustomPlayer cPlayer = new CustomPlayer(player); World world = LevelManager.getLevel(name); player.teleport(world.getSpawnLocation()); + player.setGameMode(GameMode.CREATIVE); cPlayer.sendMessage("tele&aport"); } diff --git a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CTB.java b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CTB.java index cccc8da..6390426 100644 --- a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CTB.java +++ b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CTB.java @@ -33,6 +33,7 @@ import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.HandlerList; import org.bukkit.event.entity.EntityDamageByEntityEvent; +import org.bukkit.event.entity.EntityDamageEvent; import org.bukkit.event.entity.EntityDismountEvent; import org.bukkit.event.entity.PlayerDeathEvent; import org.bukkit.event.player.*; @@ -40,7 +41,6 @@ import org.bukkit.inventory.EntityEquipment; import org.bukkit.inventory.ItemStack; import org.bukkit.scheduler.BukkitRunnable; import org.bukkit.scheduler.BukkitTask; -import org.bukkit.scoreboard.Scoreboard; import org.jetbrains.annotations.NotNull; import xyz.twovb.sgm.SGM; import xyz.twovb.sgm.games.GameManager; @@ -62,10 +62,6 @@ public class CTB implements Minigame { private final UUID uuid; private final ArrayList redBrickSpawns = new ArrayList(); private final ArrayList blueBrickSpawns = new ArrayList(); - private Location redSpawnLocation; - private Location blueSpawnLocation; -// private final ArrayList redSpawnArea = new ArrayList(); -// private final ArrayList blueSpawnArea = new ArrayList(); private final ArrayList players = new ArrayList(); private final HashMap playerLocationHashMap = new HashMap<>(); // tagger, tagged @@ -73,6 +69,8 @@ public class CTB implements Minigame { private final HashMap playerStateMap = new HashMap<>(); ScoreboardTeam redTeam; ScoreboardTeam blueTeam; + private Location redSpawnLocation; + private Location blueSpawnLocation; private Location redJail; private Location blueJail; private World gameWorld; @@ -88,6 +86,9 @@ public class CTB implements Minigame { private int tagTime; private int jailTime; + private int redScore = 0; + private int blueScore = 0; + private int taskId; public CTB() { @@ -104,6 +105,14 @@ 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); + // todo get player attributes and then save if (applyOptions(world)) { this.teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager(); this.redTeam = teamManager.createIfAbsent("red_team"); @@ -161,20 +170,16 @@ public class CTB implements Minigame { if (players.isEmpty()) { this.stop(); } + for (ScoreboardTeam teams : teamManager.teams()) { + if (bricks <= getScore(teams)) { + endGame(teams); + } + } try { headerAnimation.nextFrame(); layout.apply(sb); } catch (IllegalStateException ignored) { } - - for (Player player : gameWorld.getPlayers()) { - if (!players.contains(player)) { -// for (Player gamePlayer : players) { -// gamePlayer.hidePlayer(SGM.getInstance(), player); -// } - sendMessageToAllPlayers(player.getName() + " IS A IMPOSTER"); - } - } for (Player player : players) { CtbData.Territory territory = getTerritory(player); CtbData.PlayerState state = playerStateMap.get(player); @@ -198,20 +203,35 @@ public class CTB implements Minigame { break; } } - SGM.getInstance().getCLogger().log(playerStateMap); +// SGM.getInstance().getCLogger().log(playerStateMap); + } + + void endGame(ScoreboardTeam team) { + if (team == redTeam) { + sendMessageToAllPlayers("&cRed Team &7has won the game!"); + } else if (team == blueTeam) { + sendMessageToAllPlayers("&9Blue Team &7has won the game!"); + } + stop(); } @Override public void start(CommandSender sender) { if (checkStart(sender)) { for (Player player : players) { + EntityEquipment playerEquipment = player.getEquipment(); player.getInventory().clear(); - player.teleport(this.spawnLoc); sb.addPlayer(player); player.setGameMode(GameMode.ADVENTURE); playerStateMap.put(player, CtbData.PlayerState.Free); for (ScoreboardTeam teams : teamManager.teams()) { - + if (teams.defaultDisplay().entries().contains(player.getName())) { + if (teams == redTeam) { + player.teleport(this.redSpawnLocation); + } else if (teams == blueTeam) { + player.teleport(this.blueSpawnLocation); + } + } } } for (int i = 0; i <= this.bricks - 1; i++) { @@ -286,6 +306,8 @@ public class CTB implements Minigame { public void addPlayer(Player player) { player.teleport(this.spawnLoc); players.add(player); + player.getInventory().clear(); + player.setGameMode(GameMode.ADVENTURE); sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName())); } @@ -316,11 +338,16 @@ public class CTB implements Minigame { @EventHandler void onPlayerDeath(PlayerDeathEvent event) { Player player = event.getPlayer(); - if (players.contains(player) && state == GameState.STARTED) { - sendMessageToAllPlayers(player.getName() + " was eliminated!"); - event.setDeathMessage(""); - removePlayer(player); + if (!players.contains(player)) return; + if (state == GameState.STARTED) { + addPlayerToJail(player); } + event.setCancelled(true); +// if (players.contains(player) && state == GameState.STARTED) { +// sendMessageToAllPlayers(player.getName() + " was eliminated!"); +// event.setDeathMessage(""); +// removePlayer(player); +// } } @EventHandler @@ -341,7 +368,7 @@ public class CTB implements Minigame { } private void releasePlayer(Player tagged, Player tagger) { - playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Invulnerable); + playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Free); playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Invulnerable); CustomPlayer cTagged = new CustomPlayer(tagged); CustomPlayer cTagger = new CustomPlayer(tagger); @@ -350,6 +377,12 @@ public class CTB implements Minigame { taggedPlayerHashMap.remove(tagger); } + private void jailbreakPlayer(Player jailed) { + playerStateMap.replace(jailed, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable); + CustomPlayer cPlayer = new CustomPlayer(jailed); + cPlayer.sendMessage(messages.getString("system.player.jail.jailbreak.notify")); + } + @EventHandler void onPlayerMoveWithBrick(PlayerMoveEvent event) { if (!(event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ())) return; @@ -362,9 +395,41 @@ public class CTB implements Minigame { if (territory.equals(CtbData.Territory.Neutral)) { sendMessageToAllPlayers(messages.getString("system.player.brick.steal.announce").replace("%player%", player.getName())); playerStateMap.replace(player, CtbData.PlayerState.Stealing, CtbData.PlayerState.Free); + PlayerCaptureBrickEvent captureBrickEvent = new PlayerCaptureBrickEvent(player); + captureBrickEvent.callEvent(); } } + @EventHandler + void onBrickCapture(PlayerCaptureBrickEvent event) { + Player player = event.getThief(); + if (!players.contains(player)) return; + ScoreboardTeam team = getTeam(player); + player.getInventory().clear(); + addScore(team, 1); + } + + void addScore(ScoreboardTeam team, int scoreToAdd) { + if (team == redTeam) { +// SGM.getInstance().getCLogger().log(redScore); + this.redScore = redScore + scoreToAdd; +// SGM.getInstance().getCLogger().log(redScore); + } else if (team == blueTeam) { +// SGM.getInstance().getCLogger().log(blueScore); + this.blueScore = blueScore + scoreToAdd; +// SGM.getInstance().getCLogger().log(blueScore); + } + } + + int getScore(ScoreboardTeam team) { + if (team == redTeam) { + return redScore; + } else if (team == blueTeam) { + return blueScore; + } + return 0; + } + @EventHandler void onPlayerStealBrick(PlayerStealBrickEvent event) { Player player = event.getThief(); @@ -459,14 +524,6 @@ public class CTB implements Minigame { Player tagger = event.getTagger(); if (this.state != GameState.STARTED) return; if (!players.contains(tagged) || !players.contains(tagger)) return; - if (playerStateMap.get(tagged) == CtbData.PlayerState.Stealing) { - ScoreboardTeam team = getTeam(tagged); - if (team == redTeam) { - placeBrick(tagged.getLocation(), blueTeam); - } else if (team == blueTeam) { - placeBrick(tagged.getLocation(), redTeam); - } - } taggedPlayerHashMap.putIfAbsent(tagger, tagged); CustomPlayer cTagged = new CustomPlayer(tagged); CustomPlayer cTagger = new CustomPlayer(tagger); @@ -479,19 +536,34 @@ public class CTB implements Minigame { tagger.addPassenger(armorStandEntity); armorStandEntity.addPassenger(tagged); new BukkitRunnable() { - private int seconds = 0; + private final CustomPlayer cTagged = new CustomPlayer(tagged); + private final CustomPlayer cTagger = new CustomPlayer(tagger); + private int seconds = 1; + @Override public void run() { + if (playerStateMap.get(tagger) != CtbData.PlayerState.Tagging) this.cancel(); if (seconds > tagTime) { - tagger.sendMessage("out of time"); + cTagger.sendMessage(messages.getString("system.player.tag.notime.notify").replace("%player%", tagged.getName())); + cTagged.sendMessage(messages.getString("system.player.tag.notime.info").replace("%player%", tagger.getName())); + playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Invulnerable); + playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Invulnerable); + for (Entity entity : tagger.getPassengers()) { + if (entity instanceof ArmorStand) { + entity.remove(); + } + } + this.cancel(); } else { - tagger.sendMessage(String.valueOf(tagTime)); seconds++; } } }.runTaskTimer(SGM.getInstance(), 0, 20L); } + + //TODO MAKE LEVEL CREATE TP U TO RIGHT PLACE + @EventHandler void onPlayerFreedom(PlayerFreedFromJailEvent event) { Player tagged = event.getTagged(); @@ -529,13 +601,25 @@ public class CTB implements Minigame { if (teamMember.player() == cPlayer.player()) continue; teamMember.sendMessage(LegacyComponentSerializer.legacyAmpersand().serialize(event.getMessage())); } + + new BukkitRunnable() { + private int seconds = 1; + @Override + public void run() { + if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel(); + if (seconds > jailTime) { + jailbreakPlayer(player); + } else { + seconds++; + } + } + }.runTaskTimer(SGM.getInstance(), 0, 20L); + } - - @EventHandler void handleEntityDamage(EntityDamageByEntityEvent event) { - if (this.state != GameState.STARTED) return; +// if (this.state != GameState.STARTED) return; Entity eventEntity = event.getEntity(); Entity eventDamager = event.getDamager(); @@ -543,8 +627,10 @@ public class CTB implements Minigame { if (!players.contains(interacted) || !players.contains(interacter)) return; // if (getTerritory(interacted) != getTerritory(interacter)) return; - PlayerGameInteractionEvent interactionEvent = new PlayerGameInteractionEvent(interacted, interacter); - Bukkit.getServer().getPluginManager().callEvent(interactionEvent); + if (this.state == GameState.STARTED) { + PlayerGameInteractionEvent interactionEvent = new PlayerGameInteractionEvent(interacted, interacter); + Bukkit.getServer().getPluginManager().callEvent(interactionEvent); + } event.setCancelled(true); // if (interactionEvent.isCancelled()) { @@ -552,6 +638,21 @@ public class CTB implements Minigame { // } } + @EventHandler + void handlePlayerDamage(EntityDamageEvent event) { + if (this.state != GameState.STARTED && this.state != GameState.READY) return; + Entity entity = event.getEntity(); + if (!(entity instanceof Player gamePlayer)) return; + if (!players.contains(gamePlayer)) return; + if (this.state == GameState.READY) { + event.setCancelled(true); + } else if (this.state == GameState.STARTED) { + if (playerStateMap.get(gamePlayer) == CtbData.PlayerState.Tagged) { + event.setCancelled(true); + } + } + } + @EventHandler void onPlayerFree(PlayerGameInteractionEvent event) { Player interacted = event.getInteracted(); @@ -587,11 +688,27 @@ public class CTB implements Minigame { event.setCancelled(true); CtbData.Territory territory = getTerritory(interacted); + EntityEquipment interactedEquipment = interacted.getEquipment(); + if (territory == CtbData.Territory.Neutral) return; if (territory == CtbData.Territory.Blue && interacterTeam != blueTeam) return; if (territory == CtbData.Territory.Red && interacterTeam != redTeam) return; if (playerStateMap.get(interacter) != CtbData.PlayerState.Free) return; - if (playerStateMap.get(interacted) != CtbData.PlayerState.Free && playerStateMap.get(interacted) != CtbData.PlayerState.Stealing) return; - + if (playerStateMap.get(interacted) != CtbData.PlayerState.Free && playerStateMap.get(interacted) != CtbData.PlayerState.Stealing) + return; + if (playerStateMap.get(interacted) == CtbData.PlayerState.Stealing) { + ScoreboardTeam team = getTeam(interacted); + if (team == redTeam) { + if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) { + interacted.getInventory().clear(); + placeBrick(interacted.getLocation(), blueTeam); + } + } else if (team == blueTeam) { + if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) { + interacted.getInventory().clear(); + placeBrick(interacted.getLocation(), redTeam); + } + } + } playerStateMap.replace(interacted, CtbData.PlayerState.Tagged); playerStateMap.replace(interacter, CtbData.PlayerState.Free, CtbData.PlayerState.Tagging); PlayerTaggedEvent taggedEvent = new PlayerTaggedEvent(interacted, interacter); @@ -620,7 +737,7 @@ public class CTB implements Minigame { if (territory == CtbData.Territory.Blue && taggerTeam == blueTeam) return; if (territory == CtbData.Territory.Red && taggerTeam == redTeam) return; if (playerStateMap.get(brickTaker) != CtbData.PlayerState.Free) return; - if (brickMaterial != null) return; + if (brickMaterial == null) return; playerStateMap.replace(brickTaker, CtbData.PlayerState.Free, CtbData.PlayerState.Stealing); EntityEquipment playerEquipment = event.getPlayer().getEquipment(); playerEquipment.setHelmet(new ItemStack(brickMaterial)); @@ -640,6 +757,9 @@ public class CTB implements Minigame { } else if (team == blueTeam) { player.teleport(redJail); } + + + } public void freePlayerFromJail(Player player) { @@ -704,8 +824,8 @@ public class CTB implements Minigame { brickSpawnLoc = brickSpawnLoc.clone().add(0.5, 0, 0.5); Entity brickEntity = gameWorld.spawnEntity(brickSpawnLoc, EntityType.ARMOR_STAND); ArmorStand armorStand = (ArmorStand) brickEntity; + armorStand.setInvisible(true); EntityEquipment armorEquipment = armorStand.getEquipment(); - // TODO: make sure the children cannot uneqip the wool :sob: if (team.equals(redTeam)) { armorEquipment.setHelmet(new ItemStack(Material.RED_WOOL)); } else if (team.equals(blueTeam)) { diff --git a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CtbData.java b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CtbData.java index db33fd7..2c54ddd 100644 --- a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CtbData.java +++ b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/CtbData.java @@ -7,7 +7,7 @@ public class CtbData { public enum PlayerState { Free(""), - Stealing(" ʙᴇ ᴄᴀʀᴇꜰᴜʟ! ʏᴏᴜ ʜᴀᴠᴇ ᴀ ʙʀɪᴄᴋ ⚠"), + Stealing(" ʙᴇ ᴄᴀʀᴇꜰᴜʟ! ʏᴏᴜ ʜᴀᴠᴇ ᴀ ʙʀɪᴄᴋ ⚠"), Invulnerable("ɢᴏ ʙᴀᴄᴋ ᴛᴏ ɴᴇᴜᴛʀᴀʟ!"), Tagging("ʏᴏᴜ ᴀʀᴇ ᴛᴀɢɢɪɴɢ: %player%"), Tagged("ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"), diff --git a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/events/PlayerCaptureBrickEvent.java b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/events/PlayerCaptureBrickEvent.java new file mode 100644 index 0000000..4ba598e --- /dev/null +++ b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/events/PlayerCaptureBrickEvent.java @@ -0,0 +1,57 @@ +package xyz.twovb.sgm.games.impl.capturethebrick.events; +/* + * Created by 2vb - 7/7/2024 + */ + +import net.kyori.adventure.text.Component; +import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.bukkit.event.HandlerList; +import xyz.twovb.sgm.games.impl.capturethebrick.CTB; +import xyz.twovb.toolbox.utils.ChatUtils; + +public class PlayerCaptureBrickEvent extends Event implements Cancellable { + private static final HandlerList HANDLER_LIST = new HandlerList(); + private final Player thief; + private boolean isCancelled; + + private String message; + + public PlayerCaptureBrickEvent(Player thief) { + this.thief = thief; + this.isCancelled = false; + this.message = CTB.getMessages().getString("system.player.brick.steal.announce"); + } + + public static HandlerList getHandlerList() { + return HANDLER_LIST; + } + + public Player getThief() { + return this.thief; + } + + public String getMessage() { + return message; + } + + public void setMessage(String message) { + this.message = message; + } + + @Override + public HandlerList getHandlers() { + return HANDLER_LIST; + } + + @Override + public boolean isCancelled() { + return this.isCancelled; + } + + @Override + public void setCancelled(boolean cancelled) { + this.isCancelled = cancelled; + } +} diff --git a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/guis/TeamGui.java b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/guis/TeamGui.java index e744d59..4670810 100644 --- a/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/guis/TeamGui.java +++ b/src/main/java/xyz/twovb/sgm/games/impl/capturethebrick/guis/TeamGui.java @@ -51,7 +51,7 @@ public class TeamGui { public void pickTeam(InventoryClickEvent event) { Player player = (Player) event.getWhoClicked(); ItemStack clickedItem = event.getCurrentItem(); - CTB game = (CTB) SGM.getInstance().getGameManager().findGame(player); + CTB game = (CTB) SGM.getInstance().getGameManager().findGame(target); if (clickedItem.getType().equals(Material.RED_WOOL)) { game.addPlayerToTeam(target, CtbData.Teams.Red); game.sendMessageToAllPlayers(target.getName() + " RED"); diff --git a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java index edae9e0..ce5e272 100644 --- a/src/main/java/xyz/twovb/sgm/levels/LevelManager.java +++ b/src/main/java/xyz/twovb/sgm/levels/LevelManager.java @@ -52,6 +52,13 @@ 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 { @@ -187,6 +194,10 @@ public class LevelManager { 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; diff --git a/src/main/resources/games/capturethebrick/messages.yml b/src/main/resources/games/capturethebrick/messages.yml index dfa4f02..b0601b9 100644 --- a/src/main/resources/games/capturethebrick/messages.yml +++ b/src/main/resources/games/capturethebrick/messages.yml @@ -11,14 +11,19 @@ system: free: notify: "&7%player% has been freed from Jail by %rescuer%" info: "&7You and %player% must now walk back to Neutral before you can do anything." + jailbreak: + notify: "&7It's time for Jailbreak™! You have been released and you must head back to Neutral before you can do anything." tag: + notime: + notify: "&7You have run out of time to bring %player% to Jail! You must head back to Neutral before you can do anything." + info: "&7%player% has run out of time to take you to Jail! You have been released and you must head back to Neutral before you can do anything." notify: "&7You have been tagged! %player% now has 25 seconds to take you to Jail or you will be freed!" info: "&7You have tagged %player%! You have 25 seconds to take them to Jail! Crouch if you would like to set them free." released: - notify: "&7You have released %player%! You must head back to Neutral before you can do anything." + notify: "&7You have released %player%" info: "&7%player% let you free! You must head back to Neutral before you can do anything." full: "&7You have returned to Neutral. You can now get back to the game!" brick: steal: notify: "&7You have stolen a brick. Make it to Neutral without being caught to Capture The Brick™!" - announce: "&7%player% has captured a brick! %score%" \ No newline at end of file + announce: "&7%player% has captured a brick!" \ No newline at end of file diff --git a/src/main/resources/games/capturethebrick/options.yml b/src/main/resources/games/capturethebrick/options.yml index 0b2f930..b2713dd 100644 --- a/src/main/resources/games/capturethebrick/options.yml +++ b/src/main/resources/games/capturethebrick/options.yml @@ -1,7 +1,8 @@ mapInfo: brickCount: 2 territory: 1 - boundary: 3 + tagTime: 25 + jailTime: 25 spawn: 0,0,0 teams: red: @@ -10,13 +11,9 @@ teams: - 0,0,0 playerSpawn: 0,0,0 jail: 0,0,0 - tagTime: 25 - jailTime: 25 blue: brickSpawns: - 0,0,0 - 0,0,0 playerSpawn: 0,0,0 - jail: 0,0,0 - tagTime: 25 - jailTime: 25 \ No newline at end of file + jail: 0,0,0 \ No newline at end of file