mirror of
https://github.com/YouHaveTrouble/PreventStabby.git
synced 2026-05-12 05:16:55 +00:00
use object for PlayerData instead of hashmap
This commit is contained in:
+1
-1
@@ -31,7 +31,7 @@ public class PlayerHitByExplosionListener implements Listener {
|
|||||||
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
UUID damageruuid = UUID.fromString(event.getDamager().getMetadata("PLAYEREXPLODED").get(0).asString());
|
||||||
if (!victim.getUniqueId().equals(damageruuid)) {
|
if (!victim.getUniqueId().equals(damageruuid)) {
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
boolean damagerPvpEnabled = SmartCache.getPlayerData(damageruuid).isPvpEnabled();
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_attacker());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+5
-7
@@ -1,12 +1,12 @@
|
|||||||
package eu.endermite.togglepvp.listeners.player;
|
package eu.endermite.togglepvp.listeners.player;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.players.PlayerData;
|
||||||
import eu.endermite.togglepvp.util.PluginMessages;
|
import eu.endermite.togglepvp.util.PluginMessages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.event.EventHandler;
|
import org.bukkit.event.EventHandler;
|
||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
@eu.endermite.togglepvp.util.Listener
|
@eu.endermite.togglepvp.util.Listener
|
||||||
public class PlayerJoinAndLeaveListener implements Listener {
|
public class PlayerJoinAndLeaveListener implements Listener {
|
||||||
@@ -16,10 +16,8 @@ public class PlayerJoinAndLeaveListener implements Listener {
|
|||||||
@EventHandler(ignoreCancelled = true)
|
@EventHandler(ignoreCancelled = true)
|
||||||
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
|
public void onPlayerJoin(org.bukkit.event.player.PlayerJoinEvent event) {
|
||||||
Player player = event.getPlayer();
|
Player player = event.getPlayer();
|
||||||
HashMap<String, Object> playerData;
|
|
||||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId());
|
PlayerData playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId());
|
||||||
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
|
||||||
playerData.put("combattime", Instant.now().getEpochSecond()-1);
|
|
||||||
TogglePvP.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData);
|
TogglePvP.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData);
|
||||||
}
|
}
|
||||||
/**
|
/**
|
||||||
@@ -32,13 +30,13 @@ public class PlayerJoinAndLeaveListener implements Listener {
|
|||||||
TogglePvP.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()));
|
TogglePvP.getPlugin().getSqLite().updatePlayerInfo(player.getUniqueId(), TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()));
|
||||||
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout()) {
|
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout()) {
|
||||||
long now = Instant.now().getEpochSecond();
|
long now = Instant.now().getEpochSecond();
|
||||||
long combatTime = (long) TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).get("combattime");
|
long combatTime = TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).getCombattime();
|
||||||
if (combatTime > now) {
|
if (combatTime > now) {
|
||||||
player.setHealth(0);
|
player.setHealth(0);
|
||||||
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout_announce()) {
|
if (TogglePvP.getPlugin().getConfigCache().isPunish_for_combat_logout_announce()) {
|
||||||
PluginMessages.broadcastMessage(player, TogglePvP.getPlugin().getConfigCache().getPunish_for_combat_logout_message());
|
PluginMessages.broadcastMessage(player, TogglePvP.getPlugin().getConfigCache().getPunish_for_combat_logout_message());
|
||||||
}
|
}
|
||||||
TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).replace("combattime", now-1);
|
TogglePvP.getPlugin().getPlayerManager().getPlayer(player.getUniqueId()).setCombattime(now-1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -22,7 +22,7 @@ public class WolfAttackPlayerListener implements Listener {
|
|||||||
Wolf wolf = (Wolf) event.getDamager();
|
Wolf wolf = (Wolf) event.getDamager();
|
||||||
if (wolf.getOwner() != null && event.getEntity() instanceof Player) {
|
if (wolf.getOwner() != null && event.getEntity() instanceof Player) {
|
||||||
try {
|
try {
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).get("pvpenabled");
|
boolean damagerPvpEnabled = SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
Player victim = (Player) event.getEntity();
|
Player victim = (Player) event.getEntity();
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
||||||
|
|||||||
+1
-1
@@ -72,7 +72,7 @@ public class AreaEffectCloudApplyListener implements Listener {
|
|||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
it.remove();
|
it.remove();
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
|
|||||||
+1
-1
@@ -32,7 +32,7 @@ public class EntityHitByLightningListener implements Listener {
|
|||||||
}
|
}
|
||||||
} else if (event.getEntity() instanceof Wolf) {
|
} else if (event.getEntity() instanceof Wolf) {
|
||||||
Wolf victim = (Wolf) event.getEntity();
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -52,7 +52,7 @@ public class FishingListener implements Listener {
|
|||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_attacker());
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
|||||||
+2
-2
@@ -66,7 +66,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
@@ -123,7 +123,7 @@ public class LavaDumpAndIgniteListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
try {
|
try {
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+1
-1
@@ -34,7 +34,7 @@ public class LightningBlockIgniteListener implements Listener {
|
|||||||
if (victim.getOwner() == null) {
|
if (victim.getOwner() == null) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
if (!(boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled")) {
|
if (!SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled()) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|||||||
+1
-1
@@ -61,7 +61,7 @@ public class PlaceWitherRoseListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ public class PlayerAttackWolfListener implements Listener {
|
|||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+1
-1
@@ -30,7 +30,7 @@ public class PlayerHitWolfWithProjectile implements Listener {
|
|||||||
}
|
}
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
boolean damagerPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(damager.getUniqueId());
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
|
|||||||
@@ -34,13 +34,13 @@ public class WolfHitByExplosionListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damageruuid).get("pvpenabled");
|
boolean damagerPvpEnabled = SmartCache.getPlayerData(damageruuid).isPvpEnabled();
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_attacker());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damageruuid, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+1
-1
@@ -58,7 +58,7 @@ public class WolfHitBySplashPotionListener implements Listener {
|
|||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
event.setIntensity(victim, 0);
|
event.setIntensity(victim, 0);
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_victim());
|
||||||
|
|||||||
@@ -25,13 +25,13 @@ public class WolfLeashListener implements Listener {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
ConfigCache config = TogglePvP.getPlugin().getConfigCache();
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damager.getUniqueId()).get("pvpenabled");
|
boolean damagerPvpEnabled = SmartCache.getPlayerData(damager.getUniqueId()).isPvpEnabled();
|
||||||
if (!damagerPvpEnabled) {
|
if (!damagerPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_attacker());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled) {
|
if (!victimPvpEnabled) {
|
||||||
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
PluginMessages.sendActionBar(damager, config.getCannot_attack_pets_victim());
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
+1
-1
@@ -19,7 +19,7 @@ public class WolfTargettingPlayerListener implements Listener {
|
|||||||
Wolf wolf = (Wolf) event.getEntity();
|
Wolf wolf = (Wolf) event.getEntity();
|
||||||
if (wolf.getOwner() != null) {
|
if (wolf.getOwner() != null) {
|
||||||
if (event.getTarget() instanceof Player) {
|
if (event.getTarget() instanceof Player) {
|
||||||
boolean attackerPvPEnabled = (boolean) SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).get("pvpenabled");
|
boolean attackerPvPEnabled = SmartCache.getPlayerData(wolf.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
Player victim = (Player) event.getTarget();
|
Player victim = (Player) event.getTarget();
|
||||||
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
boolean victimPvpEnabled = TogglePvP.getPlugin().getPlayerManager().getPlayerPvPState(victim.getUniqueId());
|
||||||
if (!attackerPvPEnabled || !victimPvpEnabled) {
|
if (!attackerPvPEnabled || !victimPvpEnabled) {
|
||||||
|
|||||||
@@ -16,8 +16,8 @@ public class WolfTargettingWolfListener implements Listener {
|
|||||||
Wolf victim = (Wolf) event.getEntity();
|
Wolf victim = (Wolf) event.getEntity();
|
||||||
if (damager.getOwner() != null && damager.getOwner() != null) {
|
if (damager.getOwner() != null && damager.getOwner() != null) {
|
||||||
try {
|
try {
|
||||||
boolean damagerPvpEnabled = (boolean) SmartCache.getPlayerData(damager.getOwner().getUniqueId()).get("pvpenabled");
|
boolean damagerPvpEnabled = SmartCache.getPlayerData(damager.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
boolean victimPvpEnabled = (boolean) SmartCache.getPlayerData(victim.getOwner().getUniqueId()).get("pvpenabled");
|
boolean victimPvpEnabled = SmartCache.getPlayerData(victim.getOwner().getUniqueId()).isPvpEnabled();
|
||||||
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
if (!victimPvpEnabled || !damagerPvpEnabled) {
|
||||||
damager.setAngry(false);
|
damager.setAngry(false);
|
||||||
event.setCancelled(true);
|
event.setCancelled(true);
|
||||||
|
|||||||
@@ -0,0 +1,45 @@
|
|||||||
|
package eu.endermite.togglepvp.players;
|
||||||
|
|
||||||
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
|
||||||
|
public class PlayerData {
|
||||||
|
|
||||||
|
private long cachetime, combattime;
|
||||||
|
private boolean pvpEnabled;
|
||||||
|
|
||||||
|
public PlayerData(boolean pvpEnabled) {
|
||||||
|
this.pvpEnabled = pvpEnabled;
|
||||||
|
this.combattime = Instant.now().getEpochSecond()-1;
|
||||||
|
refreshCachetime();
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isPvpEnabled() {
|
||||||
|
return pvpEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setPvpEnabled(boolean pvpEnabled) {
|
||||||
|
this.pvpEnabled = pvpEnabled;
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCachetime() {
|
||||||
|
return cachetime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshCachetime() {
|
||||||
|
this.cachetime = Instant.now().getEpochSecond()+TogglePvP.getPlugin().getConfigCache().getCache_time();
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getCombattime() {
|
||||||
|
return combattime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setCombattime(long combattime) {
|
||||||
|
this.combattime = combattime;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void refreshCombatTime() {
|
||||||
|
this.combattime = Instant.now().getEpochSecond()+TogglePvP.getPlugin().getConfigCache().getCombat_time();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -11,14 +11,11 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class PlayerManager {
|
public class PlayerManager {
|
||||||
|
|
||||||
@Getter HashMap<UUID, HashMap<String, Object>> playerList = new HashMap<>();
|
@Getter HashMap<UUID, PlayerData> playerList = new HashMap<>();
|
||||||
|
|
||||||
public PlayerManager() {
|
public PlayerManager() {
|
||||||
|
|
||||||
for (Player p : Bukkit.getOnlinePlayers()) {
|
for (Player p : Bukkit.getOnlinePlayers()) {
|
||||||
HashMap<String, Object> playerData;
|
PlayerData playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId());
|
||||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId());
|
|
||||||
playerData.put("cachetime", refreshedCacheTime());
|
|
||||||
playerList.put(p.getUniqueId(), playerData);
|
playerList.put(p.getUniqueId(), playerData);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -35,20 +32,20 @@ public class PlayerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void refreshPlayersCacheTime(UUID uuid) {
|
public void refreshPlayersCacheTime(UUID uuid) {
|
||||||
playerList.get(uuid).replace("cachetime", refreshedCacheTime());
|
playerList.get(uuid).refreshCachetime();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void refreshPlayersCombatTime(UUID uuid) {
|
public void refreshPlayersCombatTime(UUID uuid) {
|
||||||
try {
|
try {
|
||||||
playerList.get(uuid).replace("combattime", refreshedCombatTime());
|
playerList.get(uuid).refreshCombatTime();
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> getPlayer(UUID uuid) {
|
public PlayerData getPlayer(UUID uuid) {
|
||||||
return playerList.get(uuid);
|
return playerList.get(uuid);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void addPlayer(UUID uuid, HashMap<String,Object> data) {
|
public void addPlayer(UUID uuid, PlayerData data) {
|
||||||
playerList.put(uuid, data);
|
playerList.put(uuid, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -57,20 +54,20 @@ public class PlayerManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public boolean getPlayerPvPState(UUID uuid) {
|
public boolean getPlayerPvPState(UUID uuid) {
|
||||||
return (boolean) playerList.get(uuid).get("pvpenabled");
|
return playerList.get(uuid).isPvpEnabled();
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setPlayerPvpState(UUID uuid, boolean state) {
|
public void setPlayerPvpState(UUID uuid, boolean state) {
|
||||||
playerList.get(uuid).replace("pvpenabled", state);
|
playerList.get(uuid).setPvpEnabled(state);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean togglePlayerPvpState(UUID uuid) {
|
public boolean togglePlayerPvpState(UUID uuid) {
|
||||||
boolean currentState = (boolean) playerList.get(uuid).get("pvpenabled");
|
boolean currentState = (boolean) playerList.get(uuid).isPvpEnabled();
|
||||||
if (currentState) {
|
if (currentState) {
|
||||||
playerList.get(uuid).replace("pvpenabled", false);
|
playerList.get(uuid).setPvpEnabled(false);
|
||||||
return false;
|
return false;
|
||||||
} else {
|
} else {
|
||||||
playerList.get(uuid).replace("pvpenabled", true);
|
playerList.get(uuid).setPvpEnabled(true);
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -3,40 +3,32 @@ package eu.endermite.togglepvp.players;
|
|||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
import org.bukkit.scheduler.BukkitRunnable;
|
|
||||||
|
|
||||||
import java.time.Instant;
|
import java.time.Instant;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Iterator;
|
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
|
||||||
public class SmartCache {
|
public class SmartCache {
|
||||||
|
|
||||||
public static void runSmartCache() {
|
public static void runSmartCache() {
|
||||||
new BukkitRunnable() {
|
Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvP.getPlugin(), () -> {
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
// Refresh cache timer if player is online
|
// Refresh cache timer if player is online
|
||||||
for (Map.Entry<UUID, HashMap<String, Object>> e : TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
|
for (Map.Entry<UUID, PlayerData> e : TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet()) {
|
||||||
try {
|
try {
|
||||||
Player player = Bukkit.getPlayer(e.getKey());
|
Player player = Bukkit.getPlayer(e.getKey());
|
||||||
if (player.isOnline()) {
|
if (player != null && player.isOnline()) {
|
||||||
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
|
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(e.getKey());
|
||||||
}
|
}
|
||||||
} catch (NullPointerException ignored) {}
|
} catch (NullPointerException ignored) {}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Check for entries that should be invalidated
|
// Check for entries that should be invalidated
|
||||||
try {
|
try {
|
||||||
long now = Instant.now().getEpochSecond();
|
long now = Instant.now().getEpochSecond();
|
||||||
TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().removeIf(cacheEntry -> (Long) cacheEntry.getValue().get("cachetime") < now);
|
TogglePvP.getPlugin().getPlayerManager().getPlayerList().entrySet().removeIf(cacheEntry -> cacheEntry.getValue().getCachetime() < now);
|
||||||
} catch (Exception ignored) {}
|
} catch (Exception ignored) {}
|
||||||
}
|
}, 100, 100);
|
||||||
}.runTaskTimerAsynchronously(TogglePvP.getPlugin(), 100, 100);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static HashMap<String, Object> getPlayerData(UUID uuid) {
|
public static PlayerData getPlayerData(UUID uuid) {
|
||||||
// Try to get data from cache and refresh it
|
// Try to get data from cache and refresh it
|
||||||
try {
|
try {
|
||||||
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
|
TogglePvP.getPlugin().getPlayerManager().refreshPlayersCacheTime(uuid);
|
||||||
@@ -44,15 +36,12 @@ public class SmartCache {
|
|||||||
} catch (NullPointerException e) {
|
} catch (NullPointerException e) {
|
||||||
// If player data is not in cache get it from database and put into cache
|
// If player data is not in cache get it from database and put into cache
|
||||||
try {
|
try {
|
||||||
HashMap<String, Object> playerData;
|
PlayerData playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
||||||
playerData = TogglePvP.getPlugin().getSqLite().getPlayerInfo(uuid);
|
|
||||||
playerData.put("cachetime", TogglePvP.getPlugin().getPlayerManager().refreshedCacheTime());
|
|
||||||
playerData.put("combattime", Instant.now().getEpochSecond()-1);
|
|
||||||
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
TogglePvP.getPlugin().getPlayerManager().addPlayer(uuid, playerData);
|
||||||
return playerData;
|
return playerData;
|
||||||
} catch (NullPointerException ex) {
|
} catch (NullPointerException ex) {
|
||||||
// Return null if database call fails
|
// Return false if database call fails
|
||||||
return null;
|
return new PlayerData(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -11,7 +11,7 @@ public class CombatTimer {
|
|||||||
public static void refreshPlayersCombatTime(UUID uuid) {
|
public static void refreshPlayersCombatTime(UUID uuid) {
|
||||||
try {
|
try {
|
||||||
long now = Instant.now().getEpochSecond();
|
long now = Instant.now().getEpochSecond();
|
||||||
long combattime = (long) SmartCache.getPlayerData(uuid).get("combattime");
|
long combattime = SmartCache.getPlayerData(uuid).getCombattime();
|
||||||
if (combattime < now) {
|
if (combattime < now) {
|
||||||
PluginMessages.sendActionBar(uuid, TogglePvP.getPlugin().getConfigCache().getEntering_combat());
|
PluginMessages.sendActionBar(uuid, TogglePvP.getPlugin().getConfigCache().getEntering_combat());
|
||||||
}
|
}
|
||||||
@@ -26,7 +26,7 @@ public class CombatTimer {
|
|||||||
|
|
||||||
public static boolean isInCombat(UUID uuid) {
|
public static boolean isInCombat(UUID uuid) {
|
||||||
try {
|
try {
|
||||||
long combattimer = (long) SmartCache.getPlayerData(uuid).get("combattime");
|
long combattimer = SmartCache.getPlayerData(uuid).getCombattime();
|
||||||
long now = Instant.now().getEpochSecond();
|
long now = Instant.now().getEpochSecond();
|
||||||
return combattimer > now;
|
return combattimer > now;
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
package eu.endermite.togglepvp.util;
|
package eu.endermite.togglepvp.util;
|
||||||
|
|
||||||
import eu.endermite.togglepvp.TogglePvP;
|
import eu.endermite.togglepvp.TogglePvP;
|
||||||
|
import eu.endermite.togglepvp.players.PlayerData;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.sql.*;
|
import java.sql.*;
|
||||||
@@ -9,8 +10,8 @@ import java.util.UUID;
|
|||||||
|
|
||||||
public class DatabaseSQLite {
|
public class DatabaseSQLite {
|
||||||
|
|
||||||
private String url;
|
private final String url;
|
||||||
private File folder;
|
private final File folder;
|
||||||
|
|
||||||
public DatabaseSQLite(String url, File folder) {
|
public DatabaseSQLite(String url, File folder) {
|
||||||
this.url = url;
|
this.url = url;
|
||||||
@@ -48,7 +49,6 @@ public class DatabaseSQLite {
|
|||||||
if (conn != null) {
|
if (conn != null) {
|
||||||
conn.close();
|
conn.close();
|
||||||
}
|
}
|
||||||
return true;
|
|
||||||
} catch (SQLException ex) {
|
} catch (SQLException ex) {
|
||||||
System.out.println(ex.getMessage());
|
System.out.println(ex.getMessage());
|
||||||
}
|
}
|
||||||
@@ -56,8 +56,7 @@ public class DatabaseSQLite {
|
|||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
public HashMap<String, Object> getPlayerInfo(UUID uuid) {
|
public PlayerData getPlayerInfo(UUID uuid) {
|
||||||
HashMap<String, Object> dataHashMap = new HashMap<>();
|
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Connection conn = DriverManager.getConnection(url);
|
Connection conn = DriverManager.getConnection(url);
|
||||||
@@ -74,23 +73,21 @@ public class DatabaseSQLite {
|
|||||||
String sql = "SELECT * FROM `players` WHERE `player_uuid` = '" + uuid.toString() + "';";
|
String sql = "SELECT * FROM `players` WHERE `player_uuid` = '" + uuid.toString() + "';";
|
||||||
statement.execute(sql);
|
statement.execute(sql);
|
||||||
ResultSet result = statement.getResultSet();
|
ResultSet result = statement.getResultSet();
|
||||||
dataHashMap.put("pvpenabled", result.getBoolean("pvpenabled"));
|
|
||||||
|
|
||||||
conn.close();
|
conn.close();
|
||||||
return dataHashMap;
|
return new PlayerData(result.getBoolean("pvpenabled"));
|
||||||
} catch (SQLException throwables) {
|
} catch (SQLException throwables) {
|
||||||
throwables.printStackTrace();
|
throwables.printStackTrace();
|
||||||
}
|
}
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void updatePlayerInfo(UUID uuid, HashMap<String, Object> data) {
|
public void updatePlayerInfo(UUID uuid, PlayerData data) {
|
||||||
|
|
||||||
try {
|
try {
|
||||||
Connection conn = DriverManager.getConnection(url);
|
Connection conn = DriverManager.getConnection(url);
|
||||||
Statement insertnewuser = conn.createStatement();
|
Statement insertnewuser = conn.createStatement();
|
||||||
try {
|
try {
|
||||||
String newuserdata = "UPDATE `players` SET pvpenabled = "+data.get("pvpenabled")+" WHERE `player_uuid` = '"+uuid.toString()+"';";
|
String newuserdata = "UPDATE `players` SET pvpenabled = "+data.isPvpEnabled()+" WHERE `player_uuid` = '"+uuid.toString()+"';";
|
||||||
insertnewuser.execute(newuserdata);
|
insertnewuser.execute(newuserdata);
|
||||||
} catch (SQLException e) {
|
} catch (SQLException e) {
|
||||||
TogglePvP.getPlugin().getLogger().severe("Error while saving player data!");
|
TogglePvP.getPlugin().getLogger().severe("Error while saving player data!");
|
||||||
|
|||||||
Reference in New Issue
Block a user