diff options
author | Jonas Gunz <himself@jonasgunz.de> | 2020-04-18 02:20:31 +0200 |
---|---|---|
committer | Jonas Gunz <himself@jonasgunz.de> | 2020-04-18 02:20:31 +0200 |
commit | 931f0f04e802d38926958dd4dc17ccad9867ab16 (patch) | |
tree | f91dc8c2068c69bb4e423b652aeb49af06c1ed58 /src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java | |
parent | d163af77f66ef998f3689e57fe58c8f125f626cb (diff) | |
download | parquet-931f0f04e802d38926958dd4dc17ccad9867ab16.tar.gz |
Made Cauldron usable with Dispenser
Buckets and Bottles can empty Dispenser,
Shulkerboxes can be Cleaned.
Diffstat (limited to 'src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java')
-rw-r--r-- | src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java | 54 |
1 files changed, 54 insertions, 0 deletions
diff --git a/src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java b/src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java new file mode 100644 index 0000000..20be74f --- /dev/null +++ b/src/main/java/re/jag/parquet/ShulkerPlacementDispenserBehavior.java @@ -0,0 +1,54 @@ +package re.jag.parquet; + +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.dispenser.BlockPlacementDispenserBehavior; +import net.minecraft.item.AutomaticItemPlacementContext; +import net.minecraft.item.BlockItem; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.stat.Stats; +import net.minecraft.util.ActionResult; +import net.minecraft.util.math.BlockPointer; +import net.minecraft.util.math.BlockPos; +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); + 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; + return itemStack5; + } + + //fail if cauldron empty + return stack; + } + } + } + + return super.dispenseSilently(pointer, stack); + } +} |