PageEventData class
Пакет: com.hypixel.hytale.builtin.adventure.teleporter.page
Файл: com/hypixel/hytale/builtin/adventure/teleporter/page/TeleporterSettingsPage.java
Поля (33)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<TeleporterSettingsPage.PageEventData> |
CODEC |
|
public static final String |
KEY_BLOCK_RELATIVE |
|
public static final String |
KEY_NEW_WARP |
|
public static final String |
KEY_PITCH |
|
public static final String |
KEY_PITCH_IS_RELATIVE |
|
public static final String |
KEY_ROLL |
|
public static final String |
KEY_ROLL_IS_RELATIVE |
|
public static final String |
KEY_WARP |
|
public static final String |
KEY_WORLD |
|
public static final String |
KEY_X |
|
public static final String |
KEY_X_IS_RELATIVE |
|
public static final String |
KEY_Y |
|
public static final String |
KEY_YAW |
|
public static final String |
KEY_YAW_IS_RELATIVE |
|
public static final String |
KEY_Y_IS_RELATIVE |
|
public static final String |
KEY_Z |
|
public static final String |
KEY_Z_IS_RELATIVE |
|
public String |
destinationWarp |
|
public boolean |
isBlockRelative |
|
public float |
pitch |
|
public boolean |
pitchIsRelative |
|
public float |
roll |
|
public boolean |
rollIsRelative |
|
public String |
warpName |
|
public String |
world |
|
public double |
x |
|
public boolean |
xIsRelative |
|
public double |
y |
|
public boolean |
yIsRelative |
|
public float |
yaw |
|
public boolean |
yawIsRelative |
|
public double |
z |
|
public boolean |
zIsRelative |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.adventure.teleporter.page;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.component.Teleporter;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.CreateWarpWhenTeleporterPlacedSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.system.TurnOffTeleportersSystem;
class="kw">import com.hypixel.hytale.builtin.adventure.teleporter.util.CannedWarpNames;
class="kw">import com.hypixel.hytale.builtin.teleport.TeleportPlugin;
class="kw">import com.hypixel.hytale.builtin.teleport.Warp;
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.Transform;
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.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.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.Universe;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
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 it.unimi.dsi.fastutil.objects.ObjectListIterator;
class="kw">import java.util.List;
class="kw">import java.util.Locale;
class="kw">import java.util.Objects;
class="kw">import java.util.UUID;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.checkerframework.checker.nullness.compatqual.NullableDecl;
class="kw">public class TeleporterSettingsPage class="kw">extends InteractiveCustomUIPage<TeleporterSettingsPage.PageEventData> {
@Nonnull
class="kw">private class="kw">final Ref<ChunkStore> blockRef;
class="kw">private class="kw">final TeleporterSettingsPage.Mode mode;
class="kw">public TeleporterSettingsPage(@Nonnull PlayerRef var1, @Nonnull Ref<ChunkStore> var2, TeleporterSettingsPage.Mode var3) {
super(var1, CustomPageLifetime.CanDismissOrCloseThroughInteraction, TeleporterSettingsPage.PageEventData.CODEC);
this.blockRef = var2;
this.mode = var3;
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
String var5 = this.playerRef.getLanguage();
Teleporter var6 = this.blockRef.getStore().getComponent(this.blockRef, Teleporter.getComponentType());
var2.append("Pages/Teleporter.ui");
if (var6 == null) {
var2.set("#ErrorScreen.Visible", true);
var2.set("#FullSettings.Visible", false);
var2.set("#WarpSettings.Visible", false);
var2.set("#Buttons.Visible", false);
} else {
var2.set("#ErrorScreen.Visible", false);
var2.set("#FullSettings.Visible", this.mode == TeleporterSettingsPage.Mode.FULL);
class="kw">switch (this.mode) {
case FULL:
byte var12 = var6.getRelativeMask();
var2.set("#BlockRelative #CheckBox.Value", (var12 & 64) != 0);
Transform var14 = var6.getTransform();
if (var14 != null) {
var2.set("#X #Input.Value", var14.getPosition().x());
var2.set("#Y #Input.Value", var14.getPosition().y());
var2.set("#Z #Input.Value", var14.getPosition().z());
}
var2.set("#X #CheckBox.Value", (var12 & 1) != 0);
var2.set("#Y #CheckBox.Value", (var12 & 2) != 0);
var2.set("#Z #CheckBox.Value", (var12 & 4) != 0);
if (var14 != null) {
var2.set("#Yaw #Input.Value", var14.getRotation().yaw());
var2.set("#Pitch #Input.Value", var14.getRotation().pitch());
var2.set("#Roll #Input.Value", var14.getRotation().roll());
}
var2.set("#Yaw #CheckBox.Value", (var12 & 8) != 0);
var2.set("#Pitch #CheckBox.Value", (var12 & 16) != 0);
var2.set("#Roll #CheckBox.Value", (var12 & 32) != 0);
ObjectArrayList var9 = new ObjectArrayList();
var9.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.teleporter.noWorld"), ""));
for (World var11 : Universe.get().getWorlds().values()) {
var9.add(new DropdownEntryInfo(LocalizableString.fromString(var11.getName()), var11.getWorldConfig().getUuid().toString()));
}
var2.set("#WorldDropdown.Entries", var9);
UUID var15 = var6.getWorldUuid();
var2.set("#WorldDropdown.Value", var15 != null ? var15.toString() : "");
var2.set("#WarpDropdown.Entries", getWarpsSortedById(var6.getOwnedWarp(), null));
var2.set("#WarpDropdown.Value", var6.getWarp() != null ? var6.getWarp() : "");
var2.set("#NewWarp.Value", var6.getOwnedWarp() != null ? var6.getOwnedWarp() : "");
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#SaveButton",
new EventData()
.append("@BlockRelative", "#BlockRelative #CheckBox.Value")
.append("@X", "#X #Input.Value")
.append("@Y", "#Y #Input.Value")
.append("@Z", "#Z #Input.Value")
.append("@XIsRelative", "#X #CheckBox.Value")
.append("@YIsRelative", "#Y #CheckBox.Value")
.append("@ZIsRelative", "#Z #CheckBox.Value")
.append("@Yaw", "#Yaw #Input.Value")
.append("@Pitch", "#Pitch #Input.Value")
.append("@Roll", "#Roll #Input.Value")
.append("@YawIsRelative", "#Yaw #CheckBox.Value")
.append("@PitchIsRelative", "#Pitch #CheckBox.Value")
.append("@RollIsRelative", "#Roll #CheckBox.Value")
.append("@World", "#WorldDropdown.Value")
.append("@Warp", "#WarpDropdown.Value")
.append("@NewWarp", "#NewWarp.Value")
);
break;
case WARP:
var2.set("#WarpDropdown.Entries", getWarpsSortedById(var6.getOwnedWarp(), var4.getExternalData().getWorld().getName()));
var2.set("#WarpDropdown.Value", var6.getWarp() != null ? var6.getWarp() : "");
Message var7;
if (var6.hasOwnedWarp() && !var6.isCustomName()) {
var7 = Message.translation(var6.getOwnedWarp());
} else {
String var8 = CannedWarpNames.generateCannedWarpNameKey(this.blockRef, var5);
var7 = var8 == null ? Message.translation("server.customUI.teleporter.warpName") : Message.translation(var8);
}
var2.set("#NewWarp.PlaceholderText", var7);
String var13 = var6.isCustomName() && var6.getOwnedWarp() != null ? var6.getOwnedWarp() : "";
var2.set("#NewWarp.Value", var13);
var3.addEventBinding(
CustomUIEventBindingType.Activating,
"#SaveButton",
new EventData().append("@Warp", "#WarpDropdown.Value").append("@NewWarp", "#NewWarp.Value")
);
}
}
}
class="kw">static List<DropdownEntryInfo> getWarpsSortedById(@NullableDecl String var0, @NullableDecl String var1) {
List var2 = new ObjectArrayList();
var2.add(new DropdownEntryInfo(LocalizableString.fromMessageId("server.customUI.teleporter.noWarp"), ""));
ObjectArrayList var3 = new ObjectArrayList(TeleportPlugin.get().getWarps().values());
var3.sort((var0x, var1x) -> var0x.getId().compareToIgnoreCase(var1x.getId()));
ObjectListIterator var4 = var3.iterator();
while (var4.hasNext()) {
Warp var5 = (Warp)var4.next();
if ((var1 == null || var5.getWorld().equals(var1)) && !var5.getId().equalsIgnoreCase(var0)) {
var2.add(new DropdownEntryInfo(LocalizableString.fromString(var5.getId()), var5.getId().toLowerCase(Locale.ROOT)));
}
}
class="kw">return var2;
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull TeleporterSettingsPage.PageEventData var3) {
Player var4 = var2.getComponent(var1, Player.getComponentType());
if (var4 != null) {
String var5 = this.playerRef.getLanguage();
BlockModule.BlockStateInfo var6 = this.blockRef.getStore().getComponent(this.blockRef, BlockModule.BlockStateInfo.getComponentType());
if (var6 == null) {
var4.getPageManager().setPage(var1, var2, Page.None);
} else {
Ref var7 = var6.getSectionRef();
if (!var7.isValid()) {
var4.getPageManager().setPage(var1, var2, Page.None);
} else {
Teleporter var8 = this.blockRef.getStore().getComponent(this.blockRef, Teleporter.getComponentType());
if (var8 == null) {
var4.getPageManager().setPage(var1, var2, Page.None);
} else {
String var9 = var8.getOwnedWarp();
boolean var10 = true;
if (var3.warpName == null || var3.warpName.isEmpty()) {
if (var9 == null) {
var3.warpName = CannedWarpNames.generateCannedWarpName(this.blockRef, var5);
var10 = false;
} else {
var3.warpName = var9;
var10 = var8.isCustomName();
}
if (var3.warpName == null) {
UICommandBuilder var17 = new UICommandBuilder();
var17.set("#NewWarp.PlaceholderText", Message.translation("server.customUI.teleporter.warpNameRightHereHint"));
var17.set("#ErrorLabel.Text", Message.translation("server.customUI.teleporter.errorMissingWarpName"));
var17.set("#ErrorLabel.Visible", true);
this.sendUpdate(var17);
class="kw">return;
}
}
if (!var3.warpName.equalsIgnoreCase(var9)) {
boolean var11 = TeleportPlugin.get().getWarps().containsKey(var3.warpName.toLowerCase(Locale.ROOT));
if (var11) {
UICommandBuilder var18 = new UICommandBuilder();
var18.set("#ErrorLabel.Text", Message.translation("server.customUI.teleporter.errorWarpAlreadyExists"));
var18.set("#ErrorLabel.Visible", true);
this.sendUpdate(var18);
class="kw">return;
}
}
if (var9 != null && !var9.isEmpty()) {
TeleportPlugin.get().removeWarp(var9);
}
var4.getPageManager().setPage(var1, var2, Page.None);
String var16 = var8.getOwnedWarp();
String var12 = var8.getWarp();
CreateWarpWhenTeleporterPlacedSystem.createWarp(var7.getStore(), var7, var6, var3.warpName);
var8.setOwnedWarp(var3.warpName);
var8.setIsCustomName(var10);
class="kw">switch (this.mode) {
case FULL:
var8.setWorldUuid(var3.world != null && !var3.world.isEmpty() ? UUID.fromString(var3.world) : null);
Transform var13 = new Transform();
var13.getPosition().x = var3.x;
var13.getPosition().y = var3.y;
var13.getPosition().z = var3.z;
var13.getRotation().setYaw(var3.yaw);
var13.getRotation().setPitch(var3.pitch);
var13.getRotation().setRoll(var3.roll);
var8.setTransform(var13);
var8.setRelativeMask(
(byte)(
(var3.xIsRelative ? 1 : 0)
| (var3.yIsRelative ? 2 : 0)
| (var3.zIsRelative ? 4 : 0)
| (var3.yawIsRelative ? 8 : 0)
| (var3.pitchIsRelative ? 16 : 0)
| (var3.rollIsRelative ? 32 : 0)
| (var3.isBlockRelative ? 64 : 0)
)
);
var8.setWarp(var3.destinationWarp != null && !var3.destinationWarp.isEmpty() ? var3.destinationWarp : null);
break;
case WARP:
var8.setWorldUuid(null);
var8.setTransform(null);
var8.setWarp(var3.destinationWarp != null && !var3.destinationWarp.isEmpty() ? var3.destinationWarp : null);
}
var6.markNeedsSaving();
boolean var19 = !Objects.equals(var16, var8.getOwnedWarp());
boolean var14 = !Objects.equals(var12, var8.getWarp());
if (var19 || var14) {
World var15 = var2.getExternalData().getWorld();
TurnOffTeleportersSystem.updatePortalBlocksInWorld(var15);
}
}
}
}
}
}
class="kw">public enum Mode {
FULL,
WARP;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<TeleporterSettingsPage.Mode> CODEC = new EnumCodec<>(TeleporterSettingsPage.Mode.class);
Mode() {
}
}
class="kw">public class="kw">static class PageEventData {
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_BLOCK_RELATIVE = "@BlockRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_X = "@X";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_Y = "@Y";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_Z = "@Z";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_X_IS_RELATIVE = "@XIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_Y_IS_RELATIVE = "@YIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_Z_IS_RELATIVE = "@ZIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_YAW = "@Yaw";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_PITCH = "@Pitch";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_ROLL = "@Roll";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_YAW_IS_RELATIVE = "@YawIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_PITCH_IS_RELATIVE = "@PitchIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_ROLL_IS_RELATIVE = "@RollIsRelative";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_WORLD = "@World";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_WARP = "@Warp";
@Nonnull
class="kw">public class="kw">static class="kw">final String KEY_NEW_WARP = "@NewWarp";
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<TeleporterSettingsPage.PageEventData> CODEC = BuilderCodec.builder(
TeleporterSettingsPage.PageEventData.class, TeleporterSettingsPage.PageEventData::new
)
.append(new KeyedCodec<>("@BlockRelative", Codec.BOOLEAN), (var0, var1) -> var0.isBlockRelative = var1, var0 -> var0.isBlockRelative)
.add()
.append(new KeyedCodec<>("@X", Codec.DOUBLE), (var0, var1) -> var0.x = var1, var0 -> var0.x)
.add()
.append(new KeyedCodec<>("@Y", Codec.DOUBLE), (var0, var1) -> var0.y = var1, var0 -> var0.y)
.add()
.append(new KeyedCodec<>("@Z", Codec.DOUBLE), (var0, var1) -> var0.z = var1, var0 -> var0.z)
.add()
.append(new KeyedCodec<>("@XIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.xIsRelative = var1, var0 -> var0.xIsRelative)
.add()
.append(new KeyedCodec<>("@YIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.yIsRelative = var1, var0 -> var0.yIsRelative)
.add()
.append(new KeyedCodec<>("@ZIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.zIsRelative = var1, var0 -> var0.zIsRelative)
.add()
.append(new KeyedCodec<>("@Yaw", Codec.FLOAT), (var0, var1) -> var0.yaw = var1, var0 -> var0.yaw)
.add()
.append(new KeyedCodec<>("@Pitch", Codec.FLOAT), (var0, var1) -> var0.pitch = var1, var0 -> var0.pitch)
.add()
.append(new KeyedCodec<>("@Roll", Codec.FLOAT), (var0, var1) -> var0.roll = var1, var0 -> var0.roll)
.add()
.append(new KeyedCodec<>("@YawIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.yawIsRelative = var1, var0 -> var0.yawIsRelative)
.add()
.append(new KeyedCodec<>("@PitchIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.pitchIsRelative = var1, var0 -> var0.pitchIsRelative)
.add()
.append(new KeyedCodec<>("@RollIsRelative", Codec.BOOLEAN), (var0, var1) -> var0.rollIsRelative = var1, var0 -> var0.rollIsRelative)
.add()
.append(new KeyedCodec<>("@World", Codec.STRING), (var0, var1) -> var0.world = var1, var0 -> var0.world)
.add()
.append(new KeyedCodec<>("@Warp", Codec.STRING), (var0, var1) -> var0.destinationWarp = var1, var0 -> var0.destinationWarp)
.add()
.append(new KeyedCodec<>("@NewWarp", Codec.STRING), (var0, var1) -> var0.warpName = var1, var0 -> var0.warpName)
.add()
.build();
class="kw">public boolean isBlockRelative;
class="kw">public double x;
class="kw">public double y;
class="kw">public double z;
class="kw">public boolean xIsRelative;
class="kw">public boolean yIsRelative;
class="kw">public boolean zIsRelative;
class="kw">public float yaw;
class="kw">public float pitch;
class="kw">public float roll;
class="kw">public boolean yawIsRelative;
class="kw">public boolean pitchIsRelative;
class="kw">public boolean rollIsRelative;
class="kw">public String world;
class="kw">public String destinationWarp;
@Nullable
class="kw">public String warpName;
class="kw">public PageEventData() {
}
}
}