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