Jump to content

How to change weapons damage in Forge 1.6 without Enums


tlr38usd

Recommended Posts

I can't find out how to change weapon damage on my custom sword. I have it extending the item sword file because I want it to be enchantable, but I can't find a way to change the blue tooltip. I need to be able to change the weaponDamage field but I'm not sure how.

Link to comment
Share on other sites

Just assign a new value to the field in the constructor of your Sword.

Or, depending on what you wanna achieve, change the damageVsEntity of your EnumToolMaterial.

 

How do I change the constructor? Also, I'm not using EnumToolMaterials.

Link to comment
Share on other sites

Really some people learn Java from mixing and they have a hard time doing it the other way around so just because you learn Java then started mixing does not mean everyone must learn Java first you are saying they MUST learn it first.

Link to comment
Share on other sites

Really some people learn Java from mixing and they have a hard time doing it the other way around so just because you learn Java then started mixing does not mean everyone must learn Java first you are saying they MUST learn it first.

 

Thank you for defending me Chibill.

 

Now, when you say change the constructor I thought you meant change something other than the enumtoolmaterial and I was confused because I didn't see everything.

 

This is the constructor I found in the minecraft src Item.java

public static Item swordIron = (new ItemSword(11, EnumToolMaterial.IRON)).setUnlocalizedName("swordIron").func_111206_d("iron_sword");

 

This is my constructor

battleAxes = new itemBattleAxe(idBase + weaponMaterials.weaponMats.length + i, weaponMaterials.weaponMats[i]).setUnlocalizedName(weaponMaterials.weaponMats[i].toolName + "Battleaxe");

 

This goes in a for loop that loops through all the weaponMats I have declared. I wanted to be able to remotely add and take away tool materials and I wanted my own variables (color, render passes, alternate textures etc.). So I went with that vs. the enumtoolmaterials.

 

I only ask questions when I have exhausted all other sources and I expect I will be pointed in the right direction, not have my methods insulted. I am learning java through modding, that was my plan all along, and unless you count HTML as a solid programming language I had no prior experience so I'm sorry if I'm not in touch with your precious "lingo".

 

I have made a small hack that works to an extent.

static EnumToolMaterial base = EnumHelper.addToolMaterial("IRON", 2, 250, 6.0F, 0, 14);

public weaponBase(int par1, weaponMaterials mat)
{

	super(par1, base);

	this.toolMaterial = mat;
	this.setCreativeTab(CreativeTabs.tabCombat);
	this.maxStackSize = 1;

	base = EnumHelper.addToolMaterial("BASE", toolMaterial.harvestLevel, toolMaterial.maxUses, toolMaterial.efficiencyOnProperMaterial, damageModifier + toolMaterial.getDamageVsEntity(), toolMaterial.enchantability);
}

 

This gives me the scaled damages I want but it is lightyears away from working soundly. I used to use getDamageVsEntity but that broke in the 1.6 update, so is there a new way to do it without using enums?

Link to comment
Share on other sites

That's what I am talking about. That is NOT a constructor. That is the invocation of a constructor by using the new keyword.

You need to change the field in your constructor, as I said before.

 

public weaponBase(int par1, weaponMaterials mat)
{

	super(par1, base);

	this.toolMaterial = mat;
	this.setCreativeTab(CreativeTabs.tabCombat);
	this.maxStackSize = 1;

	base = EnumHelper.addToolMaterial("BASE", toolMaterial.harvestLevel, toolMaterial.maxUses, toolMaterial.efficiencyOnProperMaterial, damageModifier + toolMaterial.getDamageVsEntity(), toolMaterial.enchantability);
}

Am I constructing yet? =D

Also the "base" thingy is the cheat I'm using that sorta works.

Link to comment
Share on other sites

That's indeed your constructor. and in there just assign the weaponDamage field to whatever value you want.

 

I did try that, but it is a private float. There is the "public Multimap func_111205_h()" method that uses the weaponDamage float, but I haven't done much research on it yet.

Link to comment
Share on other sites

There is no such thing as inaccessible fields in java. Use reflection, make an access transformer, whatever you want.

 

OOOOOOoooooooooooooooooooo......................

You have no idea the can of worms you've just opened!!!!

Lol!

;)

 

Thanks!

 

 

Odds are good I've been programming since before you were born. Yeah. I'm OLD school.

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