This commit is contained in:
parent
f54dcbcfdf
commit
b393f8fde2
|
@ -50,22 +50,30 @@ public class GameCommand {
|
||||||
@Permission("sgm.games.start")
|
@Permission("sgm.games.start")
|
||||||
void start(@Context Player player) {
|
void start(@Context Player player) {
|
||||||
Minigame game = SGM.getInstance().getGameManager().findGame(player);
|
Minigame game = SGM.getInstance().getGameManager().findGame(player);
|
||||||
if (game == null) {
|
|
||||||
CustomPlayer cPlayer = new CustomPlayer(player);
|
CustomPlayer cPlayer = new CustomPlayer(player);
|
||||||
|
if (game == null) {
|
||||||
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
|
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
|
||||||
} else {
|
} else {
|
||||||
|
if (game.getState() == Minigame.GameState.READY) {
|
||||||
game.start(player);
|
game.start(player);
|
||||||
|
} else {
|
||||||
|
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.cant-start"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Execute(name = "team")
|
@Execute(name = "team")
|
||||||
void teamJoin(@Context Player player) {
|
void teamJoin(@Context Player player) {
|
||||||
Minigame game = SGM.getInstance().getGameManager().findGame(player);
|
Minigame game = SGM.getInstance().getGameManager().findGame(player);
|
||||||
if (game == null) {
|
|
||||||
CustomPlayer cPlayer = new CustomPlayer(player);
|
CustomPlayer cPlayer = new CustomPlayer(player);
|
||||||
|
if (game == null) {
|
||||||
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
|
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
|
||||||
} else {
|
} else {
|
||||||
|
if (game.getState() == Minigame.GameState.READY) {
|
||||||
new TeamGui(player).getGui().show(player);
|
new TeamGui(player).getGui().show(player);
|
||||||
|
} else {
|
||||||
|
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.started"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -152,14 +152,39 @@ public class CTB implements Minigame {
|
||||||
}
|
}
|
||||||
|
|
||||||
private String getBrickCount(ScoreboardTeam team) {
|
private String getBrickCount(ScoreboardTeam team) {
|
||||||
String icon = "\uD83D\uDDC3";
|
String icon = "\uD83D\uDDC3"; // Full colored icon
|
||||||
StringBuilder builder = new StringBuilder();
|
StringBuilder builder = new StringBuilder();
|
||||||
|
int score = getScore(team); // Get the score for the specified team
|
||||||
|
|
||||||
|
String fullIcon = null;
|
||||||
|
if (team == redTeam) {
|
||||||
|
fullIcon = "<red><bold>" + icon;
|
||||||
|
} else if (team == blueTeam) {
|
||||||
|
fullIcon = "<blue><bold>" + icon;
|
||||||
|
}
|
||||||
|
|
||||||
|
String grayIcon = "<gray><bold>" + icon;
|
||||||
|
|
||||||
for (int i = 1; i <= this.bricks; i++) {
|
for (int i = 1; i <= this.bricks; i++) {
|
||||||
builder.append(icon + " ");
|
if (i <= score) {
|
||||||
|
builder.append(fullIcon).append(" ");
|
||||||
|
} else {
|
||||||
|
builder.append(grayIcon).append(" ");
|
||||||
}
|
}
|
||||||
return builder.toString();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return builder.toString().trim(); // trim() removes the trailing space
|
||||||
|
}
|
||||||
|
|
||||||
|
// private String getBrickCount(ScoreboardTeam team) {
|
||||||
|
// String icon = "\uD83D\uDDC3";
|
||||||
|
// StringBuilder builder = new StringBuilder();
|
||||||
|
// for (int i = 1; i <= this.bricks; i++) {
|
||||||
|
// builder.append(icon + " ");
|
||||||
|
// }
|
||||||
|
// return builder.toString();
|
||||||
|
// }
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onTick() {
|
public void onTick() {
|
||||||
if (players.isEmpty()) {
|
if (players.isEmpty()) {
|
||||||
|
@ -214,11 +239,11 @@ public class CTB implements Minigame {
|
||||||
public void start(CommandSender sender) {
|
public void start(CommandSender sender) {
|
||||||
if (checkStart(sender)) {
|
if (checkStart(sender)) {
|
||||||
for (Player player : players) {
|
for (Player player : players) {
|
||||||
EntityEquipment playerEquipment = player.getEquipment();
|
|
||||||
player.getInventory().clear();
|
player.getInventory().clear();
|
||||||
sb.addPlayer(player);
|
sb.addPlayer(player);
|
||||||
player.setGameMode(GameMode.ADVENTURE);
|
player.setGameMode(GameMode.ADVENTURE);
|
||||||
playerStateMap.put(player, CtbData.PlayerState.Free);
|
playerStateMap.put(player, CtbData.PlayerState.Free);
|
||||||
|
player.setHealth(Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getValue());
|
||||||
for (ScoreboardTeam teams : teamManager.teams()) {
|
for (ScoreboardTeam teams : teamManager.teams()) {
|
||||||
if (teams == redTeam && teams.defaultDisplay().entries().contains(player.getName())) {
|
if (teams == redTeam && teams.defaultDisplay().entries().contains(player.getName())) {
|
||||||
player.teleport(this.redSpawnLocation);
|
player.teleport(this.redSpawnLocation);
|
||||||
|
@ -235,7 +260,7 @@ public class CTB implements Minigame {
|
||||||
this.taskId = task.getTaskId();
|
this.taskId = task.getTaskId();
|
||||||
|
|
||||||
state = GameState.STARTED;
|
state = GameState.STARTED;
|
||||||
sendMessageToAllPlayers("The game has started!");
|
sendMessageToAllPlayers(SGM.getInstance().getMessages().getString("sgm.game.start"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -402,6 +427,8 @@ public class CTB implements Minigame {
|
||||||
if (!players.contains(player)) return;
|
if (!players.contains(player)) return;
|
||||||
ScoreboardTeam team = getTeam(player);
|
ScoreboardTeam team = getTeam(player);
|
||||||
addScore(team, 1);
|
addScore(team, 1);
|
||||||
|
EntityEquipment entityEquipment = player.getEquipment();
|
||||||
|
entityEquipment.setHelmet(new ItemStack(Material.AIR));
|
||||||
}
|
}
|
||||||
|
|
||||||
void addScore(ScoreboardTeam team, int scoreToAdd) {
|
void addScore(ScoreboardTeam team, int scoreToAdd) {
|
||||||
|
@ -427,8 +454,6 @@ public class CTB implements Minigame {
|
||||||
if (!players.contains(player)) return;
|
if (!players.contains(player)) return;
|
||||||
if (this.state != GameState.STARTED) return;
|
if (this.state != GameState.STARTED) return;
|
||||||
if (playerStateMap.get(player) != CtbData.PlayerState.Stealing) return;
|
if (playerStateMap.get(player) != CtbData.PlayerState.Stealing) return;
|
||||||
EntityEquipment entityEquipment = player.getEquipment();
|
|
||||||
entityEquipment.setHelmet(new ItemStack(Material.AIR));
|
|
||||||
player.sendMessage(event.getMessage());
|
player.sendMessage(event.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -517,11 +542,11 @@ public class CTB implements Minigame {
|
||||||
Player tagger = event.getTagger();
|
Player tagger = event.getTagger();
|
||||||
if (this.state != GameState.STARTED) return;
|
if (this.state != GameState.STARTED) return;
|
||||||
if (!players.contains(tagged) || !players.contains(tagger)) return;
|
if (!players.contains(tagged) || !players.contains(tagger)) return;
|
||||||
taggedPlayerHashMap.putIfAbsent(tagger, tagged);
|
taggedPlayerHashMap.put(tagger, tagged);
|
||||||
CustomPlayer cTagged = new CustomPlayer(tagged);
|
CustomPlayer cTagged = new CustomPlayer(tagged);
|
||||||
CustomPlayer cTagger = new CustomPlayer(tagger);
|
CustomPlayer cTagger = new CustomPlayer(tagger);
|
||||||
cTagged.sendMessage(messages.getString("system.player.tag.notify").replace("%player%", tagger.getName()));
|
cTagged.sendMessage(messages.getString("system.player.tag.notify").replace("%player%", tagger.getName()).replace("%seconds%", String.valueOf(this.tagTime)));
|
||||||
cTagger.sendMessage(messages.getString("system.player.tag.info").replace("%player%", tagged.getName()));
|
cTagger.sendMessage(messages.getString("system.player.tag.info").replace("%player%", tagged.getName()).replace("%seconds%", String.valueOf(this.tagTime)));
|
||||||
Entity seatEntity = gameWorld.spawnEntity(tagger.getLocation(), EntityType.ARMOR_STAND);
|
Entity seatEntity = gameWorld.spawnEntity(tagger.getLocation(), EntityType.ARMOR_STAND);
|
||||||
ArmorStand armorStandEntity = (ArmorStand) seatEntity;
|
ArmorStand armorStandEntity = (ArmorStand) seatEntity;
|
||||||
armorStandEntity.setInvisible(true);
|
armorStandEntity.setInvisible(true);
|
||||||
|
@ -694,13 +719,13 @@ public class CTB implements Minigame {
|
||||||
if (team == redTeam) {
|
if (team == redTeam) {
|
||||||
if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) {
|
if (interactedEquipment.getHelmet().getType().equals(Material.BLUE_WOOL)) {
|
||||||
interactedEquipment.setHelmet(new ItemStack(Material.AIR));
|
interactedEquipment.setHelmet(new ItemStack(Material.AIR));
|
||||||
placeBrick(interacted.getLocation(), blueTeam);
|
|
||||||
}
|
}
|
||||||
|
placeBrick(interacted.getLocation(), blueTeam);
|
||||||
} else if (team == blueTeam) {
|
} else if (team == blueTeam) {
|
||||||
if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) {
|
if (interactedEquipment.getHelmet().getType().equals(Material.RED_WOOL)) {
|
||||||
interactedEquipment.setHelmet(new ItemStack(Material.AIR));
|
interactedEquipment.setHelmet(new ItemStack(Material.AIR));
|
||||||
placeBrick(interacted.getLocation(), redTeam);
|
|
||||||
}
|
}
|
||||||
|
placeBrick(interacted.getLocation(), redTeam);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
playerStateMap.replace(interacted, CtbData.PlayerState.Tagged);
|
playerStateMap.replace(interacted, CtbData.PlayerState.Tagged);
|
||||||
|
@ -718,23 +743,19 @@ public class CTB implements Minigame {
|
||||||
Player brickTaker = event.getPlayer();
|
Player brickTaker = event.getPlayer();
|
||||||
if (!(rightClicked instanceof ArmorStand)) return;
|
if (!(rightClicked instanceof ArmorStand)) return;
|
||||||
if (!players.contains(brickTaker)) return;
|
if (!players.contains(brickTaker)) return;
|
||||||
EntityEquipment equipment = ((ArmorStand) rightClicked).getEquipment();
|
|
||||||
Material brickMaterial = null;
|
|
||||||
if (equipment.getHelmet().getType().equals(Material.RED_WOOL)) {
|
|
||||||
brickMaterial = Material.RED_WOOL;
|
|
||||||
} else if (equipment.getHelmet().getType().equals(Material.BLUE_WOOL)) {
|
|
||||||
brickMaterial = Material.BLUE_WOOL;
|
|
||||||
}
|
|
||||||
ScoreboardTeam taggerTeam = getTeam(brickTaker);
|
ScoreboardTeam taggerTeam = getTeam(brickTaker);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
CtbData.Territory territory = getTerritory(brickTaker);
|
CtbData.Territory territory = getTerritory(brickTaker);
|
||||||
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;
|
||||||
if (playerStateMap.get(brickTaker) != CtbData.PlayerState.Free) return;
|
if (playerStateMap.get(brickTaker) != CtbData.PlayerState.Free) return;
|
||||||
if (brickMaterial == null) return;
|
|
||||||
playerStateMap.replace(brickTaker, CtbData.PlayerState.Free, CtbData.PlayerState.Stealing);
|
playerStateMap.replace(brickTaker, CtbData.PlayerState.Free, CtbData.PlayerState.Stealing);
|
||||||
EntityEquipment playerEquipment = event.getPlayer().getEquipment();
|
EntityEquipment playerEquipment = brickTaker.getEquipment();
|
||||||
playerEquipment.setHelmet(new ItemStack(brickMaterial));
|
if (taggerTeam == redTeam) {
|
||||||
|
playerEquipment.setHelmet(new ItemStack(Material.BLUE_WOOL));
|
||||||
|
} else if (taggerTeam == blueTeam) {
|
||||||
|
playerEquipment.setHelmet(new ItemStack(Material.RED_WOOL));
|
||||||
|
}
|
||||||
PlayerStealBrickEvent playerStealBrickEvent = new PlayerStealBrickEvent(brickTaker);
|
PlayerStealBrickEvent playerStealBrickEvent = new PlayerStealBrickEvent(brickTaker);
|
||||||
playerStealBrickEvent.callEvent();
|
playerStealBrickEvent.callEvent();
|
||||||
rightClicked.remove();
|
rightClicked.remove();
|
||||||
|
|
|
@ -21,7 +21,7 @@ system:
|
||||||
info: "&7You have tagged %player%! You have %seconds% seconds to take them to Jail! Crouch if you would like to set them free."
|
info: "&7You have tagged %player%! You have %seconds% seconds to take them to Jail! Crouch if you would like to set them free."
|
||||||
released:
|
released:
|
||||||
notify: "&7You have released %player%"
|
notify: "&7You have released %player%"
|
||||||
info: "&7%player% let you free! You must head back to Neutral before you can do anything."
|
info: "&7%player% let you free!"
|
||||||
full: "&7You have returned to Neutral. You can now get back to the game!"
|
full: "&7You have returned to Neutral. You can now get back to the game!"
|
||||||
brick:
|
brick:
|
||||||
steal:
|
steal:
|
||||||
|
|
|
@ -14,8 +14,9 @@ sgm:
|
||||||
new: "&7A new %game% has started and can now be joined!"
|
new: "&7A new %game% has started and can now be joined!"
|
||||||
not-found: "&7Game couldn't be found!"
|
not-found: "&7Game couldn't be found!"
|
||||||
cant-start: "&7Game couldn't be started!"
|
cant-start: "&7Game couldn't be started!"
|
||||||
|
started: "&7Game has already started!"
|
||||||
cant-join: "&7Could not join this game!"
|
cant-join: "&7Could not join this game!"
|
||||||
started: "&7Game has started!"
|
start: "&7Game has started!"
|
||||||
win: "&7Congratulations to %winner% for winning!"
|
win: "&7Congratulations to %winner% for winning!"
|
||||||
level:
|
level:
|
||||||
new: "&7A level with the name %level% has been created."
|
new: "&7A level with the name %level% has been created."
|
||||||
|
|
Loading…
Reference in New Issue
Block a user