InteractionValidation class

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

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

Поля (35)

МодификаторыТипИмя
final float MAX_INTERACTION_DISTANCE_BUFFER
Vector3d var10
Vector3d var10
double var11
double var11
double var11
double var13
double var15
double var17
Player var3
PredictedProjectile var3
GameMode var4
Player var4
UUIDComponent var4
InteractionConfiguration var5
TransformComponent var5
TransformComponent var5
StandardPhysicsProvider var5
float var6
var6
TransformComponent var6
Player var6
Vector3d var6
float var7
var7
float var7
TransformComponent var7
double var7
PlayerSettings var8
float var8
float var8
int var9
Vector3d var9
float var9
double var9

Методы (18)

МодификаторыВозвратСигнатура
static boolean canEntityInteractWithBlockboolean canEntityInteractWithBlock(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull BlockPosition var3, @Nonnull BlockPosition var4)
static boolean canPlayerInteractWithBlockboolean canPlayerInteractWithBlock(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, int var3, int var4, int var5)
static boolean canPlayerInteractWithBlockboolean canPlayerInteractWithBlock(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull Vector3i var3)
static boolean canPlayerInteractWithBlockboolean canPlayerInteractWithBlock(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull BlockPosition var3)
abstract return canPlayerInteractWithBlockreturn canPlayerInteractWithBlock(var0, var1, var2, var3.x, var3.y, var3.z)
static boolean canPlayerInteractWithEntityboolean canPlayerInteractWithEntity(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull Ref<EntityStore> var3)
static float getPlayerInteractionDistanceSqfloat getPlayerInteractionDistanceSq(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2)
if if(var4 == GameMode.Creative)
if if(var8 != null)
if if(var4 == null)
if if(var5 == null)
if if(var6 == null)
if if(var6 == null)
if if(var7 == null)
if if(var5 == null)
if if(var3 == null)
if if(var4 == null)
static boolean isAccessibleProxyTargetboolean isAccessibleProxyTarget(@Nonnull Ref<EntityStore> var0, @Nullable Ref<EntityStore> var1, @Nonnull InteractionType var2)

Исходный код

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

