81 lines
2.1 KiB
Java
81 lines
2.1 KiB
Java
package com.alttd.essentia.user;
|
|
|
|
import com.alttd.essentia.EssentiaPlugin;
|
|
import com.alttd.essentia.api.user.User;
|
|
import com.alttd.essentia.api.user.UserManager;
|
|
import com.alttd.essentia.model.EssentiaUserSettings;
|
|
import org.bukkit.entity.Player;
|
|
|
|
import java.util.Map;
|
|
import java.util.UUID;
|
|
import java.util.concurrent.ConcurrentHashMap;
|
|
|
|
public class EssentiaUserManager implements UserManager {
|
|
|
|
protected final EssentiaPlugin plugin;
|
|
|
|
private final Map<UUID, User> essentiaPlayers = new ConcurrentHashMap<>();
|
|
|
|
public EssentiaUserManager(EssentiaPlugin plugin) {
|
|
this.plugin = plugin;
|
|
}
|
|
|
|
@Override
|
|
public User getUser(Player player) {
|
|
return getUser(player.getUniqueId());
|
|
}
|
|
|
|
@Override
|
|
public User getUser(UUID uuid) {
|
|
User user = essentiaPlayers.get(uuid);
|
|
if (user != null) {
|
|
return user;
|
|
} else {
|
|
return createNewUser(uuid);
|
|
}
|
|
}
|
|
|
|
@Override
|
|
public void addUser(User user) {
|
|
essentiaPlayers.put(user.getUUID(), user);
|
|
}
|
|
|
|
@Override
|
|
public void removeUser(UUID uuid) {
|
|
essentiaPlayers.remove(uuid);
|
|
}
|
|
|
|
@Override
|
|
public boolean hasUser(UUID uuid) {
|
|
return essentiaPlayers.containsKey(uuid);
|
|
}
|
|
|
|
@Override
|
|
public Map<UUID, User> getUsers() {
|
|
return essentiaPlayers;
|
|
}
|
|
|
|
@Override
|
|
public User createNewUser(UUID uuid) {
|
|
return new EssentiaUser.Builder().uuid(uuid).build();
|
|
}
|
|
|
|
@Override
|
|
public void saveAllUsers() {
|
|
for (User user : getUsers().values()) {
|
|
if (user instanceof EssentiaUser essentiaUser && essentiaUser.getUserSettings() instanceof EssentiaUserSettings essentiaUserSettings) {
|
|
try {
|
|
if (essentiaUser.saving() || !essentiaUser.needsSaving() || !essentiaUserSettings.needsSaving()) {
|
|
continue;
|
|
}
|
|
plugin.storageProvider().startSaving(essentiaUser);
|
|
} catch(Exception e){
|
|
essentiaUser.saving(false);
|
|
e.printStackTrace();
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
}
|