Jump to content

Recommended Posts

Posted

Hello,

 

I have been having trouble figuring out how to make my sword spawn lightning on right click where I look. I have basic knowledge of java, I am currently taking mod design 2 on youth digital. I still don't know what vectors, and par2 and all that means, Im not very advanced.

This is what I have so far:

package mymod.items;

import library.items.LibItemSword;
import library.util.Actions;
import mymod.Main;
import net.minecraft.block.material.Material;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.PotionHealth;
import net.minecraft.util.ActionResult;
import net.minecraft.util.EnumHand;
import net.minecraft.world.World;
import net.minecraftforge.event.entity.player.PlayerInteractEvent;

public class MySword2 extends LibItemSword {

	public MySword2(String registryName, ToolMaterial material) {
		super(registryName, material);
		this.setCreativeTab(Main.my_creative_tab_1);
		this.setScale(0.5F);
	}

	
	@Override
	public boolean hitEntity(ItemStack stack, EntityLivingBase hitEntity, EntityLivingBase attackingEntity)
	{
	hitEntity.addPotionEffect(new PotionEffect(Potion.getPotionById(2), 100, 10));
	return true;
	}
	
	@Override
	public ActionResult<ItemStack> onItemRightClick(World worldIn, EntityPlayer playerIn, EnumHand handIn) {
		//Actions.summonLightningAtPosition(worldIn, playerIn.get, 5);
		
		return super.onItemRightClick(worldIn, playerIn, handIn);
	}
}

If you could help that would be greatly appreciated.

Posted

You need to create a new lightning entity and spawn it in the world at the desired postiion.

You can get that by doing a ray trace from the player's eye position and look vector and getting the point that that ray collides with something.

There's a raytrace method in the World class that will work (look for a method that returns MovingObjectPosition)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

A Vector is a Way in the world. It can start at any point and end at any point 

That means it has a X, a Y and a Z amount of units.

It is more simple than it sounds, really.

 

par2 is probably a parameter.

Posted
  On 1/4/2018 at 10:11 PM, ArmamentHaki said:

par2 is probably a parameter.

Expand  
  Reveal hidden contents

 

  • Like 1

Don't PM me with questions. They will be ignored! Make a thread on the appropriate board for support.

 

1.12 -> 1.13 primer by williewillus.

 

1.7.10 and older versions of Minecraft are no longer supported due to it's age! Update to the latest version for support.

 

http://www.howoldisminecraft1710.today/

Posted

A Vector is a list of three numbers. It has an X value, a Y value, and a Z value. In Minecraft, X, Y, and Z refer to the position a block/tile/entity is located at.

So if you have a Vector and desire a BlockPos, you can create a BlockPos with a vector via

new BlockPos(Vector)

Draco referenced the rayTrace function.

You can use the EntityPlayer rayTrace to find the Vector (Block Position) that the play is currently looking at.

So you can use

RayTraceResult rayResult = playerIn.rayTrace(howFarThePlayerCanReachinBlocks, partialTicksnotSurewhatthisIs);
BlockPos lookingPosition = new BlockPos(rayResult.hitVec);
// Summon your lightning at lookingPosition

I haven't tested but if that doesn't work try adding the hitVec to the player position like this:

BlockPos lookingPosition = rayResult.hitVec.add(player.getPositionVector());

 

Pursue your modding course and make sure you understand Java and not just Minecraft code.

Java is a useful skill and a powerful tool.

Posted
  On 1/4/2018 at 11:20 PM, hiotewdew said:

RayTraceResult rayResult = playerIn.rayTrace(howFarThePlayerCanReachinBlocks, partialTicksnotSurewhatthisIs);

Expand  

Partial Ticks is what fraction of a game-tick the current render frame is on (if the game runs at 20 ticks a second and the application is rendering at 60 frames a second, then each frame is 0.3333 of a tick). Partial ticks only make sense client side, so please double check that that rayTrace method is not marked @SideOnly(Side.CLIENT)

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted
  On 1/4/2018 at 11:54 PM, Draco18s said:

Partial Ticks is what fraction of a game-tick the current render frame is on (if the game runs at 20 ticks a second and the application is rendering at 60 frames a second, then each frame is 0.3333 of a tick). Partial ticks only make sense client side, so please double check that that rayTrace method is not marked @SideOnly(Side.CLIENT)

