[BREAKING] Update BlockFace directions. Fixes BUKKIT-1567, BUKKIT-3069
If you use BlockFace in any way, to compensate the directionals being incorrect, you can still have backwards compatibility if you add in the handling in your plugin: boolean legacyBlockFace = BlockFace.NORTH().getModX() == -1; (and then handle it accordingly) If you didn't special case your directions to fix what's being fixed here... Hurray! Your plugin should now work. By: feildmaster <admin@feildmaster.com>
This commit is contained in:
@@ -14,7 +14,7 @@ public class Vine extends MaterialData {
|
||||
private static final int VINE_EAST = 0x8;
|
||||
private static final int VINE_WEST = 0x2;
|
||||
private static final int VINE_SOUTH = 0x1;
|
||||
EnumSet<BlockFace> possibleFaces = EnumSet.of(BlockFace.NORTH, BlockFace.EAST, BlockFace.WEST, BlockFace.SOUTH);
|
||||
EnumSet<BlockFace> possibleFaces = EnumSet.of(BlockFace.WEST, BlockFace.NORTH, BlockFace.SOUTH, BlockFace.EAST);
|
||||
|
||||
public Vine() {
|
||||
super(Material.VINE);
|
||||
@@ -38,19 +38,19 @@ public class Vine extends MaterialData {
|
||||
|
||||
byte data = 0;
|
||||
|
||||
if (faces.contains(BlockFace.NORTH)) {
|
||||
if (faces.contains(BlockFace.WEST)) {
|
||||
data |= VINE_NORTH;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.EAST)) {
|
||||
if (faces.contains(BlockFace.NORTH)) {
|
||||
data |= VINE_EAST;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.WEST)) {
|
||||
if (faces.contains(BlockFace.SOUTH)) {
|
||||
data |= VINE_WEST;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.SOUTH)) {
|
||||
if (faces.contains(BlockFace.EAST)) {
|
||||
data |= VINE_SOUTH;
|
||||
}
|
||||
|
||||
@@ -66,22 +66,22 @@ public class Vine extends MaterialData {
|
||||
*/
|
||||
public boolean isOnFace(BlockFace face) {
|
||||
switch (face) {
|
||||
case NORTH:
|
||||
return (getData() & VINE_NORTH) > 0;
|
||||
case EAST:
|
||||
return (getData() & VINE_EAST) > 0;
|
||||
case WEST:
|
||||
return (getData() & VINE_WEST) > 0;
|
||||
return (getData() & VINE_NORTH) > 0;
|
||||
case NORTH:
|
||||
return (getData() & VINE_EAST) > 0;
|
||||
case SOUTH:
|
||||
return (getData() & VINE_WEST) > 0;
|
||||
case EAST:
|
||||
return (getData() & VINE_SOUTH) > 0;
|
||||
case NORTH_EAST:
|
||||
return isOnFace(BlockFace.NORTH) && isOnFace(BlockFace.EAST);
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.NORTH);
|
||||
case NORTH_WEST:
|
||||
return isOnFace(BlockFace.NORTH) && isOnFace(BlockFace.WEST);
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.SOUTH);
|
||||
case SOUTH_EAST:
|
||||
return isOnFace(BlockFace.SOUTH) && isOnFace(BlockFace.EAST);
|
||||
return isOnFace(BlockFace.EAST) && isOnFace(BlockFace.NORTH);
|
||||
case SOUTH_WEST:
|
||||
return isOnFace(BlockFace.SOUTH) && isOnFace(BlockFace.WEST);
|
||||
return isOnFace(BlockFace.EAST) && isOnFace(BlockFace.SOUTH);
|
||||
case UP: // It's impossible to be accurate with this since it's contextual
|
||||
return true;
|
||||
default:
|
||||
@@ -96,33 +96,33 @@ public class Vine extends MaterialData {
|
||||
*/
|
||||
public void putOnFace(BlockFace face) {
|
||||
switch(face) {
|
||||
case NORTH:
|
||||
case WEST:
|
||||
setData((byte) (getData() | VINE_NORTH));
|
||||
break;
|
||||
case EAST:
|
||||
case NORTH:
|
||||
setData((byte) (getData() | VINE_EAST));
|
||||
break;
|
||||
case WEST:
|
||||
case SOUTH:
|
||||
setData((byte) (getData() | VINE_WEST));
|
||||
break;
|
||||
case SOUTH:
|
||||
case EAST:
|
||||
setData((byte) (getData() | VINE_SOUTH));
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
putOnFace(BlockFace.WEST);
|
||||
putOnFace(BlockFace.NORTH);
|
||||
putOnFace(BlockFace.EAST);
|
||||
break;
|
||||
case NORTH_WEST:
|
||||
putOnFace(BlockFace.NORTH);
|
||||
putOnFace(BlockFace.WEST);
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
putOnFace(BlockFace.EAST);
|
||||
putOnFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_WEST:
|
||||
putOnFace(BlockFace.EAST);
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
putOnFace(BlockFace.WEST);
|
||||
break;
|
||||
case UP:
|
||||
break;
|
||||
@@ -138,33 +138,33 @@ public class Vine extends MaterialData {
|
||||
*/
|
||||
public void removeFromFace(BlockFace face) {
|
||||
switch(face) {
|
||||
case NORTH:
|
||||
case WEST:
|
||||
setData((byte) (getData() &~ VINE_NORTH));
|
||||
break;
|
||||
case EAST:
|
||||
case NORTH:
|
||||
setData((byte) (getData() &~ VINE_EAST));
|
||||
break;
|
||||
case WEST:
|
||||
case SOUTH:
|
||||
setData((byte) (getData() &~ VINE_WEST));
|
||||
break;
|
||||
case SOUTH:
|
||||
case EAST:
|
||||
setData((byte) (getData() &~ VINE_SOUTH));
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
removeFromFace(BlockFace.WEST);
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
removeFromFace(BlockFace.EAST);
|
||||
break;
|
||||
case NORTH_WEST:
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
removeFromFace(BlockFace.WEST);
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
removeFromFace(BlockFace.EAST);
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_WEST:
|
||||
removeFromFace(BlockFace.EAST);
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
removeFromFace(BlockFace.WEST);
|
||||
break;
|
||||
case UP:
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user