DBotThePony — Сегодня, в 12:31

что

(closes #237)
This commit is contained in:
YuRaNnNzZZ 2023-03-11 12:55:55 +03:00
parent e2e256cf97
commit 45084e8fe0
Signed by: YuRaNnNzZZ
GPG Key ID: 5F71738C85A6006D

View File

@ -2,6 +2,10 @@ package ru.dbotthepony.mc.otm.item
import net.minecraft.ChatFormatting
import net.minecraft.network.chat.Component
import net.minecraft.world.entity.SlotAccess
import net.minecraft.world.entity.player.Player
import net.minecraft.world.inventory.ClickAction
import net.minecraft.world.inventory.Slot
import net.minecraft.world.item.Item
import net.minecraft.world.item.ItemStack
import net.minecraft.world.item.TooltipFlag
@ -73,6 +77,71 @@ class MatterDustItem : Item(Properties().stacksTo(64)), IMatterItem {
return matter(stack) >= ItemsConfig.MATTER_DUST_CAPACITY
}
override fun overrideStackedOnOther(
pStack: ItemStack,
pSlot: Slot,
pAction: ClickAction,
pPlayer: Player
): Boolean {
if (pStack.isEmpty || pStack.count > 1)
return super.overrideStackedOnOther(pStack, pSlot, pAction, pPlayer)
if (pAction == ClickAction.SECONDARY && pSlot.allowModification(pPlayer)) {
val matterHalf = getMatterValue(pStack)?.matter?.div(2) ?: return true
if (!pSlot.hasItem()) {
val halfStack = pStack.copyWithCount(1)
matter(halfStack, -addMatterValue(pStack, -matterHalf, pPlayer.level.isClientSide()))
pSlot.set(halfStack)
return true
}
}
return super.overrideStackedOnOther(pStack, pSlot, pAction, pPlayer)
}
override fun overrideOtherStackedOnMe(
pStack: ItemStack,
pOther: ItemStack,
pSlot: Slot,
pAction: ClickAction,
pPlayer: Player,
pAccess: SlotAccess
): Boolean {
if (pStack.isEmpty || pStack.count > 1)
return super.overrideStackedOnOther(pStack, pSlot, pAction, pPlayer)
if (pAction == ClickAction.SECONDARY && pSlot.allowModification(pPlayer)) {
val matterHalf = getMatterValue(pStack)?.matter?.div(2) ?: return true
if (pOther.isEmpty) {
val halfStack = pStack.copyWithCount(1)
matter(halfStack, -addMatterValue(pStack, -matterHalf, pPlayer.level.isClientSide()))
pAccess.set(halfStack)
return true
} else if (pOther.item is MatterDustItem && pOther.count == 1) {
val matterOther = getMatterValue(pOther)?.matter ?: return true
val diff = addMatterValue(pStack, matterOther, pPlayer.level.isClientSide())
if (matterOther - diff <= Decimal.ZERO) {
pOther.shrink(1)
} else {
matter(pStack, matterOther - diff)
}
return true
}
}
return super.overrideOtherStackedOnMe(pStack, pOther, pSlot, pAction, pPlayer, pAccess)
}
companion object {
private val DESC = TranslatableComponent("item.overdrive_that_matters.matter_dust.desc").withStyle(ChatFormatting.DARK_GRAY)
private val DESC2 = TranslatableComponent("item.overdrive_that_matters.matter_dust.desc2").withStyle(ChatFormatting.GRAY)