summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authormd_5 <git@md-5.net>2016-04-09 12:57:19 +1000
committermd_5 <git@md-5.net>2016-04-09 12:57:19 +1000
commit5c23262f159f3c7a927299be0f26df11486e2ac2 (patch)
tree0eec225a1352af22672bb09ff88aae9182e91cc0 /src
parent11e8c6d3388dc9d6cad52c742be0faebfc6e4511 (diff)
downloadcraftbukkit-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
Diffstat (limited to 'src')
-rw-r--r--src/main/java/org/bukkit/craftbukkit/block/CraftBlockState.java15
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;
}