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