OpenCustomUIInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.server
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/OpenCustomUIInteraction.java
extends: SimpleInstantInteraction
Поля (22)
| Модификаторы | Тип | Имя |
|---|---|---|
|
Store |
var10 |
|
Store |
var10 |
|
Ref |
var11 |
|
BlockComponentSection |
var12 |
|
int |
var13 |
|
Ref |
var14 |
|
|
var14 |
|
Holder |
var15 |
|
CommandBuffer |
var4 |
|
OpenCustomUIInteraction.CustomPageSupplier |
var4 |
|
Ref |
var5 |
|
OpenCustomUIInteraction.CustomPageSupplier |
var5 |
|
Player |
var6 |
|
Store |
var6 |
|
PageManager |
var7 |
|
World |
var7 |
|
Store |
var7 |
|
PlayerRef |
var8 |
|
Ref |
var8 |
|
World |
var8 |
|
CustomUIPage |
var9 |
|
ChunkStore |
var9 |
Методы (14)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
if if(var6 != null) |
|
|
if if(var8 != null) |
|
|
if if(var9 != null) |
|
|
if if(var5 == null) |
|
|
if if(var6 == null) |
|
|
if if(var12 == null) |
static |
void |
registerBlockEntityCustomPagevoid registerBlockEntityCustomPage(@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull OpenCustomUIInteraction.BlockEntityCustomPageSupplier var3) |
static |
void |
registerBlockEntityCustomPagevoid registerBlockEntityCustomPage(@Nonnull PluginBase var0,
Class<?> var1,
String var2,
@Nonnull OpenCustomUIInteraction.BlockEntityCustomPageSupplier var3,
Supplier<Holder<ChunkStore>> var4) |
static |
<S extends OpenCustomUIInteraction.CustomPageSupplier> void |
registerCustomPageSupplier<S extends OpenCustomUIInteraction.CustomPageSupplier> void registerCustomPageSupplier(@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull S var3) |
abstract |
|
registerCustomPageSupplier registerCustomPageSupplier(var0, var1, var2, var4) |
abstract |
|
registerCustomPageSupplier registerCustomPageSupplier(var0, var1, var2, var5) |
static |
void |
registerSimplevoid registerSimple(@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull Function<PlayerRef, CustomUIPage> var3) |
abstract |
CustomUIPage |
tryCreateCustomUIPage tryCreate(@Nonnull PlayerRef var1, @Nonnull Ref<ChunkStore> var2) |
abstract |
CustomUIPage |
tryCreateCustomUIPage tryCreate(@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2, @Nonnull PlayerRef var3, @Nonnull InteractionContext var4) |
Исходный код
Показать/скрыть
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.lookup.CodecMapCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Holder;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.ChunkUtil;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
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.entity.entities.player.pages.CustomUIPage;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.PageManager;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
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.plugin.PluginBase;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockComponentSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.function.Function;
class="kw">import java.util.function.Supplier;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class OpenCustomUIInteraction class="kw">extends SimpleInstantInteraction {
@Nonnull
class="kw">public class="kw">static class="kw">final CodecMapCodec<OpenCustomUIInteraction.CustomPageSupplier> PAGE_CODEC = new CodecMapCodec<>();
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<OpenCustomUIInteraction> CODEC = BuilderCodec.builder(
OpenCustomUIInteraction.class, OpenCustomUIInteraction::new, SimpleInstantInteraction.CODEC
)
.documentation("Opens a custom ui page.")
.<OpenCustomUIInteraction.CustomPageSupplier>appendInherited(
new KeyedCodec<>("Page", PAGE_CODEC),
(var0, var1) -> var0.customPageSupplier = var1,
var0 -> var0.customPageSupplier,
(var0, var1) -> var0.customPageSupplier = var1.customPageSupplier
)
.addValidator(Validators.nonNull())
.add()
.build();
class="kw">private OpenCustomUIInteraction.CustomPageSupplier customPageSupplier;
class="kw">public OpenCustomUIInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
CommandBuffer var4 = var2.getCommandBuffer();
assert var4 != null;
Ref var5 = var2.getEntity();
Player var6 = var4.getComponent(var5, Player.getComponentType());
if (var6 != null) {
PageManager var7 = var6.getPageManager();
if (var7.getCustomPage() == null) {
PlayerRef var8 = var4.getComponent(var5, PlayerRef.getComponentType());
if (var8 != null) {
CustomUIPage var9 = this.customPageSupplier.tryCreate(var5, var4, var8, var2);
if (var9 != null) {
Store var10 = var4.getStore();
var7.openCustomPage(var5, var10, var9);
}
}
}
}
}
class="kw">public class="kw">static <S class="kw">extends OpenCustomUIInteraction.CustomPageSupplier> void registerCustomPageSupplier(
@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull S var3
) {
var0.getCodecRegistry(PAGE_CODEC)
.register(
var2,
(Class<? class="kw">extends OpenCustomUIInteraction.CustomPageSupplier>)var3.getClass(),
(Codec<? class="kw">extends OpenCustomUIInteraction.CustomPageSupplier>)BuilderCodec.builder(var1, () -> var3).build()
);
}
class="kw">public class="kw">static void registerSimple(@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull Function<PlayerRef, CustomUIPage> var3) {
registerCustomPageSupplier(var0, var1, var2, (var1x, var2x, var3x, var4) -> var3.apply(var3x));
}
class="kw">public class="kw">static void registerBlockEntityCustomPage(
@Nonnull PluginBase var0, Class<?> var1, String var2, @Nonnull OpenCustomUIInteraction.BlockEntityCustomPageSupplier var3
) {
OpenCustomUIInteraction.CustomPageSupplier var4 = (var1x, var2x, var3x, var4x) -> {
BlockPosition var5 = var4x.getTargetBlock();
if (var5 == null) {
class="kw">return null;
}
Store var6 = var1x.getStore();
World var7 = var6.getExternalData().getWorld();
Ref var8 = BlockModule.getBlockEntity(var7, var5.x, var5.y, var5.z);
class="kw">return var8 == null ? null : var3.tryCreate(var3x, var8);
};
registerCustomPageSupplier(var0, var1, var2, var4);
}
class="kw">public class="kw">static void registerBlockEntityCustomPage(
@Nonnull PluginBase var0,
Class<?> var1,
String var2,
@Nonnull OpenCustomUIInteraction.BlockEntityCustomPageSupplier var3,
Supplier<Holder<ChunkStore>> var4
) {
OpenCustomUIInteraction.CustomPageSupplier var5 = (var2x, var3x, var4x, var5x) -> {
BlockPosition var6 = var5x.getTargetBlock();
if (var6 == null) {
class="kw">return null;
}
Store var7 = var2x.getStore();
World var8 = var7.getExternalData().getWorld();
ChunkStore var9 = var8.getChunkStore();
Store var10 = var9.getStore();
Ref var11 = var9.getChunkSectionReferenceAtBlock(var6.x, var6.y, var6.z);
if (var11 != null && var11.isValid()) {
BlockComponentSection var12 = var10.getComponent(var11, BlockComponentSection.getComponentType());
if (var12 == null) {
class="kw">return null;
}
int var13 = ChunkUtil.indexBlock(var6.x, var6.y, var6.z);
Ref var14 = var12.getBlockReference(var13);
if (var14 == null || !var14.isValid()) {
Holder var15 = var4.get();
var15.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var13, var11));
var14 = var10.addEntity(var15, AddReason.SPAWN);
}
class="kw">return var3.tryCreate(var4x, var14);
} else {
class="kw">return null;
}
};
registerCustomPageSupplier(var0, var1, var2, var5);
}
@FunctionalInterface
class="kw">public class="kw">interface BlockEntityCustomPageSupplier {
CustomUIPage tryCreate(@Nonnull PlayerRef var1, @Nonnull Ref<ChunkStore> var2);
}
@FunctionalInterface
class="kw">public class="kw">interface CustomPageSupplier {
@Nullable
CustomUIPage tryCreate(
@Nonnull Ref<EntityStore> var1, @Nonnull ComponentAccessor<EntityStore> var2, @Nonnull PlayerRef var3, @Nonnull InteractionContext var4
);
}
}