Workaround for ClassCastException: MaterialData cannot be cast to Tree

This commit is contained in:
TfT_02 2013-12-30 23:45:56 +01:00
parent ac7fc1020d
commit 334c44760f
2 changed files with 23 additions and 5 deletions

View File

@ -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());
}
}
}

View File

@ -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;