Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 10 additions & 0 deletions .github/CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -1,3 +1,13 @@
### 1.4.4 Release (17.01.2026)
* Added support 1.21.8-11
* Added (optional) SCOREBOARD_DISPLAY in config.yml
* Added Placeholders for *current* usage of players for external plugins without knowing the specific arena
* Updated XSeries to 13.6.0
* Fixed NPE on null name with ItemBuilder
* Fixed NPE on MySQL usage caused by debug msg
* Changed Not checking for op or * permissions anymore. Work with negative permissions if you want to change how admin gets the boost.


### 1.4.3 Release (10.07.2025)
* Added 1.21.6-7 support!
* Updated XSeries to 13.3.3
Expand Down
2 changes: 1 addition & 1 deletion .github/building/api/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ plugins {

dependencies {
compileOnly(project(":MiniGamesBox-Database", "shadow"))
compileOnly("com.github.cryptomorin:XSeries:13.0.0") { isTransitive = false }
compileOnly("com.github.cryptomorin:XSeries:13.5.1") { isTransitive = false }
}

tasks{
Expand Down
2 changes: 1 addition & 1 deletion .github/building/api/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@
<dependency>
<groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId>
<version>13.0.0</version>
<version>13.6.0</version>
<optional>true</optional>
</dependency>
</dependencies>
Expand Down
2 changes: 1 addition & 1 deletion .github/building/classic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ repositories {

dependencies {
implementation("fr.mrmicky:fastboard:2.1.3") { isTransitive = false }
implementation("com.github.cryptomorin:XSeries:13.0.0") { isTransitive = false }
implementation("com.github.cryptomorin:XSeries:13.5.1") { isTransitive = false }
implementation(project(":MiniGamesBox-API", "shadow"))
implementation(project(":MiniGamesBox-Inventory", "shadow"))
implementation(project(":MiniGamesBox-Database", "shadow"))
Expand Down
2 changes: 1 addition & 1 deletion .github/building/classic/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
<dependency>
<groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId>
<version>13.0.0</version>
<version>13.6.0</version>
<optional>true</optional>
</dependency>
<dependency>
Expand Down
4 changes: 2 additions & 2 deletions MiniGamesBox API/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>minigamesbox</artifactId>
<groupId>plugily.projects</groupId>
<version>1.4.3</version>
<version>1.4.3-SNAPSHOT7</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -53,7 +53,7 @@
<dependency>
<groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId>
<version>13.3.3</version>
<version>13.6.0</version>
<scope>provided</scope>
<optional>true</optional>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
package plugily.projects.minigamesbox.api.kit;

import org.bukkit.entity.Player;

import java.util.List;

/**
Expand All @@ -23,6 +25,13 @@ public interface IKitRegistry {
*/
void registerKits(List<String> optionalConfigurations);

/**
* Creates a new kit file with the kit content of the players inventory
*
* @param name name of kit file and kit
* @param player player from which the kit gets created
*/
void savePlayerAsNewKit(String name, Player player);
/**
* Return default game kit
*
Expand Down
10 changes: 2 additions & 8 deletions MiniGamesBox Classic/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
<parent>
<artifactId>minigamesbox</artifactId>
<groupId>plugily.projects</groupId>
<version>1.4.3</version>
<version>1.4.3-SNAPSHOT7</version>
</parent>
<modelVersion>4.0.0</modelVersion>

Expand Down Expand Up @@ -78,16 +78,10 @@
<version>5.2.1</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.ProtocolSupport</groupId>
<artifactId>ProtocolSupport</artifactId>
<version>master</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>com.github.cryptomorin</groupId>
<artifactId>XSeries</artifactId>
<version>13.3.3</version>
<version>13.6.0</version>
<scope>compile</scope>
<optional>true</optional>
</dependency>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,6 @@
import org.bukkit.Material;
import org.bukkit.entity.Player;
import org.bukkit.inventory.ItemStack;
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import plugily.projects.minigamesbox.api.arena.IArenaState;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.api.user.IUser;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ public PluginScoreboardManager(PluginArena arena) {

@Override
public void createScoreboard(IUser user) {
if(!arena.getPlugin().getConfigPreferences().getOption("SCOREBOARD_DISPLAY")) {
return;
}
Player player = user.getPlayer();

FastBoard board = new FastBoard(player) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -91,6 +91,7 @@ public PluginArgumentsRegistry(PluginMain plugin) {
new AdjustStatisticArgument(this);

//other admin related arguments
new KitFileArgument(this);
new ListArenasArgument(this);
new LocationWandArgument(this);
new PlaceholderCheckArgument(this);
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,43 @@
package plugily.projects.minigamesbox.classic.commands.arguments.admin;

import org.bukkit.ChatColor;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import plugily.projects.minigamesbox.api.arena.IPluginArena;
import plugily.projects.minigamesbox.classic.commands.arguments.PluginArgumentsRegistry;
import plugily.projects.minigamesbox.classic.commands.arguments.data.CommandArgument;
import plugily.projects.minigamesbox.classic.commands.arguments.data.LabelData;
import plugily.projects.minigamesbox.classic.commands.arguments.data.LabeledCommandArgument;
import plugily.projects.minigamesbox.classic.handlers.language.MessageBuilder;
import plugily.projects.minigamesbox.classic.utils.version.TextComponentBuilder;

/**
* @author Tigerpanzer_02
* <p>
* Created at 12.10.2025
*/
public class KitFileArgument {

public KitFileArgument(PluginArgumentsRegistry registry) {
registry.mapArgument(registry.getPlugin().getCommandAdminPrefixLong(), new LabeledCommandArgument("kitfile", registry.getPlugin().getPluginNamePrefixLong() + ".admin.kitfile", CommandArgument.ExecutorType.BOTH,
new LabelData("/" + registry.getPlugin().getCommandAdminPrefix() + " kitfile", "/" + registry.getPlugin().getCommandAdminPrefix() + " kitfile <name>",
"&7Creates kit file \n&6Permission: &7" + registry.getPlugin().getPluginNamePrefixLong() + ".admin.kitfile")) {
@Override
public void execute(CommandSender sender, String[] args) {
if(args.length != 2) {
new MessageBuilder(ChatColor.DARK_RED + "Please provide a name!").prefix().send(sender);
return;
}
if(!(sender instanceof Player)) {
new MessageBuilder("COMMANDS_ONLY_BY_PLAYER").asKey().send(sender);
return;
}
String name = args[1];
registry.getPlugin().getKitRegistry().savePlayerAsNewKit(name, (Player) sender);
new MessageBuilder("COMMANDS_COMMAND_EXECUTED").asKey().send(sender);
}
});
}


}
Original file line number Diff line number Diff line change
Expand Up @@ -42,9 +42,6 @@ public LocalesArgument(PluginArgumentsRegistry registry) {
registry.mapArgument(registry.getPlugin().getCommandAdminPrefixLong(), new LabeledCommandArgument("locales", registry.getPlugin().getPluginNamePrefixLong() + ".admin.locales", CommandArgument.ExecutorType.BOTH, new LabelData("/" + registry.getPlugin().getCommandAdminPrefix() + " locales", "/" + registry.getPlugin().getCommandAdminPrefix() + " locales", "&7Shows list with all locales\n&6Permission: &7" + registry.getPlugin().getPluginNamePrefixLong() + ".admin.locales")) {
@Override
public void execute(CommandSender sender, String[] args) {
if(!(sender instanceof Player)) {
return;
}
new MessageBuilder("---- LOCALES THAT CAN BE USED FOR " + registry.getPlugin().getPluginNamePrefixLong().toUpperCase() + " ----").send(sender);
for(Locale locale : LocaleRegistry.getRegisteredLocales()) {
new MessageBuilder(locale.getName() + " by setting " + locale.getPrefix() + " in config.yml@locale").send(sender);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -190,7 +190,7 @@ public int getPermissionCategoryValue(String key, Player player) {
}
int value = 0;
for(Map.Entry<String, Integer> perm : getPermissionCategoryMap(key).entrySet()) {
if(player.hasPermission(perm.getKey()) && !player.isOp() && !player.hasPermission("*")) {
if(player.hasPermission(perm.getKey())) {
value += perm.getValue();
}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ public class PlaceholderManager {

public PlaceholderManager(PluginMain plugin) {
this.plugin = plugin;
if (Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
if(Bukkit.getPluginManager().isPluginEnabled("PlaceholderAPI")) {
plugin.getDebugger().debug(plugin.getPluginMessagePrefix() + "Hooking into PlaceholderAPI");
new PAPIPlaceholders(plugin);
}
Expand Down Expand Up @@ -139,28 +139,143 @@ public String getValue(IPluginArena arena) {
return Integer.toString(arena.getTimer());
}
});
registerPlaceholder(new Placeholder("timer_pretty", Placeholder.PlaceholderType.ARENA, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player, IPluginArena arena) {
return convertSecondsToTime(arena.getTimer());
}

@Override
public String getValue(IPluginArena arena) {
return convertSecondsToTime(arena.getTimer());
}

public String convertSecondsToTime(int oldseconds) {
int hours = oldseconds / 3600;
int minutes = (oldseconds % 3600) / 60;
int seconds = oldseconds % 60;
if(hours > 0) {
return String.format("%02d:%02d:%02d", hours, minutes, seconds);
} else if(minutes > 0) {
return String.format("%02d:%02d", minutes, seconds);
} else {
return String.format("%02d", seconds);
}
}
});
registerPlaceholder(new Placeholder("user_kit", Placeholder.PlaceholderExecutor.ALL) {
@Override
public String getValue(Player player) {
if (!plugin.getConfigPreferences().getOption("KITS")) {
if(!plugin.getConfigPreferences().getOption("KITS")) {
return null;
}
return plugin.getUserManager().getUser(player).getKit().getName();
}

@Override
public String getValue(Player player, IPluginArena arena) {
if (!plugin.getConfigPreferences().getOption("KITS")) {
if(!plugin.getConfigPreferences().getOption("KITS")) {
return null;
}
return plugin.getUserManager().getUser(player).getKit().getName();
}
});


//get player specific details
registerPlaceholder(new Placeholder("current_arena_id", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
return playerArena != null ? playerArena.getId() : "";
}

@Override
public String getValue() {
return "";
}
});
registerPlaceholder(new Placeholder("arena_current_state", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
if(playerArena != null) {
return playerArena.getArenaState().toString().toLowerCase();
}
return "";
}

@Override
public String getValue() {
return "";
}
});
registerPlaceholder(new Placeholder("arena_current_name", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
if(playerArena != null) {
return playerArena.getMapName();
}
return "";
}

@Override
public String getValue() {
return "";
}
});
registerPlaceholder(new Placeholder("arena_current_players", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
if(playerArena != null) {
return Integer.toString(playerArena.getPlayers().size());
}
return "";
}

@Override
public String getValue() {
return "";
}
});
registerPlaceholder(new Placeholder("arena_current_max_players", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
if(playerArena != null) {
return Integer.toString(playerArena.getMaximumPlayers());
}
return "";
}

@Override
public String getValue() {
return "";
}
});
registerPlaceholder(new Placeholder("arena_current_timer", Placeholder.PlaceholderType.GLOBAL, Placeholder.PlaceholderExecutor.PLACEHOLDER_API) {
@Override
public String getValue(Player player) {
IPluginArena playerArena = plugin.getArenaRegistry().getArena(player);
if(playerArena != null) {
return Integer.toString(playerArena.getTimer());
}
return "";
}

@Override
public String getValue() {
return "";
}
});


}

public void registerPlaceholder(Placeholder placeholder) {
switch (placeholder.getPlaceholderExecutor()) {
switch(placeholder.getPlaceholderExecutor()) {
case PLACEHOLDER_API:
registeredPAPIPlaceholders.add(placeholder);
break;
Expand Down
Loading