Expand  
 @Nullable
    @SideOnly(Side.CLIENT)
    public RayTraceResult rayTrace(double blockReachDistance, float partialTicks)
    {
        Vec3d vec3d = this.getPositionEyes(partialTicks);
        Vec3d vec3d1 = this.getLook(partialTicks);
        Vec3d vec3d2 = vec3d.addVector(vec3d1.x * blockReachDistance, vec3d1.y * blockReachDistance, vec3d1.z * blockReachDistance);
        return this.world.rayTraceBlocks(vec3d, vec3d2, false, false, true);
    }

This is the method...

Posted
  On 1/4/2018 at 11:54 PM, Draco18s said:

so please double check that that rayTrace method is not marked @SideOnly(Side.CLIENT)

Expand  
  On 1/5/2018 at 12:40 AM, hiotewdew said:

@SideOnly(Side.CLIENT)

Expand  

...

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

Posted

So you have to convert the method to some sort of format that excludes partial ticks so it can run serverside.

Posted
  On 1/4/2018 at 8:35 PM, Draco18s said:

There's a raytrace method in the World class that will work (look for a method that returns MovingObjectPosition)

Expand  

 

Apparently I'm a complete and utter jerk and come to this forum just like to make fun of people, be confrontational, and make your personal life miserable.  If you think this is the case, JUST REPORT ME.  Otherwise you're just going to get reported when you reply to my posts and point it out, because odds are, I was trying to be nice.

 

Exception: If you do not understand Java, I WILL NOT HELP YOU and your thread will get locked.

 

DO NOT PM ME WITH PROBLEMS. No help will be given.

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



  • Recently Browsing

    • No registered users viewing this page.
  • Posts

    • Add the crash-report or latest.log (logs-folder) with sites like https://mclo.gs/ and paste the link to it here  
    • So i have a forge modded aternos server that worked just fine for a month untill today it suddenly crashes most of the time giving errors and idk which mod is causing the error or its smth else here is the crash log link https://mclo.gs/gGkzGKT
    • Struggling to decipher a crash report I'm getting in a custom modpack I'm tinkering with. The crash happens on startup, but weirdly, only some of the time. It seems to be related to Steves Carts, but weirdly it only started happening recently, and I can't identify if another mod is conflicting, or why it is only happening some of the time:   java.lang.NullPointerException: Cannot invoke "net.minecraft.world.entity.player.Player.m_20202_()" because "player" is null at vswe.stevescarts.events.OverlayEventHandler.onRenderTick(OverlayEventHandler.java:24) ~[stevescarts-1.20.1-1.1.14.jar%23527!/:1.20.1-1.1.14] {re:classloading} at net.minecraftforge.eventbus.EventBus.doCastFilter(EventBus.java:260) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.lambda$addListener$11(EventBus.java:252) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:315) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.eventbus.EventBus.post(EventBus.java:296) ~[eventbus-6.0.5.jar%23127!/:?] {} at net.minecraftforge.event.ForgeEventFactory.onRenderTickEnd(ForgeEventFactory.java:919) ~[forge-1.20.1-47.1.106-universal.jar%23581!/:?] {re:mixin,re:classloading,pl:mixin:APP:modernfix-forge.mixins.json:perf.potential_spawns_alloc.ForgeEventFactoryMixin,pl:mixin:A} at net.minecraft.client.Minecraft.m_91383_(Minecraft.java:1148) ~[client-1.20.1-20230612.114412-srg.jar%23576!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.client.Minecraft.m_91374_(Minecraft.java:718) ~[client-1.20.1-20230612.114412-srg.jar%23576!/:?] {re:mixin,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:runtimedistcleaner:A,re:classloading,pl:accesstransformer:B,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick,xf:fml:xaeroworldmap:xaero_wm_minecraft_runtick_render_call,xf:fml:xaerominimap:xaero_minecraftclient,xf:fml:xaeroworldmap:xaero_wm_minecraftclient,pl:mixin:A,pl:runtimedistcleaner:A} at net.minecraft.client.main.Main.main(Main.java:218) ~[minecraft-1.20.1-client.jar:?] {re:mixin,pl:runtimedistcleaner:A,re:classloading,pl:mixin:APP:flywheel.mixins.json:ClientMainMixin,pl:mixin:A,pl:runtimedistcleaner:A}     Including some extra info in case any of it is relevant^. Appreciate any ideas/advice!    
  • Topics

×
×
  • Create New...

Important Information

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