diff options
author | md_5 <git@md-5.net> | 2016-04-09 12:57:19 +1000 |
---|---|---|
committer | md_5 <git@md-5.net> | 2016-04-09 12:57:19 +1000 |
commit | 5c23262f159f3c7a927299be0f26df11486e2ac2 (patch) | |
tree | 0eec225a1352af22672bb09ff88aae9182e91cc0 | |
parent | 11e8c6d3388dc9d6cad52c742be0faebfc6e4511 (diff) | |
download | craftbukkit-5c23262f159f3c7a927299be0f26df11486e2ac2.tar craftbukkit-5c23262f159f3c7a927299be0f26df11486e2ac2.tar.gz craftbukkit-5c23262f159f3c7a927299be0f26df11486e2ac2.tar.lz craftbukkit-5c23262f159f3c7a927299be0f26df11486e2ac2.tar.xz craftbukkit-5c23262f159f3c7a927299be0f26df11486e2ac2.zip |
Update physics on attached block when setting data of attachable blocks
-rw-r--r-- | src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java index 7da6218b..3261f249 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java @@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.block; import net.minecraft.server.BlockPosition; import org.bukkit.Location; import org.bukkit.block.Block; +import org.bukkit.block.BlockFace; import org.bukkit.Chunk; import org.bukkit.Material; import org.bukkit.World; @@ -10,11 +11,14 @@ import org.bukkit.block.BlockState; import org.bukkit.craftbukkit.CraftChunk; import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.util.CraftMagicNumbers; +import org.bukkit.material.Attachable; import org.bukkit.material.MaterialData; import org.bukkit.metadata.MetadataValue; import org.bukkit.plugin.Plugin; import java.util.List; +import net.minecraft.server.EnumDirection; +import net.minecraft.server.IBlockData; import net.minecraft.server.TileEntity; public class CraftBlockState implements BlockState { @@ -159,14 +163,21 @@ public class CraftBlockState implements BlockState { } } + BlockPosition pos = new BlockPosition(x, y, z); + IBlockData newBlock = CraftMagicNumbers.getBlock(getType()).fromLegacyData(getRawData()); block.setTypeIdAndData(getTypeId(), getRawData(), applyPhysics); world.getHandle().notify( - new BlockPosition(x, y, z), + pos, CraftMagicNumbers.getBlock(block).fromLegacyData(block.getData()), - CraftMagicNumbers.getBlock(getType()).fromLegacyData(getRawData()), + newBlock, 3 ); + // Update levers etc + if (applyPhysics && getData() instanceof Attachable) { + world.getHandle().applyPhysics(pos.shift(CraftBlock.blockFaceToNotch(((Attachable) getData()).getAttachedFace())), newBlock.getBlock()); + } + return true; } |