--- ../src-base/minecraft/net/minecraft/block/BlockPumpkin.java +++ ../src-work/minecraft/net/minecraft/block/BlockPumpkin.java @@ -14,6 +14,12 @@ import net.minecraft.util.MathHelper; import net.minecraft.world.World; +// CraftBukkit start +import org.bukkit.craftbukkit.util.BlockStateListPopulator; +import org.bukkit.event.block.BlockRedstoneEvent; +import org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason; +// CraftBukkit end + public class BlockPumpkin extends BlockDirectional { private boolean field_149985_a; @@ -45,15 +51,18 @@ { if (!p_149726_1_.isRemote) { - p_149726_1_.setBlock(p_149726_2_, p_149726_3_, p_149726_4_, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 1, p_149726_4_, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 2, p_149726_4_, getBlockById(0), 0, 2); + // CraftBukkit start - Use BlockStateListPopulator + BlockStateListPopulator blockList = new BlockStateListPopulator(p_149726_1_.getWorld()); + blockList.setTypeId(p_149726_2_, p_149726_3_, p_149726_4_, 0); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 1, p_149726_4_, 0); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 2, p_149726_4_, 0); EntitySnowman entitysnowman = new EntitySnowman(p_149726_1_); - entitysnowman.setLocationAndAngles((double)p_149726_2_ + 0.5D, (double)p_149726_3_ - 1.95D, (double)p_149726_4_ + 0.5D, 0.0F, 0.0F); - p_149726_1_.spawnEntityInWorld(entitysnowman); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_, p_149726_4_, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 1, p_149726_4_, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 2, p_149726_4_, getBlockById(0)); + entitysnowman.setLocationAndAngles((double) p_149726_2_ + 0.5D, (double) p_149726_3_ - 1.95D, (double) p_149726_4_ + 0.5D, 0.0F, 0.0F); + + if (p_149726_1_.addEntity(entitysnowman, SpawnReason.BUILD_SNOWMAN)) + { + blockList.updateList(); + } } for (int i1 = 0; i1 < 120; ++i1) @@ -68,45 +77,38 @@ if (flag || flag1) { - p_149726_1_.setBlock(p_149726_2_, p_149726_3_, p_149726_4_, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 1, p_149726_4_, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 2, p_149726_4_, getBlockById(0), 0, 2); + // CraftBukkit start - Use BlockStateListPopulator + BlockStateListPopulator blockList = new BlockStateListPopulator(p_149726_1_.getWorld()); + blockList.setTypeId(p_149726_2_, p_149726_3_, p_149726_4_, 0); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 1, p_149726_4_, 0); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 2, p_149726_4_, 0); if (flag) { - p_149726_1_.setBlock(p_149726_2_ - 1, p_149726_3_ - 1, p_149726_4_, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_ + 1, p_149726_3_ - 1, p_149726_4_, getBlockById(0), 0, 2); + blockList.setTypeId(p_149726_2_ - 1, p_149726_3_ - 1, p_149726_4_, 0); + blockList.setTypeId(p_149726_2_ + 1, p_149726_3_ - 1, p_149726_4_, 0); } else { - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 1, p_149726_4_ - 1, getBlockById(0), 0, 2); - p_149726_1_.setBlock(p_149726_2_, p_149726_3_ - 1, p_149726_4_ + 1, getBlockById(0), 0, 2); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 1, p_149726_4_ - 1, 0); + blockList.setTypeId(p_149726_2_, p_149726_3_ - 1, p_149726_4_ + 1, 0); } EntityIronGolem entityirongolem = new EntityIronGolem(p_149726_1_); entityirongolem.setPlayerCreated(true); - entityirongolem.setLocationAndAngles((double)p_149726_2_ + 0.5D, (double)p_149726_3_ - 1.95D, (double)p_149726_4_ + 0.5D, 0.0F, 0.0F); - p_149726_1_.spawnEntityInWorld(entityirongolem); + entityirongolem.setLocationAndAngles((double) p_149726_2_ + 0.5D, (double) p_149726_3_ - 1.95D, (double) p_149726_4_ + 0.5D, 0.0F, 0.0F); - for (int l = 0; l < 120; ++l) + if (p_149726_1_.addEntity(entityirongolem, SpawnReason.BUILD_IRONGOLEM)) { - p_149726_1_.spawnParticle("snowballpoof", (double)p_149726_2_ + p_149726_1_.rand.nextDouble(), (double)(p_149726_3_ - 2) + p_149726_1_.rand.nextDouble() * 3.9D, (double)p_149726_4_ + p_149726_1_.rand.nextDouble(), 0.0D, 0.0D, 0.0D); - } + for (int i1 = 0; i1 < 120; ++i1) + { + p_149726_1_.spawnParticle("snowballpoof", (double) p_149726_2_ + p_149726_1_.rand.nextDouble(), (double)(p_149726_3_ - 2) + p_149726_1_.rand.nextDouble() * 3.9D, (double) p_149726_4_ + p_149726_1_.rand.nextDouble(), 0.0D, 0.0D, 0.0D); + } - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_, p_149726_4_, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 1, p_149726_4_, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 2, p_149726_4_, getBlockById(0)); - - if (flag) - { - p_149726_1_.notifyBlockChange(p_149726_2_ - 1, p_149726_3_ - 1, p_149726_4_, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_ + 1, p_149726_3_ - 1, p_149726_4_, getBlockById(0)); + blockList.updateList(); } - else - { - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 1, p_149726_4_ - 1, getBlockById(0)); - p_149726_1_.notifyBlockChange(p_149726_2_, p_149726_3_ - 1, p_149726_4_ + 1, getBlockById(0)); - } + + // CraftBukkit end } } } @@ -122,6 +124,19 @@ p_149689_1_.setBlockMetadataWithNotify(p_149689_2_, p_149689_3_, p_149689_4_, l, 2); } + // CraftBukkit start + public void onNeighborBlockChange(World world, int i, int j, int k, Block block) + { + if (block != null && block.canProvidePower()) + { + org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(i, j, k); + int power = bukkitBlock.getBlockPower(); + BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bukkitBlock, power, power); + world.getServer().getPluginManager().callEvent(eventRedstone); + } + } + // CraftBukkit end + @SideOnly(Side.CLIENT) public void registerBlockIcons(IIconRegister p_149651_1_) {