This commit is contained in:
parent
84dc304136
commit
7a216b4095
|
@ -10,9 +10,12 @@ import lombok.Getter;
|
|||
import net.megavex.scoreboardlibrary.api.ScoreboardLibrary;
|
||||
import net.megavex.scoreboardlibrary.api.exception.NoPacketAdapterAvailableException;
|
||||
import net.megavex.scoreboardlibrary.api.noop.NoopScoreboardLibrary;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.configuration.InvalidConfigurationException;
|
||||
import org.bukkit.configuration.file.FileConfiguration;
|
||||
import org.bukkit.configuration.file.YamlConfiguration;
|
||||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.Listener;
|
||||
import org.bukkit.plugin.java.JavaPlugin;
|
||||
import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler;
|
||||
import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler;
|
||||
|
@ -31,7 +34,7 @@ import xyz.twovb.toolbox.utils.CustomLogger;
|
|||
import java.io.IOException;
|
||||
import java.util.Objects;
|
||||
|
||||
public final class SGM extends JavaPlugin {
|
||||
public final class SGM extends JavaPlugin implements Listener {
|
||||
|
||||
@Getter
|
||||
private static SGM instance;
|
||||
|
@ -71,8 +74,14 @@ public final class SGM extends JavaPlugin {
|
|||
registerGames();
|
||||
registerPlaceholders();
|
||||
levelManager.loadLevels();
|
||||
// Bukkit.getPluginManager().registerEvents(this, SGM.getInstance());
|
||||
}
|
||||
|
||||
// @EventHandler
|
||||
// public void onEntityDamage() {
|
||||
//
|
||||
// }
|
||||
|
||||
private void loadScoreboard() {
|
||||
try {
|
||||
scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(this);
|
||||
|
|
|
@ -70,9 +70,9 @@ public class GameCommand {
|
|||
new JoinGameGui().getGui().show(player);
|
||||
}
|
||||
|
||||
@Execute(name = "testjoin")
|
||||
void testjoin(@Context Player player, @Arg("id") String id) {
|
||||
SGM.getInstance().getGameManager().addPlayerToGame(player, UUID.fromString(id));
|
||||
@Execute(name = "addplayer")
|
||||
void testjoin(@Context CommandSender sender, @Arg("player") Player target, @Arg("id") String id) {
|
||||
SGM.getInstance().getGameManager().addPlayerToGame(target, UUID.fromString(id));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -9,6 +9,7 @@ import dev.rollczi.litecommands.annotations.command.Command;
|
|||
import dev.rollczi.litecommands.annotations.context.Context;
|
||||
import dev.rollczi.litecommands.annotations.execute.Execute;
|
||||
import dev.rollczi.litecommands.annotations.permission.Permission;
|
||||
import org.bukkit.GameMode;
|
||||
import org.bukkit.World;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.entity.Player;
|
||||
|
@ -63,6 +64,7 @@ public class LevelCommand {
|
|||
CustomPlayer cPlayer = new CustomPlayer(player);
|
||||
World world = LevelManager.getLevel(name);
|
||||
player.teleport(world.getSpawnLocation());
|
||||
player.setGameMode(GameMode.CREATIVE);
|
||||
cPlayer.sendMessage("<red>tele&aport");
|
||||
}
|
||||
|
||||
|
|
|
@ -33,6 +33,7 @@ import org.bukkit.entity.Player;
|
|||
import org.bukkit.event.EventHandler;
|
||||
import org.bukkit.event.HandlerList;
|
||||
import org.bukkit.event.entity.EntityDamageByEntityEvent;
|
||||
import org.bukkit.event.entity.EntityDamageEvent;
|
||||
import org.bukkit.event.entity.EntityDismountEvent;
|
||||
import org.bukkit.event.entity.PlayerDeathEvent;
|
||||
import org.bukkit.event.player.*;
|
||||
|
@ -40,7 +41,6 @@ import org.bukkit.inventory.EntityEquipment;
|
|||
import org.bukkit.inventory.ItemStack;
|
||||
import org.bukkit.scheduler.BukkitRunnable;
|
||||
import org.bukkit.scheduler.BukkitTask;
|
||||
import org.bukkit.scoreboard.Scoreboard;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import xyz.twovb.sgm.SGM;
|
||||
import xyz.twovb.sgm.games.GameManager;
|
||||
|
@ -62,10 +62,6 @@ public class CTB implements Minigame {
|
|||
private final UUID uuid;
|
||||
private final ArrayList<Location> redBrickSpawns = new ArrayList<Location>();
|
||||
private final ArrayList<Location> blueBrickSpawns = new ArrayList<Location>();
|
||||
private Location redSpawnLocation;
|
||||
private Location blueSpawnLocation;
|
||||
// private final ArrayList<Location> redSpawnArea = new ArrayList<Location>();
|
||||
// private final ArrayList<Location> blueSpawnArea = new ArrayList<Location>();
|
||||
private final ArrayList<Player> players = new ArrayList<Player>();
|
||||
private final HashMap<Player, Location> playerLocationHashMap = new HashMap<>();
|
||||
// tagger, tagged
|
||||
|
@ -73,6 +69,8 @@ public class CTB implements Minigame {
|
|||
private final HashMap<Player, CtbData.PlayerState> playerStateMap = new HashMap<>();
|
||||
ScoreboardTeam redTeam;
|
||||
ScoreboardTeam blueTeam;
|
||||
private Location redSpawnLocation;
|
||||
private Location blueSpawnLocation;
|
||||
private Location redJail;
|
||||
private Location blueJail;
|
||||
private World gameWorld;
|
||||
|
@ -88,6 +86,9 @@ public class CTB implements Minigame {
|
|||
private int tagTime;
|
||||
private int jailTime;
|
||||
|
||||
private int redScore = 0;
|
||||
private int blueScore = 0;
|
||||
|
||||
private int taskId;
|
||||
|
||||
public CTB() {
|
||||
|
@ -104,6 +105,14 @@ public class CTB implements Minigame {
|
|||
// Perform initialization logic here
|
||||
gameWorld = createGameWorld(world, uuid);
|
||||
gameWorld.setAutoSave(false);
|
||||
gameWorld.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||
gameWorld.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
||||
gameWorld.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
||||
gameWorld.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
||||
gameWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
gameWorld.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
gameWorld.setGameRule(GameRule.DO_MOB_LOOT, false);
|
||||
// todo get player attributes and then save
|
||||
if (applyOptions(world)) {
|
||||
this.teamManager = SGM.getInstance().getScoreboardLibrary().createTeamManager();
|
||||
this.redTeam = teamManager.createIfAbsent("red_team");
|
||||
|
@ -161,20 +170,16 @@ public class CTB implements Minigame {
|
|||
if (players.isEmpty()) {
|
||||
this.stop();
|
||||
}
|
||||
for (ScoreboardTeam teams : teamManager.teams()) {
|
||||
if (bricks <= getScore(teams)) {
|
||||
endGame(teams);
|
||||
}
|
||||
}
|
||||
try {
|
||||
headerAnimation.nextFrame();
|
||||
layout.apply(sb);
|
||||
} catch (IllegalStateException ignored) {
|
||||
}
|
||||
|
||||
for (Player player : gameWorld.getPlayers()) {
|
||||
if (!players.contains(player)) {
|
||||
// for (Player gamePlayer : players) {
|
||||
// gamePlayer.hidePlayer(SGM.getInstance(), player);
|
||||
// }
|
||||
sendMessageToAllPlayers(player.getName() + " IS A IMPOSTER");
|
||||
}
|
||||
}
|
||||
for (Player player : players) {
|
||||
CtbData.Territory territory = getTerritory(player);
|
||||
CtbData.PlayerState state = playerStateMap.get(player);
|
||||
|
@ -198,20 +203,35 @@ public class CTB implements Minigame {
|
|||
break;
|
||||
}
|
||||
}
|
||||
SGM.getInstance().getCLogger().log(playerStateMap);
|
||||
// SGM.getInstance().getCLogger().log(playerStateMap);
|
||||
}
|
||||
|
||||
void endGame(ScoreboardTeam team) {
|
||||
if (team == redTeam) {
|
||||
sendMessageToAllPlayers("&cRed Team &7has won the game!");
|
||||
} else if (team == blueTeam) {
|
||||
sendMessageToAllPlayers("&9Blue Team &7has won the game!");
|
||||
}
|
||||
stop();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void start(CommandSender sender) {
|
||||
if (checkStart(sender)) {
|
||||
for (Player player : players) {
|
||||
EntityEquipment playerEquipment = player.getEquipment();
|
||||
player.getInventory().clear();
|
||||
player.teleport(this.spawnLoc);
|
||||
sb.addPlayer(player);
|
||||
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) {
|
||||
player.teleport(this.redSpawnLocation);
|
||||
} else if (teams == blueTeam) {
|
||||
player.teleport(this.blueSpawnLocation);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
for (int i = 0; i <= this.bricks - 1; i++) {
|
||||
|
@ -286,6 +306,8 @@ public class CTB implements Minigame {
|
|||
public void addPlayer(Player player) {
|
||||
player.teleport(this.spawnLoc);
|
||||
players.add(player);
|
||||
player.getInventory().clear();
|
||||
player.setGameMode(GameMode.ADVENTURE);
|
||||
sendMessageToAllPlayers(messages.getString("system.player.join").replace("%player%", player.getName()));
|
||||
}
|
||||
|
||||
|
@ -316,11 +338,16 @@ public class CTB implements Minigame {
|
|||
@EventHandler
|
||||
void onPlayerDeath(PlayerDeathEvent event) {
|
||||
Player player = event.getPlayer();
|
||||
if (players.contains(player) && state == GameState.STARTED) {
|
||||
sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||
event.setDeathMessage("");
|
||||
removePlayer(player);
|
||||
if (!players.contains(player)) return;
|
||||
if (state == GameState.STARTED) {
|
||||
addPlayerToJail(player);
|
||||
}
|
||||
event.setCancelled(true);
|
||||
// if (players.contains(player) && state == GameState.STARTED) {
|
||||
// sendMessageToAllPlayers(player.getName() + " was eliminated!");
|
||||
// event.setDeathMessage("");
|
||||
// removePlayer(player);
|
||||
// }
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
|
@ -341,7 +368,7 @@ public class CTB implements Minigame {
|
|||
}
|
||||
|
||||
private void releasePlayer(Player tagged, Player tagger) {
|
||||
playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Invulnerable);
|
||||
playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Free);
|
||||
playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Invulnerable);
|
||||
CustomPlayer cTagged = new CustomPlayer(tagged);
|
||||
CustomPlayer cTagger = new CustomPlayer(tagger);
|
||||
|
@ -350,6 +377,12 @@ public class CTB implements Minigame {
|
|||
taggedPlayerHashMap.remove(tagger);
|
||||
}
|
||||
|
||||
private void jailbreakPlayer(Player jailed) {
|
||||
playerStateMap.replace(jailed, CtbData.PlayerState.Jailed, CtbData.PlayerState.Invulnerable);
|
||||
CustomPlayer cPlayer = new CustomPlayer(jailed);
|
||||
cPlayer.sendMessage(messages.getString("system.player.jail.jailbreak.notify"));
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onPlayerMoveWithBrick(PlayerMoveEvent event) {
|
||||
if (!(event.getFrom().getX() != event.getTo().getX() || event.getFrom().getZ() != event.getTo().getZ())) return;
|
||||
|
@ -362,9 +395,41 @@ public class CTB implements Minigame {
|
|||
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);
|
||||
PlayerCaptureBrickEvent captureBrickEvent = new PlayerCaptureBrickEvent(player);
|
||||
captureBrickEvent.callEvent();
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onBrickCapture(PlayerCaptureBrickEvent event) {
|
||||
Player player = event.getThief();
|
||||
if (!players.contains(player)) return;
|
||||
ScoreboardTeam team = getTeam(player);
|
||||
player.getInventory().clear();
|
||||
addScore(team, 1);
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
int getScore(ScoreboardTeam team) {
|
||||
if (team == redTeam) {
|
||||
return redScore;
|
||||
} else if (team == blueTeam) {
|
||||
return blueScore;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onPlayerStealBrick(PlayerStealBrickEvent event) {
|
||||
Player player = event.getThief();
|
||||
|
@ -459,14 +524,6 @@ public class CTB implements Minigame {
|
|||
Player tagger = event.getTagger();
|
||||
if (this.state != GameState.STARTED) return;
|
||||
if (!players.contains(tagged) || !players.contains(tagger)) return;
|
||||
if (playerStateMap.get(tagged) == CtbData.PlayerState.Stealing) {
|
||||
ScoreboardTeam team = getTeam(tagged);
|
||||
if (team == redTeam) {
|
||||
placeBrick(tagged.getLocation(), blueTeam);
|
||||
} else if (team == blueTeam) {
|
||||
placeBrick(tagged.getLocation(), redTeam);
|
||||
}
|
||||
}
|
||||
taggedPlayerHashMap.putIfAbsent(tagger, tagged);
|
||||
CustomPlayer cTagged = new CustomPlayer(tagged);
|
||||
CustomPlayer cTagger = new CustomPlayer(tagger);
|
||||
|
@ -479,19 +536,34 @@ public class CTB implements Minigame {
|
|||
tagger.addPassenger(armorStandEntity);
|
||||
armorStandEntity.addPassenger(tagged);
|
||||
new BukkitRunnable() {
|
||||
private int seconds = 0;
|
||||
private final CustomPlayer cTagged = new CustomPlayer(tagged);
|
||||
private final CustomPlayer cTagger = new CustomPlayer(tagger);
|
||||
private int seconds = 1;
|
||||
|
||||
@Override
|
||||
public void run() {
|
||||
if (playerStateMap.get(tagger) != CtbData.PlayerState.Tagging) this.cancel();
|
||||
if (seconds > tagTime) {
|
||||
tagger.sendMessage("out of time");
|
||||
cTagger.sendMessage(messages.getString("system.player.tag.notime.notify").replace("%player%", tagged.getName()));
|
||||
cTagged.sendMessage(messages.getString("system.player.tag.notime.info").replace("%player%", tagger.getName()));
|
||||
playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Invulnerable);
|
||||
playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Invulnerable);
|
||||
for (Entity entity : tagger.getPassengers()) {
|
||||
if (entity instanceof ArmorStand) {
|
||||
entity.remove();
|
||||
}
|
||||
}
|
||||
this.cancel();
|
||||
} else {
|
||||
tagger.sendMessage(String.valueOf(tagTime));
|
||||
seconds++;
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(SGM.getInstance(), 0, 20L);
|
||||
}
|
||||
|
||||
|
||||
//TODO MAKE LEVEL CREATE TP U TO RIGHT PLACE
|
||||
|
||||
@EventHandler
|
||||
void onPlayerFreedom(PlayerFreedFromJailEvent event) {
|
||||
Player tagged = event.getTagged();
|
||||
|
@ -529,13 +601,25 @@ public class CTB implements Minigame {
|
|||
if (teamMember.player() == cPlayer.player()) continue;
|
||||
teamMember.sendMessage(LegacyComponentSerializer.legacyAmpersand().serialize(event.getMessage()));
|
||||
}
|
||||
|
||||
new BukkitRunnable() {
|
||||
private int seconds = 1;
|
||||
@Override
|
||||
public void run() {
|
||||
if (playerStateMap.get(player) != CtbData.PlayerState.Jailed) this.cancel();
|
||||
if (seconds > jailTime) {
|
||||
jailbreakPlayer(player);
|
||||
} else {
|
||||
seconds++;
|
||||
}
|
||||
}
|
||||
}.runTaskTimer(SGM.getInstance(), 0, 20L);
|
||||
|
||||
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void handleEntityDamage(EntityDamageByEntityEvent event) {
|
||||
if (this.state != GameState.STARTED) return;
|
||||
// if (this.state != GameState.STARTED) return;
|
||||
Entity eventEntity = event.getEntity();
|
||||
Entity eventDamager = event.getDamager();
|
||||
|
||||
|
@ -543,8 +627,10 @@ public class CTB implements Minigame {
|
|||
if (!players.contains(interacted) || !players.contains(interacter)) return;
|
||||
// if (getTerritory(interacted) != getTerritory(interacter)) return;
|
||||
|
||||
if (this.state == GameState.STARTED) {
|
||||
PlayerGameInteractionEvent interactionEvent = new PlayerGameInteractionEvent(interacted, interacter);
|
||||
Bukkit.getServer().getPluginManager().callEvent(interactionEvent);
|
||||
}
|
||||
|
||||
event.setCancelled(true);
|
||||
// if (interactionEvent.isCancelled()) {
|
||||
|
@ -552,6 +638,21 @@ public class CTB implements Minigame {
|
|||
// }
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void handlePlayerDamage(EntityDamageEvent event) {
|
||||
if (this.state != GameState.STARTED && this.state != GameState.READY) return;
|
||||
Entity entity = event.getEntity();
|
||||
if (!(entity instanceof Player gamePlayer)) return;
|
||||
if (!players.contains(gamePlayer)) return;
|
||||
if (this.state == GameState.READY) {
|
||||
event.setCancelled(true);
|
||||
} else if (this.state == GameState.STARTED) {
|
||||
if (playerStateMap.get(gamePlayer) == CtbData.PlayerState.Tagged) {
|
||||
event.setCancelled(true);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@EventHandler
|
||||
void onPlayerFree(PlayerGameInteractionEvent event) {
|
||||
Player interacted = event.getInteracted();
|
||||
|
@ -587,11 +688,27 @@ public class CTB implements Minigame {
|
|||
event.setCancelled(true);
|
||||
|
||||
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.Free && playerStateMap.get(interacted) != CtbData.PlayerState.Stealing)
|
||||
return;
|
||||
if (playerStateMap.get(interacted) == CtbData.PlayerState.Stealing) {
|
||||
ScoreboardTeam team = getTeam(interacted);
|
||||
if (team == redTeam) {
|
||||
if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) {
|
||||
interacted.getInventory().clear();
|
||||
placeBrick(interacted.getLocation(), blueTeam);
|
||||
}
|
||||
} else if (team == blueTeam) {
|
||||
if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) {
|
||||
interacted.getInventory().clear();
|
||||
placeBrick(interacted.getLocation(), redTeam);
|
||||
}
|
||||
}
|
||||
}
|
||||
playerStateMap.replace(interacted, CtbData.PlayerState.Tagged);
|
||||
playerStateMap.replace(interacter, CtbData.PlayerState.Free, CtbData.PlayerState.Tagging);
|
||||
PlayerTaggedEvent taggedEvent = new PlayerTaggedEvent(interacted, interacter);
|
||||
|
@ -620,7 +737,7 @@ public class CTB implements Minigame {
|
|||
if (territory == CtbData.Territory.Blue && taggerTeam == blueTeam) return;
|
||||
if (territory == CtbData.Territory.Red && taggerTeam == redTeam) return;
|
||||
if (playerStateMap.get(brickTaker) != CtbData.PlayerState.Free) return;
|
||||
if (brickMaterial != null) return;
|
||||
if (brickMaterial == null) return;
|
||||
playerStateMap.replace(brickTaker, CtbData.PlayerState.Free, CtbData.PlayerState.Stealing);
|
||||
EntityEquipment playerEquipment = event.getPlayer().getEquipment();
|
||||
playerEquipment.setHelmet(new ItemStack(brickMaterial));
|
||||
|
@ -640,6 +757,9 @@ public class CTB implements Minigame {
|
|||
} else if (team == blueTeam) {
|
||||
player.teleport(redJail);
|
||||
}
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
public void freePlayerFromJail(Player player) {
|
||||
|
@ -704,8 +824,8 @@ public class CTB implements Minigame {
|
|||
brickSpawnLoc = brickSpawnLoc.clone().add(0.5, 0, 0.5);
|
||||
Entity brickEntity = gameWorld.spawnEntity(brickSpawnLoc, EntityType.ARMOR_STAND);
|
||||
ArmorStand armorStand = (ArmorStand) brickEntity;
|
||||
armorStand.setInvisible(true);
|
||||
EntityEquipment armorEquipment = armorStand.getEquipment();
|
||||
// TODO: make sure the children cannot uneqip the wool :sob:
|
||||
if (team.equals(redTeam)) {
|
||||
armorEquipment.setHelmet(new ItemStack(Material.RED_WOOL));
|
||||
} else if (team.equals(blueTeam)) {
|
||||
|
|
|
@ -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>ʏᴏᴜ ᴀʀᴇ ᴄᴜʀʀᴇɴᴛʟʏ ᴛᴀɢɢᴇᴅ!"),
|
||||
|
|
|
@ -0,0 +1,57 @@
|
|||
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 xyz.twovb.sgm.games.impl.capturethebrick.CTB;
|
||||
import xyz.twovb.toolbox.utils.ChatUtils;
|
||||
|
||||
public class PlayerCaptureBrickEvent extends Event implements Cancellable {
|
||||
private static final HandlerList HANDLER_LIST = new HandlerList();
|
||||
private final Player thief;
|
||||
private boolean isCancelled;
|
||||
|
||||
private String message;
|
||||
|
||||
public PlayerCaptureBrickEvent(Player thief) {
|
||||
this.thief = thief;
|
||||
this.isCancelled = false;
|
||||
this.message = CTB.getMessages().getString("system.player.brick.steal.announce");
|
||||
}
|
||||
|
||||
public static HandlerList getHandlerList() {
|
||||
return HANDLER_LIST;
|
||||
}
|
||||
|
||||
public Player getThief() {
|
||||
return this.thief;
|
||||
}
|
||||
|
||||
public String getMessage() {
|
||||
return message;
|
||||
}
|
||||
|
||||
public void setMessage(String 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;
|
||||
}
|
||||
}
|
|
@ -51,7 +51,7 @@ public class TeamGui {
|
|||
public void pickTeam(InventoryClickEvent event) {
|
||||
Player player = (Player) event.getWhoClicked();
|
||||
ItemStack clickedItem = event.getCurrentItem();
|
||||
CTB game = (CTB) SGM.getInstance().getGameManager().findGame(player);
|
||||
CTB game = (CTB) SGM.getInstance().getGameManager().findGame(target);
|
||||
if (clickedItem.getType().equals(Material.RED_WOOL)) {
|
||||
game.addPlayerToTeam(target, CtbData.Teams.Red);
|
||||
game.sendMessageToAllPlayers(target.getName() + " RED");
|
||||
|
|
|
@ -52,6 +52,13 @@ public class LevelManager {
|
|||
case MAP -> new WorldCreator(mapPath + worldName, new NamespacedKey(SGM.getInstance(), key));
|
||||
};
|
||||
World world = wc.createWorld();
|
||||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
||||
world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
||||
world.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
world.setGameRule(GameRule.DO_MOB_LOOT, false);
|
||||
if (world != null) {
|
||||
SGM.getInstance().getCLogger().log("Loaded world: " + worldName);
|
||||
} else {
|
||||
|
@ -187,6 +194,10 @@ public class LevelManager {
|
|||
world.setGameRule(GameRule.KEEP_INVENTORY, true);
|
||||
world.setGameRule(GameRule.DO_DAYLIGHT_CYCLE, false);
|
||||
world.setGameRule(GameRule.DO_WEATHER_CYCLE, false);
|
||||
world.setGameRule(GameRule.RANDOM_TICK_SPEED, 0);
|
||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
world.setGameRule(GameRule.DO_MOB_SPAWNING, false);
|
||||
world.setGameRule(GameRule.DO_MOB_LOOT, false);
|
||||
world.setTime(1000);
|
||||
genDataFile(level, name, game.toLowerCase());
|
||||
return LevelResult.SUCCESS;
|
||||
|
|
|
@ -11,14 +11,19 @@ system:
|
|||
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."
|
||||
jailbreak:
|
||||
notify: "&7It's time for Jailbreak™! You have been released and you must head back to Neutral before you can do anything."
|
||||
tag:
|
||||
notime:
|
||||
notify: "&7You have run out of time to bring %player% to Jail! You must head back to Neutral before you can do anything."
|
||||
info: "&7%player% has run out of time to take you to Jail! You have been released and you must head back to Neutral before you can do anything."
|
||||
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."
|
||||
released:
|
||||
notify: "&7You have released %player%! You must head back to Neutral before you can do anything."
|
||||
notify: "&7You have released %player%"
|
||||
info: "&7%player% let you free! You must head back to Neutral before you can do anything."
|
||||
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™!"
|
||||
announce: "&7%player% has captured a brick! %score%"
|
||||
announce: "&7%player% has captured a brick!"
|
|
@ -1,7 +1,8 @@
|
|||
mapInfo:
|
||||
brickCount: 2
|
||||
territory: 1
|
||||
boundary: 3
|
||||
tagTime: 25
|
||||
jailTime: 25
|
||||
spawn: 0,0,0
|
||||
teams:
|
||||
red:
|
||||
|
@ -10,13 +11,9 @@ teams:
|
|||
- 0,0,0
|
||||
playerSpawn: 0,0,0
|
||||
jail: 0,0,0
|
||||
tagTime: 25
|
||||
jailTime: 25
|
||||
blue:
|
||||
brickSpawns:
|
||||
- 0,0,0
|
||||
- 0,0,0
|
||||
playerSpawn: 0,0,0
|
||||
jail: 0,0,0
|
||||
tagTime: 25
|
||||
jailTime: 25
|
Loading…
Reference in New Issue
Block a user