PrefabSpawnerSettingsPageEventData class

Пакет: com.hypixel.hytale.server.core.modules.prefabspawner

Файл: com/hypixel/hytale/server/core/modules/prefabspawner/PrefabSpawnerBlock.java

Поля (13)

МодификаторыТипИмя
public static final BuilderCodec<PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData> CODEC
public static final String KEY_DEFAULT_WEIGHT
public static final String KEY_FIT_HEIGHTMAP
public static final String KEY_INHERIT_HEIGHT_CONDITION
public static final String KEY_INHERIT_SEED
public static final String KEY_PREFAB_PATH
public static final String KEY_PREFAB_WEIGHTS
private double defaultWeight
private boolean fitHeightmap
private boolean inheritHeightCondition
private boolean inheritSeed
private String prefabPath
private String prefabWeights

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.prefabspawner;

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.validation.Validators;
class="kw">import com.hypixel.hytale.component.Component;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomPageLifetime;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.CustomUIEventBindingType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.InteractiveCustomUIPage;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.prefab.PrefabWeights;
class="kw">import com.hypixel.hytale.server.core.ui.builder.EventData;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UICommandBuilder;
class="kw">import com.hypixel.hytale.server.core.ui.builder.UIEventBuilder;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class PrefabSpawnerBlock class="kw">implements Component<ChunkStore> {
   class="kw">public class="kw">static class="kw">final KeyedCodec<Boolean> FIT_HEIGHTMAP_CODEC = new KeyedCodec<>("FitHeightmap", Codec.BOOLEAN);
   class="kw">public class="kw">static class="kw">final KeyedCodec<Boolean> INHERIT_SEED_CODEC = new KeyedCodec<>("InheritSeed", Codec.BOOLEAN);
   class="kw">public class="kw">static class="kw">final KeyedCodec<Boolean> INHERIT_HEIGHT_CONDITION_CODEC = new KeyedCodec<>("InheritHeightCondition", Codec.BOOLEAN);
   class="kw">public class="kw">static class="kw">final KeyedCodec<PrefabWeights> PREFAB_WEIGHTS_CODEC = new KeyedCodec<>("PrefabWeights", PrefabWeights.CODEC);
   @Nonnull
   class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabSpawnerBlock> CODEC = BuilderCodec.builder(PrefabSpawnerBlock.class, PrefabSpawnerBlock::new)
      .append(new KeyedCodec<>("PrefabPath", Codec.STRING), (var0, var1) -> var0.prefabPath = var1, var0 -> var0.prefabPath)
      .documentation("The prefab path where the prefab is located. This uses the dot-notation. 'folder.folder.folder.filename'")
      .add()
      .<Boolean>append(FIT_HEIGHTMAP_CODEC, (var0, var1) -> var0.fitHeightmap = var1, var0 -> var0.fitHeightmap)
      .documentation("Determines if the child prefab should follow the heightmap during generation in worldgen.")
      .add()
      .<Boolean>append(INHERIT_SEED_CODEC, (var0, var1) -> var0.inheritSeed = var1, var0 -> var0.inheritSeed)
      .documentation("Determines if the child prefab should inherit the worldgen-id from the parent. This allows child prefabs to have independent markers.")
      .add()
      .<Boolean>append(INHERIT_HEIGHT_CONDITION_CODEC, (var0, var1) -> var0.inheritHeightCondition = var1, var0 -> var0.inheritHeightCondition)
      .documentation(
         "Determines if the child prefab should inherit the HeightCondition from the parent. Setting to false allows child prefabs to bypass the height condition check."
      )
      .add()
      .append(PREFAB_WEIGHTS_CODEC, PrefabSpawnerBlock::setPrefabWeights, PrefabSpawnerBlock::getPrefabWeightsNullable)
      .documentation(
         "Determines the probability of each individual prefab file being selected to generate when the PrefabPath points to a folder containing multiple prefabs."
      )
      .add()
      .build();
   class="kw">private String prefabPath;
   class="kw">private boolean fitHeightmap;
   class="kw">private boolean inheritSeed;
   class="kw">private boolean inheritHeightCondition;
   class="kw">private PrefabWeights prefabWeights;

