diff --git a/build.gradle.kts b/build.gradle.kts index e07587a..092821a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -41,14 +41,21 @@ publishing { tasks { processResources { + val name = project.name + val description = project.description + val version = project.version.toString() + val commitHash = project.latestCommitHash() + filesMatching(listOf("plugin.yml")) { expand( - "name" to project.name, - "description" to project.description, - "mainClass" to "dev.pgm.events.EventsPlugin", - "version" to project.version, - "commitHash" to project.latestCommitHash(), - "url" to "https://pgm.dev/" + mapOf( + "name" to name, + "description" to description, + "mainClass" to "dev.pgm.events.EventsPlugin", + "version" to version, + "commitHash" to commitHash, + "url" to "https://pgm.dev/" + ) ) } } diff --git a/buildSrc/build.gradle.kts b/buildSrc/build.gradle.kts index 7afcf6e..78fc49b 100644 --- a/buildSrc/build.gradle.kts +++ b/buildSrc/build.gradle.kts @@ -9,7 +9,7 @@ repositories { } dependencies { - implementation("com.gradleup.shadow:shadow-gradle-plugin:8.3.0") - implementation("com.diffplug.spotless:spotless-plugin-gradle:7.0.0.BETA4") - implementation("de.skuzzle.restrictimports:restrict-imports-gradle-plugin:2.6.0") + implementation("com.gradleup.shadow:com.gradleup.shadow.gradle.plugin:9.3.1") + implementation("com.diffplug.gradle.spotless:com.diffplug.gradle.spotless.gradle.plugin:8.2.0") + implementation("de.skuzzle.restrictimports:de.skuzzle.restrictimports.gradle.plugin:3.0.0") } \ No newline at end of file diff --git a/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts b/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts index 94c6609..3ddca4c 100644 --- a/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts +++ b/buildSrc/src/main/kotlin/buildlogic.java-conventions.gradle.kts @@ -19,11 +19,14 @@ repositories { } dependencies { - compileOnly("dev.pgm.paper:paper-api:1.8_1.21.1-SNAPSHOT") + api("org.jspecify:jspecify:1.0.0") + compileOnly("dev.pgm.paper:paper-api:1.8_1.21.10-SNAPSHOT") compileOnly("tc.oc.pgm:core:0.16-SNAPSHOT") - compileOnly("net.md-5:bungeecord-chat:1.20-R0.2-deprecated+build.18") + compileOnly("net.kyori:adventure-api:4.26.1") + compileOnly("net.kyori:adventure-text-serializer-plain:4.26.1") + compileOnly("net.md-5:bungeecord-chat:1.21-R0.2") compileOnly("org.incendo:cloud-annotations:2.0.0") - compileOnly("org.jetbrains:annotations:22.0.0") + compileOnly("org.jetbrains:annotations:26.0.2-1") } group = "dev.pgm" @@ -31,10 +34,10 @@ version = "1.0.0-SNAPSHOT" description = "Manage PvP tournament events" tasks { - withType() { + withType { options.encoding = "UTF-8" } - withType() { + withType { options.encoding = "UTF-8" } } @@ -43,14 +46,16 @@ spotless { ratchetFrom = "origin/master" java { removeUnusedImports() - palantirJavaFormat("2.47.0").style("GOOGLE").formatJavadoc(true) + trimTrailingWhitespace() + formatAnnotations() + palantirJavaFormat("2.85.0").style("GOOGLE").formatJavadoc(true) } } restrictImports { group { - reason = "Use org.jetbrains.annotations to add annotations" + reason = "Use org.jspecify.annotations to add annotations, or org.jetbrains.annotations if needed" bannedImports = listOf("javax.annotation.**") } group { diff --git a/buildSrc/src/main/kotlin/extensions.kt b/buildSrc/src/main/kotlin/extensions.kt index a173b54..beb6f54 100644 --- a/buildSrc/src/main/kotlin/extensions.kt +++ b/buildSrc/src/main/kotlin/extensions.kt @@ -1,5 +1,4 @@ import org.gradle.api.Project -import java.io.ByteArrayOutputStream fun Project.latestCommitHash(): String { @@ -7,10 +6,8 @@ fun Project.latestCommitHash(): String { } fun Project.runGitCommand(args: List): String { - val byteOut = ByteArrayOutputStream() - exec { - commandLine = listOf("git") + args - standardOutput = byteOut - } - return byteOut.toString(Charsets.UTF_8.name()).trim() + return providers.exec { + commandLine("git") + args(args) + }.standardOutput.asText.get().trim() } \ No newline at end of file diff --git a/gradle.properties b/gradle.properties new file mode 100644 index 0000000..5ad6974 --- /dev/null +++ b/gradle.properties @@ -0,0 +1 @@ +org.gradle.configuration-cache=true diff --git a/gradle/wrapper/gradle-wrapper.jar b/gradle/wrapper/gradle-wrapper.jar index a4b76b9..f8e1ee3 100644 Binary files a/gradle/wrapper/gradle-wrapper.jar and b/gradle/wrapper/gradle-wrapper.jar differ diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 9355b41..23449a2 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.10-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-9.2.1-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/gradlew b/gradlew index f5feea6..adff685 100755 --- a/gradlew +++ b/gradlew @@ -1,7 +1,7 @@ #!/bin/sh # -# Copyright © 2015-2021 the original authors. +# Copyright © 2015 the original authors. # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. @@ -86,8 +86,7 @@ done # shellcheck disable=SC2034 APP_BASE_NAME=${0##*/} # Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036) -APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s -' "$PWD" ) || exit +APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit # Use the maximum available, or set MAX_FD != -1 to use that value. MAX_FD=maximum @@ -115,7 +114,6 @@ case "$( uname )" in #( NONSTOP* ) nonstop=true ;; esac -CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar # Determine the Java command to use to start the JVM. @@ -173,7 +171,6 @@ fi # For Cygwin or MSYS, switch paths to Windows format before running java if "$cygwin" || "$msys" ; then APP_HOME=$( cygpath --path --mixed "$APP_HOME" ) - CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" ) JAVACMD=$( cygpath --unix "$JAVACMD" ) @@ -206,15 +203,14 @@ fi DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"' # Collect all arguments for the java command: -# * DEFAULT_JVM_OPTS, JAVA_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, +# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments, # and any embedded shellness will be escaped. # * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be # treated as '${Hostname}' itself on the command line. set -- \ "-Dorg.gradle.appname=$APP_BASE_NAME" \ - -classpath "$CLASSPATH" \ - org.gradle.wrapper.GradleWrapperMain \ + -jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \ "$@" # Stop when "xargs" is not available. diff --git a/gradlew.bat b/gradlew.bat new file mode 100644 index 0000000..c4bdd3a --- /dev/null +++ b/gradlew.bat @@ -0,0 +1,93 @@ +@rem +@rem Copyright 2015 the original author or authors. +@rem +@rem Licensed under the Apache License, Version 2.0 (the "License"); +@rem you may not use this file except in compliance with the License. +@rem You may obtain a copy of the License at +@rem +@rem https://www.apache.org/licenses/LICENSE-2.0 +@rem +@rem Unless required by applicable law or agreed to in writing, software +@rem distributed under the License is distributed on an "AS IS" BASIS, +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +@rem See the License for the specific language governing permissions and +@rem limitations under the License. +@rem +@rem SPDX-License-Identifier: Apache-2.0 +@rem + +@if "%DEBUG%"=="" @echo off +@rem ########################################################################## +@rem +@rem Gradle startup script for Windows +@rem +@rem ########################################################################## + +@rem Set local scope for the variables with windows NT shell +if "%OS%"=="Windows_NT" setlocal + +set DIRNAME=%~dp0 +if "%DIRNAME%"=="" set DIRNAME=. +@rem This is normally unused +set APP_BASE_NAME=%~n0 +set APP_HOME=%DIRNAME% + +@rem Resolve any "." and ".." in APP_HOME to make it shorter. +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi + +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script. +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m" + +@rem Find java.exe +if defined JAVA_HOME goto findJavaFromJavaHome + +set JAVA_EXE=java.exe +%JAVA_EXE% -version >NUL 2>&1 +if %ERRORLEVEL% equ 0 goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:findJavaFromJavaHome +set JAVA_HOME=%JAVA_HOME:"=% +set JAVA_EXE=%JAVA_HOME%/bin/java.exe + +if exist "%JAVA_EXE%" goto execute + +echo. 1>&2 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2 +echo. 1>&2 +echo Please set the JAVA_HOME variable in your environment to match the 1>&2 +echo location of your Java installation. 1>&2 + +goto fail + +:execute +@rem Setup the command line + + + +@rem Execute Gradle +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %* + +:end +@rem End local scope for the variables with windows NT shell +if %ERRORLEVEL% equ 0 goto mainEnd + +:fail +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of +rem the _cmd.exe /c_ return code! +set EXIT_CODE=%ERRORLEVEL% +if %EXIT_CODE% equ 0 set EXIT_CODE=1 +if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE% +exit /b %EXIT_CODE% + +:mainEnd +if "%OS%"=="Windows_NT" endlocal + +:omega diff --git a/src/main/java/dev/pgm/events/api/teams/ConfigTeams.java b/src/main/java/dev/pgm/events/api/teams/ConfigTeams.java index 9f12d3d..45662f3 100644 --- a/src/main/java/dev/pgm/events/api/teams/ConfigTeams.java +++ b/src/main/java/dev/pgm/events/api/teams/ConfigTeams.java @@ -24,17 +24,16 @@ public List getTeams() { private static List parseTournamentTeams(File teamsFolder, File teamsFile) { if (!teamsFolder.exists()) teamsFolder.mkdirs(); - List teamList = new ArrayList(); + List teamList = new ArrayList<>(); for (File child : teamsFolder.listFiles((file) -> file.getName().toLowerCase().endsWith(".yml"))) { FileConfiguration config = YamlConfiguration.loadConfiguration(child); String teamName = config.getString("name"); - List players = - config.getStringList("players").stream() - .map(String::trim) - .map(UUID::fromString) - .map(x -> TournamentPlayer.create(x, true)) - .collect(Collectors.toList()); + List players = config.getStringList("players").stream() + .map(String::trim) + .map(UUID::fromString) + .map(x -> TournamentPlayer.create(x, true)) + .collect(Collectors.toList()); teamList.add(TournamentTeam.create(teamName, players)); } @@ -43,24 +42,22 @@ private static List parseTournamentTeams(File teamsFolder, File YamlConfiguration teamsConfig = YamlConfiguration.loadConfiguration(teamsFile); for (Object object : teamsConfig.getList("teams")) { if (!(object instanceof Map)) { - System.out.println( - "Invalid type in teams.yml (" - + object.getClass().getName() - + ": " - + object.toString() - + ")! Skipping..."); + System.out.println("Invalid type in teams.yml (" + + object.getClass().getName() + + ": " + + object + + ")! Skipping..."); continue; } Map team = (Map) object; String teamName = (String) team.get("name"); - List players = - ((List) team.get("players")) - .stream() - .map(String::trim) - .map(UUID::fromString) - .map(x -> TournamentPlayer.create(x, true)) - .collect(Collectors.toList()); + List players = ((List) team.get("players")) + .stream() + .map(String::trim) + .map(UUID::fromString) + .map(x -> TournamentPlayer.create(x, true)) + .collect(Collectors.toList()); teamList.add(TournamentTeam.create(teamName, players)); } diff --git a/src/main/java/dev/pgm/events/commands/CommandException.java b/src/main/java/dev/pgm/events/commands/CommandException.java index 2cf1485..1f210db 100644 --- a/src/main/java/dev/pgm/events/commands/CommandException.java +++ b/src/main/java/dev/pgm/events/commands/CommandException.java @@ -4,7 +4,7 @@ import net.kyori.adventure.text.Component; import net.kyori.adventure.util.ComponentMessageThrowable; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; public class CommandException extends RuntimeException implements ComponentMessageThrowable { diff --git a/src/main/java/dev/pgm/events/commands/TournamentAdminCommands.java b/src/main/java/dev/pgm/events/commands/TournamentAdminCommands.java index 4256a97..1df8359 100644 --- a/src/main/java/dev/pgm/events/commands/TournamentAdminCommands.java +++ b/src/main/java/dev/pgm/events/commands/TournamentAdminCommands.java @@ -54,7 +54,8 @@ public void register( for (TournamentPlayer player : team.getPlayers()) { Player bukkit = Bukkit.getPlayer(player.getUUID()); MatchPlayer mp = matchManager.getPlayer(bukkit); - if (bukkit != null && Integration.isVanished(bukkit)) Integration.setVanished(mp, false, false); + if (bukkit != null && Integration.isVanished(bukkit)) + Integration.setVanished(mp, false, false); } teamManager.addTeam(team); @@ -65,13 +66,12 @@ public void register( @CommandDescription("List all loaded teams") @Permission("events.staff") public void list(CommandSender sender, TournamentTeamRegistry registry) { - sender.sendMessage( - ChatColor.GOLD - + "------- " - + ChatColor.AQUA - + "Registered Teams" - + ChatColor.GOLD - + " -------"); + sender.sendMessage(ChatColor.GOLD + + "------- " + + ChatColor.AQUA + + "Registered Teams" + + ChatColor.GOLD + + " -------"); for (TournamentTeam team : registry.getTeams()) sender.sendMessage(ChatColor.AQUA + "- " + team.getName()); sender.sendMessage(ChatColor.YELLOW + "Run /tourney info to see player roster!"); @@ -87,13 +87,12 @@ public void info( TournamentTeam team = registry.getTeam(name); if (team == null) throw new CommandException("Team not found!"); - sender.sendMessage( - ChatColor.GOLD - + "------- " - + ChatColor.AQUA - + team.getName() - + ChatColor.GOLD - + " -------"); + sender.sendMessage(ChatColor.GOLD + + "------- " + + ChatColor.AQUA + + team.getName() + + ChatColor.GOLD + + " -------"); for (TournamentPlayer player : team.getPlayers()) { String playerName = player.getUUID().toString() + ChatColor.GRAY + " (player hasn't logged on)"; diff --git a/src/main/java/dev/pgm/events/commands/VetoCommands.java b/src/main/java/dev/pgm/events/commands/VetoCommands.java index 8539c00..0a6c219 100644 --- a/src/main/java/dev/pgm/events/commands/VetoCommands.java +++ b/src/main/java/dev/pgm/events/commands/VetoCommands.java @@ -22,23 +22,20 @@ public void veto( TournamentTeamManager teamManager, TournamentFormat format, @Argument("map") Integer option) { - if (format.currentRound() == null || !(format.currentRound() instanceof VetoRound)) + if (format.currentRound() == null || !(format.currentRound() instanceof VetoRound vetoRound)) throw new CommandException("Veto round is not currently running!"); - if (!(sender instanceof Player)) + if (!(sender instanceof Player player)) throw new CommandException("Only players can run this command!"); - Player player = (Player) sender; Optional team = teamManager.tournamentTeamPlayer((player).getUniqueId()); - if (!team.isPresent()) - throw new CommandException("Only players on teams can run this command!"); + if (team.isEmpty()) throw new CommandException("Only players on teams can run this command!"); if (!team.get().canVeto(player)) throw new CommandException("You are not registered as a vetoer for this team!"); try { int num = option - 1; - VetoRound vetoRound = (VetoRound) format.currentRound(); if (!vetoRound.validVetoNumber(num)) throw new CommandException("That is not a valid veto number: " + (num + 1)); diff --git a/src/main/java/dev/pgm/events/commands/providers/TournamentProvider.java b/src/main/java/dev/pgm/events/commands/providers/TournamentProvider.java index e03bbd3..a188f24 100644 --- a/src/main/java/dev/pgm/events/commands/providers/TournamentProvider.java +++ b/src/main/java/dev/pgm/events/commands/providers/TournamentProvider.java @@ -6,8 +6,8 @@ import dev.pgm.events.format.rounds.format.FormatRound; import java.util.Optional; import org.bukkit.command.CommandSender; -import org.jetbrains.annotations.NotNull; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.NonNull; +import org.jspecify.annotations.Nullable; import tc.oc.pgm.lib.org.incendo.cloud.context.CommandContext; import tc.oc.pgm.lib.org.incendo.cloud.exception.CommandExecutionException; import tc.oc.pgm.lib.org.incendo.cloud.injection.ParameterInjector; @@ -23,8 +23,8 @@ public TournamentProvider(TournamentManager tournamentManager) { @Override public @Nullable TournamentFormat create( - @NotNull CommandContext context, - @NotNull AnnotationAccessor annotationAccessor) { + @NonNull CommandContext context, + @NonNull AnnotationAccessor annotationAccessor) { Optional tournamentFormat = tournamentManager.currentTournament(); if (tournamentFormat.isPresent()) { TournamentFormat format = tournamentFormat.get(); diff --git a/src/main/java/dev/pgm/events/format/RoundHolder.java b/src/main/java/dev/pgm/events/format/RoundHolder.java index 51259ea..601a526 100644 --- a/src/main/java/dev/pgm/events/format/RoundHolder.java +++ b/src/main/java/dev/pgm/events/format/RoundHolder.java @@ -44,8 +44,7 @@ public TournamentRound nextRound(Match match) { rounds.get(currentRound).cleanup(match); } currentRound++; - TournamentRound round = rounds.get(currentRound); - return round; + return rounds.get(currentRound); } public TournamentRound currentRound() { diff --git a/src/main/java/dev/pgm/events/format/TournamentFormatImpl.java b/src/main/java/dev/pgm/events/format/TournamentFormatImpl.java index 1c262a2..2331653 100644 --- a/src/main/java/dev/pgm/events/format/TournamentFormatImpl.java +++ b/src/main/java/dev/pgm/events/format/TournamentFormatImpl.java @@ -153,15 +153,7 @@ private void broadcastScore() { FormattedScore scores = roundHolder.scores(teamManager).formattedScore(teamManager); Bukkit.getScheduler() .scheduleSyncDelayedTask( - EventsPlugin.get(), - new Runnable() { - - @Override - public void run() { - Bukkit.broadcastMessage(scores.condensed()); - } - }, - 3 * 20); + EventsPlugin.get(), () -> Bukkit.broadcastMessage(scores.condensed()), 3 * 20); } public void onEnd(Match match, Optional winner) { diff --git a/src/main/java/dev/pgm/events/format/rounds/format/FormatRound.java b/src/main/java/dev/pgm/events/format/rounds/format/FormatRound.java index 0a56d93..9275a09 100644 --- a/src/main/java/dev/pgm/events/format/rounds/format/FormatRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/format/FormatRound.java @@ -57,7 +57,7 @@ public void cleanup(Match match) { @Override public Map scores() { - Map scores = new HashMap(); + Map scores = new HashMap<>(); if (winner != null) scores.put(winner, 1); return scores; diff --git a/src/main/java/dev/pgm/events/format/rounds/format/FormatRoundSettings.java b/src/main/java/dev/pgm/events/format/rounds/format/FormatRoundSettings.java index 668e39d..26bf220 100644 --- a/src/main/java/dev/pgm/events/format/rounds/format/FormatRoundSettings.java +++ b/src/main/java/dev/pgm/events/format/rounds/format/FormatRoundSettings.java @@ -38,7 +38,6 @@ public TournamentRound newRound(TournamentFormat format) { @Override public TournamentRound newRound(TournamentFormat format, String id) { - return new FormatRoundSettings(id, name, new ArrayList(rounds), bestOf) - .newRound(format); + return new FormatRoundSettings(id, name, new ArrayList<>(rounds), bestOf).newRound(format); } } diff --git a/src/main/java/dev/pgm/events/format/rounds/format/FormatTournamentImpl.java b/src/main/java/dev/pgm/events/format/rounds/format/FormatTournamentImpl.java index f19d765..504a4d0 100644 --- a/src/main/java/dev/pgm/events/format/rounds/format/FormatTournamentImpl.java +++ b/src/main/java/dev/pgm/events/format/rounds/format/FormatTournamentImpl.java @@ -12,7 +12,7 @@ public class FormatTournamentImpl extends TournamentFormatImpl { - private FormatRound formatRound; + private final FormatRound formatRound; public FormatTournamentImpl( TournamentTeamManager teamManager, RoundReferenceHolder references, FormatRound formatRound) { @@ -32,7 +32,7 @@ public FormatTournamentImpl( @Override public void onEnd(Match match, Optional winner) { - formatRound.setWinner(match, winner.isPresent() ? winner.get() : null); + formatRound.setWinner(match, winner.orElse(null)); } public FormatRound getFormatRound() { diff --git a/src/main/java/dev/pgm/events/format/rounds/replay/ReplayDescription.java b/src/main/java/dev/pgm/events/format/rounds/replay/ReplayDescription.java index 5f30bca..e95ed71 100644 --- a/src/main/java/dev/pgm/events/format/rounds/replay/ReplayDescription.java +++ b/src/main/java/dev/pgm/events/format/rounds/replay/ReplayDescription.java @@ -16,12 +16,16 @@ public ReplayDescription(ReplayRound round) { @Override public BaseComponent roundInfo() { - if (round.phase() != RoundPhase.FINISHED) // haven't yet decided if we're gonna play if here - return new TextComponent(ChatColor.GRAY + "Replay tied round"); - - if (round.shouldShowInHistory()) // not gonna replay - return new TextComponent( + if (round.phase() != RoundPhase.FINISHED) { + // haven't yet decided if we're gonna play if here + return new TextComponent(ChatColor.GRAY + "Replay tied round"); + } + + if (round.shouldShowInHistory()) { + // not gonna replay + return new TextComponent( "" + ChatColor.GRAY + ChatColor.STRIKETHROUGH + "Not replaying a round"); + } return new TextComponent("Error replaying a round"); } diff --git a/src/main/java/dev/pgm/events/format/rounds/replay/ReplayRound.java b/src/main/java/dev/pgm/events/format/rounds/replay/ReplayRound.java index a4d65a1..2f9fd45 100644 --- a/src/main/java/dev/pgm/events/format/rounds/replay/ReplayRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/replay/ReplayRound.java @@ -8,7 +8,6 @@ import java.util.List; import java.util.Map; import java.util.Optional; -import java.util.stream.Collectors; import tc.oc.pgm.api.match.Match; public class ReplayRound extends AbstractRound { @@ -29,18 +28,17 @@ public ReplayDescription describe() { @Override public void start(Match match) { setPhase(RoundPhase.RUNNING); - List rounds = - settings().referenceSettings().stream() - .map(x -> tournament().references().round(x.targetID())) - .filter(Optional::isPresent) - .map(Optional::get) - .filter(this::tiedRound) - .collect(Collectors.toList()); + List rounds = settings().referenceSettings().stream() + .map(x -> tournament().references().round(x.targetID())) + .filter(Optional::isPresent) + .map(Optional::get) + .filter(this::tiedRound) + .toList(); if (rounds.size() == 1) { // 1 round has been tied, therefore play it isReplaying = true; - TournamentRound toReplay = rounds.get(0); + TournamentRound toReplay = rounds.getFirst(); tournament().addRoundAfterCurrent(toReplay.settings(), settings().futureID()); } diff --git a/src/main/java/dev/pgm/events/format/rounds/resultfrom/ResultFromRound.java b/src/main/java/dev/pgm/events/format/rounds/resultfrom/ResultFromRound.java index 108b400..12e45bb 100644 --- a/src/main/java/dev/pgm/events/format/rounds/resultfrom/ResultFromRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/resultfrom/ResultFromRound.java @@ -10,7 +10,7 @@ public class ResultFromRound extends AbstractRound { - private TournamentFormat format; + private final TournamentFormat format; public ResultFromRound(TournamentFormat format, ResultFromSettings settings) { super(format, settings); diff --git a/src/main/java/dev/pgm/events/format/rounds/single/SingleRound.java b/src/main/java/dev/pgm/events/format/rounds/single/SingleRound.java index 33b1281..63718b0 100644 --- a/src/main/java/dev/pgm/events/format/rounds/single/SingleRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/single/SingleRound.java @@ -24,8 +24,8 @@ public class SingleRound extends AbstractRound { private final Map scoreMap; - private String fullMapName = ""; - private RoundDescription roundDescription; + private String fullMapName; + private final RoundDescription roundDescription; private RoundPhase roundPhase; public SingleRound(TournamentFormat format, SingleRoundOptions options) { diff --git a/src/main/java/dev/pgm/events/format/rounds/single/SingleRoundDescription.java b/src/main/java/dev/pgm/events/format/rounds/single/SingleRoundDescription.java index 285c2df..69eb4db 100644 --- a/src/main/java/dev/pgm/events/format/rounds/single/SingleRoundDescription.java +++ b/src/main/java/dev/pgm/events/format/rounds/single/SingleRoundDescription.java @@ -26,30 +26,23 @@ public SingleRoundDescription(String mapName, SingleRound singleRound, Tournamen @Override public BaseComponent roundInfo() { - switch (singleRound.phase()) { - case UNLOADED: - return new TextComponent(defString); - case WAITING: - return new TextComponent(defString + " - " + ChatColor.GRAY + "Waiting"); - case RUNNING: - return new TextComponent(defString + " - " + ChatColor.GREEN + "Running"); - case FINISHED: - return new TextComponent(defString + " - " + winnersString()); - } - return new TextComponent("NULL"); + return switch (singleRound.phase()) { + case UNLOADED -> new TextComponent(defString); + case WAITING -> new TextComponent(defString + " - " + ChatColor.GRAY + "Waiting"); + case RUNNING -> new TextComponent(defString + " - " + ChatColor.GREEN + "Running"); + case FINISHED -> new TextComponent(defString + " - " + winnersString()); + }; } private String winnersString() { Collection teams = singleRound.scores().keySet(); - if (teams.size() == 0) { - // draw - return drawString(); + if (teams.isEmpty()) { + return drawString(); // draw } - String teamString = - teams.stream() - .map(x -> format.teamManager().formattedName(x)) - .collect(Collectors.joining(ChatColor.GRAY + ", ")); + String teamString = teams.stream() + .map(x -> format.teamManager().formattedName(x)) + .collect(Collectors.joining(ChatColor.GRAY + ", ")); teamString += " won"; return teamString; diff --git a/src/main/java/dev/pgm/events/format/rounds/veto/VetoController.java b/src/main/java/dev/pgm/events/format/rounds/veto/VetoController.java index 514c4c4..955e47b 100644 --- a/src/main/java/dev/pgm/events/format/rounds/veto/VetoController.java +++ b/src/main/java/dev/pgm/events/format/rounds/veto/VetoController.java @@ -12,7 +12,7 @@ import java.util.List; import java.util.Optional; import java.util.Random; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; public class VetoController { @@ -36,11 +36,13 @@ public VetoController( } public boolean hasMoreVetoing() { - if (options.size() == 1) // only one map left - return false; + if (options.size() == 1) { + return false; // only one map left + } - for (int i = vetoIndex; i < settings.vetoList().size(); i++) + for (int i = vetoIndex; i < settings.vetoList().size(); i++) { if (settings.vetoList().get(i).team > 0) return true; // teams still get to vote + } return true; } @@ -50,8 +52,9 @@ public VetoSettings.VetoType currentType() { } public Duration currentVetoDuration() { - if (settings.vetoList().get(vetoIndex).vetoDuration != null) + if (settings.vetoList().get(vetoIndex).vetoDuration != null) { return settings.vetoList().get(vetoIndex).vetoDuration; + } return settings.vetoTime(); } @@ -68,8 +71,9 @@ public void completeVetos() { } public VetoHistory veto(@Nullable TournamentTeam team, int choice) { - if (!hasMoreVetoing()) // maybe throw an exception? - return null; + if (!hasMoreVetoing()) { + return null; // maybe throw an exception? + } VetoSettings.Veto veto = settings.vetoList().get(vetoIndex); VetoOption vetoOption = options.remove(choice); @@ -122,7 +126,7 @@ private void chooseFirst(VetoOption option, TournamentTeam selectingTeam) { if (round instanceof VetoRound) ((VetoRound) round).setSelectingTeam(selectingTeam); else if (round instanceof FormatRound) ((FormatRound) round).setSelectingTeam(selectingTeam); - toPlay.add(0, round); + toPlay.addFirst(round); } } diff --git a/src/main/java/dev/pgm/events/format/rounds/veto/VetoCountdown.java b/src/main/java/dev/pgm/events/format/rounds/veto/VetoCountdown.java index 540b15d..f60ae78 100644 --- a/src/main/java/dev/pgm/events/format/rounds/veto/VetoCountdown.java +++ b/src/main/java/dev/pgm/events/format/rounds/veto/VetoCountdown.java @@ -36,8 +36,9 @@ public void onTick(Duration remaining, Duration total) { long origSeconds = total.getSeconds(); if ((secondsLeft <= 10 && secondsLeft % 5 == 0) - || (secondsLeft % 30 == 0 && origSeconds - secondsLeft > 20)) // announce it - announceRemaining(); + || (secondsLeft % 30 == 0 && origSeconds - secondsLeft > 20)) { + announceRemaining(); // announce it + } } @Override @@ -48,7 +49,7 @@ public void onStart(Duration remaining, Duration total) { private void announceRemaining() { Optional teamOpt = controller.picking(); - if (!teamOpt.isPresent()) return; + if (teamOpt.isEmpty()) return; TournamentTeam team = teamOpt.get(); team.sendMessage(vetoRound.describe().optionsHeader(controller.currentType())); diff --git a/src/main/java/dev/pgm/events/format/rounds/veto/VetoDescription.java b/src/main/java/dev/pgm/events/format/rounds/veto/VetoDescription.java index 1f6d35e..0652b77 100644 --- a/src/main/java/dev/pgm/events/format/rounds/veto/VetoDescription.java +++ b/src/main/java/dev/pgm/events/format/rounds/veto/VetoDescription.java @@ -31,10 +31,9 @@ public BaseComponent roundInfo() { case WAITING: TextComponent waiting = new TextComponent(ChatColor.GREEN + "Deciding veto order with veto decider"); - waiting.setHoverEvent( - new HoverEvent( - HoverEvent.Action.SHOW_TEXT, - new BaseComponent[] {tournamentFormat.currentRound().describe().roundInfo()})); + waiting.setHoverEvent(new HoverEvent( + HoverEvent.Action.SHOW_TEXT, + new BaseComponent[] {tournamentFormat.currentRound().describe().roundInfo()})); return waiting; case RUNNING: TextComponent running = new TextComponent(ChatColor.GREEN + "Veto process is running now"); @@ -58,7 +57,7 @@ private BaseComponent[] formattedVetosSoFar() { messages[i] = new TextComponent(fromHistory(i, true, history.get(i))); } - if (history.size() > 0) { + if (!history.isEmpty()) { // add last line with no new line after messages[vetoCount - 1] = new TextComponent(fromHistory(vetoCount - 1, false, history.get(vetoCount - 1))); @@ -76,7 +75,7 @@ private String fromHistory(int index, boolean newLine, VetoHistory history) { } public String formatHistory(VetoHistory history) { - String prefix = ""; + String prefix; if (history.team() == null) { prefix = ChatColor.GOLD + "RANDOM"; } else { @@ -101,14 +100,10 @@ public String countdown(TournamentTeam picking, VetoSettings.VetoType type) { } private String actionWord(VetoSettings.VetoType type) { - switch (type) { - case BAN: - return ChatColor.RED + "BAN"; - case CHOOSE_FIRST: - case CHOOSE_LAST: - return ChatColor.GREEN + "PLAY"; - } - return "NULL_ACTION"; + return switch (type) { + case BAN -> ChatColor.RED + "BAN"; + case CHOOSE_FIRST, CHOOSE_LAST -> ChatColor.GREEN + "PLAY"; + }; } public String optionsHeader(VetoSettings.VetoType type) { @@ -126,13 +121,8 @@ public List formatOptions(List options, VetoSetting for (int i = 0; i < options.size(); i++) { int vetoNumber = i + 1; VetoOption option = options.get(i); - ComponentBuilder comp = - new ComponentBuilder( - ChatColor.GOLD - + Integer.toString(vetoNumber) - + ". " - + ChatColor.AQUA - + option.name()); + ComponentBuilder comp = new ComponentBuilder( + ChatColor.GOLD + Integer.toString(vetoNumber) + ". " + ChatColor.AQUA + option.name()); /*comp.event(new HoverEvent(HoverEvent.Action.SHOW_TEXT, new BaseComponent[]{ new TextComponent(ChatColor.GRAY + "Click to " + actionWord(type)) diff --git a/src/main/java/dev/pgm/events/format/rounds/veto/VetoHistory.java b/src/main/java/dev/pgm/events/format/rounds/veto/VetoHistory.java index c6489fc..2fbd6d4 100644 --- a/src/main/java/dev/pgm/events/format/rounds/veto/VetoHistory.java +++ b/src/main/java/dev/pgm/events/format/rounds/veto/VetoHistory.java @@ -3,7 +3,7 @@ import dev.pgm.events.format.rounds.veto.settings.VetoOption; import dev.pgm.events.format.rounds.veto.settings.VetoSettings; import dev.pgm.events.team.TournamentTeam; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; public class VetoHistory { diff --git a/src/main/java/dev/pgm/events/format/rounds/veto/VetoRound.java b/src/main/java/dev/pgm/events/format/rounds/veto/VetoRound.java index a347174..f4ca65b 100644 --- a/src/main/java/dev/pgm/events/format/rounds/veto/VetoRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/veto/VetoRound.java @@ -40,19 +40,18 @@ public VetoDescription describe() { @Override public void load() { setPhase(RoundPhase.WAITING); - vetoDecider = - new VetoTournamentImpl( - tournament().teamManager(), - new TournamentRoundOptions( - false, - false, - false, - Duration.ofSeconds(20), - Duration.ofSeconds(30), - Duration.ofSeconds(40), - new BestOfCalculation<>(1)), - this, - tournament().references()); + vetoDecider = new VetoTournamentImpl( + tournament().teamManager(), + new TournamentRoundOptions( + false, + false, + false, + Duration.ofSeconds(20), + Duration.ofSeconds(30), + Duration.ofSeconds(40), + new BestOfCalculation<>(1)), + this, + tournament().references()); TournamentRound decider = settings().decider().newRound(vetoDecider); if (decider instanceof VetoSelectorRound) @@ -101,7 +100,7 @@ private void endVeto(Match match) { private void cycleVeto(Match match) { // cycle to next veto Optional picking = picking(); - if (!picking.isPresent()) { + if (picking.isEmpty()) { tryAutoVeto(match); return; } @@ -135,7 +134,7 @@ public boolean validVetoNumber(int number) { public void randomVeto(Match match) { Optional picking = picking(); - if (!picking.isPresent()) { + if (picking.isEmpty()) { tryAutoVeto(match); return; } @@ -164,8 +163,7 @@ private void doVeto(Match match, TournamentTeam team, int pick) { // maybe move this stuff away? if (!canVeto()) endVeto(match); - else // cycle veto - cycleVeto(match); + else cycleVeto(match); } public void veto(Match match, TournamentTeam team, int pick) { diff --git a/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorDescription.java b/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorDescription.java index 2e5199e..13b1bf5 100644 --- a/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorDescription.java +++ b/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorDescription.java @@ -14,10 +14,7 @@ public VetoSelectorDescription(VetoSelectorRound vetoSelectorRound) { @Override public BaseComponent roundInfo() { - return new TextComponent( - "VetoSelector round -> veto picker: " + vetoSelectorRound.getSelectingTeam() == null - ? null - : vetoSelectorRound.getSelectingTeam().getName()); + return new TextComponent(vetoSelectorRound.getSelectingTeam().getName()); } @Override diff --git a/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorRound.java b/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorRound.java index 7bfd4ab..a6d170b 100644 --- a/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorRound.java +++ b/src/main/java/dev/pgm/events/format/rounds/vetoselector/VetoSelectorRound.java @@ -30,7 +30,7 @@ public void start(Match match) { @Override public Map scores() { - Map scores = new HashMap(); + Map scores = new HashMap<>(); if (selectingTeam != null) scores.put(selectingTeam, 1); return scores; diff --git a/src/main/java/dev/pgm/events/format/score/TwoTeamFormattedScore.java b/src/main/java/dev/pgm/events/format/score/TwoTeamFormattedScore.java index c61f1e2..d1c570e 100644 --- a/src/main/java/dev/pgm/events/format/score/TwoTeamFormattedScore.java +++ b/src/main/java/dev/pgm/events/format/score/TwoTeamFormattedScore.java @@ -33,8 +33,13 @@ public String topLine() { } private String addPadding(String target, String otherString) { - if (target.length() < otherString.length()) - for (int i = 0; i < otherString.length() - target.length(); i++) target = " " + target; + if (target.length() < otherString.length()) { + StringBuilder targetBuilder = new StringBuilder(target); + for (int i = 0; i < otherString.length() - targetBuilder.length(); i++) { + targetBuilder.insert(0, " "); + } + target = targetBuilder.toString(); + } return target; } @@ -62,7 +67,7 @@ public String condensed() { return teamManager.formattedName(topTwo.first.team()) + " " + ChatColor.WHITE - + +topTwo.first.score() + + topTwo.first.score() + ChatColor.GRAY + " - " + ChatColor.WHITE diff --git a/src/main/java/dev/pgm/events/listeners/MatchLoadListener.java b/src/main/java/dev/pgm/events/listeners/MatchLoadListener.java index f31df00..3c898d5 100644 --- a/src/main/java/dev/pgm/events/listeners/MatchLoadListener.java +++ b/src/main/java/dev/pgm/events/listeners/MatchLoadListener.java @@ -18,12 +18,9 @@ public MatchLoadListener(TournamentTeamManager teamManager) { @EventHandler public void onLoad(MatchLoadEvent event) { - if (!event - .getMatch() - .hasModule( - TeamMatchModule - .class)) // shouldn't really ever happen, maybe ffa? just ignore that game - return; + if (!event.getMatch().hasModule(TeamMatchModule.class)) { + return; // shouldn't really ever happen, maybe ffa? just ignore that game + } Collection teams = event.getMatch().getModule(TeamMatchModule.class).getTeams(); teamManager.setupTeams(teams); diff --git a/src/main/java/dev/pgm/events/listeners/PlayerJoinListen.java b/src/main/java/dev/pgm/events/listeners/PlayerJoinListen.java index 43d35e8..544413a 100644 --- a/src/main/java/dev/pgm/events/listeners/PlayerJoinListen.java +++ b/src/main/java/dev/pgm/events/listeners/PlayerJoinListen.java @@ -82,7 +82,7 @@ public void beforeLogin(PlayerLoginEvent event) { public void vanish(PlayerJoinEvent event) { if (!event.getPlayer().isOp() && event.getPlayer().hasPermission("events.spectate.vanish") - && !manager.playerTeam(event.getPlayer().getUniqueId()).isPresent()) + && manager.playerTeam(event.getPlayer().getUniqueId()).isEmpty()) Integration.setVanished(PGM.get().getMatchManager().getPlayer(event.getPlayer()), true, true); } diff --git a/src/main/java/dev/pgm/events/ready/ReadyManager.java b/src/main/java/dev/pgm/events/ready/ReadyManager.java index 35c4f89..56f2b47 100644 --- a/src/main/java/dev/pgm/events/ready/ReadyManager.java +++ b/src/main/java/dev/pgm/events/ready/ReadyManager.java @@ -1,7 +1,7 @@ package dev.pgm.events.ready; import dev.pgm.events.utils.Response; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import tc.oc.pgm.api.match.Match; import tc.oc.pgm.api.party.Party; import tc.oc.pgm.api.player.MatchPlayer; diff --git a/src/main/java/dev/pgm/events/ready/ReadyManagerImpl.java b/src/main/java/dev/pgm/events/ready/ReadyManagerImpl.java index 10972b7..84748e8 100644 --- a/src/main/java/dev/pgm/events/ready/ReadyManagerImpl.java +++ b/src/main/java/dev/pgm/events/ready/ReadyManagerImpl.java @@ -8,7 +8,7 @@ import java.time.Duration; import net.kyori.adventure.text.TextComponent; import net.kyori.adventure.text.format.NamedTextColor; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import tc.oc.pgm.api.match.Match; import tc.oc.pgm.api.match.MatchPhase; import tc.oc.pgm.api.party.Party; diff --git a/src/main/java/dev/pgm/events/ready/ReadySystem.java b/src/main/java/dev/pgm/events/ready/ReadySystem.java index f3bc4ba..276fd82 100644 --- a/src/main/java/dev/pgm/events/ready/ReadySystem.java +++ b/src/main/java/dev/pgm/events/ready/ReadySystem.java @@ -3,7 +3,7 @@ import java.sql.Timestamp; import java.time.Duration; import java.time.Instant; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; public class ReadySystem { diff --git a/src/main/java/dev/pgm/events/team/DefaultTeamManager.java b/src/main/java/dev/pgm/events/team/DefaultTeamManager.java index 781bf36..1005538 100644 --- a/src/main/java/dev/pgm/events/team/DefaultTeamManager.java +++ b/src/main/java/dev/pgm/events/team/DefaultTeamManager.java @@ -9,7 +9,7 @@ import java.util.Optional; import java.util.UUID; import org.bukkit.ChatColor; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; import tc.oc.pgm.api.party.Competitor; import tc.oc.pgm.api.party.Party; import tc.oc.pgm.api.player.MatchPlayer; diff --git a/src/main/java/dev/pgm/events/utils/Components.java b/src/main/java/dev/pgm/events/utils/Components.java index 63aa8d2..40e213c 100644 --- a/src/main/java/dev/pgm/events/utils/Components.java +++ b/src/main/java/dev/pgm/events/utils/Components.java @@ -24,10 +24,10 @@ public static Component command(Style style, String command, String... cmdArgs) command = builder.toString(); return Component.text(command, style) - .clickEvent(ClickEvent.clickEvent(ClickEvent.Action.RUN_COMMAND, command)) - .hoverEvent( - Component.text("Click to run ", NamedTextColor.GREEN) - .append(Component.text(command, style))); + .clickEvent(ClickEvent.clickEvent( + ClickEvent.Action.RUN_COMMAND, ClickEvent.Payload.string(command))) + .hoverEvent(Component.text("Click to run ", NamedTextColor.GREEN) + .append(Component.text(command, style))); } private static String toArgument(String input) { diff --git a/src/main/java/dev/pgm/events/utils/JoinUtils.java b/src/main/java/dev/pgm/events/utils/JoinUtils.java index eff270c..6565502 100644 --- a/src/main/java/dev/pgm/events/utils/JoinUtils.java +++ b/src/main/java/dev/pgm/events/utils/JoinUtils.java @@ -18,8 +18,7 @@ public static Response canJoin(UUID uuid, Party party) { } public static boolean isPartyFull(Party party) { - if (party instanceof Team) { - Team team = (Team) party; + if (party instanceof Team team) { return team.getSize() >= team.getMaxPlayers(); } return false; diff --git a/src/main/java/dev/pgm/events/utils/Pair.java b/src/main/java/dev/pgm/events/utils/Pair.java index 793b4f4..0e13da2 100644 --- a/src/main/java/dev/pgm/events/utils/Pair.java +++ b/src/main/java/dev/pgm/events/utils/Pair.java @@ -11,6 +11,6 @@ public Pair(T first, U second) { } public static Pair create(T first, U second) { - return new Pair(first, second); + return new Pair<>(first, second); } } diff --git a/src/main/java/dev/pgm/events/utils/Response.java b/src/main/java/dev/pgm/events/utils/Response.java index e268912..8be3b7b 100644 --- a/src/main/java/dev/pgm/events/utils/Response.java +++ b/src/main/java/dev/pgm/events/utils/Response.java @@ -3,7 +3,7 @@ import static net.kyori.adventure.text.Component.text; import net.kyori.adventure.text.Component; -import org.jetbrains.annotations.Nullable; +import org.jspecify.annotations.Nullable; public class Response { diff --git a/src/main/java/dev/pgm/events/xml/MapFormatXMLParser.java b/src/main/java/dev/pgm/events/xml/MapFormatXMLParser.java index a051106..3fb0f48 100644 --- a/src/main/java/dev/pgm/events/xml/MapFormatXMLParser.java +++ b/src/main/java/dev/pgm/events/xml/MapFormatXMLParser.java @@ -19,14 +19,12 @@ public class MapFormatXMLParser { public static TournamentFormat parse(String name) { File poolsFolder = new File(EventsPlugin.get().getDataFolder(), "formats"); File xmlFile = new File(poolsFolder, name + ".xml"); - Document document = null; + Document document; try { document = new SAXBuilder().build(xmlFile); Element root = document.getRootElement(); return parse(root); - } catch (JDOMException e) { - e.printStackTrace(); - } catch (IOException e) { + } catch (JDOMException | IOException e) { e.printStackTrace(); } return null; @@ -48,7 +46,7 @@ public static TournamentFormat parse(Element root) throws JDOMException { TournamentFormat format = new TournamentFormatImpl( EventsPlugin.get().getTeamManager(), options, new RoundReferenceHolder()); - if (!root.getName().toLowerCase().equals("format")) + if (!root.getName().equalsIgnoreCase("format")) System.out.println( "Expecting root element to be format. Got " + root.getName() + " instead!"); diff --git a/src/main/java/dev/pgm/events/xml/RoundParser.java b/src/main/java/dev/pgm/events/xml/RoundParser.java index ea23595..f87f466 100644 --- a/src/main/java/dev/pgm/events/xml/RoundParser.java +++ b/src/main/java/dev/pgm/events/xml/RoundParser.java @@ -16,7 +16,6 @@ import dev.pgm.events.format.rounds.vetoselector.VetoSelectorSettings; import java.time.Duration; import java.util.ArrayList; -import java.util.Arrays; import java.util.List; import tc.oc.pgm.lib.org.jdom2.Element; @@ -29,8 +28,8 @@ public static TournamentRound parse(TournamentFormat format, Element round) { case "result-from" -> ResultFromParser.parse(format, round); case "format" -> FormatParser.parse(format, round); case "veto-selector" -> new VetoSelectorRound(format, new VetoSelectorSettings()); - default -> throw new IllegalArgumentException( - "Round " + round.getName() + " is not supported!"); + default -> + throw new IllegalArgumentException("Round " + round.getName() + " is not supported!"); }; } @@ -56,7 +55,7 @@ public static VetoRound parse(TournamentFormat format, Element element) { String id = element.getAttributeValue("id", "veto"); Element order = element.getChild("order"); if (order == null) throw new IllegalArgumentException("Order element is missing from veto!"); - Duration vetoTime = Duration.ofSeconds(30); + Duration vetoTime; try { vetoTime = Duration.ofSeconds(Long.parseLong(order.getAttributeValue("time", "30"))); } catch (NumberFormatException e) { @@ -65,7 +64,7 @@ public static VetoRound parse(TournamentFormat format, Element element) { } TournamentRound decider = - RoundParser.parse(format, element.getChild("decider").getChildren().get(0)); + RoundParser.parse(format, element.getChild("decider").getChildren().getFirst()); List options = constructVetoOptions(format, element.getChild("options")); List vetoList = constructVetoList(order, options.size()); @@ -76,8 +75,8 @@ public static VetoRound parse(TournamentFormat format, Element element) { } private static List constructVetoList(Element element, int numOptions) { - ArrayList vetos = new ArrayList(); - if (element.getChildren().size() == 0) { + ArrayList vetos = new ArrayList<>(); + if (element.getChildren().isEmpty()) { int until = Integer.parseInt(element.getAttributeValue("ban-until", "1")); int startingTeam = Integer.parseInt(element.getAttributeValue("starting-team", "2")); int numTeams = Integer.parseInt(element.getAttributeValue("teams", "2")); @@ -126,15 +125,14 @@ private static VetoSettings.Veto parseVeto(Element element) { } private static List constructVetoOptions(TournamentFormat format, Element element) { - ArrayList options = new ArrayList(); + ArrayList options = new ArrayList<>(); for (Element child : element.getChildren()) { RoundSettings round = RoundParser.parse(format, child).settings(); String defaultName = "Name not defined in XML!"; if (round instanceof SingleRoundOptions) defaultName = ((SingleRoundOptions) round).map(); - options.add( - new VetoOption(Arrays.asList(round), child.getAttributeValue("name", defaultName))); + options.add(new VetoOption(List.of(round), child.getAttributeValue("name", defaultName))); } return options; @@ -161,7 +159,7 @@ public static FormatRound parse(TournamentFormat format, Element element) { if (bestOfArgs == null) throw new IllegalArgumentException("No best-of specified on format!"); int bestOf = Integer.parseInt(bestOfArgs); - List rounds = new ArrayList(); + List rounds = new ArrayList<>(); for (Element child : element.getChildren()) { TournamentRound round = RoundParser.parse(format, child); rounds.add(round.settings());