Use canreceive/extract

This commit is contained in:
DBotThePony 2023-01-14 14:32:39 +07:00
parent 87276e22ed
commit 35921a3a4b
Signed by: DBot
GPG Key ID: DCC23B5715498507
2 changed files with 14 additions and 9 deletions

View File

@ -6,6 +6,7 @@ import net.minecraft.world.item.ItemStack
import net.minecraftforge.common.ForgeHooks import net.minecraftforge.common.ForgeHooks
import net.minecraftforge.common.capabilities.ForgeCapabilities import net.minecraftforge.common.capabilities.ForgeCapabilities
import ru.dbotthepony.mc.otm.block.entity.ChemicalGeneratorBlockEntity import ru.dbotthepony.mc.otm.block.entity.ChemicalGeneratorBlockEntity
import ru.dbotthepony.mc.otm.core.ifPresentK
import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget import ru.dbotthepony.mc.otm.menu.widget.LevelGaugeWidget
import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget import ru.dbotthepony.mc.otm.menu.widget.ProgressGaugeWidget
import ru.dbotthepony.mc.otm.registry.MMenus import ru.dbotthepony.mc.otm.registry.MMenus
@ -16,20 +17,24 @@ class ChemicalGeneratorMenu @JvmOverloads constructor(id: Int, inv: Inventory, t
val container = tile?.container ?: SimpleContainer(3) val container = tile?.container ?: SimpleContainer(3)
val fuelSlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_INPUT) { val fuelSlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_INPUT) {
override fun mayPlace(p_40231_: ItemStack): Boolean { override fun mayPlace(itemStack: ItemStack): Boolean {
return ForgeHooks.getBurnTime(p_40231_, null) > 0 return ForgeHooks.getBurnTime(itemStack, null) > 0
} }
} }
val residueSlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_RESIDUE) { val residueSlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_RESIDUE) {
override fun mayPlace(p_40231_: ItemStack): Boolean { override fun mayPlace(itemStack: ItemStack): Boolean {
return false return false
} }
} }
val batterySlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_BATTERY) { val batterySlot = object : MatterySlot(container, ChemicalGeneratorBlockEntity.SLOT_BATTERY) {
override fun mayPlace(p_40231_: ItemStack): Boolean { override fun mayPlace(itemStack: ItemStack): Boolean {
return p_40231_.getCapability(ForgeCapabilities.ENERGY).isPresent itemStack.getCapability(ForgeCapabilities.ENERGY).ifPresentK {
return it.canReceive()
}
return false
} }
} }

View File

@ -24,14 +24,14 @@ class EnergyServoMenu @JvmOverloads constructor(
val container = tile?.container ?: SimpleContainer(2) val container = tile?.container ?: SimpleContainer(2)
dischargeSlot = object : MatterySlot(container, EnergyServoBlockEntity.SLOT_DISCHARGE) { dischargeSlot = object : MatterySlot(container, EnergyServoBlockEntity.SLOT_DISCHARGE) {
override fun mayPlace(p_40231_: ItemStack): Boolean { override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(p_40231_) && (p_40231_.energy?.let { it.extractEnergy(Int.MAX_VALUE, true) > 0 } ?: false) return super.mayPlace(itemStack) && (itemStack.energy?.canExtract() ?: false)
} }
} }
chargeSlot = object : MatterySlot(container, EnergyServoBlockEntity.SLOT_CHARGE) { chargeSlot = object : MatterySlot(container, EnergyServoBlockEntity.SLOT_CHARGE) {
override fun mayPlace(p_40231_: ItemStack): Boolean { override fun mayPlace(itemStack: ItemStack): Boolean {
return super.mayPlace(p_40231_) && (p_40231_.energy?.let { it.receiveEnergy(Int.MAX_VALUE, true) > 0 } ?: false) return super.mayPlace(itemStack) && (itemStack.energy?.canReceive() ?: false)
} }
} }