Posted July 27, 201312 yr I was wondering if anyone knew the event that calls a swing that (possibly) does a certain amount of damage. I want it so when you right click with a weapon you swing. Also, I need some help ignoring armor with the swing. Thanks! Also, I have looked around a lot in EntityLivingBase, but I couldn't find the call for a swing. Also, when I search online I mostly get "I CAN SWING MY SWORD!" xP
July 27, 201312 yr It is: Minecraft.getMinecraft().thePlayer.swingItem(); This won't do any damage though.
July 27, 201312 yr Author It is: Minecraft.getMinecraft().thePlayer.swingItem(); This won't do any damage though. Thank you! Does anyone have an idea on how I could do damage with it?
July 27, 201312 yr I haven't actually tested it and am fairly new at modding, however I believe in order to deal damage you call the following: EntityWeWantToDamage.damageEntity(DamageSource par1DamageSource, float par2); Where EntityWeWantToDamage is replaced by whatever entity you're damaging, and par2 is the amount of damage dealt.
July 27, 201312 yr entity interract event anyone ?!?!?!?!? how to debug 101:http://www.minecraftforge.net/wiki/Debug_101 -hydroflame, author of the forge revolution-
July 27, 201312 yr Author I haven't actually tested it and am fairly new at modding, however I believe in order to deal damage you call the following: EntityWeWantToDamage.damageEntity(DamageSource par1DamageSource, float par2); Where EntityWeWantToDamage is replaced by whatever entity you're damaging, and par2 is the amount of damage dealt. Wait a minute, so um, what do I put in EntityWeWantToDamage? I add the par EntityLivingBase, but it gives me an error. And this is all supposed to go in onRightClick(), right?
July 27, 201312 yr I'm a noob modder but I do at least know enough to create that piece of code. Like Hydro said it would be good to investigate entity interact events. I'm sorry I wish I could help you more, I'm just not an expert though.
July 27, 201312 yr Author Pretty sure I got the code right now, but I am having trouble registering it with Forge. Here is my attempt at registering: MinecraftForge.EVENT_BUS.register(new ItemKatana.EntityInteractEvent()); And here is my ItemKatana class: package NoctusRealm.Items; import net.minecraft.client.Minecraft; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.Entity; import net.minecraft.entity.EntityLiving; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.EnumToolMaterial; import net.minecraft.item.ItemStack; import net.minecraft.item.ItemSword; import net.minecraft.util.DamageSource; import net.minecraft.util.MathHelper; import net.minecraft.world.World; import net.minecraftforge.event.ForgeSubscribe; import net.minecraftforge.event.entity.player.EntityInteractEvent; public class ItemKatana extends ItemSword { public ItemKatana(int id, EnumToolMaterial material) { super(id, material); setMaxStackSize(1); setCreativeTab(CreativeTabs.tabCombat); } @Override public ItemStack onItemRightClick(ItemStack itemStack, World world, EntityPlayer player) { Minecraft.getMinecraft().thePlayer.swingItem(); double calculatedX = 0.2 * (double) (-MathHelper.sin(player.rotationYaw/ 180.0F * (float) Math.PI)* MathHelper.cos(player.rotationPitch / 180.0F* (float) Math.PI) * 0.4f); double calculatedZ = 0.2 * (double) (MathHelper.cos(player.rotationYaw / 180.0F * (float) Math.PI)* MathHelper.cos(player.rotationPitch / 180.0F* (float) Math.PI) * 0.4f); player.motionX = calculatedX; player.motionZ = calculatedZ; player.motionY = 0.1; return itemStack; } @ForgeSubscribe public void EntityInteractEvent(EntityInteractEvent event, Entity entity) { if(entity instanceof EntityLiving) { ((EntityLiving)entity).attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)entity), 1); } } } Anyone know why I am getting this error? It is: ItemKatana.EntityInteractEvent cannot be resolved to a type
July 27, 201312 yr Author I'm a noob modder but I do at least know enough to create that piece of code. Like Hydro said it would be good to investigate entity interact events. I'm sorry I wish I could help you more, I'm just not an expert though. Oh, it's ok. I'm a huge noob too
July 27, 201312 yr About ignoring armour: Create new DamageSources: package xxx import net.minecraft.util.DamageSource; public class MyDamageSource extends DamageSource { public MyDamageSource(String par1Str) { super(par1Str); } public static MyDamageSource ArmorPiercing = new MyDamageSource("MyMod.ArmorPiercing").setDamageBypassesArmor(); public static MyDamageSource Magic = new MyDamageSource("MyMod.Magic").setMagicDamage(); public MyDamageSource setDamageBypassesArmor() { return (MyDamageSource) super.setDamageBypassesArmor(); } public MyDamageSource setMagicDamage() { return (MyDamageSource) super.setMagicDamage(); } } Here you got two lol (I just wrote it). You can also use EXISTING damage sources from net.minecraft.util.DamageSource; Hope it will help 1.7.10 is no longer supported by forge, you are on your own.
July 27, 201312 yr For giving damage, just do mc.thePlayer.attackEntity (I believe that's what it's called)
July 27, 201312 yr Author About ignoring armour: Create new DamageSources: package xxx import net.minecraft.util.DamageSource; public class MyDamageSource extends DamageSource { public MyDamageSource(String par1Str) { super(par1Str); } public static MyDamageSource ArmorPiercing = new MyDamageSource("MyMod.ArmorPiercing").setDamageBypassesArmor(); public static MyDamageSource Magic = new MyDamageSource("MyMod.Magic").setMagicDamage(); public MyDamageSource setDamageBypassesArmor() { return (MyDamageSource) super.setDamageBypassesArmor(); } public MyDamageSource setMagicDamage() { return (MyDamageSource) super.setMagicDamage(); } } Here you got two lol (I just wrote it). You can also use EXISTING damage sources from net.minecraft.util.DamageSource; Hope it will help Thanks, but how/where do I apply this to my weapon? And for MyMod.xxx do I change MyMod to the package I am in?
July 27, 201312 yr Author For giving damage, just do mc.thePlayer.attackEntity (I believe that's what it's called) Thanks, but I get an error under mc
July 28, 201312 yr Oh god... I don't have code but maybe my memory is good enough. if(entity instanceof EntityPlayer) { entity.attackEntityFrom(MyDamageSource.MyDamage, damagevalue); } Normally I would use it in hitEntity() (where you have attacker and target), but here you have only attacker, so this will be wrong (but you can always try implementing it). In this case you have to replace your: ((EntityLiving)entity).attackEntityFrom(DamageSource.causePlayerDamage((EntityPlayer)entity), 1); I really can't do anything now but this should work (i mean - try doing stuff with it). 1.7.10 is no longer supported by forge, you are on your own.
July 28, 201312 yr For giving damage, just do mc.thePlayer.attackEntity (I believe that's what it's called) Thanks, but I get an error under mc and you fail to mention which error. Although I'm guessing you are not only new to modding minecraft but also new to programming in general as well? If you guys dont get it.. then well ya.. try harder...
July 28, 201312 yr Pretty sure I got the code right now, but I am having trouble registering it with Forge. Here is my attempt at registering: MinecraftForge.EVENT_BUS.register(new ItemKatana.EntityInteractEvent()); You have to register the entire class, so it could be: MinecraftForge.EVENT_BUS.register(new ItemKatana()); But you'd better create a new class containing all event you need, instead of putting into your item class. public class MyEventHandler() { @ForgeSubscribe *first event @ForgeSuscribe *second event etc } then MinecraftForge.EVENT_BUS.register(new MyEventHandler());
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.