Jump to content
Search In
  • More options...
Find results that contain...
Find results in...

Smelting Input Metadata


zjohn4
 Share

Recommended Posts

Ihavent found a way to add a smelting recipe that uses metadata for the INPUT except this:

FurnaceRecipes.addSmelting(Int input-id, Int input-meta, ItemStack output);

 

problem with that for me is:|

Cannot make a static reference to the non-static method addSmelting(int, int, ItemStack) from the type FurnaceRecipes

 

Anywhere i put the statement, it returns that.

 

Using forge version: 4.1.1.251

Link to comment
Share on other sites

try using

ModLoader.addSmelting(Int input-id, Int input-meta, ItemStack output);

this is added by forge and is used to input furnace recipes into the base class without editing it

Hope this helps!

 

HOOOWWWW bout you go and look at where that leads to before commenting. There is no "addSmelting(int, int, ItemStack)" in net.minecraft.src.ModLoader. Only "addSmelting(int, ItemStack, Float)" and one without the float (for xp). And if you look at what is under those methods, it says "GameRegistry.addSmelting(input, output, experience);" and if you look at whats in THAT class, it leads to the one i mentioned.....and so, please look into this better next time

Link to comment
Share on other sites

FurnaceRecipes.smelting().addSmelting(item, metadata, out);

 

Is it really that hard to go through the class and check for instances of it?

 

...wondering why people arent reading all that i wrote...

 

no, of course its not hard to go through the class and check for instances...thats exactly what i did, except through SEVERAL classes including ModLoader, GameRegistry and FurnaceRecipes

 

""Cannot make a static reference to the non-static method ""....apparently my reference was static although i dont know how/why. it was just in the init method along with regular recipes, etc.

 

Link to comment
Share on other sites

  • 2 weeks later...

Actually, how to add the XP param to the Metadata Smelting? (MCP 7.18_pre1 & forge 6.0.0.328)

 

I got it working: Just added this to the item (you could switch xp based on damage value then), just doesnt drop xp orbs:

@Override
public void onCreated(ItemStack par1ItemStack, World par2World, EntityPlayer par3EntityPlayer) {

        int var2 = par1ItemStack.stackSize;
        float var3 = 5; //Exp for 1 Item
        int var4 = 0; //contains calculated xp to process

        if (var3 == 0.0F) {
            var2 = 0;
        }
        else if (var3 < 1.0F){
            var4 = MathHelper.floor_float((float)var2 * var3);
            if (var4 < MathHelper.ceiling_float_int((float)var2 * var3) && (float)Math.random() < (float)var2 * var3 - (float)var4) {
                ++var4;
            }
            var2 = var4;
        }
        else
        	var4=(int) (var2*var3);
        
        par3EntityPlayer.addExperience(var4);
}

Check out my Mod, NetherStuffs (http://netherstuffs.wikispaces.com/)! Its goal is to enrich the Nether to more use than "Giant Lava source". (Currently Work in Progress)

Link to comment
Share on other sites

FurnaceRecipes.smelting().addSmelting(item, metadata, out);

 

Is it really that hard to go through the class and check for instances of it?

 

...wondering why people arent reading all that i wrote...

 

no, of course its not hard to go through the class and check for instances...thats exactly what i did, except through SEVERAL classes including ModLoader, GameRegistry and FurnaceRecipes

 

""Cannot make a static reference to the non-static method ""....apparently my reference was static although i dont know how/why. it was just in the init method along with regular recipes, etc.

 

Your reference was static; You didn't use an instance of the FurnaceRecipes class to reference the method with, you used the static class. You should use an instance of the class unless the methods inside the class are static.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

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

 Share



  • Recently Browsing

    No registered users viewing this page.

  • Posts

    • Thanks everybody! I managed to fix it. I just had some missing attributes in my OilFluid class
    • W10 Pro. Android 11 on my S20+(or is it 12 already?). My two other computers are running on W10 home, all behind G-Data security suite, and a Fritz. I'm supposed to use Linux, no? I hate making things compatible, and Linux has limited access to some games I love, so...Mac is even worth I guess? I'm buying servers btw. It's not I couldn't set one up for Linux, but I lack the skills in online security, and I'm paranoid. So not a good combo I guess?
    • Yeah, the whole registry process can be quite confusing and daunting for how MC is working nowadays, but once you get the grasp of it, it actually saves a whole lot of effort, and quantity of code. I'd spend 3 days+ to actually figure I had to apply the getter(.get())[<-- is this even named getter?], to any of the .class references, because stupid Eclipse refused to de-obfuscate the source of problems. It was just making stupid a** auto fix suggestions, that didn't help at all. Google found the answer quite often though. And don't even get me started when I was trying to implement the Oil to world generation. I was literally tearing my hair out for days. But don't give up. We're not the only ones dealing with the reinvention of MC code wheel. I mean I get it. There's always room for improvements. But a wheel is just a wheel, right?
    • Thank you everybody, I have figured out the cause. I was accidentally passing in the constructor for the Fluids instead of the RegistryObject. I changed: super(new ForgeFlowingFluid.Properties( OilFluid.Source::new, OilFluid.Flowing::new, to: super(new ForgeFlowingFluid.Properties( ModFluids.OIL, ModFluids.FLOWING_OIL, And now the fluid actually works! But it doesn't spread though, I think I'd be able to figured it out from now. Thanks a lot Luis_ST and Cratthorax!
    • Because I was used to doing it like that in the past. Also, a block is very sparse in code quantity. Also, also, I would use the blocks to check against blocks of same type at lower levels, to mark as an indicator to what can be found digging deeper into the ground. Doing that with anything but the same object type is just unnecessarily bloating code. However, I had to use creative ways to get something working. What I did was rendering my block and its voxel shape invisible, make it nonsolid and notBlockMovement, then apply the randomTick() method, and using this: worldIn.destroyBlock(pos, true);...which basically drops the item after the blocks gets randomly destroyed. The good thing about that is, with the new DataPack function, I can do all that stuff with a single block object, and then just use instances of other block registers and their properties. I can also customize the loot tables for any of them, but don't need an actual block.class for any of them. Given how I have more then 60 ore blocks in my old mod, that is a really great thing about newer MC versions. The final solution was actually found in vanilla Block.AIR, after messing around with various methods, none of them doing what was easily done in the past MC versions with onBlockAdded(), and dropBlockAsItem(). I'll just leave the block code, and register code here for reference, which should give you a picture of the many things I was trying without success:
  • Topics

  • Who's Online (See full list)

×
×
  • Create New...

Important Information

By using this site, you agree to our Privacy Policy.