forked from LogBlock/LogBlock
Updated Smart Logging for 1.7.2 and resolved a bug with door logging
This commit is contained in:
2
pom.xml
2
pom.xml
@ -42,7 +42,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.bukkit</groupId>
|
<groupId>org.bukkit</groupId>
|
||||||
<artifactId>bukkit</artifactId>
|
<artifactId>bukkit</artifactId>
|
||||||
<version>1.6.1-R0.1-SNAPSHOT</version>
|
<version>1.7.2-R0.1-SNAPSHOT</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>${project.groupId}</groupId>
|
<groupId>${project.groupId}</groupId>
|
||||||
|
@ -60,7 +60,7 @@ public class BukkitUtils
|
|||||||
relativeBreakable.add(Material.COCOA);
|
relativeBreakable.add(Material.COCOA);
|
||||||
|
|
||||||
// Blocks that break when they are on top of a block
|
// Blocks that break when they are on top of a block
|
||||||
relativeTopBreakable = new HashSet<Material>(32);
|
relativeTopBreakable = new HashSet<Material>(33);
|
||||||
relativeTopBreakable.add(Material.SAPLING);
|
relativeTopBreakable.add(Material.SAPLING);
|
||||||
relativeTopBreakable.add(Material.LONG_GRASS);
|
relativeTopBreakable.add(Material.LONG_GRASS);
|
||||||
relativeTopBreakable.add(Material.DEAD_BUSH);
|
relativeTopBreakable.add(Material.DEAD_BUSH);
|
||||||
@ -91,8 +91,9 @@ public class BukkitUtils
|
|||||||
relativeTopBreakable.add(Material.REDSTONE_COMPARATOR_ON);
|
relativeTopBreakable.add(Material.REDSTONE_COMPARATOR_ON);
|
||||||
relativeTopBreakable.add(Material.REDSTONE_COMPARATOR_OFF);
|
relativeTopBreakable.add(Material.REDSTONE_COMPARATOR_OFF);
|
||||||
relativeTopBreakable.add(Material.WOODEN_DOOR);
|
relativeTopBreakable.add(Material.WOODEN_DOOR);
|
||||||
relativeTopBreakable.add(Material.IRON_DOOR);
|
relativeTopBreakable.add(Material.IRON_DOOR_BLOCK);
|
||||||
relativeTopBreakable.add(Material.CARPET);
|
relativeTopBreakable.add(Material.CARPET);
|
||||||
|
relativeTopBreakable.add(Material.DOUBLE_PLANT);
|
||||||
|
|
||||||
// Blocks that fall
|
// Blocks that fall
|
||||||
relativeTopFallables = new HashSet<Material>(4);
|
relativeTopFallables = new HashSet<Material>(4);
|
||||||
@ -179,6 +180,19 @@ public class BukkitUtils
|
|||||||
return blocks;
|
return blocks;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static boolean isTop(Material mat, byte data) {
|
||||||
|
|
||||||
|
switch (mat) {
|
||||||
|
case DOUBLE_PLANT:
|
||||||
|
return data > 5;
|
||||||
|
case IRON_DOOR_BLOCK:
|
||||||
|
case WOODEN_DOOR:
|
||||||
|
return data == 8 || data == 9;
|
||||||
|
default:
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static int getInventoryHolderType(InventoryHolder holder) {
|
public static int getInventoryHolderType(InventoryHolder holder) {
|
||||||
if (holder instanceof DoubleChest) {
|
if (holder instanceof DoubleChest) {
|
||||||
return ((DoubleChest)holder).getLocation().getBlock().getTypeId();
|
return ((DoubleChest)holder).getLocation().getBlock().getTypeId();
|
||||||
|
@ -73,18 +73,30 @@ public class LoggingUtil {
|
|||||||
if (BukkitUtils.getRelativeTopBreakabls().contains(checkBlock.getType())) {
|
if (BukkitUtils.getRelativeTopBreakabls().contains(checkBlock.getType())) {
|
||||||
if (wcfg.isLogging(Logging.SIGNTEXT) && checkBlock.getType() == Material.SIGN_POST) {
|
if (wcfg.isLogging(Logging.SIGNTEXT) && checkBlock.getType() == Material.SIGN_POST) {
|
||||||
consumer.queueSignBreak(playerName, (Sign) checkBlock.getState());
|
consumer.queueSignBreak(playerName, (Sign) checkBlock.getState());
|
||||||
} else if (checkBlock.getType() == Material.IRON_DOOR || checkBlock.getType() == Material.WOOD_DOOR) {
|
} else if (checkBlock.getType() == Material.IRON_DOOR_BLOCK || checkBlock.getType() == Material.WOODEN_DOOR) {
|
||||||
Block doorBlock = checkBlock;
|
Block doorBlock = checkBlock;
|
||||||
// If the doorBlock is the top half a door the player simply punched a door
|
// If the doorBlock is the top half a door the player simply punched a door
|
||||||
// this will be handled later.
|
// this will be handled later.
|
||||||
if (doorBlock.getData() != 8 && doorBlock.getData() != 9) {
|
if (!BukkitUtils.isTop(doorBlock.getType(), doorBlock.getData())) {
|
||||||
doorBlock = doorBlock.getRelative(BlockFace.UP);
|
doorBlock = doorBlock.getRelative(BlockFace.UP);
|
||||||
// Fall back check just in case the top half wasn't a door
|
// Fall back check just in case the top half wasn't a door
|
||||||
if (doorBlock.getType() == Material.IRON_DOOR || doorBlock.getType() == Material.WOOD_DOOR) {
|
if (doorBlock.getType() == Material.IRON_DOOR_BLOCK || doorBlock.getType() == Material.WOODEN_DOOR) {
|
||||||
consumer.queueBlockBreak(playerName, doorBlock.getState());
|
consumer.queueBlockBreak(playerName, doorBlock.getState());
|
||||||
}
|
}
|
||||||
consumer.queueBlockBreak(playerName, checkBlock.getState());
|
consumer.queueBlockBreak(playerName, checkBlock.getState());
|
||||||
}
|
}
|
||||||
|
} else if (checkBlock.getType() == Material.DOUBLE_PLANT) {
|
||||||
|
Block plantBlock = checkBlock;
|
||||||
|
// If the plantBlock is the top half of a double plant the player simply
|
||||||
|
// punched the plant this will be handled later.
|
||||||
|
if (!BukkitUtils.isTop(plantBlock.getType(), plantBlock.getData())) {
|
||||||
|
plantBlock = plantBlock.getRelative(BlockFace.UP);
|
||||||
|
// Fall back check just in case the top half wasn't a plant
|
||||||
|
if (plantBlock.getType() == Material.DOUBLE_PLANT) {
|
||||||
|
consumer.queueBlockBreak(playerName, plantBlock.getState());
|
||||||
|
}
|
||||||
|
consumer.queueBlockBreak(playerName, checkBlock.getState());
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
consumer.queueBlockBreak(playerName, checkBlock.getState());
|
consumer.queueBlockBreak(playerName, checkBlock.getState());
|
||||||
}
|
}
|
||||||
@ -156,19 +168,32 @@ public class LoggingUtil {
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Special door check
|
// Special door check
|
||||||
if (origin.getType() == Material.IRON_DOOR || origin.getType() == Material.WOOD_DOOR) {
|
if (origin.getType() == Material.IRON_DOOR_BLOCK || origin.getType() == Material.WOODEN_DOOR) {
|
||||||
Block doorBlock = origin;
|
Block doorBlock = origin;
|
||||||
|
|
||||||
// Up or down?
|
// Up or down?
|
||||||
if (origin.getData() != 8 && origin.getData() != 9) {
|
if (!BukkitUtils.isTop(doorBlock.getType(), doorBlock.getData())) {
|
||||||
doorBlock = doorBlock.getRelative(BlockFace.UP);
|
doorBlock = doorBlock.getRelative(BlockFace.UP);
|
||||||
} else {
|
} else {
|
||||||
doorBlock = doorBlock.getRelative(BlockFace.DOWN);
|
doorBlock = doorBlock.getRelative(BlockFace.DOWN);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (doorBlock.getType() == Material.IRON_DOOR || doorBlock.getType() == Material.WOOD_DOOR) {
|
if (doorBlock.getType() == Material.IRON_DOOR_BLOCK || doorBlock.getType() == Material.WOODEN_DOOR) {
|
||||||
consumer.queueBlockBreak(playerName, doorBlock.getState());
|
consumer.queueBlockBreak(playerName, doorBlock.getState());
|
||||||
}
|
}
|
||||||
|
} else if (origin.getType() == Material.DOUBLE_PLANT) { // Special double plant check
|
||||||
|
Block plantBlock = origin;
|
||||||
|
|
||||||
|
// Up or down?
|
||||||
|
if (!BukkitUtils.isTop(origin.getType(), origin.getData())) {
|
||||||
|
plantBlock = plantBlock.getRelative(BlockFace.UP);
|
||||||
|
} else {
|
||||||
|
plantBlock = plantBlock.getRelative(BlockFace.DOWN);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (plantBlock.getType() == Material.DOUBLE_PLANT) {
|
||||||
|
consumer.queueBlockBreak(playerName, plantBlock.getState());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// Do this down here so that the block is added after blocks sitting on it
|
// Do this down here so that the block is added after blocks sitting on it
|
||||||
|
Reference in New Issue
Block a user