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() {
      }
   }
}