BlockMountAPI class
Пакет: com.hypixel.hytale.builtin.mounts
Файл: com/hypixel/hytale/builtin/mounts/BlockMountAPI.java
Поля (26)
| Модификаторы | Тип | Имя |
|---|---|---|
|
CHUNK_NOT_FOUND,
CHUNK_REF_NOT_FOUND,
BLOCK_REF_NOT_FOUND,
INVALID_BLOCK,
ALREADY_MOUNTED,
UNKNOWN_BLOCKMOUNT_TYPE, |
NO_MOUNT_POINT_FOUND |
|
BlockType |
var10 |
|
int |
var11 |
|
int |
var12 |
|
Ref |
var13 |
|
|
var13 |
|
Holder |
var14 |
|
BlockMountPoint[] |
var15 |
|
|
var15 |
|
|
var15 |
|
BlockMountComponent |
var16 |
|
|
var16 |
|
BlockMountPoint |
var17 |
|
TransformComponent |
var18 |
|
Vector3d |
var19 |
|
Rotation3f |
var20 |
|
BlockMountType |
var21 |
|
|
var21 |
|
|
var21 |
|
MountedComponent |
var24 |
|
MountedComponent |
var4 |
|
ChunkStore |
var5 |
|
Store |
var6 |
|
Ref |
var7 |
|
BlockComponentSection |
var8 |
|
BlockSection |
var9 |
Методы (10)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
DidNotMount DidNotMount() |
|
|
if if(var4 != null) |
|
|
if if(var7 == null) |
|
|
if if(var8 == null) |
|
|
if if(var9 == null) |
|
|
if if(var10 == null) |
|
|
if if(var16 == null) |
|
|
if if(var15 != null && var15.length != 0) |
|
|
if if(var17 == null) |
|
|
if if(var18 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.mounts;
class="kw">import com.hypixel.hytale.component.AddReason;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
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.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.BlockMountType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.mountpoints.BlockMountPoint;
class="kw">import com.hypixel.hytale.server.core.modules.block.BlockModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockComponentSection;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.section.BlockSection;
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 javax.annotation.Nonnull;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3f;
class="kw">import org.joml.Vector3i;
class="kw">public class="kw">final class BlockMountAPI {
class="kw">private BlockMountAPI() {
}
@Nonnull
class="kw">public class="kw">static BlockMountAPI.BlockMountResult mountOnBlock(
@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull Vector3i var2, @Nonnull Vector3d var3
) {
MountedComponent var4 = var1.getComponent(var0, MountedComponent.getComponentType());
if (var4 != null) {
class="kw">return BlockMountAPI.DidNotMount.ALREADY_MOUNTED;
}
ChunkStore var5 = var0.getStore().getExternalData().getWorld().getChunkStore();
Store var6 = var5.getStore();
Ref var7 = var5.getChunkSectionReferenceAtBlock(var2.x, var2.y, var2.z);
if (var7 == null) {
class="kw">return BlockMountAPI.DidNotMount.CHUNK_NOT_FOUND;
}
BlockComponentSection var8 = var6.getComponent(var7, BlockComponentSection.getComponentType());
if (var8 == null) {
class="kw">return BlockMountAPI.DidNotMount.CHUNK_REF_NOT_FOUND;
}
BlockSection var9 = var6.getComponent(var7, BlockSection.getComponentType());
if (var9 == null) {
class="kw">return BlockMountAPI.DidNotMount.INVALID_BLOCK;
}
BlockType var10 = BlockType.getAssetMap().getAsset(var9.get(var2.x, var2.y, var2.z));
if (var10 == null) {
class="kw">return BlockMountAPI.DidNotMount.INVALID_BLOCK;
}
int var11 = var9.getRotationIndex(var2.x, var2.y, var2.z);
int var12 = ChunkUtil.indexBlock(var2.x, var2.y, var2.z);
Ref var13 = var8.getBlockReference(var12);
if (var13 == null || !var13.isValid()) {
Holder var14 = ChunkStore.REGISTRY.newHolder();
var14.putComponent(BlockModule.BlockStateInfo.getComponentType(), new BlockModule.BlockStateInfo(var12, var7));
var13 = var6.addEntity(var14, AddReason.SPAWN);
if (var13 == null || !var13.isValid()) {
class="kw">return BlockMountAPI.DidNotMount.BLOCK_REF_NOT_FOUND;
}
}
BlockMountType var21 = null;
BlockMountPoint[] var15 = null;
if (var10.getSeats() != null) {
var21 = BlockMountType.Seat;
var15 = var10.getSeats().getRotated(var11);
} else {
if (var10.getBeds() == null) {
class="kw">return BlockMountAPI.DidNotMount.UNKNOWN_BLOCKMOUNT_TYPE;
}
var21 = BlockMountType.Bed;
var15 = var10.getBeds().getRotated(var11);
}
BlockMountComponent var16 = var6.getComponent(var13, BlockMountComponent.getComponentType());
if (var16 == null) {
var16 = new BlockMountComponent(var21, var2, var10, var11);
var6.addComponent(var13, BlockMountComponent.getComponentType(), var16);
}
if (var15 != null && var15.length != 0) {
BlockMountPoint var17 = var16.findAvailableSeat(var2, var15, var3);
if (var17 == null) {
class="kw">return BlockMountAPI.DidNotMount.NO_MOUNT_POINT_FOUND;
}
TransformComponent var18 = var1.getComponent(var0, TransformComponent.getComponentType());
if (var18 != null) {
Vector3d var19 = var17.computeWorldSpacePosition(var16.getBlockPos());
Rotation3f var20 = var17.computeRotationEuler(var16.getExpectedRotation());
var18.setPosition(var19);
var18.setRotation(var20);
}
MountedComponent var24 = new MountedComponent(var13, new Vector3f(), var21);
var1.addComponent(var0, MountedComponent.getComponentType(), var24);
var16.putSeatedEntity(var17, var0);
class="kw">return new BlockMountAPI.Mounted(var10, var24);
} else {
class="kw">return BlockMountAPI.DidNotMount.NO_MOUNT_POINT_FOUND;
}
}
class="kw">public sealed class="kw">interface BlockMountResult permits BlockMountAPI.Mounted, BlockMountAPI.DidNotMount {
}
class="kw">public enum DidNotMount class="kw">implements BlockMountAPI.BlockMountResult {
CHUNK_NOT_FOUND,
CHUNK_REF_NOT_FOUND,
BLOCK_REF_NOT_FOUND,
INVALID_BLOCK,
ALREADY_MOUNTED,
UNKNOWN_BLOCKMOUNT_TYPE,
NO_MOUNT_POINT_FOUND;
DidNotMount() {
}
}
class="kw">public record Mounted(BlockType blockType, MountedComponent component) class="kw">implements BlockMountAPI.BlockMountResult {
class="kw">public Mounted {
}
}
}