OpenPageInteraction class

Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.server

Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/OpenPageInteraction.java

extends: SimpleInstantInteraction

Поля (6)

МодификаторыТипИмя
final BuilderCodec<OpenPageInteraction> CODEC
Ref var4
Store var5
CommandBuffer var6
Player var7
OpenPageInteraction.PageUsageValidator var8

Методы (3)

МодификаторыВозвратСигнатура
abstract boolean canUseboolean canUse(Ref<EntityStore> var1, Player var2, InteractionContext var3, ComponentAccessor<EntityStore> var4)
if if(var7 != null)
static void registerUsageValidatorvoid registerUsageValidator(Page var0, OpenPageInteraction.PageUsageValidator var1)

Исходный код

Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.server;

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.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.SimpleInstantInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.Map;
class="kw">import java.util.concurrent.ConcurrentHashMap;
class="kw">import javax.annotation.Nonnull;

class="kw">public class OpenPageInteraction class="kw">extends SimpleInstantInteraction {
   class="kw">public class="kw">static class="kw">final BuilderCodec<OpenPageInteraction> CODEC = BuilderCodec.builder(
         OpenPageInteraction.class, OpenPageInteraction::new, SimpleInstantInteraction.CODEC
      )
      .documentation("Opens a predefined page.")
      .<Page>appendInherited(
         new KeyedCodec<>("Page", new EnumCodec<>(Page.class)), (var0, var1) -> var0.page = var1, var0 -> var0.page, (var0, var1) -> var0.page = var1.page
      )
      .addValidator(Validators.nonNull())
      .add()
      .appendInherited(
         new KeyedCodec<>("CanCloseThroughInteraction", Codec.BOOLEAN),
         (var0, var1) -> var0.canCloseThroughInteraction = var1,
         var0 -> var0.canCloseThroughInteraction,
         (var0, var1) -> var0.canCloseThroughInteraction = var1.canCloseThroughInteraction
      )
      .add()
      .build();
   class="kw">private class="kw">static class="kw">final Map<Page, OpenPageInteraction.PageUsageValidator> USAGE_VALIDATOR_MAP = new ConcurrentHashMap<>();
   class="kw">protected Page page;
   class="kw">protected boolean canCloseThroughInteraction;

   class="kw">public OpenPageInteraction() {
   }

   @Override
   class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
      Ref var4 = var2.getEntity();
      Store var5 = var4.getStore();
      CommandBuffer var6 = var2.getCommandBuffer();
      Player var7 = var6.getComponent(var4, Player.getComponentType());
      if (var7 != null) {
         OpenPageInteraction.PageUsageValidator var8 = USAGE_VALIDATOR_MAP.get(this.page);
         if (var8 == null || var8.canUse(var4, var7, var2, var2.getCommandBuffer())) {
            var7.getPageManager().setPage(var4, var5, this.page, this.canCloseThroughInteraction);
         }
      }
   }

   class="kw">public class="kw">static void registerUsageValidator(Page var0, OpenPageInteraction.PageUsageValidator var1) {
      USAGE_VALIDATOR_MAP.put(var0, var1);
   }

   @FunctionalInterface
   class="kw">public class="kw">interface PageUsageValidator {
      boolean canUse(Ref<EntityStore> var1, Player var2, InteractionContext var3, ComponentAccessor<EntityStore> var4);
   }
}