From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: WillQi Date: Mon, 15 May 2023 23:45:09 -0600 Subject: [PATCH] Fix off region raid heroes This patch aims to solve a potential incorrect thread call when completing a raid. If a player is a hero of the village but proceeds to leave the region of the raid before it's completion, it would throw an exception due to not being on the same region thread anymore. diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java index 7c9d63c94f36c1702fc48570b07393375c77bd21..9339f7b3c4c856fc32abbca0959a961c4fe7e09b 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java @@ -432,14 +432,22 @@ public class Raid { LivingEntity entityliving = (LivingEntity) entity; if (!entity.isSpectator()) { - entityliving.addEffect(new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 48000, this.raidOmenLevel - 1, false, false, true)); + //entityliving.addEffect(new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 48000, this.raidOmenLevel - 1, false, false, true)); // Folia - Fix off region raid heroes - move down if (entityliving instanceof ServerPlayer) { ServerPlayer entityplayer = (ServerPlayer) entityliving; - entityplayer.awardStat(Stats.RAID_WIN); - CriteriaTriggers.RAID_WIN.trigger(entityplayer); + // Folia start - Fix off region raid heroes - moved down winners.add(entityplayer.getBukkitEntity()); // CraftBukkit } + // Folia start - Fix off region raid heroes + entityliving.getBukkitEntity().taskScheduler.schedule((LivingEntity lv) -> { + lv.addEffect(new MobEffectInstance(MobEffects.HERO_OF_THE_VILLAGE, 48000, this.raidOmenLevel - 1, false, false, true)); + if (lv instanceof ServerPlayer entityplayer) { + entityplayer.awardStat(Stats.RAID_WIN); + CriteriaTriggers.RAID_WIN.trigger(entityplayer); + } + }, null, 1L); + // Folia end - Fix off region raid heroes } } }