ObjectiveDataStore class
Пакет: com.hypixel.hytale.builtin.adventure.objectives
Файл: com/hypixel/hytale/builtin/adventure/objectives/ObjectiveDataStore.java
Поля (10)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Objective |
var2 |
|
Iterator |
var3 |
|
Objective |
var3 |
|
|
var3 |
|
Entry |
var4 |
|
Map |
var4 |
|
String |
var4 |
|
Map |
var5 |
|
Set |
var5 |
|
Set |
var6 |
Методы (21)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
addEntityTaskForPlayervoid addEntityTaskForPlayer(UUID var1, String var2, UUID var3) |
public |
boolean |
addObjectiveboolean addObjective(UUID var1, Objective var2) |
public |
<T extends ObjectiveTask> void |
addTaskRef<T extends ObjectiveTask> void addTaskRef(@Nonnull ObjectiveTaskRef<T> var1) |
public |
Map<String, Set<UUID>> |
getEntityTasksForPlayerMap<String, Set<UUID>> getEntityTasksForPlayer(UUID var1) |
public |
Objective |
getObjectiveObjective getObjective(UUID var1) |
public |
<T extends ObjectiveTask> Set<ObjectiveTaskRef<T>> |
getTaskRefsForType<T extends ObjectiveTask> Set<ObjectiveTaskRef<T>> getTaskRefsForType(Class<T> var1) |
|
|
if if(var1 != null) |
|
|
if if(var4 != null) |
|
|
if if(var5 != null) |
|
|
if if(var3 != null) |
|
|
if if(var3 == null) |
|
|
if if(var2 != null) |
public |
<T extends ObjectiveTask> void |
registerTaskRef<T extends ObjectiveTask> void registerTaskRef(Class<T> var1) |
public |
void |
removeEntityTaskvoid removeEntityTask(UUID var1, String var2) |
public |
void |
removeEntityTaskForPlayervoid removeEntityTaskForPlayer(UUID var1, String var2, UUID var3) |
public |
boolean |
removeFromDiskboolean removeFromDisk(String var1) |
public |
void |
removeObjectivevoid removeObjective(UUID var1) |
public |
<T extends ObjectiveTask> void |
removeTaskRef<T extends ObjectiveTask> void removeTaskRef(@Nullable ObjectiveTaskRef<T> var1) |
public |
void |
saveToDiskvoid saveToDisk(String var1, @Nonnull Objective var2) |
public |
void |
saveToDiskAllObjectivesvoid saveToDiskAllObjectives() |
public |
void |
unloadObjectivevoid unloadObjective(UUID var1) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.objectives;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.ObjectiveAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.ObjectiveTask;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.task.ObjectiveTaskRef;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
class="kw">import com.hypixel.hytale.server.core.universe.datastore.DataStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.io.IOException;
class="kw">import java.util.Collection;
class="kw">import java.util.Iterator;
class="kw">import java.util.Map;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class ObjectiveDataStore {
@Nonnull
class="kw">private class="kw">final Map<UUID, Objective> objectives = new ConcurrentHashMap<>();
@Nonnull
class="kw">private class="kw">final Map<UUID, Map<String, Set<UUID>>> entityObjectiveUUIDsPerPlayer = new ConcurrentHashMap<>();
@Nonnull
class="kw">private class="kw">final DataStore<Objective> dataStore;
@Nonnull
class="kw">private class="kw">final Map<Class<? class="kw">extends ObjectiveTask>, Set<ObjectiveTaskRef<? class="kw">extends ObjectiveTask>>> taskRefByType = new ConcurrentHashMap<>();
@Nonnull
class="kw">private class="kw">final HytaleLogger logger;
class="kw">public ObjectiveDataStore(@Nonnull DataStore<Objective> var1) {
this.dataStore = var1;
this.logger = ObjectivePlugin.get().getLogger();
}
class="kw">public Objective getObjective(UUID var1) {
class="kw">return this.objectives.get(var1);
}
class="kw">public Map<String, Set<UUID>> getEntityTasksForPlayer(UUID var1) {
class="kw">return this.entityObjectiveUUIDsPerPlayer.get(var1);
}
@Nonnull
class="kw">public Collection<Objective> getObjectiveCollection() {
class="kw">return this.objectives.values();
}
class="kw">public <T class="kw">extends ObjectiveTask> Set<ObjectiveTaskRef<T>> getTaskRefsForType(Class<T> var1) {
class="kw">return (Set<ObjectiveTaskRef<T>>)this.taskRefByType.get(var1);
}
class="kw">public <T class="kw">extends ObjectiveTask> void addTaskRef(@Nonnull ObjectiveTaskRef<T> var1) {
this.taskRefByType.get(var1.getObjectiveTask().getClass()).add(var1);
}
class="kw">public <T class="kw">extends ObjectiveTask> void removeTaskRef(@Nullable ObjectiveTaskRef<T> var1) {
if (var1 != null) {
this.taskRefByType.get(var1.getObjectiveTask().getClass()).remove(var1);
}
}
class="kw">public <T class="kw">extends ObjectiveTask> void registerTaskRef(Class<T> var1) {
this.taskRefByType.put(var1, ConcurrentHashMap.newKeySet());
}
class="kw">public void saveToDisk(String var1, @Nonnull Objective var2) {
if (var2.consumeDirty()) {
this.dataStore.save(var1, var2);
}
}
class="kw">public void saveToDiskAllObjectives() {
for (Entry var2 : this.objectives.entrySet()) {
this.saveToDisk(var2.getKey().toString(), var2.getValue());
}
}
class="kw">public boolean removeFromDisk(String var1) {
try {
this.dataStore.remove(var1);
class="kw">return true;
} catch (IOException var3) {
((HytaleLogger.Api)this.logger.at(Level.WARNING).withCause(var3)).log("Failed removal of objective with UUID: %s", var1);
class="kw">return false;
}
}
class="kw">public boolean addObjective(UUID var1, Objective var2) {
class="kw">return this.objectives.putIfAbsent(var1, var2) == null;
}
class="kw">public void removeObjective(UUID var1) {
this.objectives.remove(var1);
}
class="kw">public void addEntityTaskForPlayer(UUID var1, String var2, UUID var3) {
this.entityObjectiveUUIDsPerPlayer
.computeIfAbsent(var1, var0 -> new ConcurrentHashMap<>())
.computeIfAbsent(var2, var0 -> ConcurrentHashMap.newKeySet())
.add(var3);
}
class="kw">public void removeEntityTask(UUID var1, String var2) {
Iterator var3 = this.entityObjectiveUUIDsPerPlayer.entrySet().iterator();
while (var3.hasNext()) {
Entry var4 = var3.next();
Map var5 = var4.getValue();
Set var6 = var5.get(var2);
if (var6 != null && var6.remove(var1)) {
if (var6.isEmpty()) {
var5.remove(var2);
}
if (var5.isEmpty()) {
var3.remove();
}
}
}
}
class="kw">public void removeEntityTaskForPlayer(UUID var1, String var2, UUID var3) {
Map var4 = this.entityObjectiveUUIDsPerPlayer.get(var3);
if (var4 != null) {
Set var5 = var4.get(var2);
if (var5 != null) {
if (var5.remove(var1)) {
if (var5.isEmpty()) {
var4.remove(var2);
}
if (var4.isEmpty()) {
this.entityObjectiveUUIDsPerPlayer.remove(var3);
}
}
}
}
}
@Nullable
class="kw">public Objective loadObjective(@Nonnull UUID var1, @Nonnull Store<EntityStore> var2) {
Objective var3 = this.objectives.get(var1);
if (var3 != null) {
class="kw">return var3;
}
try {
var3 = this.dataStore.load(var1.toString());
} catch (IOException var5) {
((HytaleLogger.Api)this.logger.at(Level.WARNING).withCause(var5)).log("Unable to load objective with UUID '%s'", var1);
class="kw">return null;
}
if (var3 == null) {
this.logger.at(Level.WARNING).log("No objective saved with UUID '%s'", var1);
class="kw">return null;
} else {
String var4 = var3.getObjectiveId();
if (ObjectiveAsset.getAssetMap().getAsset(var4) == null) {
this.logger.at(Level.WARNING).log("Couldn't find objective '%s'. Skipping objective.", var4);
class="kw">return null;
} else if (!var3.setupCurrentTasks(var2)) {
this.logger.at(Level.WARNING).log("A problem occurred while setting up the objective '%s'. Skipping objective.", var4);
class="kw">return null;
} else {
this.addObjective(var1, var3);
class="kw">return var3;
}
}
}
class="kw">public void unloadObjective(UUID var1) {
Objective var2 = this.objectives.get(var1);
if (var2 != null) {
var2.unload();
this.removeObjective(var2.getObjectiveUUID());
}
}
}