Lobotomize stuck villagers

This commit is contained in:
William Blake Galbreath
2025-01-12 14:38:06 -08:00
committed by granny
parent 9cf9db1dbd
commit ce589297ea
19 changed files with 205 additions and 244 deletions

View File

@@ -18,10 +18,10 @@ index 29d402620d2e1cbed94f941f933ae8eb5d786e7f..ec0998369158286fccb38c8e10c3cfa2
public boolean isLocalPlayer() {
return true;
diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java
index f90e90368552d7e38e719bc080184ccaa64b6a0b..47b1f87e224fe963807c244e9cf03b2c8b049d9c 100644
index baf7b92843d2536a8a6c3958ded0c84045c4a54a..1eeea8d9e44857537d4591cce4dfd944ad48e2b2 100644
--- a/net/minecraft/server/MinecraftServer.java
+++ b/net/minecraft/server/MinecraftServer.java
@@ -1733,6 +1733,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@@ -1734,6 +1734,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
serverLevel.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper - Add EntityMoveEvent
serverLevel.updateLagCompensationTick(); // Paper - lag compensation
net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers
@@ -30,7 +30,7 @@ index f90e90368552d7e38e719bc080184ccaa64b6a0b..47b1f87e224fe963807c244e9cf03b2c
/* Drop global time updates
if (this.tickCount % 20 == 0) {
diff --git a/net/minecraft/server/level/ServerLevel.java b/net/minecraft/server/level/ServerLevel.java
index 704e618c1a71c5182bc927758eb3f91e5f008f7d..a55772a67bca2be0a36ce63e7b0143b825c40f01 100644
index 6f1cb7b9c01111eca0e0e253dddc1ad84b2aac15..8ad8e9879ada5f7b96a2600cd7a6692fa661c67c 100644
--- a/net/minecraft/server/level/ServerLevel.java
+++ b/net/minecraft/server/level/ServerLevel.java
@@ -217,6 +217,7 @@ public class ServerLevel extends Level implements ServerEntityGetter, WorldGenLe
@@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1
protected ParticleOptions getInkParticle() {
return ParticleTypes.GLOW_SQUID_INK;
diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java
index d10568ea92ac2e915af95d2a5f9b441bca1753b8..e86dcc0f596491fc7a5c22fa3909287ba520ca95 100644
index 0e05efd9d795496b8f632abfc543a36ccdff8349..2de776d7570f97f763033392ceeb8ffdbc0fafcd 100644
--- a/net/minecraft/world/entity/LivingEntity.java
+++ b/net/minecraft/world/entity/LivingEntity.java
@@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -210,7 +210,7 @@ index d10568ea92ac2e915af95d2a5f9b441bca1753b8..e86dcc0f596491fc7a5c22fa3909287b
@Override
protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) {
@@ -3527,8 +3528,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3534,8 +3535,10 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.pushEntities();
profilerFiller.pop();
// Paper start - Add EntityMoveEvent
@@ -223,7 +223,7 @@ index d10568ea92ac2e915af95d2a5f9b441bca1753b8..e86dcc0f596491fc7a5c22fa3909287b
Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO);
Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot());
io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone());
@@ -3538,6 +3541,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
@@ -3545,6 +3548,21 @@ public abstract class LivingEntity extends Entity implements Attackable {
this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch());
}
}
@@ -568,7 +568,7 @@ index c0997c8c0f8ee4474d3acdd5938b1879c4e589a2..28ae152125ed83d8917674b6068f227f
double d = this.wantedX - this.fish.getX();
double d1 = this.wantedY - this.fish.getY();
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
index d77ae36ffc47d06767066e4ce1c1d21a52e1483c..069444e6de2b587f8df3b87391b1ffcf1ee1c388 100644
index 31c9e0cdcd7b3f5426d62f64453aa4e63e1af8df..b9bf40c389460d65d2566786ddd6f6740243e9a4 100644
--- a/net/minecraft/world/entity/animal/Bee.java
+++ b/net/minecraft/world/entity/animal/Bee.java
@@ -145,6 +145,7 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -661,7 +661,7 @@ index d77ae36ffc47d06767066e4ce1c1d21a52e1483c..069444e6de2b587f8df3b87391b1ffcf
this.targetSelector.addGoal(1, new Bee.BeeHurtByOtherGoal(this).setAlertOthers(new Class[0]));
this.targetSelector.addGoal(2, new Bee.BeeBecomeAngryTargetGoal(this));
this.targetSelector.addGoal(3, new ResetUniversalAngerTargetGoal<>(this, true));
@@ -1083,15 +1133,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -1084,15 +1134,15 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
}
}
@@ -3792,7 +3792,7 @@ index 905ecbd8b22c785ee4ea18004ac50eb1b7005d3f..f10b204c18b88e9110cebf050b60c233
@Override
diff --git a/net/minecraft/world/entity/monster/Phantom.java b/net/minecraft/world/entity/monster/Phantom.java
index a91aba11ecda561d117c9d8db85c92cdcd81887e..3bff5f13ffcaaedecfab071c5ce6b28028aecd62 100644
index 9ea3acd5ff3d7751875d61861aa5f6c717d0b5e2..75c6a43a3ab4851a47990402bee49f7e8305cd60 100644
--- a/net/minecraft/world/entity/monster/Phantom.java
+++ b/net/minecraft/world/entity/monster/Phantom.java
@@ -60,6 +60,64 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -3888,7 +3888,7 @@ index a91aba11ecda561d117c9d8db85c92cdcd81887e..3bff5f13ffcaaedecfab071c5ce6b280
this.igniteForSeconds(8.0F);
}
@@ -407,25 +469,42 @@ public class Phantom extends FlyingMob implements Enemy {
@@ -411,25 +473,42 @@ public class Phantom extends FlyingMob implements Enemy {
}
}
@@ -4943,12 +4943,12 @@ index 9f476e587d7df797129e49738f101cccca7e10b7..f968e5c99bdb23b268bc34ea1ba5d54a
&& this.level() == entity.level()
&& EntitySelector.NO_CREATIVE_OR_SPECTATOR.test(entity)
diff --git a/net/minecraft/world/entity/npc/Villager.java b/net/minecraft/world/entity/npc/Villager.java
index b36e7c75af71f7472ccb0af3ba217ba39b05d081..742ae13084b2ab6c1ed26c0e7601ba7f9009367e 100644
index 1ee0c9bcbca1296f83dcde4acb200caa654cae6d..52b54c59efd68a955a6e7cc49b01f614043c505d 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -200,6 +200,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -246,6 +246,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Purpur end - Allow leashing villagers
// Purpur end - Lobotomize stuck villagers
+ // Purpur start - Ridables
+ @Override
@@ -4975,16 +4975,16 @@ index b36e7c75af71f7472ccb0af3ba217ba39b05d081..742ae13084b2ab6c1ed26c0e7601ba7f
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
@@ -300,7 +322,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper end - EAR 2
ProfilerFiller profilerFiller = Profiler.get();
profilerFiller.push("villagerBrain");
- if (!inactive) this.getBrain().tick(level, this); // Paper - EAR 2
+ if (!inactive && (getRider() == null || !this.isControllable()) /*&& this.behaviorTick++ % this.activatedPriority == 0*/) this.getBrain().tick(level, this); // Paper - EAR 2 // Purpur - Ridables
profilerFiller.pop();
if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false;
@@ -356,7 +378,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -355,7 +377,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Purpur end - Lobotomize stuck villagers
// Pufferfish start
- if (!inactive /*&& this.behaviorTick++ % this.activatedPriority == 0*/) {
+ if (!inactive && (getRider() == null || !this.isControllable()) /*&& this.behaviorTick++ % this.activatedPriority == 0*/) { // Purpur - Ridables
this.getBrain().tick(level, this); // Paper - EAR 2
}
// Pufferfish end
@@ -414,7 +436,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return super.mobInteract(player, hand);
} else if (this.isBaby()) {
this.setUnhappy();
@@ -4993,7 +4993,7 @@ index b36e7c75af71f7472ccb0af3ba217ba39b05d081..742ae13084b2ab6c1ed26c0e7601ba7f
} else {
if (!this.level().isClientSide) {
boolean isEmpty = this.getOffers().isEmpty();
@@ -369,9 +391,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -427,9 +449,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
if (isEmpty) {
@@ -5046,7 +5046,7 @@ index 99947e9877b79c0d419e1639c2b1379fc1504c6a..7e4d14d30eb3f06c0c7426e09084355a
if (this.level().purpurConfig.wanderingTraderAllowTrading) { // Purpur - Add config for villager trading
this.setTradingPlayer(player);
diff --git a/net/minecraft/world/entity/player/Player.java b/net/minecraft/world/entity/player/Player.java
index b8f85b141eb290f644555a3cc88ce3daa24d4eb4..beefd76c1b92a66e20e53973262c724ee4ddf43d 100644
index 1b70c8b75d8bd0503e5329caa0b7c42ec7f7479f..898964b9a73950fa9e8de95f84faa74935c57ee6 100644
--- a/net/minecraft/world/entity/player/Player.java
+++ b/net/minecraft/world/entity/player/Player.java
@@ -220,6 +220,19 @@ public abstract class Player extends LivingEntity {