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.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 {

View File

@ -225,15 +225,13 @@ 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) {
if (teams == redTeam && teams.defaultDisplay().entries().contains(player.getName())) {
player.teleport(this.redSpawnLocation);
} else if (teams == blueTeam) {
} else if (teams == blueTeam && teams.defaultDisplay().entries().contains(player.getName())) {
player.teleport(this.blueSpawnLocation);
}
}
}
}
for (int i = 0; i <= this.bricks - 1; i++) {
placeBrick(redBrickSpawns.get(i), redTeam);
placeBrick(blueBrickSpawns.get(i), blueTeam);
@ -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) {