13
0
geforkt von Mirrors/Paper

Update physics on attached block when setting data of attachable blocks

Dieser Commit ist enthalten in:
md_5 2016-04-09 12:57:19 +10:00
Ursprung 11e8c6d338
Commit 5c23262f15

Datei anzeigen

@ -3,6 +3,7 @@ package org.bukkit.craftbukkit.block;
import net.minecraft.server.BlockPosition; import net.minecraft.server.BlockPosition;
import org.bukkit.Location; import org.bukkit.Location;
import org.bukkit.block.Block; import org.bukkit.block.Block;
import org.bukkit.block.BlockFace;
import org.bukkit.Chunk; import org.bukkit.Chunk;
import org.bukkit.Material; import org.bukkit.Material;
import org.bukkit.World; import org.bukkit.World;
@ -10,11 +11,14 @@ import org.bukkit.block.BlockState;
import org.bukkit.craftbukkit.CraftChunk; import org.bukkit.craftbukkit.CraftChunk;
import org.bukkit.craftbukkit.CraftWorld; import org.bukkit.craftbukkit.CraftWorld;
import org.bukkit.craftbukkit.util.CraftMagicNumbers; import org.bukkit.craftbukkit.util.CraftMagicNumbers;
import org.bukkit.material.Attachable;
import org.bukkit.material.MaterialData; import org.bukkit.material.MaterialData;
import org.bukkit.metadata.MetadataValue; import org.bukkit.metadata.MetadataValue;
import org.bukkit.plugin.Plugin; import org.bukkit.plugin.Plugin;
import java.util.List; import java.util.List;
import net.minecraft.server.EnumDirection;
import net.minecraft.server.IBlockData;
import net.minecraft.server.TileEntity; import net.minecraft.server.TileEntity;
public class CraftBlockState implements BlockState { 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); block.setTypeIdAndData(getTypeId(), getRawData(), applyPhysics);
world.getHandle().notify( world.getHandle().notify(
new BlockPosition(x, y, z), pos,
CraftMagicNumbers.getBlock(block).fromLegacyData(block.getData()), CraftMagicNumbers.getBlock(block).fromLegacyData(block.getData()),
CraftMagicNumbers.getBlock(getType()).fromLegacyData(getRawData()), newBlock,
3 3
); );
// Update levers etc
if (applyPhysics && getData() instanceof Attachable) {
world.getHandle().applyPhysics(pos.shift(CraftBlock.blockFaceToNotch(((Attachable) getData()).getAttachedFace())), newBlock.getBlock());
}
return true; return true;
} }