diff options
Diffstat (limited to 'src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java')
-rw-r--r-- | src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java | 44 |
1 files changed, 18 insertions, 26 deletions
diff --git a/src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java b/src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java index 42c5f10..2671775 100644 --- a/src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java +++ b/src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java @@ -1,11 +1,6 @@ package re.jag.parquet.dispenser; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.Blocks; -import net.minecraft.block.CauldronBlock; -import net.minecraft.block.DispenserBlock; -import net.minecraft.block.ShulkerBoxBlock; +import net.minecraft.block.*; import net.minecraft.block.dispenser.BlockPlacementDispenserBehavior; import net.minecraft.item.BlockItem; import net.minecraft.item.Item; @@ -16,37 +11,34 @@ import net.minecraft.util.math.Direction; public class ShulkerPlacementDispenserBehavior extends BlockPlacementDispenserBehavior{ protected ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { - //this.success = false; - Item item = stack.getItem(); if (item instanceof BlockItem) { Direction direction = (Direction)pointer.getBlockState().get(DispenserBlock.FACING); - BlockPos block_pos = pointer.getBlockPos().offset(direction); + BlockPos block_pos = pointer.getPos().offset(direction); Block block = ((BlockItem)item).getBlock(); if (block instanceof ShulkerBoxBlock && !pointer.getWorld().isClient()) { BlockState state = pointer.getWorld().getBlockState(block_pos); - if (state.getBlock() instanceof CauldronBlock) { - int fill_level = state.get(CauldronBlock.LEVEL); - if (fill_level > 0) { - ItemStack itemStack5 = new ItemStack(Blocks.SHULKER_BOX, 1); - if (stack.hasTag()) { - itemStack5.setTag(stack.getTag().copy()); - } - ((CauldronBlock)state.getBlock()).setLevel(pointer.getWorld(), block_pos, state, fill_level - 1); - - //this.success = true; - this.setSuccess(true); - return itemStack5; + Block facing_block = state.getBlock(); + + if (facing_block instanceof LeveledCauldronBlock) { + /* TODO Check for WATER!!!!! */ + + ItemStack itemStack5 = new ItemStack(Blocks.SHULKER_BOX, 1); + + if (stack.hasNbt()) { + itemStack5.setNbt(stack.getNbt().copy()); } - - //fail if cauldron empty - return stack; - } + + LeveledCauldronBlock.decrementFluidLevel(state, pointer.getWorld(), block_pos); + + this.setSuccess(true); + return itemStack5; + } } } - return super.dispenseSilently(pointer, stack); + return super.dispenseSilently(pointer, stack); } } |