diff --git a/pom.xml b/pom.xml
index ddb5607..ffd8bcd 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.youhavetrouble
PreventStabby
- 1.4
+ 1.5
jar
PreventStabby
diff --git a/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java b/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java
index 47417f8..f71047a 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/api/PreventStabbyAPI.java
@@ -65,6 +65,26 @@ public class PreventStabbyAPI {
return PreventStabby.getPlugin().getPlayerManager().canDamage(attacker.getUniqueId(), victim.getUniqueId(), sendDenyMessage);
}
+ /**
+ * Checks if player can be damaged by another. Providing UUID of entity other than player may result in exceptions
+ * @param attackerUuid Attacker's UUID
+ * @param victimUuid Victim's UUID
+ * @return True if victim can be attacked by attacker, false if not
+ */
+ public static boolean canDamage(UUID attackerUuid, UUID victimUuid) {
+ return PreventStabby.getPlugin().getPlayerManager().canDamage(attackerUuid, victimUuid, false);
+ }
+
+ /**
+ * Checks if player can be damaged by another.
+ * @param attacker Attacker
+ * @param victim Victim
+ * @return True if victim can be attacked by attacker, false if not
+ */
+ public static boolean canDamage(Player attacker, Player victim) {
+ return PreventStabby.getPlugin().getPlayerManager().canDamage(attacker.getUniqueId(), victim.getUniqueId(), false);
+ }
+
/**
* Checks if player has login protection.
* @param uuid UUID of player to check
diff --git a/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java b/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java
index 2fcd5a4..5d058fd 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/config/ConfigCache.java
@@ -115,7 +115,7 @@ public class ConfigCache {
if (block_commands_in_combat) {
this.combatBlockedCommands.addAll(config.getStringList("settings.block_in_combat.block_commands.commands"));
}
- this.block_teleports_in_combat = config.getBoolean("settings.block_in_combat.block_teleports", true);
+ this.block_teleports_in_combat = config.getBoolean("settings.block_in_combat.block_teleports", false);
this.cache_time = config.getLong("settings.cache_time", 30L);
diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java
index bda99a7..6920a7c 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/listeners/pets/PetTargettingPlayerListener.java
@@ -20,16 +20,16 @@ public class PetTargettingPlayerListener implements Listener {
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
if (!(event.getEntity() instanceof Tameable)) return;
Tameable entity = (Tameable) event.getEntity();
- if (entity.getOwner() == null) return;
+ if (!(entity.getOwner() instanceof Player)) return;
+ if (!(entity.getTarget() instanceof Player)) return;
- if (event.getTarget() instanceof Player) {
- UUID damager = entity.getOwner().getUniqueId();
- UUID victim = event.getTarget().getUniqueId();
+ UUID damager = entity.getOwner().getUniqueId();
+ UUID victim = event.getTarget().getUniqueId();
+
+ if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
+ CombatTimer.refreshPlayersCombatTime(damager, victim);
+ else
+ event.setCancelled(true);
- if (PreventStabby.getPlugin().getPlayerManager().canDamage(damager, victim, true, false))
- CombatTimer.refreshPlayersCombatTime(damager, victim);
- else
- event.setCancelled(true);
- }
}
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
index 88e80f8..dc048b5 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
@@ -12,14 +12,13 @@ import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import java.time.Instant;
-import java.util.HashMap;
-import java.util.Iterator;
import java.util.UUID;
+import java.util.concurrent.ConcurrentHashMap;
public class PlayerManager {
@Getter
- HashMap playerList = new HashMap<>();
+ ConcurrentHashMap playerList = new ConcurrentHashMap<>();
public final BukkitTask combatTrackerTask;
@@ -30,9 +29,7 @@ public class PlayerManager {
}
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
- Iterator iterator = playerList.values().iterator();
- while (iterator.hasNext()) {
- PlayerData playerData = iterator.next();
+ for (PlayerData playerData : playerList.values()) {
UUID uuid = playerData.getPlayerUuid();
if (!CombatTimer.isInCombat(uuid)) {
if (playerData.getLastCombatCheck()) {
@@ -119,7 +116,8 @@ public class PlayerManager {
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
Player attackerPlayer = Bukkit.getPlayer(attacker);
- if (PreventStabby.worldGuardHookEnabled() && WorldGuardHook.isPlayerForcedToPvp(attackerPlayer)) return true;
+ if (PreventStabby.worldGuardHookEnabled() && attackerPlayer != null && WorldGuardHook.isPlayerForcedToPvp(attackerPlayer))
+ return true;
if (sendDenyMessage) {
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
@@ -129,7 +127,8 @@ public class PlayerManager {
}
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
Player victimPlayer = Bukkit.getPlayer(victim);
- if (PreventStabby.worldGuardHookEnabled() && WorldGuardHook.isPlayerForcedToPvp(victimPlayer)) return true;
+ if (PreventStabby.worldGuardHookEnabled() && victimPlayer != null && WorldGuardHook.isPlayerForcedToPvp(victimPlayer))
+ return true;
if (sendDenyMessage) {
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java b/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java
index a75c6f4..0474b5a 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/util/PluginMessages.java
@@ -18,16 +18,18 @@ public class PluginMessages {
}
public static void sendMessage(Player player, String message) {
- String parsedMessage = message;
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
- parsedMessage = PlaceholderAPI.setPlaceholders(player, parsedMessage);
+ message = PlaceholderAPI.setPlaceholders(player, message);
}
- parsedMessage = ChatColor.translateAlternateColorCodes('&', parsedMessage);
- player.sendMessage(parsedMessage);
+ message = ChatColor.translateAlternateColorCodes('&', message);
+ player.sendMessage(message);
}
public static void sendActionBar(Player player, String message) {
// TODO use adventure
+ if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
+ message = PlaceholderAPI.setPlaceholders(player, message);
+ }
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
}
@@ -45,6 +47,9 @@ public class PluginMessages {
public static void broadcastMessage(Player player, String message) {
message = parsePlayerName(player, message);
+ if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
+ message = PlaceholderAPI.setPlaceholders(player, message);
+ }
message = parseMessage(message);
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
Bukkit.spigot().broadcast(component);