BiomeEditorPage class

Пакет: com.hypixel.hytale.builtin.hytalegenerator.plugin.editor

Файл: com/hypixel/hytale/builtin/hytalegenerator/plugin/editor/BiomeEditorPage.java

extends: InteractiveCustomUIPage<BiomeEditor.Config>

Поля (8)

МодификаторыТипИмя
final String KEY_NAME
ObjectArrayList var1
World var1
Store var2
Player var3
Executor var4
PlayerRef var4
PlayerRef var4

Методы (10)

МодификаторыВозвратСигнатура
static ObjectList<DropdownEntryInfo> createDropdownListObjectList<DropdownEntryInfo> createDropdownList(@Nonnull String[] var0)
for for(String var5 : var0)
static String getSelectedValueString getSelectedValue(@Nullable String var0, @Nonnull String[] var1)
public void handleDataEventvoid handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull BiomeEditor.Config var3)
if if(var3x != null)
if if(var4 != null)
if if(var0 == null)
if if(var3 != null && var4 != null)
static CompletableFuture<Void> openCompletableFuture<Void> open(@Nonnull Ref<EntityStore> var0)
abstract super super(var1, CustomPageLifetime.CanDismiss, CONFIG_CODEC)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.plugin.editor;

class="kw">import com.hypixel.hytale.builtin.hytalegenerator.plugin.HytaleGenerator;
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.common.util.ArrayUtil;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.logger.HytaleLogger;
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.server.core.Message;
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.ui.DropdownEntryInfo;
class="kw">import com.hypixel.hytale.server.core.ui.LocalizableString;
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.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 it.unimi.dsi.fastutil.objects.ObjectList;
class="kw">import java.util.concurrent.CompletableFuture;
class="kw">import java.util.concurrent.Executor;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;

class="kw">public class BiomeEditorPage class="kw">extends InteractiveCustomUIPage<BiomeEditor.Config> {
   class="kw">protected class="kw">static class="kw">final String KEY_NAME = "@Name";
   class="kw">protected class="kw">static class="kw">final String KEY_PACK = "@Pack";
   class="kw">protected class="kw">static class="kw">final String KEY_GROUP = "@Group";
   class="kw">protected class="kw">static class="kw">final String KEY_BIOME_TEMPLATE = "@BiomeTemplate";
   class="kw">protected class="kw">static class="kw">final String KEY_WORLD_STRUCTURE_TEMPLATE = "@WorldStructureTemplate";
   class="kw">protected class="kw">static class="kw">final String SELECTED_NONE = "(None)";
   class="kw">protected class="kw">static class="kw">final String DEFAULT_BIOME_NAME = "MyBiome";
   @Nonnull
   class="kw">protected class="kw">final BiomeEditor.Defaults defaults;
   class="kw">public class="kw">static class="kw">final BuilderCodec<BiomeEditor.Config> CONFIG_CODEC = BuilderCodec.builder(BiomeEditor.Config.class, BiomeEditor.Config::new)
      .append(new KeyedCodec<>("@Name", Codec.STRING), (var0, var1) -> var0.name = var1, var0 -> var0.name)
      .documentation("The name of the biome to create and edit")
      .add()
      .<String>append(new KeyedCodec<>("@Pack", Codec.STRING), (var0, var1) -> var0.pack = var1, var0 -> var0.pack)
      .documentation("The name of the AssetPack to create the biome under")
      .add()
      .<String>append(new KeyedCodec<>("@Group", Codec.STRING), (var0, var1) -> var0.group = var1, var0 -> var0.group)
      .documentation("The group-name of the AssetPack to create the biome under")
      .add()
      .<String>append(new KeyedCodec<>("@BiomeTemplate", Codec.STRING), (var0, var1) -> var0.biomeTemplate = var1, var0 -> var0.biomeTemplate)
      .documentation("The existing Biome asset to use as a template to create new Biomes from")
      .add()
      .<String>append(
         new KeyedCodec<>("@WorldStructureTemplate", Codec.STRING), (var0, var1) -> var0.worldStructureTemplate = var1, var0 -> var0.worldStructureTemplate
      )
      .documentation("The existing WorldStructure asset to use as a template to create new WorldStructures from")
      .add()
      .build();

