Compare commits

...

4 Commits

4 changed files with 15 additions and 13 deletions
+1 -1
View File
@@ -6,7 +6,7 @@
<groupId>me.youhavetrouble.preventstabby</groupId> <groupId>me.youhavetrouble.preventstabby</groupId>
<artifactId>PreventStabby</artifactId> <artifactId>PreventStabby</artifactId>
<version>2.1.1</version> <version>2.1.3</version>
<packaging>jar</packaging> <packaging>jar</packaging>
<name>PreventStabby</name> <name>PreventStabby</name>
@@ -44,13 +44,13 @@ public class PlayerListener implements Listener {
@EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true) @EventHandler(priority = EventPriority.HIGHEST, ignoreCancelled = true)
public void onPlayerLeave(PlayerQuitEvent event) { public void onPlayerLeave(PlayerQuitEvent event) {
Player player = event.getPlayer(); Player player = event.getPlayer();
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
if (playerData == null) return;
if (!playerData.isInCombat()) return;
if (PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_announce) { if (PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_announce) {
PluginMessages.broadcastMessage(player, PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_message); PluginMessages.broadcastMessage(player, PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_message);
} }
if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_kill) return; if (!PreventStabby.getPlugin().getConfigCache().punish_for_combat_logout_kill) return;
PlayerData playerData = PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
if (playerData == null) return;
if (!playerData.isInCombat()) return;
player.setHealth(0); player.setHealth(0);
} }
@@ -46,15 +46,16 @@ public class PlayerManager {
for (PlayerData playerData : playerList.values()) { for (PlayerData playerData : playerList.values()) {
if (playerData == null) continue; if (playerData == null) continue;
Player player = Bukkit.getPlayer(playerData.getPlayerUuid()); Player player = Bukkit.getPlayer(playerData.getPlayerUuid());
playerData.getRelatedEntities().removeIf( uuid -> {
Entity entity = Bukkit.getEntity(uuid);
return entity == null;
});
if (player == null || !player.isOnline()) { if (player == null || !player.isOnline()) {
// player not online, so check for related entities // player not online, so check for related entities
playerData.getRelatedEntities().removeIf( uuid -> {
Entity entity = Bukkit.getEntity(uuid);
return entity == null;
});
if (playerData.getRelatedEntities().isEmpty()) continue; if (playerData.getRelatedEntities().isEmpty()) continue;
} }
playerData.refreshCacheTime(); // Refresh cache timer if player is online playerData.refreshCacheTime();
if (player == null || !player.isOnline()) continue; // If player is offline, skip the rest of the logic
// leaving combat logic // leaving combat logic
if (playerData.getLastCombatCheckState() && !playerData.isInCombat()) { if (playerData.getLastCombatCheckState() && !playerData.isInCombat()) {
PlayerLeaveCombatEvent leaveCombatEvent = null; PlayerLeaveCombatEvent leaveCombatEvent = null;
@@ -175,7 +176,7 @@ public class PlayerManager {
} }
} }
if (!attackerPlayerData.isPvpEnabled() && (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(attackerId)))) { if (!attackerPlayerData.isPvpEnabled() || (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(attackerId)))) {
String message = switch (victimClassifier) { String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_attacker; case PLAYER -> plugin.getConfigCache().cannot_attack_attacker;
case PET -> plugin.getConfigCache().cannot_attack_pets_victim; case PET -> plugin.getConfigCache().cannot_attack_pets_victim;
@@ -185,7 +186,7 @@ public class PlayerManager {
return new DamageCheckResult(false, attackerId, victimId, message, victimClassifier.equals(Target.EntityClassifier.PLAYER)); return new DamageCheckResult(false, attackerId, victimId, message, victimClassifier.equals(Target.EntityClassifier.PLAYER));
} }
if (!victimPlayerData.isPvpEnabled() && (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(victimId)))) { if (!victimPlayerData.isPvpEnabled() || (PreventStabby.worldGuardHookEnabled() && !WorldGuardHook.isPlayerForcedToPvp(Bukkit.getPlayer(victimId)))) {
String message = switch (victimClassifier) { String message = switch (victimClassifier) {
case PLAYER -> plugin.getConfigCache().cannot_attack_victim; case PLAYER -> plugin.getConfigCache().cannot_attack_victim;
case PET -> plugin.getConfigCache().cannot_attack_pets_attacker; case PET -> plugin.getConfigCache().cannot_attack_pets_attacker;
@@ -9,6 +9,7 @@ import net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.command.CommandSender; import org.bukkit.command.CommandSender;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.jetbrains.annotations.NotNull;
import java.util.UUID; import java.util.UUID;
@@ -33,12 +34,12 @@ public class PluginMessages {
return PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null; return PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null;
} }
public static void sendMessage(CommandSender sender, String message) { public static void sendMessage(@NotNull CommandSender sender, String message) {
if ("".equals(message)) return; if ("".equals(message)) return;
sender.sendMessage(parseMessage(sender, message)); sender.sendMessage(parseMessage(sender, message));
} }
public static void sendActionBar(Player player, String message) { public static void sendActionBar(@NotNull Player player, String message) {
if ("".equals(message)) return; if ("".equals(message)) return;
Component parsedMessage = parseMessage(player, message); Component parsedMessage = parseMessage(player, message);
player.sendActionBar(parsedMessage); player.sendActionBar(parsedMessage);