steal event and then capture listen works :)
Some checks are pending
Build plugin / build (push) Waiting to run
Some checks are pending
Build plugin / build (push) Waiting to run
This commit is contained in:
parent
c470cfda3b
commit
e463925efd
|
@ -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);
|
||||
}
|
||||
// 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);
|
||||
|
|
|
@ -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>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"),
|
||||
|
|
|
@ -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() {
|
||||
|
|
|
@ -21,3 +21,4 @@ system:
|
|||
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%"
|
Loading…
Reference in New Issue
Block a user