diff --git a/src/main/java/xyz/twovb/sgm/SGM.java b/src/main/java/xyz/twovb/sgm/SGM.java index 4c73cd3..72db0e5 100644 --- a/src/main/java/xyz/twovb/sgm/SGM.java +++ b/src/main/java/xyz/twovb/sgm/SGM.java @@ -14,8 +14,10 @@ import org.bukkit.Bukkit; import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.YamlConfiguration; +import org.bukkit.entity.Player; import org.bukkit.event.EventHandler; import org.bukkit.event.Listener; +import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.plugin.java.JavaPlugin; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; @@ -74,13 +76,14 @@ public final class SGM extends JavaPlugin implements Listener { registerGames(); registerPlaceholders(); levelManager.loadLevels(); -// Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); + Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); } -// @EventHandler -// public void onEntityDamage() { -// -// } + @EventHandler + public void onEntityDamage(EntityDamageByEntityEvent event) { + if (!(event.getEntity() instanceof Player damaged) && !(event.getDamager() instanceof Player damager)) return; + event.setCancelled(true); + } private void loadScoreboard() { try { 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 6390426..81b5b40 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 @@ -225,12 +225,10 @@ public class CTB implements Minigame { 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); - } + if (teams == redTeam && teams.defaultDisplay().entries().contains(player.getName())) { + player.teleport(this.redSpawnLocation); + } else if (teams == blueTeam && teams.defaultDisplay().entries().contains(player.getName())) { + player.teleport(this.blueSpawnLocation); } } } @@ -246,10 +244,6 @@ public class CTB implements Minigame { } } - boolean isJailed(Player player) { - return playerStateMap.get(player) == CtbData.PlayerState.Jailed; - } - CtbData.Territory getTerritory(Player player) { Location playerLoc = player.getLocation(); Location blockCheck = new Location(gameWorld, playerLoc.getBlockX(), territoryLevel, playerLoc.getBlockZ()); @@ -341,13 +335,10 @@ public class CTB implements Minigame { if (!players.contains(player)) return; if (state == GameState.STARTED) { addPlayerToJail(player); + } else { + player.teleport(gameWorld.getSpawnLocation()); } event.setCancelled(true); -// if (players.contains(player) && state == GameState.STARTED) { -// sendMessageToAllPlayers(player.getName() + " was eliminated!"); -// event.setDeathMessage(""); -// removePlayer(player); -// } } @EventHandler @@ -389,9 +380,9 @@ public class CTB implements Minigame { Player player = event.getPlayer(); if (!players.contains(player)) return; if (this.state != GameState.STARTED) return; - if (playerStateMap.get(player) != CtbData.PlayerState.Stealing) return; + CtbData.PlayerState state = playerStateMap.get(player); + if (state != CtbData.PlayerState.Stealing) return; CtbData.Territory territory = getTerritory(player); -// CustomPlayer cPlayer = new CustomPlayer(player); 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); @@ -411,13 +402,9 @@ public class CTB implements Minigame { 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); } } @@ -561,9 +548,6 @@ public class CTB implements Minigame { }.runTaskTimer(SGM.getInstance(), 0, 20L); } - - //TODO MAKE LEVEL CREATE TP U TO RIGHT PLACE - @EventHandler void onPlayerFreedom(PlayerFreedFromJailEvent event) { Player tagged = event.getTagged(); @@ -609,6 +593,7 @@ public class CTB implements Minigame { if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel(); if (seconds > jailTime) { jailbreakPlayer(player); + this.cancel(); } else { seconds++; } @@ -681,30 +666,32 @@ public class CTB implements Minigame { if (this.state != GameState.STARTED) return; if (!players.contains(interacted) || !players.contains(interacter)) return; - if (getTerritory(interacted) != getTerritory(interacter)) return; + CtbData.Territory interactedTerritory = getTerritory(interacted); + CtbData.Territory interacterTerritory = getTerritory(interacter); + if (interactedTerritory != interacterTerritory) return; ScoreboardTeam interactedTeam = getTeam(interacted); ScoreboardTeam interacterTeam = getTeam(interacter); if (interactedTeam == interacterTeam) return; event.setCancelled(true); + CtbData.PlayerState interactedState = playerStateMap.get(interacted); + CtbData.PlayerState interacterState = playerStateMap.get(interacter); - 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.Stealing) { + if (interactedTerritory == CtbData.Territory.Neutral) return; + if (interactedTerritory == CtbData.Territory.Blue && interacterTeam != blueTeam) return; + if (interactedTerritory == CtbData.Territory.Red && interacterTeam != redTeam) return; + if (interacterState != CtbData.PlayerState.Free) return; + if (interactedState != CtbData.PlayerState.Free && interactedState != CtbData.PlayerState.Stealing) return; + if (interactedState == CtbData.PlayerState.Stealing) { ScoreboardTeam team = getTeam(interacted); if (team == redTeam) { if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) { - interacted.getInventory().clear(); + interactedEquipment.setHelmet(new ItemStack(Material.AIR)); placeBrick(interacted.getLocation(), blueTeam); } } else if (team == blueTeam) { if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) { - interacted.getInventory().clear(); + interactedEquipment.setHelmet(new ItemStack(Material.AIR)); placeBrick(interacted.getLocation(), redTeam); } } @@ -717,8 +704,8 @@ public class CTB implements Minigame { @EventHandler void onBrickSteal(PlayerInteractAtEntityEvent event) { - // Check if a player is allowed to tag, and if the tagged player is allowed to be tagged - // If both are true, call the custom tag event and add players to tagged hashmap + // Check if a player is allowed to steal a brick + // If true, do brick steal logic if (this.state != GameState.STARTED) return; Entity rightClicked = event.getRightClicked(); Player brickTaker = event.getPlayer(); @@ -757,9 +744,6 @@ public class CTB implements Minigame { } else if (team == blueTeam) { player.teleport(redJail); } - - - } public void freePlayerFromJail(Player player) {