Hopefully slightly more optimized tag event
Some checks are pending
Build plugin / build (push) Waiting to run

This commit is contained in:
2vb 2024-07-08 18:18:04 -07:00
parent 7a216b4095
commit c8b4820be7
2 changed files with 32 additions and 45 deletions

View File

@ -14,8 +14,10 @@ import org.bukkit.Bukkit;
import org.bukkit.configuration.InvalidConfigurationException; import org.bukkit.configuration.InvalidConfigurationException;
import org.bukkit.configuration.file.FileConfiguration; import org.bukkit.configuration.file.FileConfiguration;
import org.bukkit.configuration.file.YamlConfiguration; import org.bukkit.configuration.file.YamlConfiguration;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler;
import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler;
@ -74,13 +76,14 @@ public final class SGM extends JavaPlugin implements Listener {
registerGames(); registerGames();
registerPlaceholders(); registerPlaceholders();
levelManager.loadLevels(); levelManager.loadLevels();
// Bukkit.getPluginManager().registerEvents(this, SGM.getInstance()); Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
} }
// @EventHandler @EventHandler
// public void onEntityDamage() { public void onEntityDamage(EntityDamageByEntityEvent event) {
// if (!(event.getEntity() instanceof Player damaged) && !(event.getDamager() instanceof Player damager)) return;
// } event.setCancelled(true);
}
private void loadScoreboard() { private void loadScoreboard() {
try { try {

View File

@ -225,12 +225,10 @@ public class CTB implements Minigame {
player.setGameMode(GameMode.ADVENTURE); player.setGameMode(GameMode.ADVENTURE);
playerStateMap.put(player, CtbData.PlayerState.Free); playerStateMap.put(player, CtbData.PlayerState.Free);
for (ScoreboardTeam teams : teamManager.teams()) { for (ScoreboardTeam teams : teamManager.teams()) {
if (teams.defaultDisplay().entries().contains(player.getName())) { if (teams == redTeam && teams.defaultDisplay().entries().contains(player.getName())) {
if (teams == redTeam) { player.teleport(this.redSpawnLocation);
player.teleport(this.redSpawnLocation); } else if (teams == blueTeam && teams.defaultDisplay().entries().contains(player.getName())) {
} else if (teams == blueTeam) { player.teleport(this.blueSpawnLocation);
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) { CtbData.Territory getTerritory(Player player) {
Location playerLoc = player.getLocation(); Location playerLoc = player.getLocation();
Location blockCheck = new Location(gameWorld, playerLoc.getBlockX(), territoryLevel, playerLoc.getBlockZ()); 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 (!players.contains(player)) return;
if (state == GameState.STARTED) { if (state == GameState.STARTED) {
addPlayerToJail(player); addPlayerToJail(player);
} else {
player.teleport(gameWorld.getSpawnLocation());
} }
event.setCancelled(true); event.setCancelled(true);
// if (players.contains(player) && state == GameState.STARTED) {
// sendMessageToAllPlayers(player.getName() + " was eliminated!");
// event.setDeathMessage("");
// removePlayer(player);
// }
} }
@EventHandler @EventHandler
@ -389,9 +380,9 @@ public class CTB implements Minigame {
Player player = event.getPlayer(); Player player = event.getPlayer();
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.Stealing) return; CtbData.PlayerState state = playerStateMap.get(player);
if (state != CtbData.PlayerState.Stealing) return;
CtbData.Territory territory = getTerritory(player); CtbData.Territory territory = getTerritory(player);
// CustomPlayer cPlayer = new CustomPlayer(player);
if (territory.equals(CtbData.Territory.Neutral)) { if (territory.equals(CtbData.Territory.Neutral)) {
sendMessageToAllPlayers(messages.getString("system.player.brick.steal.announce").replace("%player%", player.getName())); sendMessageToAllPlayers(messages.getString("system.player.brick.steal.announce").replace("%player%", player.getName()));
playerStateMap.replace(player, CtbData.PlayerState.Stealing, CtbData.PlayerState.Free); playerStateMap.replace(player, CtbData.PlayerState.Stealing, CtbData.PlayerState.Free);
@ -411,13 +402,9 @@ public class CTB implements Minigame {
void addScore(ScoreboardTeam team, int scoreToAdd) { void addScore(ScoreboardTeam team, int scoreToAdd) {
if (team == redTeam) { if (team == redTeam) {
// SGM.getInstance().getCLogger().log(redScore);
this.redScore = redScore + scoreToAdd; this.redScore = redScore + scoreToAdd;
// SGM.getInstance().getCLogger().log(redScore);
} else if (team == blueTeam) { } else if (team == blueTeam) {
// SGM.getInstance().getCLogger().log(blueScore);
this.blueScore = blueScore + scoreToAdd; this.blueScore = blueScore + scoreToAdd;
// SGM.getInstance().getCLogger().log(blueScore);
} }
} }
@ -561,9 +548,6 @@ public class CTB implements Minigame {
}.runTaskTimer(SGM.getInstance(), 0, 20L); }.runTaskTimer(SGM.getInstance(), 0, 20L);
} }
//TODO MAKE LEVEL CREATE TP U TO RIGHT PLACE
@EventHandler @EventHandler
void onPlayerFreedom(PlayerFreedFromJailEvent event) { void onPlayerFreedom(PlayerFreedFromJailEvent event) {
Player tagged = event.getTagged(); Player tagged = event.getTagged();
@ -609,6 +593,7 @@ public class CTB implements Minigame {
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel(); if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel();
if (seconds > jailTime) { if (seconds > jailTime) {
jailbreakPlayer(player); jailbreakPlayer(player);
this.cancel();
} else { } else {
seconds++; seconds++;
} }
@ -681,30 +666,32 @@ public class CTB implements Minigame {
if (this.state != GameState.STARTED) return; if (this.state != GameState.STARTED) return;
if (!players.contains(interacted) || !players.contains(interacter)) 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 interactedTeam = getTeam(interacted);
ScoreboardTeam interacterTeam = getTeam(interacter); ScoreboardTeam interacterTeam = getTeam(interacter);
if (interactedTeam == interacterTeam) return; if (interactedTeam == interacterTeam) return;
event.setCancelled(true); event.setCancelled(true);
CtbData.PlayerState interactedState = playerStateMap.get(interacted);
CtbData.PlayerState interacterState = playerStateMap.get(interacter);
CtbData.Territory territory = getTerritory(interacted);
EntityEquipment interactedEquipment = interacted.getEquipment(); EntityEquipment interactedEquipment = interacted.getEquipment();
if (territory == CtbData.Territory.Neutral) return; if (interactedTerritory == CtbData.Territory.Neutral) return;
if (territory == CtbData.Territory.Blue && interacterTeam != blueTeam) return; if (interactedTerritory == CtbData.Territory.Blue && interacterTeam != blueTeam) return;
if (territory == CtbData.Territory.Red && interacterTeam != redTeam) return; if (interactedTerritory == CtbData.Territory.Red && interacterTeam != redTeam) return;
if (playerStateMap.get(interacter) != CtbData.PlayerState.Free) return; if (interacterState != CtbData.PlayerState.Free) return;
if (playerStateMap.get(interacted) != CtbData.PlayerState.Free && playerStateMap.get(interacted) != CtbData.PlayerState.Stealing) if (interactedState != CtbData.PlayerState.Free && interactedState != CtbData.PlayerState.Stealing) return;
return; if (interactedState == CtbData.PlayerState.Stealing) {
if (playerStateMap.get(interacted) == CtbData.PlayerState.Stealing) {
ScoreboardTeam team = getTeam(interacted); ScoreboardTeam team = getTeam(interacted);
if (team == redTeam) { if (team == redTeam) {
if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) { if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) {
interacted.getInventory().clear(); interactedEquipment.setHelmet(new ItemStack(Material.AIR));
placeBrick(interacted.getLocation(), blueTeam); placeBrick(interacted.getLocation(), blueTeam);
} }
} else if (team == blueTeam) { } else if (team == blueTeam) {
if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) { if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) {
interacted.getInventory().clear(); interactedEquipment.setHelmet(new ItemStack(Material.AIR));
placeBrick(interacted.getLocation(), redTeam); placeBrick(interacted.getLocation(), redTeam);
} }
} }
@ -717,8 +704,8 @@ public class CTB implements Minigame {
@EventHandler @EventHandler
void onBrickSteal(PlayerInteractAtEntityEvent event) { void onBrickSteal(PlayerInteractAtEntityEvent event) {
// Check if a player is allowed to tag, and if the tagged player is allowed to be tagged // Check if a player is allowed to steal a brick
// If both are true, call the custom tag event and add players to tagged hashmap // If true, do brick steal logic
if (this.state != GameState.STARTED) return; if (this.state != GameState.STARTED) return;
Entity rightClicked = event.getRightClicked(); Entity rightClicked = event.getRightClicked();
Player brickTaker = event.getPlayer(); Player brickTaker = event.getPlayer();
@ -757,9 +744,6 @@ public class CTB implements Minigame {
} else if (team == blueTeam) { } else if (team == blueTeam) {
player.teleport(redJail); player.teleport(redJail);
} }
} }
public void freePlayerFromJail(Player player) { public void freePlayerFromJail(Player player) {