PageData class
Пакет: com.hypixel.hytale.builtin.instances.page
Файл: com/hypixel/hytale/builtin/instances/page/ConfigureInstanceBlockPage.java
Поля (28)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final String |
CLOSE_ON_BLOCK_REMOVE |
|
public static final BuilderCodec<ConfigureInstanceBlockPage.PageData> |
CODEC |
|
public static final String |
INSTANCE |
|
public static final String |
INSTANCE_KEY |
|
public static final String |
PERSONAL_RETURN_POINT |
|
public static final String |
POSITION_OFFSET |
|
public static final String |
POSITION_OFFSET_X |
|
public static final String |
POSITION_OFFSET_Y |
|
public static final String |
POSITION_OFFSET_Z |
|
public static final String |
REMOVE_BLOCK_AFTER |
|
public static final String |
ROTATION |
|
public static final String |
ROTATION_PITCH |
|
public static final String |
ROTATION_ROLL |
|
public static final String |
ROTATION_YAW |
|
public ConfigureInstanceBlockPage.Action |
action |
|
public boolean |
closeOnBlockRemove |
|
public String |
instance |
|
public String |
instanceKey |
|
public boolean |
personalReturnPoint |
|
public boolean |
positionOffset |
|
public double |
positionX |
|
public double |
positionY |
|
public double |
positionZ |
|
public double |
removeBlockAfter |
|
public boolean |
rotation |
|
public float |
rotationPitch |
|
public float |
rotationRoll |
|
public float |
rotationYaw |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.instances.page;
class="kw">import com.hypixel.hytale.builtin.instances.InstancesPlugin;
class="kw">import com.hypixel.hytale.builtin.instances.blocks.ConfigurableInstanceBlock;
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.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
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.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.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">public class ConfigureInstanceBlockPage class="kw">extends InteractiveCustomUIPage<ConfigureInstanceBlockPage.PageData> {
@Nonnull
class="kw">private class="kw">final ConfigurableInstanceBlock instanceBlock;
@Nonnull
class="kw">private class="kw">final Ref<ChunkStore> ref;
@Nullable
class="kw">private Vector3d positionOffset;
@Nullable
class="kw">private Rotation3f rotation;
class="kw">public ConfigureInstanceBlockPage(@Nonnull PlayerRef var1, @Nonnull Ref<ChunkStore> var2) {
super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, ConfigureInstanceBlockPage.PageData.CODEC);
this.instanceBlock = var2.getStore().getComponent(var2, ConfigurableInstanceBlock.getComponentType());
this.ref = var2;
this.positionOffset = this.instanceBlock.getPositionOffset() != null ? new Vector3d(this.instanceBlock.getPositionOffset()) : null;
this.rotation = this.instanceBlock.getRotation() != null ? new Rotation3f(this.instanceBlock.getRotation()) : null;
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
var2.append("Pages/ConfigureInstanceBlockPage.ui");
ObjectArrayList var5 = new ObjectArrayList();
var5.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.configureInstanceBlockPage.noInstances"), ""));
List var6 = InstancesPlugin.get().getInstanceAssets();
var6.sort(String::compareToIgnoreCase);
for (String var8 : var6) {
var5.add(new DropdownEntryInfo(LocalizableString.fromString(var8), var8));
}
var2.set("#Instance #Input.Entries", var5);
var2.set("#Instance #Input.Value", this.instanceBlock.getInstanceName() == null ? "" : this.instanceBlock.getInstanceName());
this.buildPositionOffset(var2);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#PositionOffset #Use #CheckBox",
new EventData()
.append("Action", ConfigureInstanceBlockPage.Action.PositionOffset.name())
.append("@PositionOffset", "#PositionOffset #Use #CheckBox.Value"),
false
);
this.buildRotation(var2);
var3.addEventBinding(
CustomUIEventBindingType.ValueChanged,
"#Rotation #Use #CheckBox",
new EventData().append("Action", ConfigureInstanceBlockPage.Action.Rotation.name()).append("@Rotation", "#Rotation #Use #CheckBox.Value"),
false
);
var2.set("#InstanceKey #Input.Value", this.instanceBlock.getInstanceKey() == null ? "" : this.instanceBlock.getInstanceKey());
var2.set("#PersonalReturnPoint #CheckBox.Value", this.instanceBlock.isPersonalReturnPoint());
var2.set("#CloseOnBlockRemove #CheckBox.Value", this.instanceBlock.isCloseOnRemove());
var2.set("#RemoveBlockAfter #Input.Value", this.instanceBlock.getRemoveBlockAfter());
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#SaveButton",
new EventData()
.append("Action", ConfigureInstanceBlockPage.Action.Save.name())
.append("@Instance", "#Instance #Input.Value")
.append("@InstanceKey", "#InstanceKey #Input.Value")
.append("@PositionOffset", "#PositionOffset #Use #CheckBox.Value")
.append("@PositionOffsetX", "#PositionOffset #X #Input.Value")
.append("@PositionOffsetY", "#PositionOffset #Y #Input.Value")
.append("@PositionOffsetZ", "#PositionOffset #Z #Input.Value")
.append("@Rotation", "#Rotation #Use #CheckBox.Value")
.append("@RotationPitch", "#Rotation #Pitch #Input.Value")
.append("@RotationYaw", "#Rotation #Yaw #Input.Value")
.append("@RotationRoll", "#Rotation #Roll #Input.Value")
.append("@PersonalReturnPoint", "#PersonalReturnPoint #CheckBox.Value")
.append("@CloseOnBlockRemove", "#CloseOnBlockRemove #CheckBox.Value")
.append("@RemoveBlockAfter", "#RemoveBlockAfter #Input.Value")
);
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull ConfigureInstanceBlockPage.PageData var3) {
Player var4 = var2.getComponent(var1, Player.getComponentType());
BlockModule.BlockStateInfo var5 = this.ref.getStore().getComponent(this.ref, BlockModule.BlockStateInfo.getComponentType());
class="kw">switch (var3.action) {
case Save:
this.instanceBlock.setInstanceName(this.emptyToNull(var3.instance));
this.instanceBlock.setInstanceKey(this.emptyToNull(var3.instanceKey));
this.instanceBlock.setPersonalReturnPoint(var3.personalReturnPoint);
this.instanceBlock.setCloseOnRemove(var3.closeOnBlockRemove);
this.instanceBlock.setRemoveBlockAfter(var3.removeBlockAfter);
if (var3.positionOffset) {
this.instanceBlock.setPositionOffset(new Vector3d(var3.positionX, var3.positionY, var3.positionZ));
} else {
this.instanceBlock.setPositionOffset(null);
}
if (var3.rotation) {
this.instanceBlock
.setRotation(
new Rotation3f(
var3.rotationPitch * (float) (Math.PI / 180.0),
var3.rotationYaw * (float) (Math.PI / 180.0),
var3.rotationRoll * (float) (Math.PI / 180.0)
)
);
} else {
this.instanceBlock.setRotation(null);
}
var5.markNeedsSaving();
var4.getPageManager().setPage(var1, var2, Page.None);
break;
case PositionOffset:
if (var3.positionOffset) {
this.positionOffset = new Vector3d();
} else {
this.positionOffset = null;
}
var5.markNeedsSaving();
UICommandBuilder var7 = new UICommandBuilder();
this.buildPositionOffset(var7);
this.sendUpdate(var7);
break;
case Rotation:
if (var3.rotation) {
this.rotation = new Rotation3f();
} else {
this.rotation = null;
}
var5.markNeedsSaving();
UICommandBuilder var6 = new UICommandBuilder();
this.buildRotation(var6);
this.sendUpdate(var6);
}
}
class="kw">private String emptyToNull(@Nullable String var1) {
class="kw">return var1 != null && !var1.isEmpty() ? var1 : null;
}
class="kw">private void buildPositionOffset(@Nonnull UICommandBuilder var1) {
boolean var2 = this.positionOffset != null;
var1.set("#PositionOffset #Use #CheckBox.Value", var2);
var1.set("#PositionOffset #X.Visible", var2);
var1.set("#PositionOffset #Y.Visible", var2);
var1.set("#PositionOffset #Z.Visible", var2);
if (var2) {
var1.set("#PositionOffset #X #Input.Value", this.positionOffset.x);
var1.set("#PositionOffset #Y #Input.Value", this.positionOffset.y);
var1.set("#PositionOffset #Z #Input.Value", this.positionOffset.z);
}
}
class="kw">private void buildRotation(@Nonnull UICommandBuilder var1) {
boolean var2 = this.rotation != null;
var1.set("#Rotation #Use #CheckBox.Value", var2);
var1.set("#Rotation #Pitch.Visible", var2);
var1.set("#Rotation #Yaw.Visible", var2);
var1.set("#Rotation #Roll.Visible", var2);
if (var2) {
var1.set("#Rotation #Pitch #Input.Value", this.rotation.x * (180.0F / (float)Math.PI));
var1.set("#Rotation #Yaw #Input.Value", this.rotation.y * (180.0F / (float)Math.PI));
var1.set("#Rotation #Roll #Input.Value", this.rotation.z * (180.0F / (float)Math.PI));
}
}
class="kw">public enum Action {
Save,
PositionOffset,
Rotation;
Action() {
}
}
class="kw">public class="kw">static class PageData {
@Nonnull
class="kw">public class="kw">static class="kw">final String INSTANCE = "@Instance";
@Nonnull
class="kw">public class="kw">static class="kw">final String INSTANCE_KEY = "@InstanceKey";
@Nonnull
class="kw">public class="kw">static class="kw">final String POSITION_OFFSET = "@PositionOffset";
@Nonnull
class="kw">public class="kw">static class="kw">final String POSITION_OFFSET_X = "@PositionOffsetX";
@Nonnull
class="kw">public class="kw">static class="kw">final String POSITION_OFFSET_Y = "@PositionOffsetY";
@Nonnull
class="kw">public class="kw">static class="kw">final String POSITION_OFFSET_Z = "@PositionOffsetZ";
@Nonnull
class="kw">public class="kw">static class="kw">final String ROTATION = "@Rotation";
@Nonnull
class="kw">public class="kw">static class="kw">final String ROTATION_PITCH = "@RotationPitch";
@Nonnull
class="kw">public class="kw">static class="kw">final String ROTATION_YAW = "@RotationYaw";
@Nonnull
class="kw">public class="kw">static class="kw">final String ROTATION_ROLL = "@RotationRoll";
@Nonnull
class="kw">public class="kw">static class="kw">final String PERSONAL_RETURN_POINT = "@PersonalReturnPoint";
@Nonnull
class="kw">public class="kw">static class="kw">final String CLOSE_ON_BLOCK_REMOVE = "@CloseOnBlockRemove";
@Nonnull
class="kw">public class="kw">static class="kw">final String REMOVE_BLOCK_AFTER = "@RemoveBlockAfter";
class="kw">public class="kw">static class="kw">final BuilderCodec<ConfigureInstanceBlockPage.PageData> CODEC = BuilderCodec.builder(
ConfigureInstanceBlockPage.PageData.class, ConfigureInstanceBlockPage.PageData::new
)
.addField(
new KeyedCodec<>("Action", new EnumCodec<>(ConfigureInstanceBlockPage.Action.class)), (var0, var1) -> var0.action = var1, var0 -> var0.action
)
.addField(new KeyedCodec<>("@Instance", Codec.STRING), (var0, var1) -> var0.instance = var1, var0 -> var0.instance)
.addField(new KeyedCodec<>("@InstanceKey", Codec.STRING), (var0, var1) -> var0.instanceKey = var1, var0 -> var0.instanceKey)
.addField(new KeyedCodec<>("@PositionOffset", Codec.BOOLEAN), (var0, var1) -> var0.positionOffset = var1, var0 -> var0.positionOffset)
.addField(new KeyedCodec<>("@PositionOffsetX", Codec.DOUBLE), (var0, var1) -> var0.positionX = var1, var0 -> var0.positionX)
.addField(new KeyedCodec<>("@PositionOffsetY", Codec.DOUBLE), (var0, var1) -> var0.positionY = var1, var0 -> var0.positionY)
.addField(new KeyedCodec<>("@PositionOffsetZ", Codec.DOUBLE), (var0, var1) -> var0.positionZ = var1, var0 -> var0.positionZ)
.addField(new KeyedCodec<>("@Rotation", Codec.BOOLEAN), (var0, var1) -> var0.rotation = var1, var0 -> var0.rotation)
.addField(new KeyedCodec<>("@RotationPitch", Codec.FLOAT), (var0, var1) -> var0.rotationPitch = var1, var0 -> var0.rotationPitch)
.addField(new KeyedCodec<>("@RotationYaw", Codec.FLOAT), (var0, var1) -> var0.rotationYaw = var1, var0 -> var0.rotationYaw)
.addField(new KeyedCodec<>("@RotationRoll", Codec.FLOAT), (var0, var1) -> var0.rotationRoll = var1, var0 -> var0.rotationRoll)
.addField(new KeyedCodec<>("@PersonalReturnPoint", Codec.BOOLEAN), (var0, var1) -> var0.personalReturnPoint = var1, var0 -> var0.personalReturnPoint)
.addField(new KeyedCodec<>("@CloseOnBlockRemove", Codec.BOOLEAN), (var0, var1) -> var0.closeOnBlockRemove = var1, var0 -> var0.closeOnBlockRemove)
.addField(new KeyedCodec<>("@RemoveBlockAfter", Codec.DOUBLE), (var0, var1) -> var0.removeBlockAfter = var1, var0 -> var0.removeBlockAfter)
.build();
class="kw">public ConfigureInstanceBlockPage.Action action;
class="kw">public String instance;
class="kw">public String instanceKey;
class="kw">public boolean positionOffset;
class="kw">public double positionX;
class="kw">public double positionY;
class="kw">public double positionZ;
class="kw">public boolean rotation;
class="kw">public float rotationPitch;
class="kw">public float rotationYaw;
class="kw">public float rotationRoll;
class="kw">public boolean personalReturnPoint;
class="kw">public boolean closeOnBlockRemove;
class="kw">public double removeBlockAfter;
class="kw">public PageData() {
}
}
}