mirror of
https://github.com/SunNetservers/MiniGames.git
synced 2025-12-04 01:48:46 +01:00
Maintenance changes
Updates KnarLib Updates Spigot Updates code for message generation
This commit is contained in:
4
pom.xml
4
pom.xml
@@ -114,7 +114,7 @@
|
||||
<dependency>
|
||||
<groupId>org.spigotmc</groupId>
|
||||
<artifactId>spigot-api</artifactId>
|
||||
<version>1.21.4-R0.1-SNAPSHOT</version>
|
||||
<version>1.21.8-R0.1-SNAPSHOT</version>
|
||||
<scope>provided</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
@@ -138,7 +138,7 @@
|
||||
<dependency>
|
||||
<groupId>net.knarcraft</groupId>
|
||||
<artifactId>knarlib</artifactId>
|
||||
<version>1.2.7</version>
|
||||
<version>1.2.17</version>
|
||||
<scope>compile</scope>
|
||||
</dependency>
|
||||
<dependency>
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
package net.knarcraft.minigames;
|
||||
|
||||
import net.knarcraft.knargui.GUIListener;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.Translator;
|
||||
import net.knarcraft.knarlib.property.ColorConversion;
|
||||
@@ -108,7 +109,6 @@ public final class MiniGames extends JavaPlugin {
|
||||
private ArenaPlayerRegistry<ParkourArena> parkourArenaPlayerRegistry;
|
||||
private PlayerVisibilityManager playerVisibilityManager;
|
||||
private Translator translator;
|
||||
private StringFormatter stringFormatter;
|
||||
|
||||
/**
|
||||
* Gets an instance of this plugin
|
||||
@@ -202,15 +202,6 @@ public final class MiniGames extends JavaPlugin {
|
||||
return this.translator;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the string formatter to get formatted messages from
|
||||
*
|
||||
* @return <p>The string formatter</p>
|
||||
*/
|
||||
public StringFormatter getStringFormatter() {
|
||||
return this.stringFormatter;
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the current session of the given player
|
||||
*
|
||||
@@ -437,12 +428,13 @@ public final class MiniGames extends JavaPlugin {
|
||||
translator.registerMessageCategory(MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
translator.loadLanguages(this.getDataFolder(), "en",
|
||||
getConfig().getString("language", "en"));
|
||||
stringFormatter = new StringFormatter(this.getDescription().getName(), translator);
|
||||
StringFormatter stringFormatter = new StringFormatter(this.getDescription().getName(), translator);
|
||||
stringFormatter.setColorConversion(ColorConversion.RGB);
|
||||
stringFormatter.setNamePrefix("#546EED[&r&l");
|
||||
stringFormatter.setNameSuffix("#546EED]");
|
||||
stringFormatter.setErrorColor(ChatColor.RED);
|
||||
stringFormatter.setSuccessColor(ChatColor.GREEN);
|
||||
FormatBuilder.setStringFormatter(stringFormatter);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.arena;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.reward.RewardCondition;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
@@ -47,7 +47,7 @@ public abstract class AbstractArenaSession implements ArenaSession {
|
||||
// Make the player visible to everyone
|
||||
MiniGames.getInstance().getPlayerVisibilityManager().showPlayersFor(player);
|
||||
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(player, MiniGameMessage.SUCCESS_ARENA_QUIT);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_QUIT).success(player);
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -77,13 +77,12 @@ public abstract class AbstractArenaSession implements ArenaSession {
|
||||
case PERSONAL_BEST -> MiniGameMessage.RECORD_ACHIEVED_PERSONAL;
|
||||
default -> throw new IllegalStateException("Unexpected value: " + recordResult);
|
||||
};
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
String recordInfo = stringFormatter.replacePlaceholder(recordInfoMiniGameMessage, "{recordType}",
|
||||
recordType.name().toLowerCase().replace("_", " "));
|
||||
|
||||
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholders(
|
||||
MiniGameMessage.SUCCESS_RECORD_ACHIEVED, new String[]{"{gameMode}", "{recordInfo}"},
|
||||
new String[]{gameModeString, recordInfo}));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_RECORD_ACHIEVED).
|
||||
replace("{gameMode}", gameModeString).
|
||||
replace("{recordInfo}", recordInfoMiniGameMessage).
|
||||
replace("{recordType}", recordType.name().toLowerCase().replace("_", " ")).
|
||||
success(player);
|
||||
|
||||
// Reward the player
|
||||
rewardRecord(recordResult, recordType);
|
||||
|
||||
@@ -17,10 +17,10 @@ import java.util.logging.Level;
|
||||
/**
|
||||
* A group containing a list of arenas
|
||||
*
|
||||
* @param <K> <p>The type of arena stored</p>
|
||||
* @param <S> <p>The type of arena group stored in the given arena handler</p>
|
||||
* @param <ArenaType> <p>The type of arena stored</p>
|
||||
* @param <GroupType> <p>The type of arena group stored in the given arena handler</p>
|
||||
*/
|
||||
public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> implements ConfigurationSerializable {
|
||||
public abstract class ArenaGroup<ArenaType extends Arena, GroupType extends ArenaGroup<ArenaType, GroupType>> implements ConfigurationSerializable {
|
||||
|
||||
/**
|
||||
* The unique id for this group of arenas
|
||||
@@ -35,7 +35,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
/**
|
||||
* The arena handler used to convert uuids to arenas
|
||||
*/
|
||||
private final ArenaHandler<K, S> arenaHandler;
|
||||
private final ArenaHandler<ArenaType, GroupType> arenaHandler;
|
||||
|
||||
/**
|
||||
* The arenas in this group, ordered from stage 1 to stage n
|
||||
@@ -48,7 +48,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
* @param groupName <p>The name of this group</p>
|
||||
* @param arenaHandler <p>The arena handler used to convert uuids to arenas</p>
|
||||
*/
|
||||
protected ArenaGroup(@NotNull String groupName, @NotNull ArenaHandler<K, S> arenaHandler) {
|
||||
protected ArenaGroup(@NotNull String groupName, @NotNull ArenaHandler<ArenaType, GroupType> arenaHandler) {
|
||||
this.groupId = UUID.randomUUID();
|
||||
this.groupName = groupName;
|
||||
this.arenas = new ArrayList<>();
|
||||
@@ -64,7 +64,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
* @param arenaHandler <p>The arena handler used to convert uuids to arenas</p>
|
||||
*/
|
||||
protected ArenaGroup(@NotNull UUID groupId, @NotNull String groupName, @NotNull List<UUID> arenas,
|
||||
@NotNull ArenaHandler<K, S> arenaHandler) {
|
||||
@NotNull ArenaHandler<ArenaType, GroupType> arenaHandler) {
|
||||
this.groupId = groupId;
|
||||
this.groupName = groupName;
|
||||
this.arenas = new ArrayList<>(arenas);
|
||||
@@ -76,7 +76,8 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @return <p>The id of this group</p>
|
||||
*/
|
||||
public @NotNull UUID getGroupId() {
|
||||
@NotNull
|
||||
public UUID getGroupId() {
|
||||
return this.groupId;
|
||||
}
|
||||
|
||||
@@ -85,7 +86,8 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @return <p>The name of this group</p>
|
||||
*/
|
||||
public @NotNull String getGroupName() {
|
||||
@NotNull
|
||||
public String getGroupName() {
|
||||
return this.groupName;
|
||||
}
|
||||
|
||||
@@ -94,7 +96,8 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @return <p>The ids of the arenas in this group</p>
|
||||
*/
|
||||
public @NotNull List<UUID> getArenas() {
|
||||
@NotNull
|
||||
public List<UUID> getArenas() {
|
||||
return new ArrayList<>(arenas);
|
||||
}
|
||||
|
||||
@@ -103,7 +106,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @param arenaId <p>The id of the arena to remove</p>
|
||||
*/
|
||||
public void removeArena(UUID arenaId) {
|
||||
public void removeArena(@NotNull UUID arenaId) {
|
||||
this.arenas.remove(arenaId);
|
||||
}
|
||||
|
||||
@@ -112,7 +115,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @param arenaId <p>The arena to add to this group</p>
|
||||
*/
|
||||
public void addArena(UUID arenaId) {
|
||||
public void addArena(@NotNull UUID arenaId) {
|
||||
addArena(arenaId, this.arenas.size());
|
||||
}
|
||||
|
||||
@@ -122,7 +125,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
* @param arenaId <p>The arena to add to this group</p>
|
||||
* @param index <p>The index to put the arena in</p>
|
||||
*/
|
||||
public void addArena(UUID arenaId, int index) {
|
||||
public void addArena(@NotNull UUID arenaId, int index) {
|
||||
// Make sure we don't have duplicates
|
||||
if (!this.arenas.contains(arenaId)) {
|
||||
this.arenas.add(index, arenaId);
|
||||
@@ -134,7 +137,8 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
*
|
||||
* @return <p>The sanitized group name</p>
|
||||
*/
|
||||
public @NotNull String getGroupNameSanitized() {
|
||||
@NotNull
|
||||
public String getGroupNameSanitized() {
|
||||
return StringSanitizer.sanitizeArenaName(this.getGroupName());
|
||||
}
|
||||
|
||||
@@ -145,9 +149,9 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
* @param player <p>The player to check</p>
|
||||
* @return <p>True if the player has beaten all arenas, false otherwise</p>
|
||||
*/
|
||||
public boolean hasBeatenAll(ArenaGameMode gameMode, Player player) {
|
||||
public boolean hasBeatenAll(@NotNull ArenaGameMode gameMode, @NotNull Player player) {
|
||||
for (UUID anArenaId : this.getArenas()) {
|
||||
K arena = this.arenaHandler.getArena(anArenaId);
|
||||
ArenaType arena = this.arenaHandler.getArena(anArenaId);
|
||||
if (arena == null) {
|
||||
// The arena would only be null if the arena has been deleted, but not removed from this group
|
||||
MiniGames.log(Level.WARNING, "The dropper group " + this.getGroupName() +
|
||||
@@ -171,7 +175,8 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
* @return <p>True if the player is allowed to play the arena</p>
|
||||
* @throws IllegalArgumentException <p>If checking an arena not in this group</p>
|
||||
*/
|
||||
public boolean cannotPlay(ArenaGameMode gameMode, Player player, UUID arenaId) throws IllegalArgumentException {
|
||||
public boolean cannotPlay(@NotNull ArenaGameMode gameMode, @NotNull Player player,
|
||||
@NotNull UUID arenaId) throws IllegalArgumentException {
|
||||
if (!this.arenas.contains(arenaId)) {
|
||||
throw new IllegalArgumentException("Cannot check for playability for arena not in this group!");
|
||||
}
|
||||
@@ -182,7 +187,7 @@ public abstract class ArenaGroup<K extends Arena, S extends ArenaGroup<K, S>> im
|
||||
return false;
|
||||
}
|
||||
|
||||
K arena = this.arenaHandler.getArena(anArenaId);
|
||||
ArenaType arena = this.arenaHandler.getArena(anArenaId);
|
||||
if (arena == null) {
|
||||
// The arena would only be null if the arena has been deleted, but not removed from this group
|
||||
MiniGames.log(Level.WARNING, String.format("The dropper group %s contains the" +
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.AbstractArenaSession;
|
||||
import net.knarcraft.minigames.arena.PlayerEntryState;
|
||||
@@ -98,14 +98,12 @@ public class DropperArenaSession extends AbstractArenaSession {
|
||||
registerRecord();
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
// Mark the arena as cleared
|
||||
if (this.arena.getData().setCompleted(this.gameMode, this.player)) {
|
||||
stringFormatter.displaySuccessMessage(this.player, MiniGameMessage.SUCCESS_ARENA_FIRST_CLEAR);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_FIRST_CLEAR).success(this.player);
|
||||
RewardHelper.grantRewards(this.player, this.arena.getRewards(RewardCondition.FIRST_WIN));
|
||||
}
|
||||
stringFormatter.displaySuccessMessage(this.player, MiniGameMessage.SUCCESS_ARENA_WIN);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_WIN).success(this.player);
|
||||
RewardHelper.grantRewards(this.player, this.arena.getRewards(RewardCondition.WIN));
|
||||
|
||||
// Teleport the player out of the arena
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.AbstractArenaSession;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
@@ -112,14 +112,12 @@ public class ParkourArenaSession extends AbstractArenaSession {
|
||||
registerRecord();
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
// Mark the arena as cleared
|
||||
if (this.arena.getData().setCompleted(this.gameMode, this.player)) {
|
||||
stringFormatter.displaySuccessMessage(this.player, MiniGameMessage.SUCCESS_ARENA_FIRST_CLEAR);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_FIRST_CLEAR).success(this.player);
|
||||
RewardHelper.grantRewards(this.player, this.arena.getRewards(RewardCondition.FIRST_WIN));
|
||||
}
|
||||
stringFormatter.displaySuccessMessage(this.player, MiniGameMessage.SUCCESS_ARENA_WIN);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_WIN).success(this.player);
|
||||
RewardHelper.grantRewards(this.player, this.arena.getRewards(RewardCondition.WIN));
|
||||
|
||||
// Teleport the player out of the arena
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.reward;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.Bukkit;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -31,9 +31,8 @@ public class CommandReward implements Reward {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getGrantMessage() {
|
||||
return MiniGames.getInstance().getStringFormatter().replacePlaceholder(
|
||||
MiniGameMessage.SUCCESS_COMMAND_REWARDED, "{command}", command);
|
||||
public @NotNull FormatBuilder getGrantMessage() {
|
||||
return new FormatBuilder(MiniGameMessage.SUCCESS_COMMAND_REWARDED).replace("{command}", command);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.reward;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import net.knarcraft.minigames.manager.EconomyManager;
|
||||
@@ -38,9 +39,9 @@ public class EconomyReward implements Reward {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getGrantMessage() {
|
||||
return MiniGames.getInstance().getStringFormatter().replacePlaceholder(MiniGameMessage.SUCCESS_ECONOMY_REWARDED,
|
||||
"{currency}", EconomyManager.format(amount));
|
||||
public @NotNull FormatBuilder getGrantMessage() {
|
||||
return new FormatBuilder(MiniGameMessage.SUCCESS_ECONOMY_REWARDED).replace("{currency}",
|
||||
EconomyManager.format(amount));
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.reward;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.NamespacedKey;
|
||||
import org.bukkit.entity.Player;
|
||||
@@ -43,11 +43,11 @@ public class ItemReward implements Reward {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getGrantMessage() {
|
||||
public @NotNull FormatBuilder getGrantMessage() {
|
||||
NamespacedKey key = item.getType().getKeyOrNull();
|
||||
String name = key == null ? "Unnamed item" : key.getKey().replace("_", " ");
|
||||
return MiniGames.getInstance().getStringFormatter().replacePlaceholders(MiniGameMessage.SUCCESS_ITEM_REWARDED,
|
||||
new String[]{"{amount}", "{item}"}, new String[]{String.valueOf(item.getAmount()), name});
|
||||
return new FormatBuilder(MiniGameMessage.SUCCESS_ITEM_REWARDED).
|
||||
replace("{amount}", item.getAmount()).replace("{item}", name);
|
||||
}
|
||||
|
||||
@NotNull
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.reward;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import net.knarcraft.minigames.manager.PermissionManager;
|
||||
@@ -47,14 +48,13 @@ public class PermissionReward implements Reward {
|
||||
}
|
||||
|
||||
@Override
|
||||
public @NotNull String getGrantMessage() {
|
||||
public @NotNull FormatBuilder getGrantMessage() {
|
||||
if (world == null) {
|
||||
return MiniGames.getInstance().getStringFormatter().replacePlaceholder(
|
||||
MiniGameMessage.SUCCESS_PERMISSION_REWARDED, "{permission}", permission);
|
||||
return new FormatBuilder(MiniGameMessage.SUCCESS_PERMISSION_REWARDED).replace("{permission}",
|
||||
permission);
|
||||
} else {
|
||||
return MiniGames.getInstance().getStringFormatter().replacePlaceholders(
|
||||
MiniGameMessage.SUCCESS_PERMISSION_REWARDED_WORLD, new String[]{"{permission}", "{world}"},
|
||||
new String[]{permission, world.getName()});
|
||||
return new FormatBuilder(MiniGameMessage.SUCCESS_PERMISSION_REWARDED_WORLD).
|
||||
replace("{permission}", permission).replace("{world}", world.getName());
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.arena.reward;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import org.bukkit.configuration.serialization.ConfigurationSerializable;
|
||||
import org.bukkit.entity.Player;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
@@ -23,6 +24,6 @@ public interface Reward extends ConfigurationSerializable {
|
||||
* @return <p>The message to display when this reward is granted</p>
|
||||
*/
|
||||
@NotNull
|
||||
String getGrantMessage();
|
||||
FormatBuilder getGrantMessage();
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,107 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
import net.knarcraft.minigames.arena.ArenaGroup;
|
||||
import net.knarcraft.minigames.arena.ArenaHandler;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||
|
||||
/**
|
||||
* The command for swapping the order of two arenas in a group
|
||||
*/
|
||||
public abstract class ArenaGroupSwapCommand<ArenaType extends Arena, GroupType extends ArenaGroup<ArenaType, GroupType>> implements TabExecutor {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (arguments.length < 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ArenaHandler<ArenaType, GroupType> arenaHandler = getArenaHandler();
|
||||
|
||||
ArenaType arena1 = arenaHandler.getArena(arguments[0]);
|
||||
if (arena1 == null) {
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_1_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
ArenaType arena2 = arenaHandler.getArena(arguments[1]);
|
||||
if (arena2 == null) {
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_2_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
GroupType arena1Group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
GroupType arena2Group = arenaHandler.getGroup(arena2.getArenaId());
|
||||
if (arena1Group == null || !arena1Group.equals(arena2Group)) {
|
||||
new FormatBuilder(MiniGameMessage.ERROR_SWAP_DIFFERENT_GROUPS).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
arena1Group.swapArenas(arena1Group.getArenas().indexOf(arena1.getArenaId()),
|
||||
arena1Group.getArenas().indexOf(arena2.getArenaId()));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENAS_SWAPPED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
ArenaHandler<ArenaType, GroupType> arenaHandler = getArenaHandler();
|
||||
if (arguments.length == 1) {
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
for (ArenaType arena : arenaHandler.getArenasInAGroup()) {
|
||||
arenaNames.add(arena.getArenaName());
|
||||
}
|
||||
return filterMatchingContains(arenaNames, arguments[0]);
|
||||
} else if (arguments.length == 2) {
|
||||
return filterMatchingContains(getArenaNamesInSameGroup(arguments[0]), arguments[1]);
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
protected abstract ArenaHandler<ArenaType, GroupType> getArenaHandler();
|
||||
|
||||
/**
|
||||
* Gets the names of all arenas in the same group as the specified arena
|
||||
*
|
||||
* @param arenaName <p>The name of the specified arena</p>
|
||||
* @return <p>The names of the arenas in the same group</p>
|
||||
*/
|
||||
private List<String> getArenaNamesInSameGroup(String arenaName) {
|
||||
ArenaHandler<ArenaType, GroupType> arenaHandler = getArenaHandler();
|
||||
ArenaType arena1 = arenaHandler.getArena(arenaName);
|
||||
if (arena1 == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// Only display other arenas in the selected group
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
GroupType group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
if (group == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
for (UUID arenaId : group.getArenas()) {
|
||||
ArenaType arena = arenaHandler.getArena(arenaId);
|
||||
if (arena != null && arena.getArenaId() != arena1.getArenaId()) {
|
||||
arenaNames.add(arena.getArenaName());
|
||||
}
|
||||
}
|
||||
return arenaNames;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -1,7 +1,6 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
import net.knarcraft.minigames.arena.ArenaGroup;
|
||||
import net.knarcraft.minigames.arena.ArenaHandler;
|
||||
@@ -39,12 +38,10 @@ public abstract class GroupListCommand<
|
||||
* @param sender <p>The command sender to display the groups to</p>
|
||||
*/
|
||||
protected void displayExistingGroups(@NotNull K arenaHandler, @NotNull CommandSender sender) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
StringBuilder builder = new StringBuilder(stringFormatter.getUnFormattedMessage(
|
||||
MiniGameMessage.SUCCESS_GROUPS)).append("\n");
|
||||
FormatBuilder builder = new FormatBuilder(MiniGameMessage.SUCCESS_GROUPS).append("\n");
|
||||
arenaHandler.getAllGroups().stream().sorted().forEachOrdered((group) ->
|
||||
builder.append("- ").append(group.getGroupName()).append("\n"));
|
||||
stringFormatter.displaySuccessMessage(sender, builder.toString());
|
||||
builder.success(sender);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -57,16 +54,14 @@ public abstract class GroupListCommand<
|
||||
*/
|
||||
protected boolean displayOrderedArenaNames(@NotNull K arenaHandler, @NotNull CommandSender sender,
|
||||
@NotNull String groupName) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
M arenaGroup = arenaHandler.getGroup(groupName);
|
||||
if (arenaGroup == null) {
|
||||
stringFormatter.displayErrorMessage(sender, MiniGameMessage.ERROR_GROUP_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_GROUP_NOT_FOUND).error(sender);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Send a list of all stages (arenas in the group)
|
||||
StringBuilder builder = new StringBuilder(stringFormatter.replacePlaceholder(
|
||||
MiniGameMessage.SUCCESS_GROUP_STAGES, "{group}", groupName));
|
||||
FormatBuilder builder = new FormatBuilder(MiniGameMessage.SUCCESS_GROUP_STAGES).replace("{group}", groupName);
|
||||
int counter = 1;
|
||||
for (UUID arenaId : arenaGroup.getArenas()) {
|
||||
L arena = arenaHandler.getArena(arenaId);
|
||||
@@ -74,7 +69,7 @@ public abstract class GroupListCommand<
|
||||
builder.append("\n").append(counter++).append(". ").append(arena.getArenaName());
|
||||
}
|
||||
}
|
||||
stringFormatter.displaySuccessMessage(sender, builder.toString());
|
||||
builder.success(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaSession;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
@@ -22,15 +23,13 @@ public class LeaveArenaCommand implements TabExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] strings) {
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
ArenaSession existingSession = MiniGames.getInstance().getSession(player.getUniqueId());
|
||||
if (existingSession == null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_NOT_IN_ARENA);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_NOT_IN_ARENA).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import net.knarcraft.minigames.util.GUIHelper;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -22,8 +22,7 @@ public class MenuCommand implements TabExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -20,8 +21,7 @@ public class ReloadCommand implements TabExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
MiniGames.getInstance().reload();
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(commandSender,
|
||||
MiniGameMessage.SUCCESS_PLUGIN_RELOADED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_PLUGIN_RELOADED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.command;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
import net.knarcraft.minigames.arena.reward.Reward;
|
||||
@@ -24,8 +25,7 @@ public class SetArenaRewardCommand implements CommandExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -33,15 +33,6 @@ public class SetArenaRewardCommand implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
/MiniGamesReward add dropper <name> <condition> <type> [data]
|
||||
/MiniGamesReward add parkour <name> <condition> <type> [data]
|
||||
/MiniGamesReward clear dropper <name> <condition>
|
||||
/MiniGamesReward clear parkour <name> <condition>
|
||||
|
||||
*/
|
||||
|
||||
Arena arena = null;
|
||||
if (arguments[1].equalsIgnoreCase("dropper")) {
|
||||
arena = MiniGames.getInstance().getDropperArenaHandler().getArena(arguments[2]);
|
||||
@@ -49,22 +40,19 @@ public class SetArenaRewardCommand implements CommandExecutor {
|
||||
arena = MiniGames.getInstance().getParkourArenaHandler().getArena(arguments[2]);
|
||||
}
|
||||
if (arena == null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
RewardCondition condition = RewardCondition.getFromString(arguments[3]);
|
||||
if (condition == null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_REWARD_CONDITION_INVALID);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_REWARD_CONDITION_INVALID).error(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (InputValidationHelper.isEmptyValue(arguments[0])) {
|
||||
arena.clearRewards(condition);
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(player,
|
||||
MiniGameMessage.SUCCESS_REWARDS_CLEARED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_REWARDS_CLEARED).success(player);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -80,8 +68,7 @@ public class SetArenaRewardCommand implements CommandExecutor {
|
||||
|
||||
if (reward != null) {
|
||||
arena.addReward(condition, reward);
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(player,
|
||||
MiniGameMessage.SUCCESS_REWARD_ADDED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_REWARD_ADDED).success(player);
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArenaHandler;
|
||||
@@ -20,8 +21,7 @@ public class CreateDropperArenaCommand implements CommandExecutor {
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -41,15 +41,13 @@ public class CreateDropperArenaCommand implements CommandExecutor {
|
||||
DropperArenaHandler arenaHandler = MiniGames.getInstance().getDropperArenaHandler();
|
||||
DropperArena existingArena = arenaHandler.getArena(arenaName);
|
||||
if (existingArena != null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_ARENA_NAME_COLLISION);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NAME_COLLISION).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
DropperArena arena = new DropperArena(arenaName, player.getLocation(), arenaHandler);
|
||||
arenaHandler.addArena(arena);
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(commandSender,
|
||||
MiniGameMessage.SUCCESS_ARENA_CREATED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_CREATED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArenaGroup;
|
||||
@@ -35,8 +36,7 @@ public class DropperGroupSetCommand implements TabExecutor {
|
||||
|
||||
DropperArena specifiedArena = arenaHandler.getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(commandSender,
|
||||
MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -58,8 +58,7 @@ public class DropperGroupSetCommand implements TabExecutor {
|
||||
|
||||
arenaHandler.setGroup(specifiedArena.getArenaId(), arenaGroup);
|
||||
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(commandSender,
|
||||
MiniGameMessage.SUCCESS_ARENA_GROUP_UPDATED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_GROUP_UPDATED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,107 +1,19 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaHandler;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArenaGroup;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArenaHandler;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||
import net.knarcraft.minigames.command.ArenaGroupSwapCommand;
|
||||
|
||||
/**
|
||||
* The command for swapping the order of two arenas in a group
|
||||
*/
|
||||
public class DropperGroupSwapCommand implements TabExecutor {
|
||||
public class DropperGroupSwapCommand extends ArenaGroupSwapCommand<DropperArena, DropperArenaGroup> {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (arguments.length < 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
DropperArenaHandler arenaHandler = MiniGames.getInstance().getDropperArenaHandler();
|
||||
|
||||
DropperArena arena1 = arenaHandler.getArena(arguments[0]);
|
||||
if (arena1 == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_1_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
DropperArena arena2 = arenaHandler.getArena(arguments[1]);
|
||||
if (arena2 == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_2_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
DropperArenaGroup arena1Group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
DropperArenaGroup arena2Group = arenaHandler.getGroup(arena2.getArenaId());
|
||||
if (arena1Group == null || !arena1Group.equals(arena2Group)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_SWAP_DIFFERENT_GROUPS);
|
||||
return false;
|
||||
}
|
||||
|
||||
arena1Group.swapArenas(arena1Group.getArenas().indexOf(arena1.getArenaId()),
|
||||
arena1Group.getArenas().indexOf(arena2.getArenaId()));
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENAS_SWAPPED);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
DropperArenaHandler arenaHandler = MiniGames.getInstance().getDropperArenaHandler();
|
||||
if (arguments.length == 1) {
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
for (DropperArena dropperArena : arenaHandler.getArenasInAGroup()) {
|
||||
arenaNames.add(dropperArena.getArenaName());
|
||||
}
|
||||
return filterMatchingContains(arenaNames, arguments[0]);
|
||||
} else if (arguments.length == 2) {
|
||||
return filterMatchingContains(getArenaNamesInSameGroup(arguments[0]), arguments[1]);
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the names of all arenas in the same group as the specified arena
|
||||
*
|
||||
* @param arenaName <p>The name of the specified arena</p>
|
||||
* @return <p>The names of the arenas in the same group</p>
|
||||
*/
|
||||
private List<String> getArenaNamesInSameGroup(String arenaName) {
|
||||
DropperArenaHandler arenaHandler = MiniGames.getInstance().getDropperArenaHandler();
|
||||
DropperArena arena1 = arenaHandler.getArena(arenaName);
|
||||
if (arena1 == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// Only display other arenas in the selected group
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
DropperArenaGroup group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
if (group == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
for (UUID arenaId : group.getArenas()) {
|
||||
DropperArena arena = arenaHandler.getArena(arenaId);
|
||||
if (arena != null && arena.getArenaId() != arena1.getArenaId()) {
|
||||
arenaNames.add(arena.getArenaName());
|
||||
}
|
||||
}
|
||||
return arenaNames;
|
||||
protected ArenaHandler<DropperArena, DropperArenaGroup> getArenaHandler() {
|
||||
return MiniGames.getInstance().getDropperArenaHandler();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArenaEditableProperty;
|
||||
@@ -30,9 +30,8 @@ public class EditDropperArenaCommand extends EditArenaCommand {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -42,31 +41,30 @@ public class EditDropperArenaCommand extends EditArenaCommand {
|
||||
|
||||
DropperArena specifiedArena = MiniGames.getInstance().getDropperArenaHandler().getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
DropperArenaEditableProperty editableProperty = DropperArenaEditableProperty.getFromArgumentString(arguments[1]);
|
||||
if (editableProperty == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_UNKNOWN_PROPERTY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_UNKNOWN_PROPERTY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arguments.length < 3) {
|
||||
// Print the current value of the property
|
||||
String value = editableProperty.getCurrentValueAsString(specifiedArena);
|
||||
stringFormatter.displaySuccessMessage(commandSender, stringFormatter.replacePlaceholders(
|
||||
MiniGameMessage.SUCCESS_CURRENT_VALUE, new String[]{"{property}", "{value}"},
|
||||
new String[]{editableProperty.getArgumentString(), value}));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_CURRENT_VALUE).
|
||||
replace("{property}", editableProperty.getArgumentString()).
|
||||
replace("{value}", value).success(commandSender);
|
||||
return true;
|
||||
} else {
|
||||
boolean successful = changeValue(specifiedArena, editableProperty, arguments[2], player);
|
||||
if (successful) {
|
||||
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholder(
|
||||
MiniGameMessage.SUCCESS_PROPERTY_CHANGED, "{property}",
|
||||
editableProperty.getArgumentString()));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_PROPERTY_CHANGED).
|
||||
replace("{property}", editableProperty.getArgumentString()).success(player);
|
||||
} else {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_PROPERTY_INPUT_INVALID);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PROPERTY_INPUT_INVALID).error(player);
|
||||
}
|
||||
return successful;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaPlayerRegistry;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
@@ -26,9 +26,8 @@ public class JoinDropperArenaCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -37,33 +36,33 @@ public class JoinDropperArenaCommand implements CommandExecutor {
|
||||
}
|
||||
|
||||
if (GeyserHelper.isGeyserPlayer(player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_GEYSER_DROPPER);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_GEYSER_DROPPER).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Disallow joining if the player is already in a mini-game arena
|
||||
if (MiniGames.getInstance().getSession(player.getUniqueId()) != null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ALREADY_PLAYING);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ALREADY_PLAYING).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Make sure the arena exists
|
||||
DropperArena specifiedArena = MiniGames.getInstance().getDropperArenaHandler().getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Deny vehicles as allowing this is tricky, and will cause problems in some cases
|
||||
if (player.isInsideVehicle() || !player.getPassengers().isEmpty()) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_JOIN_IN_VEHICLE_OR_PASSENGER);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_JOIN_IN_VEHICLE_OR_PASSENGER).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Deny joining full arenas
|
||||
int playingNow = MiniGames.getInstance().getDropperArenaPlayerRegistry().getPlayingPlayers(specifiedArena).size();
|
||||
if (specifiedArena.getMaxPlayers() > 0 && playingNow >= specifiedArena.getMaxPlayers()) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_JOIN_ARENA_FULL);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_JOIN_ARENA_FULL).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -93,13 +92,11 @@ public class JoinDropperArenaCommand implements CommandExecutor {
|
||||
return;
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
// Make sure the player has beaten the arena once in normal mode before playing another mode
|
||||
if (MiniGames.getInstance().getDropperConfiguration().mustDoNormalModeFirst() &&
|
||||
gameMode != DropperArenaGameMode.DEFAULT &&
|
||||
specifiedArena.getData().hasNotCompleted(DropperArenaGameMode.DEFAULT, player)) {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_NORMAL_MODE_REQUIRED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_NORMAL_MODE_REQUIRED).error(player);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -114,14 +111,14 @@ public class JoinDropperArenaCommand implements CommandExecutor {
|
||||
// Try to teleport the player to the arena
|
||||
boolean teleported = PlayerTeleporter.teleportPlayer(player, specifiedArena.getSpawnLocation(), false, false);
|
||||
if (!teleported) {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_ARENA_TELEPORT_FAILED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_TELEPORT_FAILED).error(player);
|
||||
newSession.triggerQuit(false, true);
|
||||
} else {
|
||||
// Update the player's state to follow the arena's rules
|
||||
newSession.getEntryState().setArenaState();
|
||||
|
||||
player.getInventory().addItem(GUIHelper.getGUIOpenItem(player));
|
||||
stringFormatter.displaySuccessMessage(player, MiniGameMessage.SUCCESS_ARENA_JOINED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_JOINED).success(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -136,19 +133,18 @@ public class JoinDropperArenaCommand implements CommandExecutor {
|
||||
*/
|
||||
private boolean doGroupChecks(@NotNull DropperArena dropperArena, @NotNull DropperArenaGroup arenaGroup,
|
||||
@NotNull DropperArenaGameMode arenaGameMode, @NotNull Player player) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
DropperConfiguration configuration = MiniGames.getInstance().getDropperConfiguration();
|
||||
// Require that players beat all arenas in the group in the normal game-mode before trying challenge modes
|
||||
if (configuration.mustDoNormalModeFirst() && arenaGameMode != DropperArenaGameMode.DEFAULT &&
|
||||
!arenaGroup.hasBeatenAll(DropperArenaGameMode.DEFAULT, player)) {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_GROUP_NORMAL_MODE_REQUIRED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_GROUP_NORMAL_MODE_REQUIRED).error(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Require that the player has beaten the previous arena on the same game-mode before trying this one
|
||||
if (configuration.mustDoGroupedInSequence() &&
|
||||
arenaGroup.cannotPlay(arenaGameMode, player, dropperArena.getArenaId())) {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_PREVIOUS_ARENA_REQUIRED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PREVIOUS_ARENA_REQUIRED).error(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import net.knarcraft.minigames.util.TabCompleteHelper;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -20,12 +20,11 @@ public class ListDropperArenaCommand implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
StringBuilder builder = new StringBuilder(MiniGames.getInstance().getTranslator().getTranslatedMessage(
|
||||
MiniGameMessage.SUCCESS_DROPPER_ARENAS_LIST));
|
||||
FormatBuilder builder = new FormatBuilder(MiniGameMessage.SUCCESS_DROPPER_ARENAS_LIST);
|
||||
for (String arenaName : TabCompleteHelper.getDropperArenas()) {
|
||||
builder.append("\n").append(arenaName);
|
||||
}
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(sender, builder.toString());
|
||||
builder.success(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.dropper;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.dropper.DropperArena;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
@@ -22,18 +22,16 @@ public class RemoveDropperArenaCommand implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
// Get the specified arena
|
||||
DropperArena targetArena = MiniGames.getInstance().getDropperArenaHandler().getArena(arguments[0]);
|
||||
if (targetArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Remove the arena
|
||||
MiniGames.getInstance().getDropperArenaHandler().removeArena(targetArena);
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENA_REMOVED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_REMOVED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArenaHandler;
|
||||
@@ -20,9 +20,8 @@ public class CreateParkourArenaCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -42,13 +41,13 @@ public class CreateParkourArenaCommand implements CommandExecutor {
|
||||
ParkourArenaHandler arenaHandler = MiniGames.getInstance().getParkourArenaHandler();
|
||||
ParkourArena existingArena = arenaHandler.getArena(arenaName);
|
||||
if (existingArena != null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NAME_COLLISION);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NAME_COLLISION).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
ParkourArena arena = new ParkourArena(arenaName, player.getLocation(), arenaHandler);
|
||||
arenaHandler.addArena(arena);
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENA_CREATED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_CREATED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArenaEditableProperty;
|
||||
@@ -27,9 +27,8 @@ public class EditParkourArenaCommand extends EditArenaCommand {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -39,22 +38,22 @@ public class EditParkourArenaCommand extends EditArenaCommand {
|
||||
|
||||
ParkourArena specifiedArena = MiniGames.getInstance().getParkourArenaHandler().getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
ParkourArenaEditableProperty editableProperty = ParkourArenaEditableProperty.getFromArgumentString(arguments[1]);
|
||||
if (editableProperty == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_UNKNOWN_PROPERTY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_UNKNOWN_PROPERTY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
if (arguments.length < 3) {
|
||||
// Print the current value of the property
|
||||
String value = editableProperty.getCurrentValueAsString(specifiedArena);
|
||||
stringFormatter.displaySuccessMessage(commandSender, stringFormatter.replacePlaceholders(
|
||||
MiniGameMessage.SUCCESS_CURRENT_VALUE, new String[]{"{property}", "{value}"},
|
||||
new String[]{editableProperty.getArgumentString(), value}));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_CURRENT_VALUE).
|
||||
replace("{property}", editableProperty.getArgumentString()).
|
||||
replace("{value}", value).success(commandSender);
|
||||
return true;
|
||||
} else {
|
||||
boolean successful;
|
||||
@@ -64,11 +63,10 @@ public class EditParkourArenaCommand extends EditArenaCommand {
|
||||
successful = false;
|
||||
}
|
||||
if (successful) {
|
||||
stringFormatter.displaySuccessMessage(player, stringFormatter.replacePlaceholder(
|
||||
MiniGameMessage.SUCCESS_PROPERTY_CHANGED, "{property}",
|
||||
editableProperty.getArgumentString()));
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_PROPERTY_CHANGED).replace("{property}",
|
||||
editableProperty.getArgumentString()).success(player);
|
||||
} else {
|
||||
stringFormatter.displayErrorMessage(player, MiniGameMessage.ERROR_PROPERTY_INPUT_INVALID);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PROPERTY_INPUT_INVALID).error(player);
|
||||
}
|
||||
return successful;
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaPlayerRegistry;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
@@ -25,9 +25,8 @@ public class JoinParkourArenaCommand implements CommandExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
if (!(commandSender instanceof Player player)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_PLAYER_ONLY);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PLAYER_ONLY).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -37,27 +36,27 @@ public class JoinParkourArenaCommand implements CommandExecutor {
|
||||
|
||||
// Disallow joining if the player is already in a mini-game arena
|
||||
if (MiniGames.getInstance().getSession(player.getUniqueId()) != null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ALREADY_PLAYING);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ALREADY_PLAYING).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Make sure the arena exists
|
||||
ParkourArena specifiedArena = MiniGames.getInstance().getParkourArenaHandler().getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Deny vehicles as allowing this is tricky, and will cause problems in some cases
|
||||
if (player.isInsideVehicle() || !player.getPassengers().isEmpty()) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_JOIN_IN_VEHICLE_OR_PASSENGER);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_JOIN_IN_VEHICLE_OR_PASSENGER).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
// Deny joining full arenas
|
||||
int playingNow = MiniGames.getInstance().getParkourArenaPlayerRegistry().getPlayingPlayers(specifiedArena).size();
|
||||
if (specifiedArena.getMaxPlayers() > 0 && playingNow >= specifiedArena.getMaxPlayers()) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_JOIN_ARENA_FULL);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_JOIN_ARENA_FULL).error(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
@@ -83,8 +82,7 @@ public class JoinParkourArenaCommand implements CommandExecutor {
|
||||
|
||||
// Don't allow joining the hardcore game-mode if there are no checkpoints to skip
|
||||
if (specifiedArena.hasNoCheckpoints() && gameMode == ParkourArenaGameMode.HARDCORE) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_HARDCORE_NO_CHECKPOINTS);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_HARDCORE_NO_CHECKPOINTS).error(player);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -105,16 +103,14 @@ public class JoinParkourArenaCommand implements CommandExecutor {
|
||||
// Try to teleport the player to the arena
|
||||
boolean teleported = PlayerTeleporter.teleportPlayer(player, specifiedArena.getSpawnLocation(), false, false);
|
||||
if (!teleported) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_ARENA_TELEPORT_FAILED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_TELEPORT_FAILED).error(player);
|
||||
newSession.triggerQuit(false, true);
|
||||
} else {
|
||||
// Update the player's state to follow the arena's rules
|
||||
newSession.getEntryState().setArenaState();
|
||||
|
||||
player.getInventory().addItem(GUIHelper.getGUIOpenItem(player));
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(player,
|
||||
MiniGameMessage.SUCCESS_ARENA_JOINED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_JOINED).success(player);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -134,8 +130,7 @@ public class JoinParkourArenaCommand implements CommandExecutor {
|
||||
// Require that the player has beaten the previous arena on the same game-mode before trying this one
|
||||
if (configuration.mustDoGroupedInSequence() &&
|
||||
arenaGroup.cannotPlay(arenaGameMode, player, parkourArena.getArenaId())) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_PREVIOUS_ARENA_REQUIRED);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_PREVIOUS_ARENA_REQUIRED).error(player);
|
||||
return false;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import net.knarcraft.minigames.util.TabCompleteHelper;
|
||||
import org.bukkit.command.Command;
|
||||
@@ -20,12 +20,11 @@ public class ListParkourArenaCommand implements TabExecutor {
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender sender, @NotNull Command command, @NotNull String label,
|
||||
@NotNull String[] arguments) {
|
||||
StringBuilder builder = new StringBuilder(MiniGames.getInstance().getTranslator().getTranslatedMessage(
|
||||
MiniGameMessage.SUCCESS_PARKOUR_ARENAS_LIST));
|
||||
FormatBuilder builder = new FormatBuilder(MiniGameMessage.SUCCESS_PARKOUR_ARENAS_LIST);
|
||||
for (String arenaName : TabCompleteHelper.getParkourArenas()) {
|
||||
builder.append("\n").append(arenaName);
|
||||
}
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(sender, builder.toString());
|
||||
builder.success(sender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArenaGroup;
|
||||
@@ -32,12 +32,11 @@ public class ParkourGroupSetCommand implements TabExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
ParkourArenaHandler arenaHandler = MiniGames.getInstance().getParkourArenaHandler();
|
||||
|
||||
ParkourArena specifiedArena = arenaHandler.getArena(arguments[0]);
|
||||
if (specifiedArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
@@ -59,7 +58,7 @@ public class ParkourGroupSetCommand implements TabExecutor {
|
||||
|
||||
arenaHandler.setGroup(specifiedArena.getArenaId(), arenaGroup);
|
||||
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENA_GROUP_UPDATED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_GROUP_UPDATED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,107 +1,19 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaHandler;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArenaGroup;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArenaHandler;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.command.Command;
|
||||
import org.bukkit.command.CommandSender;
|
||||
import org.bukkit.command.TabExecutor;
|
||||
import org.jetbrains.annotations.NotNull;
|
||||
import org.jetbrains.annotations.Nullable;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
import java.util.UUID;
|
||||
|
||||
import static net.knarcraft.knarlib.util.TabCompletionHelper.filterMatchingContains;
|
||||
import net.knarcraft.minigames.command.ArenaGroupSwapCommand;
|
||||
|
||||
/**
|
||||
* The command for swapping the order of two arenas in a group
|
||||
*/
|
||||
public class ParkourGroupSwapCommand implements TabExecutor {
|
||||
public class ParkourGroupSwapCommand extends ArenaGroupSwapCommand<ParkourArena, ParkourArenaGroup> {
|
||||
|
||||
@Override
|
||||
public boolean onCommand(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
if (arguments.length < 2) {
|
||||
return false;
|
||||
}
|
||||
|
||||
ParkourArenaHandler arenaHandler = MiniGames.getInstance().getParkourArenaHandler();
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
ParkourArena arena1 = arenaHandler.getArena(arguments[0]);
|
||||
if (arena1 == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_1_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
ParkourArena arena2 = arenaHandler.getArena(arguments[1]);
|
||||
if (arena2 == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_2_NOT_FOUND);
|
||||
return false;
|
||||
}
|
||||
|
||||
ParkourArenaGroup arena1Group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
ParkourArenaGroup arena2Group = arenaHandler.getGroup(arena2.getArenaId());
|
||||
if (arena1Group == null || !arena1Group.equals(arena2Group)) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_SWAP_DIFFERENT_GROUPS);
|
||||
return false;
|
||||
}
|
||||
|
||||
arena1Group.swapArenas(arena1Group.getArenas().indexOf(arena1.getArenaId()),
|
||||
arena1Group.getArenas().indexOf(arena2.getArenaId()));
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENAS_SWAPPED);
|
||||
return true;
|
||||
}
|
||||
|
||||
@Nullable
|
||||
@Override
|
||||
public List<String> onTabComplete(@NotNull CommandSender commandSender, @NotNull Command command, @NotNull String s,
|
||||
@NotNull String[] arguments) {
|
||||
ParkourArenaHandler arenaHandler = MiniGames.getInstance().getParkourArenaHandler();
|
||||
if (arguments.length == 1) {
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
for (ParkourArena parkourArena : arenaHandler.getArenasInAGroup()) {
|
||||
arenaNames.add(parkourArena.getArenaName());
|
||||
}
|
||||
return filterMatchingContains(arenaNames, arguments[0]);
|
||||
} else if (arguments.length == 2) {
|
||||
return filterMatchingContains(getArenaNamesInSameGroup(arguments[0]), arguments[1]);
|
||||
} else {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Gets the names of all arenas in the same group as the specified arena
|
||||
*
|
||||
* @param arenaName <p>The name of the specified arena</p>
|
||||
* @return <p>The names of the arenas in the same group</p>
|
||||
*/
|
||||
private List<String> getArenaNamesInSameGroup(String arenaName) {
|
||||
ParkourArenaHandler arenaHandler = MiniGames.getInstance().getParkourArenaHandler();
|
||||
ParkourArena arena1 = arenaHandler.getArena(arenaName);
|
||||
if (arena1 == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
|
||||
// Only display other arenas in the selected group
|
||||
List<String> arenaNames = new ArrayList<>();
|
||||
ParkourArenaGroup group = arenaHandler.getGroup(arena1.getArenaId());
|
||||
if (group == null) {
|
||||
return new ArrayList<>();
|
||||
}
|
||||
for (UUID arenaId : group.getArenas()) {
|
||||
ParkourArena arena = arenaHandler.getArena(arenaId);
|
||||
if (arena != null && arena.getArenaId() != arena1.getArenaId()) {
|
||||
arenaNames.add(arena.getArenaName());
|
||||
}
|
||||
}
|
||||
return arenaNames;
|
||||
protected ArenaHandler<ParkourArena, ParkourArenaGroup> getArenaHandler() {
|
||||
return MiniGames.getInstance().getParkourArenaHandler();
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.command.parkour;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.parkour.ParkourArena;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
@@ -22,18 +22,16 @@ public class RemoveParkourArenaCommand implements CommandExecutor {
|
||||
return false;
|
||||
}
|
||||
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
|
||||
// Get the specified arena
|
||||
ParkourArena targetArena = MiniGames.getInstance().getParkourArenaHandler().getArena(arguments[0]);
|
||||
if (targetArena == null) {
|
||||
stringFormatter.displayErrorMessage(commandSender, MiniGameMessage.ERROR_ARENA_NOT_FOUND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_FOUND).error(commandSender);
|
||||
return false;
|
||||
}
|
||||
|
||||
// Remove the arena
|
||||
MiniGames.getInstance().getParkourArenaHandler().removeArena(targetArena);
|
||||
stringFormatter.displaySuccessMessage(commandSender, MiniGameMessage.SUCCESS_ARENA_REMOVED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_ARENA_REMOVED).success(commandSender);
|
||||
return true;
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.listener;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaSession;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
@@ -43,7 +44,7 @@ public class CommandListener implements Listener {
|
||||
}
|
||||
}
|
||||
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player, MiniGameMessage.ERROR_ILLEGAL_COMMAND);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_ILLEGAL_COMMAND).error(player);
|
||||
event.setCancelled(true);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.listener;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.Arena;
|
||||
import net.knarcraft.minigames.arena.ArenaSession;
|
||||
@@ -130,8 +131,7 @@ public class MoveListener implements Listener {
|
||||
|
||||
// Register the checkpoint
|
||||
arenaSession.registerCheckpoint(checkpoint.clone());
|
||||
MiniGames.getInstance().getStringFormatter().displaySuccessMessage(player,
|
||||
MiniGameMessage.SUCCESS_CHECKPOINT_REACHED);
|
||||
new FormatBuilder(MiniGameMessage.SUCCESS_CHECKPOINT_REACHED).success(player);
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.util;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaGameMode;
|
||||
import net.knarcraft.minigames.arena.ArenaRecordsRegistry;
|
||||
@@ -198,9 +199,9 @@ public final class DropperArenaStorageHelper {
|
||||
DropperArenaStorageKey.WIN_BLOCK_TYPE.getKey());
|
||||
|
||||
if (arenaName == null || spawnLocation == null) {
|
||||
MiniGames.log(Level.SEVERE, MiniGames.getInstance().getStringFormatter().replacePlaceholders(
|
||||
MiniGameMessage.ERROR_ARENA_NOT_LOADED, new String[]{"{section}", "{file}"},
|
||||
new String[]{configurationSection.getName(), "dropper_arenas"}));
|
||||
MiniGames.log(Level.SEVERE, new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_LOADED).
|
||||
replace("{section}", configurationSection.getName()).
|
||||
replace("{file}", "dropper_arenas").toString());
|
||||
return null;
|
||||
}
|
||||
if (winBlockType == null) {
|
||||
@@ -213,8 +214,8 @@ public final class DropperArenaStorageHelper {
|
||||
// Generate new, empty arena data if not available
|
||||
DropperArenaData arenaData = loadDropperArenaData(arenaId);
|
||||
if (arenaData == null) {
|
||||
MiniGames.log(Level.SEVERE, MiniGames.getInstance().getStringFormatter().replacePlaceholder(
|
||||
MiniGameMessage.ERROR_ARENA_DATA_NOT_LOADED, "{arena}", arenaId.toString()));
|
||||
MiniGames.log(Level.SEVERE, new FormatBuilder(MiniGameMessage.ERROR_ARENA_DATA_NOT_LOADED).
|
||||
replace("{arena}", arenaId.toString()).toString());
|
||||
arenaData = getEmptyDropperData(arenaId);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.util;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.ArenaGameMode;
|
||||
import net.knarcraft.minigames.arena.ArenaRecordsRegistry;
|
||||
@@ -238,9 +239,10 @@ public final class ParkourArenaStorageHelper {
|
||||
|
||||
// The arena name and spawn location must be present
|
||||
if (arenaName == null || spawnLocation == null) {
|
||||
MiniGames.log(Level.SEVERE, MiniGames.getInstance().getStringFormatter().replacePlaceholders(
|
||||
MiniGameMessage.ERROR_ARENA_NOT_LOADED, new String[]{"{section}", "{file}"},
|
||||
new String[]{configurationSection.getName(), "parkour_arena"}));
|
||||
|
||||
MiniGames.log(Level.SEVERE, new FormatBuilder(MiniGameMessage.ERROR_ARENA_NOT_LOADED).
|
||||
replace("{section}", configurationSection.getName()).
|
||||
replace("{file}", "parkour_arena").toString());
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -252,8 +254,8 @@ public final class ParkourArenaStorageHelper {
|
||||
// Generate new, empty arena data if not available
|
||||
ParkourArenaData arenaData = loadParkourArenaData(arenaId);
|
||||
if (arenaData == null) {
|
||||
MiniGames.log(Level.SEVERE, MiniGames.getInstance().getStringFormatter().replacePlaceholder(
|
||||
MiniGameMessage.ERROR_ARENA_DATA_NOT_LOADED, "{arena}", arenaId.toString()));
|
||||
MiniGames.log(Level.SEVERE, new FormatBuilder(MiniGameMessage.ERROR_ARENA_DATA_NOT_LOADED).
|
||||
replace("{arena}", arenaId.toString()).toString());
|
||||
arenaData = getEmptyParkourData(arenaId);
|
||||
}
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
package net.knarcraft.minigames.util;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.config.MiniGameMessage;
|
||||
import org.bukkit.Bukkit;
|
||||
@@ -36,8 +37,7 @@ public final class PlayerTeleporter {
|
||||
passenger.teleport(location);
|
||||
}
|
||||
} else {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_TELEPORT_WITH_PASSENGER);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_TELEPORT_WITH_PASSENGER).error(player);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
@@ -47,8 +47,7 @@ public final class PlayerTeleporter {
|
||||
player.eject();
|
||||
vehicle.teleport(location);
|
||||
} else {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_TELEPORT_IN_VEHICLE);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_TELEPORT_IN_VEHICLE).error(player);
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
package net.knarcraft.minigames.util;
|
||||
|
||||
import net.knarcraft.knarlib.formatting.StringFormatter;
|
||||
import net.knarcraft.knarlib.formatting.FormatBuilder;
|
||||
import net.knarcraft.knarlib.util.MaterialHelper;
|
||||
import net.knarcraft.minigames.MiniGames;
|
||||
import net.knarcraft.minigames.arena.reward.CommandReward;
|
||||
@@ -37,11 +37,10 @@ public final class RewardHelper {
|
||||
* @param rewards <p>The rewards to give</p>
|
||||
*/
|
||||
public static void grantRewards(@NotNull Player player, @NotNull Collection<Reward> rewards) {
|
||||
StringFormatter stringFormatter = MiniGames.getInstance().getStringFormatter();
|
||||
for (Reward reward : rewards) {
|
||||
boolean granted = reward.grant(player);
|
||||
if (granted) {
|
||||
stringFormatter.displaySuccessMessage(player, reward.getGrantMessage());
|
||||
reward.getGrantMessage().success(player);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -63,8 +62,7 @@ public final class RewardHelper {
|
||||
@NotNull String[] allArguments) {
|
||||
RewardType rewardType = RewardType.getFromString(typeString);
|
||||
if (rewardType == null) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player,
|
||||
MiniGameMessage.ERROR_REWARD_TYPE_INVALID);
|
||||
new FormatBuilder(MiniGameMessage.ERROR_REWARD_TYPE_INVALID).error(player);
|
||||
return null;
|
||||
}
|
||||
|
||||
@@ -80,7 +78,7 @@ public final class RewardHelper {
|
||||
case ITEM -> new ItemReward(getItem(player, firstArgument, secondArgument));
|
||||
};
|
||||
} catch (IllegalArgumentException exception) {
|
||||
MiniGames.getInstance().getStringFormatter().displayErrorMessage(player, exception.getMessage());
|
||||
new FormatBuilder(exception.getMessage()).error(player);
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user