   class="kw">public class="kw">static ComponentType<ChunkStore, PrefabSpawnerBlock> getComponentType() {
      class="kw">return PrefabSpawnerModule.get().getPrefabSpawnerBlockType();
   }

   class="kw">public PrefabSpawnerBlock() {
      this.fitHeightmap = false;
      this.inheritSeed = true;
      this.inheritHeightCondition = true;
      this.prefabWeights = PrefabWeights.NONE;
   }

   class="kw">public PrefabSpawnerBlock(String var1, boolean var2, boolean var3, boolean var4, PrefabWeights var5) {
      this.prefabPath = var1;
      this.fitHeightmap = var2;
      this.inheritSeed = var3;
      this.inheritHeightCondition = var4;
      this.prefabWeights = var5;
   }

   class="kw">public String getPrefabPath() {
      class="kw">return this.prefabPath;
   }

   class="kw">public void setPrefabPath(String var1) {
      this.prefabPath = var1;
   }

   class="kw">public boolean isFitHeightmap() {
      class="kw">return this.fitHeightmap;
   }

   class="kw">public void setFitHeightmap(boolean var1) {
      this.fitHeightmap = var1;
   }

   class="kw">public boolean isInheritSeed() {
      class="kw">return this.inheritSeed;
   }

   class="kw">public void setInheritSeed(boolean var1) {
      this.inheritSeed = var1;
   }

   class="kw">public boolean isInheritHeightCondition() {
      class="kw">return this.inheritHeightCondition;
   }

   class="kw">public void setInheritHeightCondition(boolean var1) {
      this.inheritHeightCondition = var1;
   }

   class="kw">public PrefabWeights getPrefabWeights() {
      class="kw">return this.prefabWeights;
   }

   class="kw">public void setPrefabWeights(PrefabWeights var1) {
      this.prefabWeights = var1;
   }

   @Nullable
   class="kw">private PrefabWeights getPrefabWeightsNullable() {
      class="kw">return this.prefabWeights.size() == 0 ? null : this.prefabWeights;
   }

   @Nullable
   @Override
   class="kw">public Component<ChunkStore> clone() {
      class="kw">return new PrefabSpawnerBlock(this.prefabPath, this.fitHeightmap, this.inheritSeed, this.inheritHeightCondition, this.prefabWeights);
   }

   class="kw">public class="kw">static class PrefabSpawnerSettingsPage class="kw">extends InteractiveCustomUIPage<PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData> {
      class="kw">private class="kw">final BlockModule.BlockStateInfo info;
      class="kw">private class="kw">final PrefabSpawnerBlock state;

      class="kw">public PrefabSpawnerSettingsPage(@Nonnull PlayerRef var1, BlockModule.BlockStateInfo var2, PrefabSpawnerBlock var3, @Nonnull CustomPageLifetime var4) {
         super(var1, var4, PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData.CODEC);
         this.info = var2;
         this.state = var3;
      }

      @Override
      class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
         var2.append("Pages/PrefabSpawnerSettingsPage.ui");
         var2.set("#PrefabPath.Value", Objects.requireNonNullElse(this.state.prefabPath, ""));
         var2.set("#FitHeightmap #CheckBox.Value", this.state.fitHeightmap);
         var2.set("#InheritSeed #CheckBox.Value", this.state.inheritSeed);
         var2.set("#InheritHeightCondition #CheckBox.Value", this.state.inheritHeightCondition);
         var2.set("#DefaultWeight.Value", this.state.getPrefabWeights().getDefaultWeight());
         var2.set("#PrefabWeights.Value", this.state.getPrefabWeights().getMappingString());
         var3.addEventBinding(
            CustomUIEventBindingType.Activating,
            "#SaveButton",
            new EventData()
               .append("@PrefabPath", "#PrefabPath.Value")
               .append("@FitHeightmap", "#FitHeightmap #CheckBox.Value")
               .append("@InheritSeed", "#InheritSeed #CheckBox.Value")
               .append("@InheritHeightCondition", "#InheritHeightCondition #CheckBox.Value")
               .append("@DefaultWeight", "#DefaultWeight.Value")
               .append("@PrefabWeights", "#PrefabWeights.Value")
         );
      }

