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());
}
}