DamageSystems class

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

Файл: com/hypixel/hytale/server/core/modules/entity/damage/DamageSystems.java

Поля (309)

МодификаторыТипИмя
public static boolean CAUSE_DESYNC
static final float CURVE_MODIFIER
static final float CURVE_MODIFIER
static final float CURVE_MULTIPLIER
static final float CURVE_MULTIPLIER
private static final float DAMAGE_AMOUNT_DROWNING
private static final float DAMAGE_AMOUNT_SUFFOCATION
private static final ComponentType<EntityStore, DamageDataComponent> DAMAGE_DATA_COMPONENT_TYPE
private static final ComponentType<EntityStore, DamageDataComponent> DAMAGE_DATA_COMPONENT_TYPE
final float DEFAULT_DAMAGE_DELAY
private static final Set<Dependency<EntityStore>> DEPENDENCIES
private static final Set<Dependency<EntityStore>> DEPENDENCIES
private static final int EVENT_ON_HIT_TAG_INDEX
private static final int EVENT_ON_KILL_TAG_INDEX
public static final double MIN_DAMAGE
public static final double MIN_DAMAGE
private static final ComponentType<EntityStore, NetworkId> NETWORK_ID_COMPONENT_TYPE
private static final ReticleEvent ON_HIT
private static final ReticleEvent ON_KILL
private static final ComponentType<EntityStore, Player> PLAYER_COMPONENT_TYPE
public static float PLAYER_KNOCKBACK_SCALE
private static final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> PLAYER_SPATIAL_RESOURCE_TYPE
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final Query<EntityStore> QUERY
private static final ResourceType<EntityStore, TimeResource> TIME_RESOURCE_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
private static final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE
break
break
break
private final ComponentType<EntityStore, BreathingComponent> breathingComponentType
public float flatModifier
public DamageCause inheritedParentId
private final ComponentType<EntityStore, Invulnerable> invulnerableComponentType
public float multiplierModifier
private final Query<EntityStore> query
return
return
return
private final ComponentType<EntityStore, UIComponentList> uiComponentListComponentType
float var10
Vector4d var10
Damage.SoundEffect var10
EffectControllerComponent var10
double var10
ResistanceModifier var10
ShortArrayList var10
ItemStack var10
float var10
Float var10
double var10
World var10
boolean var10
String[] var10
Damage var10
Ref var10
TransformComponent var10
DamageDataComponent var10
Ref var10
Ref var10
WieldingInteraction.AngledWielding var10
Vector3d var11
Ref var11
var11
var11
Map var11
double var11
ItemStack var11
short var11
Ref var11
Float var11
Ref var11
PlayerConfig var11
String var11
Vector3d var11
Ref var11
TransformComponent var11
KnockbackComponent var11
boolean var12
DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var12
var12
Item var12
World var12
List var12
Ref var12
Vector3d var12
double var13
float var13
var13
DamageCause var13
ItemArmor var13
int var13
Rotation3f var13
boolean var14
BrokenPenalties var14
Map var14
MovementConfig var14
PlayerInput.InputUpdate var14
TransformComponent var14
WorldParticle[] var15
Predicate var15
DamageCause var15
float var15
int var15
TransformComponent var16
int var16
EntityStatMap var16
TransformComponent var16
double var16
var16
float var17
Vector4d var17
double var17
int var17
SpatialResource var18
Vector3d var18
float var18
var18
double var18
List var19
PlayerRef var19
EntityStatValue var19
Player var19
float var19
var19
IntIterator var2
Ref var20
float var20
int var20
String var20
var20
var20
Int2DoubleMap var20
double var21
MovementConfig var21
Int2FloatMap var21
Vector3d var21
float var22
DamageEffects var22
Vector3d var22
int var23
var23
var23
EntityStatMap var23
String var23
float var23
var23
Damage var24
double var24
float var24
var24
Ref var24
DamageEffects var25
PlayerRef var26
EntityStatValue var26
String var26
Ref var27
float var27
Ref var27
ModelParticle[] var28
double var28
Int2FloatMap var28
com.hypixel.hytale.protocol.ModelParticle[] var29
NetworkId var29
int var3
int var30
var30
var30
Vector3d var30
NetworkId var31
Damage var31
InteractionContext var31
int var32
SpawnModelParticles var33
DynamicMetaStore var33
SpatialResource var34
int var34
SpatialStructure var35
InteractionChain var35
List var36
Map var4
EntityEffect var4
CombatTextUpdate var4
World var4
World var4
Map var5
BreathingComponent var5
BreathingComponent var5
EntityStatMap var6
Damage.Particles var6
TransformComponent var6
World var6
ItemStack var6
InventoryComponent.Armor var6
Ref var6
BreathingComponent var6
Ref var6
EntityStatMap var6
LivingEntity var6
PlayerInput var6
World var6
World var6
EffectControllerComponent var6
KnockbackComponent var6
ModelComponent var6
CachedStatsComponent var6
BreathingComponent var6
CachedStatsComponent var6
TransformComponent var6
World var6
PlayerRef var6
DamageDataComponent var6
boolean var6
TimeResource var6
DamageDataComponent var6
DamageDataComponent var6
int var7
Player var7
Ref var7
Item var7
DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var7
ItemContainer var7
BreathingComponent var7
EntityStatMap var7
DamageCause var7
DamageDataComponent var7
MovementStatesComponent var7
Velocity var7
GameplayConfig var7
GameplayConfig var7
Archetype var7
Vector3d var7
Model var7
CachedStatsComponent var7
double var7
Player var7
Instant var7
DamageDataComponent var7
InteractionManager var7
TransformComponent var7
EntityStatValue var8
Ref var8
InventoryComponent.Armor var8
ItemArmor var8
ResistanceModifier[] var8
DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var8
KnockbackComponent var8
CachedStatsComponent var8
EntityStatValue var8
InventoryComponent.Armor var8
InventoryComponent.Hotbar var8
WieldingInteraction.StaminaCost var8
PlayerRef var8
MovementStates var8
double var8
var8
Ref var8
Ref var8
boolean var8
MovementStatesComponent var8
WieldingInteraction var8
WieldingInteraction var8
boolean var9
TransformComponent var9
Damage.SoundEffect var9
ItemContainer var9
Map var9
float var9
boolean var9
Damage var9
var9
var9
ItemContainer var9
byte var9
Boolean var9
EntityTrackerSystems.EntityViewer var9
Velocity var9
boolean var9
MovementStates var9
boolean var9
DamageCause var9
PlayerRef var9
WieldingInteraction.AngledWielding var9
Int2DoubleMap var9
private final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType

Методы (194)

