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.

Featured Replies

  • Author
5 hours ago, Luis_ST said:

re you exactly talking about

ammm a ray casting like when you send a ray from one dot in direction of another

in my case cast a ray from player's head in direction of players view ,sorry for confusion

  • Author

thanks b.t.w. dose anybody know how to detect entity that collides with ray

public static BlockHitResult getTargetofgun(Level pLevel, Player pPlayer, ClipContext.Fluid pFluidMode,double reach/*reach*/) {
        float f = pPlayer.getXRot();
        float f1 = pPlayer.getYRot();
        Vec3 vec3 = pPlayer.getEyePosition();
        float f2 = Mth.cos(-f1 * ((float)Math.PI / 180F) - (float)Math.PI);
        float f3 = Mth.sin(-f1 * ((float)Math.PI / 180F) - (float)Math.PI);
        float f4 = -Mth.cos(-f * ((float)Math.PI / 180F));
        float f5 = Mth.sin(-f * ((float)Math.PI / 180F));
        float f6 = f3 * f4;
        float f7 = f2 * f4;
        Vec3 vec31 = vec3.add((double)f6 * reach, (double)f5 * reach, (double)f7 * reach);
        return pLevel.clip(new ClipContext(vec3, vec31, ClipContext.Block.OUTLINE, pFluidMode, pPlayer));
    }

is there a function like clip() that detects LivingEntity instead of block

2 hours ago, volkov said:

thanks b.t.w. dose anybody know how to detect entity that collides with ray

that sounds a lot like looking at enderman to piss if off. look at vanilla code.

  • Author
33 minutes ago, MFMods said:

that sounds a lot like looking at enderman to piss if off. look at vanilla code.

im looked if im not mistaken you are talking about function isLookingAtMe()?

boolean isLookingAtMe(Player pPlayer) {
      ItemStack itemstack = pPlayer.getInventory().armor.get(3);
      if (itemstack.isEnderMask(pPlayer, this)) {
         return false;
      } else {
         Vec3 vec3 = pPlayer.getViewVector(1.0F).normalize();
         Vec3 vec31 = new Vec3(this.getX() - pPlayer.getX(), this.getEyeY() - pPlayer.getEyeY(), this.getZ() - pPlayer.getZ());
         double d0 = vec31.length();
         vec31 = vec31.normalize();
         double d1 = vec3.dot(vec31);
         return d1 > 1.0D - 0.025D / d0 ? pPlayer.hasLineOfSight(this) : false;
      }
   }

 

yes.

scalar product of two vectors is "length" (magnitude) of first one, multiplied by "length" (magnitude) of second one, multiplied by cosine of angle between them. in this case first two are equal to 1 and d1 is cosine of angle between players exact line of sight and the line between player and enderman. then you basically say "if angle is small enough (and has line of sight), return true".

  • 3 weeks later...
  • Author

sorry for stupid question that im about to ask but dose vectors need tow dots but vec3 constructor only requires 1 dot(set of coordinates) and is called vector ?

also it works thanks!

boolean islookinatit(Player player,LivingEntity entity) {
        Vec3 vec3 = player.getViewVector(1.0F).normalize();
        Vec3 vec31 = new Vec3(entity.getX() - player.getX(), entity.getY() - player.getEyeY(), entity.getZ() - player.getZ());
        double d0 = vec31.length();
        vec31 = vec31.normalize();
        double d1 = vec3.dot(vec31);
        return d1 > 1.0D - 0.025D / d0 && AtoElineOfSight(player, entity);
    }
    public boolean AtoElineOfSight(Entity Ea,Entity Eb) {
        if (Eb.level != Ea.level) {
            return false;
        } else {
            Vec3 Avec = new Vec3(Ea.getX(), Ea.getEyeY(), Ea.getZ());
            Vec3 Bvec = new Vec3(Eb.getX(), Eb.getY(), Eb.getZ());
            if (Bvec.distanceTo(Avec) > 128.0D) {
                return false;
            } else {
                return Ea.level.clip(new ClipContext(Avec, Bvec, ClipContext.Block.COLLIDER, ClipContext.Fluid.NONE, Ea)).getType() == HitResult.Type.MISS;
            }
        }
    }

but seems like im understood that im need it to collide not just with position of entity but with its boundingbox or hitbox of entity sorry for putting question so badly and also sorry for such a long delay with answer

2 hours ago, volkov said:

sorry for stupid question that im about to ask but dose vectors need tow dots but vec3 constructor only requires 1 dot(set of coordinates) and is called vector ?

it is just a name, there is no physical connection

there are two ways to multiply vectors. the operation the code above uses is sometimes called dot multiplication. dot as in operator between two operands.

you are not working with any dots (points).

  • 1 year later...

Hello,can somebody explain me what to put in entity (boolean islookinatit(Player player,LivingEntity entity)) I'm so confused I can't put type of mob or anything like it

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

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.