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