BlockFace enum

Пакет: com.hypixel.hytale.server.core.asset.type.blocktype.config

Файл: com/hypixel/hytale/server/core/asset/type/blocktype/config/BlockFace.java

Поля (7)

МодификаторыТипИмя
final EnumCodec<BlockFace> CODEC
FLIP, ROTATE_X, ROTATE_Y, ROTATE_Z, ROTATE_ALL
Vector3i var1
Vector3i var11
Vector3i var2
Vector3i var3
Vector3i var4

Методы (25)

МодификаторыВозвратСигнатура
FaceConnectionType FaceConnectionType()
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Only the base BlockFace's can be used as components to make other block faces")
abstract throw new IllegalArgumentExceptionthrow new IllegalArgumentException("Unknown FaceConnectionType " + this.faceConnectionType)
static BlockFace flipBlockFace flip(@Nonnull BlockFace var0)
for for(BlockFace var9 : nullxxxx)
for for(BlockFace var10 : nullxxxx)
for for(BlockFace var3 : VALUES)
for for(BlockFace var8 : VALUES)
for for(int var4 = 0; var4 < var8.connectingFaces.length; var4++)
public Vector3ic[] getConnectingFaceOffsetsVector3ic[] getConnectingFaceOffsets()
public BlockFace[] getConnectingFacesBlockFace[] getConnectingFaces()
public Vector3ic getDirectionVector3ic getDirection()
public BlockFace.FaceConnectionType getFaceConnectionTypeBlockFace.FaceConnectionType getFaceConnectionType()
if if(var9.components.length > 0)
if if(var0 == null)
static BlockFace lookupBlockFace lookup(Vector3i var0)
abstract return lookupreturn lookup(var3)
abstract return lookupreturn lookup(var4)
abstract return lookupreturn lookup(var1)
static BlockFace rotateBlockFace rotate(@Nonnull BlockFace var0, @Nonnull Rotation var1, @Nonnull Rotation var2)
static BlockFace rotateBlockFace rotate(@Nonnull BlockFace var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3)
switch switch(this.faceConnectionType)
return switchreturn switch(var0)
return switchreturn switch(var0)
public BlockNeighbor toProtocolBlockNeighborBlockNeighbor toProtocolBlockNeighbor()

Исходный код

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

class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.protocol.BlockNeighbor;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import java.util.Map;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;

