From 69e981356cb0def3c60dc32e7065b86b9da0a411 Mon Sep 17 00:00:00 2001
From: ChanceSD <5256215+ChanceSD@users.noreply.github.com>
Date: Tue, 30 Apr 2024 19:56:42 +0100
Subject: [PATCH] Handle most IDE warnings
---
pvpmanager/pom.xml | 2 +-
.../me/chancesd/pvpmanager/PvPManager.java | 40 ++-----------------
.../chancesd/pvpmanager/command/Newbie.java | 14 +++----
.../me/chancesd/pvpmanager/command/PM.java | 26 ++++++------
.../me/chancesd/pvpmanager/command/PvP.java | 7 ++--
.../chancesd/pvpmanager/command/PvPInfo.java | 11 ++---
.../chancesd/pvpmanager/command/Worlds.java | 19 ++++-----
.../integration/ForceToggleDependency.java | 5 ++-
.../integration/hook/PlaceHolderAPI.java | 3 ++
.../integration/hook/SimpleClansHook.java | 1 +
.../integration/hook/TownyHook.java | 1 +
.../hook/worldguard}/WGListener.java | 2 +-
.../hook/worldguard}/WGListenerLegacy.java | 2 +-
.../WorldGuardLegacyHook.java | 3 +-
.../WorldGuardModernHook.java | 3 +-
.../listener/DebugEntityListener.java | 20 +++++-----
.../pvpmanager/listener/EntityListener.java | 16 +++++++-
.../pvpmanager/listener/MoveListener.java | 11 +++--
.../pvpmanager/listener/MoveListener1_9.java | 4 +-
.../pvpmanager/listener/PlayerListener.java | 1 +
.../listener/PlayerListener1_11.java | 1 -
.../pvpmanager/manager/ConfigManager.java | 4 +-
.../pvpmanager/manager/DependencyManager.java | 11 +++--
.../pvpmanager/manager/DisplayManager.java | 13 ------
.../pvpmanager/manager/PlayerManager.java | 7 ++--
.../pvpmanager/manager/UpdateManager.java | 1 -
.../pvpmanager/player/BasePlayer.java | 10 ++++-
.../pvpmanager/player/CombatPlayer.java | 4 +-
.../chancesd/pvpmanager/player/EcoPlayer.java | 4 +-
.../player/nametag/BukkitNameTag.java | 3 ++
.../chancesd/pvpmanager/setting/LogFile.java | 5 ++-
.../chancesd/pvpmanager/setting/Messages.java | 37 +++++++++++------
.../chancesd/pvpmanager/setting/Settings.java | 14 +++++--
.../chancesd/pvpmanager/storage/Database.java | 5 ++-
.../storage/DatabaseConfigBuilder.java | 14 +------
.../pvpmanager/storage/DatabaseFactory.java | 7 +++-
.../pvpmanager/tasks/RegionCheckTask.java | 1 +
.../chancesd/pvpmanager/utils/ChatUtils.java | 7 ++--
.../pvpmanager/utils/CombatUtils.java | 6 ++-
.../pvpmanager/utils/ScheduleUtils.java | 4 +-
pvpmanager/src/main/resources/plugin.yml | 2 +-
.../pvpmanager}/InstanceCreator.java | 8 ++--
.../pvpmanager}/PluginTest.java | 4 +-
.../pvpmanager}/UpdaterTest.java | 3 +-
.../listener}/EntityListenerTest.java | 6 +--
.../listener}/PlayerListenerTest.java | 6 +--
.../pvpmanager/manager}/DependencyTest.java | 6 +--
47 files changed, 193 insertions(+), 191 deletions(-)
rename pvpmanager/src/main/java/me/chancesd/pvpmanager/{listener => integration/hook/worldguard}/WGListener.java (93%)
rename pvpmanager/src/main/java/me/chancesd/pvpmanager/{listener => integration/hook/worldguard}/WGListenerLegacy.java (93%)
rename pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/{ => worldguard}/WorldGuardLegacyHook.java (96%)
rename pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/{ => worldguard}/WorldGuardModernHook.java (97%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager => chancesd/pvpmanager}/InstanceCreator.java (82%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager => chancesd/pvpmanager}/PluginTest.java (98%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager => chancesd/pvpmanager}/UpdaterTest.java (96%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager/Listeners => chancesd/pvpmanager/listener}/EntityListenerTest.java (98%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager/Listeners => chancesd/pvpmanager/listener}/PlayerListenerTest.java (97%)
rename pvpmanager/src/test/java/me/{NoChance/PvPManager/Managers => chancesd/pvpmanager/manager}/DependencyTest.java (93%)
diff --git a/pvpmanager/pom.xml b/pvpmanager/pom.xml
index 8dcfe0fa6..9cae56554 100644
--- a/pvpmanager/pom.xml
+++ b/pvpmanager/pom.xml
@@ -237,7 +237,7 @@
com.zaxxer
HikariCP
- 4.0.3
+ 5.1.0
provided
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java
index aa45adc46..44b8a9390 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/PvPManager.java
@@ -3,9 +3,6 @@
import org.bukkit.ChatColor;
import org.bukkit.command.CommandExecutor;
import org.bukkit.command.PluginCommand;
-import org.bukkit.event.Listener;
-import org.bukkit.plugin.java.JavaPlugin;
-
import me.chancesd.pvpmanager.command.Announce;
import me.chancesd.pvpmanager.command.Newbie;
import me.chancesd.pvpmanager.command.PM;
@@ -32,10 +29,11 @@
import me.chancesd.pvpmanager.setting.Messages;
import me.chancesd.pvpmanager.utils.ScheduleUtils;
import me.chancesd.sdutils.library.PluginLibraries;
+import me.chancesd.sdutils.plugin.SDPlugin;
import me.chancesd.sdutils.utils.Log;
import me.chancesd.sdutils.utils.MCVersion;
-public class PvPManager extends JavaPlugin {
+public class PvPManager extends SDPlugin {
private ConfigManager configM;
private PlayerManager playerHandler;
@@ -66,13 +64,12 @@ public void onEnable() {
updateManager = new UpdateManager(this);
storageManager = new StorageManager(this);
dependencyManager = new DependencyManager();
- displayManager = new DisplayManager(this);
+ displayManager = new DisplayManager();
worldManager = new WorldManager(this);
playerHandler = new PlayerManager(this);
startListeners();
registerCommands();
startMetrics();
- checkJavaVersion();
Log.infoColor(ChatColor.GREEN + getDescription().getFullName() + " enabled " + ChatColor.GRAY + "("
+ (System.currentTimeMillis() - start) + " ms)");
}
@@ -121,37 +118,6 @@ private void startMetrics() {
new CustomMetrics(this);
}
- private void checkJavaVersion() {
- int javaVersion;
- String version = System.getProperty("java.version");
- if (version.startsWith("1.")) {
- version = version.substring(2, 3);
- } else {
- final int dot = version.indexOf(".");
- if (dot != -1) {
- version = version.substring(0, dot);
- } else {
- final int separator = version.indexOf("-");
- if (separator != -1) {
- version = version.substring(0, separator);
- }
- }
- }
- try {
- javaVersion = Integer.parseInt(version);
- } catch (final NumberFormatException e) {
- return;
- }
- if (javaVersion < 16) {
- Log.severe("You appear to be using Java 15 or lower. For now the plugin still works but please update to Java 16+");
- Log.severe("In the future PvPManager will stop supporting Java versions this old");
- }
- }
-
- private void registerListener(final Listener listener) {
- this.getServer().getPluginManager().registerEvents(listener, this);
- }
-
private void registerCommand(final PluginCommand command, final CommandExecutor executor) {
if (command == null)
return;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java
index 239c487fb..b4214e63f 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Newbie.java
@@ -29,8 +29,8 @@ public Newbie(final PlayerManager ph) {
@Override
public final boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
- if (args.length == 0 && sender instanceof Player) {
- final CombatPlayer pvPlayer = ph.get((Player) sender);
+ if (args.length == 0 && sender instanceof final Player player) {
+ final CombatPlayer pvPlayer = ph.get(player);
if (!pvPlayer.isNewbie()) {
pvPlayer.message(Messages.getErrorNotNewbie());
} else {
@@ -40,13 +40,13 @@ public final boolean onCommand(final CommandSender sender, final Command command
return true;
} else if (args.length >= 1) {
final String subcommand = args[0];
- if (Settings.isNewbieDisableAllowed() && subcommand.equalsIgnoreCase("disable") && sender instanceof Player) {
- final CombatPlayer player = ph.get((Player) sender);
- if (player.isNewbie()) {
- player.setNewbie(false);
+ if (Settings.isNewbieDisableAllowed() && subcommand.equalsIgnoreCase("disable") && sender instanceof final Player player) {
+ final CombatPlayer combatPlayer = ph.get(player);
+ if (combatPlayer.isNewbie()) {
+ combatPlayer.setNewbie(false);
return true;
}
- player.message(Messages.getErrorNotNewbie());
+ combatPlayer.message(Messages.getErrorNotNewbie());
return true;
} else if (Permissions.ADMIN.hasPerm(sender) && args.length == 2) {
if (subcommand.equalsIgnoreCase("checktime")) {
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java
index 3f862e7b2..5cd26788f 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PM.java
@@ -13,6 +13,8 @@
import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.command.TabExecutor;
+import org.bukkit.damage.DamageSource;
+import org.bukkit.damage.DamageType;
import org.bukkit.entity.Player;
import org.bukkit.event.HandlerList;
import org.bukkit.event.entity.EntityDamageByEntityEvent;
@@ -48,12 +50,9 @@ public PM(final PvPManager plugin) {
@Override
public final boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
- if (sender instanceof Player) {
- final Player player = (Player) sender;
- if (args.length == 0 && player.hasPermission("pvpmanager.menu")) {
- Settings.helpMenu(player);
- return true;
- }
+ if (args.length == 0 && sender.hasPermission("pvpmanager.menu")) {
+ Settings.helpMenu(sender);
+ return true;
}
if (args.length == 1) {
if (args[0].equalsIgnoreCase("reload")) {
@@ -79,7 +78,7 @@ public final boolean onCommand(final CommandSender sender, final Command cmd, fi
locale(sender, args);
return true;
} else if (args[0].equalsIgnoreCase("worlds") && Permissions.ADMIN.hasPerm(sender)) {
- worldsSubcommand.onCommand(sender, cmd, label, args);
+ worldsSubcommand.onCommand(sender, args);
return true;
}
}
@@ -162,13 +161,13 @@ private void convert(final CommandSender sender, final String[] args) {
private void debug(final CommandSender sender, final String[] args) {
CombatPlayer p = null;
- if (args.length == 2 && sender instanceof Player) {
- p = plugin.getPlayerHandler().get((Player) sender);
+ if (args.length == 2 && sender instanceof final Player player) {
+ p = plugin.getPlayerHandler().get(player);
}
if (args.length == 2 && args[1].equalsIgnoreCase("toggle")) {
- Settings.setDEBUG(!Settings.DEBUG);
- Log.info("Debug mode: " + Settings.DEBUG);
- sender.sendMessage("Debug mode: " + Settings.DEBUG);
+ Settings.setDEBUG(!Settings.isDebug());
+ Log.info("Debug mode: " + Settings.isDebug());
+ sender.sendMessage("Debug mode: " + Settings.isDebug());
} else if (args.length == 2 && args[1].equalsIgnoreCase("damagedebug")) {
if (damageListener == null) {
sender.sendMessage("§4Warning §f- Some plugin features are disabled while in this mode");
@@ -203,7 +202,8 @@ private void debug(final CommandSender sender, final String[] args) {
p.setTagged(true, p);
} else if (args[1].equalsIgnoreCase("attack")) {
plugin.getServer().getPluginManager()
- .callEvent(new EntityDamageByEntityEvent(p.getPlayer(), p.getPlayer(), DamageCause.ENTITY_ATTACK, 5.0));
+ .callEvent(new EntityDamageByEntityEvent(p.getPlayer(), p.getPlayer(), DamageCause.ENTITY_ATTACK,
+ DamageSource.builder(DamageType.PLAYER_ATTACK).build(), 5.0));
sender.sendMessage("Attacked player with 5 damage");
} else if (args[1].equalsIgnoreCase("players")) {
for (final CombatPlayer player : plugin.getPlayerHandler().getPlayers().values()) {
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvP.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvP.java
index f99c8cd91..0e50c5736 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvP.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvP.java
@@ -35,16 +35,15 @@ public final boolean onCommand(final CommandSender sender, final Command cmd, fi
return true;
}
- if (sender instanceof Player && args.length == 0) {
- final Player player = (Player) sender;
+ if (sender instanceof final Player player && args.length == 0) {
final CombatPlayer pvpPlayer = ph.get(player);
togglePvP(pvpPlayer, !pvpPlayer.hasPvPEnabled());
return true;
}
if (args.length == 1) {
- if (sender instanceof Player && (args[0].equalsIgnoreCase("off") || args[0].equalsIgnoreCase("on"))) {
- final CombatPlayer pvpPlayer = ph.get((Player) sender);
+ if (sender instanceof final Player player && (args[0].equalsIgnoreCase("off") || args[0].equalsIgnoreCase("on"))) {
+ final CombatPlayer pvpPlayer = ph.get(player);
final boolean state = args[0].equalsIgnoreCase("on");
togglePvP(pvpPlayer, state);
return true;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvPInfo.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvPInfo.java
index 2e8e23021..554bf3f48 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvPInfo.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/PvPInfo.java
@@ -2,8 +2,6 @@
import java.util.ArrayList;
import java.util.List;
-import java.util.stream.Collectors;
-
import org.bukkit.Bukkit;
import org.bukkit.command.Command;
import org.bukkit.command.CommandExecutor;
@@ -11,6 +9,8 @@
import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
+import com.google.common.base.Preconditions;
+
import me.chancesd.pvpmanager.manager.PlayerManager;
import me.chancesd.pvpmanager.player.CombatPlayer;
import me.chancesd.pvpmanager.setting.Messages;
@@ -28,11 +28,12 @@ public PvPInfo(final PlayerManager ph) {
@Override
public final boolean onCommand(final CommandSender sender, final Command cmd, final String label, final String[] args) {
- if (args.length == 0 && sender instanceof Player) {
- sendInfo(sender, ph.get((Player) sender));
+ if (args.length == 0 && sender instanceof final Player player) {
+ sendInfo(sender, ph.get(player));
return true;
} else if (args.length == 1 && sender.hasPermission("pvpmanager.info.others")) {
final String name = args[0];
+ Preconditions.checkNotNull(name);
if (CombatUtils.isOnline(name)) {
sendInfo(sender, ph.get(Bukkit.getPlayer(name)));
return true;
@@ -53,7 +54,7 @@ private void sendInfo(final CommandSender sender, final CombatPlayer target) {
sender.sendMessage(Messages.getString("PvPInfo_Line6") + target.getPlayer().getWorld().getName());
sender.sendMessage(Messages.getString("PvPInfo_Line7") + target.hasOverride());
sender.sendMessage(ChatUtils.colorize("&2- Enemies: &7"
- + (target.getEnemies().isEmpty() ? "&cNone" : target.getEnemies().stream().map(CombatPlayer::getName).collect(Collectors.toList()))));
+ + (target.getEnemies().isEmpty() ? "&cNone" : target.getEnemies().stream().map(CombatPlayer::getName).toList())));
sender.sendMessage(ChatUtils.colorize("&2- Exempt Perms: &7" + getExemptions(target.getPlayer())));
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Worlds.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Worlds.java
index f5543b053..a70598e48 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Worlds.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/command/Worlds.java
@@ -7,18 +7,17 @@
import me.chancesd.pvpmanager.setting.Messages;
import me.chancesd.pvpmanager.world.CombatWorld;
import me.chancesd.pvpmanager.world.CombatWorld.WorldOptionState;
+import me.chancesd.sdutils.utils.Log;
import net.md_5.bungee.api.ChatColor;
import net.md_5.bungee.api.chat.*;
import net.md_5.bungee.api.chat.TextComponent;
import net.md_5.bungee.api.chat.hover.content.Text;
import org.bukkit.Bukkit;
import org.bukkit.World;
-import org.bukkit.command.Command;
import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player;
import java.util.List;
-import java.util.stream.Collectors;
public class Worlds {
@@ -38,7 +37,11 @@ public void createWorldMenu(final Player player) {
ChatColor.DARK_AQUA + "" + ChatColor.BOLD + "World: " + ChatColor.GOLD + combatWorld.getName() + ChatColor.AQUA + " \n ");
final World world = Bukkit.getWorld(combatWorld.getName());
- final List pvPlayerList = world.getPlayers().stream().map(p -> plugin.getPlayerHandler().get(p)).collect(Collectors.toList());
+ if (world == null) {
+ Log.warning("Null world in world list!");
+ continue;
+ }
+ final List pvPlayerList = world.getPlayers().stream().map(p -> plugin.getPlayerHandler().get(p)).toList();
worldItem.addExtra(createInfoText("Players", pvPlayerList.size()));
worldItem.addExtra(createSeparator());
worldItem.addExtra(createInfoText("In Combat", pvPlayerList.stream().filter(CombatPlayer::isInCombat).count()));
@@ -120,7 +123,7 @@ private TextComponent createSeparator() {
return new TextComponent(ChatColor.DARK_GRAY + " | ");
}
- public final boolean onCommand(final CommandSender sender, final Command command, final String label, final String[] args) {
+ public final void onCommand(final CommandSender sender, final String[] args) {
if (args.length == 5) {
final String subcommand = args[1];
if (subcommand.equalsIgnoreCase("set")) {
@@ -128,7 +131,7 @@ public final boolean onCommand(final CommandSender sender, final Command command
final CombatWorld combatWorld = plugin.getWorldManager().getWorld(world);
if (combatWorld == null) {
sender.sendMessage(Messages.PREFIXMSG + ChatColor.RED + "There is no world with that name");
- return true;
+ return;
}
final String option = args[3];
if (option.equalsIgnoreCase("PvP")) {
@@ -142,10 +145,8 @@ public final boolean onCommand(final CommandSender sender, final Command command
}
}
}
- if (sender instanceof Player) {
- createWorldMenu((Player) sender);
+ if (sender instanceof final Player player) {
+ createWorldMenu(player);
}
-
- return true;
}
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/ForceToggleDependency.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/ForceToggleDependency.java
index e6030d7f4..05838d5e3 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/ForceToggleDependency.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/ForceToggleDependency.java
@@ -1,15 +1,16 @@
package me.chancesd.pvpmanager.integration;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.integration.type.Dependency;
import me.chancesd.pvpmanager.player.ProtectionType;
public interface ForceToggleDependency extends Dependency {
- public boolean shouldDisable(Player player);
+ public boolean shouldDisable(@NotNull Player player);
- public boolean shouldDisable(Player attacker, Player defender, ProtectionType reason);
+ public boolean shouldDisable(@NotNull Player attacker, @NotNull Player defender, ProtectionType reason);
public default boolean shouldDisableProtection() {
return getConfigBoolean("No Protection In War", true);
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/PlaceHolderAPI.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/PlaceHolderAPI.java
index eb1cc1168..125eb8075 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/PlaceHolderAPI.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/PlaceHolderAPI.java
@@ -5,6 +5,7 @@
import java.util.List;
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.PvPManager;
import me.chancesd.pvpmanager.player.CombatPlayer;
@@ -16,6 +17,7 @@
public class PlaceHolderAPI extends PlaceholderExpansion {
private final PvPManager plugin;
+ @NotNull
private final List placeholders = new ArrayList<>();
private final DecimalFormat df = new DecimalFormat("#.##");
@@ -92,6 +94,7 @@ public boolean canRegister() {
return true;
}
+ @SuppressWarnings("null")
@Override
public String getAuthor() {
return plugin.getDescription().getAuthors().toString();
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/SimpleClansHook.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/SimpleClansHook.java
index 1db7c66ae..6926d9d0c 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/SimpleClansHook.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/SimpleClansHook.java
@@ -12,6 +12,7 @@
import net.sacredlabyrinth.phaed.simpleclans.SimpleClans;
import net.sacredlabyrinth.phaed.simpleclans.managers.ClanManager;
+@SuppressWarnings("null") // getClan can't be null because clan player isn't null
public class SimpleClansHook extends BaseDependency implements GroupDependency, ForceToggleDependency {
private final ClanManager clanManager;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/TownyHook.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/TownyHook.java
index 765c49951..dc3da20b0 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/TownyHook.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/TownyHook.java
@@ -18,6 +18,7 @@ public TownyHook(final Hook hook) {
townyAPI = TownyAPI.getInstance();
}
+ @SuppressWarnings("null") // already check if resident has town
@Override
public boolean shouldDisable(final Player player) {
final Resident resident = townyAPI.getResident(player);
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListener.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListener.java
similarity index 93%
rename from pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListener.java
rename to pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListener.java
index 99ab9f3bc..762c1848a 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListener.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListener.java
@@ -1,4 +1,4 @@
-package me.chancesd.pvpmanager.listener;
+package me.chancesd.pvpmanager.integration.hook.worldguard;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListenerLegacy.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListenerLegacy.java
similarity index 93%
rename from pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListenerLegacy.java
rename to pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListenerLegacy.java
index 4dabfc07a..cee6ac528 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/WGListenerLegacy.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WGListenerLegacy.java
@@ -1,4 +1,4 @@
-package me.chancesd.pvpmanager.listener;
+package me.chancesd.pvpmanager.integration.hook.worldguard;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardLegacyHook.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardLegacyHook.java
similarity index 96%
rename from pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardLegacyHook.java
rename to pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardLegacyHook.java
index 94c0b95a3..ae2ad4190 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardLegacyHook.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardLegacyHook.java
@@ -1,4 +1,4 @@
-package me.chancesd.pvpmanager.integration.hook;
+package me.chancesd.pvpmanager.integration.hook.worldguard;
import java.lang.reflect.Method;
import java.util.Set;
@@ -18,7 +18,6 @@
import me.chancesd.pvpmanager.integration.DependencyException;
import me.chancesd.pvpmanager.integration.Hook;
import me.chancesd.pvpmanager.integration.type.WorldGuardDependency;
-import me.chancesd.pvpmanager.listener.WGListenerLegacy;
import me.chancesd.pvpmanager.manager.PlayerManager;
public class WorldGuardLegacyHook extends BaseDependency implements WorldGuardDependency {
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardModernHook.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardModernHook.java
similarity index 97%
rename from pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardModernHook.java
rename to pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardModernHook.java
index 4b5740931..8206356b2 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/WorldGuardModernHook.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/integration/hook/worldguard/WorldGuardModernHook.java
@@ -1,4 +1,4 @@
-package me.chancesd.pvpmanager.integration.hook;
+package me.chancesd.pvpmanager.integration.hook.worldguard;
import java.util.Set;
@@ -16,7 +16,6 @@
import me.chancesd.pvpmanager.integration.ForceToggleDependency;
import me.chancesd.pvpmanager.integration.Hook;
import me.chancesd.pvpmanager.integration.type.WorldGuardDependency;
-import me.chancesd.pvpmanager.listener.WGListener;
import me.chancesd.pvpmanager.manager.PlayerManager;
import me.chancesd.pvpmanager.player.CombatPlayer;
import me.chancesd.pvpmanager.player.ProtectionType;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/DebugEntityListener.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/DebugEntityListener.java
index fdac5162e..c7669aea2 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/DebugEntityListener.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/DebugEntityListener.java
@@ -11,6 +11,7 @@
import org.bukkit.entity.LightningStrike;
import org.bukkit.entity.Player;
import org.bukkit.entity.Projectile;
+import org.bukkit.entity.TNTPrimed;
import org.bukkit.event.EventHandler;
import org.bukkit.event.EventPriority;
import org.bukkit.event.Listener;
@@ -18,7 +19,6 @@
import org.bukkit.event.weather.LightningStrikeEvent;
import org.bukkit.event.weather.LightningStrikeEvent.Cause;
import org.bukkit.potion.PotionEffectType;
-
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
@@ -68,8 +68,7 @@ public final void onPlayerDamage(final EntityDamageByEntityEvent event) {
event.setCancelled(true);
Log.debug("Blocking damage to newbie because newbie god mode is enabled");
return;
- } else if (event.getDamager() instanceof LightningStrike) {
- final LightningStrike lightning = (LightningStrike) event.getDamager();
+ } else if (event.getDamager() instanceof final LightningStrike lightning) {
if (!lightningCache.asMap().containsKey(lightning)) {
Log.debug("Ignoring damage because it wasn't considered PvP");
return;
@@ -120,6 +119,7 @@ public final void onPlayerDamageMonitor(final EntityDamageByEntityEvent event) {
Log.debug("Finished processing damage.");
}
+ @SuppressWarnings("null") // defender.getLocation() never null
public void onDamageActions(final Player attacker, final Player defender) {
final CombatPlayer pvpAttacker = ph.get(attacker);
final CombatPlayer pvpDefender = ph.get(defender);
@@ -152,8 +152,8 @@ public void onDamageActions(final Player attacker, final Player defender) {
Log.debug("Didn't disable fly/gamemode/etc because attacker has permission " + Permissions.EXEMPT_DISABLE_ACTIONS);
}
if (Settings.isInCombatEnabled()) {
- if (Settings.borderHoppingVulnerable() && wg != null && !Settings.borderHoppingResetCombatTag()) {
- if (wg.hasDenyPvPFlag(attacker) && wg.hasDenyPvPFlag(defender))
+ if (Settings.borderHoppingVulnerable() && wg != null && !Settings.borderHoppingResetCombatTag() && wg.hasDenyPvPFlag(attacker)
+ && wg.hasDenyPvPFlag(defender)) {
return;
}
Log.debug("Tagging players " + pvpAttacker.getName() + " and " + pvpDefender.getName());
@@ -175,10 +175,12 @@ public void onLightningStrike(final LightningStrikeEvent event) {
}
private Player getAttacker(final Entity damager) {
- if (damager instanceof Player)
- return (Player) damager;
- if (damager instanceof Projectile)
- return (Player) ((Projectile) damager).getShooter();
+ if (damager instanceof final Player player)
+ return player;
+ if (damager instanceof final Projectile projectile)
+ return (Player) projectile.getShooter();
+ if (damager instanceof final TNTPrimed tnt)
+ return (Player) tnt.getSource();
return (Player) ((AreaEffectCloud) damager).getSource();
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/EntityListener.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/EntityListener.java
index f773c0435..e3066c8aa 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/EntityListener.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/EntityListener.java
@@ -29,6 +29,7 @@
import org.bukkit.potion.PotionEffect;
import org.bukkit.potion.PotionEffectType;
import org.bukkit.projectiles.ProjectileSource;
+import org.jetbrains.annotations.Nullable;
import com.google.common.cache.Cache;
import com.google.common.cache.CacheBuilder;
@@ -79,6 +80,9 @@ public final void onPlayerDamage(final EntityDamageByEntityEvent event) {
final Player attacker = getAttacker(event.getDamager());
final Player attacked = (Player) event.getEntity();
+ if (attacker == null)
+ return;
+
final ProtectionResult result = playerHandler.checkProtection(attacker, attacked);
if (result.isProtected()) {
@@ -92,7 +96,10 @@ public final void onPlayerDamageOverride(final EntityDamageByEntityEvent event)
if (!CombatUtils.isPvP(event) || CombatUtils.isWorldExcluded(event.getEntity().getWorld().getName()) || !event.isCancelled())
return;
- if (playerHandler.checkProtection(getAttacker(event.getDamager()), (Player) event.getEntity()).type() == ProtectionType.FAIL_OVERRIDE) {
+ final Player attacker = getAttacker(event.getDamager());
+ if (attacker == null)
+ return;
+ if (playerHandler.checkProtection(attacker, (Player) event.getEntity()).type() == ProtectionType.FAIL_OVERRIDE) {
event.setCancelled(false);
}
}
@@ -120,12 +127,15 @@ public final void onEntityCombust(final EntityCombustByEntityEvent event) {
final Player attacker = getAttacker(event.getCombuster());
final Player attacked = (Player) event.getEntity();
+ if (attacker == null)
+ return;
if (!playerHandler.canAttack(attacker, attacked)) {
event.setCancelled(true);
}
}
+ @SuppressWarnings("null") // defender.getLocation() never null
public void processDamage(final Player attacker, final Player defender) {
final CombatPlayer pvpAttacker = playerHandler.get(attacker);
final CombatPlayer pvpDefender = playerHandler.get(defender);
@@ -144,6 +154,7 @@ public void processDamage(final Player attacker, final Player defender) {
}
}
+ @SuppressWarnings("null") // PotionEffectType.INVISIBILITY is not null
private void disableActions(final Player attacker, final Player defender, final CombatPlayer pvpAttacker, final CombatPlayer pvpDefender) {
final boolean hasExemptPerm = pvpAttacker.hasPerm(Permissions.EXEMPT_DISABLE_ACTIONS);
if (Settings.isDisableFly()) {
@@ -184,6 +195,8 @@ public final void onPotionSplash(final PotionSplashEvent event) {
final ThrownPotion potion = event.getPotion();
final Player player = (Player) potion.getShooter();
+ if (player == null)
+ return;
for (final LivingEntity e : event.getAffectedEntities()) {
if (e.getType() != EntityType.PLAYER || e.equals(player)) {
continue;
@@ -276,6 +289,7 @@ public void onProjectileHitEvent(final ProjectileHitEvent event) {
}
}
+ @Nullable
private Player getAttacker(final Entity damager) {
if (damager instanceof final Player player)
return player;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener.java
index 091370c22..48ad6c071 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener.java
@@ -3,6 +3,7 @@
import java.util.UUID;
import java.util.concurrent.TimeUnit;
+import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
import org.bukkit.event.Listener;
@@ -31,8 +32,10 @@ public MoveListener(final PlayerManager ph) {
@EventHandler(ignoreCancelled = true)
public final void onPlayerMove(final PlayerMoveEvent event) {
- if (event.getFrom().getBlockX() == event.getTo().getBlockX() && event.getFrom().getBlockZ() == event.getTo().getBlockZ()
- && event.getFrom().getBlockY() == event.getTo().getBlockY())
+ final Location locTo = event.getTo();
+ final Location locFrom = event.getFrom();
+ if (locTo == null || locFrom.getBlockX() == locTo.getBlockX() && locFrom.getBlockZ() == locTo.getBlockZ()
+ && locFrom.getBlockY() == locTo.getBlockY())
return;
final Player player = event.getPlayer();
@@ -40,8 +43,8 @@ public final void onPlayerMove(final PlayerMoveEvent event) {
if (!pvplayer.isInCombat())
return;
- if (!wg.canAttackAt(null, event.getTo()) && wg.canAttackAt(null, event.getFrom())) {
- final Vector newVel = event.getFrom().toVector().subtract(event.getTo().toVector());
+ if (!wg.canAttackAt(null, locTo) && wg.canAttackAt(null, locFrom)) {
+ final Vector newVel = locFrom.toVector().subtract(locTo.toVector());
newVel.setY(newVel.getY() + 0.1).normalize().multiply(1.5);
player.setVelocity(newVel);
if (!cache.asMap().containsKey(event.getPlayer().getUniqueId())) {
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener1_9.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener1_9.java
index 956d12a8f..8aa0f0f39 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener1_9.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/MoveListener1_9.java
@@ -42,7 +42,7 @@ public MoveListener1_9(final PlayerManager ph) {
public final void onPlayerMove(final PlayerMoveEvent event) {
final Location locTo = event.getTo();
final Location locFrom = event.getFrom();
- if (locFrom.getBlockX() == locTo.getBlockX() && locFrom.getBlockZ() == locTo.getBlockZ() && locFrom.getBlockY() == locTo.getBlockY())
+ if (locTo == null || locFrom.getBlockX() == locTo.getBlockX() && locFrom.getBlockZ() == locTo.getBlockZ() && locFrom.getBlockY() == locTo.getBlockY())
return;
final Player player = event.getPlayer();
@@ -57,7 +57,7 @@ public final void onPlayerMove(final PlayerMoveEvent event) {
player.setVelocity(sanitizeVector(newVel));
if (!cache.asMap().containsKey(player.getUniqueId())) {
pvplayer.message(Messages.getPushbackWarning());
- locFrom.getWorld().playEffect(player.getEyeLocation(), Effect.SMOKE, 3);
+ player.getWorld().playEffect(player.getEyeLocation(), Effect.SMOKE, 3);
cache.put(player.getUniqueId(), player);
}
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener.java
index 304b94615..575027fcc 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener.java
@@ -229,6 +229,7 @@ public final void onPlayerUseSoup(final PlayerInteractEvent e) {
}
}
+ @SuppressWarnings("null") // p.getLocation() is not null
@EventHandler(priority = EventPriority.LOW, ignoreCancelled = true) // cancel on low since some plugins check cancels on normal instead of monitor
public final void onPlayerInteract(final PlayerInteractEvent e) {
final Player player = e.getPlayer();
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener1_11.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener1_11.java
index e7a43aa7e..458d5fe84 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener1_11.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/listener/PlayerListener1_11.java
@@ -10,7 +10,6 @@
import org.bukkit.event.entity.ProjectileLaunchEvent;
import org.bukkit.projectiles.ProjectileSource;
-import me.chancesd.pvpmanager.integration.Hook;
import me.chancesd.pvpmanager.manager.PlayerManager;
import me.chancesd.pvpmanager.player.CombatPlayer;
import me.chancesd.pvpmanager.setting.Messages;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/ConfigManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/ConfigManager.java
index 1c4db44e7..aad38e834 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/ConfigManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/ConfigManager.java
@@ -101,10 +101,10 @@ private void resetConfig() {
}
private void prepareFile(final File file, final String resource) {
- try {
+ try (InputStream stream = plugin.getResource(resource)) {
file.getParentFile().mkdirs();
if (file.createNewFile() && resource != null && !resource.isEmpty()) {
- this.copyResource(plugin.getResource(resource), file);
+ this.copyResource(stream, file);
}
} catch (final IOException e) {
Log.severe("Error creating config file", e);
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DependencyManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DependencyManager.java
index 2db8d6f60..68a4b3fba 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DependencyManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DependencyManager.java
@@ -11,6 +11,7 @@
import org.bukkit.Location;
import org.bukkit.entity.Player;
import org.bukkit.plugin.java.JavaPlugin;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.PvPManager;
import me.chancesd.pvpmanager.integration.AFKDependency;
@@ -26,8 +27,8 @@
import me.chancesd.pvpmanager.integration.hook.SimpleClansHook;
import me.chancesd.pvpmanager.integration.hook.TownyHook;
import me.chancesd.pvpmanager.integration.hook.VaultHook;
-import me.chancesd.pvpmanager.integration.hook.WorldGuardLegacyHook;
-import me.chancesd.pvpmanager.integration.hook.WorldGuardModernHook;
+import me.chancesd.pvpmanager.integration.hook.worldguard.WorldGuardLegacyHook;
+import me.chancesd.pvpmanager.integration.hook.worldguard.WorldGuardModernHook;
import me.chancesd.pvpmanager.integration.type.Dependency;
import me.chancesd.pvpmanager.integration.type.DisguiseDependency;
import me.chancesd.pvpmanager.integration.type.GodDependency;
@@ -37,7 +38,6 @@
import me.chancesd.pvpmanager.listener.MoveListener1_9;
import me.chancesd.pvpmanager.player.ProtectionType;
import me.chancesd.pvpmanager.setting.Settings;
-import me.chancesd.pvpmanager.utils.CombatUtils;
import me.chancesd.pvpmanager.utils.ScheduleUtils;
import me.chancesd.sdutils.utils.Log;
import me.chancesd.sdutils.utils.MCVersion;
@@ -97,8 +97,7 @@ private List setupHooks(final Hook... hooks) {
// Ignore, only here for unit tests
Log.warning("Exception initializing " + hook);
} catch (final Exception | LinkageError e) {
- Log.warning("Failed to enable support for " + hook.getDescription().getFullName() + ". Is " + hook + " up to date?");
- e.printStackTrace();
+ Log.warning("Failed to enable support for " + hook.getDescription().getFullName() + ". Is " + hook + " up to date?", e);
failedHooks.add(hook);
}
}
@@ -163,7 +162,7 @@ public final void disableDisguise(final Player p) {
}
}
- public final boolean shouldDisableProtection(final Player attacker, final Player defender, final ProtectionType reason) {
+ public final boolean shouldDisableProtection(@NotNull final Player attacker, @NotNull final Player defender, final ProtectionType reason) {
for (final ForceToggleDependency togglePvPPlugin : togglePvPChecks) {
if (togglePvPPlugin.shouldDisable(attacker, defender, reason))
return true;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DisplayManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DisplayManager.java
index 3c07ee6b4..44d5ec0d6 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DisplayManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/DisplayManager.java
@@ -6,9 +6,6 @@
import org.bukkit.Bukkit;
import org.bukkit.boss.BossBar;
-import org.jetbrains.annotations.NotNull;
-
-import me.chancesd.pvpmanager.PvPManager;
import me.chancesd.pvpmanager.player.CombatPlayer;
import me.chancesd.pvpmanager.player.display.ProgressBar;
import me.chancesd.pvpmanager.setting.Settings;
@@ -19,11 +16,6 @@ public class DisplayManager {
private final Map actionBars = new HashMap<>();
private final Map bossBars = new ConcurrentHashMap<>();
- private final PvPManager plugin;
-
- public DisplayManager(final PvPManager plugin) {
- this.plugin = plugin;
- }
public void updateBossbar(final CombatPlayer player, final double timePassed, final int totalTime) {
final BossBar bossBar = bossBars.computeIfAbsent(player, this::setupBossbar);
@@ -61,9 +53,4 @@ public void showProgress(final CombatPlayer p, final double timePassed, final in
p.sendActionBar(ChatUtils.setPlaceholders(p.getPlayer(), progressBar.getMessage()));
}
- @NotNull
- public PvPManager getPlugin() {
- return plugin;
- }
-
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/PlayerManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/PlayerManager.java
index 83b5ad483..a04bb3673 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/PlayerManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/PlayerManager.java
@@ -35,10 +35,11 @@ public class PlayerManager {
private final HashMap players = new HashMap<>();
private final ConfigManager configManager;
private final DependencyManager dependencyManager;
+ @NotNull
private final PvPManager plugin;
private final TagTask tagTask;
- public PlayerManager(final PvPManager plugin) {
+ public PlayerManager(@NotNull final PvPManager plugin) {
this.plugin = plugin;
this.configManager = plugin.getConfigM();
this.dependencyManager = plugin.getDependencyManager();
@@ -53,7 +54,7 @@ public PlayerManager(final PvPManager plugin) {
addOnlinePlayers();
}
- public final ProtectionResult checkProtection(final Player damager, final Player defender) {
+ public final ProtectionResult checkProtection(@NotNull final Player damager, @NotNull final Player defender) {
final CombatPlayer attacker = get(damager);
final CombatPlayer attacked = get(defender);
@@ -92,7 +93,7 @@ public final ProtectionResult checkProtection(final Player damager, final Player
*
* @return true if the attack didn't get blocked or if it got override, otherwise false
*/
- public final boolean canAttack(final Player attacker, final Player defender) {
+ public final boolean canAttack(@NotNull final Player attacker, @NotNull final Player defender) {
return checkProtection(attacker, defender).isVulnerable();
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/UpdateManager.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/UpdateManager.java
index 79619833a..a96d5c4a6 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/UpdateManager.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/manager/UpdateManager.java
@@ -8,7 +8,6 @@
import me.chancesd.pvpmanager.setting.Messages;
import me.chancesd.pvpmanager.setting.Permissions;
import me.chancesd.pvpmanager.setting.Settings;
-import me.chancesd.pvpmanager.utils.CombatUtils;
import me.chancesd.pvpmanager.utils.ScheduleUtils;
import me.chancesd.sdutils.updater.BukkitUpdater;
import me.chancesd.sdutils.updater.SpigotUpdater;
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/BasePlayer.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/BasePlayer.java
index 593351483..547be3bad 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/BasePlayer.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/BasePlayer.java
@@ -15,13 +15,15 @@
public abstract class BasePlayer {
+ @NotNull
private final Player player;
+ @NotNull
private final UUID uuid;
private CombatWorld combatWorld;
private long actionBarCooldown;
private String lastActionBarMessage;
- protected BasePlayer(final Player player) {
+ protected BasePlayer(@NotNull final Player player) {
this.player = player;
this.uuid = player.getUniqueId();
}
@@ -36,6 +38,7 @@ public final String getName() {
return getPlayer().getName();
}
+ @NotNull
public final UUID getUUID() {
return uuid;
}
@@ -72,11 +75,14 @@ public final void message(final String message) {
* @param message The message to be sent
* @param duration The duration in milliseconds
*/
+ @SuppressWarnings({ "null", "deprecation" })
public void sendActionBar(final String message, final long duration) {
if (System.currentTimeMillis() < actionBarCooldown || message.isEmpty() || message.equals(lastActionBarMessage))
return;
if (MCVersion.isAtLeast(MCVersion.V1_10)) { // Premium PvPManager supports lower versions with NMS
- if (MCVersion.isAtLeast(MCVersion.V1_16_5)) {
+ if (MCVersion.isAtLeast(MCVersion.V1_20_4)) {
+ getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacy(message));
+ } else if (MCVersion.isAtLeast(MCVersion.V1_16_5)) {
getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
} else {
getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, new TextComponent(message));
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/CombatPlayer.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/CombatPlayer.java
index 2cbe1a359..adf5384fe 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/CombatPlayer.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/CombatPlayer.java
@@ -56,7 +56,7 @@ public class CombatPlayer extends EcoPlayer {
private NameTag nametag;
private static ExecutorService executor;
- public CombatPlayer(final Player player, final PvPManager plugin) {
+ public CombatPlayer(@NotNull final Player player, final PvPManager plugin) {
super(player, plugin.getDependencyManager().getEconomy());
this.pvpState = Settings.isDefaultPvp();
this.plugin = plugin;
@@ -439,7 +439,7 @@ public synchronized void waitForPlayerToLoad() {
wait(100);
}
} catch (final InterruptedException e) {
- e.printStackTrace();
+ Log.severe(e.getMessage(), e);
Thread.currentThread().interrupt();
}
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/EcoPlayer.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/EcoPlayer.java
index 8cfb08601..81788ea52 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/EcoPlayer.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/EcoPlayer.java
@@ -1,6 +1,8 @@
package me.chancesd.pvpmanager.player;
+
import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.setting.Messages;
import me.chancesd.pvpmanager.setting.Settings;
@@ -13,7 +15,7 @@ public abstract class EcoPlayer extends BasePlayer {
private final Economy economy;
- protected EcoPlayer(final Player player, final Economy economy) {
+ protected EcoPlayer(final @NotNull Player player, final Economy economy) {
super(player);
this.economy = economy;
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/nametag/BukkitNameTag.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/nametag/BukkitNameTag.java
index c4fbdfca0..ce48b7456 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/nametag/BukkitNameTag.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/player/nametag/BukkitNameTag.java
@@ -9,6 +9,7 @@
import org.bukkit.scoreboard.RenderType;
import org.bukkit.scoreboard.Scoreboard;
import org.bukkit.scoreboard.Team;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.player.CombatPlayer;
import me.chancesd.pvpmanager.setting.Settings;
@@ -22,6 +23,7 @@ public class BukkitNameTag extends NameTag {
private Team pvpOffTeam;
private Team previousTeam;
private String previousTeamName;
+ @NotNull
private final String combatTeamID;
private final Scoreboard scoreboard;
private static final String PVPOFF = "PvPOff";
@@ -36,6 +38,7 @@ public BukkitNameTag(final CombatPlayer p) {
setup();
}
+ @SuppressWarnings({ "deprecation", "null" })
private void setup() {
if (!combatPrefix.isEmpty() || !combatSuffix.isEmpty()) {
if (scoreboard.getTeam(combatTeamID) != null) {
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/LogFile.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/LogFile.java
index f52e3554c..fe44aa80f 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/LogFile.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/LogFile.java
@@ -10,6 +10,7 @@
import org.bukkit.scheduler.BukkitRunnable;
import me.chancesd.pvpmanager.utils.ScheduleUtils;
+import me.chancesd.sdutils.utils.Log;
public class LogFile {
@@ -24,7 +25,7 @@ public LogFile(final File file) {
write("You can disable the logging in the config file\n");
}
} catch (final IOException e) {
- e.printStackTrace();
+ Log.severe(e.getMessage(), e);
}
}
@@ -36,7 +37,7 @@ public void run() {
bw.write(line);
bw.newLine();
} catch (final IOException e) {
- e.printStackTrace();
+ Log.severe(e.getMessage(), e);
}
}
});
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Messages.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Messages.java
index 329c0c0a7..3721b3f40 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Messages.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Messages.java
@@ -110,6 +110,9 @@ public class Messages {
private static String itemCooldown;
private static String prefix = "&6[&8PvPManager&6]";
+ private Messages() {
+ }
+
public static void setup(final PvPManager plugin) {
Messages.plugin = plugin;
currentVersion = plugin.getDescription().getVersion();
@@ -126,17 +129,7 @@ public static void setup(final PvPManager plugin) {
private static void load() {
messagesFile = new File(plugin.getDataFolder(), locale.fileName());
if (!messagesFile.exists()) {
- int readBytes;
- final byte[] buffer = new byte[4096];
- try (InputStream input = plugin.getResource("locale/" + locale.fileName());
- OutputStream resStreamOut = new FileOutputStream(new File(plugin.getDataFolder() + File.separator + locale.fileName()))) {
- while ((readBytes = input.read(buffer)) != -1) {
- resStreamOut.write(buffer, 0, readBytes);
- }
- } catch (final IOException e) {
- Log.severe("Error reading default locale from jar", e);
- }
- Log.infoColor(ChatColor.DARK_GREEN + "New messages file created successfully!");
+ createMessagesFile();
}
final File[] listFiles = plugin.getDataFolder().listFiles();
if (listFiles != null) {
@@ -159,6 +152,24 @@ private static void load() {
}
}
+ private static void createMessagesFile() {
+ int readBytes;
+ final byte[] buffer = new byte[4096];
+ try (InputStream input = plugin.getResource("locale/" + locale.fileName());
+ OutputStream resStreamOut = new FileOutputStream(new File(plugin.getDataFolder() + File.separator + locale.fileName()))) {
+ if (input == null) {
+ Log.severe("Couldn't find the default locale file " + locale.fileName());
+ return;
+ }
+ while ((readBytes = input.read(buffer)) != -1) {
+ resStreamOut.write(buffer, 0, readBytes);
+ }
+ } catch (final IOException e) {
+ Log.severe("Error reading default locale from jar", e);
+ }
+ Log.infoColor(ChatColor.DARK_GREEN + "New messages file created successfully!");
+ }
+
@NotNull
public static String getString(final String key) {
final String message = new String(LANG.getProperty(key).getBytes(StandardCharsets.ISO_8859_1), StandardCharsets.UTF_8);
@@ -259,7 +270,7 @@ private static void checkChanges() {
}
}
} catch (final IOException e) {
- e.printStackTrace();
+ Log.severe(e.getMessage(), e);
}
}
@@ -267,7 +278,7 @@ private static void addMessage(final String a) {
try (PrintWriter pw = new PrintWriter(new OutputStreamWriter(new FileOutputStream(messagesFile, true), StandardCharsets.UTF_8))) {
pw.println(a);
} catch (final IOException e) {
- e.printStackTrace();
+ Log.severe(e.getMessage(), e);
}
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Settings.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Settings.java
index 64f3cad05..1443332e3 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Settings.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/setting/Settings.java
@@ -11,10 +11,11 @@
import org.bukkit.ChatColor;
import org.bukkit.boss.BarColor;
import org.bukkit.boss.BarStyle;
+import org.bukkit.command.CommandSender;
import org.bukkit.Material;
import org.bukkit.configuration.ConfigurationSection;
import org.bukkit.configuration.file.YamlConfiguration;
-import org.bukkit.entity.Player;
+import org.jetbrains.annotations.NotNull;
import me.chancesd.pvpmanager.utils.ChatUtils;
import me.chancesd.sdutils.utils.Log;
@@ -26,7 +27,7 @@ public enum DropMode {
ALWAYS, DROP, KEEP, TRANSFER, CLEAR
}
- public static boolean DEBUG = false;
+ private static boolean debug = false;
private static boolean globalStatus = true;
private static int configVersion;
private static boolean isReloading;
@@ -287,7 +288,7 @@ public static void initizalizeVariables(final YamlConfiguration c) {
configVersion = c.getInt("Config Version");
}
- public static void helpMenu(final Player player) {
+ public static void helpMenu(final CommandSender player) {
player.sendMessage(ChatColor.GOLD + "-------------- PvPManager Help Page --------------");
player.sendMessage(ChatColor.GOLD + "/pvp [player]" + helpSeparator() + ChatColor.WHITE + "Set PvP enabled or disabled");
player.sendMessage(ChatColor.GOLD + "/pvpinfo [player]" + helpSeparator() + ChatColor.WHITE + "Check your or other player info");
@@ -767,6 +768,7 @@ public static boolean isHealthBelowName() {
return healthBelowName;
}
+ @NotNull
public static String getHealthBelowNameSymbol() {
return healthBelowNameSymbol;
}
@@ -804,10 +806,14 @@ public static Set getHarmfulPotions() {
}
public static void setDEBUG(final boolean dEBUG) {
- Settings.DEBUG = dEBUG;
+ Settings.debug = dEBUG;
Log.setDebug(dEBUG);
}
+ public static boolean isDebug() {
+ return Settings.debug;
+ }
+
public static Set getWorldguardOverridesList() {
return worldguardOverridesList;
}
diff --git a/pvpmanager/src/main/java/me/chancesd/pvpmanager/storage/Database.java b/pvpmanager/src/main/java/me/chancesd/pvpmanager/storage/Database.java
index 9553021b9..03651f02d 100644
--- a/pvpmanager/src/main/java/me/chancesd/pvpmanager/storage/Database.java
+++ b/pvpmanager/src/main/java/me/chancesd/pvpmanager/storage/Database.java
@@ -521,8 +521,9 @@ public DatabaseType getDatabaseType() {
}
private void setLogLevel(final Level level) {
- final LoggerContext ctx = (LoggerContext) LogManager.getContext(false);
- ctx.getConfiguration().getLoggerConfig("com.zaxxer.hikari.HikariDataSource").setLevel(level);
+ try (LoggerContext ctx = (LoggerContext) LogManager.getContext(false)) {
+ ctx.getConfiguration().getLoggerConfig("com.zaxxer.hikari.HikariDataSource").setLevel(level);
+ }
}
private StringBuilder getValueParameteres(final Collection