@@ -4,14 +4,11 @@ package org.bukkit.craftbukkit.block;
|
||||
import org.bukkit.block.BlockFace;
|
||||
import org.bukkit.block.Biome;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.Location;
|
||||
|
||||
import net.minecraft.server.BiomeBase;
|
||||
import org.bukkit.*;
|
||||
import org.bukkit.block.BlockState;
|
||||
import org.bukkit.craftbukkit.CraftChunk;
|
||||
import org.bukkit.craftbukkit.block.CraftBlockState;
|
||||
import org.bukkit.craftbukkit.block.CraftSign;
|
||||
import org.bukkit.util.BlockVector;
|
||||
|
||||
public class CraftBlock implements Block {
|
||||
@@ -99,7 +96,7 @@ public class CraftBlock implements Block {
|
||||
*
|
||||
* @return block specific metadata
|
||||
*/
|
||||
public byte getData() {
|
||||
public byte getRawData() {
|
||||
return (byte) chunk.getHandle().b(this.x & 0xF, this.y & 0x7F, this.z & 0xF);
|
||||
}
|
||||
|
||||
@@ -261,6 +258,25 @@ public class CraftBlock implements Block {
|
||||
return BlockFace.SELF;
|
||||
}
|
||||
}
|
||||
|
||||
public static int blockFaceToNotch(BlockFace face) {
|
||||
switch(face) {
|
||||
case DOWN:
|
||||
return 0;
|
||||
case UP:
|
||||
return 1;
|
||||
case EAST:
|
||||
return 2;
|
||||
case WEST:
|
||||
return 3;
|
||||
case NORTH:
|
||||
return 4;
|
||||
case SOUTH:
|
||||
return 5;
|
||||
default:
|
||||
return 7; //Good as anything here, but technically invalid
|
||||
}
|
||||
}
|
||||
|
||||
public BlockState getState() {
|
||||
Material material = getType();
|
||||
@@ -331,4 +347,17 @@ public class CraftBlock implements Block {
|
||||
public boolean equals( Object o ) {
|
||||
return this == o;
|
||||
}
|
||||
|
||||
public boolean isBlockFacePowered(BlockFace face) {
|
||||
return chunk.getHandle().d.j(x, y, z, blockFaceToNotch(face));
|
||||
}
|
||||
|
||||
public boolean isBlockFaceIndirectlyPowered(BlockFace face) {
|
||||
return chunk.getHandle().d.j(x, y, z, blockFaceToNotch(face));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public byte getData() {
|
||||
return getRawData();
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
|
||||
package org.bukkit.craftbukkit.block;
|
||||
|
||||
import org.bukkit.Location;
|
||||
import org.bukkit.block.Block;
|
||||
import org.bukkit.Chunk;
|
||||
import org.bukkit.Material;
|
||||
@@ -29,7 +30,7 @@ public class CraftBlockState implements BlockState {
|
||||
this.light = block.getLightLevel();
|
||||
this.chunk = (CraftChunk)block.getChunk();
|
||||
|
||||
createData(block.getData());
|
||||
createData(block.getRawData());
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -83,8 +84,6 @@ public class CraftBlockState implements BlockState {
|
||||
* @param data New block specific metadata
|
||||
*/
|
||||
public void setData(final MaterialData data) {
|
||||
world.getHandle().c(x, y, z, data.getData());
|
||||
|
||||
Material mat = getType();
|
||||
|
||||
if ((mat == null) || (mat.getData() == null)) {
|
||||
@@ -122,11 +121,11 @@ public class CraftBlockState implements BlockState {
|
||||
*
|
||||
* @param type Type-Id to change this block to
|
||||
*/
|
||||
public void setTypeId(final int type) {
|
||||
public boolean setTypeId(final int type) {
|
||||
this.type = type;
|
||||
world.getHandle().e(x, y, z, type);
|
||||
|
||||
createData((byte)0);
|
||||
return true;
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -176,7 +175,7 @@ public class CraftBlockState implements BlockState {
|
||||
}
|
||||
}
|
||||
|
||||
block.setData(data.getData());
|
||||
block.setData(getRawData());
|
||||
}
|
||||
|
||||
return true;
|
||||
@@ -190,4 +189,16 @@ public class CraftBlockState implements BlockState {
|
||||
this.data = mat.getNewData(data);
|
||||
}
|
||||
}
|
||||
|
||||
public byte getRawData() {
|
||||
return data.getData();
|
||||
}
|
||||
|
||||
public Location getLocation() {
|
||||
return new Location(world, x, y, z);
|
||||
}
|
||||
|
||||
public void setData(byte data) {
|
||||
createData(data);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user