WarpListPageEventData class
Пакет: com.hypixel.hytale.builtin.teleport
Файл: com/hypixel/hytale/builtin/teleport/WarpListPage.java
Поля (5)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final BuilderCodec<WarpListPage.WarpListPageEventData> |
CODEC |
|
static final String |
KEY_SEARCH_QUERY |
|
static final String |
KEY_WARP |
|
private String |
searchQuery |
|
private String |
warp |
Методы (2)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public String |
getSearchQuerypublic String getSearchQuery() |
|
public String |
getWarppublic String getWarp() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.teleport;
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.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
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.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.EntityStore;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectArrayList;
class="kw">import java.util.Collections;
class="kw">import java.util.Locale;
class="kw">import java.util.Map;
class="kw">import java.util.function.Consumer;
class="kw">import javax.annotation.Nonnull;
class="kw">public class WarpListPage class="kw">extends InteractiveCustomUIPage<WarpListPage.WarpListPageEventData> {
@Nonnull
class="kw">private class="kw">static class="kw">final String PAGE_UI_FILE = "Pages/WarpEntryButton.ui";
class="kw">private class="kw">final Consumer<String> callback;
class="kw">private class="kw">final Map<String, Warp> warps;
@Nonnull
class="kw">private String searchQuery = "";
class="kw">public WarpListPage(@Nonnull PlayerRef var1, Map<String, Warp> var2, Consumer<String> var3) {
super(var1, CustomPageLifetime.CanDismiss, WarpListPage.WarpListPageEventData.CODEC);
this.warps = var2;
this.callback = var3;
}
class="kw">private void buildWarpList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2) {
var1.clear("#WarpList");
ObjectArrayList var3 = new ObjectArrayList(this.warps.keySet());
if (var3.isEmpty()) {
var1.appendInline("#WarpList", "Label { Text: %server.customUI.warpListPage.noWarps; Style: (Alignment: Center); }");
} else {
if (!this.searchQuery.isEmpty()) {
var3.removeIf(var1x -> !var1x.toLowerCase(Locale.ROOT).contains(this.searchQuery));
}
Collections.sort(var3);
int var4 = 0;
for (int var5 = var3.size(); var4 < var5; var4++) {
String var6 = "#WarpList[" + var4 + "]";
String var7 = (String)var3.get(var4);
var1.append("#WarpList", "Pages/WarpEntryButton.ui");
var1.set(var6 + " #Name.Text", var7);
var1.set(var6 + " #World.Text", this.warps.get(var7).getWorld());
var2.addEventBinding(CustomUIEventBindingType.Activating, var6, EventData.of("Warp", var7), false);
}
}
}
@Override
class="kw">public void build(@Nonnull Ref<EntityStore> var1, @Nonnull UICommandBuilder var2, @Nonnull UIEventBuilder var3, @Nonnull Store<EntityStore> var4) {
var2.append("Pages/WarpListPage.ui");
var3.addEventBinding(CustomUIEventBindingType.ValueChanged, "#SearchInput", EventData.of("@SearchQuery", "#SearchInput.Value"));
this.buildWarpList(var2, var3);
}
class="kw">public void handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull WarpListPage.WarpListPageEventData var3) {
if (var3.getWarp() != null) {
Player var4 = var2.getComponent(var1, Player.getComponentType());
assert var4 != null;
var4.getPageManager().setPage(var1, var2, Page.None);
this.callback.accept(var3.getWarp());
} else if (var3.getSearchQuery() != null) {
this.searchQuery = var3.getSearchQuery().trim().toLowerCase(Locale.ROOT);
UICommandBuilder var6 = new UICommandBuilder();
UIEventBuilder var5 = new UIEventBuilder();
this.buildWarpList(var6, var5);
this.sendUpdate(var6, var5, false);
}
}
class="kw">public class="kw">static class WarpListPageEventData {
class="kw">static class="kw">final String KEY_WARP = "Warp";
class="kw">static class="kw">final String KEY_SEARCH_QUERY = "@SearchQuery";
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<WarpListPage.WarpListPageEventData> CODEC = BuilderCodec.builder(
WarpListPage.WarpListPageEventData.class, WarpListPage.WarpListPageEventData::new
)
.append(new KeyedCodec<>("Warp", Codec.STRING), (var0, var1) -> var0.warp = var1, var0 -> var0.warp)
.add()
.append(new KeyedCodec<>("@SearchQuery", Codec.STRING), (var0, var1) -> var0.searchQuery = var1, var0 -> var0.searchQuery)
.add()
.build();
class="kw">private String warp;
class="kw">private String searchQuery;
class="kw">public WarpListPageEventData() {
}
class="kw">public String getWarp() {
class="kw">return this.warp;
}
class="kw">public String getSearchQuery() {
class="kw">return this.searchQuery;
}
}
}