Files
Essentia/plugin/src/main/java/com/alttd/essentia/user/EssentiaUserManager.java
T
2024-07-28 12:52:55 +02:00

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();
}
}
}
}
}