МодификаторыВозвратСигнатура
public ApplyDamagepublic ApplyDamage()
public ApplyParticlespublic ApplyParticles()
public ApplySoundEffectspublic ApplySoundEffects()
public ArmorDamageReductionpublic ArmorDamageReduction()
public ArmorKnockbackReductionpublic ArmorKnockbackReduction()
public ArmorResistanceModifierspublic ArmorResistanceModifiers()
public BreathingSystempublic BreathingSystem()
public CanBreathepublic CanBreathe()
public DamageArmorpublic DamageArmor()
public DamageAttackerToolpublic DamageAttackerTool()
public DamageStaminapublic DamageStamina()
public EntityUIEventspublic EntityUIEvents()
public FallDamageNPCspublic FallDamageNPCs()
public FallDamagePlayerspublic FallDamagePlayers()
public FilterNPCWorldConfigpublic FilterNPCWorldConfig()
public FilterPlayerWorldConfigpublic FilterPlayerWorldConfig()
public FilterUnkillablepublic FilterUnkillable()
public HackKnockbackValuespublic HackKnockbackValues()
public HitAnimationpublic HitAnimation()
public InvulnerableBreathingpublic InvulnerableBreathing(@Nonnull ComponentType<EntityStore, Invulnerable> var1, @Nonnull ComponentType<EntityStore, BreathingComponent> var2)
public OutOfWorldDamagepublic OutOfWorldDamage()
public PlayerDamageFilterSystempublic PlayerDamageFilterSystem()
public PlayerHitIndicatorspublic PlayerHitIndicators()
public RecordLastCombatpublic RecordLastCombat()
public ReticleEventspublic ReticleEvents()
public TrackLastDamagepublic TrackLastDamage()
public WieldingDamageReductionpublic WieldingDamageReduction()
public WieldingKnockbackReductionpublic WieldingKnockbackReduction()
private static void addResistanceModifiersFromEntityEffectsprivate static void addResistanceModifiersFromEntityEffects(Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> var0, EffectControllerComponent var1)
abstract addResistanceModifiersFromEntityEffects addResistanceModifiersFromEntityEffects(var4, var3)
private static void calculateResistanceEntryModificationsprivate static void calculateResistanceEntryModifications(@Nonnull Entry<DamageCause, ResistanceModifier[]> var0, @Nonnull World var1, @Nonnull Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> var2, boolean var3, boolean var4, double var5)
public ComponentType<EntityStore, Invulnerable> componentTypepublic ComponentType<EntityStore, Invulnerable> componentType()
static void executeDamagevoid executeDamage(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Damage var2)
static void executeDamagevoid executeDamage(int var0, @Nonnull ArchetypeChunk<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull Damage var3)
static void executeDamagevoid executeDamage(@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull Damage var2)
for for(WorldParticle var24 : var15)
for for(int var30 = 0; var30 < var28.length; var30++)
for for(Ref var25 : var36)
for for(int var9 = 0; var9 < var8.length; var9++)
abstract for for(short var5 = 0; var5 < var1.getCapacity()
abstract for for(short var10 = 0; var10 < var7.getCapacity()
abstract for for(int var13 = 0; var13 < var12.size()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public Set<Dependency<EntityStore>> getDependenciespublic Set<Dependency<EntityStore>> getDependencies()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public SystemGroup<EntityStore> getGrouppublic SystemGroup<EntityStore> getGroup()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public Query<EntityStore> getQuerypublic Query<EntityStore> getQuery()
public static Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> getResistanceModifierspublic static Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> getResistanceModifiers(@Nonnull World var0, @Nonnull ItemContainer var1, boolean var2, @Nullable EffectControllerComponent var3)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handlepublic void handle(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handleInternalpublic void handleInternal(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handleInternalpublic void handleInternal(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handleInternalpublic void handleInternal(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
public void handleInternalpublic void handleInternal(int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5)
if if(var9)
if if(var6 != null)
if if(var15 != null && var15.length > 0)
if if(var16 != null)
if if(var28 != null && var28.length > 0)
if if(var26 != null)
if if(var9 != null || var10 != null)
if if(var14)
if if(var19 != null)
if if(var12 == null)
if if(var12 == null)
if if(var8 != null)
if if(var9 != null)
if if(var3 && var4)
if if(var1 != null)
if if(var4 != null)
if if(var7 != null)
if if(var8 != null)
if if(var13 != null)
if if(var14 != null)
if if(var8 != null)
if if(var8 != null)
if if(var9 != -1)
if if(var8 != null)
if if(var9 != null && var9)
if if(var11 != null)
if if(var9 != null)
if if(var10 > var15 && !var8.inFluid)
if if(var8.rolling)
if if(var23 > 0)
if if(var30 > 0)
if if(var8 || var9 || var10 || CAUSE_DESYNC)
if if(var7 != null)
if if(var11 != null)
if if(var9)
if if(var9 != null)
if if(var10 != null)
if if(var10 != null)
if if(var8 != null)
if if(var16 != null)
if if(var22 != null)
if if(var23 != null)
if if(var9 != null)
if if(var25 != null)
if if(var26 != null)
if if(var20 != null)
if if(var29 != null)
if if(var8 != null)
if if(var11 != null)
if if(var14 != null)
if if(var10 != null)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public boolean isParallelpublic boolean isParallel(int var1, int var2)
public void onComponentAddedpublic void onComponentAdded(@Nonnull Ref<EntityStore> var1, @Nonnull Invulnerable var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentRemovedpublic void onComponentRemoved(@Nonnull Ref<EntityStore> var1, @Nonnull Invulnerable var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4)
public void onComponentSetpublic void onComponentSet(@Nonnull Ref<EntityStore> var1, Invulnerable var2, @Nonnull Invulnerable var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
private static void queueUpdateForprivate static void queueUpdateFor(@Nonnull Ref<EntityStore> var0, float var1, @Nullable Float var2, @Nonnull EntityTrackerSystems.EntityViewer var3)
abstract super super(1.0F)
switch switch(var14)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull Store<EntityStore> var3)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
public void tickpublic void tick(float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5)
while while(var12.inheritedParentId != null)

Исходный код

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

class="kw">import com.hypixel.hytale.assetstore.AssetRegistry;
class="kw">import com.hypixel.hytale.component.Archetype;
class="kw">import com.hypixel.hytale.component.ArchetypeChunk;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.ComponentType;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.ResourceType;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.component.SystemGroup;
class="kw">import com.hypixel.hytale.component.dependency.Dependency;
class="kw">import com.hypixel.hytale.component.dependency.Order;
class="kw">import com.hypixel.hytale.component.dependency.SystemDependency;
class="kw">import com.hypixel.hytale.component.dependency.SystemGroupDependency;
class="kw">import com.hypixel.hytale.component.query.Query;
class="kw">import com.hypixel.hytale.component.spatial.SpatialResource;
class="kw">import com.hypixel.hytale.component.spatial.SpatialStructure;
class="kw">import com.hypixel.hytale.component.system.RefChangeSystem;
class="kw">import com.hypixel.hytale.component.system.tick.DelayedEntitySystem;
class="kw">import com.hypixel.hytale.component.system.tick.EntityTickingSystem;
class="kw">import com.hypixel.hytale.math.random.RandomExtra;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.math.util.TrigMathUtil;
class="kw">import com.hypixel.hytale.math.vector.Rotation3f;
class="kw">import com.hypixel.hytale.protocol.AnimationSlot;
class="kw">import com.hypixel.hytale.protocol.CombatTextUpdate;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
class="kw">import com.hypixel.hytale.protocol.MovementStates;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.protocol.packets.entities.SpawnModelParticles;
class="kw">import com.hypixel.hytale.protocol.packets.player.DamageInfo;
class="kw">import com.hypixel.hytale.protocol.packets.player.ReticleEvent;
class="kw">import com.hypixel.hytale.server.core.asset.type.entityeffect.config.EntityEffect;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.BrokenPenalties;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.GameplayConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.gameplay.PlayerConfig;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.Item;
class="kw">import com.hypixel.hytale.server.core.asset.type.item.config.ItemArmor;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.Model;
class="kw">import com.hypixel.hytale.server.core.asset.type.model.config.ModelParticle;
class="kw">import com.hypixel.hytale.server.core.asset.type.particle.config.WorldParticle;
class="kw">import com.hypixel.hytale.server.core.entity.AnimationUtils;
class="kw">import com.hypixel.hytale.server.core.entity.Entity;
class="kw">import com.hypixel.hytale.server.core.entity.EntityUtils;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionChain;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionContext;
class="kw">import com.hypixel.hytale.server.core.entity.InteractionManager;
class="kw">import com.hypixel.hytale.server.core.entity.ItemUtils;
class="kw">import com.hypixel.hytale.server.core.entity.LivingEntity;
class="kw">import com.hypixel.hytale.server.core.entity.damage.DamageDataComponent;
class="kw">import com.hypixel.hytale.server.core.entity.effect.EffectControllerComponent;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.movement.MovementConfig;
class="kw">import com.hypixel.hytale.server.core.entity.knockback.KnockbackComponent;
class="kw">import com.hypixel.hytale.server.core.entity.movement.MovementStatesComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.InventoryComponent;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemStack;
class="kw">import com.hypixel.hytale.server.core.inventory.container.EmptyItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.container.ItemContainer;
class="kw">import com.hypixel.hytale.server.core.meta.DynamicMetaStore;
class="kw">import com.hypixel.hytale.server.core.modules.entity.AllLegacyLivingEntityTypesQuery;
class="kw">import com.hypixel.hytale.server.core.modules.entity.EntityModule;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.BreathingComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.CachedStatsComponent;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Intangible;
class="kw">import com.hypixel.hytale.server.core.modules.entity.component.Invulnerable;
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.PlayerInput;
class="kw">import com.hypixel.hytale.server.core.modules.entity.player.PlayerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.EntityTrackerSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entity.tracker.NetworkId;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatValue;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatsSystems;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.asset.DefaultEntityStatTypes;
class="kw">import com.hypixel.hytale.server.core.modules.entityui.EntityUIModule;
class="kw">import com.hypixel.hytale.server.core.modules.entityui.UIComponentList;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.InteractionModule;
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.client.WieldingInteraction;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.config.server.combat.DamageEffects;
class="kw">import com.hypixel.hytale.server.core.modules.physics.component.Velocity;
class="kw">import com.hypixel.hytale.server.core.modules.splitvelocity.SplitVelocity;
class="kw">import com.hypixel.hytale.server.core.modules.time.TimeResource;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.ParticleUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.World;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2DoubleMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntIterator;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.shorts.ShortArrayList;
class="kw">import java.time.Instant;
class="kw">import java.util.List;
class="kw">import java.util.Map;
class="kw">import java.util.Objects;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import java.util.function.Predicate;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3d;
class="kw">import org.joml.Vector4d;

class="kw">public class DamageSystems {
   class="kw">public class="kw">static class="kw">final float DEFAULT_DAMAGE_DELAY = 1.0F;
   class="kw">private class="kw">static class="kw">final Query<EntityStore> NPCS_QUERY = Query.and(
      AllLegacyLivingEntityTypesQuery.INSTANCE,
      EntityStatMap.getComponentType(),
      MovementStatesComponent.getComponentType(),
      Query.not(EntityModule.get().getPlayerComponentType())
   );

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

   class="kw">public class="kw">static void executeDamage(@Nonnull Ref<EntityStore> var0, @Nonnull ComponentAccessor<EntityStore> var1, @Nonnull Damage var2) {
      var1.invoke(var0, var2);
   }

   class="kw">public class="kw">static void executeDamage(int var0, @Nonnull ArchetypeChunk<EntityStore> var1, @Nonnull CommandBuffer<EntityStore> var2, @Nonnull Damage var3) {
      var2.invoke(var1.getReferenceTo(var0), var3);
   }

   class="kw">public class="kw">static void executeDamage(@Nonnull Ref<EntityStore> var0, @Nonnull CommandBuffer<EntityStore> var1, @Nonnull Damage var2) {
      var1.invoke(var0, var2);
   }

   class="kw">public class="kw">static class ApplyDamage class="kw">extends DamageEventSystem class="kw">implements EntityStatsSystems.StatModifyingSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = EntityStatMap.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(
         new SystemGroupDependency<>(Order.AFTER, DamageModule.get().getGatherDamageGroup()),
         new SystemGroupDependency<>(Order.AFTER, DamageModule.get().getFilterDamageGroup()),
         new SystemGroupDependency<>(Order.BEFORE, DamageModule.get().getInspectDamageGroup())
      );

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

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return DEPENDENCIES;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         EntityStatMap var6 = var2.getComponent(var1, EntityStatMap.getComponentType());
         assert var6 != null;
         int var7 = DefaultEntityStatTypes.getHealth();
         EntityStatValue var8 = var6.get(var7);
         Objects.requireNonNull(var8);
         boolean var9 = var2.getArchetype().contains(DeathComponent.getComponentType());
         if (var9) {
            var5.setCancelled(true);
         } else {
            var5.setAmount(Math.round(var5.getAmount()));
            float var10 = var6.subtractStatValue(var7, var5.getAmount());
            if (var10 <= var8.getMin()) {
               DeathComponent.tryAddComponent(var4, var2.getReferenceTo(var1), var5);
            }
         }
      }
   }

   class="kw">public class="kw">static class ApplyParticles class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ResourceType<EntityStore, SpatialResource<Ref<EntityStore>, EntityStore>> PLAYER_SPATIAL_RESOURCE_TYPE = EntityModule.get()
         .getPlayerSpatialResourceType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, NetworkId> NETWORK_ID_COMPONENT_TYPE = NetworkId.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(TRANSFORM_COMPONENT_TYPE, NETWORK_ID_COMPONENT_TYPE);

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

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         Damage.Particles var6 = var5.getIfPresentMetaObject(Damage.IMPACT_PARTICLES);
         if (var6 != null) {
            if (var5.getSource() class="kw">instanceof Damage.EntitySource var7) {
               Ref var27 = var7.getRef();
               if (var27.isValid()) {
                  TransformComponent var9 = var2.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
                  assert var9 != null;
                  Vector4d var10 = var5.getIfPresentMetaObject(Damage.HIT_LOCATION);
                  Vector3d var11 = var10 == null ? var9.getPosition() : new Vector3d(var10.x, var10.y, var10.z);
                  boolean var12 = var5.getMetaStore().getMetaObject(Damage.CAN_BE_PREDICTED);
                  double var13 = var6.getViewDistance();
                  WorldParticle[] var15 = var6.getWorldParticles();
                  if (var15 != null && var15.length > 0) {
                     TransformComponent var16 = var4.getComponent(var27, TransformComponent.getComponentType());
                     if (var16 != null) {
                        float var17 = TrigMathUtil.atan2(var16.getPosition().x - var11.x, var16.getPosition().z - var11.z);
                        SpatialResource var18 = var4.getResource(EntityModule.get().getPlayerSpatialResourceType());
                        List var19 = SpatialResource.getThreadLocalReferenceList();
                        var18.getSpatialStructure().collect(var11, var13, var19);
                        Ref var20 = var12 ? var27 : null;

                        for (WorldParticle var24 : var15) {
                           ParticleUtil.spawnParticleEffect(var24, var11, var17, 0.0F, 0.0F, var20, var19, var4);
                        }
                     }
                  }

                  ModelParticle[] var28 = var6.getModelParticles();
                  if (var28 != null && var28.length > 0) {
                     com.hypixel.hytale.protocol.ModelParticle[] var29 = new com.hypixel.hytale.protocol.ModelParticle[var28.length];

                     for (int var30 = 0; var30 < var28.length; var30++) {
                        var29[var30] = var28[var30].toPacket();
                     }

                     NetworkId var31 = var2.getComponent(var1, NETWORK_ID_COMPONENT_TYPE);
                     assert var31 != null;
                     int var32 = var31.getId();
                     SpawnModelParticles var33 = new SpawnModelParticles(var32, var29);
                     SpatialResource var34 = var3.getResource(PLAYER_SPATIAL_RESOURCE_TYPE);
                     SpatialStructure var35 = var34.getSpatialStructure();
                     List var36 = SpatialResource.getThreadLocalReferenceList();
                     var35.ordered(var11, var13, var36);

                     for (Ref var25 : var36) {
                        if (!var12 || !var25.equals(var27)) {
                           PlayerRef var26 = var4.getComponent(var25, PlayerRef.getComponentType());
                           if (var26 != null) {
                              var26.getPacketHandler().write(var33);
                           }
                        }
                     }
                  }
               }
            }
         }
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }
   }

   class="kw">public class="kw">static class ApplySoundEffects class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, Player> PLAYER_COMPONENT_TYPE = Player.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = TRANSFORM_COMPONENT_TYPE;

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

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
      }

      class="kw">public void handleInternal(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         TransformComponent var6 = var2.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
         assert var6 != null;
         Player var7 = var2.getComponent(var1, PLAYER_COMPONENT_TYPE);
         Ref var8 = var2.getReferenceTo(var1);
         Damage.SoundEffect var9 = var5.getIfPresentMetaObject(Damage.IMPACT_SOUND_EFFECT);
         Damage.SoundEffect var10 = var5.getIfPresentMetaObject(Damage.PLAYER_IMPACT_SOUND_EFFECT);
         if (var9 != null || var10 != null) {
            Ref var11;
            if (var5.getSource() class="kw">instanceof Damage.EntitySource var12) {
               var11 = var12.getRef().isValid() ? var12.getRef() : null;
            } else {
               var11 = null;
            }

            Vector4d var17 = var5.getIfPresentMetaObject(Damage.HIT_LOCATION);
            Vector3d var18 = var17 == null ? var6.getPosition() : new Vector3d(var17.x, var17.y, var17.z);
            boolean var14 = var7 != null && var10 != null && var10.getSoundEventIndex() != 0;
            if (var9 != null && var9.getSoundEventIndex() != 0) {
               Predicate var15 = var3x -> var11 != null && var3x.equals(var11) ? false : !var14 || !var3x.equals(var8);
               SoundUtil.playSoundEvent3d(var9.getSoundEventIndex(), var18.x, var18.y, var18.z, var15, var4);
            }

            if (var14) {
               PlayerRef var19 = var4.getComponent(var8, PlayerRef.getComponentType());
               if (var19 != null) {
                  int var16 = var9 != null ? var9.getSoundEventIndex() : 0;
                  SoundUtil.playLocalPlayerSoundEvent(var19, var10.getSoundEventIndex(), var16, SoundCategory.SFX);
               }
            }
         }
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }
   }

   @Deprecated
   class="kw">public class="kw">static class ArmorDamageReduction class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = AllLegacyLivingEntityTypesQuery.INSTANCE;

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         World var6 = var4.getExternalData().getWorld();
         Ref var7 = var2.getReferenceTo(var1);
         InventoryComponent.Armor var8 = var4.getComponent(var7, InventoryComponent.Armor.getComponentType());
         ItemContainer var9 = var8 != null ? var8.getInventory() : EmptyItemContainer.INSTANCE;
         EffectControllerComponent var10 = var2.getComponent(var1, EffectControllerComponent.getComponentType());
         Map var11 = getResistanceModifiers(var6, var9, ItemUtils.canApplyItemStackPenalties(var7, var4), var10);
         if (!var5.getCause().doesBypassResistances() && !var11.isEmpty()) {
            DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var12 = var11.get(var5.getCause());
            if (var12 == null) {
               class="kw">return;
            }

            float var13 = Math.max(0.0F, var5.getAmount() - var12.flatModifier);
            var13 *= Math.max(0.0F, 1.0F - var12.multiplierModifier);

            while (var12.inheritedParentId != null) {
               var12 = var11.get(var12.inheritedParentId);
               if (var12 == null) {
                  break;
               }

               var13 = Math.max(0.0F, var13 - var12.flatModifier);
               var13 *= Math.max(0.0F, 1.0F - var12.multiplierModifier);
            }

            var5.setAmount(var13);
         }
      }

      @Nonnull
      class="kw">public class="kw">static Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> getResistanceModifiers(
         @Nonnull World var0, @Nonnull ItemContainer var1, boolean var2, @Nullable EffectControllerComponent var3
      ) {
         Map var4 = new Object2ObjectOpenHashMap();

         for (short var5 = 0; var5 < var1.getCapacity(); var5++) {
            ItemStack var6 = var1.getItemStack(var5);
            if (var6 != null && !var6.isEmpty()) {
               Item var7 = var6.getItem();
               ItemArmor var8 = var7.getArmor();
               if (var8 != null) {
                  Map var9 = var8.getDamageResistanceValues();
                  double var10 = var8.getBaseDamageResistance();
                  if (var9 != null) {
                     for (Entry var13 : var9.entrySet()) {
                        if (var13.getValue() != null) {
                           calculateResistanceEntryModifications(var13, var0, var4, var2, var6.isBroken(), var10);
                        }
                     }
                  }
               }
            }
         }

         addResistanceModifiersFromEntityEffects(var4, var3);
         class="kw">return var4;
      }

      class="kw">private class="kw">static void calculateResistanceEntryModifications(
         @Nonnull Entry<DamageCause, ResistanceModifier[]> var0,
         @Nonnull World var1,
         @Nonnull Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> var2,
         boolean var3,
         boolean var4,
         double var5
      ) {
         DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var7 = var2.computeIfAbsent(
            var0.getKey(), var0x -> new DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers()
         );
         ResistanceModifier[] var8 = var0.getValue();

         for (int var9 = 0; var9 < var8.length; var9++) {
            ResistanceModifier var10 = var8[var9];
            if (var10.getCalculationType() == ResistanceModifier.ResistanceCalculationType.FLAT) {
               var7.flatModifier = var7.flatModifier + var10.getAmount();
            } else {
               var7.multiplierModifier = var7.multiplierModifier + var10.getAmount();
            }
         }

         var7.flatModifier += (float)var5;
         DamageCause var13 = var0.getKey();
         if (var13 != null && var13.getInherits() != null) {
            var7.inheritedParentId = DamageCause.getAssetMap().getAsset(var13.getInherits());
         }

         if (var3 && var4) {
            BrokenPenalties var14 = var1.getGameplayConfig().getItemDurabilityConfig().getBrokenPenalties();
            double var11 = var14.getWeapon(0.0);
            var7.flatModifier *= (float)(1.0 - var11);
            var7.multiplierModifier *= (float)(1.0 - var11);
         }
      }

      class="kw">private class="kw">static void addResistanceModifiersFromEntityEffects(
         Map<DamageCause, DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers> var0, EffectControllerComponent var1
      ) {
         if (var1 != null) {
            IntIterator var2 = var1.getActiveEffects().keySet().iterator();

            while (var2.hasNext()) {
               int var3 = (Integer)var2.next();
               EntityEffect var4 = EntityEffect.getAssetMap().getAsset(var3);
               if (var4 != null) {
                  Map var5 = var4.getDamageResistanceValues();
                  if (var5 != null && !var5.isEmpty()) {
                     for (Entry var7 : var5.entrySet()) {
                        DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers var8 = var0.computeIfAbsent(
                           var7.getKey(), var0x -> new DamageSystems.ArmorDamageReduction.ArmorResistanceModifiers()
                        );

                        for (ResistanceModifier var12 : var7.getValue()) {
                           if (var12.getCalculationType() == ResistanceModifier.ResistanceCalculationType.FLAT) {
                              var8.flatModifier = var8.flatModifier + var12.getAmount();
                           } else if (var12.getCalculationType() == ResistanceModifier.ResistanceCalculationType.PERCENT) {
                              var8.multiplierModifier = var8.multiplierModifier + var12.getAmount();
                           }
                        }
                     }
                  }
               }
            }
         }
      }

      class="kw">public class="kw">static class ArmorResistanceModifiers {
         class="kw">public float flatModifier;
         class="kw">public float multiplierModifier;
         @Nullable
         class="kw">public DamageCause inheritedParentId;

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

   @Deprecated
   class="kw">public class="kw">static class ArmorKnockbackReduction class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         AllLegacyLivingEntityTypesQuery.INSTANCE,
         InventoryComponent.Armor.getComponentType(),
         DamageDataComponent.getComponentType(),
         TRANSFORM_COMPONENT_TYPE
      );

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
      }

      class="kw">public void handleInternal(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         InventoryComponent.Armor var6 = var2.getComponent(var1, InventoryComponent.Armor.getComponentType());
         assert var6 != null;
         ItemContainer var7 = var6.getInventory();
         if (var7 != null) {
            KnockbackComponent var8 = var5.getIfPresentMetaObject(Damage.KNOCKBACK_COMPONENT);
            if (var8 != null) {
               float var9 = 0.0F;

               for (short var10 = 0; var10 < var7.getCapacity(); var10++) {
                  ItemStack var11 = var7.getItemStack(var10);
                  if (var11 != null && !var11.isEmpty()) {
                     Item var12 = var11.getItem();
                     ItemArmor var13 = var12.getArmor();
                     if (var13 != null) {
                        Map var14 = var13.getKnockbackResistances();
                        if (var14 != null) {
                           DamageCause var15 = var5.getCause();
                           var9 += var14.get(var15);
                        }
                     }
                  }
               }

               var8.addModifier(Math.max(1.0F - var9, 0.0F));
            }
         }
      }
   }

   class="kw">public class="kw">static class BreathingSystem class="kw">extends DelayedEntitySystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         BreathingComponent.getComponentType(), TransformComponent.getComponentType(), ModelComponent.getComponentType()
      );

      class="kw">public BreathingSystem() {
         super(1.0F);
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getGatherDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         Ref var6 = var3.getReferenceTo(var2);
         BreathingComponent var7 = var3.getComponent(var2, BreathingComponent.getComponentType());
         assert var7 != null;
         CachedStatsComponent var8 = var3.getComponent(var2, CachedStatsComponent.getComponentType());
         boolean var9 = var3.getArchetype().contains(Invulnerable.getComponentType());
         EntityUtils.processEntityBreathing(var6, var7, var8, var9, false, var5);
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return false;
      }
   }

   class="kw">public class="kw">static class CanBreathe class="kw">extends DelayedEntitySystem<EntityStore> {
      class="kw">private class="kw">static class="kw">final float DAMAGE_AMOUNT_DROWNING = 10.0F;
      class="kw">private class="kw">static class="kw">final float DAMAGE_AMOUNT_SUFFOCATION = 20.0F;
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(BreathingComponent.getComponentType(), EntityStatMap.getComponentType());

      class="kw">public CanBreathe() {
         super(1.0F);
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getGatherDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return Set.of(new SystemDependency<>(Order.AFTER, DamageSystems.BreathingSystem.class));
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         BreathingComponent var6 = var3.getComponent(var2, BreathingComponent.getComponentType());
         assert var6 != null;
         if (var6.isSuffocating()) {
            EntityStatMap var7 = var3.getComponent(var2, EntityStatMap.getComponentType());
            assert var7 != null;
            EntityStatValue var8 = var7.get(DefaultEntityStatTypes.getOxygen());
            if (var8 != null && !(var8.get() > var8.getMin())) {
               Damage var9;
               if (var6.getLastFluidId() != 0) {
                  assert DamageCause.DROWNING != null;
                  var9 = new Damage(Damage.NULL_SOURCE, DamageCause.DROWNING, 10.0F);
               } else {
                  assert DamageCause.SUFFOCATION != null;
                  var9 = new Damage(Damage.NULL_SOURCE, DamageCause.SUFFOCATION, 20.0F);
               }

               DamageSystems.executeDamage(var2, var3, var5, var9);
            }
         }
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return false;
      }
   }

   class="kw">public class="kw">static class DamageArmor class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = AllLegacyLivingEntityTypesQuery.INSTANCE;

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         Ref var6 = var2.getReferenceTo(var1);
         DamageCause var7 = var5.getCause();
         if (var7.isDurabilityLoss()) {
            InventoryComponent.Armor var8 = var4.getComponent(var6, InventoryComponent.Armor.getComponentType());
            if (var8 != null) {
               ItemContainer var9 = var8.getInventory();
               ShortArrayList var10 = new ShortArrayList();
               var9.forEachWithMeta((var0, var1x, var2x) -> {
                  if (!var1x.isBroken()) {
                     var2x.add(var0);
                  }
               }, var10);
               if (!var10.isEmpty()) {
                  short var11 = var10.getShort(RandomExtra.randomRange(var10.size()));
                  ItemUtils.decreaseItemStackDurability(var6, var9.getItemStack(var11), -3, var11, var4);
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class DamageAttackerTool class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(AllLegacyLivingEntityTypesQuery.INSTANCE, InventoryComponent.Hotbar.getComponentType());

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         if (var5.getCause().isDurabilityLoss() && var5.getSource() class="kw">instanceof Damage.EntitySource var6) {
            Ref var11 = var6.getRef();
            if (var11.isValid()) {
               InventoryComponent.Hotbar var8 = var4.getComponent(var11, InventoryComponent.Hotbar.getComponentType());
               if (var8 != null) {
                  byte var9 = var8.getActiveSlot();
                  if (var9 != -1) {
                     ItemStack var10 = InventoryComponent.getItemInHand(var4, var11);
                     ItemUtils.decreaseItemStackDurability(var11, var10, -1, var9, var4);
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class DamageStamina class="kw">extends DamageEventSystem class="kw">implements EntityStatsSystems.StatModifyingSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(DamageDataComponent.getComponentType(), EntityStatMap.getComponentType());

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
      }

      class="kw">public void handleInternal(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         EntityStatMap var6 = var2.getComponent(var1, EntityStatMap.getComponentType());
         assert var6 != null;
         DamageDataComponent var7 = var2.getComponent(var1, DamageDataComponent.getComponentType());
         assert var7 != null;
         if (var7.getCurrentWielding() != null) {
            WieldingInteraction.StaminaCost var8 = var7.getCurrentWielding().getStaminaCost();
            if (var8 != null) {
               Boolean var9 = var5.getMetaStore().getIfPresentMetaObject(Damage.BLOCKED);
               if (var9 != null && var9) {
                  float var10 = var8.computeStaminaAmountToConsume(var5.getInitialAmount(), var6);
                  Float var11 = var5.getIfPresentMetaObject(Damage.STAMINA_DRAIN_MULTIPLIER);
                  if (var11 != null) {
                     var10 *= var11;
                  }

                  var6.subtractStatValue(DefaultEntityStatTypes.getStamina(), var10);
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class EntityUIEvents class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, EntityTrackerSystems.Visible> visibleComponentType = EntityModule.get().getVisibleComponentType();
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, UIComponentList> uiComponentListComponentType = EntityUIModule.get().getUIComponentListType();
      @Nonnull
      class="kw">private class="kw">final Query<EntityStore> query = Query.and(this.visibleComponentType, this.uiComponentListComponentType);

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return this.query;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         if (!(var5.getAmount() <= 0.0F)) {
            if (var5.getSource() class="kw">instanceof Damage.EntitySource var6) {
               Ref var11 = var6.getRef();
               if (var11.isValid()) {
                  PlayerRef var8 = var4.getComponent(var11, PlayerRef.getComponentType());
                  if (var8 != null && var8.isValid()) {
                     EntityTrackerSystems.EntityViewer var9 = var4.getComponent(var11, EntityTrackerSystems.EntityViewer.getComponentType());
                     if (var9 != null) {
                        Float var10 = var5.getIfPresentMetaObject(Damage.HIT_ANGLE);
                        queueUpdateFor(var2.getReferenceTo(var1), var5.getAmount(), var10, var9);
                     }
                  }
               }
            }
         }
      }

      class="kw">private class="kw">static void queueUpdateFor(@Nonnull Ref<EntityStore> var0, float var1, @Nullable Float var2, @Nonnull EntityTrackerSystems.EntityViewer var3) {
         CombatTextUpdate var4 = new CombatTextUpdate(var2 == null ? 0.0F : var2, Integer.toString((int)Math.floor(var1)));
         var3.queueUpdate(var0, var4);
      }
   }

   class="kw">public class="kw">static class FallDamageNPCs class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">static class="kw">final float CURVE_MODIFIER = 0.58F;
      class="kw">static class="kw">final float CURVE_MULTIPLIER = 2.0F;
      class="kw">public class="kw">static class="kw">final double MIN_DAMAGE = 10.0;

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getGatherDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return DamageSystems.NPCS_QUERY;
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         World var4 = var3.getExternalData().getWorld();
         if (var4.getWorldConfig().isFallDamageEnabled()) {
            super.tick(var1, var2, var3);
         }
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         LivingEntity var6 = (LivingEntity)EntityUtils.getEntity(var2, var3);
         assert var6 != null;
         MovementStatesComponent var7 = var3.getComponent(var2, MovementStatesComponent.getComponentType());
         assert var7 != null;
         MovementStates var8 = var7.getMovementStates();
         if (var8.onGround && var6.getCurrentFallDistance() > 0.0) {
            Velocity var9 = var3.getComponent(var2, Velocity.getComponentType());
            assert var9 != null;
            double var10 = Math.abs(var9.getVelocity().y());
            World var12 = var5.getExternalData().getWorld();
            int var13 = var12.getGameplayConfig().getPlayerConfig().getMovementConfigIndex();
            MovementConfig var14 = MovementConfig.getAssetMap().getAsset(var13);
            float var15 = var14.getMinFallSpeedToEngageRoll();
            if (var10 > var15 && !var8.inFluid) {
               EntityStatMap var16 = var3.getComponent(var2, EntityStatMap.getComponentType());
               assert var16 != null;
               double var17 = Math.pow(0.58F * (var10 - var15), 2.0) + 10.0;
               EntityStatValue var19 = var16.get(DefaultEntityStatTypes.getHealth());
               assert var19 != null;
               float var20 = var19.getMax();
               double var21 = var20 / 100.0;
               int var23 = (int)Math.floor(var21 * var17);
               if (var8.rolling) {
                  if (var10 <= var14.getMaxFallSpeedRollFullMitigation()) {
                     var23 = 0;
                  } else if (var10 <= var14.getMaxFallSpeedToEngageRoll()) {
                     var23 = (int)(var23 * (1.0 - var14.getFallDamagePartialMitigationPercent() / 100.0));
                  }
               }

               if (var23 > 0) {
                  assert DamageCause.FALL != null;
                  Damage var24 = new Damage(Damage.NULL_SOURCE, DamageCause.FALL, var23);
                  DamageSystems.executeDamage(var2, var3, var5, var24);
               }
            }

            var6.setCurrentFallDistance(0.0);
         }
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class FallDamagePlayers class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">static class="kw">final float CURVE_MODIFIER = 0.58F;
      class="kw">static class="kw">final float CURVE_MULTIPLIER = 2.0F;
      class="kw">public class="kw">static class="kw">final double MIN_DAMAGE = 10.0;
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         EntityStatMap.getComponentType(),
         MovementStatesComponent.getComponentType(),
         EntityModule.get().getPlayerComponentType(),
         PlayerInput.getComponentType()
      );
      @Nonnull
      class="kw">private class="kw">static class="kw">final Set<Dependency<EntityStore>> DEPENDENCIES = Set.of(new SystemDependency<>(Order.BEFORE, PlayerSystems.ProcessPlayerInput.class));

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getGatherDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      @Nonnull
      @Override
      class="kw">public Set<Dependency<EntityStore>> getDependencies() {
         class="kw">return DEPENDENCIES;
      }

      @Override
      class="kw">public void tick(float var1, int var2, @Nonnull Store<EntityStore> var3) {
         World var4 = var3.getExternalData().getWorld();
         if (var4.getWorldConfig().isFallDamageEnabled()) {
            super.tick(var1, var2, var3);
         }
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         PlayerInput var6 = var3.getComponent(var2, PlayerInput.getComponentType());
         assert var6 != null;
         Velocity var7 = var3.getComponent(var2, Velocity.getComponentType());
         assert var7 != null;
         double var8 = Math.abs(var7.getClientVelocity().y());
         World var10 = var5.getExternalData().getWorld();
         PlayerConfig var11 = var10.getGameplayConfig().getPlayerConfig();
         List var12 = var6.getMovementUpdateQueue();

         for (int var13 = 0; var13 < var12.size(); var13++) {
            PlayerInput.InputUpdate var14 = var12.get(var13);
            class="kw">switch (var14) {
               case PlayerInput.SetClientVelocity var17:
                  var8 = Math.abs(var17.getVelocity().y);
                  break;
               case PlayerInput.SetMovementStates var18:
                  Player var19 = var3.getComponent(var2, Player.getComponentType());
                  assert var19 != null;
                  if (var18.movementStates().onGround && var19.getCurrentFallDistance() > 0.0) {
                     int var20 = var11.getMovementConfigIndex();
                     MovementConfig var21 = MovementConfig.getAssetMap().getAsset(var20);
                     float var22 = var21.getMinFallSpeedToEngageRoll();
                     if (var8 > var22 && !var18.movementStates().inFluid) {
                        EntityStatMap var23 = var3.getComponent(var2, EntityStatMap.getComponentType());
                        assert var23 != null;
                        double var24 = Math.pow(0.58F * (var8 - var22), 2.0) + 10.0;
                        EntityStatValue var26 = var23.get(DefaultEntityStatTypes.getHealth());
                        assert var26 != null;
                        float var27 = var26.getMax();
                        double var28 = var27 / 100.0;
                        int var30 = (int)Math.floor(var28 * var24);
                        if (var18.movementStates().rolling) {
                           if (var8 <= var21.getMaxFallSpeedRollFullMitigation()) {
                              var30 = 0;
                           } else if (var8 <= var21.getMaxFallSpeedToEngageRoll()) {
                              var30 = (int)(var30 * (1.0 - var21.getFallDamagePartialMitigationPercent() / 100.0));
                           }
                        }

                        if (var30 > 0) {
                           assert DamageCause.FALL != null;
                           Damage var31 = new Damage(Damage.NULL_SOURCE, DamageCause.FALL, var30);
                           DamageSystems.executeDamage(var2, var3, var5, var31);
                        }
                     }

                     var19.setCurrentFallDistance(0.0);
                  }
                  break;
               class="kw">default:
            }
         }
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class FilterNPCWorldConfig class="kw">extends DamageEventSystem {
      class="kw">public FilterNPCWorldConfig() {
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return DamageSystems.NPCS_QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         World var6 = var3.getExternalData().getWorld();
         GameplayConfig var7 = var6.getGameplayConfig();
         if (var7.getCombatConfig().isNpcIncomingDamageDisabled()) {
            var5.setCancelled(true);
            Ref var8 = var2.getReferenceTo(var1);
            var4.tryRemoveComponent(var8, KnockbackComponent.getComponentType());
         }
      }
   }

   class="kw">public class="kw">static class FilterPlayerWorldConfig class="kw">extends DamageEventSystem {
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(AllLegacyLivingEntityTypesQuery.INSTANCE, Player.getComponentType());

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nullable
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         World var6 = var3.getExternalData().getWorld();
         GameplayConfig var7 = var6.getGameplayConfig();
         if (var7.getCombatConfig().isPlayerIncomingDamageDisabled()) {
            var5.setCancelled(true);
            Ref var8 = var2.getReferenceTo(var1);
            var4.tryRemoveComponent(var8, KnockbackComponent.getComponentType());
         }
      }
   }

   class="kw">public class="kw">static class FilterUnkillable class="kw">extends DamageEventSystem {
      class="kw">public class="kw">static boolean CAUSE_DESYNC;
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = AllLegacyLivingEntityTypesQuery.INSTANCE;

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         EffectControllerComponent var6 = var2.getComponent(var1, EffectControllerComponent.getComponentType());
         if (var6 != null && var6.isInvulnerable()) {
            var5.setCancelled(true);
         }

         Archetype var7 = var2.getArchetype();
         boolean var8 = var7.contains(DeathComponent.getComponentType());
         boolean var9 = var7.contains(Invulnerable.getComponentType());
         boolean var10 = var7.contains(Intangible.getComponentType());
         if (var8 || var9 || var10 || CAUSE_DESYNC) {
            var5.setCancelled(true);
         }
      }
   }

   @Deprecated
   class="kw">public class="kw">static class HackKnockbackValues class="kw">extends EntityTickingSystem<EntityStore> {
      class="kw">public class="kw">static float PLAYER_KNOCKBACK_SCALE = 25.0F;
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(AllLegacyLivingEntityTypesQuery.INSTANCE, KnockbackComponent.getComponentType());

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         KnockbackComponent var6 = var3.getComponent(var2, KnockbackComponent.getComponentType());
         assert var6 != null;
         if (var6.getVelocityConfig() == null || SplitVelocity.SHOULD_MODIFY_VELOCITY) {
            Vector3d var7 = var6.getVelocity();
            var7.x = var7.x * PLAYER_KNOCKBACK_SCALE;
            var7.z = var7.z * PLAYER_KNOCKBACK_SCALE;
            var6.setVelocity(var7);
         }
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class HitAnimation class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(Query.not(DeathComponent.getComponentType()), MovementStatesComponent.getComponentType());

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         ModelComponent var6 = var2.getComponent(var1, ModelComponent.getComponentType());
         Model var7 = var6 != null ? var6.getModel() : null;
         MovementStatesComponent var8 = var2.getComponent(var1, MovementStatesComponent.getComponentType());
         assert var8 != null;
         MovementStates var9 = var8.getMovementStates();
         if (!(var5.getAmount() <= 0.0F)) {
            String[] var10 = Entity.DefaultAnimations.getHurtAnimationIds(var9, var5.getCause());
            if (var7 != null) {
               String var11 = var7.getFirstBoundAnimationId(var10);
               if (var11 != null) {
                  AnimationUtils.playAnimation(var2.getReferenceTo(var1), AnimationSlot.Status, var11, true, var4);
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class InvulnerableBreathing class="kw">extends RefChangeSystem<EntityStore, Invulnerable> {
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, Invulnerable> invulnerableComponentType;
      @Nonnull
      class="kw">private class="kw">final ComponentType<EntityStore, BreathingComponent> breathingComponentType;

      class="kw">public InvulnerableBreathing(@Nonnull ComponentType<EntityStore, Invulnerable> var1, @Nonnull ComponentType<EntityStore, BreathingComponent> var2) {
         this.invulnerableComponentType = var1;
         this.breathingComponentType = var2;
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Query.and(this.invulnerableComponentType, this.breathingComponentType);
      }

      @Nonnull
      @Override
      class="kw">public ComponentType<EntityStore, Invulnerable> componentType() {
         class="kw">return this.invulnerableComponentType;
      }

      class="kw">public void onComponentAdded(
         @Nonnull Ref<EntityStore> var1, @Nonnull Invulnerable var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         BreathingComponent var5 = var4.getComponent(var1, BreathingComponent.getComponentType());
         assert var5 != null;
         CachedStatsComponent var6 = var4.getComponent(var1, CachedStatsComponent.getComponentType());
         EntityUtils.processEntityBreathing(var1, var5, var6, true, true, var4);
      }

      class="kw">public void onComponentSet(
         @Nonnull Ref<EntityStore> var1,
         Invulnerable var2,
         @Nonnull Invulnerable var3,
         @Nonnull Store<EntityStore> var4,
         @Nonnull CommandBuffer<EntityStore> var5
      ) {
         BreathingComponent var6 = var5.getComponent(var1, BreathingComponent.getComponentType());
         assert var6 != null;
         CachedStatsComponent var7 = var5.getComponent(var1, CachedStatsComponent.getComponentType());
         EntityUtils.processEntityBreathing(var1, var6, var7, true, true, var5);
      }

      class="kw">public void onComponentRemoved(
         @Nonnull Ref<EntityStore> var1, @Nonnull Invulnerable var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4
      ) {
         BreathingComponent var5 = var4.getComponent(var1, BreathingComponent.getComponentType());
         assert var5 != null;
         CachedStatsComponent var6 = var4.getComponent(var1, CachedStatsComponent.getComponentType());
         EntityUtils.processEntityBreathing(var1, var5, var6, false, true, var4);
      }
   }

   class="kw">public class="kw">static class OutOfWorldDamage class="kw">extends DelayedEntitySystem<EntityStore> {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();

      class="kw">public OutOfWorldDamage() {
         super(1.0F);
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getGatherDamageGroup();
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return TRANSFORM_COMPONENT_TYPE;
      }

      @Override
      class="kw">public void tick(
         float var1, int var2, @Nonnull ArchetypeChunk<EntityStore> var3, @Nonnull Store<EntityStore> var4, @Nonnull CommandBuffer<EntityStore> var5
      ) {
         TransformComponent var6 = var3.getComponent(var2, TRANSFORM_COMPONENT_TYPE);
         assert var6 != null;
         double var7 = var6.getPosition().y();
         if (!(var7 >= 0.0)) {
            boolean var9 = var7 < -32.0;
            Damage var10 = new Damage(Damage.NULL_SOURCE, DamageCause.OUT_OF_WORLD, var9 ? 2.1474836E9F : 50.0F);
            if (var9) {
               DeathComponent.tryAddComponent(var5, var3.getReferenceTo(var2), var10);
            } else {
               DamageSystems.executeDamage(var2, var3, var5, var10);
            }
         }
      }

      @Override
      class="kw">public boolean isParallel(int var1, int var2) {
         class="kw">return EntityTickingSystem.maybeUseParallel(var1, var2);
      }
   }

   class="kw">public class="kw">static class PlayerDamageFilterSystem class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Player.getComponentType();

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         World var6 = var3.getExternalData().getWorld();
         Player var7 = var2.getComponent(var1, Player.getComponentType());
         assert var7 != null;
         if (var7.hasSpawnProtection()) {
            var5.setCancelled(true);
         } else {
            if (!var6.getWorldConfig().isPvpEnabled() && var5.getSource() class="kw">instanceof Damage.EntitySource var8) {
               Ref var10 = var8.getRef();
               if (var10.isValid() && var4.getComponent(var10, Player.getComponentType()) != null) {
                  var5.setCancelled(true);
                  class="kw">return;
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class PlayerHitIndicators class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = PlayerRef.getComponentType();

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         PlayerRef var6 = var2.getComponent(var1, PlayerRef.getComponentType());
         assert var6 != null;
         if (var5.getSource() class="kw">instanceof Damage.EntitySource var7) {
            Ref var12 = var7.getRef();
            if (var12.isValid()) {
               DamageCause var9 = var5.getCause();
               if (var9 != null) {
                  TransformComponent var10 = var4.getComponent(var12, TRANSFORM_COMPONENT_TYPE);
                  if (var10 != null) {
                     Vector3d var11 = var10.getPosition();
                     var6.getPacketHandler()
                        .writeNoCache(
                           new DamageInfo(new com.hypixel.hytale.protocol.Vector3d(var11.x(), var11.y(), var11.z()), var5.getAmount(), var9.toPacket())
                        );
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class RecordLastCombat class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, DamageDataComponent> DAMAGE_DATA_COMPONENT_TYPE = DamageDataComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final ResourceType<EntityStore, TimeResource> TIME_RESOURCE_TYPE = TimeResource.getResourceType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = DAMAGE_DATA_COMPONENT_TYPE;

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

      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         DamageDataComponent var6 = var2.getComponent(var1, DAMAGE_DATA_COMPONENT_TYPE);
         assert var6 != null;
         Instant var7 = var3.getResource(TIME_RESOURCE_TYPE).getNow();
         var6.setLastCombatAction(var7);
         if (var5.getSource() class="kw">instanceof Damage.EntitySource var8) {
            Ref var11 = var8.getRef();
            if (!var11.isValid()) {
               class="kw">return;
            }

            DamageDataComponent var10 = var3.getComponent(var11, DAMAGE_DATA_COMPONENT_TYPE);
            if (var10 != null) {
               var10.setLastCombatAction(var7);
            }
         }
      }

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }
   }

   class="kw">public class="kw">static class ReticleEvents class="kw">extends DamageEventSystem {
      class="kw">private class="kw">static class="kw">final int EVENT_ON_HIT_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("OnHit");
      class="kw">private class="kw">static class="kw">final int EVENT_ON_KILL_TAG_INDEX = AssetRegistry.getOrCreateTagIndex("OnKill");
      class="kw">private class="kw">static class="kw">final ReticleEvent ON_HIT = new ReticleEvent(EVENT_ON_HIT_TAG_INDEX);
      class="kw">private class="kw">static class="kw">final ReticleEvent ON_KILL = new ReticleEvent(EVENT_ON_KILL_TAG_INDEX);

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return Archetype.empty();
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         boolean var6 = var2.getArchetype().contains(DeathComponent.getComponentType());
         if (!(var5.getAmount() <= 0.0F)) {
            if (var5.getSource() class="kw">instanceof Damage.EntitySource var7) {
               Ref var10 = var7.getRef();
               if (var10.isValid()) {
                  PlayerRef var9 = var4.getComponent(var10, PlayerRef.getComponentType());
                  if (var9 != null && var9.isValid()) {
                     var9.getPacketHandler().writeNoCache(var6 ? ON_KILL : ON_HIT);
                  }
               }
            }
         }
      }
   }

   class="kw">public class="kw">static class TrackLastDamage class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, DamageDataComponent> DAMAGE_DATA_COMPONENT_TYPE = DamageDataComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(AllLegacyLivingEntityTypesQuery.INSTANCE, DAMAGE_DATA_COMPONENT_TYPE);

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getInspectDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         TimeResource var6 = var4.getResource(TimeResource.getResourceType());
         DamageDataComponent var7 = var2.getComponent(var1, DAMAGE_DATA_COMPONENT_TYPE);
         assert var7 != null;
         var7.setLastDamageTime(var6.getNow());
      }
   }

   @Deprecated
   class="kw">public class="kw">static class WieldingDamageReduction class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         AllLegacyLivingEntityTypesQuery.INSTANCE,
         DamageDataComponent.getComponentType(),
         InteractionModule.get().getInteractionManagerComponent(),
         TRANSFORM_COMPONENT_TYPE
      );

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         DamageDataComponent var6 = var2.getComponent(var1, DamageDataComponent.getComponentType());
         assert var6 != null;
         InteractionManager var7 = var2.getComponent(var1, InteractionModule.get().getInteractionManagerComponent());
         assert var7 != null;
         WieldingInteraction var8 = var6.getCurrentWielding();
         if (var8 != null) {
            WieldingInteraction.AngledWielding var9 = var8.getAngledWielding();
            Ref var10 = var2.getReferenceTo(var1);
            TransformComponent var11 = var2.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
            assert var11 != null;
            Vector3d var12 = var11.getPosition();
            Rotation3f var13 = var11.getRotation();
            if (var5.getSource() class="kw">instanceof Damage.EntitySource var14) {
               Ref var27 = var14.getRef();
               if (var27.isValid()) {
                  TransformComponent var16 = var4.getComponent(var27, TRANSFORM_COMPONENT_TYPE);
                  if (var16 != null) {
                     int var17 = var5.getDamageCauseIndex();
                     float var18 = 1.0F;
                     float var19 = 1.0F;
                     String var20 = null;
                     Int2FloatMap var21 = var8.getDamageModifiers();
                     if (!var21.isEmpty()) {
                        var18 = var21.getOrDefault(var17, 1.0F);
                        DamageEffects var22 = var8.getBlockedEffects();
                        if (var22 != null) {
                           var22.addToDamage(var5);
                        }

                        String var23 = var8.getBlockedInteractions();
                        if (var23 != null) {
                           var20 = var23;
                        }

                        var5.putMetaObject(Damage.BLOCKED, Boolean.TRUE);
                     }

                     if (var9 != null) {
                        Int2FloatMap var28 = var9.getDamageModifiers();
                        if (var28.containsKey(var17)) {
                           Vector3d var30 = var16.getPosition();
                           float var24 = TrigMathUtil.atan2(var30.x - var12.x, var30.z - var12.z);
                           var24 = MathUtil.wrapAngle(var24 + (float) Math.PI - var13.yaw());
                           if (Math.abs(MathUtil.compareAngle(var24, var9.getAngleRad())) < var9.getAngleDistanceRad()) {
                              var19 = var28.getOrDefault(var17, 1.0F);
                              DamageEffects var25 = var8.getBlockedEffects();
                              if (var25 != null) {
                                 var25.addToDamage(var5);
                              }

                              String var26 = var8.getBlockedInteractions();
                              if (var26 != null) {
                                 var20 = var26;
                              }

                              var5.putMetaObject(Damage.BLOCKED, Boolean.TRUE);
                           }
                        }
                     }

                     var5.setAmount(var5.getAmount() * var18 * var19);
                     if (var20 != null) {
                        NetworkId var29 = var4.getComponent(var27, NetworkId.getComponentType());
                        if (var29 != null) {
                           InteractionContext var31 = InteractionContext.forInteraction(var7, var10, InteractionType.Wielding, var4);
                           DynamicMetaStore var33 = var31.getMetaStore();
                           var33.putMetaObject(Interaction.TARGET_ENTITY, var27);
                           var33.putMetaObject(Interaction.DAMAGE, var5);
                           int var34 = var29.getId();
                           InteractionChain var35 = var7.initChain(
                              InteractionType.Wielding, var31, RootInteraction.getRootInteractionOrUnknown(var20), var34, null, false
                           );
                           var7.queueExecuteChain(var35);
                        }
                     }
                  }
               }
            }
         }
      }
   }

   @Deprecated
   class="kw">public class="kw">static class WieldingKnockbackReduction class="kw">extends DamageEventSystem {
      @Nonnull
      class="kw">private class="kw">static class="kw">final ComponentType<EntityStore, TransformComponent> TRANSFORM_COMPONENT_TYPE = TransformComponent.getComponentType();
      @Nonnull
      class="kw">private class="kw">static class="kw">final Query<EntityStore> QUERY = Query.and(
         AllLegacyLivingEntityTypesQuery.INSTANCE, DamageDataComponent.getComponentType(), TRANSFORM_COMPONENT_TYPE
      );

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

      @Nullable
      @Override
      class="kw">public SystemGroup<EntityStore> getGroup() {
         class="kw">return DamageModule.get().getFilterDamageGroup();
      }

      @Nonnull
      @Override
      class="kw">public Query<EntityStore> getQuery() {
         class="kw">return QUERY;
      }

      class="kw">public void handle(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
      }

      class="kw">public void handleInternal(
         int var1, @Nonnull ArchetypeChunk<EntityStore> var2, @Nonnull Store<EntityStore> var3, @Nonnull CommandBuffer<EntityStore> var4, @Nonnull Damage var5
      ) {
         DamageDataComponent var6 = var2.getComponent(var1, DamageDataComponent.getComponentType());
         assert var6 != null;
         TransformComponent var7 = var2.getComponent(var1, TRANSFORM_COMPONENT_TYPE);
         assert var7 != null;
         WieldingInteraction var8 = var6.getCurrentWielding();
         if (var8 != null) {
            Int2DoubleMap var9 = var8.getKnockbackModifiers();
            WieldingInteraction.AngledWielding var10 = var8.getAngledWielding();
            KnockbackComponent var11 = var5.getIfPresentMetaObject(Damage.KNOCKBACK_COMPONENT);
            if (var11 != null) {
               if (var5.getSource() class="kw">instanceof Damage.EntitySource var12) {
                  Ref var24 = var12.getRef();
                  if (var24.isValid()) {
                     TransformComponent var14 = var4.getComponent(var24, TRANSFORM_COMPONENT_TYPE);
                     if (var14 != null) {
                        int var15 = var5.getDamageCauseIndex();
                        double var16 = 1.0;
                        double var18 = var9.getOrDefault(var15, 1.0);
                        if (var10 != null) {
                           Int2DoubleMap var20 = var10.getKnockbackModifiers();
                           if (var20.containsKey(var15)) {
                              Vector3d var21 = var7.getPosition();
                              Vector3d var22 = var14.getPosition();
                              float var23 = TrigMathUtil.atan2(var22.x - var21.x, var22.z - var21.z);
                              var23 = MathUtil.wrapAngle(var23 + (float) Math.PI - var7.getRotation().yaw());
                              if (Math.abs(MathUtil.compareAngle(var23, var10.getAngleRad())) < var10.getAngleDistanceRad()) {
                                 var16 = var20.getOrDefault(var15, 1.0);
                              }
                           }
                        }

                        var11.addModifier(var18);
                        var11.addModifier(var16);
                     }
                  }
               }
            }
         }
      }
   }
}