aboutsummaryrefslogtreecommitdiffhomepage
path: root/patch-remap/mache-spigotflower-stripped/net/minecraft/world/entity/raid/Raids.java.patch
blob: e1975b1818803f215d2f07419f9329cfd36bb997 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
--- a/net/minecraft/world/entity/raid/Raids.java
+++ b/net/minecraft/world/entity/raid/Raids.java
@@ -121,21 +121,34 @@
                 boolean flag = false;
 
                 if (!raid.isStarted()) {
+                    /* CraftBukkit - moved down
                     if (!this.raidMap.containsKey(raid.getId())) {
                         this.raidMap.put(raid.getId(), raid);
                     }
 
                     flag = true;
-                } else if (raid.getBadOmenLevel() < raid.getMaxBadOmenLevel()) {
+                    // CraftBukkit start - fixed a bug with raid: players could add up Bad Omen level even when the raid had finished
+                } else if (raid.isInProgress() && raid.getBadOmenLevel() < raid.getMaxBadOmenLevel()) {
                     flag = true;
+                    // CraftBukkit end
                 } else {
                     serverplayer.removeEffect(MobEffects.BAD_OMEN);
                     serverplayer.connection.send(new ClientboundEntityEventPacket(serverplayer, (byte) 43));
                 }
 
                 if (flag) {
-                    raid.absorbBadOmen(serverplayer);
-                    serverplayer.connection.send(new ClientboundEntityEventPacket(serverplayer, (byte) 43));
+                    // CraftBukkit start
+                    if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, serverPlayer)) {
+                        serverPlayer.removeEffect(MobEffects.BAD_OMEN);
+                        return null;
+                    }
+
+                    if (!this.raidMap.containsKey(raid.getId())) {
+                        this.raidMap.put(raid.getId(), raid);
+                    }
+                    // CraftBukkit end
+                    raid.absorbBadOmen(serverPlayer);
+                    serverPlayer.connection.send(new ClientboundEntityEventPacket(serverPlayer, (byte) 43));
                     if (!raid.hasFirstWaveSpawned()) {
                         serverplayer.awardStat(Stats.RAID_TRIGGER);
                         CriteriaTriggers.BAD_OMEN.trigger(serverplayer);