leave and stop commands
Some checks are pending
Build plugin / build (push) Waiting to run

This commit is contained in:
2vb 2024-07-10 10:23:38 -07:00
parent c9c27d788e
commit be36204315
5 changed files with 51 additions and 5 deletions

View File

@ -18,6 +18,7 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.entity.EntityDamageByEntityEvent; import org.bukkit.event.entity.EntityDamageByEntityEvent;
import org.bukkit.event.entity.FoodLevelChangeEvent;
import org.bukkit.plugin.java.JavaPlugin; import org.bukkit.plugin.java.JavaPlugin;
import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler; import xyz.twovb.sgm.commands.handlers.InvalidArgsHandler;
import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler; import xyz.twovb.sgm.commands.handlers.NoPermissionsHandler;
@ -85,6 +86,11 @@ public final class SGM extends JavaPlugin implements Listener {
event.setCancelled(true); event.setCancelled(true);
} }
@EventHandler
public void onFoodLose(FoodLevelChangeEvent event) {
event.setCancelled(true);
}
private void loadScoreboard() { private void loadScoreboard() {
try { try {
scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(this); scoreboardLibrary = ScoreboardLibrary.loadScoreboardLibrary(this);

View File

@ -81,6 +81,39 @@ public class GameCommand {
new JoinGameGui().getGui().show(player); new JoinGameGui().getGui().show(player);
} }
@Execute(name = "leave")
void leave(@Context Player player) {
Minigame game = SGM.getInstance().getGameManager().findGame(player);
if (game == null) {
CustomPlayer cPlayer = new CustomPlayer(player);
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
} else {
game.removePlayer(player);
}
}
@Execute(name = "stop")
void stop(@Context Player player) {
Minigame game = SGM.getInstance().getGameManager().findGame(player);
if (game == null) {
CustomPlayer cPlayer = new CustomPlayer(player);
cPlayer.sendMessage(SGM.getInstance().getMessages().getString("sgm.game.not-found"));
} else {
game.stop();
}
}
@Execute(name = "forcestop")
@Permission("sgm.games.forcestop")
void endGame(@Context CommandSender sender, @Arg("id") String id) {
Minigame game = SGM.getInstance().getGameManager().findGame(UUID.fromString(id));
if (game == null) {
sender.sendMessage(ChatUtils.translate(SGM.getInstance().getMessages().getString("sgm.game.not-found")));
} else {
game.stop();
}
}
@Execute(name = "addplayer") @Execute(name = "addplayer")
@Permission("sgm.games.addplayer") @Permission("sgm.games.addplayer")
void testjoin(@Context CommandSender sender, @Arg("player") Player target, @Arg("id") String id) { void testjoin(@Context CommandSender sender, @Arg("player") Player target, @Arg("id") String id) {

View File

@ -73,8 +73,9 @@ public class LevelCommand {
void export(@Context CommandSender sender, @Arg("name") String name) { void export(@Context CommandSender sender, @Arg("name") String name) {
try { try {
SGM.getInstance().getLevelManager().exportLevel(name); SGM.getInstance().getLevelManager().exportLevel(name);
sender.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.level.export.done"), sender).replace("%level%", name)));
} catch (IOException e) { } catch (IOException e) {
SGM.getInstance().getCLogger().error(e); sender.sendMessage(ChatUtils.translate(PlaceholderManager.setPlaceholders(SGM.getInstance().getMessages().getString("sgm.level.not-found"), sender)));
} }
} }

View File

@ -21,6 +21,7 @@ import net.megavex.scoreboardlibrary.api.team.TeamDisplay;
import net.megavex.scoreboardlibrary.api.team.TeamManager; import net.megavex.scoreboardlibrary.api.team.TeamManager;
import net.megavex.scoreboardlibrary.api.team.enums.CollisionRule; import net.megavex.scoreboardlibrary.api.team.enums.CollisionRule;
import org.bukkit.*; import org.bukkit.*;
import org.bukkit.attribute.Attribute;
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;
@ -279,6 +280,7 @@ public class CTB implements Minigame {
HandlerList.unregisterAll(this); HandlerList.unregisterAll(this);
for (Player player : gameWorld.getPlayers()) { for (Player player : gameWorld.getPlayers()) {
player.teleport(Bukkit.getServer().getWorlds().get(0).getSpawnLocation()); player.teleport(Bukkit.getServer().getWorlds().get(0).getSpawnLocation());
player.getInventory().clear();
} }
Bukkit.unloadWorld(gameWorld, false); Bukkit.unloadWorld(gameWorld, false);
if (teamManager != null) { if (teamManager != null) {
@ -306,6 +308,7 @@ public class CTB implements Minigame {
sb.removePlayer(player); sb.removePlayer(player);
removePlayerFromTeams(player); removePlayerFromTeams(player);
player.setRespawnLocation(Bukkit.getWorlds().get(0).getSpawnLocation()); player.setRespawnLocation(Bukkit.getWorlds().get(0).getSpawnLocation());
player.getInventory().clear();
players.remove(player); players.remove(player);
} }
@ -362,7 +365,7 @@ public class CTB implements Minigame {
private void releasePlayer(Player tagged, Player tagger) { private void releasePlayer(Player tagged, Player tagger) {
playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Free); playerStateMap.replace(tagger, CtbData.PlayerState.Tagging, CtbData.PlayerState.Free);
playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Invulnerable); playerStateMap.replace(tagged, CtbData.PlayerState.Tagged, CtbData.PlayerState.Free);
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.released.info").replace("%player%", tagger.getName())); cTagged.sendMessage(messages.getString("system.player.released.info").replace("%player%", tagger.getName()));
@ -398,7 +401,6 @@ public class CTB implements Minigame {
Player player = event.getThief(); Player player = event.getThief();
if (!players.contains(player)) return; if (!players.contains(player)) return;
ScoreboardTeam team = getTeam(player); ScoreboardTeam team = getTeam(player);
player.getInventory().clear();
addScore(team, 1); addScore(team, 1);
} }
@ -425,6 +427,8 @@ 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());
} }
@ -740,6 +744,8 @@ public class CTB implements Minigame {
CtbData.PlayerState playerState = playerStateMap.get(player); CtbData.PlayerState playerState = playerStateMap.get(player);
playerStateMap.replace(player, playerState, CtbData.PlayerState.Jailed); playerStateMap.replace(player, playerState, CtbData.PlayerState.Jailed);
PlayerJailedEvent jailedEvent = new PlayerJailedEvent(player); PlayerJailedEvent jailedEvent = new PlayerJailedEvent(player);
player.setFireTicks(0);
player.setHealth(Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getValue());
jailedEvent.callEvent(); jailedEvent.callEvent();
ScoreboardTeam team = getTeam(player); ScoreboardTeam team = getTeam(player);
// SGM.getInstance().getCLogger().log(team.name()); // SGM.getInstance().getCLogger().log(team.name());

View File

@ -17,8 +17,8 @@ system:
notime: notime:
notify: "&7You have run out of time to bring %player% to Jail! You must head back to Neutral before you can do anything." 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." 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!" notify: "&7You have been tagged! %player% now has %seconds% 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 %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! You must head back to Neutral before you can do anything."