From 24557bc2b37deb6a0edf497d547471832457b1dd Mon Sep 17 00:00:00 2001 From: Thinkofdeath Date: Wed, 26 Nov 2014 08:32:16 +1100 Subject: Update to Minecraft 1.8 For more information please see http://www.spigotmc.org/ --- nms-patches/BlockPumpkin.patch | 117 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 117 insertions(+) create mode 100644 nms-patches/BlockPumpkin.patch (limited to 'nms-patches/BlockPumpkin.patch') diff --git a/nms-patches/BlockPumpkin.patch b/nms-patches/BlockPumpkin.patch new file mode 100644 index 00000000..abf3e858 --- /dev/null +++ b/nms-patches/BlockPumpkin.patch @@ -0,0 +1,117 @@ +--- ../work/decompile-bb26c12b/net/minecraft/server/BlockPumpkin.java 2014-11-27 08:59:46.561422463 +1100 ++++ src/main/java/net/minecraft/server/BlockPumpkin.java 2014-11-27 08:42:10.108850996 +1100 +@@ -1,5 +1,11 @@ + package net.minecraft.server; + ++// 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 ShapeDetector snowGolemPart; +@@ -29,31 +35,45 @@ + int j; + + if ((shapedetectorcollection = this.getDetectorSnowGolem().a(world, blockposition)) != null) { ++ BlockStateListPopulator blockList = new BlockStateListPopulator(world.getWorld()); // CraftBukkit - Use BlockStateListPopulator + for (i = 0; i < this.getDetectorSnowGolem().b(); ++i) { + ShapeDetectorBlock shapedetectorblock = shapedetectorcollection.a(0, i, 0); + +- world.setTypeAndData(shapedetectorblock.d(), Blocks.AIR.getBlockData(), 2); ++ // CraftBukkit start ++ // world.setTypeAndData(shapedetectorblock.d(), Blocks.AIR.getBlockData(), 2); ++ BlockPosition pos = shapedetectorblock.d(); ++ blockList.setTypeId(pos.getX(), pos.getY(), pos.getZ(), 0); ++ // CraftBukkit end + } + + EntitySnowman entitysnowman = new EntitySnowman(world); + BlockPosition blockposition1 = shapedetectorcollection.a(0, 2, 0).d(); + + entitysnowman.setPositionRotation((double) blockposition1.getX() + 0.5D, (double) blockposition1.getY() + 0.05D, (double) blockposition1.getZ() + 0.5D, 0.0F, 0.0F); +- world.addEntity(entitysnowman); ++ // CraftBukkit start ++ if (world.addEntity(entitysnowman, SpawnReason.BUILD_SNOWMAN)) { ++ blockList.updateList(); + +- for (j = 0; j < 120; ++j) { +- world.addParticle(EnumParticle.SNOW_SHOVEL, (double) blockposition1.getX() + world.random.nextDouble(), (double) blockposition1.getY() + world.random.nextDouble() * 2.5D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]); +- } ++ for (j = 0; j < 120; ++j) { ++ world.addParticle(EnumParticle.SNOW_SHOVEL, (double) blockposition1.getX() + world.random.nextDouble(), (double) blockposition1.getY() + world.random.nextDouble() * 2.5D, (double) blockposition1.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]); ++ } + +- for (j = 0; j < this.getDetectorSnowGolem().b(); ++j) { +- ShapeDetectorBlock shapedetectorblock1 = shapedetectorcollection.a(0, j, 0); ++ for (j = 0; j < this.getDetectorSnowGolem().b(); ++j) { ++ ShapeDetectorBlock shapedetectorblock1 = shapedetectorcollection.a(0, j, 0); + +- world.update(shapedetectorblock1.d(), Blocks.AIR); ++ world.update(shapedetectorblock1.d(), Blocks.AIR); ++ } + } ++ // CraftBukkit end + } else if ((shapedetectorcollection = this.getDetectorIronGolem().a(world, blockposition)) != null) { ++ BlockStateListPopulator blockList = new BlockStateListPopulator(world.getWorld()); // CraftBukkit - Use BlockStateListPopulator + for (i = 0; i < this.getDetectorIronGolem().c(); ++i) { + for (int k = 0; k < this.getDetectorIronGolem().b(); ++k) { +- world.setTypeAndData(shapedetectorcollection.a(i, k, 0).d(), Blocks.AIR.getBlockData(), 2); ++ // CraftBukkit start ++ // world.setTypeAndData(shapedetectorcollection.a(i, k, 0).d(), Blocks.AIR.getBlockData(), 2); ++ BlockPosition pos = shapedetectorcollection.a(i, k, 0).d(); ++ blockList.setTypeId(pos.getX(), pos.getY(), pos.getZ(), 0); ++ // CraftBukkit end + } + } + +@@ -62,22 +82,38 @@ + + entityirongolem.setPlayerCreated(true); + entityirongolem.setPositionRotation((double) blockposition2.getX() + 0.5D, (double) blockposition2.getY() + 0.05D, (double) blockposition2.getZ() + 0.5D, 0.0F, 0.0F); +- world.addEntity(entityirongolem); +- +- for (j = 0; j < 120; ++j) { +- world.addParticle(EnumParticle.SNOWBALL, (double) blockposition2.getX() + world.random.nextDouble(), (double) blockposition2.getY() + world.random.nextDouble() * 3.9D, (double) blockposition2.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]); +- } ++ // CraftBukkit start ++ if (world.addEntity(entityirongolem, SpawnReason.BUILD_IRONGOLEM)) { ++ blockList.updateList(); ++ ++ for (j = 0; j < 120; ++j) { ++ world.addParticle(EnumParticle.SNOWBALL, (double) blockposition2.getX() + world.random.nextDouble(), (double) blockposition2.getY() + world.random.nextDouble() * 3.9D, (double) blockposition2.getZ() + world.random.nextDouble(), 0.0D, 0.0D, 0.0D, new int[0]); ++ } + +- for (j = 0; j < this.getDetectorIronGolem().c(); ++j) { +- for (int l = 0; l < this.getDetectorIronGolem().b(); ++l) { +- ShapeDetectorBlock shapedetectorblock2 = shapedetectorcollection.a(j, l, 0); ++ for (j = 0; j < this.getDetectorIronGolem().c(); ++j) { ++ for (int l = 0; l < this.getDetectorIronGolem().b(); ++l) { ++ ShapeDetectorBlock shapedetectorblock2 = shapedetectorcollection.a(j, l, 0); + +- world.update(shapedetectorblock2.d(), Blocks.AIR); ++ world.update(shapedetectorblock2.d(), Blocks.AIR); ++ } + } + } ++ // CraftBukkit end + } ++ } + ++ // CraftBukkit start ++ @Override ++ public void doPhysics(World world, BlockPosition position, IBlockData data, Block block) { ++ if (block != null && block.isPowerSource()) { ++ org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(position.getX(), position.getY(), position.getZ()); ++ int power = bukkitBlock.getBlockPower(); ++ ++ BlockRedstoneEvent eventRedstone = new BlockRedstoneEvent(bukkitBlock, power, power); ++ world.getServer().getPluginManager().callEvent(eventRedstone); ++ } + } ++ // CraftBukkit end + + public boolean canPlace(World world, BlockPosition blockposition) { + return world.getType(blockposition).getBlock().material.isReplaceable() && World.a((IBlockAccess) world, blockposition.down()); -- cgit v1.2.3