--- a/net/minecraft/server/PersistentRaid.java +++ b/net/minecraft/server/PersistentRaid.java @@ -92,19 +92,33 @@ boolean flag = false; if (!raid.isStarted()) { + /* CraftBukkit - moved down if (!this.raids.containsKey(raid.getId())) { this.raids.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 { entityplayer.removeEffect(MobEffects.BAD_OMEN); entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, (byte) 43)); } if (flag) { + // CraftBukkit start + if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, entityplayer)) { + entityplayer.removeEffect(MobEffects.BAD_OMEN); + return null; + } + + if (!this.raids.containsKey(raid.getId())) { + this.raids.put(raid.getId(), raid); + } + // CraftBukkit end raid.a((EntityHuman) entityplayer); entityplayer.playerConnection.sendPacket(new PacketPlayOutEntityStatus(entityplayer, (byte) 43)); if (!raid.c()) {