Posted January 4, 20187 yr 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.
January 4, 20187 yr 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.
January 4, 20187 yr 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.
January 4, 20187 yr 52 minutes ago, ArmamentHaki said: par2 is probably a parameter. Spoiler 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/
January 4, 20187 yr 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. All Projects found here: Website Main Programmer for: Better Animals Plus, Better Animal Models Created independently: QuickHomes, ClaimIt, ClaimIt API, CloneLand, DerpCats, QuickTeleports, QuickSpawns, MCMusicPlayer, MCDevDate, [SBM] Fluid Gun, OpenScreens Work on/Contribute to: Bewitchment Commissioned for: [SBM] Breadstone, [SBM] Infinite Falling, [SBM] Dead Man's Satchel, [SBM] Handheld Piston
January 4, 20187 yr 32 minutes ago, hiotewdew said: RayTraceResult rayResult = playerIn.rayTrace(howFarThePlayerCanReachinBlocks, partialTicksnotSurewhatthisIs); 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.
January 5, 20187 yr 43 minutes ago, 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) @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... All Projects found here: Website Main Programmer for: Better Animals Plus, Better Animal Models Created independently: QuickHomes, ClaimIt, ClaimIt API, CloneLand, DerpCats, QuickTeleports, QuickSpawns, MCMusicPlayer, MCDevDate, [SBM] Fluid Gun, OpenScreens Work on/Contribute to: Bewitchment Commissioned for: [SBM] Breadstone, [SBM] Infinite Falling, [SBM] Dead Man's Satchel, [SBM] Handheld Piston
January 5, 20187 yr 46 minutes ago, Draco18s said: so please double check that that rayTrace method is not marked @SideOnly(Side.CLIENT) Just now, hiotewdew said: @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.
January 5, 20187 yr So you have to convert the method to some sort of format that excludes partial ticks so it can run serverside. All Projects found here: Website Main Programmer for: Better Animals Plus, Better Animal Models Created independently: QuickHomes, ClaimIt, ClaimIt API, CloneLand, DerpCats, QuickTeleports, QuickSpawns, MCMusicPlayer, MCDevDate, [SBM] Fluid Gun, OpenScreens Work on/Contribute to: Bewitchment Commissioned for: [SBM] Breadstone, [SBM] Infinite Falling, [SBM] Dead Man's Satchel, [SBM] Handheld Piston
January 5, 20187 yr 4 hours ago, Draco18s said: 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.
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.