aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch')
-rw-r--r--patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch83
1 files changed, 83 insertions, 0 deletions
diff --git a/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch b/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch
new file mode 100644
index 0000000000..1119d3551b
--- /dev/null
+++ b/patches/server/0690-Add-config-for-mobs-immune-to-default-effects.patch
@@ -0,0 +1,83 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jake Potrebic <[email protected]>
+Date: Wed, 2 Dec 2020 21:03:02 -0800
+Subject: [PATCH] Add config for mobs immune to default effects
+
+
+diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+index 047d2b47b5af22087359e76362d84dc69ae26707..36730b851203602a49d5a76b25a9e3a11c005033 100644
+--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
++++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
+@@ -683,6 +683,21 @@ public class PaperWorldConfig {
+ log("Hopper Ignore Container Entities inside Occluding Blocks: " + (hoppersIgnoreOccludingBlocks ? "enabled" : "disabled"));
+ }
+
++ public boolean undeadImmuneToCertainEffects = true;
++ public boolean spidersImmuneToPoisonEffect = true;
++ public boolean witherImmuneToWitherEffect = true;
++ public boolean witherSkeletonImmuneToWitherEffect = true;
++ private void mobEffectChanges() {
++ undeadImmuneToCertainEffects = getBoolean("mob-effects.undead-immune-to-certain-effects", undeadImmuneToCertainEffects);
++ log("Undead immune to harmful effects: " + undeadImmuneToCertainEffects);
++ spidersImmuneToPoisonEffect = getBoolean("mob-effects.spiders-immune-to-poison-effect", spidersImmuneToPoisonEffect);
++ log("Spiders immune to poison effect: " + spidersImmuneToPoisonEffect);
++ witherImmuneToWitherEffect = getBoolean("mob-effects.immune-to-wither-effect.wither", witherImmuneToWitherEffect);
++ log("Wither immune to wither effect: " + witherImmuneToWitherEffect);
++ witherSkeletonImmuneToWitherEffect = getBoolean("mob-effects.immune-to-wither-effect.wither-skeleton", witherSkeletonImmuneToWitherEffect);
++ log("Wither skeleton immune to wither effect: " + witherSkeletonImmuneToWitherEffect);
++ }
++
+ public boolean nerfNetherPortalPigmen = false;
+ private void nerfNetherPortalPigmen() {
+ nerfNetherPortalPigmen = getBoolean("game-mechanics.nerf-pigmen-from-nether-portals", nerfNetherPortalPigmen);
+diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java
+index 709ca3f249a5c4d3a405e94ca353864df349ffcd..1f35368f9f44c578be76d66a85da937f497df655 100644
+--- a/src/main/java/net/minecraft/world/entity/LivingEntity.java
++++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java
+@@ -1130,7 +1130,7 @@ public abstract class LivingEntity extends Entity {
+ if (this.getMobType() == MobType.UNDEAD) {
+ MobEffect mobeffectlist = effect.getEffect();
+
+- if (mobeffectlist == MobEffects.REGENERATION || mobeffectlist == MobEffects.POISON) {
++ if ((mobeffectlist == MobEffects.REGENERATION || mobeffectlist == MobEffects.POISON) && this.level.paperConfig.undeadImmuneToCertainEffects) { // Paper
+ return false;
+ }
+ }
+diff --git a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+index 92734f767fde60351a179a88350a97b861be0e88..d347ab0a638a972ea53a982f29af40423919870c 100644
+--- a/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
++++ b/src/main/java/net/minecraft/world/entity/boss/wither/WitherBoss.java
+@@ -612,7 +612,7 @@ public class WitherBoss extends Monster implements PowerableMob, RangedAttackMob
+
+ @Override
+ public boolean canBeAffected(MobEffectInstance effect) {
+- return effect.getEffect() == MobEffects.WITHER ? false : super.canBeAffected(effect);
++ return effect.getEffect() == MobEffects.WITHER && this.level.paperConfig.witherImmuneToWitherEffect ? false : super.canBeAffected(effect); // Paper
+ }
+
+ private class WitherDoNothingGoal extends Goal {
+diff --git a/src/main/java/net/minecraft/world/entity/monster/Spider.java b/src/main/java/net/minecraft/world/entity/monster/Spider.java
+index a3cb44914ef7d8636e743baa361a1a09ceeb2207..05b6c07c0705c7d8741c77baa87982e8e278dc97 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/Spider.java
++++ b/src/main/java/net/minecraft/world/entity/monster/Spider.java
+@@ -133,7 +133,7 @@ public class Spider extends Monster {
+
+ @Override
+ public boolean canBeAffected(MobEffectInstance effect) {
+- return effect.getEffect() == MobEffects.POISON ? false : super.canBeAffected(effect);
++ return effect.getEffect() == MobEffects.POISON && this.level.paperConfig.spidersImmuneToPoisonEffect ? false : super.canBeAffected(effect); // Paper
+ }
+
+ public boolean isClimbing() {
+diff --git a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
+index c727bbf7de71213fba410625c4a7ad90315b608a..6acc46c3a6fe7648d2cc4d0aaef063633c74c20d 100644
+--- a/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
++++ b/src/main/java/net/minecraft/world/entity/monster/WitherSkeleton.java
+@@ -122,6 +122,6 @@ public class WitherSkeleton extends AbstractSkeleton {
+
+ @Override
+ public boolean canBeAffected(MobEffectInstance effect) {
+- return effect.getEffect() == MobEffects.WITHER ? false : super.canBeAffected(effect);
++ return effect.getEffect() == MobEffects.WITHER && this.level.paperConfig.witherSkeletonImmuneToWitherEffect ? false : super.canBeAffected(effect); // Paper
+ }
+ }