class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.BlockPosition;
class="kw">import com.hypixel.hytale.protocol.GameMode;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.server.core.entity.UUIDComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.ModelComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.TransformComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerSettings;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.InteractionConfiguration;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.component.PredictedProjectile;
class="kw">import com.hypixel.hytale.server.core.modules.projectile.config.StandardPhysicsProvider;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import java.util.EnumSet;
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 InteractionValidation {
   class="kw">private class="kw">static class="kw">final float MAX_INTERACTION_DISTANCE_BUFFER = 2.0F;
   class="kw">private class="kw">static class="kw">final float EXTENDED_CREATIVE_BLOCK_INTERACTION_DISTANCE = 10.0F;
   class="kw">private class="kw">static class="kw">final float MIN_CREATIVE_BLOCK_INTERACTION_DISTANCE = 0.0F;
   class="kw">private class="kw">static class="kw">final float MAX_CREATIVE_BLOCK_INTERACTION_DISTANCE = 128.0F;
   class="kw">private class="kw">static class="kw">final float MAX_PROJECTILE_BLOCK_DISTANCE = 8.0F;
   class="kw">private class="kw">static class="kw">final EnumSet<InteractionType> PROXIABLE_INTERACTION_TYPES = EnumSet.of(
      InteractionType.ProjectileSpawn, InteractionType.ProjectileHit, InteractionType.ProjectileMiss, InteractionType.ProjectileBounce
   );

   class="kw">public InteractionValidation() {
   }

   class="kw">private class="kw">static float getPlayerInteractionDistanceSq(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2) {
      Player var3 = var1.getComponent(var0, Player.getComponentType());
      GameMode var4 = var3.getGameMode();
      InteractionConfiguration var5 = var2 != null ? var2.getItem().getInteractionConfig() : InteractionConfiguration.DEFAULT;
      float var6 = var5.getUseDistance(var4);
      if (var4 == GameMode.Creative) {
         float var7 = 10.0F;
         PlayerSettings var8 = var1.getComponent(var0, PlayerSettings.getComponentType());
         if (var8 != null) {
            int var9 = var8.creativeSettings().creativeInteractionDistance();
            var7 = MathUtil.clamp(var9, 0.0F, 128.0F);
         }

         var6 = Math.max(var6, var7);
      }

      var6 += 2.0F;
      class="kw">return var6 * var6;
   }

   class="kw">public class="kw">static boolean canPlayerInteractWithEntity(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull Ref<EntityStore> var3
   ) {
      Player var4 = var1.getComponent(var0, Player.getComponentType());
      if (var4 == null) {
         class="kw">return true;
      }

      TransformComponent var5 = var1.getComponent(var0, TransformComponent.getComponentType());
      if (var5 == null) {
         class="kw">return false;
      }

      TransformComponent var6 = var1.getComponent(var3, TransformComponent.getComponentType());
      if (var6 == null) {
         class="kw">return false;
      }

      float var7 = getPlayerInteractionDistanceSq(var0, var1, var2);
      float var8 = ModelComponent.getEyeHeight(var0, var1);
      Vector3d var9 = var5.getPosition();
      Vector3d var10 = var6.getPosition();
      double var11 = var10.distanceSquared(var9.x(), var9.y() + var8, var9.z());
      class="kw">return var11 <= var7;
   }

   class="kw">public class="kw">static boolean canPlayerInteractWithBlock(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, int var3, int var4, int var5
   ) {
      Player var6 = var1.getComponent(var0, Player.getComponentType());
      if (var6 == null) {
         class="kw">return true;
      }

      TransformComponent var7 = var1.getComponent(var0, TransformComponent.getComponentType());
      if (var7 == null) {
         class="kw">return false;
      }

      float var8 = getPlayerInteractionDistanceSq(var0, var1, var2);
      float var9 = ModelComponent.getEyeHeight(var0, var1);
      Vector3d var10 = var7.getPosition();
      double var11 = var3 + 0.5 - var10.x();
      double var13 = var4 + 0.5 - (var10.y() + var9);
      double var15 = var5 + 0.5 - var10.z();
      double var17 = var11 * var11 + var13 * var13 + var15 * var15;
      class="kw">return var17 <= var8;
   }

   class="kw">public class="kw">static boolean canPlayerInteractWithBlock(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull Vector3i var3
   ) {
      class="kw">return canPlayerInteractWithBlock(var0, var1, var2, var3.x, var3.y, var3.z);
   }

   class="kw">public class="kw">static boolean canPlayerInteractWithBlock(
      @Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nullable ItemStack var2, @Nonnull BlockPosition var3
   ) {
      class="kw">return canPlayerInteractWithBlock(var0, var1, var2, var3.x, var3.y, var3.z);
   }

   class="kw">public class="kw">static boolean canEntityInteractWithBlock(
      @Nonnull Ref<EntityStore> var0,
      @Nonnull ComponentAccessor<EntityStore> var1,
      @Nullable ItemStack var2,
      @Nonnull BlockPosition var3,
      @Nonnull BlockPosition var4
   ) {
      if (var1.getComponent(var0, Player.getComponentType()) != null) {
         class="kw">return canPlayerInteractWithBlock(var0, var1, var2, var3.x, var3.y, var3.z);
      }

      if (var1.getComponent(var0, StandardPhysicsProvider.getComponentType()) == null) {
         class="kw">return true;
      }

      TransformComponent var5 = var1.getComponent(var0, TransformComponent.getComponentType());
      if (var5 == null) {
         class="kw">return false;
      }

      Vector3d var6 = var5.getPosition();
      double var7 = var4.x + 0.5 - var6.x();
      double var9 = var4.y + 0.5 - var6.y();
      double var11 = var4.z + 0.5 - var6.z();
      class="kw">return var7 * var7 + var9 * var9 + var11 * var11 <= 64.0;
   }

   class="kw">public class="kw">static boolean isAccessibleProxyTarget(@Nonnull Ref<EntityStore> var0, @Nullable Ref<EntityStore> var1, @Nonnull InteractionType var2) {
      if (!var0.isValid()) {
         class="kw">return false;
      }

      if (var1 == null || !var1.isValid()) {
         class="kw">return false;
      }

      if (!PROXIABLE_INTERACTION_TYPES.contains(var2)) {
         class="kw">return false;
      }

      PredictedProjectile var3 = var1.getStore().getComponent(var1, PredictedProjectile.getComponentType());
      if (var3 == null) {
         class="kw">return false;
      }

      UUIDComponent var4 = var0.getStore().getComponent(var0, UUIDComponent.getComponentType());
      if (var4 == null) {
         class="kw">return false;
      }

      StandardPhysicsProvider var5 = var1.getStore().getComponent(var1, StandardPhysicsProvider.getComponentType());
      class="kw">return var5 == null ? false : var4.getUuid().equals(var5.getCreatorUuid());
   }
}