Fix MaterialData directions being incorrect. Fixes BUKKIT-3160
Prior to 49690f9, BlockFaces were mostly correct in their respective MaterialData classes. However, a lot of things were not updated since implementation and broke without being addressed. This fixes any discrepancies with Block data. By: feildmaster <admin@feildmaster.com>
This commit is contained in:
@@ -39,21 +39,21 @@ public class Vine extends MaterialData {
|
||||
byte data = 0;
|
||||
|
||||
if (faces.contains(BlockFace.WEST)) {
|
||||
data |= VINE_NORTH;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.NORTH)) {
|
||||
data |= VINE_EAST;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.SOUTH)) {
|
||||
data |= VINE_WEST;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.EAST)) {
|
||||
if (faces.contains(BlockFace.NORTH)) {
|
||||
data |= VINE_NORTH;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.SOUTH)) {
|
||||
data |= VINE_SOUTH;
|
||||
}
|
||||
|
||||
if (faces.contains(BlockFace.EAST)) {
|
||||
data |= VINE_EAST;
|
||||
}
|
||||
|
||||
setData(data);
|
||||
}
|
||||
|
||||
@@ -67,21 +67,21 @@ public class Vine extends MaterialData {
|
||||
public boolean isOnFace(BlockFace face) {
|
||||
switch (face) {
|
||||
case WEST:
|
||||
return (getData() & VINE_NORTH) > 0;
|
||||
return (getData() & VINE_WEST) == VINE_WEST;
|
||||
case NORTH:
|
||||
return (getData() & VINE_EAST) > 0;
|
||||
return (getData() & VINE_NORTH) == VINE_NORTH;
|
||||
case SOUTH:
|
||||
return (getData() & VINE_WEST) > 0;
|
||||
return (getData() & VINE_SOUTH) == VINE_SOUTH;
|
||||
case EAST:
|
||||
return (getData() & VINE_SOUTH) > 0;
|
||||
return (getData() & VINE_EAST) == VINE_EAST;
|
||||
case NORTH_EAST:
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.NORTH);
|
||||
case NORTH_WEST:
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.SOUTH);
|
||||
case SOUTH_EAST:
|
||||
return isOnFace(BlockFace.EAST) && isOnFace(BlockFace.NORTH);
|
||||
case SOUTH_WEST:
|
||||
case NORTH_WEST:
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.NORTH);
|
||||
case SOUTH_EAST:
|
||||
return isOnFace(BlockFace.EAST) && isOnFace(BlockFace.SOUTH);
|
||||
case SOUTH_WEST:
|
||||
return isOnFace(BlockFace.WEST) && isOnFace(BlockFace.SOUTH);
|
||||
case UP: // It's impossible to be accurate with this since it's contextual
|
||||
return true;
|
||||
default:
|
||||
@@ -97,30 +97,30 @@ public class Vine extends MaterialData {
|
||||
public void putOnFace(BlockFace face) {
|
||||
switch(face) {
|
||||
case WEST:
|
||||
setData((byte) (getData() | VINE_NORTH));
|
||||
break;
|
||||
case NORTH:
|
||||
setData((byte) (getData() | VINE_EAST));
|
||||
break;
|
||||
case SOUTH:
|
||||
setData((byte) (getData() | VINE_WEST));
|
||||
break;
|
||||
case EAST:
|
||||
case NORTH:
|
||||
setData((byte) (getData() | VINE_NORTH));
|
||||
break;
|
||||
case SOUTH:
|
||||
setData((byte) (getData() | VINE_SOUTH));
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
putOnFace(BlockFace.WEST);
|
||||
putOnFace(BlockFace.NORTH);
|
||||
case EAST:
|
||||
setData((byte) (getData() | VINE_EAST));
|
||||
break;
|
||||
case NORTH_WEST:
|
||||
putOnFace(BlockFace.WEST);
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
putOnFace(BlockFace.EAST);
|
||||
putOnFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_WEST:
|
||||
putOnFace(BlockFace.WEST);
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
putOnFace(BlockFace.EAST);
|
||||
putOnFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
putOnFace(BlockFace.EAST);
|
||||
putOnFace(BlockFace.SOUTH);
|
||||
break;
|
||||
@@ -139,30 +139,30 @@ public class Vine extends MaterialData {
|
||||
public void removeFromFace(BlockFace face) {
|
||||
switch(face) {
|
||||
case WEST:
|
||||
setData((byte) (getData() &~ VINE_NORTH));
|
||||
setData((byte) (getData() & ~VINE_WEST));
|
||||
break;
|
||||
case NORTH:
|
||||
setData((byte) (getData() &~ VINE_EAST));
|
||||
setData((byte) (getData() & ~VINE_NORTH));
|
||||
break;
|
||||
case SOUTH:
|
||||
setData((byte) (getData() &~ VINE_WEST));
|
||||
setData((byte) (getData() & ~VINE_SOUTH));
|
||||
break;
|
||||
case EAST:
|
||||
setData((byte) (getData() &~ VINE_SOUTH));
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
removeFromFace(BlockFace.WEST);
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
setData((byte) (getData() & ~VINE_EAST));
|
||||
break;
|
||||
case NORTH_WEST:
|
||||
removeFromFace(BlockFace.WEST);
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
removeFromFace(BlockFace.EAST);
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_WEST:
|
||||
removeFromFace(BlockFace.WEST);
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
break;
|
||||
case NORTH_EAST:
|
||||
removeFromFace(BlockFace.EAST);
|
||||
removeFromFace(BlockFace.NORTH);
|
||||
break;
|
||||
case SOUTH_EAST:
|
||||
removeFromFace(BlockFace.EAST);
|
||||
removeFromFace(BlockFace.SOUTH);
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user