53 lines
1.8 KiB
Kotlin
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
|
|
}
|
|
}
|
|
|
|
}
|