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