Uploaded image for project: 'Minecraft: Java Edition'
  1. Minecraft: Java Edition
  2. MC-210153

Sculk sensors are not activated upon eyes of ender popping

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • None
    • 20w51a, 21w03a, 21w05a, 21w05b, 21w06a, 21w07a, 21w08b, 21w10a, 21w14a, 21w15a, 21w17a, 21w19a, 21w20a, 1.17 Pre-release 1, 1.17 Release Candidate 1, 1.17, 1.17.1 Pre-release 1, 1.17.1, 21w38a, 21w40a, 1.18, 1.18.1, 1.18.2, 22w14a, 22w17a, 22w18a, 1.19 Pre-release 1, 1.19, 1.19.2, 1.19.3
    • Confirmed
    • Game Events
    • Low

    Description

      The Bug:

      Sculk sensors are not activated upon eyes of ender popping.

      Steps to Reproduce:

      1. Summon a large area of sculk sensors above your head by using the command provided below.
        /fill ~13 ~11 ~13 ~-13 ~11 ~-13 minecraft:sculk_sensor
      2. Throw an eye of ender, wait for it to pop, and watch the sculk sensor closely as this happens.
      3. Take note as to whether or not sculk sensors are activated upon eyes of ender popping.

      Observed Behavior:

      Sculk sensors aren't activated.

      Expected Behavior:

      Sculk sensors would be activated.

      Code Analysis:

      Code analysis by Avoma can be found below.

      The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.

      net.minecraft.world.entity.projectile.EyeOfEnder.java
      public class EyeOfEnder extends Entity implements ItemSupplier {
         ...
         public void tick() {
            super.tick();
            Vec3 vec3 = this.getDeltaMovement();
            double d0 = this.getX() + vec3.x;
            double d1 = this.getY() + vec3.y;
            double d2 = this.getZ() + vec3.z;
            ...
            if (!this.level.isClientSide) {
               this.setPos(d0, d1, d2);
               ++this.life;
               if (this.life > 80 && !this.level.isClientSide) {
                  this.playSound(SoundEvents.ENDER_EYE_DEATH, 1.0F, 1.0F);
                  this.discard();
                  if (this.surviveAfterDeath) {
                     this.level.addFreshEntity(new ItemEntity(this.level, this.getX(), this.getY(), this.getZ(), this.getItem()));
                  } else {
                     this.level.levelEvent(2003, this.blockPosition(), 0);
                  }
               }
            } else {
               this.setPosRaw(d0, d1, d2);
            }
         ...

      If we look at the above class, we can see that eye of enders popping (dying) simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.

      Attachments

        1. MC-210153.mp4
          3.44 MB
        2. MC-210153.png
          MC-210153.png
          1.11 MB

        Issue Links

          Activity

            People

              kingbdogz [Mojang] Brandon Pearce
              Avoma [Helper] Avoma
              Votes:
              13 Vote for this issue
              Watchers:
              6 Start watching this issue

              Dates

                Created:
                Updated:
                CHK: