ObjectiveTask class
Пакет: com.hypixel.hytale.builtin.adventure.objectives.task
Файл: com/hypixel/hytale/builtin/adventure/objectives/task/ObjectiveTask.java
implements: NetworkSerializer<Objective, com.hypixel.hytale.protocol.ObjectiveTask>
Поля (16)
| Модификаторы | Тип | Имя |
|---|---|---|
|
|
return |
|
String |
var13 |
|
TransactionRecord[] |
var14 |
|
int |
var15 |
|
int |
var17 |
|
int |
var19 |
|
UpdateObjectiveTask |
var2 |
|
World |
var3 |
|
Universe |
var3 |
|
Vector3i[] |
var4 |
|
TaskConditionAsset[] |
var4 |
|
TaskConditionAsset[] |
var4 |
|
String |
var5 |
|
PlayerRef |
var6 |
|
Transform |
var7 |
|
String |
var8 |
Методы (32)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
public |
void |
addMarkervoid addMarker(@Nonnull ObjectiveTaskMarker var1) |
public |
boolean |
areTaskConditionsFulfilledboolean areTaskConditionsFulfilled(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nullable Set<UUID> var3) |
public |
void |
assetChangedvoid assetChanged(@Nonnull Objective var1) |
abstract abstract |
boolean |
checkCompletionboolean checkCompletion() |
public |
void |
completevoid complete(@Nonnull Objective var1, @Nullable ComponentAccessor<EntityStore> var2) |
public |
void |
completeTransactionRecordsvoid completeTransactionRecords() |
public |
void |
consumeTaskConditionsvoid consumeTaskConditions(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nonnull Set<UUID> var3) |
|
|
for for(ObjectiveTaskMarker var3 : this.markers) |
|
|
for for(int var6 = 0; var6 < var4.length; var6++) |
|
|
for for(TransactionRecord var10 : var14) |
|
|
for for(TransactionRecord var12 : var14) |
|
|
for for(TaskConditionAsset var8 : var4) |
|
|
for for(TaskConditionAsset var8 : var4) |
|
|
if if(var3 == null) |
|
|
if if(this.eventRegistry != null) |
|
|
if if(var4 != null) |
|
|
if if(var14 == null) |
|
|
if if(!this.complete) |
|
|
if if(this.eventRegistry != null) |
|
|
if if(!this.complete) |
|
|
if if(var6 != null) |
|
|
if if(var4 == null) |
|
|
if if(var4 != null) |
public |
boolean |
isCompleteboolean isComplete() |
private |
void |
registerTaskRefvoid registerTaskRef() |
public |
void |
removeMarkervoid removeMarker(String var1) |
public |
void |
revertTransactionRecordsvoid revertTransactionRecords() |
public |
void |
sendUpdateObjectiveTaskPacketvoid sendUpdateObjectiveTaskPacket(@Nonnull Objective var1) |
public |
void |
setAssetvoid setAsset(@Nonnull ObjectiveTaskAsset var1) |
private |
void |
shutdownEventRegistryvoid shutdownEventRegistry() |
public |
void |
unloadTransactionRecordsvoid unloadTransactionRecords() |
private |
void |
unregisterTaskRefvoid unregisterTaskRef() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.objectives.task;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.Objective;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.ObjectivePlugin;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.task.ObjectiveTaskAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.config.taskcondition.TaskConditionAsset;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.markers.ObjectiveTaskMarker;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.TransactionRecord;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.TransactionUtil;
class="kw">import com.hypixel.hytale.builtin.adventure.objectives.transaction.WorldTransactionRecord;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.event.EventRegistry;
class="kw">import com.hypixel.hytale.math.vector.Transform;
class="kw">import com.hypixel.hytale.protocol.packets.assets.UpdateObjectiveTask;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.io.NetworkSerializer;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Arrays;
class="kw">import java.util.List;
class="kw">import java.util.Set;
class="kw">import java.util.UUID;
class="kw">import java.util.concurrent.CopyOnWriteArrayList;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">public class="kw">abstract class ObjectiveTask class="kw">implements NetworkSerializer<Objective, com.hypixel.hytale.protocol.ObjectiveTask> {
@Nonnull
class="kw">public class="kw">static class="kw">final CodecMapCodec<ObjectiveTask> CODEC = new CodecMapCodec<>("Type");
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<ObjectiveTask> BASE_CODEC = BuilderCodec.abstractBuilder(ObjectiveTask.class)
.append(new KeyedCodec<>("Task", ObjectiveTaskAsset.CODEC), (var0, var1) -> var0.asset = var1, var0 -> var0.asset)
.add()
.append(new KeyedCodec<>("Complete", Codec.BOOLEAN), (var0, var1) -> var0.complete = var1, var0 -> var0.complete)
.add()
.append(
new KeyedCodec<>("TransactionRecords", new ArrayCodec<>(TransactionRecord.CODEC, TransactionRecord[]::new)),
(var0, var1) -> var0.serializedTransactionRecords = var1,
var0 -> var0.serializedTransactionRecords
)
.add()
.append(new KeyedCodec<>("TaskIndex", Codec.INTEGER), (var0, var1) -> var0.taskIndex = var1, var0 -> var0.taskIndex)
.add()
.append(new KeyedCodec<>("TaskSetIndex", Codec.INTEGER), (var0, var1) -> var0.taskSetIndex = var1, var0 -> var0.taskSetIndex)
.add()
.append(
new KeyedCodec<>("Markers", ObjectiveTaskMarker.ARRAY_CODEC),
(var0, var1) -> var0.markers = new ObjectArrayList(Arrays.asList(var1)),
var0 -> var0.markers.toArray(ObjectiveTaskMarker[]::new)
)
.add()
.build();
class="kw">protected ObjectiveTaskAsset asset;
class="kw">protected boolean complete = false;
@Nullable
class="kw">protected EventRegistry eventRegistry;
@Nullable
class="kw">protected TransactionRecord[] serializedTransactionRecords;
@Nullable
class="kw">protected TransactionRecord[] nonSerializedTransactionRecords;
class="kw">protected int taskIndex;
@Nonnull
class="kw">protected List<ObjectiveTaskMarker> markers = new ObjectArrayList();
class="kw">protected int taskSetIndex;
class="kw">protected ObjectiveTaskRef<? class="kw">extends ObjectiveTask> taskRef;
class="kw">public ObjectiveTask(@Nonnull ObjectiveTaskAsset var1, int var2, int var3) {
this.asset = var1;
this.taskIndex = var3;
this.taskSetIndex = var2;
}
class="kw">protected ObjectiveTask() {
}
@Nonnull
class="kw">public ObjectiveTaskAsset getAsset() {
class="kw">return this.asset;
}
class="kw">public void setAsset(@Nonnull ObjectiveTaskAsset var1) {
this.asset = var1;
}
class="kw">public boolean isComplete() {
class="kw">return this.complete;
}
@Nullable
class="kw">public TransactionRecord[] getSerializedTransactionRecords() {
class="kw">return this.serializedTransactionRecords;
}
@Nullable
class="kw">public TransactionRecord[] getNonSerializedTransactionRecords() {
class="kw">return this.nonSerializedTransactionRecords;
}
@Nonnull
class="kw">public List<ObjectiveTaskMarker> getMarkers() {
class="kw">return this.markers;
}
class="kw">public void addMarker(@Nonnull ObjectiveTaskMarker var1) {
this.markers.add(var1);
}
class="kw">public void removeMarker(String var1) {
for (ObjectiveTaskMarker var3 : this.markers) {
if (var3.getId().equals(var1)) {
this.markers.remove(var3);
class="kw">return;
}
}
}
class="kw">public class="kw">abstract boolean checkCompletion();
@Nullable
class="kw">protected class="kw">abstract TransactionRecord[] setup0(@Nonnull Objective var1, @Nonnull World var2, @Nonnull Store<EntityStore> var3);
@Nullable
class="kw">public class="kw">final TransactionRecord[] setup(@Nonnull Objective var1, @Nonnull Store<EntityStore> var2) {
World var3 = Universe.get().getWorld(var1.getWorldUUID());
if (var3 == null) {
String var13 = "This World doesn't exist in this Universe: " + var1.getWorldUUID();
class="kw">return TransactionRecord.appendFailedTransaction(this.nonSerializedTransactionRecords, new WorldTransactionRecord(), var13);
}
if (this.eventRegistry != null) {
throw new IllegalStateException("ObjectiveTask.eventRegistry is not null, setup() shouldn't be run more than once!");
}
this.eventRegistry = new EventRegistry(new CopyOnWriteArrayList<>(), () -> true, null, var3.getEventRegistry());
Vector3i[] var4 = this.asset.getMapMarkers();
if (var4 != null) {
String var5 = var1.getObjectiveUUID().toString();
for (int var6 = 0; var6 < var4.length; var6++) {
Transform var7 = new Transform(var4[var6]);
String var8 = "ObjectiveMarker_" + var5 + "_" + var6;
this.addMarker(new ObjectiveTaskMarker(var8, var7, "Home.png", Message.translation("server.assetTypes.ObjectiveAsset.title")));
}
}
this.taskRef = new ObjectiveTaskRef<>(var1.getObjectiveUUID(), this);
this.registerTaskRef();
TransactionRecord[] var14 = this.setup0(var1, var3, var2);
if (var14 == null) {
class="kw">return null;
}
int var15 = 0;
for (TransactionRecord var10 : var14) {
if (var10.shouldBeSerialized()) {
var15++;
}
}
this.serializedTransactionRecords = new TransactionRecord[var15];
this.nonSerializedTransactionRecords = new TransactionRecord[var14.length - var15];
int var17 = 0;
int var19 = 0;
for (TransactionRecord var12 : var14) {
if (var12.shouldBeSerialized()) {
this.serializedTransactionRecords[var17++] = var12;
} else {
this.nonSerializedTransactionRecords[var19++] = var12;
}
}
class="kw">return var14;
}
class="kw">public void complete(@Nonnull Objective var1, @Nullable ComponentAccessor<EntityStore> var2) {
if (!this.complete) {
this.markers.clear();
this.complete = true;
this.completeTransactionRecords();
}
}
class="kw">private void registerTaskRef() {
ObjectivePlugin.get().getObjectiveDataStore().addTaskRef(this.taskRef);
}
class="kw">private void unregisterTaskRef() {
ObjectivePlugin.get().getObjectiveDataStore().removeTaskRef(this.taskRef);
}
class="kw">public void completeTransactionRecords() {
TransactionUtil.completeAll(this.serializedTransactionRecords);
this.serializedTransactionRecords = null;
TransactionUtil.completeAll(this.nonSerializedTransactionRecords);
this.nonSerializedTransactionRecords = null;
this.shutdownEventRegistry();
this.unregisterTaskRef();
}
class="kw">public void revertTransactionRecords() {
TransactionUtil.revertAll(this.serializedTransactionRecords);
this.serializedTransactionRecords = null;
TransactionUtil.revertAll(this.nonSerializedTransactionRecords);
this.nonSerializedTransactionRecords = null;
this.shutdownEventRegistry();
this.unregisterTaskRef();
}
class="kw">public void unloadTransactionRecords() {
TransactionUtil.unloadAll(this.serializedTransactionRecords);
this.serializedTransactionRecords = null;
TransactionUtil.unloadAll(this.nonSerializedTransactionRecords);
this.nonSerializedTransactionRecords = null;
this.shutdownEventRegistry();
this.unregisterTaskRef();
}
class="kw">private void shutdownEventRegistry() {
if (this.eventRegistry != null) {
this.eventRegistry.shutdownAndCleanup(true);
this.eventRegistry = null;
}
}
class="kw">public void assetChanged(@Nonnull Objective var1) {
if (!this.complete) {
if (this.checkCompletion()) {
this.consumeTaskConditions(null, null, var1.getActivePlayerUUIDs());
this.complete(var1, null);
}
}
}
class="kw">public void sendUpdateObjectiveTaskPacket(@Nonnull Objective var1) {
UpdateObjectiveTask var2 = new UpdateObjectiveTask(var1.getObjectiveUUID(), this.taskIndex, this.toPacket(var1));
Universe var3 = Universe.get();
for (UUID var5 : var1.getActivePlayerUUIDs()) {
PlayerRef var6 = var3.getPlayer(var5);
if (var6 != null) {
var6.getPacketHandler().writeNoCache(var2);
}
}
}
class="kw">public boolean areTaskConditionsFulfilled(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nullable Set<UUID> var3) {
TaskConditionAsset[] var4 = this.asset.getTaskConditions();
if (var4 == null) {
class="kw">return true;
}
for (TaskConditionAsset var8 : var4) {
if (!var8.isConditionFulfilled(var1, var2, var3)) {
class="kw">return false;
}
}
class="kw">return true;
}
class="kw">public void consumeTaskConditions(@Nullable ComponentAccessor<EntityStore> var1, @Nullable Ref<EntityStore> var2, @Nonnull Set<UUID> var3) {
TaskConditionAsset[] var4 = this.asset.getTaskConditions();
if (var4 != null) {
for (TaskConditionAsset var8 : var4) {
var8.consumeCondition(var1, var2, var3);
}
}
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ObjectiveTask{asset="
+ this.asset
+ ", complete="
+ this.complete
+ ", eventRegistry="
+ this.eventRegistry
+ ", serializedTransactionRecords="
+ Arrays.toString(this.serializedTransactionRecords)
+ ", nonSerializedTransactionRecords="
+ Arrays.toString(this.nonSerializedTransactionRecords)
+ ", taskIndex="
+ this.taskIndex
+ ", markers="
+ this.markers
+ ", taskSetIndex="
+ this.taskSetIndex
+ "}";
}
}