From daee3daf5f0b50729fd6980e5c5a835d3376dbf5 Mon Sep 17 00:00:00 2001 From: TfT_02 Date: Mon, 30 Dec 2013 23:45:56 +0100 Subject: [PATCH] Workaround for ClassCastException: MaterialData cannot be cast to Tree --- .../skills/woodcutting/Woodcutting.java | 19 ++++++++++++++++--- .../woodcutting/WoodcuttingManager.java | 9 +++++++-- 2 files changed, 23 insertions(+), 5 deletions(-) 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 919712069..0d009fa0d 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/Woodcutting.java @@ -56,7 +56,12 @@ public final class Woodcutting { return mcMMO.getModManager().getBlock(blockState).getXpGain(); } - TreeSpecies species = ((Tree) blockState.getData()).getSpecies(); + //TODO Remove this workaround when casting to Tree works again + TreeSpecies species = TreeSpecies.GENERIC; + if (blockState.getData() instanceof Tree) { + species = ((Tree) blockState.getData()).getSpecies(); + } + int xp = ExperienceConfig.getInstance().getWoodcuttingTreeXP(species); if (species == TreeSpecies.JUNGLE && experienceGainMethod == ExperienceGainMethod.TREE_FELLER) { @@ -75,8 +80,16 @@ public final class Woodcutting { if (mcMMO.getModManager().isCustomLog(blockState) && mcMMO.getModManager().getBlock(blockState).isDoubleDropEnabled()) { Misc.dropItems(blockState.getLocation(), blockState.getBlock().getDrops()); } - else if (Config.getInstance().getWoodcuttingDoubleDropsEnabled(((Tree) blockState.getData()).getSpecies())) { - Misc.dropItems(blockState.getLocation(), blockState.getBlock().getDrops()); + else { + //TODO Remove this workaround when casting to Tree works again + TreeSpecies species = TreeSpecies.GENERIC; + if (blockState.getData() instanceof Tree) { + species = ((Tree) blockState.getData()).getSpecies(); + } + + if (Config.getInstance().getWoodcuttingDoubleDropsEnabled(species)) { + Misc.dropItems(blockState.getLocation(), blockState.getBlock().getDrops()); + } } } diff --git a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java index 1755e39fd..f16b62293 100644 --- a/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java +++ b/src/main/java/com/gmail/nossr50/skills/woodcutting/WoodcuttingManager.java @@ -140,11 +140,15 @@ public class WoodcuttingManager extends SkillManager { Misc.dropItems(blockState.getLocation(), block.getDrops()); } else { - Tree tree = (Tree) blockState.getData(); - tree.setDirection(BlockFace.UP); + //TODO Remove this workaround when casting to Tree works again + if (blockState.getData() instanceof Tree) { + Tree tree = (Tree) blockState.getData(); + tree.setDirection(BlockFace.UP); + } switch (material) { case LOG: + case LOG_2: if (canGetDoubleDrops()) { Woodcutting.checkForDoubleDrop(blockState); } @@ -153,6 +157,7 @@ public class WoodcuttingManager extends SkillManager { break; case LEAVES: + case LEAVES_2: Misc.dropItems(blockState.getLocation(), block.getDrops()); break;