RepairItemInteraction class

Пакет: com.hypixel.hytale.server.core.entity.entities.player.pages.itemrepair

Файл: com/hypixel/hytale/server/core/entity/entities/player/pages/itemrepair/RepairItemInteraction.java

extends: ChoiceInteraction

Поля (15)

МодификаторыТипИмя
final ItemContext itemContext
double var11
double var13
var13
ItemContainer var15
short var16
ItemStack var17
ItemStackSlotTransaction var18
ItemStack var19
ItemStackSlotTransaction var20
Player var4
PageManager var5
ItemStack var6
double var7
double var9

Методы (2)

МодификаторыВозвратСигнатура
if if(var7 >= var13)
if if(var13 <= 10.0)

Исходный код

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

class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.component.Store;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.protocol.SoundCategory;
class="kw">import com.hypixel.hytale.protocol.packets.interface_.Page;
class="kw">import com.hypixel.hytale.server.core.Message;
class="kw">import com.hypixel.hytale.server.core.entity.entities.Player;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.PageManager;
class="kw">import com.hypixel.hytale.server.core.entity.entities.player.pages.choices.ChoiceInteraction;
class="kw">import com.hypixel.hytale.server.core.inventory.ItemContext;
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.inventory.container.SimpleItemContainer;
class="kw">import com.hypixel.hytale.server.core.inventory.transaction.ItemStackSlotTransaction;
class="kw">import com.hypixel.hytale.server.core.universe.PlayerRef;
class="kw">import com.hypixel.hytale.server.core.universe.world.SoundUtil;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import com.hypixel.hytale.server.core.util.TempAssetIdUtil;
class="kw">import javax.annotation.Nonnull;

class="kw">public class RepairItemInteraction class="kw">extends ChoiceInteraction {
   class="kw">protected class="kw">final ItemContext itemContext;
   class="kw">protected class="kw">final double repairPenalty;
   class="kw">protected class="kw">final ItemContext heldItemContext;

   class="kw">public RepairItemInteraction(ItemContext var1, double var2, ItemContext var4) {
      this.itemContext = var1;
      this.repairPenalty = var2;
      this.heldItemContext = var4;
   }

   @Override
   class="kw">public void run(@Nonnull Store<EntityStore> var1, @Nonnull Ref<EntityStore> var2, @Nonnull PlayerRef var3) {
      Player var4 = var1.getComponent(var2, Player.getComponentType());
      PageManager var5 = var4.getPageManager();
      ItemStack var6 = this.itemContext.getItemStack();
      double var7 = var6.getDurability();
      double var9 = var6.getMaxDurability();
      double var11 = 1.0 - var7 / var9;
      double var13 = MathUtil.floor(var9 - var6.getItem().getMaxDurability() * (this.repairPenalty * var11));
      if (var7 >= var13) {
         var3.sendMessage(Message.translation("server.general.repair.penaltyTooBig").color("#ff5555"));
         var5.setPage(var2, var1, Page.None);
      } else {
         if (var13 <= 10.0) {
            var13 = 10.0;
            var3.sendMessage(Message.translation("server.general.repair.tooLowDurability").color("#ff5555"));
         }

         ItemContainer var15 = this.heldItemContext.getContainer();
         short var16 = this.heldItemContext.getSlot();
         ItemStack var17 = this.heldItemContext.getItemStack();
         ItemStackSlotTransaction var18 = var15.removeItemStackFromSlot(var16, var17, 1);
         if (!var18.succeeded()) {
            var5.setPage(var2, var1, Page.None);
         } else {
            ItemStack var19 = var6.withRestoredDurability(var13);
            ItemStackSlotTransaction var20 = this.itemContext.getContainer().replaceItemStackInSlot(this.itemContext.getSlot(), var6, var19);
            if (!var20.succeeded()) {
               SimpleItemContainer.addOrDropItemStack(var1, var2, var15, var16, var17.withQuantity(1));
               var5.setPage(var2, var1, Page.None);
            } else {
               var3.sendMessage(Message.translation("server.general.repair.successful").param("itemName", var19.getDisplayName()));
               var5.setPage(var2, var1, Page.None);
               SoundUtil.playSoundEvent2d(var2, TempAssetIdUtil.getSoundEventIndex("SFX_Item_Repair"), SoundCategory.UI, var1);
            }
         }
      }
   }
}