Jump to content

Calling a swing?


GravityWolf
 Share

Recommended Posts

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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?

Link to comment
Share on other sites

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.

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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());

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

    • It looks like the port you are trying to host the server from is already in use (possibly by another server or another instance of Minecraft). You can change the port in server.properties, just make sure you forward that port on your router.
    • Can you send a crash report? (<game_directory>/crash-reports) ¿Puedes enviar un informe de fallas? (<directorio_del_juego>/crash-reports)
    • Never mind, I think finally found the list of Forge tags in the extended libraries of my workspace. I should be all set with that now.
    • This mod does it, so you could try looking at their code to get an idea of how they do it. Or, just use their mod. https://www.curseforge.com/minecraft/mc-mods/shutup-experimental-settings
    • And here is the cmd panel of the server         2023-01-29 20:12:16,231 main WARN Advanced terminal features are not available in this environment [20:12:16] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher running: args [--launchTarget, forgeserver, --fml.forgeVersion, 44.1.8, --fml.mcVersion, 1.19.3, --fml.forgeGroup, net.minecraftforge, --fml.mcpVersion, 20221207.122022, nogui] [20:12:16] [main/INFO] [cp.mo.mo.Launcher/MODLAUNCHER]: ModLauncher 10.0.8+10.0.8+main.0ef7e830 starting: java version 19.0.2 by Oracle Corporation; OS Windows 10 arch amd64 version 10.0 [20:12:16] [main/INFO] [mixin/]: SpongePowered MIXIN Subsystem Version=0.8.5 Source=union:/C:/Users/Muharrem/Desktop/FTB%20Servers/%7Bcurrent%20directory%202%5D/libraries/org/spongepowered/mixin/0.8.5/mixin-0.8.5.jar%2364!/ Service=ModLauncher Env=SERVER [20:12:16] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Muharrem\Desktop\FTB Servers\{current directory 2]\libraries\net\minecraftforge\fmlcore\1.19.3-44.1.8\fmlcore-1.19.3-44.1.8.jar is missing mods.toml file [20:12:16] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Muharrem\Desktop\FTB Servers\{current directory 2]\libraries\net\minecraftforge\javafmllanguage\1.19.3-44.1.8\javafmllanguage-1.19.3-44.1.8.jar is missing mods.toml file [20:12:16] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Muharrem\Desktop\FTB Servers\{current directory 2]\libraries\net\minecraftforge\lowcodelanguage\1.19.3-44.1.8\lowcodelanguage-1.19.3-44.1.8.jar is missing mods.toml file [20:12:16] [main/WARN] [ne.mi.fm.lo.mo.ModFileParser/LOADING]: Mod file C:\Users\Muharrem\Desktop\FTB Servers\{current directory 2]\libraries\net\minecraftforge\mclanguage\1.19.3-44.1.8\mclanguage-1.19.3-44.1.8.jar is missing mods.toml file [20:12:17] [main/INFO] [ne.mi.fm.lo.mo.JarInJarDependencyLocator/]: No dependencies to load found. Skipping! [20:12:18] [main/INFO] [cp.mo.mo.LaunchServiceHandler/MODLAUNCHER]: Launching target 'forgeserver' with arguments [nogui] [20:12:23] [main/INFO] [minecraft/DataFixers]: Building unoptimized datafixer [20:12:25] [modloading-worker-0/INFO] [ne.mi.co.ForgeMod/FORGEMOD]: Forge mod loading, version 44.1.8, for MC 1.19.3 with MCP 20221207.122022 [20:12:25] [modloading-worker-0/INFO] [ne.mi.co.MinecraftForge/FORGE]: MinecraftForge v44.1.8 Initialized [20:12:25] [Forge Version Check/INFO] [ne.mi.fm.VersionChecker/]: [forge] Starting version check at https://files.minecraftforge.net/net/minecraftforge/forge/promotions_slim.json [20:12:26] [Forge Version Check/INFO] [ne.mi.fm.VersionChecker/]: [forge] Found status: AHEAD Current: 44.1.8 Target: null [20:12:26] [main/INFO] [mojang/YggdrasilAuthenticationService]: Environment: authHost='https://authserver.mojang.com', accountsHost='https://api.mojang.com', sessionHost='https://sessionserver.mojang.com', servicesHost='https://api.minecraftservices.com', name='PROD' [20:12:27] [main/WARN] [minecraft/VanillaPackResourcesBuilder]: Assets URL 'union:/C:/Users/Muharrem/Desktop/FTB%20Servers/%7Bcurrent%20directory%202%5D/libraries/net/minecraft/server/1.19.3-20221207.122022/server-1.19.3-20221207.122022-srg.jar%23101!/assets/.mcassetsroot' uses unexpected schema [20:12:27] [main/WARN] [minecraft/VanillaPackResourcesBuilder]: Assets URL 'union:/C:/Users/Muharrem/Desktop/FTB%20Servers/%7Bcurrent%20directory%202%5D/libraries/net/minecraft/server/1.19.3-20221207.122022/server-1.19.3-20221207.122022-srg.jar%23101!/data/.mcassetsroot' uses unexpected schema [20:12:29] [main/INFO] [minecraft/RecipeManager]: Loaded 7 recipes [20:12:29] [main/INFO] [minecraft/AdvancementList]: Loaded 1179 advancements [20:12:30] [Server thread/INFO] [minecraft/DedicatedServer]: Starting minecraft server version 1.19.3 [20:12:30] [Server thread/INFO] [minecraft/DedicatedServer]: Loading properties [20:12:30] [Server thread/INFO] [minecraft/DedicatedServer]: Default game type: SURVIVAL [20:12:30] [Server thread/INFO] [minecraft/MinecraftServer]: Generating keypair [20:12:30] [Server thread/INFO] [minecraft/DedicatedServer]: Starting Minecraft server on 78.174.226.175:25565 [20:12:30] [Server thread/INFO] [minecraft/ServerConnectionListener]: Using default channel type [20:12:30] [Server thread/WARN] [minecraft/DedicatedServer]: **** FAILED TO BIND TO PORT! [20:12:30] [Server thread/WARN] [minecraft/DedicatedServer]: The exception was: java.net.BindException: Cannot assign requested address: bind [20:12:30] [Server thread/WARN] [minecraft/DedicatedServer]: Perhaps a server is already running on that port? [20:12:30] [Server thread/ERROR] [minecraft/MinecraftServer]: Encountered an unexpected exception java.lang.IllegalStateException: Failed to initialize server         at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:637) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at java.lang.Thread.run(Thread.java:1589) ~[?:?] {} [20:12:30] [Server thread/FATAL] [ne.mi.co.ForgeMod/]: Preparing crash report with UUID 9ad7a420-98e0-4be3-be96-3783b966a471 [20:12:30] [Server thread/ERROR] [minecraft/MinecraftServer]: This crash report has been saved to: C:\Users\Muharrem\Desktop\FTB Servers\{current directory 2]\.\crash-reports\crash-2023-01-29_20.12.30-server.txt [20:12:30] [Server thread/INFO] [minecraft/MinecraftServer]: Stopping server [20:12:30] [Server thread/INFO] [minecraft/MinecraftServer]: Saving worlds [20:12:30] [Server thread/ERROR] [minecraft/MinecraftServer]: Exception stopping the server java.lang.NullPointerException: Cannot invoke "net.minecraft.server.level.ServerLevel.m_6857_()" because "serverlevel2" is null         at net.minecraft.server.MinecraftServer.m_129885_(MinecraftServer.java:513) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at net.minecraft.server.MinecraftServer.m_7041_(MinecraftServer.java:586) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at net.minecraft.server.dedicated.DedicatedServer.m_7041_(DedicatedServer.java:498) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at net.minecraft.server.MinecraftServer.m_130011_(MinecraftServer.java:692) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at net.minecraft.server.MinecraftServer.m_206580_(MinecraftServer.java:251) ~[server-1.19.3-20221207.122022-srg.jar%23101!/:?] {re:classloading,pl:accesstransformer:B}         at java.lang.Thread.run(Thread.java:1589) ~[?:?] {} Press any key to continue . . .
  • Topics

×
×
  • Create New...

Important Information

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