class="kw">public enum BlockFace {
   UP(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.Up, Vector3iUtil.UP),
   DOWN(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.Down, Vector3iUtil.DOWN),
   NORTH(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.North, Vector3iUtil.NORTH),
   EAST(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.East, Vector3iUtil.EAST),
   SOUTH(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.South, Vector3iUtil.SOUTH),
   WEST(BlockFace.FaceConnectionType.FLIP, BlockNeighbor.West, Vector3iUtil.WEST),
   UP_NORTH(BlockFace.FaceConnectionType.ROTATE_X, BlockNeighbor.UpNorth, UP, NORTH),
   UP_SOUTH(BlockFace.FaceConnectionType.ROTATE_X, BlockNeighbor.UpSouth, UP, SOUTH),
   UP_EAST(BlockFace.FaceConnectionType.ROTATE_Z, BlockNeighbor.UpEast, UP, EAST),
   UP_WEST(BlockFace.FaceConnectionType.ROTATE_Z, BlockNeighbor.UpWest, UP, WEST),
   DOWN_NORTH(BlockFace.FaceConnectionType.ROTATE_X, BlockNeighbor.DownNorth, DOWN, NORTH),
   DOWN_SOUTH(BlockFace.FaceConnectionType.ROTATE_X, BlockNeighbor.DownSouth, DOWN, SOUTH),
   DOWN_EAST(BlockFace.FaceConnectionType.ROTATE_Z, BlockNeighbor.DownEast, DOWN, EAST),
   DOWN_WEST(BlockFace.FaceConnectionType.ROTATE_Z, BlockNeighbor.DownWest, DOWN, WEST),
   NORTH_EAST(BlockFace.FaceConnectionType.ROTATE_Y, BlockNeighbor.NorthEast, NORTH, EAST),
   SOUTH_EAST(BlockFace.FaceConnectionType.ROTATE_Y, BlockNeighbor.SouthEast, SOUTH, EAST),
   SOUTH_WEST(BlockFace.FaceConnectionType.ROTATE_Y, BlockNeighbor.SouthWest, SOUTH, WEST),
   NORTH_WEST(BlockFace.FaceConnectionType.ROTATE_Y, BlockNeighbor.NorthWest, NORTH, WEST),
   UP_NORTH_EAST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.UpNorthEast, UP, NORTH, EAST),
   UP_SOUTH_EAST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.UpSouthEast, UP, SOUTH, EAST),
   UP_SOUTH_WEST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.UpSouthWest, UP, SOUTH, WEST),
   UP_NORTH_WEST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.UpNorthWest, UP, NORTH, WEST),
   DOWN_NORTH_EAST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.DownNorthEast, DOWN, NORTH, EAST),
   DOWN_SOUTH_EAST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.DownSouthEast, DOWN, SOUTH, EAST),
   DOWN_SOUTH_WEST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.DownSouthWest, DOWN, SOUTH, WEST),
   DOWN_NORTH_WEST(BlockFace.FaceConnectionType.ROTATE_ALL, BlockNeighbor.DownNorthWest, DOWN, NORTH, WEST);

   class="kw">public class="kw">static class="kw">final EnumCodec<BlockFace> CODEC = new EnumCodec<>(BlockFace.class);
   class="kw">public class="kw">static class="kw">final BlockFace[] VALUES = values();
   @Nonnull
   class="kw">private class="kw">static class="kw">final Map<Vector3ic, BlockFace> DIRECTION_MAP = new Object2ObjectOpenHashMap();
   class="kw">private class="kw">final BlockFace.FaceConnectionType faceConnectionType;
   @Nonnull
   class="kw">private class="kw">final BlockFace[] components;
   class="kw">private class="kw">final Vector3ic direction;
   class="kw">private class="kw">final BlockNeighbor blockNeighbor;
   class="kw">private BlockFace[] connectingFaces;
   class="kw">private Vector3ic[] connectingFaceOffsets;

   BlockFace(BlockFace.FaceConnectionType nullxx, BlockNeighbor nullxxx, Vector3ic nullxxxx) {
      this.faceConnectionType = nullxx;
      this.direction = nullxxxx;
      this.blockNeighbor = nullxxx;
      this.components = new BlockFace[0];
   }

   BlockFace(BlockFace.FaceConnectionType nullxx, BlockNeighbor nullxxx, @Nonnull BlockFace... nullxxxx) {
      this.faceConnectionType = nullxx;
      this.components = nullxxxx;

      for (BlockFace var9 : nullxxxx) {
         if (var9.components.length > 0) {
            throw new IllegalArgumentException("Only the base BlockFace's can be used as components to make other block faces");
         }
      }

      Vector3i var11 = new Vector3i();

      for (BlockFace var10 : nullxxxx) {
         var11.add(var10.direction);
      }

      this.direction = var11;
      this.blockNeighbor = nullxxx;
   }

   class="kw">public BlockFace.FaceConnectionType getFaceConnectionType() {
      class="kw">return this.faceConnectionType;
   }

   @Nonnull
   class="kw">public BlockFace[] getComponents() {
      class="kw">return this.components;
   }

   class="kw">public Vector3ic getDirection() {
      class="kw">return this.direction;
   }

   class="kw">public BlockFace[] getConnectingFaces() {
      class="kw">return this.connectingFaces;
   }

   class="kw">public Vector3ic[] getConnectingFaceOffsets() {
      class="kw">return this.connectingFaceOffsets;
   }

   @Nonnull
   class="kw">private BlockFace[] getConnectingFaces0() {
      class="kw">switch (this.faceConnectionType) {
         case FLIP:
            class="kw">return new BlockFace[]{flip(this)};
         case ROTATE_X:
            class="kw">return new BlockFace[]{
               rotate(this, Rotation.Ninety, Rotation.None, Rotation.None),
               rotate(this, Rotation.OneEighty, Rotation.None, Rotation.None),
               rotate(this, Rotation.TwoSeventy, Rotation.None, Rotation.None)
            };
         case ROTATE_Y:
            class="kw">return new BlockFace[]{
               rotate(this, Rotation.None, Rotation.Ninety, Rotation.None),
               rotate(this, Rotation.None, Rotation.OneEighty, Rotation.None),
               rotate(this, Rotation.None, Rotation.TwoSeventy, Rotation.None)
            };
         case ROTATE_Z:
            class="kw">return new BlockFace[]{
               rotate(this, Rotation.None, Rotation.None, Rotation.Ninety),
               rotate(this, Rotation.None, Rotation.None, Rotation.OneEighty),
               rotate(this, Rotation.None, Rotation.None, Rotation.TwoSeventy)
            };
         case ROTATE_ALL:
            class="kw">return new BlockFace[]{
               rotate(this, Rotation.Ninety, Rotation.None, Rotation.None),
               rotate(this, Rotation.OneEighty, Rotation.None, Rotation.None),
               rotate(this, Rotation.None, Rotation.Ninety, Rotation.None),
               rotate(this, Rotation.None, Rotation.OneEighty, Rotation.None),
               rotate(this, Rotation.None, Rotation.TwoSeventy, Rotation.None),
               rotate(this, Rotation.None, Rotation.None, Rotation.OneEighty),
               flip(this)
            };
         class="kw">default:
            throw new IllegalArgumentException("Unknown FaceConnectionType " + this.faceConnectionType);
      }
   }

   @Nonnull
   class="kw">private Vector3i directionTo(@Nonnull BlockFace var1) {
      Vector3i var2 = new Vector3i();
      if (this.direction.x() == -var1.direction.x()) {
         var2.x = this.direction.x();
      }

      if (this.direction.y() == -var1.direction.y()) {
         var2.y = this.direction.y();
      }

      if (this.direction.z() == -var1.direction.z()) {
         var2.z = this.direction.z();
      }

      class="kw">return var2;
   }

   class="kw">public class="kw">static BlockFace lookup(Vector3i var0) {
      class="kw">return DIRECTION_MAP.get(var0);
   }

   class="kw">public class="kw">static BlockFace rotate(@Nonnull BlockFace var0, @Nonnull Rotation var1, @Nonnull Rotation var2) {
      Vector3i var3 = Rotation.rotate(var0.direction, var1, var2);
      class="kw">return lookup(var3);
   }

   class="kw">public class="kw">static BlockFace rotate(@Nonnull BlockFace var0, @Nonnull Rotation var1, @Nonnull Rotation var2, @Nonnull Rotation var3) {
      Vector3i var4 = Rotation.rotate(var0.direction, var1, var2, var3);
      class="kw">return lookup(var4);
   }

   class="kw">public class="kw">static BlockFace flip(@Nonnull BlockFace var0) {
      Vector3i var1 = new Vector3i(var0.direction).mul(-1);
      class="kw">return lookup(var1);
   }

   class="kw">public BlockNeighbor toProtocolBlockNeighbor() {
      class="kw">return this.blockNeighbor;
   }

   @Nullable
   class="kw">public class="kw">static BlockFace fromProtocolFace(@Nonnull com.hypixel.hytale.protocol.BlockFace var0) {
      class="kw">return class="kw">switch (var0) {
         case Up -> UP;
         case Down -> DOWN;
         case North -> NORTH;
         case South -> SOUTH;
         case East -> EAST;
         case West -> WEST;
         case None -> null;
      };
   }

   @Nonnull
   class="kw">public class="kw">static com.hypixel.hytale.protocol.BlockFace toProtocolFace(@Nullable BlockFace var0) {
      if (var0 == null) {
         class="kw">return com.hypixel.hytale.protocol.BlockFace.None;
      }

      class="kw">return class="kw">switch (var0) {
         case UP -> com.hypixel.hytale.protocol.BlockFace.Up;
         case DOWN -> com.hypixel.hytale.protocol.BlockFace.Down;
         case NORTH -> com.hypixel.hytale.protocol.BlockFace.North;
         case EAST -> com.hypixel.hytale.protocol.BlockFace.East;
         case SOUTH -> com.hypixel.hytale.protocol.BlockFace.South;
         case WEST -> com.hypixel.hytale.protocol.BlockFace.West;
         class="kw">default -> throw new IllegalArgumentException("Invalid BlockFace");
      };
   }

   class="kw">static {
      for (BlockFace var3 : VALUES) {
         DIRECTION_MAP.put(var3.direction, var3);
      }

      for (BlockFace var8 : VALUES) {
         var8.connectingFaces = var8.getConnectingFaces0();
         var8.connectingFaceOffsets = new Vector3i[var8.connectingFaces.length];

         for (int var4 = 0; var4 < var8.connectingFaces.length; var4++) {
            var8.connectingFaceOffsets[var4] = var8.directionTo(var8.connectingFaces[var4]);
         }
      }
   }

   enum FaceConnectionType {
      FLIP,
      ROTATE_X,
      ROTATE_Y,
      ROTATE_Z,
      ROTATE_ALL;

      FaceConnectionType() {
      }
   }
}