it is ready.

This commit is contained in:
YouHaveTrouble
2021-02-22 14:52:28 +01:00
parent 6b016ab960
commit 26e5d145ad
4 changed files with 39 additions and 15 deletions
@@ -19,8 +19,6 @@ public class PlayerJoinAndLeaveListener implements Listener {
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId()); PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(player.getUniqueId());
System.out.println(playerData.isPvpEnabled());
TogglePvp.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData); TogglePvp.getPlugin().getPlayerManager().addPlayer(player.getUniqueId(), playerData);
} }
/** /**
@@ -8,10 +8,12 @@ public class PlayerData {
private long cachetime, combattime; private long cachetime, combattime;
private boolean pvpEnabled; private boolean pvpEnabled;
private boolean lastCombatCheck;
public PlayerData(boolean pvpEnabled) { public PlayerData(boolean pvpEnabled) {
this.pvpEnabled = pvpEnabled; this.pvpEnabled = pvpEnabled;
this.combattime = Instant.now().getEpochSecond()-1; this.combattime = Instant.now().getEpochSecond()-1;
refreshCachetime(); refreshCachetime();
} }
@@ -42,4 +44,12 @@ public class PlayerData {
public void refreshCombatTime() { public void refreshCombatTime() {
this.combattime = Instant.now().getEpochSecond()+ TogglePvp.getPlugin().getConfigCache().getCombat_time(); this.combattime = Instant.now().getEpochSecond()+ TogglePvp.getPlugin().getConfigCache().getCombat_time();
} }
public boolean getLastCombatCheck() {
return lastCombatCheck;
}
public void setLastCombatCheck(boolean bool) {
lastCombatCheck = bool;
}
} }
@@ -1,21 +1,42 @@
package eu.endermite.togglepvp.players; package eu.endermite.togglepvp.players;
import eu.endermite.togglepvp.TogglePvp; import eu.endermite.togglepvp.TogglePvp;
import eu.endermite.togglepvp.util.CombatTimer;
import eu.endermite.togglepvp.util.PluginMessages;
import lombok.Getter; import lombok.Getter;
import org.bukkit.Bukkit; import org.bukkit.Bukkit;
import org.bukkit.entity.Player; import org.bukkit.entity.Player;
import org.bukkit.scheduler.BukkitTask;
import java.util.HashMap; import java.util.HashMap;
import java.util.Map;
import java.util.UUID; import java.util.UUID;
public class PlayerManager { public class PlayerManager {
@Getter HashMap<UUID, PlayerData> playerList = new HashMap<>(); @Getter
HashMap<UUID, PlayerData> playerList = new HashMap<>();
public final BukkitTask combatTrackerTask;
public PlayerManager() { public PlayerManager() {
for (Player p : Bukkit.getOnlinePlayers()) { for (Player p : Bukkit.getOnlinePlayers()) {
PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId()); PlayerData playerData = TogglePvp.getPlugin().getSqLite().getPlayerInfo(p.getUniqueId());
playerList.put(p.getUniqueId(), playerData); playerList.put(p.getUniqueId(), playerData);
} }
combatTrackerTask = Bukkit.getScheduler().runTaskTimerAsynchronously(TogglePvp.getPlugin(), () -> {
for (Map.Entry<UUID, PlayerData> set : playerList.entrySet()) {
UUID uuid = set.getKey();
if (!CombatTimer.isInCombat(uuid)) {
if (set.getValue().getLastCombatCheck()) {
set.getValue().setLastCombatCheck(false);
PluginMessages.sendActionBar(uuid, TogglePvp.getPlugin().getConfigCache().getLeaving_combat());
}
} else {
set.getValue().setLastCombatCheck(true);
}
}
}, 20, 20);
} }
public void refreshPlayersCacheTime(UUID uuid) { public void refreshPlayersCacheTime(UUID uuid) {
@@ -36,25 +57,21 @@ public class PlayerManager {
playerList.put(uuid, data); playerList.put(uuid, data);
} }
public void removePlayer(UUID uuid) {
playerList.remove(uuid);
}
public boolean getPlayerPvPState(UUID uuid) { public boolean getPlayerPvPState(UUID uuid) {
return playerList.get(uuid).isPvpEnabled(); return TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).isPvpEnabled();
} }
public void setPlayerPvpState(UUID uuid, boolean state) { public void setPlayerPvpState(UUID uuid, boolean state) {
playerList.get(uuid).setPvpEnabled(state); TogglePvp.getPlugin().getSmartCache().getPlayerData(uuid).setPvpEnabled(state);
} }
public boolean togglePlayerPvpState(UUID uuid) { public boolean togglePlayerPvpState(UUID uuid) {
boolean currentState = playerList.get(uuid).isPvpEnabled(); SmartCache smartCache = TogglePvp.getPlugin().getSmartCache();
if (currentState) { if (smartCache.getPlayerData(uuid).isPvpEnabled()) {
playerList.get(uuid).setPvpEnabled(false); smartCache.getPlayerData(uuid).setPvpEnabled(false);
return false; return false;
} else { } else {
playerList.get(uuid).setPvpEnabled(true); smartCache.getPlayerData(uuid).setPvpEnabled(true);
return true; return true;
} }
} }
@@ -1,7 +1,6 @@
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.SmartCache;
import java.time.Instant; import java.time.Instant;
import java.util.UUID; import java.util.UUID;