WarpListPage class

Пакет: com.hypixel.hytale.builtin.teleport

Файл: com/hypixel/hytale/builtin/teleport/WarpListPage.java

extends: InteractiveCustomUIPage<WarpListPage.WarpListPageEventData>

Поля (12)

МодификаторыТипИмя
public static final BuilderCodec<WarpListPage.WarpListPageEventData> CODEC
static final String KEY_SEARCH_QUERY
static final String KEY_WARP
private String searchQuery
ObjectArrayList var3
int var4
Player var4
UIEventBuilder var5
String var6
UICommandBuilder var6
String var7
private String warp

Методы (7)

МодификаторыВозвратСигнатура
public WarpListPageEventDatapublic WarpListPageEventData()
private void buildWarpListvoid buildWarpList(@Nonnull UICommandBuilder var1, @Nonnull UIEventBuilder var2)
abstract for for(int var5 = var3.size()
public String getSearchQuerypublic String getSearchQuery()
public String getWarppublic String getWarp()
public void handleDataEventvoid handleDataEvent(@Nonnull Ref<EntityStore> var1, @Nonnull Store<EntityStore> var2, @Nonnull WarpListPage.WarpListPageEventData var3)
abstract super super(var1, CustomPageLifetime.CanDismiss, WarpListPage.WarpListPageEventData.CODEC)

Исходный код

Показать/скрыть
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;
      }
   }
}