From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: jmp Date: Thu, 27 Aug 2020 13:48:52 -0700 Subject: [PATCH] Raid cooldown setting diff --git a/src/main/java/net/minecraft/server/PersistentRaid.java b/src/main/java/net/minecraft/server/PersistentRaid.java index 826dcf9f7e..807910c60e 100644 --- a/src/main/java/net/minecraft/server/PersistentRaid.java +++ b/src/main/java/net/minecraft/server/PersistentRaid.java @@ -9,6 +9,7 @@ import javax.annotation.Nullable; public class PersistentRaid extends PersistentBase { + public final Map playerCooldowns = new java.util.HashMap<>(); // Purpur public final Map raids = Maps.newHashMap(); private final WorldServer b; private int c; @@ -27,6 +28,17 @@ public class PersistentRaid extends PersistentBase { public void a() { ++this.d; + // Purpur start + if (b.purpurConfig.raidCooldownSeconds != 0 && this.d % 20 == 0) { + com.google.common.collect.ImmutableMap.copyOf(playerCooldowns).forEach((id, i) -> { + if (i < 1) { + playerCooldowns.remove(id); + } else { + playerCooldowns.put(id, i - 1); + } + }); + } + // Purpur end Iterator iterator = this.raids.values().iterator(); while (iterator.hasNext()) { @@ -110,10 +122,15 @@ public class PersistentRaid extends PersistentBase { if (flag) { // CraftBukkit start - if (!org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, entityplayer)) { + if ((b.purpurConfig.raidCooldownSeconds != 0 && playerCooldowns.containsKey(entityplayer.getUniqueID())) || !org.bukkit.craftbukkit.event.CraftEventFactory.callRaidTriggerEvent(raid, entityplayer)) { // Purpur entityplayer.removeEffect(MobEffects.BAD_OMEN); return null; } + // Purpur start + if (b.purpurConfig.raidCooldownSeconds != 0) { + playerCooldowns.put(entityplayer.getUniqueID(), b.purpurConfig.raidCooldownSeconds); + } + // Purpur end if (!this.raids.containsKey(raid.getId())) { this.raids.put(raid.getId(), raid); diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java index d774942b6a..091582bfc3 100644 --- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java +++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java @@ -156,6 +156,7 @@ public class PurpurWorldConfig { public boolean milkCuresBadOmen = true; public double tridentLoyaltyVoidReturnHeight = 0.0D; public double voidDamageHeight = -64.0D; + public int raidCooldownSeconds = 0; private void miscGameplayMechanicsSettings() { useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); boatEjectPlayersOnLand = getBoolean("gameplay-mechanics.boat.eject-players-on-land", boatEjectPlayersOnLand); @@ -166,6 +167,7 @@ public class PurpurWorldConfig { milkCuresBadOmen = getBoolean("gameplay-mechanics.milk-cures-bad-omen", milkCuresBadOmen); tridentLoyaltyVoidReturnHeight = getDouble("gameplay-mechanics.trident-loyalty-void-return-height", tridentLoyaltyVoidReturnHeight); voidDamageHeight = getDouble("gameplay-mechanics.void-damage-height", voidDamageHeight); + raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); } public boolean catSpawning;