Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
dcd670a
change
Nandi0813 Apr 18, 2026
c66c623
execute extra items commands as player instead of console (#493)
Yow-sef Apr 20, 2026
5807e95
added hologram teleport command
Nandi0813 Apr 20, 2026
14b8b7b
fixed possible NPE
Nandi0813 Apr 20, 2026
5e3c6de
feat add allow-lobby-interact config option (#509)
lokspel Apr 28, 2026
f370ed6
feat(ladder): add hearts setting and enforce ladder max health in fights
Nandi0813 May 15, 2026
f885057
feat(arena): add party FFA center setting and update related commands
Nandi0813 May 15, 2026
9a3bfd5
feat(settings): update ladder settings GUI to support additional layo…
Nandi0813 May 15, 2026
a8aa75c
Merge branch 'dev' of https://github.com/ZoneDevelopement/ZonePractic…
Nandi0813 May 15, 2026
d21a16c
Missing pearl configuration & Update dependencies (26.1.2 is supporte…
lokspel May 17, 2026
ec0892f
Refactor tab integration (#527)
lokspel May 17, 2026
20d6c40
fix: fix profile worldtime default value and handle offline players i…
lokspel May 18, 2026
daa22b9
fix: add missing break statements in PartySettingsGui switch (#530)
lokspel May 18, 2026
212d419
fix: not-won round symbols rendering as filled on scoreboard (#532)
lokspel May 18, 2026
d3aa99a
Prevent throwing ender peal if cooldown is 0.0 in the start of the ma…
lokspel May 18, 2026
480bf3f
Fixes (#534)
lokspel May 18, 2026
6b0e18e
Fixes (#537)
lokspel May 18, 2026
f032f31
refactor: remove telemetry logger references from multiple classes
Nandi0813 May 19, 2026
1a51ec6
refactor: simplify arena side build limit check and update player joi…
Nandi0813 May 19, 2026
f659742
fixed possible deadlock
Nandi0813 May 19, 2026
22c53a1
Full MiniMessage support (#544)
lokspel May 19, 2026
6987723
fix: sword ladder was not loading by default (#545)
lokspel May 19, 2026
b704889
Fix sidebar (#547)
lokspel May 19, 2026
781c07c
Fix sidebar (#548)
lokspel May 19, 2026
eaa42b5
Hearts are customizable now and UGLY text (#550)
lokspel May 19, 2026
3b45c45
fix: correct typo in Sumo Rackets GUI item path
Nandi0813 May 20, 2026
8c4e1c8
refactor: add mini message display name methods for item meta and upd…
Nandi0813 May 20, 2026
e8efc55
refactor: update player head retrieval to use PlayerProfile for bette…
Nandi0813 May 20, 2026
2bf5e44
feat: add configuration options for icon editing and custom kit prese…
Nandi0813 May 20, 2026
35008d7
fix: prevent ender pearl usage when match round is not live and strea…
Nandi0813 May 20, 2026
32f9e3b
chore: remove telemetry configuration options from config.yml
Nandi0813 May 20, 2026
7ab2acf
Fix colors (#560)
lokspel May 23, 2026
23d5ea7
Fixes (#562)
lokspel May 25, 2026
1d970c6
fix: preserve custom config keys on BoostedYAML version update + Refa…
lokspel May 25, 2026
c547426
Merge branch 'dev' of https://github.com/ZoneDevelopement/ZonePractic…
Nandi0813 May 25, 2026
72da32d
changed version to 7.6.0-SNAPSHOT
Nandi0813 May 25, 2026
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
2 changes: 1 addition & 1 deletion core/pom.xml
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@
<parent>
<groupId>dev.nandi0813</groupId>
<artifactId>practice-parent</artifactId>
<version>7.5.0-SNAPSHOT</version>
<version>7.6.0-SNAPSHOT</version>
</parent>

<artifactId>practice-core</artifactId>
Expand Down
40 changes: 0 additions & 40 deletions core/src/main/java/dev/nandi0813/practice/ZonePractice.java
Original file line number Diff line number Diff line change
Expand Up @@ -43,11 +43,6 @@
import dev.nandi0813.practice.manager.profile.cosmetics.CosmeticsPermissionManager;
import dev.nandi0813.practice.manager.server.ServerManager;
import dev.nandi0813.practice.manager.sidebar.SidebarManager;
import dev.nandi0813.practice.telemetry.bootstrap.TelemetryBootstrap;
import dev.nandi0813.practice.telemetry.collector.TelemetryMatchListener;
import dev.nandi0813.practice.telemetry.transport.ai.AiTrainingLogger;
import dev.nandi0813.practice.telemetry.transport.regular.TelemetryLogger;
import dev.nandi0813.practice.telemetry.transport.stats.PracticeStatsTelemetryLogger;
import dev.nandi0813.practice.util.*;
import dev.nandi0813.practice.util.placeholderapi.PlayerExpansion;
import io.github.retrooper.packetevents.factory.spigot.SpigotPacketEventsBuilder;
Expand All @@ -62,7 +57,6 @@
import java.util.Comparator;
import java.util.EnumMap;
import java.util.Map;
import java.util.concurrent.atomic.AtomicBoolean;

public final class ZonePractice extends JavaPlugin {

Expand All @@ -83,7 +77,6 @@ public final class ZonePractice extends JavaPlugin {

// BStats
private Metrics metrics;
private final AtomicBoolean telemetryListenerRegistered = new AtomicBoolean(false);

public static final ErrorTracker ERROR_TRACKER = ErrorTracker.contextAware();
private final BukkitMetrics faststats_metrics = BukkitMetrics.factory()
Expand Down Expand Up @@ -122,30 +115,6 @@ public void onEnable() {

ConfigManager.createFile();
BackendManager.createFile(this);
TelemetryBootstrap.initializeAsync()
.thenApply(regularEnabled -> regularEnabled
|| TelemetryBootstrap.isAiCollectionActive()
|| TelemetryBootstrap.isPracticeStatsActive())
.thenAccept(enabled -> {
if (!enabled) {
return;
}

Bukkit.getScheduler().runTask(this, () -> {
if (!isEnabled()) {
return;
}

if (TelemetryBootstrap.isPracticeStatsActive()) {
PracticeStatsTelemetryLogger.initialize();
}

if ((TelemetryBootstrap.isActive() || TelemetryBootstrap.isAiCollectionActive())
&& telemetryListenerRegistered.compareAndSet(false, true)) {
Bukkit.getPluginManager().registerEvents(new TelemetryMatchListener(), this);
}
});
});
LanguageManager.createFile(this);
GUIFile.createFile(this);
MysqlManager.openConnection();
Expand Down Expand Up @@ -187,10 +156,6 @@ public void onEnable() {
ProfileManager.getInstance().loadAllProfileInformations();
startUpProgress.replace(StartUpTypes.PROFILE_LOADING, true);

if (TelemetryBootstrap.isPracticeStatsActive()) {
PracticeStatsTelemetryLogger.onProfilesLoaded();
}

LeaderboardManager.getInstance().createAllLB(() ->
{
startUpProgress.replace(StartUpTypes.LEADERBOARD_LOADING, true);
Expand Down Expand Up @@ -252,11 +217,6 @@ public void onDisable() {
faststats_metrics.shutdown();
MysqlManager.closeConnection();
BackendManager.save();

// Flush async telemetry writes at shutdown so completed matches are persisted.
TelemetryLogger.shutdown();
AiTrainingLogger.shutdown();
PracticeStatsTelemetryLogger.shutdown();
}

/**
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,6 @@
import dev.nandi0813.practice.manager.profile.Profile;
import dev.nandi0813.practice.manager.profile.ProfileManager;
import dev.nandi0813.practice.manager.profile.group.Group;
import dev.nandi0813.practice.util.StringUtil;
import org.bukkit.entity.Player;

public class ZonePracticeApiImpl extends ZonePracticeApi {
Expand All @@ -28,8 +27,8 @@ public String getPlayerDivision(Player player, DivisionName divisionName) {
if (profile.getStats().getDivision() == null) return null;

return switch (divisionName) {
case FULL -> StringUtil.CC(profile.getStats().getDivision().getFullName());
case SHORT -> StringUtil.CC(profile.getStats().getDivision().getShortName());
case FULL -> profile.getStats().getDivision().getFullName();
case SHORT -> profile.getStats().getDivision().getShortName();
};
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,9 @@

import java.text.Normalizer;

public enum CreateArg {
;
public final class CreateArg {

private CreateArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
import java.util.ArrayList;
import java.util.List;

public enum DeleteArg {
;
public final class DeleteArg {

private DeleteArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
import java.util.ArrayList;
import java.util.List;

public enum DisableArg {
;
public final class DisableArg {

private DisableArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
import java.util.ArrayList;
import java.util.List;

public enum EnableArg {
;
public final class EnableArg {

private EnableArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,8 +13,9 @@
import java.util.ArrayList;
import java.util.List;

public enum FreezeArg {
;
public final class FreezeArg {

private FreezeArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.arena.freeze")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -4,8 +4,9 @@
import dev.nandi0813.practice.util.Common;
import org.bukkit.entity.Player;

public enum HelpArg {
;
public final class HelpArg {

private HelpArg() {}

public static void run(Player player, String label) {
if (player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
import java.util.ArrayList;
import java.util.List;

public enum InfoArg {
;
public final class InfoArg {

private InfoArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand All @@ -37,12 +38,13 @@ public static void run(Player player, String label, String[] args) {
.replace("%arena%", arena.getName())
.replace("%type%", arena.getType().getName())
.replace("%icon%", arena.getIcon() != null ? LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.INFO.STATUS-NAMES.SET") : LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.INFO.STATUS-NAMES.NOT-SET"))
.replace("%displayName%", StringUtil.legacyColorToMiniMessage(arena.getDisplayName()))
.replace("%displayName%", arena.getDisplayName())
.replace("%ladders%", (ladderNames.isEmpty() ? StringUtil.CC("<red>NULL") : ladderNames.toString().replace("]", "").replace("[", "")))
.replace("%corner1%", ArenaUtil.convertLocation(arena.getCorner1()))
.replace("%corner2%", ArenaUtil.convertLocation(arena.getCorner2()))
.replace("%position1%", ArenaUtil.convertLocation(arena.getPosition1()))
.replace("%position2%", ArenaUtil.convertLocation(arena.getPosition2()))
.replace("%partyFfaCenter%", ArenaUtil.convertLocation(arena.getPartyFfaCenter()))
.replace("%status%", arena.isEnabled() ? LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.INFO.STATUS-NAMES.ENABLED") : LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.INFO.STATUS-NAMES.DISABLED"))
);
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@

import dev.nandi0813.practice.manager.arena.ArenaManager;
import dev.nandi0813.practice.manager.arena.arenas.interfaces.DisplayArena;
import dev.nandi0813.practice.manager.backend.ConfigManager;
import dev.nandi0813.practice.manager.backend.LanguageManager;
import dev.nandi0813.practice.manager.fight.util.PlayerUtil;
import dev.nandi0813.practice.manager.gui.GUIManager;
Expand All @@ -16,8 +17,9 @@
import java.util.ArrayList;
import java.util.List;

public enum IconArg {
;
public final class IconArg {

private IconArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand All @@ -36,7 +38,7 @@ public static void run(Player player, String label, String[] args) {
return;
}

if (arena.isEnabled()) {
if (arena.isEnabled() && !ConfigManager.getBoolean("SETUP.ALLOW-ICON-EDIT-WHILE-ENABLED")) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.ICON.CANT-EDIT").replace("%arena%", arena.getName()));
return;
}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,77 @@
package dev.nandi0813.practice.command.arena.arguments.Set;

import dev.nandi0813.practice.manager.arena.ArenaManager;
import dev.nandi0813.practice.manager.arena.arenas.Arena;
import dev.nandi0813.practice.manager.backend.LanguageManager;
import dev.nandi0813.practice.manager.gui.GUIType;
import dev.nandi0813.practice.manager.gui.setup.arena.ArenaGUISetupManager;
import dev.nandi0813.practice.util.Common;
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.util.StringUtil;

import java.util.ArrayList;
import java.util.List;

public final class PartyFfaCenterArg {

private PartyFfaCenterArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.NO-PERMISSION"));
return;
}

if (args.length != 3) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.COMMAND-HELP").replace("%label%", label));
return;
}

Arena arena = ArenaManager.getInstance().getNormalArena(args[2]);
if (arena == null) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.ARENA-NOT-EXISTS").replace("%arena%", args[2]));
return;
}

if (arena.isEnabled()) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.ARENA-ENABLED").replace("%arena%", arena.getName()));
return;
}

if (arena.isBuild() && !arena.getCopies().isEmpty()) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.CANT-EDIT").replace("%arena%", arena.getName()));
return;
}

if (arena.getCuboid() == null) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.NO-REGION"));
return;
}

Location center = player.getLocation().clone();
if (!arena.getCuboid().contains(center)) {
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.POS-OUTSIDE-REGION"));
return;
}

arena.setPartyFfaCenter(center);
ArenaGUISetupManager.getInstance().getArenaSetupGUIs().get(arena).get(GUIType.Arena_Main).update();
Common.sendMMMessage(player, LanguageManager.getString("COMMAND.ARENA.ARGUMENTS.PARTYFFACENTER.SET")
.replace("%arena%", arena.getName()));
}

public static List<String> tabComplete(Player player, String[] args) {
List<String> arguments = new ArrayList<>();
if (!player.hasPermission("zpp.setup")) return arguments;

if (args.length == 3) {
for (Arena arena : ArenaManager.getInstance().getNormalArenas())
arguments.add(arena.getName());

return StringUtil.copyPartialMatches(args[2], arguments, new ArrayList<>());
}

return arguments;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -10,8 +10,9 @@
import java.util.ArrayList;
import java.util.List;

public enum PortalProtArg {
;
public final class PortalProtArg {

private PortalProtArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -12,8 +12,9 @@
import java.util.ArrayList;
import java.util.List;

public enum SideBuildLimitArg {
;
public final class SideBuildLimitArg {

private SideBuildLimitArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
package dev.nandi0813.practice.command.arena.arguments;

import dev.nandi0813.practice.command.arena.arguments.Set.IconArg;
import dev.nandi0813.practice.command.arena.arguments.Set.PartyFfaCenterArg;
import dev.nandi0813.practice.command.arena.arguments.Set.PortalProtArg;
import dev.nandi0813.practice.command.arena.arguments.Set.SideBuildLimitArg;
import org.bukkit.entity.Player;
Expand All @@ -10,8 +11,9 @@
import java.util.Collections;
import java.util.List;

public enum SetArg {
;
public final class SetArg {

private SetArg() {}

public static void run(Player player, String label, String[] args) {
if (args.length > 1) {
Expand All @@ -25,6 +27,9 @@ public static void run(Player player, String label, String[] args) {
case "sidebuildlimit":
SideBuildLimitArg.run(player, label, args);
break;
case "partyffacenter":
PartyFfaCenterArg.run(player, label, args);
break;
}
} else
HelpArg.run_setCommand(player, label);
Expand All @@ -39,13 +44,15 @@ public static List<String> tabComplete(Player player, String[] args) {
arguments.add("icon");
arguments.add("portalprot");
arguments.add("sidebuildlimit");
arguments.add("partyffacenter");

StringUtil.copyPartialMatches(args[1], arguments, completion);
} else if (args.length > 2) {
completion = switch (args[1]) {
case "icon" -> IconArg.tabComplete(player, args);
case "portalprot" -> PortalProtArg.tabComplete(player, args);
case "sidebuildlimit" -> SideBuildLimitArg.tabComplete(player, args);
case "partyffacenter" -> PartyFfaCenterArg.tabComplete(player, args);
default -> completion;
};
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -11,8 +11,9 @@
import java.util.ArrayList;
import java.util.List;

public enum SetupArg {
;
public final class SetupArg {

private SetupArg() {}

public static void run(Player player, String label, String[] args) {
if (!player.hasPermission("zpp.setup")) {
Expand Down
Loading
Loading