Skip to content
This repository was archived by the owner on Apr 13, 2025. It is now read-only.

Commit c038d78

Browse files
committed
Updated Upstream (Paper)
Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@597dcfff Add support for lz4 (#12053) PaperMC/Paper@53ae5c95 Make Sittable interface extend Entity (#12016) PaperMC/Paper@786ddf53 Default piston block entity direction to DOWN (#12039) PaperMC/Paper@cb6c57e0 Fix Squid and Dolphin spawn height (#12045) PaperMC/Paper@51acc802 Prevent duplicate raider in RaidSpawnWaveEvent list (#12040) PaperMC/Paper@61312fdb Switch to jspecify annotations for Player (#12042) PaperMC/Paper@1a04e96a Fix EntityBreedEvent cancellation (#12046) PaperMC/Paper@eff617b8 [ci/skip] Deprecate Server#setSpawnRadius (#12024)
1 parent 71f219d commit c038d78

10 files changed

Lines changed: 68 additions & 69 deletions

File tree

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ group = org.purpurmc.purpur
22
version = 1.21.4-R0.1-SNAPSHOT
33

44
mcVersion = 1.21.4
5-
paperCommit = 742968e078744a9d9fea35dc601cb6fecf05d889
5+
paperCommit = eff617b8f886d81b91d74b9b0ee9951375e73425
66

77
org.gradle.configuration-cache = true
88
org.gradle.caching = true

purpur-api/paper-patches/features/0002-Purpur-config-files.patch

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files
55

66

77
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
8-
index 365368983a25f7ccbd3c8b7b572a5173a4c868a0..594bcedd823acc87ed429ad8ef17b66e9dc15beb 100644
8+
index 7d5a3f8fe257000b559d64bc045b1e4a14bb295d..78637a4f9650c1dd7ccc94bbfeb1fac048aa7f69 100644
99
--- a/src/main/java/org/bukkit/Server.java
1010
+++ b/src/main/java/org/bukkit/Server.java
11-
@@ -2330,6 +2330,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
11+
@@ -2334,6 +2334,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
1212
}
1313
// Paper end
1414

purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/src/main/java/org/bukkit/Bukkit.java
22
+++ b/src/main/java/org/bukkit/Bukkit.java
3-
@@ -2980,4 +_,133 @@
3+
@@ -2984,4 +_,133 @@
44
public static Server.Spigot spigot() {
55
return server.spigot();
66
}
Lines changed: 14 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
11
--- a/src/main/java/org/bukkit/OfflinePlayer.java
22
+++ b/src/main/java/org/bukkit/OfflinePlayer.java
3-
@@ -573,4 +_,106 @@
3+
@@ -567,4 +_,104 @@
44
@Override
5-
io.papermc.paper.persistence.@NotNull PersistentDataContainerView getPersistentDataContainer();
5+
io.papermc.paper.persistence.PersistentDataContainerView getPersistentDataContainer();
66
// Paper end - add pdc to offline player
77
+
88
+ // Purpur start - OfflinePlayer API
@@ -12,29 +12,29 @@
1212
+ *
1313
+ * @return True if the player is allowed to fly.
1414
+ */
15-
+ public boolean getAllowFlight();
15+
+ boolean getAllowFlight();
1616
+
1717
+ /**
1818
+ * Sets if the OfflinePlayer is allowed to fly via jump key double-tap like in
1919
+ * creative mode.
2020
+ *
2121
+ * @param flight If flight should be allowed.
2222
+ */
23-
+ public void setAllowFlight(boolean flight);
23+
+ void setAllowFlight(boolean flight);
2424
+
2525
+ /**
2626
+ * Checks to see if this player is currently flying or not.
2727
+ *
2828
+ * @return True if the player is flying, else false.
2929
+ */
30-
+ public boolean isFlying();
30+
+ boolean isFlying();
3131
+
3232
+ /**
3333
+ * Makes this player start or stop flying.
3434
+ *
3535
+ * @param value True to fly.
3636
+ */
37-
+ public void setFlying(boolean value);
37+
+ void setFlying(boolean value);
3838
+
3939
+ /**
4040
+ * Sets the speed at which a client will fly. Negative values indicate
@@ -44,7 +44,7 @@
4444
+ * @throws IllegalArgumentException If new speed is less than -1 or
4545
+ * greater than 1
4646
+ */
47-
+ public void setFlySpeed(float value) throws IllegalArgumentException;
47+
+ void setFlySpeed(float value) throws IllegalArgumentException;
4848
+
4949
+ /**
5050
+ * Sets the speed at which a client will walk. Negative values indicate
@@ -54,29 +54,29 @@
5454
+ * @throws IllegalArgumentException If new speed is less than -1 or
5555
+ * greater than 1
5656
+ */
57-
+ public void setWalkSpeed(float value) throws IllegalArgumentException;
57+
+ void setWalkSpeed(float value) throws IllegalArgumentException;
5858
+
5959
+ /**
6060
+ * Gets the current allowed speed that a client can fly.
6161
+ *
6262
+ * @return The current allowed speed, from -1 to 1
6363
+ */
64-
+ public float getFlySpeed();
64+
+ float getFlySpeed();
6565
+
6666
+ /**
6767
+ * Gets the current allowed speed that a client can walk.
6868
+ *
6969
+ * @return The current allowed speed, from -1 to 1
7070
+ */
71-
+ public float getWalkSpeed();
71+
+ float getWalkSpeed();
7272
+
7373
+ /**
7474
+ * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation.
7575
+ *
7676
+ * @param destination
7777
+ * @return true if teleportation was successful
7878
+ */
79-
+ public boolean teleportOffline(@NotNull org.bukkit.Location destination);
79+
+ boolean teleportOffline(org.bukkit.Location destination);
8080
+
8181
+ /**
8282
+ * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleport implementation.
@@ -85,16 +85,15 @@
8585
+ * @param cause Teleport cause used if player is online
8686
+ * @return true if teleportation was successful
8787
+ */
88-
+ public boolean teleportOffline(@NotNull org.bukkit.Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause);
88+
+ boolean teleportOffline(org.bukkit.Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause);
8989
+
9090
+ /**
9191
+ * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation.
9292
+ *
9393
+ * @param destination
9494
+ * @return <code>true</code> if teleportation successful
9595
+ */
96-
+ @NotNull
97-
+ public java.util.concurrent.CompletableFuture<Boolean> teleportOfflineAsync(@NotNull Location destination);
96+
+ java.util.concurrent.CompletableFuture<Boolean> teleportOfflineAsync(Location destination);
9897
+
9998
+ /**
10099
+ * Sets OfflinePlayer's location. If player is online, it falls back to the Player#teleportAsync implementation.
@@ -103,7 +102,6 @@
103102
+ * @param cause Teleport cause used if player is online
104103
+ * @return <code>true</code> if teleportation successful
105104
+ */
106-
+ @NotNull
107-
+ public java.util.concurrent.CompletableFuture<Boolean> teleportOfflineAsync(@NotNull Location destination, @NotNull org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause);
105+
+ java.util.concurrent.CompletableFuture<Boolean> teleportOfflineAsync(Location destination, org.bukkit.event.player.PlayerTeleportEvent.TeleportCause cause);
108106
+ // Purpur end - OfflinePlayer API
109107
}

purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
--- a/src/main/java/org/bukkit/Server.java
22
+++ b/src/main/java/org/bukkit/Server.java
3-
@@ -2654,4 +_,111 @@
3+
@@ -2658,4 +_,111 @@
44
*/
55
void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value);
66
// Paper end - API to check if the server is sleeping

purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
--- a/src/main/java/org/bukkit/entity/Player.java
22
+++ b/src/main/java/org/bukkit/entity/Player.java
3-
@@ -3928,4 +_,123 @@
3+
@@ -3902,4 +_,123 @@
44
* @return the result of this method, holding leftovers and spawned items.
55
*/
6-
@NotNull PlayerGiveResult give(@NotNull Collection<@NotNull ItemStack> items, boolean dropIfFull);
6+
PlayerGiveResult give(Collection<ItemStack> items, boolean dropIfFull);
77
+
88
+ // Purpur start
99
+ /**
1010
+ * Allows you to get if player uses PurpurClient
1111
+ *
1212
+ * @return true if player uses PurpurClient
1313
+ */
14-
+ public boolean usesPurpurClient();
14+
+ boolean usesPurpurClient();
1515
+
1616
+ /**
1717
+ * Check if player is AFK
@@ -40,7 +40,7 @@
4040
+ * @param location Location to highlight
4141
+ * @param duration Duration for highlight to show in milliseconds
4242
+ */
43-
+ void sendBlockHighlight(@NotNull Location location, int duration);
43+
+ void sendBlockHighlight(Location location, int duration);
4444
+
4545
+ /**
4646
+ * Creates debug block highlight on specified block location and show it to this player.
@@ -50,7 +50,7 @@
5050
+ * @param duration Duration for highlight to show in milliseconds
5151
+ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client
5252
+ */
53-
+ void sendBlockHighlight(@NotNull Location location, int duration, int argb);
53+
+ void sendBlockHighlight(Location location, int duration, int argb);
5454
+
5555
+ /**
5656
+ * Creates debug block highlight on specified block location and show it to this player.
@@ -60,7 +60,7 @@
6060
+ * @param duration Duration for highlight to show in milliseconds
6161
+ * @param text Text to show above the highlight
6262
+ */
63-
+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text);
63+
+ void sendBlockHighlight(Location location, int duration, String text);
6464
+
6565
+ /**
6666
+ * Creates debug block highlight on specified block location and show it to this player.
@@ -71,7 +71,7 @@
7171
+ * @param text Text to show above the highlight
7272
+ * @param argb Color of the highlight. ARGB int. Will be ignored on some versions of vanilla client
7373
+ */
74-
+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, int argb);
74+
+ void sendBlockHighlight(Location location, int duration, String text, int argb);
7575
+
7676
+ /**
7777
+ * Creates debug block highlight on specified block location and show it to this player.
@@ -83,7 +83,7 @@
8383
+ * @param transparency Transparency of the highlight
8484
+ * @throws IllegalArgumentException If transparency is outside 0-255 range
8585
+ */
86-
+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull org.bukkit.Color color, int transparency);
86+
+ void sendBlockHighlight(Location location, int duration, org.bukkit.Color color, int transparency);
8787
+
8888
+ /**
8989
+ * Creates debug block highlight on specified block location and show it to this player.
@@ -96,7 +96,7 @@
9696
+ * @param transparency Transparency of the highlight
9797
+ * @throws IllegalArgumentException If transparency is outside 0-255 range
9898
+ */
99-
+ void sendBlockHighlight(@NotNull Location location, int duration, @NotNull String text, @NotNull org.bukkit.Color color, int transparency);
99+
+ void sendBlockHighlight(Location location, int duration, String text, org.bukkit.Color color, int transparency);
100100
+
101101
+ /**
102102
+ * Clears all debug block highlights
@@ -108,7 +108,7 @@
108108
+ *
109109
+ * @param message The death message to show the player
110110
+ */
111-
+ void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message);
111+
+ void sendDeathScreen(net.kyori.adventure.text.Component message);
112112
+
113113
+ /**
114114
+ * Sends a player the death screen with a specified death message,
@@ -119,7 +119,7 @@
119119
+ * @deprecated Use {@link #sendDeathScreen(net.kyori.adventure.text.Component)} instead, as 1.20 removed the killer ID from the packet.
120120
+ */
121121
+ @Deprecated(since = "1.20")
122-
+ default void sendDeathScreen(@NotNull net.kyori.adventure.text.Component message, @Nullable Entity killer) {
122+
+ default void sendDeathScreen(net.kyori.adventure.text.Component message, @Nullable Entity killer) {
123123
+ sendDeathScreen(message);
124124
+ }
125125
+ // Purpur end

purpur-server/minecraft-patches/features/0013-Make-entity-breeding-times-configurable.patch

Lines changed: 20 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ Subject: [PATCH] Make entity breeding times configurable
55

66

77
diff --git a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
8-
index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117fc0f3043f 100644
8+
index 8fe5bd54b5a4848da1f08ea65fe2bc3514bed8c8..54eeb72b638127b180470887a3b59d55773f3bc9 100644
99
--- a/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
1010
+++ b/net/minecraft/world/entity/ai/behavior/VillagerMakeLove.java
1111
@@ -118,8 +118,10 @@ public class VillagerMakeLove extends Behavior<Villager> {
@@ -19,10 +19,10 @@ index 4fb63e58eac5d67fcd31c3233dca1dae72b98bc4..dd8d315eba203db121e24e3402f2117f
1919
+ partner.setAge(level.purpurConfig.villagerBreedingTicks);
2020
+ // Purpur end - Make entity breeding times configurable
2121
level.addFreshEntityWithPassengers(breedOffspring, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.BREEDING);
22-
// CraftBukkit end
22+
// CraftBukkit end - call EntityBreedEvent
2323
level.broadcastEntityEvent(breedOffspring, (byte)12);
2424
diff --git a/net/minecraft/world/entity/animal/Animal.java b/net/minecraft/world/entity/animal/Animal.java
25-
index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5e659ce20 100644
25+
index da1f5dcc213b9a5f8d26a546e7575b063fb0473c..452270f7f1c54ca98c34dcf9a9d29acae77737c8 100644
2626
--- a/net/minecraft/world/entity/animal/Animal.java
2727
+++ b/net/minecraft/world/entity/animal/Animal.java
2828
@@ -40,6 +40,7 @@ public abstract class Animal extends AgeableMob {
@@ -33,10 +33,10 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5
3333

3434
protected Animal(EntityType<? extends Animal> entityType, Level level) {
3535
super(entityType, level);
36-
@@ -279,8 +280,10 @@ public abstract class Animal extends AgeableMob {
36+
@@ -282,8 +283,10 @@ public abstract class Animal extends AgeableMob {
3737
player.awardStat(Stats.ANIMALS_BRED);
3838
CriteriaTriggers.BRED_ANIMALS.trigger(player, this, animal, baby);
39-
} // Paper
39+
} // Paper - call EntityBreedEvent
4040
- this.setAge(6000);
4141
- animal.setAge(6000);
4242
+ // Purpur start - Make entity breeding times configurable
@@ -47,7 +47,7 @@ index 33c3752be451508343cad83766da7c3be1822d02..fa34e7f1c20dfd569b52a9c8e0a8d4d5
4747
animal.resetLove();
4848
level.broadcastEntityEvent(this, (byte)18);
4949
diff --git a/net/minecraft/world/entity/animal/Bee.java b/net/minecraft/world/entity/animal/Bee.java
50-
index c150ba5f706b3dd51925533300c0432ccf5e2b81..6f0b927101f9b5a07a0b6749557f6b0ebf35ae64 100644
50+
index a6dfd2013312d7542cb597a6e3976c68e9971148..31854506641874bed3306b9688d71e5c47fd9e35 100644
5151
--- a/net/minecraft/world/entity/animal/Bee.java
5252
+++ b/net/minecraft/world/entity/animal/Bee.java
5353
@@ -480,6 +480,13 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal {
@@ -119,7 +119,7 @@ index d2a4bfa5334f7361067e4adac36ba5a4a4fa6ad8..e4965300eb41512d03a0b111422c9862
119119
protected void registerGoals() {
120120
this.goalSelector.addGoal(0, new FloatGoal(this));
121121
diff --git a/net/minecraft/world/entity/animal/Fox.java b/net/minecraft/world/entity/animal/Fox.java
122-
index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f209708947093 100644
122+
index 9b8f5049b7a73b6b51ea76ed92228ff0d53b1cfb..7bc31391b0bd696ce73223d639a96278994010ca 100644
123123
--- a/net/minecraft/world/entity/animal/Fox.java
124124
+++ b/net/minecraft/world/entity/animal/Fox.java
125125
@@ -175,6 +175,13 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
@@ -136,7 +136,7 @@ index 8bf893837586ae2a9b4ef7564d242e16e4863b5d..1acf9b8c9e6a5915b3f095e83d3f2097
136136
@Override
137137
protected void defineSynchedData(SynchedEntityData.Builder builder) {
138138
super.defineSynchedData(builder);
139-
@@ -969,8 +976,10 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
139+
@@ -973,8 +980,10 @@ public class Fox extends Animal implements VariantHolder<Fox.Variant> {
140140
CriteriaTriggers.BRED_ANIMALS.trigger(serverPlayer, this.animal, this.partner, fox);
141141
}
142142

@@ -168,7 +168,7 @@ index 990723c31aa1040a4e45b9857a18d86287ef91b4..a64b609bf5ce38a252bfa1bcff869f88
168168
public float getWalkTargetValue(BlockPos pos, LevelReader level) {
169169
return level.getBlockState(pos.below()).is(Blocks.MYCELIUM) ? 10.0F : level.getPathfindingCostFromLightLevels(pos);
170170
diff --git a/net/minecraft/world/entity/animal/Ocelot.java b/net/minecraft/world/entity/animal/Ocelot.java
171-
index 1346556aa3a704930f1d278b65c6a2a904e41488..c76dff55f28f63be407c438f0c6ed634185d7b6b 100644
171+
index 41c42ecbf6aa233bd82000a4bbba3b186cca6a9d..b06697fd64a8962133f0324b2c03b9e9b4f32086 100644
172172
--- a/net/minecraft/world/entity/animal/Ocelot.java
173173
+++ b/net/minecraft/world/entity/animal/Ocelot.java
174174
@@ -87,6 +87,13 @@ public class Ocelot extends Animal {
@@ -312,7 +312,7 @@ index 4f0fbbb2caeda6d1477d3297fd68f802e4f3a9ca..edbccb7ca27aa8a1917eb8b35b3ba860
312312
this.entityData.set(HOME_POS, homePos);
313313
}
314314
diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java
315-
index 93a0fda3a2f3598c9f5606e4f379b60a2129a07b..136f2c43272e5a45e473b66656818ed88de1cff3 100644
315+
index afc12968313a408e8a71a20c2c0defde52605c4e..9d79946497cfc92ff11160b86d5064d86916af36 100644
316316
--- a/net/minecraft/world/entity/animal/Wolf.java
317317
+++ b/net/minecraft/world/entity/animal/Wolf.java
318318
@@ -210,6 +210,13 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder<Hol
@@ -384,10 +384,10 @@ index 1d7e2358bac193af48dc4b7f5b0295e3bffa152b..1d7ae2a08968860636918e7c66b60139
384384
public void addAdditionalSaveData(CompoundTag compound) {
385385
super.addAdditionalSaveData(compound);
386386
diff --git a/net/minecraft/world/entity/animal/frog/Frog.java b/net/minecraft/world/entity/animal/frog/Frog.java
387-
index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..c4ea9485294b7dec2582c638802f003ad70659b6 100644
387+
index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..143a740ce2e7f9d384b71b4d64e8b8218f60cba7 100644
388388
--- a/net/minecraft/world/entity/animal/frog/Frog.java
389389
+++ b/net/minecraft/world/entity/animal/frog/Frog.java
390-
@@ -165,6 +165,12 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
390+
@@ -165,6 +165,13 @@ public class Frog extends Animal implements VariantHolder<Holder<FrogVariant>> {
391391
}
392392
// Purpur end - Ridables
393393

@@ -397,11 +397,12 @@ index 9a400c8bf2b54aa5fbcbe65b61670cac5fbebf05..c4ea9485294b7dec2582c638802f003a
397397
+ return this.level().purpurConfig.frogBreedingTicks;
398398
+ }
399399
+ // Purpur end - Make entity breeding times configurable
400+
+
400401
@Override
401402
protected Brain.Provider<Frog> brainProvider() {
402403
return Brain.provider(MEMORY_TYPES, SENSOR_TYPES);
403404
diff --git a/net/minecraft/world/entity/animal/goat/Goat.java b/net/minecraft/world/entity/animal/goat/Goat.java
404-
index 9924a39953fb49954d02c771ae1a51411226ceac..16fe9367466372eb7cd0ecf24ba5b7cbc64a820c 100644
405+
index 302208b566038a3a352ca867dd70a61887bac104..0a018dbfe3750cf91892d8cfb5c0eac18e83d587 100644
405406
--- a/net/minecraft/world/entity/animal/goat/Goat.java
406407
+++ b/net/minecraft/world/entity/animal/goat/Goat.java
407408
@@ -128,6 +128,13 @@ public class Goat extends Animal {
@@ -581,12 +582,12 @@ index be0dc92bf5ae3da1368a649e9c4e7ff5dbb1c67c..f36e94437b4e21961532ac9ab9176761
581582
EntityType<Strider> entityType, LevelAccessor level, EntitySpawnReason spawnReason, BlockPos pos, RandomSource random
582583
) {
583584
diff --git a/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
584-
index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a865911f2e 100644
585+
index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..5af04c4d58d59b795c3f43eeb30232ab07a4e8c7 100644
585586
--- a/net/minecraft/world/entity/monster/hoglin/Hoglin.java
586587
+++ b/net/minecraft/world/entity/monster/hoglin/Hoglin.java
587-
@@ -122,6 +122,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
588-
this.timeInOverworld = timeInOverworld;
588+
@@ -117,6 +117,13 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
589589
}
590+
// Purpur end - Configurable entity base attributes
590591

591592
+ // Purpur start - Make entity breeding times configurable
592593
+ @Override
@@ -595,6 +596,6 @@ index 54924cd7c84cbcd22ffc0bd37fc24f24e73c18bc..266d1838e6602ef6322c15732f2693a8
595596
+ }
596597
+ // Purpur end - Make entity breeding times configurable
597598
+
598-
@Override
599-
public boolean canBeLeashed() {
600-
return true;
599+
@VisibleForTesting
600+
public void setTimeInOverworld(int timeInOverworld) {
601+
this.timeInOverworld = timeInOverworld;

0 commit comments

Comments
 (0)