diff --git a/paper-server/patches/sources/net/minecraft/world/entity/raid/Raid.java.patch b/paper-server/patches/sources/net/minecraft/world/entity/raid/Raid.java.patch index 0f2847caa070..52c955c675e7 100644 --- a/paper-server/patches/sources/net/minecraft/world/entity/raid/Raid.java.patch +++ b/paper-server/patches/sources/net/minecraft/world/entity/raid/Raid.java.patch @@ -99,42 +99,20 @@ this.stop(); return; } -@@ -491,6 +_,10 @@ +@@ -486,7 +_,7 @@ + + private void spawnGroup(BlockPos pos) { + boolean flag = false; +- int i = this.groupsSpawned + 1; ++ int i = this.groupsSpawned + 1; final int wave = i; // Paper - OBFHELPER + this.totalHealth = 0.0F; DifficultyInstance currentDifficultyAt = this.level.getCurrentDifficultyAt(pos); boolean shouldSpawnBonusGroup = this.shouldSpawnBonusGroup(); - -+ // CraftBukkit start -+ Raider leader = null; -+ List raiders = new java.util.ArrayList<>(); -+ // CraftBukkit end - for (Raid.RaiderType raiderType : Raid.RaiderType.VALUES) { - int i1 = this.getDefaultNumSpawns(raiderType, i, shouldSpawnBonusGroup) - + this.getPotentialBonusSpawns(raiderType, this.random, i, currentDifficultyAt, shouldSpawnBonusGroup); -@@ -506,9 +_,11 @@ - raider.setPatrolLeader(true); - this.setLeader(i, raider); - flag = true; -+ leader = raider; // CraftBukkit - } - - this.joinRaid(i, raider, pos, false); -+ raiders.add(raider); // CraftBukkit - if (raiderType.entityType == EntityType.RAVAGER) { - Raider raider1 = null; - if (i == this.getNumGroups(Difficulty.NORMAL)) { -@@ -526,6 +_,7 @@ - this.joinRaid(i, raider1, pos, false); - raider1.moveTo(pos, 0.0F, 0.0F); - raider1.startRiding(raider); -+ raiders.add(raider1); // CraftBukkit - } - } - } @@ -535,6 +_,7 @@ this.groupsSpawned++; this.updateBossbar(); this.setDirty(); -+ org.bukkit.craftbukkit.event.CraftEventFactory.callRaidSpawnWaveEvent(this, leader, raiders); // CraftBukkit ++ org.bukkit.craftbukkit.event.CraftEventFactory.callRaidSpawnWaveEvent(this, java.util.Objects.requireNonNull(this.getLeader(wave)), this.groupRaiderMap.get(wave)); // CraftBukkit } public void joinRaid(int wave, Raider raider, @Nullable BlockPos pos, boolean isRecruited) { diff --git a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java index 23aeb7bc8d8f..85adadf7d039 100644 --- a/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/paper-server/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -12,6 +12,7 @@ import java.util.EnumMap; import java.util.List; import java.util.Map; +import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; import javax.annotation.Nullable; @@ -87,7 +88,6 @@ import org.bukkit.craftbukkit.entity.CraftEntity; import org.bukkit.craftbukkit.entity.CraftLivingEntity; import org.bukkit.craftbukkit.entity.CraftPlayer; -import org.bukkit.craftbukkit.entity.CraftRaider; import org.bukkit.craftbukkit.entity.CraftSpellcaster; import org.bukkit.craftbukkit.inventory.CraftInventoryCrafting; import org.bukkit.craftbukkit.inventory.CraftItemStack; @@ -2015,7 +2015,7 @@ public static void callRaidStopEvent(Raid raid, RaidStopEvent.Reason reason) { Bukkit.getPluginManager().callEvent(event); } - public static void callRaidSpawnWaveEvent(Raid raid, net.minecraft.world.entity.raid.Raider leader, List raiders) { + public static void callRaidSpawnWaveEvent(Raid raid, net.minecraft.world.entity.raid.Raider leader, Set raiders) { Raider bukkitLeader = (Raider) leader.getBukkitEntity(); List bukkitRaiders = new ArrayList<>(raiders.size()); for (net.minecraft.world.entity.raid.Raider raider : raiders) {