This commit is contained in:
parent
2cf21c8ce7
commit
8b4ebaacd4
|
@ -19,19 +19,13 @@ import net.megavex.scoreboardlibrary.api.sidebar.component.animation.SidebarAnim
|
||||||
import net.megavex.scoreboardlibrary.api.team.ScoreboardTeam;
|
import net.megavex.scoreboardlibrary.api.team.ScoreboardTeam;
|
||||||
import net.megavex.scoreboardlibrary.api.team.TeamDisplay;
|
import net.megavex.scoreboardlibrary.api.team.TeamDisplay;
|
||||||
import net.megavex.scoreboardlibrary.api.team.TeamManager;
|
import net.megavex.scoreboardlibrary.api.team.TeamManager;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.*;
|
||||||
import org.bukkit.Location;
|
|
||||||
import org.bukkit.Material;
|
|
||||||
import org.bukkit.World;
|
|
||||||
import org.bukkit.block.Block;
|
import org.bukkit.block.Block;
|
||||||
import org.bukkit.command.CommandSender;
|
import org.bukkit.command.CommandSender;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
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.ArmorStand;
|
import org.bukkit.entity.*;
|
||||||
import org.bukkit.entity.Entity;
|
|
||||||
import org.bukkit.entity.EntityType;
|
|
||||||
import org.bukkit.entity.Player;
|
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.HandlerList;
|
import org.bukkit.event.HandlerList;
|
||||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||||
|
@ -42,10 +36,12 @@ import org.bukkit.event.player.PlayerMoveEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
import org.bukkit.event.player.PlayerToggleSneakEvent;
|
||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
import org.bukkit.util.Transformation;
|
||||||
import org.jetbrains.annotations.NotNull;
|
import org.jetbrains.annotations.NotNull;
|
||||||
import xyz.twovb.sgm.SGM;
|
import xyz.twovb.sgm.SGM;
|
||||||
import xyz.twovb.sgm.games.GameManager;
|
import xyz.twovb.sgm.games.GameManager;
|
||||||
import xyz.twovb.sgm.games.Minigame;
|
import xyz.twovb.sgm.games.Minigame;
|
||||||
|
import xyz.twovb.sgm.games.impl.capturethebrick.events.PlayerFreedFromJailEvent;
|
||||||
import xyz.twovb.sgm.games.impl.capturethebrick.events.PlayerJailedEvent;
|
import xyz.twovb.sgm.games.impl.capturethebrick.events.PlayerJailedEvent;
|
||||||
import xyz.twovb.sgm.games.impl.capturethebrick.events.PlayerTaggedEvent;
|
import xyz.twovb.sgm.games.impl.capturethebrick.events.PlayerTaggedEvent;
|
||||||
import xyz.twovb.sgm.levels.LevelManager;
|
import xyz.twovb.sgm.levels.LevelManager;
|
||||||
|
@ -190,17 +186,15 @@ public class CTB implements Minigame {
|
||||||
case Jailed:
|
case Jailed:
|
||||||
player.sendActionBar(ChatUtils.translate(state.getFancyText().replace("%territory%", territory.getFancyText())));
|
player.sendActionBar(ChatUtils.translate(state.getFancyText().replace("%territory%", territory.getFancyText())));
|
||||||
break;
|
break;
|
||||||
case Tagged:
|
case Tagged, Invulnerable:
|
||||||
player.sendActionBar(ChatUtils.translate(state.getFancyText()));
|
player.sendActionBar(ChatUtils.translate(state.getFancyText()));
|
||||||
break;
|
break;
|
||||||
case Invulnerable:
|
|
||||||
player.sendActionBar(ChatUtils.translate(state.getFancyText()));
|
|
||||||
default:
|
default:
|
||||||
player.sendActionBar(ChatUtils.translate(territory.getFancyText()));
|
player.sendActionBar(ChatUtils.translate(territory.getFancyText()));
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
SGM.getInstance().getCLogger().log(playerStateMap);
|
// SGM.getInstance().getCLogger().log(playerStateMap);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -209,6 +203,7 @@ public class CTB implements Minigame {
|
||||||
for (Player player : players) {
|
for (Player player : players) {
|
||||||
player.teleport(this.spawnLoc);
|
player.teleport(this.spawnLoc);
|
||||||
sb.addPlayer(player);
|
sb.addPlayer(player);
|
||||||
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
playerStateMap.put(player, CtbData.PlayerState.Free);
|
playerStateMap.put(player, CtbData.PlayerState.Free);
|
||||||
}
|
}
|
||||||
for (int i = 0; i <= this.bricks - 1; i++) {
|
for (int i = 0; i <= this.bricks - 1; i++) {
|
||||||
|
@ -444,6 +439,19 @@ public class CTB implements Minigame {
|
||||||
armorStandEntity.addPassenger(tagged);
|
armorStandEntity.addPassenger(tagged);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerFreedom(PlayerFreedFromJailEvent event) {
|
||||||
|
Player tagged = event.getTagged();
|
||||||
|
Player tagger = event.getTagger();
|
||||||
|
if (this.state != GameState.STARTED) return;
|
||||||
|
if (!players.contains(tagged) || !players.contains(tagger)) return;
|
||||||
|
CustomPlayer cTagged = new CustomPlayer(tagged);
|
||||||
|
CustomPlayer cTagger = new CustomPlayer(tagger);
|
||||||
|
sendMessageToAllPlayers(messages.getString("system.player.jail.free.notify").replace("%rescuer%", tagger.getName()).replace("%player%", tagged.getName()));
|
||||||
|
cTagger.sendMessage(messages.getString("system.player.jail.free.info").replace("%player%", tagged.getName()));
|
||||||
|
cTagged.sendMessage(messages.getString("system.player.jail.free.info").replace("%player%", tagger.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onDismountAttempt(EntityDismountEvent event) {
|
void onDismountAttempt(EntityDismountEvent event) {
|
||||||
if (!(event.getEntity() instanceof Player player)) return;
|
if (!(event.getEntity() instanceof Player player)) return;
|
||||||
|
@ -470,12 +478,33 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@EventHandler
|
||||||
|
void onPlayerFree(EntityDamageByEntityEvent event) {
|
||||||
|
// Check if a player is allowed to free someone, and if the tagged player is allowed to be free
|
||||||
|
// If both are true, call the custom event
|
||||||
|
if (this.state != GameState.STARTED) return;
|
||||||
|
Entity eventEntity = event.getEntity();
|
||||||
|
Entity eventDamager = event.getDamager();
|
||||||
|
if (!(eventEntity instanceof Player tagged) || !(eventDamager instanceof Player tagger)) return;
|
||||||
|
if (!players.contains(tagged) || !players.contains(tagger)) return;
|
||||||
|
if (getTerritory(tagged) != getTerritory(tagger)) return;
|
||||||
|
ScoreboardTeam taggedTeam = getTeam(tagged);
|
||||||
|
ScoreboardTeam taggerTeam = getTeam(tagger);
|
||||||
|
if (taggedTeam != taggerTeam) return;
|
||||||
|
if (playerStateMap.get(tagged) != CtbData.PlayerState.Jailed) return;
|
||||||
|
if (playerStateMap.get(tagger) != CtbData.PlayerState.Free) return;
|
||||||
|
playerStateMap.replace(tagged, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable);
|
||||||
|
playerStateMap.replace(tagger, CtbData.PlayerState.Free, CtbData.PlayerState.Invulnerable);
|
||||||
|
PlayerFreedFromJailEvent freedFromJailEvent = new PlayerFreedFromJailEvent(tagged, tagger);
|
||||||
|
freedFromJailEvent.callEvent();
|
||||||
|
event.setCancelled(true);
|
||||||
|
}
|
||||||
|
|
||||||
@EventHandler
|
@EventHandler
|
||||||
void onEntityDamage(EntityDamageByEntityEvent event) {
|
void onEntityDamage(EntityDamageByEntityEvent 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 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
|
// If both are true, call the custom tag event and add players to tagged hashmap
|
||||||
if (this.state != GameState.STARTED) return;
|
if (this.state != GameState.STARTED) return;
|
||||||
event.setCancelled(true);
|
|
||||||
Entity eventEntity = event.getEntity();
|
Entity eventEntity = event.getEntity();
|
||||||
Entity eventDamager = event.getDamager();
|
Entity eventDamager = event.getDamager();
|
||||||
if (!(eventEntity instanceof Player tagged) || !(eventDamager instanceof Player tagger)) return;
|
if (!(eventEntity instanceof Player tagged) || !(eventDamager instanceof Player tagger)) return;
|
||||||
|
@ -484,6 +513,7 @@ public class CTB implements Minigame {
|
||||||
ScoreboardTeam taggedTeam = getTeam(tagged);
|
ScoreboardTeam taggedTeam = getTeam(tagged);
|
||||||
ScoreboardTeam taggerTeam = getTeam(tagger);
|
ScoreboardTeam taggerTeam = getTeam(tagger);
|
||||||
if (taggedTeam == taggerTeam) return;
|
if (taggedTeam == taggerTeam) return;
|
||||||
|
event.setCancelled(true);
|
||||||
CtbData.Territory territory = getTerritory(tagged);
|
CtbData.Territory territory = getTerritory(tagged);
|
||||||
if (territory == CtbData.Territory.Blue && taggerTeam != blueTeam) return;
|
if (territory == CtbData.Territory.Blue && taggerTeam != blueTeam) return;
|
||||||
if (territory == CtbData.Territory.Red && taggerTeam != redTeam) return;
|
if (territory == CtbData.Territory.Red && taggerTeam != redTeam) return;
|
||||||
|
@ -509,7 +539,7 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
|
|
||||||
public void freePlayerFromJail(Player player) {
|
public void freePlayerFromJail(Player player) {
|
||||||
playerStateMap.replace(player, CtbData.PlayerState.Jailed, CtbData.PlayerState.Free);
|
playerStateMap.replace(player, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -564,13 +594,18 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
|
|
||||||
private void placeBrick(Location location, ScoreboardTeam team) {
|
private void placeBrick(Location location, ScoreboardTeam team) {
|
||||||
Block brick = location.getBlock();
|
Location brickSpawnLoc = location;
|
||||||
|
brickSpawnLoc = brickSpawnLoc.clone().add(0.5, 0, 0.5);
|
||||||
|
Entity brickEntity = gameWorld.spawnEntity(brickSpawnLoc, EntityType.BLOCK_DISPLAY);
|
||||||
|
BlockDisplay brickDisplay = (BlockDisplay) brickEntity;
|
||||||
if (team.equals(redTeam)) {
|
if (team.equals(redTeam)) {
|
||||||
brick.setType(Material.RED_WOOL);
|
brickDisplay.setBlock(Material.RED_WOOL.createBlockData());
|
||||||
}
|
} else if (team.equals(blueTeam)) {
|
||||||
if (team.equals(blueTeam)) {
|
brickDisplay.setBlock(Material.BLUE_WOOL.createBlockData());
|
||||||
brick.setType(Material.BLUE_WOOL);
|
|
||||||
}
|
}
|
||||||
|
Transformation transformation = brickDisplay.getTransformation();
|
||||||
|
transformation.getScale().set(0.5f);
|
||||||
|
brickDisplay.setTransformation(transformation);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupTeamDisplay(ScoreboardTeam team, String displayName, NamedTextColor color) {
|
private void setupTeamDisplay(ScoreboardTeam team, String displayName, NamedTextColor color) {
|
||||||
|
|
|
@ -10,7 +10,7 @@ public class CtbData {
|
||||||
Invulnerable("<gray><bold>ɢᴏ ʙᴀᴄᴋ ᴛᴏ ɴᴇᴜᴛʀᴀʟ!"),
|
Invulnerable("<gray><bold>ɢᴏ ʙᴀᴄᴋ ᴛᴏ ɴᴇᴜᴛʀᴀʟ!"),
|
||||||
Tagging("<gray><bold>ʏᴏᴜ ᴀʀᴇ ᴛᴀɢɢɪɴɢ: %player%"),
|
Tagging("<gray><bold>ʏᴏᴜ ᴀʀᴇ ᴛᴀɢɢɪɴɢ: %player%"),
|
||||||
Tagged("<red><bold>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"),
|
Tagged("<red><bold>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"),
|
||||||
Jailed("<red><bold>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴊᴀɪʟᴇᴅ ɪɴ: %territory%");
|
Jailed("<dark_gray><bold>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴊᴀɪʟᴇᴅ ɪɴ: %territory%");
|
||||||
|
|
||||||
private final String fancyText;
|
private final String fancyText;
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
package xyz.twovb.sgm.games.impl.capturethebrick.events;
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 7/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
import org.bukkit.entity.Player;
|
||||||
|
import org.bukkit.event.Cancellable;
|
||||||
|
import org.bukkit.event.Event;
|
||||||
|
import org.bukkit.event.HandlerList;
|
||||||
|
|
||||||
|
public class PlayerFreedFromJailEvent extends Event implements Cancellable {
|
||||||
|
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||||
|
private final Player tagged;
|
||||||
|
private final Player tagger;
|
||||||
|
private boolean isCancelled;
|
||||||
|
|
||||||
|
private Component message;
|
||||||
|
|
||||||
|
public PlayerFreedFromJailEvent(Player tagged, Player tagger) {
|
||||||
|
this.tagged = tagged;
|
||||||
|
this.tagger = tagger;
|
||||||
|
this.isCancelled = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getTagged() {
|
||||||
|
return this.tagged;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getTagger() {
|
||||||
|
return this.tagger;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.isCancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.isCancelled = cancelled;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,58 @@
|
||||||
|
package xyz.twovb.sgm.games.impl.capturethebrick.events;
|
||||||
|
/*
|
||||||
|
* Created by 2vb - 7/7/2024
|
||||||
|
*/
|
||||||
|
|
||||||
|
import net.kyori.adventure.text.Component;
|
||||||
|
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 boolean isCancelled;
|
||||||
|
|
||||||
|
private Component message;
|
||||||
|
|
||||||
|
public PlayerStealBrickEvent(Player jailed) {
|
||||||
|
this.jailed = jailed;
|
||||||
|
this.isCancelled = false;
|
||||||
|
this.message = ChatUtils.translate(CTB.getMessages().getString("system.player.jail.notify").replace("%player%", jailed.getName()));
|
||||||
|
}
|
||||||
|
|
||||||
|
public static HandlerList getHandlerList() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Player getJailed() {
|
||||||
|
return this.jailed;
|
||||||
|
}
|
||||||
|
|
||||||
|
public Component getMessage() {
|
||||||
|
return message;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setMessage(Component message) {
|
||||||
|
this.message = message;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public HandlerList getHandlers() {
|
||||||
|
return HANDLER_LIST;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public boolean isCancelled() {
|
||||||
|
return this.isCancelled;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setCancelled(boolean cancelled) {
|
||||||
|
this.isCancelled = cancelled;
|
||||||
|
}
|
||||||
|
}
|
|
@ -8,6 +8,9 @@ system:
|
||||||
jail:
|
jail:
|
||||||
notify: "&7%player% has been jailed!"
|
notify: "&7%player% has been jailed!"
|
||||||
info: "&7You have been jailed! You can not leave until you get freed by a player or Jailbreak™."
|
info: "&7You have been jailed! You can not leave until you get freed by a player or Jailbreak™."
|
||||||
|
free:
|
||||||
|
notify: "&7%player% has been freed from Jail by %rescuer%"
|
||||||
|
info: "&7You and %player% must now walk back to Neutral before you can do anything."
|
||||||
tag:
|
tag:
|
||||||
notify: "&7You have been tagged! %player% now has 25 seconds to take you to Jail or you will be freed!"
|
notify: "&7You have been tagged! %player% now has 25 seconds to take you to Jail or you will be freed!"
|
||||||
info: "&7You have tagged %player%! You have 25 seconds to take them to Jail! Crouch if you would like to set them free."
|
info: "&7You have tagged %player%! You have 25 seconds to take them to Jail! Crouch if you would like to set them free."
|
||||||
|
|
Loading…
Reference in New Issue
Block a user