ExtraHoppers/src/main/kotlin/net/shadowfacts/extrahoppers/block/gold/GoldHopperBlockEntity.kt

53 lines
1.8 KiB
Kotlin

package net.shadowfacts.extrahoppers.block.gold
import net.minecraft.block.Block
import net.minecraft.block.entity.Hopper
import net.minecraft.nbt.CompoundTag
import net.minecraft.util.math.Direction
import net.minecraft.util.shape.VoxelShape
import net.minecraft.util.shape.VoxelShapes
import net.shadowfacts.extrahoppers.block.base.BaseHopperBlock
import net.shadowfacts.extrahoppers.block.base.BaseHopperBlockEntity
import net.shadowfacts.extrahoppers.init.EHBlockEntities
/**
* @author shadowfacts
*/
open class GoldHopperBlockEntity(var inverted: Boolean): BaseHopperBlockEntity(
if (inverted) EHBlockEntities.INVERTED_GOLD_HOPPER else EHBlockEntities.GOLD_HOPPER
) {
companion object {
val INVERTED_INSIDE_SHAPE = Block.createCuboidShape(2.0, 5.0, 2.0, 14.0, 0.0, 14.0)
val INVERTED_BELOW_SHAPE = Block.createCuboidShape(0.0, 0.0, 0.0, 16.0, -16.0, 16.0)
val INVERTED_INPUT_AREA_SHAPE = VoxelShapes.union(INVERTED_INSIDE_SHAPE, INVERTED_BELOW_SHAPE)
}
override val inventorySize = 5
override val maxTransferCooldown = 4
override val facingProp = if (inverted) InvertedGoldHopperBlock.INVERTED_FACING else BaseHopperBlock.FACING
override val inputSide = if (inverted) Direction.DOWN else Direction.UP
@Deprecated("only used for deserializing")
constructor(): this(false)
override fun toTag(tag: CompoundTag): CompoundTag {
tag.putBoolean("inverted", inverted)
return super.toTag(tag)
}
override fun fromTag(tag: CompoundTag) {
super.fromTag(tag)
inverted = tag.getBoolean("inverted")
}
override fun getInputAreaShape(): VoxelShape {
return if (inverted) {
INVERTED_INPUT_AREA_SHAPE
} else {
Hopper.INPUT_AREA_SHAPE
}
}
}