      class="kw">public void handleDataEvent(
         @Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData var3
      ) {
         this.state.prefabPath = var3.prefabPath;
         this.state.fitHeightmap = var3.fitHeightmap;
         this.state.inheritSeed = var3.inheritSeed;
         this.state.inheritHeightCondition = var3.inheritHeightCondition;
         this.state.prefabWeights = PrefabWeights.parse(var3.prefabWeights);
         this.state.prefabWeights.setDefaultWeight(var3.defaultWeight);
         this.info.markNeedsSaving();
         Player var4 = var2.getComponent(var1, Player.getComponentType());
         var4.getPageManager().setPage(var1, var2, Page.None);
      }
   }

   class="kw">public class="kw">static class PrefabSpawnerSettingsPageEventData {
      class="kw">public class="kw">static class="kw">final String KEY_PREFAB_PATH = "@PrefabPath";
      class="kw">public class="kw">static class="kw">final String KEY_FIT_HEIGHTMAP = "@FitHeightmap";
      class="kw">public class="kw">static class="kw">final String KEY_INHERIT_SEED = "@InheritSeed";
      class="kw">public class="kw">static class="kw">final String KEY_INHERIT_HEIGHT_CONDITION = "@InheritHeightCondition";
      class="kw">public class="kw">static class="kw">final String KEY_DEFAULT_WEIGHT = "@DefaultWeight";
      class="kw">public class="kw">static class="kw">final String KEY_PREFAB_WEIGHTS = "@PrefabWeights";
      class="kw">public class="kw">static class="kw">final BuilderCodec<PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData> CODEC = BuilderCodec.builder(
            PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData.class, PrefabSpawnerBlock.PrefabSpawnerSettingsPageEventData::new
         )
         .append(new KeyedCodec<>("@PrefabPath", Codec.STRING), (var0, var1) -> var0.prefabPath = var1, var0 -> var0.prefabPath)
         .add()
         .append(new KeyedCodec<>("@FitHeightmap", Codec.BOOLEAN), (var0, var1) -> var0.fitHeightmap = var1, var0 -> var0.fitHeightmap)
         .add()
         .append(new KeyedCodec<>("@InheritSeed", Codec.BOOLEAN), (var0, var1) -> var0.inheritSeed = var1, var0 -> var0.inheritSeed)
         .add()
         .append(
            new KeyedCodec<>("@InheritHeightCondition", Codec.BOOLEAN), (var0, var1) -> var0.inheritHeightCondition = var1, var0 -> var0.inheritHeightCondition
         )
         .add()
         .<Double>append(new KeyedCodec<>("@DefaultWeight", Codec.DOUBLE), (var0, var1) -> var0.defaultWeight = var1, var0 -> var0.defaultWeight)
         .addValidator(Validators.greaterThanOrEqual(0.0))
         .add()
         .append(new KeyedCodec<>("@PrefabWeights", Codec.STRING), (var0, var1) -> var0.prefabWeights = var1, var0 -> var0.prefabWeights)
         .add()
         .build();
      class="kw">private String prefabPath;
      class="kw">private boolean fitHeightmap;
      class="kw">private boolean inheritSeed;
      class="kw">private boolean inheritHeightCondition;
      class="kw">private double defaultWeight;
      class="kw">private String prefabWeights;

      class="kw">public PrefabSpawnerSettingsPageEventData() {
      }
   }
}