diff --git a/patches/minecraft/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java.patch b/patches/minecraft/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java.patch new file mode 100644 index 0000000000..96a5b0bc0b --- /dev/null +++ b/patches/minecraft/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java.patch @@ -0,0 +1,13 @@ +--- a/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java ++++ b/net/minecraft/world/item/consume_effects/TeleportRandomlyConsumeEffect.java +@@ -63,7 +_,9 @@ + } + + Vec3 oldPos = user.position(); +- if (user.randomTeleport(xx, yy, zz, true, BlockTags.CONSUMABLE_DOES_NOT_TELEPORT_TO)) { ++ var event = net.minecraftforge.event.ForgeEventFactory.onChorusFruitTeleport(user, xx, yy, zz); ++ if (event == null) return false; ++ if (user.randomTeleport(event.getTargetX(), event.getTargetY(), event.getTargetZ(), true, BlockTags.CONSUMABLE_DOES_NOT_TELEPORT_TO)) { + level.gameEvent(GameEvent.TELEPORT, oldPos, GameEvent.Context.of(user)); + SoundSource soundSource; + SoundEvent soundEvent; diff --git a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java index 52a5ee8af1..42e645f499 100644 --- a/src/main/java/net/minecraftforge/event/ForgeEventFactory.java +++ b/src/main/java/net/minecraftforge/event/ForgeEventFactory.java @@ -705,8 +705,9 @@ public final class ForgeEventFactory { return EntityTeleportEvent.EnderPearl.BUS.post(event) ? null : event; } - public static EntityTeleportEvent.ChorusFruit onChorusFruitTeleport(LivingEntity entity, double targetX, double targetY, double targetZ) { - return EntityTeleportEvent.ChorusFruit.BUS.fire(new EntityTeleportEvent.ChorusFruit(entity, targetX, targetY, targetZ)); + public static EntityTeleportEvent.@Nullable ChorusFruit onChorusFruitTeleport(LivingEntity entity, double targetX, double targetY, double targetZ) { + var event = new EntityTeleportEvent.ChorusFruit(entity, targetX, targetY, targetZ); + return EntityTeleportEvent.ChorusFruit.BUS.post(event) ? null : event; } public static boolean onPermissionChanged(NameAndId gameProfile, @Nullable LevelBasedPermissionSet newLevel, PlayerList playerList) {