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