Sfoglia il codice sorgente

Workaround for ClassCastException: MaterialData cannot be cast to Tree

TfT_02 11 anni fa
parent
commit
334c44760f

+ 16 - 3
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());
+            }
         }
     }
 

+ 7 - 2
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;