--- a/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java
+++ b/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java
@@ -53,7 +53,16 @@
 
             Vec3D vec3d = entityliving.position();
 
-            if (entityliving.randomTeleport(d0, d1, d2, true)) {
+            // CraftBukkit start - handle canceled status of teleport event
+            java.util.Optional<Boolean> status = entityliving.randomTeleport(d0, d1, d2, true, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause.CHORUS_FRUIT);
+
+            if (!status.isPresent()) {
+                // teleport event was canceled, no more tries
+                break;
+            }
+
+            if (status.get()) {
+                // CraftBukkit end
                 world.gameEvent((Holder) GameEvent.TELEPORT, vec3d, GameEvent.a.of((Entity) entityliving));
                 SoundEffect soundeffect;
                 SoundCategory soundcategory;
