Jump to content

Recommended Posts

Posted

Hello everyone, I am attempting to change the harvest level of a Diamond Ore using the setHarvestLevel(String, int) method in Block.java. My issue is that the ForgeHooks class overrides all of my attempts to change it in the initTools() method. I am trying to figure out a way to change its harvest level so that initTools() method does not override my attempt to change. I have posted an example of what I have been doing so far to try to change its harvest level, with no success. Any help will be greatly appreciated, and thank you for your time.

 

https://gist.github.com/anonymous/6f2fb8e03ad0c7381417

Posted

Where exactly are you putting your code to change harvest level?  Your statement is a bit ambiguous when you say you attempt to change it in the initTools() method.  Do you mean you're editing the ForgeHooks' actual initTools() method by adding the code you wrote?  Or did you try to do it in the main class of your mod?  Or in the postInit() event?

 

I'm assuming it is ultimately a matter of timing on when your code is run versus the ForgeHooks' static initializer that contains the initTools() command.  Did you try doing it in postInit() event handler?

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

Hi jabelar, thanks for your reply. Sorry if I was being ambiguous, I should have mentioned that I am trying to change it in the postInit() event, plus I've tried preInit(). Neither method has overrode what Minecraft Forge has set in their initTools() method. I myself have not modified the initTools() method. Yes, I believe if I could somehow time my code so that it runs after that method is called, that would be great, but I cannot think of any way to do that. Thanks again!

Posted

I played around with the code myself and tried to get a console message out when the initTools() method was run but it never printed out.  So I'm really not sure when that is run.  I thought the static initializer for ForgeHooks class would run when that class was loaded, but I couldn't find a way to prove that.

 

I think you should try setting the harvest level once game is fully loaded, like perhaps have a block where onActivate you set the harvest level of the diamond_ore.  If that works, then maybe you can use some method you know will run during the game and use that to change the harvest level.

Check out my tutorials here: http://jabelarminecraft.blogspot.com/

Posted

ok mate ive done this before changing whether obsidian blows up with tnt or not i checked and you can set harvest level with the same method

 

in the post init type:

OverrideHarvestLevel.Init();

 

 

 

then create a class anywhere and type

code

package com.Package;

import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;

public class OverrideHarvestLevel {

public static void Init(EntityPlayer player) {

	Blocks.obsidian.setHarvestLevel(toolClass, level);

}

}

 

the impots arent right cause they were from other stuff i was using the class i gave this example from for import the necessary stuff and remove the rest, tell me how you get on

Posted

I believe that you should use this method for setting Hardness :  MinecraftForge.setBlockHarvestLevel(Block.OreDiamond, "pickaxe", hardness);

Don't be afraid to ask question when modding, there are no stupid question! Unless you don't know java then all your questions are stupid!

Posted

It will run at least on the first update for any mob/player.

public static boolean onLivingUpdate(EntityLivingBase entity)
    {
        return MinecraftForge.EVENT_BUS.post(new LivingUpdateEvent(entity));
    }

Listen to that event and you'll be fine.

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.

Guest
Unfortunately, your content contains terms that we do not allow. Please edit your content to remove the highlighted words below.
Reply to this topic...

×   Pasted as rich text.   Restore formatting

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Announcements



×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.