BuilderEncounterManagerVariant class
Пакет: com.hypixel.hytale.builtin.encountermanager
Файл: com/hypixel/hytale/builtin/encountermanager/BuilderEncounterManagerVariant.java
extends: DependencyTrackingBuilder<EncounterManager>
implements: EncounterBuilder, OfflineValidatable
Поля (17)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
StringHolder |
reference |
|
Map |
var10 |
|
Object |
var10 |
|
boolean |
var11 |
|
Map |
var2 |
|
EncounterManager |
var3 |
|
StringSchema |
var3 |
|
Builder |
var4 |
|
BuilderParameters |
var5 |
|
Builder |
var6 |
|
Scope |
var6 |
|
BuilderParameters |
var7 |
|
ExecutionContext |
var7 |
|
Scope |
var8 |
|
Scope |
var8 |
|
Scope |
var9 |
|
Map |
var9 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Variant super encounter missing or does not implement EncounterBuilder") |
abstract |
throw new |
IllegalStateExceptionthrow new IllegalStateException("Computable component references are not supported for Encounter Variants") |
protected |
<V> V |
executeOnSuperEncounter<V> V executeOnSuperEncounter(@Nonnull BuilderSupport var1, @Nonnull BiFunction<Builder<EncounterManager>, BuilderSupport, V> var2, @Nonnull Supplier<V> var3) |
|
|
if if(var3 == null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.encountermanager;
class="kw">import com.google.gson.JsonElement;
class="kw">import com.hypixel.hytale.codec.schema.config.Schema;
class="kw">import com.hypixel.hytale.codec.schema.config.StringSchema;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.npc.NPCPlugin;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.Builder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderDescriptorState;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderModifier;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderParameters;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.BuilderSupport;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.DependencyTrackingBuilder;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.OfflineValidatable;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.StateMappingHelper;
class="kw">import com.hypixel.hytale.server.npc.asset.builder.holder.StringHolder;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ExecutionContext;
class="kw">import com.hypixel.hytale.server.npc.util.expression.ForwardedModifier;
class="kw">import com.hypixel.hytale.server.npc.util.expression.Scope;
class="kw">import com.hypixel.hytale.server.npc.validators.NPCLoadTimeValidationHelper;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.function.BiFunction;
class="kw">import java.util.function.Supplier;
class="kw">import java.util.logging.Level;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BuilderEncounterManagerVariant class="kw">extends DependencyTrackingBuilder<EncounterManager> class="kw">implements EncounterBuilder, OfflineValidatable {
class="kw">protected class="kw">final StringHolder reference = new StringHolder();
class="kw">protected int referenceIndex;
class="kw">protected BuilderModifier modifier;
class="kw">public BuilderEncounterManagerVariant() {
}
@Override
class="kw">public boolean isSpawnable() {
class="kw">return true;
}
@Nullable
class="kw">public EncounterManager build(@Nonnull BuilderSupport var1) {
throw new UnsupportedOperationException(
"Use BuilderEncounterManagerVariant.createAndAttach(holder, builderSupport) - EncounterManager requires entity context"
);
}
@Nonnull
@Override
class="kw">public EncounterManager createAndAttach(@Nonnull Holder<EntityStore> var1, @Nonnull BuilderSupport var2) {
EncounterManager var3 = this.executeOnSuperEncounter(var2, (var1x, var2x) -> ((EncounterBuilder)var1x).createAndAttach(var1, var2x), () -> null);
if (var3 == null) {
throw new IllegalStateException("Variant super encounter missing or does not implement EncounterBuilder");
} else {
class="kw">return var3;
}
}
@Override
class="kw">public StateMappingHelper getStateMappingHelper() {
class="kw">return this.builderManager.getCachedBuilder(this.referenceIndex, EncounterManager.class).getStateMappingHelper();
}
@Override
class="kw">public boolean validate(String var1, @Nonnull NPCLoadTimeValidationHelper var2, @Nonnull ExecutionContext var3, Scope var4, List<String> var5) {
Builder var6 = this.builderManager.getCachedBuilder(this.referenceIndex, EncounterManager.class);
if (!(var6 class="kw">instanceof EncounterBuilder)) {
NPCPlugin.get().getLogger().at(Level.SEVERE).log("Encounter Variant %s references a non-encounter template!", var1);
class="kw">return false;
} else {
BuilderParameters var7 = var6.getBuilderParameters();
Scope var8 = this.modifier.createScope(var3, var7, null);
Scope var9 = var3.setScope(var8);
Map var10 = var3.setForwardedModifiers(this.modifier.getForwardedModifiers());
boolean var11 = var6.validate(var1, var2, var3, var3.getScope(), var5);
var3.setForwardedModifiers(var10);
var11 &= BuilderModifier.validateForwardedModifiers(this.modifier, var7, this.builderManager, var3, var1, var5);
var3.setScope(var9);
class="kw">return var11;
}
}
@Nonnull
@Override
class="kw">public Builder<EncounterManager> readConfig(@Nonnull JsonElement var1) {
if (this.isCreatingSchema()) {
Map var2 = this.builderSchema.getProperties();
StringSchema var3 = new StringSchema();
var3.setHytaleAssetRef("EncounterManager");
var2.put("Reference", var3);
var2.put("Modify", BuilderModifier.toSchema(this.builderSchemaContext));
class="kw">return this;
}
if (!this.isCreatingDescriptor()) {
BuilderModifier.readModifierObject(
this.expectJsonObject(var1, this.getLabel()),
this.getBuilderParameters(),
this.reference,
var0 -> {},
var1x -> this.modifier = var1x,
this.stateHelper,
this.extraInfo
);
if (!this.reference.isStatic()) {
throw new IllegalStateException("Computable component references are not supported for Encounter Variants");
}
this.referenceIndex = this.getBuilderManager().getOrCreateIndex(this.reference.get(null));
this.builderParameters.addDependency(this.referenceIndex);
}
this.ignoreAttribute("Reference");
this.ignoreAttribute("Modify");
this.ignoreAttribute("$Label");
class="kw">return this;
}
@Nonnull
@Override
class="kw">public Class<EncounterManager> category() {
class="kw">return EncounterManager.class;
}
@Override
class="kw">public class="kw">final boolean isEnabled(ExecutionContext var1) {
class="kw">return true;
}
@Nonnull
@Override
class="kw">public String getShortDescription() {
class="kw">return "Create a variant from an existing EncounterManager";
}
@Nonnull
@Override
class="kw">public String getLongDescription() {
class="kw">return "Create a variant from an existing EncounterManager, overriding its parameters via a Modify block.";
}
@Nonnull
@Override
class="kw">public BuilderDescriptorState getBuilderDescriptorState() {
class="kw">return BuilderDescriptorState.WorkInProgress;
}
class="kw">protected <V> V executeOnSuperEncounter(
@Nonnull BuilderSupport var1, @Nonnull BiFunction<Builder<EncounterManager>, BuilderSupport, V> var2, @Nonnull Supplier<V> var3
) {
Builder var4 = var1.getBuilderManager().getCachedBuilder(this.referenceIndex, EncounterManager.class);
if (!(var4 class="kw">instanceof EncounterBuilder)) {
class="kw">return var3.get();
}
BuilderParameters var5 = var4.getBuilderParameters();
Scope var6 = this.modifier.createScope(var1, var5, null);
ExecutionContext var7 = var1.getExecutionContext();
Scope var8 = var7.setScope(var6);
var1.setGlobalScope(var6);
Map var9 = var1.setForwardedModifiers(this.modifier.getForwardedModifiers());
Object var10 = var2.apply(var4, var1);
var1.setForwardedModifiers(var9);
var7.setScope(var8);
class="kw">return var10;
}
}