diff --git a/pom.xml b/pom.xml
index c9d5bcd..358e45e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -6,7 +6,7 @@
me.youhavetrouble
PreventStabby
- 1.8.0
+ 1.8.1
jar
PreventStabby
@@ -100,7 +100,7 @@
org.projectlombok
lombok
- 1.18.24
+ 1.18.26
provided
diff --git a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java
index 42d75ff..a8d4d11 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/PreventStabby.java
@@ -76,13 +76,6 @@ public final class PreventStabby extends JavaPlugin {
pvpCommand.setExecutor(mainCommand);
pvpCommand.setTabCompleter(mainCommand);
- try {
- WorldGuardHook.init();
- worldGuardHook = true;
- } catch (NoClassDefFoundError e) {
- worldGuardHook = false;
- }
-
if (getServer().getPluginManager().getPlugin("PlaceholderAPI") != null) {
new PlacoholderApiHook(this).register();
}
@@ -90,6 +83,18 @@ public final class PreventStabby extends JavaPlugin {
Metrics metrics = new Metrics(this, 14074);
}
+ @Override
+ public void onLoad() {
+ if (getServer().getPluginManager().getPlugin("WorldGuard") != null) {
+ try {
+ WorldGuardHook.init();
+ worldGuardHook = true;
+ } catch (NoClassDefFoundError e) {
+ worldGuardHook = false;
+ }
+ }
+ }
+
public static boolean worldGuardHookEnabled() {
return worldGuardHook;
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java
index 1da34ae..c256aa3 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/api/event/PlayerTogglePvpEvent.java
@@ -1,42 +1,55 @@
package me.youhavetrouble.preventstabby.api.event;
-import org.bukkit.entity.Player;
+import me.youhavetrouble.preventstabby.PreventStabby;
+import me.youhavetrouble.preventstabby.players.PlayerData;
+import org.bukkit.OfflinePlayer;
import org.bukkit.event.Event;
import org.bukkit.event.HandlerList;
import org.jetbrains.annotations.NotNull;
/**
- * NOT IMPLEMENTED YET
+ * Fired when player gets their personal pvp state toggled.
*/
-@Deprecated
public class PlayerTogglePvpEvent extends Event {
private static final HandlerList HANDLERS = new HandlerList();
- private final Player player;
- private boolean newState, sendMessage;
+ private final OfflinePlayer player;
+ private final boolean newState;
+ private boolean sendMessage;
- public PlayerTogglePvpEvent(Player player, boolean newState, boolean sendMessage) {
+ public PlayerTogglePvpEvent(OfflinePlayer player, boolean newState, boolean sendMessage) {
this.player = player;
this.newState = newState;
this.sendMessage = sendMessage;
}
- public Player getPlayer() {
+ public OfflinePlayer getPlayer() {
return player;
}
+ public PlayerData getPlayerData() {
+ return PreventStabby.getPlugin().getPlayerManager().getPlayer(player.getUniqueId());
+ }
+
+ /**
+ * Returns the state player's pvp state was toggled to.
+ * @return The state player's pvp state was toggled to.
+ */
public boolean newState() {
return newState;
}
- public void setNewState(boolean newState) {
- this.newState = newState;
- }
-
+ /**
+ * Returns true if the state message will be sent to the player, false otherwise
+ * @return True if the state message will be sent to the player, false otherwise
+ */
public boolean isSendMessage() {
return sendMessage;
}
+ /**
+ * If this is true at the end of event pipeline, message with the current state will be sent to player.
+ */
public void setSendMessage(boolean sendMessage) {
this.sendMessage = sendMessage;
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java
index 79ad06b..574534f 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/commands/PvpToggleCommand.java
@@ -1,6 +1,7 @@
package me.youhavetrouble.preventstabby.commands;
import me.youhavetrouble.preventstabby.PreventStabby;
+import me.youhavetrouble.preventstabby.api.event.PlayerTogglePvpEvent;
import me.youhavetrouble.preventstabby.config.PreventStabbyPermission;
import me.youhavetrouble.preventstabby.util.CombatTimer;
import me.youhavetrouble.preventstabby.util.PluginMessages;
@@ -25,12 +26,17 @@ public class PvpToggleCommand {
return;
}
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
-
- if (currentState) {
- PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
- } else {
- PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
- }
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, true);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ if (currentState) {
+ PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
+ } else {
+ PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
+ }
+ }
+ });
} else {
PluginMessages.sendMessage(sender, "Try /pvp toggle ");
}
@@ -53,6 +59,18 @@ public class PvpToggleCommand {
return;
}
boolean currentState = PreventStabby.getPlugin().getPlayerManager().togglePlayerPvpState(player.getUniqueId());
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, currentState, false);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ if (currentState) {
+ PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
+ } else {
+ PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
+ }
+ }
+ });
+
String message;
if (currentState) {
message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
@@ -77,7 +95,13 @@ public class PvpToggleCommand {
return;
}
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
- PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, true);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
+ }
+ });
} else {
PluginMessages.sendMessage(sender, "Try /pvp enable ");
}
@@ -101,6 +125,13 @@ public class PvpToggleCommand {
String message = PreventStabby.getPlugin().getConfigCache().getPvp_enabled_other();
PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message));
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, true, false);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_enabled());
+ }
+ });
} else {
if (PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) {
PluginMessages.sendMessage(sender, "Try /pvp enable ");
@@ -123,7 +154,13 @@ public class PvpToggleCommand {
return;
}
PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
- PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, true);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ PluginMessages.sendMessage(sender, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
+ }
+ });
} else {
PluginMessages.sendMessage(sender, "Try /pvp disable ");
}
@@ -146,7 +183,14 @@ public class PvpToggleCommand {
}
String message = PreventStabby.getPlugin().getConfigCache().getPvp_disabled_other();
PluginMessages.sendMessage(sender, PluginMessages.parsePlayerName(player, message));
- PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), true);
+ PreventStabby.getPlugin().getPlayerManager().setPlayerPvpState(player.getUniqueId(), false);
+ PlayerTogglePvpEvent toggleEvent = new PlayerTogglePvpEvent(player, false, false);
+ Bukkit.getScheduler().runTask(PreventStabby.getPlugin(), () -> {
+ Bukkit.getPluginManager().callEvent(toggleEvent);
+ if (toggleEvent.isSendMessage()) {
+ PluginMessages.sendMessage(player, PreventStabby.getPlugin().getConfigCache().getPvp_disabled());
+ }
+ });
} else {
if (PreventStabbyPermission.COMMAND_TOGGLE_OTHERS.doesCommandSenderHave(sender)) {
diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java
index 722daf5..c11c4db 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/PlacoholderApiHook.java
@@ -55,7 +55,7 @@ public class PlacoholderApiHook extends PlaceholderExpansion {
if (!player.isOnline()) {
return legacyComponentSerializer.serialize(PluginMessages.parseMessage(plugin.getConfigCache().getPlaceholder_not_in_combat()));
}
- long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombattime() - Instant.now().getEpochSecond();
+ long seconds = plugin.getPlayerManager().getPlayer(uuid).getCombatTime();
if (seconds > 0) {
String msg = plugin.getConfigCache().getPlaceholder_combat_time();
msg = msg.replaceAll("%time%", String.valueOf(seconds));
diff --git a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
index 8cf614d..a01e90c 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/hooks/WorldGuardHook.java
@@ -12,9 +12,8 @@ import com.sk89q.worldguard.protection.flags.registry.FlagConflictException;
import com.sk89q.worldguard.protection.flags.registry.FlagRegistry;
import com.sk89q.worldguard.protection.regions.RegionContainer;
import com.sk89q.worldguard.protection.regions.RegionQuery;
-import me.youhavetrouble.preventstabby.PreventStabby;
+import org.bukkit.Bukkit;
import org.bukkit.entity.Player;
-import org.bukkit.plugin.Plugin;
public class WorldGuardHook {
@@ -22,19 +21,18 @@ public class WorldGuardHook {
public static StateFlag FORCE_PVP_FLAG;
public static void init() {
- PreventStabby plugin = PreventStabby.getPlugin();
try {
Class.forName("com.sk89q.worldguard.protection.flags.registry.FlagRegistry");
WorldGuardPlugin worldGuardPlugin = WorldGuardPlugin.inst();
if (WorldGuard.getInstance() == null || worldGuardPlugin == null) return;
- plugin.getLogger().info("Hooking into WorldGuard");
+ Bukkit.getLogger().info("[PreventStabby] Hooking into WorldGuard");
flagRegistry = WorldGuard.getInstance().getFlagRegistry();
- createForcePvpFlag(plugin);
+ createForcePvpFlag();
} catch (NoClassDefFoundError | ClassNotFoundException ignored) {
}
}
- private static void createForcePvpFlag(Plugin plugin) {
+ private static void createForcePvpFlag() {
if (flagRegistry == null) return;
String flagName = "preventstabby-force-pvp";
try {
@@ -46,7 +44,7 @@ public class WorldGuardHook {
if (existing instanceof StateFlag) {
FORCE_PVP_FLAG = (StateFlag) existing;
} else {
- plugin.getLogger().severe("There is a conflict between flag names!");
+ Bukkit.getLogger().severe("[PreventStabby] There is a conflict between flag names!");
}
}
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java
index d580d2d..01f61e3 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerData.java
@@ -5,6 +5,9 @@ import me.youhavetrouble.preventstabby.PreventStabby;
import java.time.Instant;
import java.util.UUID;
+/**
+ * PreventStabby player data keeper.
+ */
public class PlayerData {
private final UUID playerUuid;
@@ -18,70 +21,92 @@ public class PlayerData {
this.loginTimestamp = Instant.now().getEpochSecond()-1;
this.teleportTimestamp = Instant.now().getEpochSecond()-1;
this.inCombat = false;
- refreshCachetime();
+ refreshCacheTime();
}
public UUID getPlayerUuid() {
return playerUuid;
}
+ /**
+ * Returns true if player has personal pvp enabled, false otherwise.
+ * @return True if player has personal pvp enabled, false otherwise.
+ * @see PlayerManager#getPlayerPvPState(UUID)
+ */
public boolean isPvpEnabled() {
return pvpEnabled;
}
+ /**
+ * Sets player's personal pvp state.
+ * @param pvpEnabled Pvp state to set.
+ */
public void setPvpEnabled(boolean pvpEnabled) {
this.pvpEnabled = pvpEnabled;
}
- public long getCachetime() {
+ protected long getCachetime() {
return cachetime;
}
- public void refreshCachetime() {
- this.cachetime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCache_time();
+ protected void refreshCacheTime() {
+ this.cachetime = Instant.now().getEpochSecond() + PreventStabby.getPlugin().getConfigCache().getCache_time();
}
- public long getCombattime() {
- return combattime;
+ /**
+ * Time left until the end of combat in seconds.
+ * @return Time left until the end of combat in seconds.
+ * Return of 0 means out of combat or about to be out of combat.
+ */
+ public long getCombatTime() {
+ return Math.max(combattime - Instant.now().getEpochSecond(), 0);
}
-
- public void setCombattime(long combattime) {
+
+ protected void setCombattime(long combattime) {
this.combattime = combattime;
}
+ /**
+ * Sets player in combat and sets combat time to the interval set in config.
+ * @see PlayerManager#refreshPlayersCombatTime(UUID)
+ */
public void refreshCombatTime() {
this.combattime = Instant.now().getEpochSecond()+ PreventStabby.getPlugin().getConfigCache().getCombat_time();
}
- public boolean getLastCombatCheck() {
+ protected boolean getLastCombatCheck() {
return lastCombatCheck;
}
- public void setLastCombatCheck(boolean bool) {
+ protected void setLastCombatCheck(boolean bool) {
lastCombatCheck = bool;
}
- public void setLoginTimestamp(long loginTimestamp) {
+ protected void setLoginTimestamp(long loginTimestamp) {
this.loginTimestamp = loginTimestamp + PreventStabby.getPlugin().getConfigCache().getLogin_protection_time()-1;
}
- public long getLoginTimestamp() {
+ protected long getLoginTimestamp() {
return loginTimestamp;
}
- public void setTeleportTimestamp(long teleportTimestamp) {
+ protected void setTeleportTimestamp(long teleportTimestamp) {
this.teleportTimestamp = teleportTimestamp + PreventStabby.getPlugin().getConfigCache().getTeleport_protection_time()-1;
}
- public long getTeleportTimestamp() {
+ protected long getTeleportTimestamp() {
return teleportTimestamp;
}
+ /**
+ * Returns player's current combat state.
+ * @return Player's current combat state.
+ */
public boolean isInCombat() {
return inCombat;
}
- public void setInCombat(boolean inCombat) {
+ protected void setInCombat(boolean inCombat) {
this.inCombat = inCombat;
}
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java
similarity index 87%
rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java
rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java
index d506f9a..5e177da 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerDeathListener.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerDeathListener.java
@@ -1,7 +1,6 @@
-package me.youhavetrouble.preventstabby.listeners.player;
+package me.youhavetrouble.preventstabby.players;
import me.youhavetrouble.preventstabby.PreventStabby;
-import me.youhavetrouble.preventstabby.players.PlayerData;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java
similarity index 96%
rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java
rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java
index 8e8463f..416691c 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerJoinAndLeaveListener.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerJoinAndLeaveListener.java
@@ -1,4 +1,4 @@
-package me.youhavetrouble.preventstabby.listeners.player;
+package me.youhavetrouble.preventstabby.players;
import me.youhavetrouble.preventstabby.PreventStabby;
import me.youhavetrouble.preventstabby.players.PlayerData;
@@ -34,7 +34,7 @@ public class PlayerJoinAndLeaveListener implements Listener {
});
return;
}
- playerData.refreshCachetime();
+ playerData.refreshCacheTime();
playerData.setLoginTimestamp(time);
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
index 788716a..901af5c 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerManager.java
@@ -59,10 +59,10 @@ public class PlayerManager {
}
- public void refreshPlayersCacheTime(UUID uuid) {
- playerList.get(uuid).refreshCachetime();
- }
-
+ /**
+ * Sets player in combat and sets combat time to the interval set in config.
+ * @see PlayerData#refreshCombatTime()
+ */
public void refreshPlayersCombatTime(UUID uuid) {
PlayerData data = playerList.get(uuid);
if (data == null) return;
@@ -70,25 +70,46 @@ public class PlayerManager {
if (player == null || player.isDead()) return;
data.refreshCombatTime();
data.setInCombat(true);
-
}
+ /**
+ * Gets player's PlayerData object. Returns null when player with provided UUID doesn't exist.
+ * @param uuid Player's UUID.
+ * @return Player's PlayerData object or null if player doesn't exist.
+ */
public PlayerData getPlayer(UUID uuid) {
return playerList.get(uuid);
}
- public void addPlayer(UUID uuid, PlayerData data) {
+ protected void addPlayer(UUID uuid, PlayerData data) {
playerList.put(uuid, data);
}
+ /**
+ * Returns true if player has personal pvp enabled, false otherwise.
+ * @param uuid Player's UUID.
+ * @return True if player has personal pvp enabled, false otherwise.
+ * @see PlayerData#isPvpEnabled()
+ */
public boolean getPlayerPvPState(UUID uuid) {
return PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled();
}
+ /**
+ * Sets player's personal pvp state.
+ * @param uuid Player's UUID.
+ * @param state Pvp state to set.
+ * @see PlayerData#setPvpEnabled(boolean)
+ */
public void setPlayerPvpState(UUID uuid, boolean state) {
PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state);
}
+ /**
+ * Toggles player's personal pvp state.
+ * @param uuid Player's UUID.
+ * @return Player's personal pvp state after the change.
+ */
public boolean togglePlayerPvpState(UUID uuid) {
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
if (smartCache.getPlayerData(uuid).isPvpEnabled()) {
@@ -100,10 +121,26 @@ public class PlayerManager {
}
}
+ /**
+ * Check if attacker can harm the victim. Both of them have to have personal pvp enabled and none of them can have
+ * any kind of spawn or teleport protection.
+ * @param attacker Atacker's UUID.
+ * @param victim Victim's UUID.
+ * @param sendDenyMessage Should plugin send a message that there was attempt at damaging to both players?
+ * @return Whenever attacker can harm the victim.
+ */
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage) {
return canDamage(attacker, victim, sendDenyMessage, true);
}
+ /**
+ * Check if attacker can harm the victim.
+ * @param attacker Atacker's UUID.
+ * @param victim Victim's UUID.
+ * @param sendDenyMessage Should plugin send a message that there was attempt at damaging to both players?
+ * @param checkVictimSpawnProtection Should teleport and spawn protections be taken into account?
+ * @return Whenever attacker can harm the victim.
+ */
public boolean canDamage(UUID attacker, UUID victim, boolean sendDenyMessage, boolean checkVictimSpawnProtection) {
if (hasLoginProtection(attacker) || hasTeleportProtection(attacker)) return false;
@@ -149,8 +186,8 @@ public class PlayerManager {
}
/**
- * @param uuid Player UUIDs
- * @return true if any of the provided UUIDs has spawn protection
+ * @param uuid Player UUIDs.
+ * @return True if any of the provided UUIDs has spawn protection.
*/
public boolean hasLoginProtection(UUID... uuid) {
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
@@ -161,15 +198,27 @@ public class PlayerManager {
return false;
}
+ /**
+ * @param uuid Player UUID.
+ * @return True if player tied to the uuid currently has teleport protection.
+ */
public boolean hasTeleportProtection(UUID uuid) {
SmartCache smartCache = PreventStabby.getPlugin().getSmartCache();
return Instant.now().getEpochSecond() < smartCache.getPlayerData(uuid).getTeleportTimestamp();
}
+ /**
+ * Returns current forced pvp state.
+ * @return Current forced pvp state.
+ */
public PvpState getForcedPvpState() {
return pvpForcedState;
}
+ /**
+ * Sets current forced pvp state.
+ * @param forcedPvpState New forced pvp state.
+ */
public void setForcedPvpState(PvpState forcedPvpState) {
this.pvpForcedState = forcedPvpState;
}
diff --git a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerTeleportListener.java b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java
similarity index 82%
rename from src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerTeleportListener.java
rename to src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java
index a76ecb7..ab6ad56 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/listeners/player/PlayerTeleportListener.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/PlayerTeleportListener.java
@@ -1,8 +1,6 @@
-package me.youhavetrouble.preventstabby.listeners.player;
+package me.youhavetrouble.preventstabby.players;
import me.youhavetrouble.preventstabby.PreventStabby;
-import me.youhavetrouble.preventstabby.players.PlayerData;
-import me.youhavetrouble.preventstabby.players.SmartCache;
import me.youhavetrouble.preventstabby.util.PreventStabbyListener;
import org.bukkit.entity.Player;
import org.bukkit.event.EventHandler;
diff --git a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java
index a307d46..db9b124 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/players/SmartCache.java
@@ -16,7 +16,7 @@ public class SmartCache {
try {
Player player = Bukkit.getPlayer(e.getKey());
if (player != null && player.isOnline()) {
- PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
+ e.getValue().refreshCacheTime();
}
} catch (NullPointerException ignored) {}
}
@@ -32,8 +32,9 @@ public class SmartCache {
public PlayerData getPlayerData(UUID uuid) {
// Try to get data from cache and refresh it
try {
- PreventStabby.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
- return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid);
+ PlayerData data = PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid);
+ data.refreshCacheTime();
+ return data;
} catch (NullPointerException e) {
// If player data is not in cache get it from database and put into cache
try {
diff --git a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java b/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java
index 854535f..ce1eba5 100644
--- a/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java
+++ b/src/main/java/me/youhavetrouble/preventstabby/util/CombatTimer.java
@@ -11,8 +11,7 @@ public class CombatTimer {
public static void refreshPlayersCombatTime(UUID uuid) {
try {
- long now = Instant.now().getEpochSecond();
- long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombattime();
+ long combattime = PreventStabby.getPlugin().getSmartCache().getPlayerData(uuid).getCombatTime();
Player player = Bukkit.getPlayer(uuid);
if (player == null || !player.isOnline()) return;
@@ -22,7 +21,7 @@ public class CombatTimer {
if (playerEnterCombatEvent.isCancelled()) return;
PreventStabby.getPlugin().getPlayerManager().refreshPlayersCombatTime(uuid);
- if (combattime <= now) {
+ if (combattime <= 0) {
PluginMessages.sendActionBar(uuid, PreventStabby.getPlugin().getConfigCache().getEntering_combat());
}
});
@@ -38,7 +37,7 @@ public class CombatTimer {
public static boolean isInCombat(UUID uuid) {
try {
- return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombattime() >= Instant.now().getEpochSecond();
+ return PreventStabby.getPlugin().getPlayerManager().getPlayer(uuid).getCombatTime() >= Instant.now().getEpochSecond();
} catch (Exception e) {
return false;
}