drok0920 Posted July 31, 2014 Posted July 31, 2014 Hello, I would like to know how i could make a block suck all entities within a 5 block radius around it toward itself unless the entity is a custom entity. i dont know where to even start making this so please help. Thank you, Drok Quote
drok0920 Posted July 31, 2014 Author Posted July 31, 2014 i want it to slowly move not instantly move to the block. I would like it to be as if water was moving the entity but towards the block... if you need more info i may be able to supply a mod that does something like this. Quote
drok0920 Posted July 31, 2014 Author Posted July 31, 2014 oh ok then how will i get it to always move you towards the block in the shortest path? Quote
drok0920 Posted July 31, 2014 Author Posted July 31, 2014 Well i started reading into it and under stood nothing..... Quote
deyahruhd Posted July 31, 2014 Posted July 31, 2014 Get the position of the block relative to the entity's position, multiply the resulting vector by some factor then move the entity with that vector. If you want it to act like gravity, have the factor be affected by the entity's distance to the block. All simple vector math. Quote
drok0920 Posted July 31, 2014 Author Posted July 31, 2014 I'll be honest and say that that didnt help me.. but i will try to figure it out and then post what i have Quote
Toastrackenigma Posted August 1, 2014 Posted August 1, 2014 It's a very hard thing to do - in my mod I've got an item that when right-clicked sucks everything within 32 blocks towards it, here's the whole class incase it helps [embed=425,349] package com.toastrackengima.techcraft; //Imports import java.util.List; import net.minecraft.creativetab.CreativeTabs; import net.minecraft.entity.item.EntityItem; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.item.Item; import net.minecraft.item.ItemStack; import net.minecraft.world.World; public class TechDiamondMag extends Item{ public static CreativeTabs tabTech; //Creative tab public TechDiamondMag() { setMaxStackSize(1); //Basic stuff, no stacking, textures, damage, etc setUnlocalizedName("DiamondMag"); this.setCreativeTab(MainMod.tabTech); this.setTextureName("techcraft:DiamondMagnet"); setMaxDamage(1028); } public void addInformation(ItemStack par1ItemStack, EntityPlayer par2EntityPlayer, List par3List, boolean par4) { par3List.add("A golden magnet embued"); //Add some of the item lore par3List.add("with the power of diamond"); par3List.add("Max pull distance: 32"); } @Override public ItemStack onItemRightClick(ItemStack is, World world, EntityPlayer ep) { //While the item is being right-clicked double radius = 5; List<EntityItem> items = world.getEntitiesWithinAABB(EntityItem.class, ep.boundingBox.expand(32, 32, 32)); //The area to pull items from (change 32 to any number) for(EntityItem it : items){ double distX = ep.posX - it.posX; //Move those items! double distZ = ep.posZ - it.posZ; double distY = it.posY+1.5D - ep.posY; double dir = Math.atan2(distZ, distX); double speed = 1F / it.getDistanceToEntity(ep) * 15; //Adjust the speed here (change 15) if (distY<0) { it.motionY += speed; } it.motionX = Math.cos(dir) * speed; it.motionZ = Math.sin(dir) * speed; } is.damageItem(1, ep); //Damage the item (those magnets don't last forever, you know) return is; } } [/embed] You'd have to change some of that to make it into a block, but that should give you a starting point -Toastrackenigma Quote
drok0920 Posted August 1, 2014 Author Posted August 1, 2014 Thank you Toastrackenigma that does help i will try to put the in my onUpdate method or whatever its called. Once again thank you Quote
Recommended Posts
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.