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