Jump to content
View in the app

A better way to browse. Learn more.

Forge Forums

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.

Featured Replies

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

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/

  • Author

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!

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/

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

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!

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...

Important Information

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

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.