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

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

  • 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?

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.

entity interract event anyone ?!?!?!?!?

how to debug 101:http://www.minecraftforge.net/wiki/Debug_101

-hydroflame, author of the forge revolution-

  • 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?

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.

  • 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

  • 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 xD

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.

  • 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?

  • 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

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.

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

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.

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.