mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
fix a few bugs
This commit is contained in:
@@ -6,7 +6,7 @@
|
|||||||
|
|
||||||
<groupId>me.youhavetrouble</groupId>
|
<groupId>me.youhavetrouble</groupId>
|
||||||
<artifactId>PreventStabby</artifactId>
|
<artifactId>PreventStabby</artifactId>
|
||||||
<version>1.4</version>
|
<version>1.5</version>
|
||||||
<packaging>jar</packaging>
|
<packaging>jar</packaging>
|
||||||
|
|
||||||
<name>PreventStabby</name>
|
<name>PreventStabby</name>
|
||||||
|
|||||||
@@ -65,6 +65,26 @@ public class PreventStabbyAPI {
|
|||||||
return PreventStabby.getPlugin().getPlayerManager().canDamage(attacker.getUniqueId(), victim.getUniqueId(), sendDenyMessage);
|
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.
|
* Checks if player has login protection.
|
||||||
* @param uuid UUID of player to check
|
* @param uuid UUID of player to check
|
||||||
|
|||||||
@@ -115,7 +115,7 @@ public class ConfigCache {
|
|||||||
if (block_commands_in_combat) {
|
if (block_commands_in_combat) {
|
||||||
this.combatBlockedCommands.addAll(config.getStringList("settings.block_in_combat.block_commands.commands"));
|
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);
|
this.cache_time = config.getLong("settings.cache_time", 30L);
|
||||||
|
|
||||||
|
|||||||
+9
-9
@@ -20,16 +20,16 @@ public class PetTargettingPlayerListener implements Listener {
|
|||||||
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
|
public void onPetTargetPlayer(org.bukkit.event.entity.EntityTargetEvent event) {
|
||||||
if (!(event.getEntity() instanceof Tameable)) return;
|
if (!(event.getEntity() instanceof Tameable)) return;
|
||||||
Tameable entity = (Tameable) event.getEntity();
|
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 damager = entity.getOwner().getUniqueId();
|
UUID victim = event.getTarget().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);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,14 +12,13 @@ import org.bukkit.entity.Player;
|
|||||||
import org.bukkit.scheduler.BukkitTask;
|
import org.bukkit.scheduler.BukkitTask;
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.concurrent.ConcurrentHashMap;
|
||||||
|
|
||||||
public class PlayerManager {
|
public class PlayerManager {
|
||||||
|
|
||||||
@Getter
|
@Getter
|
||||||
HashMap<UUID, PlayerData> playerList = new HashMap<>();
|
ConcurrentHashMap<UUID, PlayerData> playerList = new ConcurrentHashMap<>();
|
||||||
|
|
||||||
public final BukkitTask combatTrackerTask;
|
public final BukkitTask combatTrackerTask;
|
||||||
|
|
||||||
@@ -30,9 +29,7 @@ public class PlayerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
|
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(PreventStabby.getPlugin(), () -> {
|
||||||
Iterator<PlayerData> iterator = playerList.values().iterator();
|
for (PlayerData playerData : playerList.values()) {
|
||||||
while (iterator.hasNext()) {
|
|
||||||
PlayerData playerData = iterator.next();
|
|
||||||
UUID uuid = playerData.getPlayerUuid();
|
UUID uuid = playerData.getPlayerUuid();
|
||||||
if (!CombatTimer.isInCombat(uuid)) {
|
if (!CombatTimer.isInCombat(uuid)) {
|
||||||
if (playerData.getLastCombatCheck()) {
|
if (playerData.getLastCombatCheck()) {
|
||||||
@@ -119,7 +116,8 @@ public class PlayerManager {
|
|||||||
|
|
||||||
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
|
if (!smartCache.getPlayerData(attacker).isPvpEnabled()) {
|
||||||
Player attackerPlayer = Bukkit.getPlayer(attacker);
|
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) {
|
if (sendDenyMessage) {
|
||||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||||
@@ -129,7 +127,8 @@ public class PlayerManager {
|
|||||||
}
|
}
|
||||||
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
if (!smartCache.getPlayerData(victim).isPvpEnabled()) {
|
||||||
Player victimPlayer = Bukkit.getPlayer(victim);
|
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) {
|
if (sendDenyMessage) {
|
||||||
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
ConfigCache config = PreventStabby.getPlugin().getConfigCache();
|
||||||
|
|||||||
@@ -18,16 +18,18 @@ public class PluginMessages {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void sendMessage(Player player, String message) {
|
public static void sendMessage(Player player, String message) {
|
||||||
String parsedMessage = message;
|
|
||||||
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
parsedMessage = PlaceholderAPI.setPlaceholders(player, parsedMessage);
|
message = PlaceholderAPI.setPlaceholders(player, message);
|
||||||
}
|
}
|
||||||
parsedMessage = ChatColor.translateAlternateColorCodes('&', parsedMessage);
|
message = ChatColor.translateAlternateColorCodes('&', message);
|
||||||
player.sendMessage(parsedMessage);
|
player.sendMessage(message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void sendActionBar(Player player, String message) {
|
public static void sendActionBar(Player player, String message) {
|
||||||
// TODO use adventure
|
// TODO use adventure
|
||||||
|
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
|
message = PlaceholderAPI.setPlaceholders(player, message);
|
||||||
|
}
|
||||||
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
|
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
|
||||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
|
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, component);
|
||||||
}
|
}
|
||||||
@@ -45,6 +47,9 @@ public class PluginMessages {
|
|||||||
|
|
||||||
public static void broadcastMessage(Player player, String message) {
|
public static void broadcastMessage(Player player, String message) {
|
||||||
message = parsePlayerName(player, message);
|
message = parsePlayerName(player, message);
|
||||||
|
if (PreventStabby.getPlugin().getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
|
||||||
|
message = PlaceholderAPI.setPlaceholders(player, message);
|
||||||
|
}
|
||||||
message = parseMessage(message);
|
message = parseMessage(message);
|
||||||
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
|
BaseComponent[] component = TextComponent.fromLegacyText(parseMessage(message));
|
||||||
Bukkit.spigot().broadcast(component);
|
Bukkit.spigot().broadcast(component);
|
||||||
|
|||||||
Reference in New Issue
Block a user