From bb2eb053da7aa7c40ce3d4fbc761d05673ddd1d5 Mon Sep 17 00:00:00 2001 From: bm01 Date: Wed, 23 Jan 2013 19:30:23 +0100 Subject: [PATCH] Fixed Tree Feller dropping sideways log items --- .../nossr50/skills/woodcutting/TreeFeller.java | 2 +- .../nossr50/skills/woodcutting/Woodcutting.java | 14 ++++++++++++-- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/TreeFeller.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/TreeFeller.java index ec155b0c2..4f49327d4 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/TreeFeller.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/TreeFeller.java @@ -199,7 +199,7 @@ public abstract class TreeFeller { Misc.dropItem(block.getLocation(), new ItemStack(Material.LOG, 1, block.getData())); break; case LEAVES: - Misc.randomDropItem(block.getLocation(), new ItemStack(Material.SAPLING, 1, (short) (block.getData() & 3)), 10); + Misc.randomDropItem(block.getLocation(), new ItemStack(Material.SAPLING, 1, Woodcutting.extractLogItemData(block.getData())), 10); break; default: if (ModChecks.isCustomLogBlock(block)) { diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java index 5439f973c..e0b689667 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java @@ -84,7 +84,7 @@ public abstract class Woodcutting { * @throws IllegalArgumentException if 'log' is invalid */ protected static int getExperienceFromLog(Block log) { - TreeSpecies logType = TreeSpecies.getByData((byte) (log.getData() & 0x3)); + TreeSpecies logType = TreeSpecies.getByData(extractLogItemData(log.getData())); // Apparently species can be null in certain cases (custom server mods?) // https://github.com/mcMMO-Dev/mcMMO/issues/229 @@ -146,7 +146,7 @@ public abstract class Woodcutting { Location location = block.getLocation(); ItemStack item = new ItemStack(Material.LOG, 1, blockData); - switch (TreeSpecies.getByData((byte) (blockData & 0x3))) { + switch (TreeSpecies.getByData(extractLogItemData(blockData))) { case GENERIC: if (Config.getInstance().getOakDoubleDropsEnabled()) { Misc.dropItem(location, item); @@ -172,4 +172,14 @@ public abstract class Woodcutting { } } } + + /** + * Extract the log type from the block data (remove rotation) + * + * @param data Original block data + * @return Extracted log type + */ + protected static byte extractLogItemData(byte data) { + return (byte) (data & 0x3); + } }