Maintenance changes

Updates KnarLib
Updates Spigot
Updates code for message generation
This commit is contained in:
EpicKnarvik97
2025-11-26 13:40:11 +01:00
parent 430f340fd4
commit b55f122148
37 changed files with 287 additions and 406 deletions

View File

@@ -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>

View File

@@ -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);
}
/**

View File

@@ -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);

View File

@@ -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" +

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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

View File

@@ -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());
}
}

View File

@@ -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();
}

View File

@@ -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;
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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;
}

View File

@@ -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();
}
}

View File

@@ -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;
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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);
}

View File

@@ -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);
}

View File

@@ -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;
}
}

View File

@@ -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;
}
}