mirror of
https://github.com/PaperMC/Paper.git
synced 2024-09-12 06:58:11 +02:00
Upstream has released updates that appears to apply and compile correctly. This update has not been tested by PaperMC and as with ANY update, please do your own testing Bukkit Changes: 30885166 Update to Minecraft 1.16.4 CraftBukkit Changes: 3af81c71 Update to Minecraft 1.16.4 Spigot Changes: f011ca24 Update to Minecraft 1.16.4 Co-authored-by: Mariell Hoversholm <proximyst@proximyst.com>
99 lines
4.9 KiB
Diff
99 lines
4.9 KiB
Diff
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
|
From: Zach Brown <zach.brown@destroystokyo.com>
|
|
Date: Tue, 1 Mar 2016 13:24:16 -0600
|
|
Subject: [PATCH] Allow nerfed mobs to jump and take water damage
|
|
|
|
|
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
index 7d9976ce6bf86e6fdfd0c7770104cee0db363a6d..6d6a68cb1b952da8308ac9ce5b54694bc9ba0e30 100644
|
|
--- a/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
+++ b/src/main/java/com/destroystokyo/paper/PaperWorldConfig.java
|
|
@@ -92,4 +92,9 @@ public class PaperWorldConfig {
|
|
fishingMaxTicks = getInt("fishing-time-range.MaximumTicks", 600);
|
|
log("Fishing time ranges are between " + fishingMinTicks +" and " + fishingMaxTicks + " ticks");
|
|
}
|
|
+
|
|
+ public boolean nerfedMobsShouldJump;
|
|
+ private void nerfedMobsShouldJump() {
|
|
+ nerfedMobsShouldJump = getBoolean("spawner-nerfed-mobs-should-jump", false);
|
|
+ }
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/ControllerJump.java b/src/main/java/net/minecraft/server/ControllerJump.java
|
|
index 2e869004c8c6b8bfbb002fb4eda04519d50390c8..22eb89df768819f0a18f91b806b56acec8489281 100644
|
|
--- a/src/main/java/net/minecraft/server/ControllerJump.java
|
|
+++ b/src/main/java/net/minecraft/server/ControllerJump.java
|
|
@@ -13,6 +13,7 @@ public class ControllerJump {
|
|
this.a = true;
|
|
}
|
|
|
|
+ public final void jumpIfSet() { this.b(); } // Paper - OBFHELPER
|
|
public void b() {
|
|
this.b.setJumping(this.a);
|
|
this.a = false;
|
|
diff --git a/src/main/java/net/minecraft/server/Entity.java b/src/main/java/net/minecraft/server/Entity.java
|
|
index a6534087b10c9a469a3d2cf4da717fab17b31544..bbb66e90aba2332c7c87a173639efc6ad61f5d53 100644
|
|
--- a/src/main/java/net/minecraft/server/Entity.java
|
|
+++ b/src/main/java/net/minecraft/server/Entity.java
|
|
@@ -1020,6 +1020,7 @@ public abstract class Entity implements INamableTileEntity, ICommandListener, Ke
|
|
return this.isInWater() || this.isInRain();
|
|
}
|
|
|
|
+ public final boolean isInWaterOrRainOrBubble() { return aG(); } // Paper - OBFHELPER
|
|
public boolean aG() {
|
|
return this.isInWater() || this.isInRain() || this.k();
|
|
}
|
|
diff --git a/src/main/java/net/minecraft/server/EntityInsentient.java b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
index 09ac187ba8ff52f6fa1f0d5d00a138518bacb50a..59af58e1aed678b8eac83f2346f5822aff700fb7 100644
|
|
--- a/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
+++ b/src/main/java/net/minecraft/server/EntityInsentient.java
|
|
@@ -33,6 +33,7 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
private final EntityAIBodyControl c;
|
|
protected NavigationAbstract navigation;
|
|
public PathfinderGoalSelector goalSelector;
|
|
+ @Nullable public PathfinderGoalFloat goalFloat; // Paper
|
|
public PathfinderGoalSelector targetSelector;
|
|
private EntityLiving goalTarget;
|
|
private final EntitySenses bo;
|
|
@@ -719,7 +720,17 @@ public abstract class EntityInsentient extends EntityLiving {
|
|
@Override
|
|
protected final void doTick() {
|
|
++this.ticksFarFromPlayer;
|
|
- if (!this.aware) return; // CraftBukkit
|
|
+ if (!this.aware) { // Paper start - Allow nerfed mobs to jump, float and take water damage
|
|
+ if (goalFloat != null) {
|
|
+ if (goalFloat.validConditions()) goalFloat.update();
|
|
+ this.getControllerJump().jumpIfSet();
|
|
+ }
|
|
+ if ((this instanceof EntityBlaze || this instanceof EntityEnderman) && isInWaterOrRainOrBubble()) {
|
|
+ damageEntity(DamageSource.DROWN, 1.0F);
|
|
+ }
|
|
+ return;
|
|
+ }
|
|
+ // Paper end
|
|
this.world.getMethodProfiler().enter("sensing");
|
|
this.bo.a();
|
|
this.world.getMethodProfiler().exit();
|
|
diff --git a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
|
|
index fd861cbc007c164f9a18ebfe7e4d0e4fe01db54c..8030376804823264bb5a701c1304414ac932af9c 100644
|
|
--- a/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
|
|
+++ b/src/main/java/net/minecraft/server/PathfinderGoalFloat.java
|
|
@@ -8,15 +8,18 @@ public class PathfinderGoalFloat extends PathfinderGoal {
|
|
|
|
public PathfinderGoalFloat(EntityInsentient entityinsentient) {
|
|
this.a = entityinsentient;
|
|
+ if (entityinsentient.getWorld().paperConfig.nerfedMobsShouldJump) entityinsentient.goalFloat = this; // Paper
|
|
this.a(EnumSet.of(PathfinderGoal.Type.JUMP));
|
|
entityinsentient.getNavigation().d(true);
|
|
}
|
|
|
|
+ public final boolean validConditions() { return this.a(); } // Paper - OBFHELPER
|
|
@Override
|
|
public boolean a() {
|
|
return this.a.isInWater() && this.a.b((Tag) TagsFluid.WATER) > this.a.cx() || this.a.aQ();
|
|
}
|
|
|
|
+ public void update() { this.e(); } // Paper - OBFHELPER
|
|
@Override
|
|
public void e() {
|
|
if (this.a.getRandom().nextFloat() < 0.8F) {
|