   class="kw">public BiomeEditorPage(@Nonnull PlayerRef var1, @Nonnull BiomeEditor.Defaults var2) {
      super(var1, CustomPageLifetime.CanDismiss, CONFIG_CODEC);
      this.defaults = var2;
   }

   @Override
   class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
      var2.append("Pages/BiomeEditorPage.ui");
      var2.set("#Name #Input.Value", "MyBiome");
      var2.set("#Pack #Input.Value", this.defaults.pack);
      var2.set("#Group #Input.Value", this.defaults.group);
      var2.set("#BiomeTemplate #Input.Entries", createDropdownList(this.defaults.biomeAssets));
      var2.set("#BiomeTemplate #Input.Value", getSelectedValue(this.defaults.biome, this.defaults.biomeAssets));
      var2.set("#WorldStructureTemplate #Input.Entries", createDropdownList(this.defaults.worldStructureAssets));
      var2.set("#WorldStructureTemplate #Input.Value", getSelectedValue(this.defaults.worldStructure, this.defaults.worldStructureAssets));
      var3.addEventBinding(
         CustomUIEventBindingType.Activating,
         "#Content #LaunchButton",
         new EventData()
            .append("@Name", "#Name #Input.Value")
            .append("@Pack", "#Pack #Input.Value")
            .append("@Group", "#Group #Input.Value")
            .append("@BiomeTemplate", "#BiomeTemplate #Input.Value")
            .append("@WorldStructureTemplate", "#WorldStructureTemplate #Input.Value")
      );
   }

   class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull BiomeEditor.Config var3) {
      if ("(None)".equals(var3.biomeTemplate)) {
         var3.biomeTemplate = null;
      }

      if ("(None)".equals(var3.worldStructureTemplate)) {
         var3.worldStructureTemplate = null;
      }

      Executor var4 = var2.getExternalData().getWorld();
      var3.viewport = this.defaults.viewportBounds;
      var3.enablePersistence = this.defaults.enablePersistence;
      BiomeEditor.setupViewport(var3, var1).whenCompleteAsync((var2x, var3x) -> {
         if (var3x != null) {
            ((HytaleLogger.Api)((HytaleLogger.Api)BiomeEditor.LOGGER.atSevere()).withCause(var3x)).log("Error occurred whilst setting up BiomeEditor");
            if (var1.isValid()) {
               PlayerRef var4 = var2.getComponent(var1, PlayerRef.getComponentType());
               if (var4 != null) {
                  var4.sendMessage(Message.translation("server.customUI.biomeEditor.error"));
               }
            }
         }
      }, var4);
      this.close();
   }

   class="kw">protected class="kw">static String getSelectedValue(@Nullable String var0, @Nonnull String[] var1) {
      if (var0 == null) {
         class="kw">return "(None)";
      } else {
         class="kw">return ArrayUtil.indexOf(var1, var0) == -1 ? "(None)" : var0;
      }
   }

   class="kw">protected class="kw">static ObjectList<DropdownEntryInfo> createDropdownList(@Nonnull String[] var0) {
      ObjectArrayList var1 = new ObjectArrayList(var0.length + 1);
      var1.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.biomeEditor.template.none"), "(None)"));

      for (String var5 : var0) {
         var1.add(new DropdownEntryInfo(LocalizableString.fromString(var5), var5));
      }

      class="kw">return var1;
   }

   class="kw">public class="kw">static CompletableFuture<Void> open(@Nonnull Ref<EntityStore> var0) {
      World var1 = var0.getStore().getExternalData().getWorld();
      class="kw">return HytaleGenerator.get().biomeEditorConfig.load().thenAcceptBothAsync(CompletableFuture.completedFuture(var0), (var0x, var1x) -> {
         if (var1x.isValid()) {
            Store var2 = var1x.getStore();
            Player var3 = var2.getComponent((Ref<EntityStore>)var1x, Player.getComponentType());
            PlayerRef var4 = var2.getComponent((Ref<EntityStore>)var1x, PlayerRef.getComponentType());
            if (var3 != null && var4 != null) {
               var3.getPageManager().openCustomPage((Ref<EntityStore>)var1x, var2, new BiomeEditorPage(var4, var0x));
            }
         }
      }, var1);
   }
}