ChangeStatWithModifierInteraction class
Пакет: com.hypixel.hytale.server.core.modules.interaction.interaction.config.server
Файл: com/hypixel/hytale/server/core/modules/interaction/interaction/config/server/ChangeStatWithModifierInteraction.java
extends: ChangeStatBaseInteraction
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<ChangeStatWithModifierInteraction> |
CODEC |
|
float |
var14 |
|
float |
var15 |
|
|
var15 |
|
ItemStack |
var17 |
|
Item |
var18 |
|
Int2ObjectMap |
var19 |
|
StaticModifier |
var20 |
|
float |
var21 |
|
Ref |
var4 |
|
CommandBuffer |
var5 |
|
EntityStatMap |
var6 |
|
Int2FloatMap |
var7 |
|
InventoryComponent.Armor |
var8 |
|
ItemContainer |
var9 |
Методы (4)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
for for(short var16 = 0; var16 < var9.getCapacity() |
|
|
if if(var8 != null) |
|
|
if if(var19 != null) |
|
|
if if(var20 != null) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.modules.interaction.interaction.config.server;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.validation.Validators;
class="kw">import com.hypixel.hytale.component.CommandBuffer;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.protocol.InteractionType;
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.entity.InteractionContext;
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.ItemContainer;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.EntityStatMap;
class="kw">import com.hypixel.hytale.server.core.modules.entitystats.modifier.StaticModifier;
class="kw">import com.hypixel.hytale.server.core.modules.interaction.interaction.CooldownHandler;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2FloatOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import javax.annotation.Nonnull;
class="kw">public class ChangeStatWithModifierInteraction class="kw">extends ChangeStatBaseInteraction {
class="kw">public class="kw">static class="kw">final BuilderCodec<ChangeStatWithModifierInteraction> CODEC = BuilderCodec.builder(
ChangeStatWithModifierInteraction.class, ChangeStatWithModifierInteraction::new, ChangeStatBaseInteraction.CODEC
)
.documentation("Changes the given stats.")
.<ItemArmor.InteractionModifierId>append(
new KeyedCodec<>("InteractionModifierId", new EnumCodec<>(ItemArmor.InteractionModifierId.class)),
(var0, var1) -> var0.interactionModifierId = var1,
var0 -> var0.interactionModifierId
)
.addValidator(Validators.nonNull())
.add()
.build();
class="kw">protected ItemArmor.InteractionModifierId interactionModifierId;
class="kw">public ChangeStatWithModifierInteraction() {
}
@Override
class="kw">protected void firstRun(@Nonnull InteractionType var1, @Nonnull InteractionContext var2, @Nonnull CooldownHandler var3) {
Ref var4 = var2.getEntity();
CommandBuffer var5 = var2.getCommandBuffer();
assert var5 != null;
EntityStatMap var6 = var5.getComponent(var4, EntityStatMap.getComponentType());
assert var6 != null;
Int2FloatMap var7 = new Int2FloatOpenHashMap(this.entityStats);
InventoryComponent.Armor var8 = var5.getComponent(var4, InventoryComponent.Armor.getComponentType());
if (var8 != null) {
ItemContainer var9 = var8.getInventory();
for (int var13 : var7.keySet().toIntArray()) {
float var14 = 0.0F;
float var15 = 0.0F;
for (short var16 = 0; var16 < var9.getCapacity(); var16++) {
ItemStack var17 = var9.getItemStack(var16);
if (var17 != null && !var17.isEmpty()) {
Item var18 = var17.getItem();
if (var18 != null && var18.getArmor() != null) {
Int2ObjectMap var19 = var18.getArmor().getInteractionModifier(this.interactionModifierId.toString());
if (var19 != null) {
StaticModifier var20 = (StaticModifier)var19.get(var13);
if (var20 != null) {
if (var20.getCalculationType() == StaticModifier.CalculationType.ADDITIVE) {
var14 += var20.getAmount();
} else {
var15 = var20.getAmount();
}
}
}
}
}
}
float var21 = this.entityStats.get(var13);
var21 += var14;
var21 *= Math.max(0.0F, 1.0F - var15);
var7.replace(var13, var21);
}
}
var6.processStatChanges(EntityStatMap.Predictable.NONE, var7, this.valueType, this.changeStatBehaviour);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "ChangeStatWithModifierInteraction{interactionModifierId=" + this.interactionModifierId + "}" + super.toString();
}
}