| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105 |
- package me.lethunderhawk.fluxapi.profile;
- import me.lethunderhawk.fluxapi.util.config.ConfigLoader;
- import me.lethunderhawk.fluxapi.profile.representation.FluxProfile;
- import org.bukkit.entity.Player;
- import java.util.HashMap;
- import java.util.Map;
- import java.util.UUID;
- public class ProfileManager {
- private final Map<UUID, FluxProfile> profiles = new HashMap<>();
- private final ConfigLoader loader;
- public ProfileManager(ConfigLoader loader) {
- this.loader = loader;
- }
- public FluxProfile loadProfile(UUID uuid) {
- if (profiles.containsKey(uuid)) {
- return profiles.get(uuid);
- }
- FluxProfile profile = loader.loadObject(
- "/profiles/" + uuid.toString(),
- uuid.toString(),
- FluxProfile.class
- );
- if(profile == null) {
- profile = createDefaultProfile(uuid);
- }
- profiles.put(uuid, profile);
- return profile;
- }
- private FluxProfile createDefaultProfile(UUID uuid) {
- return new FluxProfile(uuid.toString());
- }
- /*
- * Manual profile creation (rarely needed now).
- */
- public FluxProfile createNewProfile(Player player) {
- UUID uuid = player.getUniqueId();
- FluxProfile profile = createDefaultProfile(uuid);
- profiles.put(uuid, profile);
- return profile;
- }
- /*
- * Get from memory only.
- */
- public FluxProfile getProfile(UUID uuid) {
- return profiles.get(uuid);
- }
- /*
- * Save single profile.
- */
- public void saveProfile(UUID uuid) {
- FluxProfile profile = profiles.get(uuid);
- if (profile == null) return;
- saveProfile(profile);
- }
- public void saveProfile(FluxProfile profile) {
- if (profile == null) return;
- loader.saveObject(
- "/profiles/" + profile.getPlayerUUID() + ".yml",
- profile.getPlayerUUID(),
- profile);
- }
- /*
- * Save all loaded profiles.
- */
- public void saveAllProfiles() {
- for (FluxProfile profile : profiles.values()) {
- saveProfile(profile);
- }
- }
- /*
- * Unload profile (save before removal).
- */
- public void unloadProfile(UUID uuid) {
- FluxProfile profile = profiles.remove(uuid);
- if (profile != null) {
- saveProfile(profile);
- }
- }
- }
|