diff options
Diffstat (limited to 'src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java')
-rw-r--r-- | src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java | 35 |
1 files changed, 20 insertions, 15 deletions
diff --git a/src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java b/src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java index a31ab3e..f326502 100644 --- a/src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java +++ b/src/main/java/re/jag/parquet/dispenser/PotionDispenserBehavior.java @@ -1,10 +1,8 @@ package re.jag.parquet.dispenser; -import net.minecraft.block.Block; -import net.minecraft.block.BlockState; -import net.minecraft.block.CauldronBlock; -import net.minecraft.block.DispenserBlock; +import net.minecraft.block.*; import net.minecraft.block.dispenser.FallibleItemDispenserBehavior; +import net.minecraft.entity.Entity; import net.minecraft.item.ItemStack; import net.minecraft.item.Items; import net.minecraft.potion.PotionUtil; @@ -13,28 +11,35 @@ import net.minecraft.util.math.BlockPointer; import net.minecraft.util.math.BlockPos; import net.minecraft.util.math.Direction; import net.minecraft.world.World; +import net.minecraft.world.event.GameEvent; public class PotionDispenserBehavior extends FallibleItemDispenserBehavior { public ItemStack dispenseSilently(BlockPointer pointer, ItemStack stack) { - //this.success = false; World world = pointer.getWorld(); - BlockPos block_pos = pointer.getBlockPos().offset((Direction)pointer.getBlockState().get(DispenserBlock.FACING)); + BlockPos block_pos = pointer.getPos().offset((Direction)pointer.getBlockState().get(DispenserBlock.FACING)); BlockState state = world.getBlockState(block_pos); Block block = state.getBlock(); if (PotionUtil.getPotion(stack) == Potions.WATER) { if (block instanceof CauldronBlock) { - int fill_level = state.get(CauldronBlock.LEVEL); - if(fill_level < 3) { - ((CauldronBlock)block).setLevel(world, block_pos, state, fill_level + 1); - //this.success = true; - this.setSuccess(true); - return new ItemStack(Items.GLASS_BOTTLE, 1); - } - return stack; + world.setBlockState(block_pos, Blocks.WATER_CAULDRON.getDefaultState()); + world.syncWorldEvent(1047, block_pos, 0); + world.emitGameEvent((Entity)null, GameEvent.FLUID_PLACE, block_pos); + + return new ItemStack(Items.GLASS_BOTTLE, 1); + + } else if (block instanceof LeveledCauldronBlock) { + if (((LeveledCauldronBlock) block).isFull(state)) + return stack; + + world.setBlockState(block_pos, (BlockState)state.with(LeveledCauldronBlock.LEVEL, (Integer)state.get(LeveledCauldronBlock.LEVEL) + 1)); + world.syncWorldEvent(1047, block_pos, 0); + this.setSuccess(true); } + return stack; } - return super.dispenseSilently(pointer, stack); + + return super.dispenseSilently(pointer, stack); } } |