aboutsummaryrefslogtreecommitdiffhomepage
path: root/patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
diff options
context:
space:
mode:
Diffstat (limited to 'patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch')
-rw-r--r--patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch58
1 files changed, 58 insertions, 0 deletions
diff --git a/patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch b/patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
new file mode 100644
index 0000000000..ff46048dcd
--- /dev/null
+++ b/patches/server/0612-Only-set-despawnTimer-for-Wandering-Traders-spawned-.patch
@@ -0,0 +1,58 @@
+From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
+From: Jason Penilla <[email protected]>
+Date: Fri, 19 Mar 2021 16:07:21 -0700
+Subject: [PATCH] Only set despawnTimer for Wandering Traders spawned by
+ MobSpawnerTrader
+
+
+diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java
+index 05a3d736193775c1aa6ce3759e13a1f76f747d09..5e25d055665bab4d06a9b641892d4149da01218a 100644
+--- a/src/main/java/net/minecraft/world/entity/EntityType.java
++++ b/src/main/java/net/minecraft/world/entity/EntityType.java
+@@ -338,6 +338,12 @@ public class EntityType<T extends Entity> implements EntityTypeTest<Entity, T> {
+
+ @Nullable
+ public T spawn(ServerLevel worldserver, @Nullable CompoundTag nbttagcompound, @Nullable Component ichatbasecomponent, @Nullable Player entityhuman, BlockPos blockposition, MobSpawnType enummobspawn, boolean flag, boolean flag1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason) {
++ // Paper start - add consumer to modify entity before spawn
++ return this.spawn(worldserver, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, enummobspawn, flag, flag1, spawnReason, null);
++ }
++ @Nullable
++ public T spawn(ServerLevel worldserver, @Nullable CompoundTag nbttagcompound, @Nullable Component ichatbasecomponent, @Nullable Player entityhuman, BlockPos blockposition, MobSpawnType enummobspawn, boolean flag, boolean flag1, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason spawnReason, @Nullable java.util.function.Consumer<T> op) {
++ // Paper end
+ // Paper start - Call PreCreatureSpawnEvent
+ org.bukkit.entity.EntityType type = org.bukkit.entity.EntityType.fromName(EntityType.getKey(this).getPath());
+ if (type != null) {
+@@ -353,6 +359,7 @@ public class EntityType<T extends Entity> implements EntityTypeTest<Entity, T> {
+ }
+ // Paper end
+ T t0 = this.create(worldserver, nbttagcompound, ichatbasecomponent, entityhuman, blockposition, enummobspawn, flag, flag1);
++ if (t0 != null && op != null) op.accept(t0); // Paper
+
+ if (t0 != null) {
+ worldserver.addFreshEntityWithPassengers(t0, spawnReason);
+diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+index d7cb3d8b37f225ee4796246aa907da1092fa9a0d..abb2c5c4ac481c7529aa29322babb1929235e15a 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
++++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java
+@@ -59,7 +59,7 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill
+
+ public WanderingTrader(EntityType<? extends WanderingTrader> type, Level world) {
+ super(type, world);
+- this.setDespawnDelay(48000); // CraftBukkit - set default from MobSpawnerTrader
++ //this.setDespawnDelay(48000); // CraftBukkit - set default from MobSpawnerTrader // Paper - move back to MobSpawnerTrader - Vanilla behavior is that only traders spawned by it have this value set.
+ }
+
+ @Override
+diff --git a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
+index 0eddd793fa590a68bd094d417ffb90941532522c..4e478c30714a8e4cd95f02e73615d166836d1e4b 100644
+--- a/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
++++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTraderSpawner.java
+@@ -121,7 +121,7 @@ public class WanderingTraderSpawner implements CustomSpawner {
+ return false;
+ }
+
+- WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, (CompoundTag) null, (Component) null, (Player) null, blockposition2, MobSpawnType.EVENT, false, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL); // CraftBukkit
++ WanderingTrader entityvillagertrader = (WanderingTrader) EntityType.WANDERING_TRADER.spawn(world, (CompoundTag) null, (Component) null, (Player) null, blockposition2, MobSpawnType.EVENT, false, false, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.NATURAL, trader -> trader.setDespawnDelay(48000)); // CraftBukkit // Paper - set despawnTimer before spawn events called
+
+ if (entityvillagertrader != null) {
+ for (int i = 0; i < 2; ++i) {