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.

Kuikenpower

Members
  • Joined

  • Last visited

  1. When I try to add my HookEntity class it says I am spamming.
  2. I made a lasso item in forge 1.20.1 that can be used as grappling hook and to move entities towards it. When I test it on singleplayer it works flawlessly, but if I use it on servers it has a deflection. Also if I have used it once, all projectiles receive a deflection until I leave. My Item class: package com.kuikenpower.falidsmp.init.item; import java.util.List; import com.kuikenpower.falidsmp.entities.HookEntity; import net.minecraft.core.BlockPos; import net.minecraft.network.protocol.game.ClientboundLevelParticlesPacket; import net.minecraft.server.level.ServerPlayer; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.Entity.RemovalReason; import net.minecraft.world.entity.EntityType; import net.minecraft.world.entity.ambient.Bat; import net.minecraft.world.entity.item.ItemEntity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; import net.minecraft.world.phys.Vec3; public class MesaLasso extends Item { public HookEntity entity; public Vec3 startPoint; public Vec3 controlPoint; public Vec3 endPoint; public double lastDistance; public long startTime; public Bat leashHolder; private static final long MOVEMENT_DURATION = 1000; public AABB leashArea; public MesaLasso(Properties p_41383_) { super(p_41383_); // TODO Auto-generated constructor stub } public static Vec3 lerpBetweenPoints(Vec3 start, Vec3 end, float percentage) { double x = start.x + (end.x - start.x) * percentage; double y = start.y + (end.y - start.y) * percentage; double z = start.z + (end.z - start.z) * percentage; return new Vec3(x, y, z); } public Vec3 getCurvePosition(float percentage) { // Calculate the position between the start and end points along the y-axis double y = startPoint.y + (endPoint.y - startPoint.y) * percentage; double curveFactor = 2.0; y += curveFactor * Math.sin(percentage * Math.PI * ((2 * Math.PI) / 8)); // Use the original x and z coordinates from the start point double x = startPoint.x + (endPoint.x - startPoint.x) * percentage; double z = startPoint.z + (endPoint.z - startPoint.z) * percentage; return new Vec3(x, y, z); } @Override public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand p_41434_) { if(entity != null) { if(leashHolder != null) { entity.blockColliding = false; entity.kill(); leashArea = new AABB(leashHolder.position().x + 2, leashHolder.position().y + 2, leashHolder.position().z + 2, leashHolder.position().x - 2, leashHolder.position().y - 2, leashHolder.position().z - 2); leashHolder.remove(RemovalReason.DISCARDED); killLead(level); } } entity = new HookEntity(level, player); level.addFreshEntity(entity); if(entity != null) { leashHolder = new Bat(EntityType.BAT, level); leashHolder.setPos(entity.position()); leashHolder.addTag("leashHolder"); leashHolder.setInvulnerable(true); leashHolder.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 10, 10, false, false)); level.addFreshEntity(leashHolder); } return super.use(level, player, p_41434_); } @Override public void inventoryTick(ItemStack p_41404_, Level p_41405_, Entity player, int p_41407_, boolean p_41408_) { if(entity != null) { if(leashHolder != null) { if(entity.entityColliding == false) { leashHolder.setPos(entity.position()); leashHolder.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 10, 10, false, false)); } } double deltaX = entity.position().x - player.position().x; double deltaY = entity.position().y - player.position().y; double deltaZ = entity.position().z - player.position().z; Vec3 midPoint = new Vec3((entity.position().x + player.position().x) * 0.5f, (entity.position().y + player.position().y) * 0.5f, (entity.position().z + player.position().z) * 0.5f); double Yangle = Math.atan2(deltaZ, deltaX) * (180 / Math.PI) + 90f; double dX = (Math.sin(Yangle)) * 0.25; double dZ = (Math.cos(Yangle)) * 0.25; if(deltaZ < 0) { deltaZ *= -1; } double Xangle = Math.atan(deltaY / deltaZ) * (180 / Math.PI); double dY = (Math.sin(Xangle)) * 0.25; float hLength = (float)Math.sqrt((deltaX * deltaX) + (deltaZ * deltaZ)); float length = (float)Math.sqrt((hLength * hLength) + (deltaY * deltaY)); float tCrease = 0.25f / length; for (float t = 0; t <= 1; t += tCrease) { double x = player.position().x + (entity.position().x - player.position().x) * t; double y = (player.position().y + 1f) + (entity.position().y - (player.position().y + 1)) * t; double z = player.position().z + (entity.position().z - player.position().z) * t; } if(entity.blockCollidingOnce) { startPoint = player.position(); endPoint = new Vec3(entity.position().x, entity.position().y + 2.5, entity.position().z); startTime = System.currentTimeMillis(); entity.blockCollidingOnce = false; } if(entity.blockColliding) { double dx = endPoint.x - player.position().x; double dy = endPoint.y - player.position().y; double dz = endPoint.z - player.position().z; double distanceToTarget = Math.sqrt(dx * dx + dy * dy + dz * dz); if (distanceToTarget > 0.5) { dx /= distanceToTarget; dy /= distanceToTarget; dz /= distanceToTarget; player.setDeltaMovement(dx * 1, dy * 1 , dz * 1); } else { entity.blockColliding = false; entity.kill(); leashArea = new AABB(leashHolder.position().x + 2, leashHolder.position().y + 2, leashHolder.position().z + 2, leashHolder.position().x - 2, leashHolder.position().y - 2, leashHolder.position().z - 2); leashHolder.remove(RemovalReason.DISCARDED); killLead(p_41405_); } } if(entity.entityCollidingOnce) { startPoint = player.position(); endPoint = new Vec3(entity.position().x, entity.position().y + 2.5, entity.position().z); startTime = System.currentTimeMillis(); entity.entityCollidingOnce = false; } if(entity.entityColliding) { leashHolder.setPos(entity.hitEntity.position()); leashHolder.addEffect(new MobEffectInstance(MobEffects.INVISIBILITY, 10, 10, false, false)); double dx = player.position().x - entity.hitEntity.position().x; double dy = player.position().y - entity.hitEntity.position().y; double dz = player.position().z - entity.hitEntity.position().z; double distanceToTarget = Math.sqrt(dx * dx + dy * dy + dz * dz); if (distanceToTarget > 0.5) { dx /= distanceToTarget; dy /= distanceToTarget; dz /= distanceToTarget; entity.hitEntity.setDeltaMovement(dx * 1, dy * 1 , dz * 1); } else { entity.entityColliding = false; entity.kill(); leashArea = new AABB(leashHolder.position().x + 2, leashHolder.position().y + 2, leashHolder.position().z + 2, leashHolder.position().x - 2, leashHolder.position().y - 2, leashHolder.position().z - 2); leashHolder.remove(RemovalReason.DISCARDED); killLead(p_41405_); } } } super.inventoryTick(p_41404_, p_41405_, player, p_41407_, p_41408_); } private boolean isPlayerCollidingWithBlock(Entity player) { AABB playerBoundingBox = player.getBoundingBox(); int playerX = (int) player.getX(); int playerY = (int) player.getX(); int playerZ = (int) player.getZ(); for (int x = playerX - 1; x <= playerX + 1; x++) { for (int y = playerY - 1; y <= playerY + 1; y++) { for (int z = playerZ - 1; z <= playerZ + 1; z++) { if (player.level().getBlockState(new BlockPos(x, y, z)).getCollisionShape(player.level(), new BlockPos(x, y, z)).isEmpty()) { continue; } if (playerBoundingBox.intersects(new AABB(x, y, z, x + 1, y + 1, z + 1))) { return true; } } } } return false; // Player is not colliding with any block. } private void sendPacketToAllPlayers(ClientboundLevelParticlesPacket packet, Player sourcePlayer) { if(sourcePlayer.getServer() != null) { for (ServerPlayer player : sourcePlayer.getServer().getPlayerList().getPlayers()) { player.connection.send(packet); } } } public void killLead(Level level) { if(leashArea != null) { List<ItemEntity> list = level.getEntitiesOfClass(ItemEntity.class, leashArea); for(ItemEntity item : list) { if(item.getItem().getItem() == Items.SHIELD); { item.kill(); } } } } }
  3. I have made an item that adds a sphere of particles around a player, but my IDE gives an error at the addParticle. Does someone know what the problem is? This is the code btw. package com.kuikenpower.falidsmp.init.item; import com.kuikenpower.falidsmp.particle.ModParticles; import net.minecraft.client.particle.Particle; import net.minecraft.core.Position; import net.minecraft.core.particles.ParticleOptions; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.AxeItem; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Tier; import net.minecraft.world.level.Level; import net.minecraft.world.phys.Vec3; public class jungleDagger extends AxeItem{ public jungleDagger(Tier p_40521_, float p_40522_, float p_40523_, Properties p_40524_) { super(p_40521_, p_40522_, p_40523_, p_40524_); // TODO Auto-generated constructor stub } @Override public void inventoryTick(ItemStack p_41404_, Level p_41405_, Entity entity, int p_41407_, boolean p_41408_) { Player player = (Player)entity; if(player.getMainHandItem().getItem() instanceof SandSword) { player.addEffect(new MobEffectInstance(MobEffects.MOVEMENT_SPEED, 20)); } } @Override public InteractionResultHolder<ItemStack> use(Level world, Player p_41433_, InteractionHand p_41434_) { Position location = p_41433_.getPosition(1); for (double i = 0; i <= Math.PI; i += Math.PI / 10) { double radius = Math.sin(i); double y = Math.cos(i); for (double a = 0; a < Math.PI * 2; a+= Math.PI / 10) { double x = Math.cos(a) * radius; double z = Math.sin(a) * radius; ((Vec3) location).add(x, y, z); world.addParticle(ParticleTypes.LARGE_SMOKE, location); ((Vec3) location).subtract(x, y, z); } } return super.use(world, p_41433_, p_41434_); } }
  4. I did everything you said, but it still crashes package com.kuikenpower.falidsmp.init.item; import java.util.List; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.targeting.TargetingConditions; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; public class flowerStaff extends SwordItem{ public flowerStaff(Tier p_43269_, int p_43270_, float p_43271_, Properties p_43272_) { super(p_43269_, p_43270_, p_43271_, p_43272_); // TODO Auto-generated constructor stub } @Override public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int p_41407_, boolean p_41408_) { LivingEntity player = (LivingEntity) entity; if(player.isCrouching() && player.getMainHandItem().getItem() instanceof flowerStaff) { Double x = player.getX(); Double y = player.getY(); Double z = player.getZ(); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 2.5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 2.5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 2.5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 2.5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z + 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z + 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z - 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z - 2.5, 5, 5, 5); } super.inventoryTick(itemStack, world, entity, p_41407_, p_41408_); } @Override public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand p_41434_) { if(world.isClientSide) { AABB healArea = new AABB(player.getX() + 5, player.getY() + 2, player.getZ() + 5, player.getX() - 5, player.getY() - 2, player.getZ() - 5); if(player.isCrouching()) { List<LivingEntity> entityInArea = world.getNearbyEntities(LivingEntity.class, TargetingConditions.forNonCombat(), player, healArea); LivingEntity targets = entityInArea.get(5); targets.addEffect(new MobEffectInstance(MobEffects.HEAL, 20)); } } return super.use(world, player, p_41434_); } }
  5. Hi, Thanks for reacting faster than the flash, but what should I use instead of null and null?
  6. Hi, I want to make an item that will heal entities in an area around the player(it doesn't matter if the player will also heal himself) but when I right-click the game will crash. Here's my code: package com.kuikenpower.falidsmp.init.item; import java.util.List; import net.minecraft.core.particles.ParticleTypes; import net.minecraft.world.InteractionHand; import net.minecraft.world.InteractionResultHolder; import net.minecraft.world.effect.MobEffectInstance; import net.minecraft.world.effect.MobEffects; import net.minecraft.world.entity.Entity; import net.minecraft.world.entity.LivingEntity; import net.minecraft.world.entity.ai.memory.NearestVisibleLivingEntities; import net.minecraft.world.entity.player.Player; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; import net.minecraft.world.level.Level; import net.minecraft.world.phys.AABB; public class flowerStaff extends SwordItem{ public flowerStaff(Tier p_43269_, int p_43270_, float p_43271_, Properties p_43272_) { super(p_43269_, p_43270_, p_43271_, p_43272_); // TODO Auto-generated constructor stub } @Override public void inventoryTick(ItemStack itemStack, Level world, Entity entity, int p_41407_, boolean p_41408_) { Player player = (Player) entity; if(player.isCrouching() && player.getMainHandItem().getItem() instanceof flowerStaff) { Double x = player.getX(); Double y = player.getY(); Double z = player.getZ(); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 2.5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 2.5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 2.5, y, z + 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 2.5, y, z - 5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z + 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z + 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x + 5, y, z - 2.5, 5, 5, 5); world.addParticle(ParticleTypes.HAPPY_VILLAGER, x - 5, y, z - 2.5, 5, 5, 5); } super.inventoryTick(itemStack, world, entity, p_41407_, p_41408_); } @Override public InteractionResultHolder<ItemStack> use(Level world, Player player, InteractionHand p_41434_) { if(world.isClientSide) { AABB healArea = new AABB(player.getX() + 5, player.getY() + 2, player.getZ() + 5, player.getX() - 5, player.getY() - 2, player.getZ() - 5); if(player.isCrouching()) { List<LivingEntity> entityInArea = world.getNearbyEntities(null, null, player, healArea); LivingEntity targets = entityInArea.get(EAT_DURATION); targets.addEffect(new MobEffectInstance(MobEffects.HEAL, 20)); } } return super.use(world, player, p_41434_); } }
  7. When using just Player, I can't use .input. How would I be able to not have LocalPlayer but still use .input?
  8. Kuikenpower joined the community
  9. I made a trident that lets you walk on water when holding it, but everytime I put it in my hotbar my game crashes. This is my code: package com.kuikenpower.falidsmp.init.item; import net.minecraft.client.player.LocalPlayer; import net.minecraft.core.BlockPos; import net.minecraft.world.entity.Entity; import net.minecraft.world.item.Item; import net.minecraft.world.item.ItemStack; import net.minecraft.world.level.Level; import net.minecraft.world.level.block.Block; import net.minecraft.world.level.block.Blocks; import net.minecraftforge.api.distmarker.Dist; import net.minecraftforge.api.distmarker.OnlyIn; @OnlyIn(Dist.CLIENT) public class TridentItem extends Item { public TridentItem(Properties arg0) { super(arg0); // TODO Auto-generated constructor stub } @Override public void inventoryTick(ItemStack p_41404_, Level world, Entity entity, int p_41407_, boolean p_41408_) { LocalPlayer player = (LocalPlayer)entity; if(player.getMainHandItem().getItem() instanceof TridentItem) { BlockPos pos = player.getOnPos(); Block blockClicked = world.getBlockState(pos).getBlock(); if(blockClicked == Blocks.WATER) { player.setDeltaMovement(player.getDeltaMovement().multiply(1.05, 0, 1.05)); if(player.input.jumping) { player.setDeltaMovement(player.getDeltaMovement().add(0, 1, 0)); } } } } }

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.