steal event and then capture listen works :)
Some checks are pending
Build plugin / build (push) Waiting to run

This commit is contained in:
2vb 2024-07-07 19:20:15 -07:00
parent c470cfda3b
commit e463925efd
4 changed files with 47 additions and 44 deletions

View File

@ -185,7 +185,7 @@ public class CTB implements Minigame {
case Jailed:
player.sendActionBar(ChatUtils.translate(state.getFancyText().replace("%territory%", territory.getFancyText())));
break;
case Tagged, Invulnerable:
case Tagged, Invulnerable, Stealing:
player.sendActionBar(ChatUtils.translate(state.getFancyText()));
break;
default:
@ -341,6 +341,30 @@ public class CTB implements Minigame {
taggedPlayerHashMap.remove(tagger);
}
@EventHandler
void onPlayerMoveWithBrick(PlayerMoveEvent event) {
if (!(event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ())) return;
Player player = event.getPlayer();
if (!players.contains(player)) return;
if (this.state != GameState.STARTED) return;
if (playerStateMap.get(player) != 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);
}
}
@EventHandler
void onPlayerStealBrick(PlayerStealBrickEvent event) {
Player player = event.getThief();
if (!players.contains(player)) return;
if (this.state != GameState.STARTED) return;
if (playerStateMap.get(player) != CtbData.PlayerState.Stealing) return;
player.sendMessage(event.getMessage());
}
@EventHandler
void onPlayerWalkWhileInvuln(PlayerMoveEvent event) {
if (!(event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ())) return;
@ -477,6 +501,8 @@ public class CTB implements Minigame {
}
}
@EventHandler
void handleEntityDamage(EntityDamageByEntityEvent event) {
if (this.state != GameState.STARTED) return;
@ -485,21 +511,21 @@ public class CTB implements Minigame {
if (!(eventEntity instanceof Player interacted) || !(eventDamager instanceof Player interacter)) return;
if (!players.contains(interacted) || !players.contains(interacter)) return;
if (getTerritory(interacted) != getTerritory(interacter)) return;
// if (getTerritory(interacted) != getTerritory(interacter)) return;
PlayerGameInteractionEvent interactionEvent = new PlayerGameInteractionEvent(interacted, interacter);
Bukkit.getServer().getPluginManager().callEvent(interactionEvent);
if (interactionEvent.isCancelled()) {
event.setCancelled(true);
}
event.setCancelled(true);
// if (interactionEvent.isCancelled()) {
// event.setCancelled(true);
// }
}
@EventHandler
void onPlayerFree(EntityDamageByEntityEvent event) {
handleEntityDamage(event);
Player interacted = (Player) event.getEntity();
Player interacter = (Player) event.getDamager();
void onPlayerFree(PlayerGameInteractionEvent event) {
Player interacted = event.getInteracted();
Player interacter = event.getInteracter();
if (this.state != GameState.STARTED) return;
if (!players.contains(interacted) || !players.contains(interacter)) return;
@ -518,32 +544,9 @@ public class CTB implements Minigame {
}
@EventHandler
void onPlayerHit(EntityDamageByEntityEvent event) {
handleEntityDamage(event);
Player interacted = (Player) event.getEntity();
Player interacter = (Player) event.getDamager();
if (this.state != GameState.STARTED) return;
if (!players.contains(interacted) || !players.contains(interacter)) return;
if (getTerritory(interacted) != getTerritory(interacter)) return;
ScoreboardTeam interactedTeam = getTeam(interacted);
ScoreboardTeam interacterTeam = getTeam(interacter);
if (interactedTeam != interacterTeam) return;
if (playerStateMap.get(interacted) != CtbData.PlayerState.Jailed) return;
if (playerStateMap.get(interacter) != CtbData.PlayerState.Free) return;
playerStateMap.replace(interacted, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable);
playerStateMap.replace(interacter, CtbData.PlayerState.Free, CtbData.PlayerState.Invulnerable);
PlayerFreedFromJailEvent freedFromJailEvent = new PlayerFreedFromJailEvent(interacted, interacter);
Bukkit.getServer().getPluginManager().callEvent(freedFromJailEvent);
event.setCancelled(true);
}
@EventHandler
void onEntityDamage(EntityDamageByEntityEvent event) {
handleEntityDamage(event);
Player interacted = (Player) event.getEntity();
Player interacter = (Player) event.getDamager();
void onPlayerTag(PlayerGameInteractionEvent event) {
Player interacted = event.getInteracted();
Player interacter = event.getInteracter();
if (this.state != GameState.STARTED) return;
if (!players.contains(interacted) || !players.contains(interacter)) return;
@ -572,7 +575,7 @@ public class CTB implements Minigame {
if (this.state != GameState.STARTED) return;
Entity rightClicked = event.getRightClicked();
Player brickTaker = event.getPlayer();
// if (!(rightClicked instanceof ArmorStand brickEntity)) return;
if (!(rightClicked instanceof ArmorStand)) return;
if (!players.contains(brickTaker)) return;
SGM.getInstance().getCLogger().log(rightClicked);
SGM.getInstance().getCLogger().log(brickTaker);

View File

@ -7,7 +7,7 @@ public class CtbData {
public enum PlayerState {
Free(""),
Stealing("<yellow><bold>⚠️ʙᴇ ᴄᴀʀᴇꜰᴜʟ! ʏ ʜᴀᴠᴇ ᴀ ʙʀɪᴄᴋ ⚠️"),
Stealing("<yellow><bold>ʙᴇ ᴄᴀʀᴇꜰᴜʟ! ʏ ʜᴀᴠᴇ ᴀ ʙʀɪᴄᴋ</bold>⚠"),
Invulnerable("<gray><bold>ɢᴏ ʙᴀᴄᴋ ᴛᴏ ɴᴇᴜᴛʀᴀʟ!"),
Tagging("<gray><bold>ʏ ᴀʀᴇ ᴛᴀɢɢɪɴɢ: %player%"),
Tagged("<red><bold>ʏ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"),

View File

@ -8,19 +8,18 @@ import org.bukkit.entity.Player;
import org.bukkit.event.Cancellable;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
import xyz.twovb.sgm.games.impl.capturethebrick.CTB;
import xyz.twovb.toolbox.utils.ChatUtils;
public class PlayerStealBrickEvent extends Event implements Cancellable {
private static final HandlerList HANDLER_LIST = new HandlerList();
private final Player jailed;
private final Player thief;
private boolean isCancelled;
private Component message;
public PlayerStealBrickEvent(Player jailed) {
this.jailed = jailed;
public PlayerStealBrickEvent(Player thief) {
this.thief = thief;
this.isCancelled = false;
this.message = ChatUtils.translate(CTB.getMessages().getString("system.player.brick.steal.notify"));
}
@ -29,8 +28,8 @@ public class PlayerStealBrickEvent extends Event implements Cancellable {
return HANDLER_LIST;
}
public Player getJailed() {
return this.jailed;
public Player getThief() {
return this.thief;
}
public Component getMessage() {

View File

@ -20,4 +20,5 @@ system:
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™!"
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%"