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

Sculk sensors are not activated upon placing glowstone into respawn anchors

XMLWordPrintable

    • Icon: Bug Bug
    • Resolution: Fixed
    • 23w06a
    • 20w51a, 21w03a, 21w05a, 21w05b, 21w06a, 21w07a, 21w08b, 21w10a, 21w14a, 21w15a, 21w17a, 21w19a, 21w20a, 1.17 Pre-release 1, 1.17 Pre-release 3, 1.17 Release Candidate 1, 1.17 Release Candidate 2, 1.17, 1.17.1 Pre-release 1, 1.17.1 Pre-release 3, 1.17.1, 21w40a, 21w43a, 1.18, 1.18.1, 22w05a, 1.18.2, 22w14a, 22w17a, 22w18a, 1.19 Pre-release 1, 1.19 Pre-release 5, 1.19 Release Candidate 2, 1.19, 1.19.2, 22w45a, 1.19.3
    • Confirmed
    • Game Events
    • Normal

      The Bug:

      Sculk sensors are not activated upon placing glowstone into respawn anchors.

      Steps to Reproduce:

      1. Place down a respawn anchor along with a sculk sensor nearby.
      2. Place some glowstone into the respawn anchor and watch the sculk sensor closely as you do this.
      3. Take note as to whether or not sculk sensors are activated upon placing glowstone into respawn anchors.

      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.level.block.RespawnAnchorBlock.java
      public class RespawnAnchorBlock extends Block {
         ...
         public InteractionResult use(BlockState $bs, Level $l, BlockPos $bp, Player $p, InteractionHand $ih, BlockHitResult $bhr) {
            ItemStack itemstack = $p.getItemInHand($ih);
            if ($ih == InteractionHand.MAIN_HAND && !isRespawnFuel(itemstack) && isRespawnFuel($p.getItemInHand(InteractionHand.OFF_HAND))) {
               return InteractionResult.PASS;
            } else if (isRespawnFuel(itemstack) && canBeCharged($bs)) {
               charge($l, $bp, $bs);
               ...

      If we look at the above class, we can see that placing glowstone into respawn anchors simply isn't registered as a game event as the gameEvent() method is never called, thus not detecting this action as a vibration.

      Potential Fix:

      Simply calling the gameEvent() method where appropriate within this piece of code should resolve this problem. The "BLOCK_CHANGE" game event tag would be expected to be used here as the block states of respawn anchors are changed when they're charged. The following line of code could be used in order to fix this:

      $LEVEL.gameEvent($PLAYER, GameEvent.BLOCK_CHANGE, $BLOCKPOS);

            kingbdogz [Mojang] Brandon Pearce
            Avoma [Mod] Avoma
            Votes:
            9 Vote for this issue
            Watchers:
            3 Start watching this issue

              Created:
              Updated:
              Resolved:
              CHK: