Refactor and optimize redundant code across the project

Removed unused imports and variables to streamline the codebase. Consolidated lambda expressions and improved formatting for better readability. Simplified methods by removing unnecessary parameters and redundant logic.
This commit is contained in:
2025-03-01 01:22:13 +01:00
parent 816c429346
commit fa8d320da9
18 changed files with 29 additions and 60 deletions
+1 -2
View File
@@ -38,7 +38,6 @@ import java.util.stream.Collectors;
public class Main extends JavaPlugin { public class Main extends JavaPlugin {
private GameManager gameManager = null; private GameManager gameManager = null;
private Flag flag;
@Override @Override
public void onEnable() { public void onEnable() {
@@ -53,7 +52,7 @@ public class Main extends JavaPlugin {
this.gameManager = new GameManager(worldBorderApi); this.gameManager = new GameManager(worldBorderApi);
registerTeams(); //Skipped in reloadConfig if gameManager is not created yet registerTeams(); //Skipped in reloadConfig if gameManager is not created yet
loadPlayerStats(); //Skipped in reloadConfig if gameManager is not created yet loadPlayerStats(); //Skipped in reloadConfig if gameManager is not created yet
flag = new Flag(this, gameManager); Flag flag = new Flag(this, gameManager);
new CommandManager(this, gameManager, flag, worldBorderApi); new CommandManager(this, gameManager, flag, worldBorderApi);
//Ensuring immediate respawn is on in all worlds //Ensuring immediate respawn is on in all worlds
enableImmediateRespawn(); enableImmediateRespawn();
@@ -3,16 +3,10 @@ package com.alttd.ctf.commands.subcommands;
import com.alttd.ctf.commands.SubCommand; import com.alttd.ctf.commands.SubCommand;
import com.alttd.ctf.config.Messages; import com.alttd.ctf.config.Messages;
import com.alttd.ctf.game.GameManager; import com.alttd.ctf.game.GameManager;
import com.alttd.ctf.team.Team;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
import net.kyori.adventure.text.minimessage.tag.resolver.TagResolver;
import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List; import java.util.List;
import java.util.Optional;
@AllArgsConstructor @AllArgsConstructor
public class SkipPhase extends SubCommand { public class SkipPhase extends SubCommand {
@@ -4,7 +4,6 @@ import com.alttd.ctf.Main;
import com.alttd.ctf.game.GamePhase; import com.alttd.ctf.game.GamePhase;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import java.time.Duration; import java.time.Duration;
+1 -1
View File
@@ -195,7 +195,7 @@ public class Flag implements Runnable {
}); });
} }
LinkedList<Location> particleTrail = new LinkedList<>(); private final LinkedList<Location> particleTrail = new LinkedList<>();
private void spawnTrail() { private void spawnTrail() {
TeamColor color = winningTeam.getColor(); TeamColor color = winningTeam.getColor();
@@ -9,7 +9,6 @@ import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler; import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener; import org.bukkit.event.Listener;
import org.bukkit.event.player.PlayerInteractEvent; import org.bukkit.event.player.PlayerInteractEvent;
import org.bukkit.inventory.EquipmentSlot;
import java.util.Optional; import java.util.Optional;
@@ -15,7 +15,6 @@ import java.time.Duration;
import java.time.Instant; import java.time.Instant;
import java.util.HashMap; import java.util.HashMap;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.concurrent.ScheduledExecutorService; import java.util.concurrent.ScheduledExecutorService;
@Slf4j @Slf4j
@@ -23,7 +23,6 @@ import org.jetbrains.annotations.NotNull;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.Collections; import java.util.Collections;
import java.util.List;
import java.util.Optional; import java.util.Optional;
@Slf4j @Slf4j
@@ -71,18 +71,17 @@ public class EndedPhase implements GamePhaseExecutor {
return messages; return messages;
} else if (topTeams.size() > 1) { // Draw scenario, multiple teams have the same top score } else if (topTeams.size() > 1) { // Draw scenario, multiple teams have the same top score
messages.add(miniMessage.deserialize("<yellow>It's a draw! Top teams:</yellow>")); messages.add(miniMessage.deserialize("<yellow>It's a draw! Top teams:</yellow>"));
topTeams.forEach(team -> { topTeams.forEach(team -> messages.add(
messages.add(miniMessage.deserialize("<team> had <score> captures.", miniMessage.deserialize("<team> had <score> captures.",
Placeholder.component("team", team.getName()), Placeholder.component("team", team.getName()),
Placeholder.parsed("score", String.valueOf(highestScore)))); Placeholder.parsed("score", String.valueOf(highestScore)))));
});
addOtherTeamsScore(wins, highestScore, messages); addOtherTeamsScore(wins, highestScore, messages);
return messages; return messages;
} else { // Single winner } else { // Single winner
Team winner = topTeams.getFirst(); Team winner = topTeams.getFirst();
messages.add(miniMessage.deserialize("<green><team> has won with <score> captures!</green>", messages.add(miniMessage.deserialize("<green><team> has won with <score> captures!</green>",
Placeholder.component("team", winner.getName()), Placeholder.component("team", winner.getName()),
Placeholder.parsed("score", String.valueOf(highestScore)))); Placeholder.parsed("score", String.valueOf(highestScore))));
if (wins.size() <= 1) { if (wins.size() <= 1) {
return messages; return messages;
} }
@@ -97,8 +96,8 @@ public class EndedPhase implements GamePhaseExecutor {
wins.entrySet().stream() wins.entrySet().stream()
.filter(entry -> entry.getValue() < winningScore) .filter(entry -> entry.getValue() < winningScore)
.forEach(entry -> messages.add(miniMessage.deserialize("<yellow><team> had <score> captures.</yellow>", .forEach(entry -> messages.add(miniMessage.deserialize("<yellow><team> had <score> captures.</yellow>",
Placeholder.component("team", entry.getKey().getName()), Placeholder.component("team", entry.getKey().getName()),
Placeholder.parsed("score", String.valueOf(entry.getValue()))))); Placeholder.parsed("score", String.valueOf(entry.getValue())))));
} }
@Override @Override
@@ -36,14 +36,13 @@ public class GatheringPhase implements GamePhaseExecutor {
log.error("Unable to update world border due to missing Flag"); log.error("Unable to update world border due to missing Flag");
return; return;
} }
gameManager.getTeams().forEach(team -> { gameManager.getTeams()
team.getPlayers().forEach(teamPlayer -> { .forEach(team -> team.getPlayers().forEach(teamPlayer -> {
Player player = Bukkit.getPlayer(teamPlayer.getUuid()); Player player = Bukkit.getPlayer(teamPlayer.getUuid());
if (player == null || !player.isOnline()) { if (player == null || !player.isOnline()) {
return; return;
} }
teamPlayer.resetWorldBorder(player, worldBorderApi, nextPhase, flag.getFlagLocation()); teamPlayer.resetWorldBorder(player, worldBorderApi, nextPhase, flag.getFlagLocation());
}); }));
});
} }
} }
@@ -12,9 +12,7 @@ public class GameClassRetrieval {
public static HashMap<Integer, List<GameClass>> getGameClassesForAllTeams(GameManager gameManager) { public static HashMap<Integer, List<GameClass>> getGameClassesForAllTeams(GameManager gameManager) {
final HashMap<Integer, List<GameClass>> gameClasses = new HashMap<>(); final HashMap<Integer, List<GameClass>> gameClasses = new HashMap<>();
gameManager.getTeams().forEach(team -> { gameManager.getTeams().forEach(team -> gameClasses.put(team.getId(), getGameClassesForTeam(team)));
gameClasses.put(team.getId(), getGameClassesForTeam(team));
});
return gameClasses; return gameClasses;
} }
@@ -2,7 +2,6 @@ package com.alttd.ctf.game_class.creation;
import com.alttd.ctf.game_class.GameClass; import com.alttd.ctf.game_class.GameClass;
import com.alttd.ctf.game_class.implementations.Engineer; import com.alttd.ctf.game_class.implementations.Engineer;
import com.alttd.ctf.game_class.implementations.Fighter;
import com.alttd.ctf.team.TeamColor; import com.alttd.ctf.team.TeamColor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
@@ -1,7 +1,6 @@
package com.alttd.ctf.game_class.creation; package com.alttd.ctf.game_class.creation;
import com.alttd.ctf.game_class.GameClass; import com.alttd.ctf.game_class.GameClass;
import com.alttd.ctf.game_class.implementations.Fighter;
import com.alttd.ctf.game_class.implementations.Mage; import com.alttd.ctf.game_class.implementations.Mage;
import com.alttd.ctf.team.TeamColor; import com.alttd.ctf.team.TeamColor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -10,8 +9,6 @@ import org.bukkit.Material;
import org.bukkit.enchantments.Enchantment; import org.bukkit.enchantments.Enchantment;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.bukkit.inventory.meta.ItemMeta; import org.bukkit.inventory.meta.ItemMeta;
import org.bukkit.inventory.meta.PotionMeta;
import org.bukkit.potion.PotionType;
import org.jetbrains.annotations.Contract; import org.jetbrains.annotations.Contract;
import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.NotNull;
import org.jetbrains.annotations.Unmodifiable; import org.jetbrains.annotations.Unmodifiable;
@@ -1,7 +1,6 @@
package com.alttd.ctf.game_class.creation; package com.alttd.ctf.game_class.creation;
import com.alttd.ctf.game_class.GameClass; import com.alttd.ctf.game_class.GameClass;
import com.alttd.ctf.game_class.implementations.Fighter;
import com.alttd.ctf.game_class.implementations.Tank; import com.alttd.ctf.game_class.implementations.Tank;
import com.alttd.ctf.team.TeamColor; import com.alttd.ctf.team.TeamColor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@@ -14,7 +14,6 @@ import org.jetbrains.annotations.Unmodifiable;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
import java.util.stream.IntStream;
@Slf4j @Slf4j
public class TrapperCreator { public class TrapperCreator {
@@ -1,11 +1,9 @@
package com.alttd.ctf.game_class.implementations; package com.alttd.ctf.game_class.implementations;
import com.alttd.ctf.game_class.GameClass; import com.alttd.ctf.game_class.GameClass;
import com.alttd.ctf.team.TeamColor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.inventory.ItemStack; import org.bukkit.inventory.ItemStack;
import org.jetbrains.annotations.NotNull;
import java.util.List; import java.util.List;
-2
View File
@@ -2,8 +2,6 @@ package com.alttd.ctf.gui;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.inventory.Inventory; import org.bukkit.inventory.Inventory;
import org.bukkit.inventory.Merchant;
import org.bukkit.inventory.MerchantInventory;
import java.util.HashMap; import java.util.HashMap;
import java.util.UUID; import java.util.UUID;
@@ -56,9 +56,7 @@ public class DiscordTeam {
} }
Member nullableMember = guild.getMemberById(player.getDiscordID()); Member nullableMember = guild.getMemberById(player.getDiscordID());
if (nullableMember == null) { if (nullableMember == null) {
guild.retrieveMemberById(player.getDiscordID()).queue(member -> { guild.retrieveMemberById(player.getDiscordID()).queue(member -> consumer.apply(role, member));
consumer.apply(role, member);
});
} else { } else {
consumer.apply(role, nullableMember); consumer.apply(role, nullableMember);
} }
@@ -83,9 +81,7 @@ public class DiscordTeam {
gameManager.getTeams().forEach(otherTeam -> gameManager.getTeams().forEach(otherTeam ->
member.getRoles().stream() member.getRoles().stream()
.filter(otherRole -> otherRole.getIdLong() == otherTeam.getDiscordRole()) .filter(otherRole -> otherRole.getIdLong() == otherTeam.getDiscordRole())
.forEach(otherRole -> { .forEach(otherRole -> member.getGuild().removeRoleFromMember(member, otherRole).queue()));
member.getGuild().removeRoleFromMember(member, otherRole).queue();
}));
member.getGuild().addRoleToMember(member, role).queue(ignored -> kickFromVoiceIfNeeded(member)); member.getGuild().addRoleToMember(member, role).queue(ignored -> kickFromVoiceIfNeeded(member));
}); });
} }
@@ -2,8 +2,6 @@ package com.alttd.ctf.team;
import com.alttd.ctf.game.GameManager; import com.alttd.ctf.game.GameManager;
import com.alttd.ctf.game.GamePhase; import com.alttd.ctf.game.GamePhase;
import io.papermc.paper.scoreboard.numbers.NumberFormat;
import net.kyori.adventure.text.event.ClickEvent;
import net.kyori.adventure.text.format.*; import net.kyori.adventure.text.format.*;
import net.kyori.adventure.text.minimessage.MiniMessage; import net.kyori.adventure.text.minimessage.MiniMessage;
import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer; import net.kyori.adventure.text.serializer.plain.PlainTextComponentSerializer;
@@ -44,17 +42,17 @@ public class TeamScoreboard {
} }
protected void setScore(int newScore) { protected void setScore(int newScore) {
Objective objective = getOrCreateObjective("teamScores", "<gold>CTF score</gold>"); Objective objective = getOrCreateObjective();
Score score = objective.getScore(team.getLegacyTeamColor() + Score score = objective.getScore(team.getLegacyTeamColor() +
PlainTextComponentSerializer.plainText().serialize(team.getName())); PlainTextComponentSerializer.plainText().serialize(team.getName()));
score.setScore(newScore); score.setScore(newScore);
} }
private static Objective getOrCreateObjective(String internalName, String displayName) { private static Objective getOrCreateObjective() {
Objective objective = scoreboard.getObjective(internalName); Objective objective = scoreboard.getObjective("teamScores");
if (objective == null) { if (objective == null) {
objective = scoreboard.registerNewObjective(internalName, Criteria.DUMMY, objective = scoreboard.registerNewObjective("teamScores", Criteria.DUMMY,
MiniMessage.miniMessage().deserialize(displayName)); MiniMessage.miniMessage().deserialize("<gold>CTF score</gold>"));
objective.setDisplaySlot(DisplaySlot.SIDEBAR); objective.setDisplaySlot(DisplaySlot.SIDEBAR);
} }
return objective; return objective;
@@ -64,11 +62,11 @@ public class TeamScoreboard {
private static PhaseScore phaseScore = null; private static PhaseScore phaseScore = null;
private static void updateTime(GamePhase gamePhase, Duration duration) { private static void updateTime(GamePhase gamePhase, Duration duration) {
if (phaseScore == null) { if (phaseScore == null) {
phaseScore = new PhaseScore(gamePhase, getOrCreateObjective("teamScores", "<gold>CTF score</gold>") phaseScore = new PhaseScore(gamePhase, getOrCreateObjective()
.getScore(ChatColor.GREEN + PlainTextComponentSerializer.plainText().serialize(gamePhase.getDisplayName()))); .getScore(ChatColor.GREEN + PlainTextComponentSerializer.plainText().serialize(gamePhase.getDisplayName())));
} else if (phaseScore.gamePhase() != gamePhase) { } else if (phaseScore.gamePhase() != gamePhase) {
phaseScore.score.resetScore(); phaseScore.score.resetScore();
phaseScore = new PhaseScore(gamePhase, getOrCreateObjective("teamScores", "<gold>CTF score</gold>") phaseScore = new PhaseScore(gamePhase, getOrCreateObjective()
.getScore(ChatColor.GREEN + PlainTextComponentSerializer.plainText().serialize(gamePhase.getDisplayName()))); .getScore(ChatColor.GREEN + PlainTextComponentSerializer.plainText().serialize(gamePhase.getDisplayName())));
} }
phaseScore.score.setScore(duration.toMinutesPart() == 0 ? duration.toSecondsPart() : duration.toMinutesPart()); phaseScore.score.setScore(duration.toMinutesPart() == 0 ? duration.toSecondsPart() : duration.toMinutesPart());