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;
      }
   }
}