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