aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java')
-rw-r--r--src/main/java/re/jag/parquet/dispenser/ShulkerPlacementDispenserBehavior.java44
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);
}
}