DoorBlockUtils class

Пакет: com.hypixel.hytale.server.core.modules.interaction

Файл: com/hypixel/hytale/server/core/modules/interaction/DoorBlockUtils.java

Поля (15)

МодификаторыТипИмя
CLOSED, OPENED_IN, OPENED_OUT
final String OPEN_DOOR_IN
String var1
RootInteraction var2
double var3
Store var3
Ref var4
Vector3d var5
BlockSection var5
Vector3d var6
int var6
Interaction var7
BlockType var7
BlockType var8
int var9

Методы (16)

МодификаторыВозвратСигнатура
DoorState DoorState()
static boolean canOpenDoorboolean canOpenDoor(@Nonnull ChunkStore var0, @Nonnull Vector3i var1, @Nonnull String var2)
public static DoorBlockUtils.DoorState fromBlockStatepublic static DoorBlockUtils.DoorState fromBlockState(@Nullable String var0)
if if(var1 == null)
if if(var2 == null)
if if(var7 instanceof DoorInteraction var8)
if if(var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_IN)
if if(var5 == null)
if if(var7 == null)
if if(var8 == null)
if if(var6x != 0)
if if(var0 == null)
static boolean isHorizontalDoorboolean isHorizontalDoor(@Nonnull BlockType var0)
static boolean isInFrontOfDoorboolean isInFrontOfDoor(@Nonnull Vector3i var0, @Nullable Rotation var1, @Nonnull Vector3d var2)
return switchreturn switch(var0)
return switchreturn switch(var0)

Исходный код

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

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.math.vector.Vector3dUtil;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
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.Rotation;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.Interaction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.RootInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.DoorInteraction;
class="kw">import com.hypixel.hytale.server.core.universe.world.chunk.BlockOperations;
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.util.FillerBlockUtil;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector3i;

class="kw">public class="kw">final class DoorBlockUtils {
   class="kw">public class="kw">static class="kw">final String OPEN_DOOR_IN = "OpenDoorIn";
   class="kw">public class="kw">static class="kw">final String OPEN_DOOR_OUT = "OpenDoorOut";
   class="kw">public class="kw">static class="kw">final String CLOSE_DOOR_IN = "CloseDoorIn";
   class="kw">public class="kw">static class="kw">final String CLOSE_DOOR_OUT = "CloseDoorOut";

   class="kw">private DoorBlockUtils() {
   }

   class="kw">public class="kw">static boolean isHorizontalDoor(@Nonnull BlockType var0) {
      String var1 = var0.getInteractions().get(InteractionType.Use);
      if (var1 == null) {
         class="kw">return false;
      }

      RootInteraction var2 = RootInteraction.getAssetMap().getAsset(var1);
      if (var2 == null) {
         class="kw">return false;
      }

      for (String var6 : var2.getInteractionIds()) {
         Interaction var7 = Interaction.getAssetMap().getAsset(var6);
         if (var7 class="kw">instanceof DoorInteraction var8) {
            class="kw">return var8.getIsHorizontal();
         }
      }

      class="kw">return false;
   }

   @Nonnull
   class="kw">public class="kw">static String getInteractionState(@Nonnull DoorBlockUtils.DoorState var0, @Nonnull DoorBlockUtils.DoorState var1) {
      if (var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_IN) {
         class="kw">return "CloseDoorOut";
      } else if (var1 == DoorBlockUtils.DoorState.CLOSED && var0 == DoorBlockUtils.DoorState.OPENED_OUT) {
         class="kw">return "CloseDoorIn";
      } else {
         class="kw">return var1 == DoorBlockUtils.DoorState.OPENED_IN ? "OpenDoorOut" : "OpenDoorIn";
      }
   }

   @Nonnull
   class="kw">public class="kw">static DoorBlockUtils.DoorState getOppositeDoorState(@Nonnull DoorBlockUtils.DoorState var0) {
      class="kw">return class="kw">switch (var0) {
         case CLOSED -> DoorBlockUtils.DoorState.CLOSED;
         case OPENED_IN -> DoorBlockUtils.DoorState.OPENED_OUT;
         case OPENED_OUT -> DoorBlockUtils.DoorState.OPENED_IN;
      };
   }

   class="kw">public class="kw">static boolean isInFrontOfDoor(@Nonnull Vector3i var0, @Nullable Rotation var1, @Nonnull Vector3d var2) {
      double var3 = Math.toRadians(var1 != null ? var1.getDegrees() : 0.0);
      Vector3d var5 = new Vector3d(TrigMathUtil.sin(var3), 0.0, TrigMathUtil.cos(var3));
      Vector3d var6 = Vector3dUtil.directionTo(new Vector3d(var0).add(0.5, 0.5, 0.5), var2);
      class="kw">return var6.dot(var5) < 0.0;
   }

   class="kw">public class="kw">static boolean canOpenDoor(@Nonnull ChunkStore var0, @Nonnull Vector3i var1, @Nonnull String var2) {
      Store var3 = var0.getStore();
      Ref var4 = var0.getChunkSectionReferenceAtBlock(var1.x, var1.y, var1.z);
      if (var4 != null && var4.isValid()) {
         BlockSection var5 = var3.getComponent(var4, BlockSection.getComponentType());
         if (var5 == null) {
            class="kw">return false;
         }

         int var6 = var5.get(var1.x, var1.y, var1.z);
         BlockType var7 = BlockType.getAssetMap().getAsset(var6);
         if (var7 == null) {
            class="kw">return false;
         }

         BlockType var8 = var7.getBlockForState(var2);
         if (var8 == null) {
            class="kw">return false;
         }

         int var9 = var5.getRotationIndex(var1.x, var1.y, var1.z);
         class="kw">return BlockOperations.testPlaceBlock(var0.getStore(), var5, var1.x, var1.y, var1.z, var8, var9, (var1x, var2x, var3x, var4x, var5x, var6x) -> {
            if (var6x != 0) {
               var1x -= FillerBlockUtil.unpackX(var6x);
               var2x -= FillerBlockUtil.unpackY(var6x);
               var3x -= FillerBlockUtil.unpackZ(var6x);
            }

            class="kw">return var1x == var1.x && var2x == var1.y && var3x == var1.z;
         });
      } else {
         class="kw">return false;
      }
   }

   class="kw">public enum DoorState {
      CLOSED,
      OPENED_IN,
      OPENED_OUT;

      DoorState() {
      }

      @Nonnull
      class="kw">public class="kw">static DoorBlockUtils.DoorState fromBlockState(@Nullable String var0) {
         if (var0 == null) {
            class="kw">return CLOSED;
         }

         class="kw">return class="kw">switch (var0) {
            case "OpenDoorOut" -> OPENED_IN;
            case "OpenDoorIn" -> OPENED_OUT;
            class="kw">default -> CLOSED;
         };
      }
   }
}