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

View File

@ -81,6 +81,39 @@ public class GameCommand {
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")
@Permission("sgm.games.addplayer")
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) {
try {
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) {
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.enums.CollisionRule;
import org.bukkit.*;
import org.bukkit.attribute.Attribute;
import org.bukkit.block.Block;
import org.bukkit.command.CommandSender;
import org.bukkit.configuration.ConfigurationSection;
@ -279,6 +280,7 @@ public class CTB implements Minigame {
HandlerList.unregisterAll(this);
for (Player player : gameWorld.getPlayers()) {
player.teleport(Bukkit.getServer().getWorlds().get(0).getSpawnLocation());
player.getInventory().clear();
}
Bukkit.unloadWorld(gameWorld, false);
if (teamManager != null) {
@ -306,6 +308,7 @@ public class CTB implements Minigame {
sb.removePlayer(player);
removePlayerFromTeams(player);
player.setRespawnLocation(Bukkit.getWorlds().get(0).getSpawnLocation());
player.getInventory().clear();
players.remove(player);
}
@ -362,7 +365,7 @@ public class CTB implements Minigame {
private void releasePlayer(Player tagged, Player tagger) {
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 cTagger = new CustomPlayer(tagger);
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();
if (!players.contains(player)) return;
ScoreboardTeam team = getTeam(player);
player.getInventory().clear();
addScore(team, 1);
}
@ -425,6 +427,8 @@ public class CTB implements Minigame {
if (!players.contains(player)) return;
if (this.state != GameState.STARTED) return;
if (playerStateMap.get(player) != CtbData.PlayerState.Stealing) return;
EntityEquipment entityEquipment = player.getEquipment();
entityEquipment.setHelmet(new ItemStack(Material.AIR));
player.sendMessage(event.getMessage());
}
@ -740,6 +744,8 @@ public class CTB implements Minigame {
CtbData.PlayerState playerState = playerStateMap.get(player);
playerStateMap.replace(player, playerState, CtbData.PlayerState.Jailed);
PlayerJailedEvent jailedEvent = new PlayerJailedEvent(player);
player.setFireTicks(0);
player.setHealth(Objects.requireNonNull(player.getAttribute(Attribute.GENERIC_MAX_HEALTH)).getValue());
jailedEvent.callEvent();
ScoreboardTeam team = getTeam(player);
// SGM.getInstance().getCLogger().log(team.name());

View File

@ -17,8 +17,8 @@ system:
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."
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 %seconds% seconds to take them to Jail! Crouch if you would like to set them free."
released:
notify: "&7You have released %player%"
info: "&7%player% let you free! You must head back to Neutral before you can do anything."