Sculk sensors are not activated upon pufferfish changing their puff state
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png

- Summon a pufferfish in the water and switch into survival mode.
- Slowly approach the pufferfish to make it puff, and watch the sculk sensor closely as you do this.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors aren't activated.
Expected Behavior:
Sculk sensors would be activated.
Code Analysis:
Code analysis by [Mod] Avoma can be found below.
The following is based on a decompiled version of Minecraft 1.18.2 using MCP-Reborn.
public class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...
If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly.
Linked Issues
Created Issue:
Sculk sensors are not activated upon a pufferfish changing their puff state
The Bug:
Sculk sensors are not activated upon a pufferfish changing their puff state.
Steps to Reproduce:
- Spawn a pufferfish in a singular block of water.
- Switch to survival and approach it.
→Notice how when the pufferfish changes their puff state, the sculk sensor does not activate.
Additional Information:
Quote from the 20w49a Changelog, "A vibration is anything that causes physical motion". I would definitely consider this as physical motion, as the pufferfish is physically changing their puff state.
The Bug:
Sculk sensors are not activated upon
apufferfish changing their puff state.Steps to Reproduce:
- Spawn a pufferfish in a singular block of water.
- Switch to survival and approach it.
→Notice how when the pufferfish changes their puff state, the sculk sensor does not activate.
Additional Information:
Quote from the 20w49a Changelog, "A vibration is anything that causes physical motion". I would definitely consider this as physical motion, as the pufferfish is physically changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
- Switch into survival mode and slowly approach it by sneaking.
- →
Notice how sculk sensors are not activated upon pufferfish changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
- Switch into survival mode and slowly approach it by sneaking.
- →
Notice how sculk sensors are not activated upon pufferfish changing their puff state.
Sculk sensors are not activated uponapufferfish changing their puff state
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
- Switch into survival mode and slowly approach it by sneaking.
- →
Notice how sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
The expected behavior would be that sculk sensors are activated upon pufferfish changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
- Switch into survival mode and slowly approach it by sneaking.
- →
Notice how sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
The expected behavior would bethat sculk sensors areactivated upon pufferfish changing their puff state.The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
- Switch into survival mode and slowly approach it by sneaking.
Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water.
Switch into survival mode and slowly approach it by sneaking.Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water, switch into survival mode and slowly approach it by sneaking.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water, switch into survival mode and slowly approach it by sneaking.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
Code Analysis:
Code analysis by [Mod] 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.animal.Pufferfish.javapublic class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly. The following line of code could be used in order to fix this:
$LEVEL.gameEvent($PLAYER, GameEvent.GAME_EVENT_TYPE, $BLOCKPOS);
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water, switch into survival mode and slowly approach it by sneaking.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
Code Analysis:
Code analysis by [Mod] 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.animal.Pufferfish.javapublic class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly.The following line of code could be used in order to fix this:$LEVEL.gameEvent($PLAYER, GameEvent.GAME_EVENT_TYPE, $BLOCKPOS);The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water, switch into survival mode and slowly approach it by sneaking.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors are not activated upon pufferfish changing their puff state.
Expected Behavior:
Sculk sensors would be activated upon pufferfish changing their puff state.
Code Analysis:
Code analysis by [Mod] 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.animal.Pufferfish.javapublic class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water
,switch into survival modeand slowly approach it by sneaking.Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.Observed Behavior:
Sculk sensors are
not activatedupon pufferfish changing their puff state.Expected Behavior:
Sculk sensors would be activated
upon pufferfish changing their puff state.Code Analysis:
Code analysis by [Mod] 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.animal.Pufferfish.javapublic class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly.
The Bug:
Sculk sensors are not activated upon pufferfish changing their puff state.
Steps to Reproduce:
- Build the setup as shown in the attachment below. setup.png
- Summon a pufferfish in the water and switch into survival mode.
- Slowly approach the pufferfish to make it puff, and watch the sculk sensor closely as you do this.
- Take note as to whether or not sculk sensors are activated upon pufferfish changing their puff state.
Observed Behavior:
Sculk sensors aren't activated.
Expected Behavior:
Sculk sensors would be activated.
Code Analysis:
Code analysis by [Mod] 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.animal.Pufferfish.javapublic class Pufferfish extends AbstractFish { ... public void tick() { if (!this.level.isClientSide && this.isAlive() && this.isEffectiveAi()) { if (this.inflateCounter > 0) { if (this.getPuffState() == 0) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.inflateCounter > 40 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_UP, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(2); } ++this.inflateCounter; } else if (this.getPuffState() != 0) { if (this.deflateTimer > 60 && this.getPuffState() == 2) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(1); } else if (this.deflateTimer > 100 && this.getPuffState() == 1) { this.playSound(SoundEvents.PUFFER_FISH_BLOW_OUT, this.getSoundVolume(), this.getVoicePitch()); this.setPuffState(0); } ++this.deflateTimer; } } super.tick(); } ...If we look at the above class, we can see that pufferfish changing their puff states 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. I feel as if a new game event tag would be expected to be used here as none of the currently existing ones seem to fit this action accordingly.
is duplicated by
Duplicate of MC-210281.


Can confirm