Allow leashing villagers

This commit is contained in:
William Blake Galbreath
2025-01-05 15:57:26 -08:00
committed by granny
parent 6075c3496c
commit b12c969bc5
8 changed files with 80 additions and 124 deletions

View File

@@ -75,10 +75,10 @@ index b083228bb3dc87794c6f177ad99832daf6925a39..bf863cfae63a50636c3fcc8fcf9761f1
if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) {
target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it
diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java
index 4575ea1d17bf22790d742a9d73aa88ded665809d..7797dd4d87ea29585d93461126a0d781ed7daec5 100644
index eef36c568050b790908787a2d423db6f7b8cf313..10fd7f0274d1a6a954f01244f6e1e356bd190211 100644
--- a/net/minecraft/world/entity/Entity.java
+++ b/net/minecraft/world/entity/Entity.java
@@ -3129,6 +3129,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3130,6 +3130,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
this.passengers = ImmutableList.copyOf(list);
}
@@ -92,7 +92,7 @@ index 4575ea1d17bf22790d742a9d73aa88ded665809d..7797dd4d87ea29585d93461126a0d781
this.gameEvent(GameEvent.ENTITY_MOUNT, passenger);
}
}
@@ -3170,6 +3177,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -3171,6 +3178,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return false;
}
// CraftBukkit end
@@ -107,7 +107,7 @@ index 4575ea1d17bf22790d742a9d73aa88ded665809d..7797dd4d87ea29585d93461126a0d781
if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) {
this.passengers = ImmutableList.of();
} else {
@@ -5084,4 +5099,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
@@ -5085,4 +5100,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess
return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition());
}
// Paper end - Expose entity id counter
@@ -3134,7 +3134,7 @@ index 2e32567fca7a2a4cd87bc078a6eeb30e3ffabfce..4873a3d8dd9c160ecdbda594ee546c35
public boolean doHurtTarget(ServerLevel level, Entity source) {
if (super.doHurtTarget(level, source)) {
diff --git a/net/minecraft/world/entity/monster/Creeper.java b/net/minecraft/world/entity/monster/Creeper.java
index 2b3e1fcf4ec73f5be1804c77ffd74f27c2dc2eaf..cae4c797cf72920b9fd8e79d95d51367b5f7b87b 100644
index 177849ae6613b42fbc2ee515b8ae93f1c13c07a6..c4399f1ad3a6c1a35abb28bc76ac0b0508b98209 100644
--- a/net/minecraft/world/entity/monster/Creeper.java
+++ b/net/minecraft/world/entity/monster/Creeper.java
@@ -50,21 +50,98 @@ public class Creeper extends Monster {
@@ -3332,7 +3332,7 @@ index 4585b7c867685f8419c4d2b5b90af5946d337f90..c6eeaf7b460408acfdf89d988b47b08e
return Guardian.createAttributes().add(Attributes.MOVEMENT_SPEED, 0.3F).add(Attributes.ATTACK_DAMAGE, 8.0).add(Attributes.MAX_HEALTH, 80.0);
}
diff --git a/net/minecraft/world/entity/monster/EnderMan.java b/net/minecraft/world/entity/monster/EnderMan.java
index 4b5ffd278e0e9d47100e5452949e8d757bbfece4..7330a73c4ed3065a999a984864087f60d091bd3b 100644
index 22a078c9b94516c8a5170a1387d7b941b91c3f1d..1f1e86dcdc6ded664a4562c0a3de45162c4fd6ac 100644
--- a/net/minecraft/world/entity/monster/EnderMan.java
+++ b/net/minecraft/world/entity/monster/EnderMan.java
@@ -90,9 +90,27 @@ public class EnderMan extends Monster implements NeutralMob {
@@ -4928,12 +4928,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 2b83262e4a13eae86df82913ce4f3121e3631a43..fbb12688470ac4dea129ee171c9fc001bdc8812b 100644
index 167493ab38bc7ea77335371c2adf9df86aedace5..975680c50e999fe6d4694f04d49baabf88bf8d8d 100644
--- a/net/minecraft/world/entity/npc/Villager.java
+++ b/net/minecraft/world/entity/npc/Villager.java
@@ -193,6 +193,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
this.setVillagerData(this.getVillagerData().setType(villagerType).setProfession(VillagerProfession.NONE));
@@ -200,6 +200,28 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
// Purpur end - Allow leashing villagers
+ // Purpur start - Ridables
+ @Override
@@ -4960,7 +4960,7 @@ index 2b83262e4a13eae86df82913ce4f3121e3631a43..fbb12688470ac4dea129ee171c9fc001
@Override
public Brain<Villager> getBrain() {
return (Brain<Villager>)super.getBrain();
@@ -293,7 +315,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -300,7 +322,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
// Paper end - EAR 2
ProfilerFiller profilerFiller = Profiler.get();
profilerFiller.push("villagerBrain");
@@ -4969,7 +4969,7 @@ index 2b83262e4a13eae86df82913ce4f3121e3631a43..fbb12688470ac4dea129ee171c9fc001
profilerFiller.pop();
if (this.assignProfessionWhenSpawned) {
this.assignProfessionWhenSpawned = false;
@@ -349,7 +371,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -356,7 +378,7 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
return super.mobInteract(player, hand);
} else if (this.isBaby()) {
this.setUnhappy();
@@ -4978,7 +4978,7 @@ index 2b83262e4a13eae86df82913ce4f3121e3631a43..fbb12688470ac4dea129ee171c9fc001
} else {
if (!this.level().isClientSide) {
boolean isEmpty = this.getOffers().isEmpty();
@@ -362,9 +384,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
@@ -369,9 +391,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler
}
if (isEmpty) {
@@ -4992,14 +4992,14 @@ index 2b83262e4a13eae86df82913ce4f3121e3631a43..fbb12688470ac4dea129ee171c9fc001
}
diff --git a/net/minecraft/world/entity/npc/WanderingTrader.java b/net/minecraft/world/entity/npc/WanderingTrader.java
index 6655d06e2011e20e7346dfe57527795269094d8a..6c14537c8376bd392524aefde8dfe76b159c3655 100644
index 47c1ad2ef30d464abb3c804260f0fd7cde193ba5..c6b3894fe085c2b565651ab3ae2f1acbb6bacea4 100644
--- a/net/minecraft/world/entity/npc/WanderingTrader.java
+++ b/net/minecraft/world/entity/npc/WanderingTrader.java
@@ -69,6 +69,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
super(entityType, level);
@@ -76,6 +76,23 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
}
// Purpur end - Allow leashing villagers
+ // Purpur - start
+ // Purpur - start - Ridables
+ @Override
+ public boolean isRidable() {
+ return level().purpurConfig.wanderingTraderRidable;
@@ -5019,7 +5019,7 @@ index 6655d06e2011e20e7346dfe57527795269094d8a..6c14537c8376bd392524aefde8dfe76b
@Override
protected void registerGoals() {
this.goalSelector.addGoal(0, new FloatGoal(this));
@@ -130,9 +147,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
@@ -137,9 +154,9 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
if (!this.level().isClientSide) {
if (this.getOffers().isEmpty()) {