mirror of
https://gitlab.com/phoenix-dvpmt/mmocore.git
synced 2024-11-23 00:05:52 +01:00
MMOPlayerData refactor
Please use this version of MMOLib https://github.com/mmopluginteam/mmolib/releases/tag/1.2.5
This commit is contained in:
parent
87c75588fa
commit
6fc5f8f657
BIN
lib/MMOLib.jar
BIN
lib/MMOLib.jar
Binary file not shown.
@ -53,8 +53,7 @@ import net.Indyuce.mmocore.listener.SpellCast.SkillCasting;
|
|||||||
import net.md_5.bungee.api.ChatMessageType;
|
import net.md_5.bungee.api.ChatMessageType;
|
||||||
import net.md_5.bungee.api.chat.TextComponent;
|
import net.md_5.bungee.api.chat.TextComponent;
|
||||||
import net.mmogroup.mmolib.MMOLib;
|
import net.mmogroup.mmolib.MMOLib;
|
||||||
import net.mmogroup.mmolib.api.player.MMOData;
|
import net.mmogroup.mmolib.api.player.MMOPlayerData;
|
||||||
import net.mmogroup.mmolib.api.stat.StatMap;
|
|
||||||
import net.mmogroup.mmolib.version.VersionSound;
|
import net.mmogroup.mmolib.version.VersionSound;
|
||||||
|
|
||||||
public class PlayerData extends OfflinePlayerData {
|
public class PlayerData extends OfflinePlayerData {
|
||||||
@ -64,7 +63,7 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
* player is offline so the plugin can use #isOnline to check if the player
|
* player is offline so the plugin can use #isOnline to check if the player
|
||||||
* is online
|
* is online
|
||||||
*/
|
*/
|
||||||
private Player player;
|
private final MMOPlayerData mmoData;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* 'profess' can be null, you need to retrieve the player class using the
|
* 'profess' can be null, you need to retrieve the player class using the
|
||||||
@ -88,7 +87,7 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
private final PlayerAttributes attributes = new PlayerAttributes(this);
|
private final PlayerAttributes attributes = new PlayerAttributes(this);
|
||||||
private final Map<String, SavedClassInformation> classSlots = new HashMap<>();
|
private final Map<String, SavedClassInformation> classSlots = new HashMap<>();
|
||||||
|
|
||||||
private long lastWaypoint, lastLogin, lastFriendRequest, actionBarTimeOut, lastLootChest;
|
private long lastWaypoint, lastFriendRequest, actionBarTimeOut, lastLootChest;
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* NON-FINAL player data stuff made public to facilitate field change
|
* NON-FINAL player data stuff made public to facilitate field change
|
||||||
@ -98,12 +97,13 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
public boolean nocd;
|
public boolean nocd;
|
||||||
public CombatRunnable combat;
|
public CombatRunnable combat;
|
||||||
|
|
||||||
public PlayerData(Player player) {
|
public PlayerData(MMOPlayerData mmoData) {
|
||||||
super(player.getUniqueId());
|
super(mmoData.getUniqueId());
|
||||||
|
mmoData.setMMOCore(this);
|
||||||
|
|
||||||
setPlayer(player);
|
this.mmoData = mmoData;
|
||||||
playerStats = new PlayerStats(this);
|
this.playerStats = new PlayerStats(this);
|
||||||
questData = new PlayerQuests(this);
|
this.questData = new PlayerQuests(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -115,7 +115,10 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
private PlayerData() {
|
private PlayerData() {
|
||||||
super(UUID.randomUUID());
|
super(UUID.randomUUID());
|
||||||
|
|
||||||
playerStats = new PlayerStats(this, new StatMap(new MMOData().setMMOCore(this)));
|
mmoData = new MMOPlayerData(null, null);
|
||||||
|
mmoData.setMMOCore(this);
|
||||||
|
|
||||||
|
playerStats = new PlayerStats(this);
|
||||||
questData = new PlayerQuests(this, null);
|
questData = new PlayerQuests(this, null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -143,21 +146,8 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public static PlayerData get(OfflinePlayer player) {
|
public MMOPlayerData getMMOPlayerData() {
|
||||||
return get(player.getUniqueId());
|
return mmoData;
|
||||||
}
|
|
||||||
|
|
||||||
public static PlayerData get(UUID uuid) {
|
|
||||||
return MMOCore.plugin.dataProvider.getDataManager().get(uuid);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Collection<PlayerData> getAll() {
|
|
||||||
return MMOCore.plugin.dataProvider.getDataManager().getLoaded();
|
|
||||||
}
|
|
||||||
|
|
||||||
public void setPlayer(Player player) {
|
|
||||||
this.player = player;
|
|
||||||
this.lastLogin = System.currentTimeMillis();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<UUID> getFriends() {
|
public List<UUID> getFriends() {
|
||||||
@ -173,12 +163,12 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public Player getPlayer() {
|
public Player getPlayer() {
|
||||||
return player;
|
return mmoData.getPlayer();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public long getLastLogin() {
|
public long getLastLogin() {
|
||||||
return lastLogin;
|
return mmoData.getLastLogin();
|
||||||
}
|
}
|
||||||
|
|
||||||
public long getLastFriendRequest() {
|
public long getLastFriendRequest() {
|
||||||
@ -229,6 +219,10 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
return attributeReallocationPoints;
|
return attributeReallocationPoints;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean isOnline() {
|
||||||
|
return mmoData.isOnline();
|
||||||
|
}
|
||||||
|
|
||||||
public boolean hasParty() {
|
public boolean hasParty() {
|
||||||
return party != null;
|
return party != null;
|
||||||
}
|
}
|
||||||
@ -237,9 +231,9 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
return guild != null;
|
return guild != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isOnline() {
|
// public boolean isOnline() {
|
||||||
return player.isOnline();
|
// return player.isOnline();
|
||||||
}
|
// }
|
||||||
|
|
||||||
public void setLevel(int level) {
|
public void setLevel(int level) {
|
||||||
this.level = Math.max(1, level);
|
this.level = Math.max(1, level);
|
||||||
@ -260,8 +254,8 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
|
|
||||||
public void refreshVanillaExp() {
|
public void refreshVanillaExp() {
|
||||||
if (MMOCore.plugin.configManager.overrideVanillaExp) {
|
if (MMOCore.plugin.configManager.overrideVanillaExp) {
|
||||||
player.setLevel(getLevel());
|
getPlayer().setLevel(getLevel());
|
||||||
player.setExp(Math.max(0, Math.min(1, (float) experience / (float) getLevelUpExperience())));
|
getPlayer().setExp(Math.max(0, Math.min(1, (float) experience / (float) getLevelUpExperience())));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -339,8 +333,8 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void heal(double heal) {
|
public void heal(double heal) {
|
||||||
double newest = Math.max(0, Math.min(player.getHealth() + heal, player.getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()));
|
double newest = Math.max(0, Math.min(getPlayer().getHealth() + heal, getPlayer().getAttribute(Attribute.GENERIC_MAX_HEALTH).getValue()));
|
||||||
if (player.getHealth() == newest)
|
if (getPlayer().getHealth() == newest)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
PlayerRegenResourceEvent event = new PlayerRegenResourceEvent(this, PlayerResource.HEALTH, heal);
|
PlayerRegenResourceEvent event = new PlayerRegenResourceEvent(this, PlayerResource.HEALTH, heal);
|
||||||
@ -374,7 +368,7 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void log(Level level, String message) {
|
public void log(Level level, String message) {
|
||||||
MMOCore.plugin.getLogger().log(level, "[Userdata:" + player.getName() + "] " + message);
|
MMOCore.plugin.getLogger().log(level, "[Userdata:" + getPlayer().getName() + "] " + message);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void setLastFriendRequest(long ms) {
|
public void setLastFriendRequest(long ms) {
|
||||||
@ -402,32 +396,33 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
giveStellium(-waypoint.getStelliumCost());
|
giveStellium(-waypoint.getStelliumCost());
|
||||||
|
|
||||||
new BukkitRunnable() {
|
new BukkitRunnable() {
|
||||||
int x = player.getLocation().getBlockX(), y = player.getLocation().getBlockY(), z = player.getLocation().getBlockZ(), t;
|
int x = getPlayer().getLocation().getBlockX(), y = getPlayer().getLocation().getBlockY(), z = getPlayer().getLocation().getBlockZ(), t;
|
||||||
|
|
||||||
public void run() {
|
public void run() {
|
||||||
if (player.getLocation().getBlockX() != x || player.getLocation().getBlockY() != y || player.getLocation().getBlockZ() != z) {
|
if (getPlayer().getLocation().getBlockX() != x || getPlayer().getLocation().getBlockY() != y
|
||||||
player.playSound(player.getLocation(), Sound.ENTITY_VILLAGER_NO, 1, .5f);
|
|| getPlayer().getLocation().getBlockZ() != z) {
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("warping-canceled").send(player);
|
getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_VILLAGER_NO, 1, .5f);
|
||||||
|
MMOCore.plugin.configManager.getSimpleMessage("warping-canceled").send(getPlayer());
|
||||||
giveStellium(waypoint.getStelliumCost());
|
giveStellium(waypoint.getStelliumCost());
|
||||||
cancel();
|
cancel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("warping-comencing", "left", "" + ((120 - t) / 20)).send(player);
|
MMOCore.plugin.configManager.getSimpleMessage("warping-comencing", "left", "" + ((120 - t) / 20)).send(getPlayer());
|
||||||
if (t++ >= 100) {
|
if (t++ >= 100) {
|
||||||
player.teleport(waypoint.getLocation());
|
getPlayer().teleport(waypoint.getLocation());
|
||||||
player.addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false));
|
getPlayer().addPotionEffect(new PotionEffect(PotionEffectType.BLINDNESS, 20, 1, false, false));
|
||||||
player.playSound(player.getLocation(), VersionSound.ENTITY_ENDERMAN_TELEPORT.toSound(), 1, .5f);
|
getPlayer().playSound(getPlayer().getLocation(), VersionSound.ENTITY_ENDERMAN_TELEPORT.toSound(), 1, .5f);
|
||||||
cancel();
|
cancel();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
player.playSound(player.getLocation(), VersionSound.BLOCK_NOTE_BLOCK_BELL.toSound(), 1, (float) (t / Math.PI * .015 + .5));
|
getPlayer().playSound(getPlayer().getLocation(), VersionSound.BLOCK_NOTE_BLOCK_BELL.toSound(), 1, (float) (t / Math.PI * .015 + .5));
|
||||||
double r = Math.sin((double) t / 100 * Math.PI);
|
double r = Math.sin((double) t / 100 * Math.PI);
|
||||||
for (double j = 0; j < Math.PI * 2; j += Math.PI / 4)
|
for (double j = 0; j < Math.PI * 2; j += Math.PI / 4)
|
||||||
MMOLib.plugin.getVersion().getWrapper().spawnParticle(Particle.REDSTONE,
|
MMOLib.plugin.getVersion().getWrapper().spawnParticle(Particle.REDSTONE,
|
||||||
player.getLocation().add(Math.cos((double) t / 20 + j) * r, (double) t / 50, Math.sin((double) t / 20 + j) * r), 1.25f,
|
getPlayer().getLocation().add(Math.cos((double) t / 20 + j) * r, (double) t / 50, Math.sin((double) t / 20 + j) * r),
|
||||||
Color.PURPLE);
|
1.25f, Color.PURPLE);
|
||||||
}
|
}
|
||||||
}.runTaskTimer(MMOCore.plugin, 0, 1);
|
}.runTaskTimer(MMOCore.plugin, 0, 1);
|
||||||
}
|
}
|
||||||
@ -476,9 +471,9 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
|
|
||||||
if (level > oldLevel) {
|
if (level > oldLevel) {
|
||||||
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level));
|
Bukkit.getPluginManager().callEvent(new PlayerLevelUpEvent(this, null, oldLevel, level));
|
||||||
new ConfigMessage("level-up").addPlaceholders("level", "" + level).send(player);
|
new ConfigMessage("level-up").addPlaceholders("level", "" + level).send(getPlayer());
|
||||||
player.playSound(player.getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);
|
getPlayer().playSound(getPlayer().getLocation(), Sound.ENTITY_PLAYER_LEVELUP, 1, 1);
|
||||||
new SmallParticleEffect(player, Particle.SPELL_INSTANT);
|
new SmallParticleEffect(getPlayer(), Particle.SPELL_INSTANT);
|
||||||
getStats().updateStats();
|
getStats().updateStats();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -583,7 +578,7 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
|
|
||||||
public void displayActionBar(String message) {
|
public void displayActionBar(String message) {
|
||||||
setActionBarTimeOut(60);
|
setActionBarTimeOut(60);
|
||||||
player.spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
|
getPlayer().spigot().sendMessage(ChatMessageType.ACTION_BAR, TextComponent.fromLegacyText(message));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Deprecated
|
@Deprecated
|
||||||
@ -735,13 +730,13 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
if (!cast.isSuccessful()) {
|
if (!cast.isSuccessful()) {
|
||||||
if (!skill.getSkill().isPassive()) {
|
if (!skill.getSkill().isPassive()) {
|
||||||
if (cast.getCancelReason() == CancelReason.LOCKED)
|
if (cast.getCancelReason() == CancelReason.LOCKED)
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("not-unlocked-skill").send(player);
|
MMOCore.plugin.configManager.getSimpleMessage("not-unlocked-skill").send(getPlayer());
|
||||||
|
|
||||||
if (cast.getCancelReason() == CancelReason.MANA)
|
if (cast.getCancelReason() == CancelReason.MANA)
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana").send(player);
|
MMOCore.plugin.configManager.getSimpleMessage("casting.no-mana").send(getPlayer());
|
||||||
|
|
||||||
if (cast.getCancelReason() == CancelReason.COOLDOWN)
|
if (cast.getCancelReason() == CancelReason.COOLDOWN)
|
||||||
MMOCore.plugin.configManager.getSimpleMessage("casting.on-cooldown").send(player);
|
MMOCore.plugin.configManager.getSimpleMessage("casting.on-cooldown").send(getPlayer());
|
||||||
}
|
}
|
||||||
|
|
||||||
return cast;
|
return cast;
|
||||||
@ -762,4 +757,16 @@ public class PlayerData extends OfflinePlayerData {
|
|||||||
public boolean equals(Object obj) {
|
public boolean equals(Object obj) {
|
||||||
return obj != null && obj instanceof PlayerData && ((PlayerData) obj).getUniqueId().equals(getUniqueId());
|
return obj != null && obj instanceof PlayerData && ((PlayerData) obj).getUniqueId().equals(getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static PlayerData get(OfflinePlayer player) {
|
||||||
|
return get(player.getUniqueId());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static PlayerData get(UUID uuid) {
|
||||||
|
return MMOCore.plugin.dataProvider.getDataManager().get(uuid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Collection<PlayerData> getAll() {
|
||||||
|
return MMOCore.plugin.dataProvider.getDataManager().getLoaded();
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -1,28 +1,18 @@
|
|||||||
package net.Indyuce.mmocore.api.player.stats;
|
package net.Indyuce.mmocore.api.player.stats;
|
||||||
|
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
import net.mmogroup.mmolib.api.player.MMOData;
|
|
||||||
import net.mmogroup.mmolib.api.stat.StatInstance;
|
import net.mmogroup.mmolib.api.stat.StatInstance;
|
||||||
import net.mmogroup.mmolib.api.stat.StatMap;
|
import net.mmogroup.mmolib.api.stat.StatMap;
|
||||||
import net.mmogroup.mmolib.api.stat.modifier.StatModifier;
|
import net.mmogroup.mmolib.api.stat.modifier.StatModifier;
|
||||||
|
|
||||||
public class PlayerStats {
|
public class PlayerStats {
|
||||||
private final PlayerData data;
|
private final PlayerData data;
|
||||||
private final StatMap map;
|
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* util class to manipulate more easily stat data from MMOLib
|
* util class to manipulate more easily stat data from MMOLib
|
||||||
*/
|
*/
|
||||||
public PlayerStats(PlayerData data) {
|
public PlayerStats(PlayerData data) {
|
||||||
this.data = data;
|
this.data = data;
|
||||||
|
|
||||||
map = MMOData.get(data.getPlayer()).setMMOCore(data).getStatMap();
|
|
||||||
}
|
|
||||||
|
|
||||||
@Deprecated
|
|
||||||
public PlayerStats(PlayerData data, StatMap map) {
|
|
||||||
this.data = data;
|
|
||||||
this.map = map;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerData getData() {
|
public PlayerData getData() {
|
||||||
@ -30,7 +20,7 @@ public class PlayerStats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public StatMap getMap() {
|
public StatMap getMap() {
|
||||||
return map;
|
return data.getMMOPlayerData().getStatMap();
|
||||||
}
|
}
|
||||||
|
|
||||||
public StatInstance getInstance(StatType stat) {
|
public StatInstance getInstance(StatType stat) {
|
||||||
@ -38,7 +28,7 @@ public class PlayerStats {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public StatInstance getInstance(String stat) {
|
public StatInstance getInstance(String stat) {
|
||||||
return map.getInstance(stat);
|
return getMap().getInstance(stat);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -58,16 +48,16 @@ public class PlayerStats {
|
|||||||
* MMOLib. must be ran everytime the player levels up or changes class.
|
* MMOLib. must be ran everytime the player levels up or changes class.
|
||||||
*/
|
*/
|
||||||
public void updateStats() {
|
public void updateStats() {
|
||||||
map.getInstances().forEach(ins -> ins.removeIf(key -> key.equals("mmocoreClass")));
|
getMap().getInstances().forEach(ins -> ins.removeIf(key -> key.equals("mmocoreClass")));
|
||||||
|
|
||||||
for (StatType stat : StatType.values()) {
|
for (StatType stat : StatType.values()) {
|
||||||
StatInstance instance = map.getInstance(stat.name());
|
StatInstance instance = getMap().getInstance(stat.name());
|
||||||
double total = getBase(stat) - instance.getVanilla();
|
double total = getBase(stat) - instance.getVanilla();
|
||||||
|
|
||||||
if (total != 0)
|
if (total != 0)
|
||||||
instance.addModifier("mmocoreClass", new StatModifier(total));
|
instance.addModifier("mmocoreClass", new StatModifier(total));
|
||||||
}
|
}
|
||||||
|
|
||||||
map.updateAll();
|
getMap().updateAll();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -7,6 +7,7 @@ import java.util.Map;
|
|||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.logging.Level;
|
import java.util.logging.Level;
|
||||||
|
|
||||||
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import org.bukkit.configuration.file.FileConfiguration;
|
import org.bukkit.configuration.file.FileConfiguration;
|
||||||
import org.bukkit.configuration.file.YamlConfiguration;
|
import org.bukkit.configuration.file.YamlConfiguration;
|
||||||
@ -73,7 +74,7 @@ public class DropTableManager extends MMOManager {
|
|||||||
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load drop table file '" + file.getName() + "': " + exception.getMessage());
|
MMOCore.plugin.getLogger().log(Level.WARNING, "Could not load drop table file '" + file.getName() + "': " + exception.getMessage());
|
||||||
}
|
}
|
||||||
|
|
||||||
map.values().forEach(table -> table.postLoad());
|
Bukkit.getScheduler().runTask(MMOCore.plugin, () -> map.values().forEach(table -> table.postLoad()));
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -1,9 +1,8 @@
|
|||||||
package net.Indyuce.mmocore.manager.data;
|
package net.Indyuce.mmocore.manager.data;
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.HashMap;
|
|
||||||
import java.util.Map;
|
|
||||||
import java.util.UUID;
|
import java.util.UUID;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
|
|
||||||
import org.bukkit.Bukkit;
|
import org.bukkit.Bukkit;
|
||||||
import org.bukkit.OfflinePlayer;
|
import org.bukkit.OfflinePlayer;
|
||||||
@ -13,22 +12,25 @@ import net.Indyuce.mmocore.MMOCore;
|
|||||||
import net.Indyuce.mmocore.api.event.PlayerDataLoadEvent;
|
import net.Indyuce.mmocore.api.event.PlayerDataLoadEvent;
|
||||||
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
import net.Indyuce.mmocore.api.player.OfflinePlayerData;
|
||||||
import net.Indyuce.mmocore.api.player.PlayerData;
|
import net.Indyuce.mmocore.api.player.PlayerData;
|
||||||
|
import net.mmogroup.mmolib.api.player.MMOPlayerData;
|
||||||
|
|
||||||
public abstract class PlayerDataManager {
|
public abstract class PlayerDataManager {
|
||||||
private final Map<UUID, PlayerData> map = new HashMap<>();
|
// private final Map<UUID, PlayerData> map = new HashMap<>();
|
||||||
|
|
||||||
public PlayerData get(OfflinePlayer player) {
|
public PlayerData get(OfflinePlayer player) {
|
||||||
return get(player.getUniqueId());
|
return get(player.getUniqueId());
|
||||||
}
|
}
|
||||||
|
|
||||||
public PlayerData get(UUID uuid) {
|
public PlayerData get(UUID uuid) {
|
||||||
return map.getOrDefault(uuid, PlayerData.NOT_LOADED);
|
PlayerData found = MMOPlayerData.get(uuid).getMMOCore();
|
||||||
|
return found == null ? PlayerData.NOT_LOADED : found;
|
||||||
}
|
}
|
||||||
|
|
||||||
public void remove(UUID uuid) {
|
public void remove(UUID uuid) {
|
||||||
map.remove(uuid);
|
if (MMOPlayerData.isLoaded(uuid))
|
||||||
|
MMOPlayerData.get(uuid).setMMOCore(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract OfflinePlayerData getOffline(UUID uuid);
|
public abstract OfflinePlayerData getOffline(UUID uuid);
|
||||||
|
|
||||||
public void setup(Player player) {
|
public void setup(Player player) {
|
||||||
@ -37,9 +39,9 @@ public abstract class PlayerDataManager {
|
|||||||
* setup playerData based on loadData method to support both MySQL and
|
* setup playerData based on loadData method to support both MySQL and
|
||||||
* YAML data storage
|
* YAML data storage
|
||||||
*/
|
*/
|
||||||
if (!map.containsKey(player.getUniqueId())) {
|
MMOPlayerData mmoData = MMOPlayerData.get(player);
|
||||||
PlayerData generated = new PlayerData(player);
|
if (mmoData.getMMOCore() == null) {
|
||||||
map.put(player.getUniqueId(), generated);
|
PlayerData generated = new PlayerData(mmoData);
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* loads player data and ONLY THEN refresh the player statistics and
|
* loads player data and ONLY THEN refresh the player statistics and
|
||||||
@ -51,21 +53,19 @@ public abstract class PlayerDataManager {
|
|||||||
generated.getStats().updateStats();
|
generated.getStats().updateStats();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
get(player).setPlayer(player);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isLoaded(UUID uuid) {
|
public boolean isLoaded(UUID uuid) {
|
||||||
return map.containsKey(uuid);
|
return MMOPlayerData.isLoaded(uuid) && MMOPlayerData.get(uuid).getMMOCore() != null;
|
||||||
}
|
}
|
||||||
|
|
||||||
public Collection<PlayerData> getLoaded() {
|
public Collection<PlayerData> getLoaded() {
|
||||||
return map.values();
|
return MMOPlayerData.getLoaded().stream().filter(data -> data.getMMOCore() != null).map(data -> data.getMMOCore()).collect(Collectors.toSet());
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract void loadData(PlayerData data);
|
public abstract void loadData(PlayerData data);
|
||||||
|
|
||||||
public abstract void saveData(PlayerData data);
|
public abstract void saveData(PlayerData data);
|
||||||
|
|
||||||
public abstract void remove(PlayerData data);
|
public abstract void remove(PlayerData data);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user