Posted May 21, 201411 yr How would I go about making a combination tool? A tool that could be a pickaxe and a hatchet, or a pickaxe and a shovel, or any combination. I currently tried using a method where it can harvest all blocks except ones listed like this [for a pickaxe and shovel combo] but it is able to harvest all 3 types effectively: @Override public boolean canHarvestBlock(Block par1, ItemStack itemStack) { boolean isHarvestable; isHarvestable= (par1 == Blocks.bedrock || par1 == Blocks.log || par1 == Blocks.log2); return !(isHarvestable); }
June 5, 201411 yr To debug this sort of issue, I add a lot of System.out.println() statements to help trace the code to confirm if it is doing what I expect. For example, if you change the code to the following: @Override public boolean canHarvestBlock(Block par1, ItemStack itemStack) { System.out.println("Executing canHarvestBlock() method, block parameter = "+par1.getUnlocalizedName()); boolean isHarvestable; isHarvestable= (par1 == Blocks.bedrock || par1 == Blocks.log || par1 == Blocks.log2); System.out.println("isHarvestable ="+isHarvestable); return !(isHarvestable); } It should tell you whether the method is being called at all, tell you what block was passed to the method, and what the isHarvestable value got set to. That sort of information usually helps you figure out where the execution is going wrong. Check out my tutorials here: http://jabelarminecraft.blogspot.com/
June 5, 201411 yr In a perfect minecraft world, you write something like this: class MySpadePick extends Tool implements Pickaxe, Spade { @Override pickaxe methods... @Override spade methods... } But, you cannot. Minecraft isn't written that way. -S- (if I helped, please click Thank and applaud) http://6upnqa.dm2301.livefilestore.com/y2mtf-vG7Tqq1TiiVpIm53KWj7294NDPoHfSHHb4PzZiMAUfRCfK0UY0MwOu7Q3zTBNVTKqWjr2-xgBfFRpQT5p-QivtvknPpoABMNUw9br9WuZcBFkjePhnAbW500gVm-P/sequiturian.png[/img]
June 5, 201411 yr Author To debug this sort of issue, I add a lot of System.out.println() statements to help trace the code to confirm if it is doing what I expect. For example, if you change the code to the following: @Override public boolean canHarvestBlock(Block par1, ItemStack itemStack) { System.out.println("Executing canHarvestBlock() method, block parameter = "+par1.getUnlocalizedName()); boolean isHarvestable; isHarvestable= (par1 == Blocks.bedrock || par1 == Blocks.log || par1 == Blocks.log2); System.out.println("isHarvestable ="+isHarvestable); return !(isHarvestable); } It should tell you whether the method is being called at all, tell you what block was passed to the method, and what the isHarvestable value got set to. That sort of information usually helps you figure out where the execution is going wrong. From this I can tell it isn't getting called period.
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.