diff --git a/patches/api/0011-LivingEntity-safeFallDistance.patch b/patches/api/0011-LivingEntity-safeFallDistance.patch index 07a515657..a858bf887 100644 --- a/patches/api/0011-LivingEntity-safeFallDistance.patch +++ b/patches/api/0011-LivingEntity-safeFallDistance.patch @@ -5,10 +5,10 @@ Subject: [PATCH] LivingEntity safeFallDistance diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index b777e530122549455dcce6fac8d4a151c1c0af42..c79633aa059a13753069cf06444e1834137f86c4 100644 +index b777e530122549455dcce6fac8d4a151c1c0af42..57a3e330043077f042a284c99e2631e1582cb32c 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1447,4 +1447,20 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1447,4 +1447,24 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end - body yaw API @@ -18,14 +18,18 @@ index b777e530122549455dcce6fac8d4a151c1c0af42..c79633aa059a13753069cf06444e1834 + * Gets the distance (in blocks) this entity can safely fall without taking damage + * + * @return Safe fall distance ++ * @deprecated use {@link org.bukkit.attribute.Attribute#GENERIC_SAFE_FALL_DISTANCE} instead + */ ++ @Deprecated + float getSafeFallDistance(); + + /** + * Set the distance (in blocks) this entity can safely fall without taking damage + * + * @param safeFallDistance Safe fall distance ++ * @deprecated use {@link org.bukkit.attribute.Attribute#GENERIC_SAFE_FALL_DISTANCE} instead + */ ++ @Deprecated + void setSafeFallDistance(float safeFallDistance); + // Purpur end } diff --git a/patches/api/0016-LivingEntity-broadcastItemBreak.patch b/patches/api/0016-LivingEntity-broadcastItemBreak.patch index 3b4acd3da..55595febc 100644 --- a/patches/api/0016-LivingEntity-broadcastItemBreak.patch +++ b/patches/api/0016-LivingEntity-broadcastItemBreak.patch @@ -5,12 +5,12 @@ Subject: [PATCH] LivingEntity#broadcastItemBreak diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index c79633aa059a13753069cf06444e1834137f86c4..6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c 100644 +index 57a3e330043077f042a284c99e2631e1582cb32c..3c5df0d60777dc6bc4dd38017423c38fcb6ed065 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1462,5 +1462,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource - * @param safeFallDistance Safe fall distance +@@ -1466,5 +1466,12 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ + @Deprecated void setSafeFallDistance(float safeFallDistance); + + /** diff --git a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch index 91934d89e..9d7eb1a62 100644 --- a/patches/api/0025-API-for-any-mob-to-burn-daylight.patch +++ b/patches/api/0025-API-for-any-mob-to-burn-daylight.patch @@ -23,10 +23,10 @@ index 50344412a04f3008439e337ecf9dd09c7f853bc9..f482467ae784b134da97eb38afb7f125 // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index 6690c06f548e5fc1966b79eb9ae5b7ddddb07a6c..4cbad9f23f232297ca1254c000b456042ffa26df 100644 +index 3c5df0d60777dc6bc4dd38017423c38fcb6ed065..b6c928d1e0d659280d9a61456be8534604cc166b 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1469,5 +1469,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1473,5 +1473,19 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource * @param slot Equipment slot to play break animation for */ void broadcastItemBreak(@NotNull org.bukkit.inventory.EquipmentSlot slot); diff --git a/patches/unapplied-server/0009-Configurable-entity-base-attributes.patch b/patches/server/0007-Configurable-entity-base-attributes.patch similarity index 91% rename from patches/unapplied-server/0009-Configurable-entity-base-attributes.patch rename to patches/server/0007-Configurable-entity-base-attributes.patch index 821f29b68..47c653034 100644 --- a/patches/unapplied-server/0009-Configurable-entity-base-attributes.patch +++ b/patches/server/0007-Configurable-entity-base-attributes.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Configurable entity base attributes diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 75d1990cc33b06652ba0cdf5ee631594cf259d31..9ced09b01af013cd2e4e64e106dee147ae369dec 100644 +index 9c99a3df80c5f0a0d81e1f6a6516d088438a0b1e..e49dda27dd609ebf377f679c4f60c13a5f610c8e 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; +@@ -163,7 +163,7 @@ import org.bukkit.plugin.PluginManager; // CraftBukkit end - public abstract class Entity implements Nameable, EntityAccess, CommandSource, ScoreHolder { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder { - + public static javax.script.ScriptEngine scriptEngine = new javax.script.ScriptEngineManager().getEngineByName("rhino"); // Purpur // CraftBukkit start private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/net/minecraft/world/entity/GlowSquid.java b/src/main/java/net/minecraft/world/entity/GlowSquid.java -index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd804b5f978 100644 +index aa76a24421cdb3908a3544d92eb3d1e3c2ebedc4..8211c152e6f4232e82e452b08047e4579465d770 100644 --- a/src/main/java/net/minecraft/world/entity/GlowSquid.java +++ b/src/main/java/net/minecraft/world/entity/GlowSquid.java @@ -36,6 +36,11 @@ public class GlowSquid extends Squid { @@ -34,18 +34,18 @@ index 4d4b57d40d8bac8d666716b0f36e1af2ca7c1ef1..bf47cf511b5e3c0107354f289b740bd8 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fcb1e4f1ff 100644 +index 72bd60f691a639a0e7b6b5a98e5a3816305cfdaf..a3ee2af337acef86a15b12c9e6d8cd8452980a87 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -287,6 +287,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.useItem = ItemStack.EMPTY; +@@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.lastClimbablePos = Optional.empty(); + this.appliedScale = 1.0F; this.attributes = new AttributeMap(DefaultAttributes.getSupplier(type), this); // Purpur + this.initAttributes(); // Purpur this.craftAttributes = new CraftAttributeMap(this.attributes); // CraftBukkit // CraftBukkit - setHealth(getMaxHealth()) inlined and simplified to skip the instanceof check for EntityPlayer, as getBukkitEntity() is not initialized in constructor this.entityData.set(LivingEntity.DATA_HEALTH_ID, (float) this.getAttribute(Attributes.MAX_HEALTH).getValue()); -@@ -302,6 +303,8 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -315,6 +316,8 @@ public abstract class LivingEntity extends Entity implements Attackable { this.brain = this.makeBrain(new Dynamic(dynamicopsnbt, (Tag) dynamicopsnbt.createMap((Map) ImmutableMap.of(dynamicopsnbt.createString("memories"), (Tag) dynamicopsnbt.emptyMap())))); } @@ -55,10 +55,10 @@ index 98907fee8d85e7b7dc66807a0717134db3a94c33..3c7c618dd9611485b81336ca4a5059fc return this.brain; } diff --git a/src/main/java/net/minecraft/world/entity/ambient/Bat.java b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -index f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1..8910aaaa1fdabecec4740d6212db3114bd1197fc 100644 +index f8a649b0fee040bbf53084ca7094583ab4ffd900..cea588d68c7e23ad8831bc611f1030d63354d91c 100644 --- a/src/main/java/net/minecraft/world/entity/ambient/Bat.java +++ b/src/main/java/net/minecraft/world/entity/ambient/Bat.java -@@ -268,6 +268,18 @@ public class Bat extends AmbientCreature { +@@ -265,6 +265,18 @@ public class Bat extends AmbientCreature { } } @@ -78,10 +78,10 @@ index f8c2e2a7065a3ad5b306ebab3d04a12f362c2ea1..8910aaaa1fdabecec4740d6212db3114 public void readAdditionalSaveData(CompoundTag nbt) { super.readAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 78e802a4bd994b6988ae415cf2958bb828830964..c1f71bf53dac227e6b8c6dbd88473fe79b6a2c64 100644 +index 4b84cf76d052112e00cd13c330182abfbe618820..ae4b53f4cdd78368deb7d510be4936ffefce4d9c 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Bee.java +++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -478,6 +478,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { +@@ -467,6 +467,11 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { } } @@ -94,26 +94,28 @@ index 78e802a4bd994b6988ae415cf2958bb828830964..c1f71bf53dac227e6b8c6dbd88473fe7 public int getRemainingPersistentAngerTime() { return (Integer) this.entityData.get(Bee.DATA_REMAINING_ANGER_TIME); diff --git a/src/main/java/net/minecraft/world/entity/animal/Cat.java b/src/main/java/net/minecraft/world/entity/animal/Cat.java -index 25636efbdb55605303e390f63276ef0bfd4929ba..83e715c9604efc9586171fd32c7cd2b339bc2349 100644 +index 3826c794ddde6b915e233e2d0395557e3ea867e0..7930e9735abf8357df737798e80b08295c2e06ec 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cat.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cat.java -@@ -123,6 +123,11 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -129,6 +129,13 @@ public class Cat extends TamableAnimal implements VariantHolder { +@@ -183,6 +183,11 @@ public class Fox extends Animal implements VariantHolder { } // Purpur end @@ -187,13 +189,13 @@ index c63634825ffffed2eccc560af9e9fcef1a9dc2e8..3faa945f9687abeba7a36f8198cb3076 + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -index cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7..46e28d807a72b6d302d29d65c52ab0813cd82b1a 100644 +index 4cc9138201b08aff8bb47720c6fe1e3447f03967..2919d055e2136a956aa038bd0bf4c1a2ff5afa2f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/IronGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/IronGolem.java -@@ -81,6 +81,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { +@@ -76,6 +76,11 @@ public class IronGolem extends AbstractGolem implements NeutralMob { public boolean isControllable() { return level().purpurConfig.ironGolemControllable; } @@ -206,7 +208,7 @@ index cb05267fb287b9de9d1829e90d9bb9c9f4aac9f7..46e28d807a72b6d302d29d65c52ab081 @Override diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index b59d6a3f799f100702efb1fd10bbc48da4f4bd8f..0ff5902dde47c4bb9922d6605d874868fb4820b9 100644 +index 11944ee34fc7e3e5551b9e18a563164f96898a54..b47dddb2fc6058a90665ccbd362088d9a2e837b5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java @@ -81,6 +81,11 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder { +@@ -137,6 +137,11 @@ public class Rabbit extends Animal implements VariantHolder { } wasOnGround = onGround; } @@ -363,10 +365,10 @@ index 87c442fb198cad8671ad1419e589a5a67c4fdca8..742805994f29a18af444912b10af631d public int getMaxSchoolSize() { return 5; diff --git a/src/main/java/net/minecraft/world/entity/animal/Sheep.java b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -index ffcb68cd299370d5a17ed92ba3814c8afe613cf9..1d69558cccc6add5f02f1ff070c985bd5ec406c0 100644 +index 7c1da46554aefde8e5e2b33a3644c9cbd771d7bc..b68886cc72d3055e7745fe4a955192bbad90dc13 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Sheep.java +++ b/src/main/java/net/minecraft/world/entity/animal/Sheep.java -@@ -136,6 +136,11 @@ public class Sheep extends Animal implements Shearable { +@@ -134,6 +134,11 @@ public class Sheep extends Animal implements Shearable { } // Purpur end @@ -379,10 +381,10 @@ index ffcb68cd299370d5a17ed92ba3814c8afe613cf9..1d69558cccc6add5f02f1ff070c985bd protected void registerGoals() { this.eatBlockGoal = new EatBlockGoal(this); diff --git a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058eb13ff73 100644 +index d51b486afb83bf3e12046ed5e61e73eec5bd7c7c..a54893d51cc1ce204e59a6ffe8b84228775af4da 100644 --- a/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java +++ b/src/main/java/net/minecraft/world/entity/animal/SnowGolem.java -@@ -71,6 +71,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM +@@ -69,6 +69,11 @@ public class SnowGolem extends AbstractGolem implements Shearable, RangedAttackM } // Purpur end @@ -395,10 +397,10 @@ index c48ceed671e1804756d8a11208e5f7e5094a4bb1..35392365838bd412255777d1a53bc058 protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur diff --git a/src/main/java/net/minecraft/world/entity/animal/Squid.java b/src/main/java/net/minecraft/world/entity/animal/Squid.java -index 7b6e1f5a44a5a690dca97693bb053d3186ff1b69..9f598ff84b836d10e215c7e8fe79735f7f41e32b 100644 +index 37402f7df48f04a6df2211e079519ed95d3735bc..e38416189d9dc72f0b5951a1f6430dbc4578c422 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Squid.java +++ b/src/main/java/net/minecraft/world/entity/animal/Squid.java -@@ -70,6 +70,11 @@ public class Squid extends WaterAnimal { +@@ -68,6 +68,11 @@ public class Squid extends WaterAnimal { } // Purpur end @@ -411,10 +413,10 @@ index 7b6e1f5a44a5a690dca97693bb053d3186ff1b69..9f598ff84b836d10e215c7e8fe79735f protected void registerGoals() { this.goalSelector.addGoal(0, new Squid.SquidRandomMovementGoal(this)); diff --git a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -index 3ec6caf965c9a69eb56e507e2c452129064d3c68..b8b4ca31ad2fc5292082905c979a974a4ed42dab 100644 +index 18dcb67d246b63637d8c948b6c3f48c58d71c339..327b1805d9d4069212a8772ff189c9ab24ae1183 100644 --- a/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java +++ b/src/main/java/net/minecraft/world/entity/animal/TropicalFish.java -@@ -77,6 +77,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder +@@ -79,6 +79,11 @@ public class TropicalFish extends AbstractSchoolingFish implements VariantHolder } // Purpur end @@ -427,10 +429,10 @@ index 3ec6caf965c9a69eb56e507e2c452129064d3c68..b8b4ca31ad2fc5292082905c979a974a return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f37210daf929a 100644 +index 4742d90ca38c1d8034b0cfcf7f336e225fade197..b8dcf3d632c79585ec7e9f50fa040fa9fac5d7c5 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -@@ -103,6 +103,11 @@ public class Turtle extends Animal { +@@ -104,6 +104,11 @@ public class Turtle extends Animal { } // Purpur end @@ -443,10 +445,10 @@ index 29788b801e1faba6d7671e64e280ff585842ed27..31ed37796a4c88ecf514f298631f3721 this.entityData.set(Turtle.HOME_POS, pos.immutable()); // Paper - called with mutablepos... } diff --git a/src/main/java/net/minecraft/world/entity/animal/Wolf.java b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -index 0c3d29e55c3c1aacbf337cc24ac220c92866b84e..b5c1efc1a67cdf163420b55e49baef9d78d9518f 100644 +index 731909acd1e18dcfbd25becb0ddff30fb2a6a0f5..8aaac4e86ec6d9c40999f6198cda7d367ece54e3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Wolf.java +++ b/src/main/java/net/minecraft/world/entity/animal/Wolf.java -@@ -127,6 +127,11 @@ public class Wolf extends TamableAnimal implements NeutralMob { +@@ -146,6 +146,11 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder getModelRotationValues() { return this.modelRotationValues; diff --git a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -index 7183cd107218d36962803facb63cd6f384de8611..74ca2442008b0dea9f9762bbec8d6de1390f2582 100644 +index 4477f201ff02a5e0758af5431b7d9b7c5e11d642..07a5599a9370ba167e985006d74caa3c80288e28 100644 --- a/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java +++ b/src/main/java/net/minecraft/world/entity/animal/camel/Camel.java -@@ -325,6 +325,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl +@@ -316,6 +316,23 @@ public class Camel extends AbstractHorse implements PlayerRideableJumping, Saddl return this.dashCooldown; } @@ -503,10 +505,10 @@ index 7183cd107218d36962803facb63cd6f384de8611..74ca2442008b0dea9f9762bbec8d6de1 protected SoundEvent getAmbientSound() { return SoundEvents.CAMEL_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55465b1edb 100644 +index 12a137665f93d992094e86327a496057890d1018..59829fb7342696d29aa709d392f89bf263257fd3 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -162,6 +162,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -229,6 +229,44 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, } // Purpur end @@ -551,17 +553,17 @@ index 41777079871eef2bb4d319f28c8f441d7f2607a1..24fb38499092d8cbee3818bf5c873a55 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HorseHasRider(this)); // Purpur -@@ -1242,7 +1280,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, +@@ -1260,7 +1298,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, entityData = new AgeableMob.AgeableMobGroupData(0.2F); } - this.randomizeAttributes(world.getRandom()); + // this.randomizeAttributes(world.getRandom()); // Purpur - replaced by initAttributes() - return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData); } diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java -index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d5eea896f 100644 +index 1febe8e173886d501e40331c12261701bd36b0f6..b47a72ffb8b947cea5d4bc6ee37b824c4161be31 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Donkey.java @@ -22,6 +22,21 @@ public class Donkey extends AbstractChestedHorse { @@ -587,10 +589,10 @@ index 5242059484fb5f407a2da2b0c01a8feeaf1c3a64..f623586530e9e7783653b95c8c30d07d protected SoundEvent getAmbientSound() { return SoundEvents.DONKEY_AMBIENT; diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -index 5efed70522657c2a02f869affc6755332082cf97..2971b868210ffb3390d19c7f8079fcc60f7d00b0 100644 +index 816c698a81a77f217a606468aa157bdaed779479..9ad0d3972d1970b11687da174a83e3a0a4180c0e 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Horse.java -@@ -47,6 +47,21 @@ public class Horse extends AbstractHorse implements VariantHolder { +@@ -51,6 +51,21 @@ public class Horse extends AbstractHorse implements VariantHolder { } // Purpur end @@ -613,7 +615,7 @@ index 5efed70522657c2a02f869affc6755332082cf97..2971b868210ffb3390d19c7f8079fcc6 protected void randomizeAttributes(RandomSource random) { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue((double)generateMaxHealth(random::nextInt)); diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 1c6be506804b9622c4d0094814939f894ca857df..34d87ab749a62c5d897b7bc66b116a801324b6a7 100644 +index 3943ca63aaeecfb98c34ceef9b0c40e71de4e832..697895661826e4a1ecbdfd2c3a195b9d0ee7e00a 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -124,6 +124,21 @@ public class Llama extends AbstractChestedHorse implements VariantHolder(this, AbstractPiglin.class, true)); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa457420395 100644 +index 2cb65bc3e2a2f990f4036f4f0418d9cd5226381e..698076b0e958aadf9736d7753df64a73dd3c17cd 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zoglin.java -@@ -99,6 +99,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { +@@ -97,6 +97,11 @@ public class Zoglin extends Monster implements Enemy, HoglinBase { } // Purpur end @@ -1353,10 +1356,10 @@ index f34803f4bebf2eafba483628b20784c2134002fa..62d0c4dcb2992b665e473726a09d3fa4 protected Brain.Provider brainProvider() { return Brain.provider(MEMORY_TYPES, SENSOR_TYPES); diff --git a/src/main/java/net/minecraft/world/entity/monster/Zombie.java b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254eee4af4d 100644 +index 7c78b243164a517818565845b1a6c7d40c8839d8..9af1c4b794ddaf8640076f172cf0317acad6bcb2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Zombie.java +++ b/src/main/java/net/minecraft/world/entity/monster/Zombie.java -@@ -124,6 +124,11 @@ public class Zombie extends Monster { +@@ -121,6 +121,11 @@ public class Zombie extends Monster { } // Purpur end @@ -1368,7 +1371,7 @@ index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254 @Override protected void registerGoals() { this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur -@@ -607,7 +612,7 @@ public class Zombie extends Monster { +@@ -596,7 +601,7 @@ public class Zombie extends Monster { } protected void randomizeReinforcementsChance() { @@ -1378,10 +1381,10 @@ index 3be3e46408b2d43f2cbb27b516be8c466ab0ed79..2e956c5a76573c1966c9d927bd4f7254 @Override diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -index ba391ae0f8c361fb0ffbe0b65f12a008c21e4676..9fb70aabb68d5d14ab15420d8677e46c399912b2 100644 +index cc3d9f47ef6d1efa589c8bed5c51ed9e61d7c07d..8e7f0f2069c3382f3a7b08b80f829398e62377f7 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombieVillager.java -@@ -99,6 +99,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { +@@ -97,6 +97,16 @@ public class ZombieVillager extends Zombie implements VillagerDataHolder { } // Purpur end @@ -1396,13 +1399,13 @@ index ba391ae0f8c361fb0ffbe0b65f12a008c21e4676..9fb70aabb68d5d14ab15420d8677e46c + } + @Override - protected void defineSynchedData() { - super.defineSynchedData(); + protected void defineSynchedData(SynchedEntityData.Builder builder) { + super.defineSynchedData(builder); diff --git a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d790a50321 100644 +index 2ff0ce04ce210b77c555f59967182ed4dd3fe9aa..138f3f6a9b0754d54e5f8000962bb52b224f677d 100644 --- a/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/ZombifiedPiglin.java -@@ -81,6 +81,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -79,6 +79,11 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { } // Purpur end @@ -1414,7 +1417,7 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Override public void setPersistentAngerTarget(@Nullable UUID angryAt) { this.persistentAngerTarget = angryAt; -@@ -263,7 +268,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { +@@ -261,7 +266,7 @@ public class ZombifiedPiglin extends Zombie implements NeutralMob { @Override protected void randomizeReinforcementsChance() { @@ -1424,10 +1427,10 @@ index 2121de85765d535effb3ef4e0c4a873238dd7576..9d1d8b5a3f2bac29f8058f68e2ded4d7 @Nullable diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627c3c95bc1 100644 +index 6e86e0597af66bad8f2e97661b588e950b2679ba..3bfc073fb142e3446044a42c33be6c30587cc3c4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java -@@ -109,6 +109,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { +@@ -107,6 +107,11 @@ public class Hoglin extends Animal implements Enemy, HoglinBase { } // Purpur end @@ -1440,10 +1443,10 @@ index 42e56f0d6d1c5e913f9c9c4e0c53e4ca187967f1..a45df0aeae94f408a24f55bc15c71627 public boolean canBeLeashed(Player player) { return !this.isLeashed(); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78f06cd46a 100644 +index 6632cab4ed43bbfd10b4d8f3b2c447a35eba735e..06e0f737615c90bd733a89a731156598ccfe447f 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/Piglin.java -@@ -113,6 +113,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento +@@ -111,6 +111,11 @@ public class Piglin extends AbstractPiglin implements CrossbowAttackMob, Invento } // Purpur end @@ -1456,10 +1459,10 @@ index 015bb57c73c7b38622329fc3001b6369fa183cd1..b5e6a48192592e9bc5a7c0a2775e5d78 public void addAdditionalSaveData(CompoundTag nbt) { super.addAdditionalSaveData(nbt); diff --git a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52bc836901c 100644 +index 17e2457bc83e7ee4402c10ee7d2ef5aa36901565..362f3fddd8090799278f4b4e58c5af5de00315f2 100644 --- a/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java +++ b/src/main/java/net/minecraft/world/entity/monster/piglin/PiglinBrute.java -@@ -80,6 +80,11 @@ public class PiglinBrute extends AbstractPiglin { +@@ -79,6 +79,11 @@ public class PiglinBrute extends AbstractPiglin { } // Purpur end @@ -1472,10 +1475,10 @@ index 0ec07be03e871caf5a30748f540cac8ce50f1f4b..dc70d4819fbc2aa5b6a026f2aff2f52b return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 50.0).add(Attributes.MOVEMENT_SPEED, 0.35F).add(Attributes.ATTACK_DAMAGE, 7.0); } diff --git a/src/main/java/net/minecraft/world/entity/npc/Villager.java b/src/main/java/net/minecraft/world/entity/npc/Villager.java -index 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652a8bcb0a8 100644 +index 980f48b546f0da5696c110357ea42352a48fbd42..ff86c7d4878e43fc9d375b9b60213a2271b92cff 100644 --- a/src/main/java/net/minecraft/world/entity/npc/Villager.java +++ b/src/main/java/net/minecraft/world/entity/npc/Villager.java -@@ -180,6 +180,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler +@@ -178,6 +178,11 @@ public class Villager extends AbstractVillager implements ReputationEventHandler } // Purpur end @@ -1488,7 +1491,7 @@ index 8e3e9bfe614057450ec771f72c9b1d7ea061d66e..8a864f236048e0c2b120f698439af652 public Brain getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error 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 80b9c2043f2a84dc44b082a9c97a7b5dbbb93dc2..80a157aa57fe5e6725b6e06a93b841d66cf62455 100644 +index 6bdf3d1e3652a661282d61f1dc2bfc2712339953..ac3cca0db4478841f91d966bd49ca4e5b5e91229 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -88,6 +88,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch b/patches/server/0008-Barrels-and-enderchests-6-rows.patch similarity index 90% rename from patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch rename to patches/server/0008-Barrels-and-enderchests-6-rows.patch index d0d27b999..c21c377e1 100644 --- a/patches/unapplied-server/0010-Barrels-and-enderchests-6-rows.patch +++ b/patches/server/0008-Barrels-and-enderchests-6-rows.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Barrels and enderchests 6 rows diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 6886f5808ffaaed06dcae122f7cba6a12ad563af..f8a6d48200dae42cb73ed4f7eb52f957e7530e8c 100644 +index 2d6b6795703431939005aa09d1ed590c3f755163..f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1189,6 +1189,27 @@ public abstract class PlayerList { +@@ -1188,6 +1188,27 @@ public abstract class PlayerList { player.getBukkitEntity().recalculatePermissions(); // CraftBukkit this.server.getCommands().sendCommands(player); } // Paper - Add sendOpLevel API @@ -37,11 +37,11 @@ index 6886f5808ffaaed06dcae122f7cba6a12ad563af..f8a6d48200dae42cb73ed4f7eb52f957 public boolean isWhiteListed(GameProfile profile) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 8a6acc19e9f3afb778420495a5ed41ce78227f1a..cad2ff51d79d584312a03f35266774b297883c0c 100644 +index 90e44c7281935bc7ceb3b220bbcd73187fed44fb..0641e448e0e98694976b820c2e9c4868f2b76909 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -183,6 +183,7 @@ public abstract class Player extends LivingEntity { - public float hurtDir; // Paper - protected -> public +@@ -195,6 +195,7 @@ public abstract class Player extends LivingEntity { + public boolean ignoreFallDamageFromCurrentImpulse; public boolean affectsSpawning = true; // Paper - Affects Spawning API public net.kyori.adventure.util.TriState flyingFallDamage = net.kyori.adventure.util.TriState.NOT_SET; // Paper - flying fall damage + public int sixRowEnderchestSlotCount = -1; // Purpur @@ -84,10 +84,10 @@ index 0dbfd23bbfc6ad203f048142f8c90ef741849fe1..9a80427d2bb470b6b1638e59aba57216 return new ChestMenu(MenuType.GENERIC_9x6, syncId, playerInventory, inventory, 6); } diff --git a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java -index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee80fbe221 100644 +index a15d5ff872dbd77f3c3145e0328f3d02e431ff8c..1dcf36d502990d32fc4cd3ea69c3ea334baed69a 100644 --- a/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java +++ b/src/main/java/net/minecraft/world/inventory/PlayerEnderChestContainer.java -@@ -30,11 +30,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { +@@ -31,11 +31,18 @@ public class PlayerEnderChestContainer extends SimpleContainer { } public PlayerEnderChestContainer(Player owner) { @@ -108,19 +108,19 @@ index 4703f23316f82a1a942907b46d2d6dcb7d70ec37..162798f57a05b78121fa6c4fadf5adee this.activeChest = blockEntity; } diff --git a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86ddbb3f7f6 100644 +index 5f9858ef8d0ec1a74d469ab4426eb1db068873fd..d7ef772444b301d0a3f167679027195e4150b064 100644 --- a/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java +++ b/src/main/java/net/minecraft/world/level/block/EnderChestBlock.java -@@ -92,7 +92,7 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -91,7 +91,7 @@ public class EnderChestBlock extends AbstractChestBlock i EnderChestBlockEntity enderChestBlockEntity = (EnderChestBlockEntity)blockEntity; playerEnderChestContainer.setActiveChest(enderChestBlockEntity); player.openMenu( -- new SimpleMenuProvider((syncId, inventory, playerx) -> ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) -+ new SimpleMenuProvider((syncId, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(syncId, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(syncId, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur +- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) ++ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, playerEnderChestContainer) : ChestMenu.threeRows(i, inventory, playerEnderChestContainer), CONTAINER_TITLE) // Purpur ); player.awardStat(Stats.OPEN_ENDERCHEST); PiglinAi.angerNearbyPiglins(player, true); -@@ -103,6 +103,35 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -102,6 +102,35 @@ public class EnderChestBlock extends AbstractChestBlock i } } @@ -157,10 +157,10 @@ index 384dbae11ea1c48bef82bfa30aa9867134fac4cf..506965665e16b14dd0873a4b0892d86d public BlockEntity newBlockEntity(BlockPos pos, BlockState state) { return new EnderChestBlockEntity(pos, state); diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2d989a3b5 100644 +index 6186e55014bbb9d5bedaa0e9d196879c55339d42..f4f11292d6d00f4a7c65e3e2a157bba595f70889 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -@@ -67,7 +67,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -68,7 +68,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { public BarrelBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BARREL, pos, state); @@ -178,7 +178,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 this.openersCounter = new ContainerOpenersCounter() { @Override protected void onOpen(Level world, BlockPos pos, BlockState state) { -@@ -118,7 +127,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -119,7 +128,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override public int getContainerSize() { @@ -196,7 +196,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..e38a0adf5463c48311ad08b8d2e5b5c2 } @Override -@@ -138,7 +156,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -139,7 +157,16 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) { diff --git a/patches/unapplied-server/0011-Llama-API.patch b/patches/server/0009-Llama-API.patch similarity index 83% rename from patches/unapplied-server/0011-Llama-API.patch rename to patches/server/0009-Llama-API.patch index 9a6f7cb1b..784f0c6a1 100644 --- a/patches/unapplied-server/0011-Llama-API.patch +++ b/patches/server/0009-Llama-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Llama API diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java -index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827a0113225 100644 +index df695b444fa2a993d381e2f197182c3e91a68502..eb0faf58fa1a408f294fc62120b140def97f998d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java +++ b/src/main/java/net/minecraft/world/entity/ai/goal/LlamaFollowCaravanGoal.java @@ -22,6 +22,7 @@ public class LlamaFollowCaravanGoal extends Goal { @@ -25,7 +25,7 @@ index 9ae94ae4ea74ff0fa7e22ff8527925c8b6b5a700..50622e300950b017b41a6f85643c8827 double d = this.llama.distanceToSqr(this.llama.getCaravanHead()); if (d > 676.0) { diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java -index 34d87ab749a62c5d897b7bc66b116a801324b6a7..b9b66f22ef39cb38bfb4dcbf4e73a0a7da596660 100644 +index 697895661826e4a1ecbdfd2c3a195b9d0ee7e00a..05614fb50a5509331ac15bb819e827365a4cefcf 100644 --- a/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java +++ b/src/main/java/net/minecraft/world/entity/animal/horse/Llama.java @@ -75,6 +75,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder type, Level world) { super(type, world); -@@ -170,7 +171,7 @@ public class Llama extends AbstractChestedHorse implements VariantHolder -1) { -@@ -391,6 +405,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -399,6 +413,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl } if (this.player.getLastActionTime() > 0L && this.server.getPlayerIdleTimeout() > 0 && Util.getMillis() - this.player.getLastActionTime() > (long) this.server.getPlayerIdleTimeout() * 1000L * 60L && !this.player.wonGame) { // Paper - Prevent AFK kick while watching end credits @@ -115,7 +115,7 @@ index ccf2ab27e73903ee4ae5e60838d694ed4ccad79c..cb5fc10f7ca81f608cdbd5a3f2554c31 this.player.resetLastActionTime(); // CraftBukkit - SPIGOT-854 this.disconnect(Component.translatable("multiplayer.disconnect.idling"), org.bukkit.event.player.PlayerKickEvent.Cause.IDLING); // Paper - kick event cause } -@@ -638,6 +658,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -658,6 +678,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -124,16 +124,16 @@ index ccf2ab27e73903ee4ae5e60838d694ed4ccad79c..cb5fc10f7ca81f608cdbd5a3f2554c31 Location oldTo = to.clone(); PlayerMoveEvent event = new PlayerMoveEvent(player, from, to); this.cserver.getPluginManager().callEvent(event); -@@ -1505,7 +1527,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl - if (!event.isAllowed()) { +@@ -1494,7 +1516,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl movedWrongly = true; if (event.getLogWarning()) + // Paper end - ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!", this.player.getName().getString()); + ServerGamePacketListenerImpl.LOGGER.warn("{} moved wrongly!, ({})", this.player.getName().getString(), d11); // Purpur - } + } // Paper } -@@ -1572,6 +1594,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -1562,6 +1584,8 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl this.lastYaw = to.getYaw(); this.lastPitch = to.getPitch(); @@ -177,7 +177,7 @@ index d8cc5614502db7025349e085381b6b32ad32296a..f1b9e83206cc67e6ef29ebe088351b0a private EntitySelector() {} // Paper start - Affects Spawning API diff --git a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java -index 28cff997a1b263784e245f692adbff2a888a2d53..13b8141bdb2a1663431be645eb091f9e7638f3d0 100644 +index d2f0c3b26d4beedb49d86e0242d843590d469d02..7463eefb7d09ea55fe8780210e7e967c2fe7896d 100644 --- a/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java +++ b/src/main/java/net/minecraft/world/entity/ai/targeting/TargetingConditions.java @@ -64,6 +64,10 @@ public class TargetingConditions { @@ -192,10 +192,10 @@ index 28cff997a1b263784e245f692adbff2a888a2d53..13b8141bdb2a1663431be645eb091f9e if (baseEntity == null) { if (this.isCombat && (!targetEntity.canBeSeenAsEnemy() || targetEntity.level().getDifficulty() == Difficulty.PEACEFUL)) { diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index cad2ff51d79d584312a03f35266774b297883c0c..97805659af862213e9217c408519563de2be5b35 100644 +index 0641e448e0e98694976b820c2e9c4868f2b76909..d5383e9cbbee2f9d4223319ae38abed41a13cfb3 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -189,6 +189,13 @@ public abstract class Player extends LivingEntity { +@@ -201,6 +201,13 @@ public abstract class Player extends LivingEntity { public boolean fauxSleeping; public int oldLevel = -1; @@ -223,10 +223,10 @@ index ea0aee88c7d901034427db201c1b2430f8a1d522..1f28bfb435c1e4d97da713f96c452aba if (range < 0.0 || d < range * range) { return true; diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 5da7b468af3dd19491f38140f303e55b7cab21db..8fec2e517cc57940348f4bee33212a9aae34b102 100644 +index ee7e484a4dd694f36ab151402bec4ca15dea953c..33f229c13b3b77f967d81e9d4453e6afa9157fd9 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -489,10 +489,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -565,10 +565,15 @@ public class CraftPlayer extends CraftHumanEntity implements Player { @Override public void setPlayerListName(String name) { @@ -243,7 +243,7 @@ index 5da7b468af3dd19491f38140f303e55b7cab21db..8fec2e517cc57940348f4bee33212a9a if (this.getHandle().connection == null) return; // Paper - Updates are possible before the player has fully joined for (ServerPlayer player : (List) this.server.getHandle().players) { if (player.getBukkitEntity().canSee(this)) { -@@ -3462,5 +3467,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3519,5 +3524,20 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public boolean usesPurpurClient() { return getHandle().purpurClient; } @@ -317,10 +317,10 @@ index e248395ad5f5f012aeefecf367d54f90cade0996..70f53ccb22de2c05c9ead68f8bd29d0b public boolean untamedTamablesAreRidable = true; public boolean useNightVisionWhenRiding = false; diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java -index d7c7e12c0b8f77e59d94de130972f762ed227726..88bac31994679c6a1b65e237fd44b239817fa2cf 100644 +index 3283ed99c35ffed6805567705e0518d9f84feedc..a9a39f0da7b09410d8171172a4219c7d509fdb99 100644 --- a/src/main/java/org/spigotmc/ActivationRange.java +++ b/src/main/java/org/spigotmc/ActivationRange.java -@@ -205,6 +205,7 @@ public class ActivationRange +@@ -201,6 +201,7 @@ public class ActivationRange continue; } diff --git a/patches/unapplied-server/0013-Bring-back-server-name.patch b/patches/server/0011-Bring-back-server-name.patch similarity index 81% rename from patches/unapplied-server/0013-Bring-back-server-name.patch rename to patches/server/0011-Bring-back-server-name.patch index 575821089..d72709ac6 100644 --- a/patches/unapplied-server/0013-Bring-back-server-name.patch +++ b/patches/server/0011-Bring-back-server-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Bring back server name diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -index bab2471616404821671264ccefd729cab8d0bf58..ae75edfaa9e4c72f11fbb7ffc66294be47c206cc 100644 +index 9d10cdacb3aed2c00dc60aeb6f2cbeb48905e21f..842f382de43df5d5c321422372ec30ccdd7859d7 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServerProperties.java -@@ -57,6 +57,7 @@ public class DedicatedServerProperties extends Settings +Date: Sun, 5 May 2019 12:58:45 -0500 +Subject: [PATCH] LivingEntity safeFallDistance + + +diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +index aa351df679f300018367244c7ccb3e5a59e9276f..39c2a9f732b8e2452fd2dca07193a173d0c2ba1c 100644 +--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java ++++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +@@ -1173,4 +1173,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { + this.getHandle().setYBodyRot(bodyYaw); + } + // Paper end - body yaw API ++ ++ // Purpur start ++ @Override ++ public float getSafeFallDistance() { ++ return (float) getHandle().getAttributeValue(Attributes.SAFE_FALL_DISTANCE); ++ } ++ ++ @Override ++ public void setSafeFallDistance(float safeFallDistance) { ++ getHandle().getAttribute(Attributes.SAFE_FALL_DISTANCE).setBaseValue(safeFallDistance); ++ } ++ // Purpur end + } diff --git a/patches/unapplied-server/0016-Lagging-threshold.patch b/patches/server/0014-Lagging-threshold.patch similarity index 87% rename from patches/unapplied-server/0016-Lagging-threshold.patch rename to patches/server/0014-Lagging-threshold.patch index abb35ce3c..bad5618fe 100644 --- a/patches/unapplied-server/0016-Lagging-threshold.patch +++ b/patches/server/0014-Lagging-threshold.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Lagging threshold diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 66bacce6f3cfa94341fa663a55c5e99a51f0e437..0c7681a431e1986484319bf2de89d3cc3f7a6275 100644 +index 8a6f7681d97c48886f5a78b61763e718e56ec015..dfa332c4ff52033eb95248518bc44bbd22697697 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -308,6 +308,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements FeatureElement, EntityTypeT +@@ -330,6 +330,16 @@ public class EntityType implements FeatureElement, EntityTypeT return (EntityType) Registry.register(BuiltInRegistries.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error } @@ -25,7 +25,7 @@ index dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994..22f2b1b445f383b2e784688908a92b90 public static ResourceLocation getKey(EntityType type) { return BuiltInRegistries.ENTITY_TYPE.getKey(type); } -@@ -531,6 +541,16 @@ public class EntityType implements FeatureElement, EntityTypeT +@@ -537,6 +547,16 @@ public class EntityType implements FeatureElement, EntityTypeT return this.category; } @@ -43,13 +43,13 @@ index dc11683ee4d8a6b7a1c42bcae36dc6e8105cd994..22f2b1b445f383b2e784688908a92b90 if (this.descriptionId == null) { this.descriptionId = Util.makeDescriptionId("entity", BuiltInRegistries.ENTITY_TYPE.getKey(this)); diff --git a/src/main/java/net/minecraft/world/item/SpawnEggItem.java b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -index 3bfbf7daa190b03f978b9fc72233c18c383b6659..32996934bb47f4b7b2aa65dfd8739d8f67c740ef 100644 +index 9cea8da84f39bb3f687139ef213ccea358724dee..076e6858222b92f8409f1f5cad398582c1fd6bcb 100644 --- a/src/main/java/net/minecraft/world/item/SpawnEggItem.java +++ b/src/main/java/net/minecraft/world/item/SpawnEggItem.java -@@ -68,6 +68,16 @@ public class SpawnEggItem extends Item { +@@ -74,6 +74,15 @@ public class SpawnEggItem extends Item { Spawner spawner = (Spawner) tileentity; - entitytypes = this.getType(itemstack.getTag()); + entitytypes = this.getType(itemstack); + + // Purpur start + org.bukkit.block.Block bukkitBlock = world.getWorld().getBlockAt(blockposition.getX(), blockposition.getY(), blockposition.getZ()); @@ -59,7 +59,6 @@ index 3bfbf7daa190b03f978b9fc72233c18c383b6659..32996934bb47f4b7b2aa65dfd8739d8f + } + entitytypes = EntityType.getFromBukkitType(event.getEntityType()); + // Purpur end -+ spawner.setEntityId(entitytypes, world.getRandom()); world.sendBlockUpdated(blockposition, iblockdata, iblockdata, 3); - world.gameEvent((Entity) context.getPlayer(), GameEvent.BLOCK_CHANGE, blockposition); + world.gameEvent((Entity) context.getPlayer(), (Holder) GameEvent.BLOCK_CHANGE, blockposition); diff --git a/patches/unapplied-server/0018-Anvil-API.patch b/patches/server/0016-Anvil-API.patch similarity index 74% rename from patches/unapplied-server/0018-Anvil-API.patch rename to patches/server/0016-Anvil-API.patch index 59cd81495..8de9cfd9e 100644 --- a/patches/unapplied-server/0018-Anvil-API.patch +++ b/patches/server/0016-Anvil-API.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Anvil API diff --git a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java -index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1af23da6b3ccb4759e46e37cfa2ca85cf78f3ec2 100644 +index 32910f677b0522ac8ec513fa0d00b714b52cfae4..f85eef14b91a0ada1f6f4b13ab3966f051ff92d3 100644 --- a/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AbstractContainerMenu.java @@ -76,6 +76,7 @@ public abstract class AbstractContainerMenu { @@ -17,10 +17,10 @@ index 8fd82051bba33b4703e4d99fff886b63a319a5ba..1af23da6b3ccb4759e46e37cfa2ca85c // CraftBukkit start public boolean checkReachable = true; diff --git a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe46619d24 100644 +index 2bd91b48eaa06f85a5b9b1ae052c70e966ae8e4c..3d0a4380de7885c85d85f4ec1d4cf8a5044e93de 100644 --- a/src/main/java/net/minecraft/world/inventory/AnvilMenu.java +++ b/src/main/java/net/minecraft/world/inventory/AnvilMenu.java -@@ -23,6 +23,13 @@ import org.slf4j.Logger; +@@ -25,6 +25,13 @@ import org.slf4j.Logger; import org.bukkit.craftbukkit.inventory.CraftInventoryView; // CraftBukkit end @@ -34,7 +34,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe public class AnvilMenu extends ItemCombinerMenu { public static final int INPUT_SLOT = 0; -@@ -51,6 +58,8 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -53,6 +60,8 @@ public class AnvilMenu extends ItemCombinerMenu { public int maximumRepairCost = 40; private CraftInventoryView bukkitEntity; // CraftBukkit end @@ -43,12 +43,12 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe public AnvilMenu(int syncId, Inventory inventory) { this(syncId, inventory, ContainerLevelAccess.NULL); -@@ -78,12 +87,15 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -80,12 +89,15 @@ public class AnvilMenu extends ItemCombinerMenu { @Override protected boolean mayPickup(Player player, boolean present) { -- return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item -+ return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur +- return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST && present; // CraftBukkit - allow cost 0 like a free item ++ return (player.hasInfiniteMaterials() || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > AnvilMenu.DEFAULT_DENIED_COST) && present; // CraftBukkit - allow cost 0 like a free item // Purpur } @Override @@ -60,7 +60,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe player.giveExperienceLevels(-this.cost.get()); } -@@ -134,6 +146,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -136,6 +148,12 @@ public class AnvilMenu extends ItemCombinerMenu { @Override public void createResult() { @@ -73,25 +73,25 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe ItemStack itemstack = this.inputSlots.getItem(0); this.cost.set(1); -@@ -210,7 +228,7 @@ public class AnvilMenu extends ItemCombinerMenu { - int i2 = (Integer) map1.get(enchantment); +@@ -143,7 +161,7 @@ public class AnvilMenu extends ItemCombinerMenu { + long j = 0L; + byte b0 = 0; - i2 = l1 == i2 ? i2 + 1 : Math.max(i2, l1); -- boolean flag3 = enchantment.canEnchant(itemstack); -+ boolean flag3 = canDoUnsafeEnchants || enchantment.canEnchant(itemstack); // Purpur - - if (this.player.getAbilities().instabuild || itemstack.is(Items.ENCHANTED_BOOK)) { - flag3 = true; +- if (!itemstack.isEmpty() && EnchantmentHelper.canStoreEnchantments(itemstack)) { ++ if (!itemstack.isEmpty() && canDoUnsafeEnchants || EnchantmentHelper.canStoreEnchantments(itemstack)) { // Purpur + ItemStack itemstack1 = itemstack.copy(); + ItemStack itemstack2 = this.inputSlots.getItem(1); + ItemEnchantments.Mutable itemenchantments_a = new ItemEnchantments.Mutable(EnchantmentHelper.getEnchantmentsForCrafting(itemstack1)); @@ -222,7 +240,7 @@ public class AnvilMenu extends ItemCombinerMenu { - Enchantment enchantment1 = (Enchantment) iterator1.next(); + Holder holder1 = (Holder) iterator1.next(); - if (enchantment1 != enchantment && !enchantment.isCompatibleWith(enchantment1)) { -- flag3 = false; -+ flag3 = canDoUnsafeEnchants; // Purpur - ++i; - } + if (!holder1.equals(holder) && !enchantment.isCompatibleWith((Enchantment) holder1.value())) { +- flag3 = false; ++ flag3 = canDoUnsafeEnchants; // Purpur + ++i; } -@@ -293,6 +311,13 @@ public class AnvilMenu extends ItemCombinerMenu { + } +@@ -280,6 +298,13 @@ public class AnvilMenu extends ItemCombinerMenu { this.cost.set(this.maximumRepairCost - 1); // CraftBukkit } @@ -105,7 +105,7 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe if (this.cost.get() >= this.maximumRepairCost && !this.player.getAbilities().instabuild) { // CraftBukkit itemstack1 = ItemStack.EMPTY; } -@@ -315,6 +340,12 @@ public class AnvilMenu extends ItemCombinerMenu { +@@ -301,6 +326,12 @@ public class AnvilMenu extends ItemCombinerMenu { org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), itemstack1); // CraftBukkit this.sendAllDataToRemote(); // CraftBukkit - SPIGOT-6686: Always send completed inventory to stay in sync with client this.broadcastChanges(); @@ -115,11 +115,11 @@ index f00638e9d7baf8b803dd610f2bf6250da34efab3..9cc9925cd43c4b1b742acde9cf4fb5fe + ((ServerPlayer) player).connection.send(new ClientboundContainerSetDataPacket(containerId, 0, cost.get())); + } + // Purpur end - } - } - + } else { + org.bukkit.craftbukkit.event.CraftEventFactory.callPrepareAnvilEvent(this.getBukkitView(), ItemStack.EMPTY); // CraftBukkit + this.cost.set(AnvilMenu.DEFAULT_DENIED_COST); // CraftBukkit - use a variable for set a cost for denied item diff --git a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java -index c2cf5a8e788637c6264cf43d712a5be223ff1cc5..a578882b64c581ef4f47fa483a9f2988cfa4c8cf 100644 +index 7de5e47f9a54263734eeef855a2dc07ef64d30ea..7215af6cc91f48b040c23c54536d4aac8d293497 100644 --- a/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java +++ b/src/main/java/net/minecraft/world/inventory/ItemCombinerMenu.java @@ -178,7 +178,9 @@ public abstract class ItemCombinerMenu extends AbstractContainerMenu { diff --git a/patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch b/patches/server/0017-Alternative-Keepalive-Handling.patch similarity index 82% rename from patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch rename to patches/server/0017-Alternative-Keepalive-Handling.patch index b5adba82f..224feaaf5 100644 --- a/patches/unapplied-server/0019-Alternative-Keepalive-Handling.patch +++ b/patches/server/0017-Alternative-Keepalive-Handling.patch @@ -5,18 +5,18 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493edbdbd5d 100644 +index 4228fd441f8350d43bd545e31c920304f07968bc..3a15085e0421f46800f779066d235ef21b463289 100644 --- a/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerCommonPacketListenerImpl.java -@@ -51,6 +51,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack - private long keepAliveTime = Util.getMillis(); // Paper - private boolean keepAlivePending; +@@ -73,6 +73,7 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack private long keepAliveChallenge; + private long closedListenerTime; + private boolean closed = false; + private it.unimi.dsi.fastutil.longs.LongList keepAlives = new it.unimi.dsi.fastutil.longs.LongArrayList(); // Purpur private int latency; private volatile boolean suspendFlushingOnServerThread = false; public final java.util.Map packCallbacks = new java.util.concurrent.ConcurrentHashMap<>(); // Paper - adventure resource pack callbacks -@@ -92,6 +93,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -124,6 +125,16 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { @@ -33,7 +33,7 @@ index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493 //PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // CraftBukkit // Paper - handle ServerboundKeepAlivePacket async if (this.keepAlivePending && packet.getId() == this.keepAliveChallenge) { int i = (int) (Util.getMillis() - this.keepAliveTime); -@@ -217,6 +228,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack +@@ -260,6 +271,21 @@ public abstract class ServerCommonPacketListenerImpl implements ServerCommonPack long currentTime = Util.getMillis(); long elapsedTime = currentTime - this.keepAliveTime; @@ -52,9 +52,9 @@ index 34559eae0ea3f88d7b9a3c9e4a2350c4f9c074d7..6d9dea1dbd47df98ea44881deb6b7493 + } else + // Purpur end + - if (this.keepAlivePending) { - if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected - ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info + if (!this.isSingleplayerOwner() && elapsedTime >= KEEPALIVE_LIMIT) { // Paper - check keepalive limit, don't fire if already disconnected + if (this.keepAlivePending && !this.processedDisconnect) { // Paper + this.disconnect(ServerCommonPacketListenerImpl.TIMEOUT_DISCONNECTION_MESSAGE, org.bukkit.event.player.PlayerKickEvent.Cause.TIMEOUT); // Paper - kick event cause diff --git a/src/main/java/org/purpurmc/purpur/PurpurConfig.java b/src/main/java/org/purpurmc/purpur/PurpurConfig.java index 9c5bba0ae119f8d42274455e322530ceb5f67d9b..a14cf3a5dc2ba265de5e400404afcbd9faa3f25a 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurConfig.java diff --git a/patches/unapplied-server/0020-Silk-touch-spawners.patch b/patches/server/0018-Silk-touch-spawners.patch similarity index 96% rename from patches/unapplied-server/0020-Silk-touch-spawners.patch rename to patches/server/0018-Silk-touch-spawners.patch index 93df704bd..91b675b66 100644 --- a/patches/unapplied-server/0020-Silk-touch-spawners.patch +++ b/patches/server/0018-Silk-touch-spawners.patch @@ -5,20 +5,20 @@ Subject: [PATCH] Silk touch spawners diff --git a/src/main/java/net/minecraft/world/item/Items.java b/src/main/java/net/minecraft/world/item/Items.java -index f692149d91b525bda6dc79d489d7496ea24037e8..7fbd4bf29bcc0795aa4b0e6d5d4bc3745bf7a1c0 100644 +index d00b59efb754594cf532f8598f4b6d3b29693232..6467358f5fdf4cd4f7c1e2cc65c834a9da39596a 100644 --- a/src/main/java/net/minecraft/world/item/Items.java +++ b/src/main/java/net/minecraft/world/item/Items.java -@@ -316,7 +316,7 @@ public class Items { +@@ -338,7 +338,7 @@ public class Items { public static final Item PURPUR_BLOCK = registerBlock(Blocks.PURPUR_BLOCK); public static final Item PURPUR_PILLAR = registerBlock(Blocks.PURPUR_PILLAR); public static final Item PURPUR_STAIRS = registerBlock(Blocks.PURPUR_STAIRS); - public static final Item SPAWNER = registerBlock(Blocks.SPAWNER); + public static final Item SPAWNER = registerBlock(new org.purpurmc.purpur.item.SpawnerItem(Blocks.SPAWNER, new Item.Properties().rarity(Rarity.EPIC))); // Purpur - public static final Item CHEST = registerBlock(Blocks.CHEST); + public static final Item CHEST = registerBlock(Blocks.CHEST, settings -> settings.component(DataComponents.CONTAINER, ItemContainerContents.EMPTY)); public static final Item CRAFTING_TABLE = registerBlock(Blocks.CRAFTING_TABLE); public static final Item FARMLAND = registerBlock(Blocks.FARMLAND); diff --git a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java -index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..1ac38424a44aa2225b9bd3fa0fbbe61b7b24875c 100644 +index 4f190a40b8474aa06a92c8afcc06d0044120ff7b..06c914983a285c1a4e973f1c55088ad6e561cd20 100644 --- a/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java +++ b/src/main/java/net/minecraft/world/level/block/SpawnerBlock.java @@ -42,6 +42,60 @@ public class SpawnerBlock extends BaseEntityBlock { @@ -80,7 +80,7 @@ index e8b1c44da90f60cde20cda65aba2aa1e30f89d25..1ac38424a44aa2225b9bd3fa0fbbe61b + // Purpur end + @Override - public void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { + protected void spawnAfterBreak(BlockState state, ServerLevel world, BlockPos pos, ItemStack tool, boolean dropExperience) { super.spawnAfterBreak(state, world, pos, tool, dropExperience); @@ -50,6 +104,7 @@ public class SpawnerBlock extends BaseEntityBlock { diff --git a/patches/unapplied-server/0021-Add-turtle-egg-block-options.patch b/patches/server/0019-Add-turtle-egg-block-options.patch similarity index 94% rename from patches/unapplied-server/0021-Add-turtle-egg-block-options.patch rename to patches/server/0019-Add-turtle-egg-block-options.patch index 8aca84766..efb936f2b 100644 --- a/patches/unapplied-server/0021-Add-turtle-egg-block-options.patch +++ b/patches/server/0019-Add-turtle-egg-block-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add turtle egg block options diff --git a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -index b4646e26965e0f1f26c5019e7c6a13fdf22bdb47..a98f04c892d6e11e311b16af36e824857dd3bc76 100644 +index a6f408e56fa6c9de82fd93555fe21e1b11ce1022..c7377d04ceac3ea624117439783a443c6d6f6d08 100644 --- a/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TurtleEggBlock.java -@@ -202,6 +202,25 @@ public class TurtleEggBlock extends Block { +@@ -203,6 +203,25 @@ public class TurtleEggBlock extends Block { } private boolean canDestroyEgg(Level world, Entity entity) { diff --git a/patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch similarity index 88% rename from patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch rename to patches/server/0020-Logger-settings-suppressing-pointless-logs.patch index a4716e9ce..06fe35a02 100644 --- a/patches/unapplied-server/0022-Logger-settings-suppressing-pointless-logs.patch +++ b/patches/server/0020-Logger-settings-suppressing-pointless-logs.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Logger settings (suppressing pointless logs) diff --git a/src/main/java/net/minecraft/server/PlayerAdvancements.java b/src/main/java/net/minecraft/server/PlayerAdvancements.java -index f655e0ae4a287886d0291cd0089bad2000249d0f..fcb5965ff0a9623a8e63a4b7413ad55416d269d9 100644 +index c7e1f2bac3eca9bb72bf1f8c26cccb2905e1ddfc..94893039363b5fe2d7d0622d0592bce2c867b1c3 100644 --- a/src/main/java/net/minecraft/server/PlayerAdvancements.java +++ b/src/main/java/net/minecraft/server/PlayerAdvancements.java @@ -199,6 +199,7 @@ public class PlayerAdvancements { @@ -17,17 +17,17 @@ index f655e0ae4a287886d0291cd0089bad2000249d0f..fcb5965ff0a9623a8e63a4b7413ad554 } else { this.startProgress(advancementholder, advancementprogress); diff --git a/src/main/java/net/minecraft/server/level/WorldGenRegion.java b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -index 5ece375eaf6bcc61864997a389bb5e24625e4505..aee4ab6c7ea09006bec4a1c6df0005718c6d86bd 100644 +index 1351423a12c19a01f602a202832372a399e6a867..1e2025674eafcf56460c741083c91e2e42d61b19 100644 --- a/src/main/java/net/minecraft/server/level/WorldGenRegion.java +++ b/src/main/java/net/minecraft/server/level/WorldGenRegion.java -@@ -318,6 +318,7 @@ public class WorldGenRegion implements WorldGenLevel { +@@ -326,6 +326,7 @@ public class WorldGenRegion implements WorldGenLevel { return true; } else { // Paper start - Buffer OOB setBlock calls + if (!org.purpurmc.purpur.PurpurConfig.loggerSuppressSetBlockFarChunk) // Purpur if (!hasSetFarWarned) { - Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + pos + ", status: " + this.generatingStatus + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); - hasSetFarWarned = true; + Util.logAndPauseIfInIde("Detected setBlock in a far chunk [" + i + ", " + j + "], pos: " + String.valueOf(pos) + ", status: " + String.valueOf(this.generatingStatus) + (this.currentlyGenerating == null ? "" : ", currently generating: " + (String) this.currentlyGenerating.get())); + hasSetFarWarned = true; diff --git a/src/main/java/net/minecraft/stats/ServerRecipeBook.java b/src/main/java/net/minecraft/stats/ServerRecipeBook.java index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b8967829d0530e 100644 --- a/src/main/java/net/minecraft/stats/ServerRecipeBook.java @@ -41,7 +41,7 @@ index 4103ddf16164e3992fef0765d368282572537e29..a0cb49233b1dbf53ce9d1bcc52b89678 } else { handler.accept((RecipeHolder) optional.get()); diff --git a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java -index fde9aadd6c688b9797a6755f9d214918047598a0..ffaa80b645da3ddf2da828071090e01aa667504d 100644 +index 71d057dc8c7362f8e7aaca5e31c9f02b2bf3f281..9d9405af0db28c0f3ffff2881b54f1dc84675a9d 100644 --- a/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java +++ b/src/main/java/org/bukkit/craftbukkit/legacy/CraftLegacy.java @@ -256,6 +256,7 @@ public final class CraftLegacy { diff --git a/patches/unapplied-server/0023-Disable-outdated-build-check.patch b/patches/server/0021-Disable-outdated-build-check.patch similarity index 89% rename from patches/unapplied-server/0023-Disable-outdated-build-check.patch rename to patches/server/0021-Disable-outdated-build-check.patch index e2fc69e4c..a082f35b6 100644 --- a/patches/unapplied-server/0023-Disable-outdated-build-check.patch +++ b/patches/server/0021-Disable-outdated-build-check.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable outdated build check diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java -index 4f81321727b754c0e101bb05bc6474203412e89e..cce747b8a2d87d81429dfaf1e0073b1ea4b1a5d2 100644 +index 66a3b28d7b943d443ff66fdcfbce6e5260b9463e..222865a3cee62f244a566092a7d814efe478ee01 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -301,7 +301,7 @@ public class Main { +@@ -302,7 +302,7 @@ public class Main { System.setProperty(net.minecrell.terminalconsole.TerminalConsoleAppender.JLINE_OVERRIDE_PROPERTY, "false"); // Paper } diff --git a/patches/unapplied-server/0024-Giants-AI-settings.patch b/patches/server/0022-Giants-AI-settings.patch similarity index 88% rename from patches/unapplied-server/0024-Giants-AI-settings.patch rename to patches/server/0022-Giants-AI-settings.patch index fdf5dfe27..1f14b308e 100644 --- a/patches/unapplied-server/0024-Giants-AI-settings.patch +++ b/patches/server/0022-Giants-AI-settings.patch @@ -5,22 +5,19 @@ Subject: [PATCH] Giants AI settings diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673abe091bc 100644 +index 9602e59cbebeedc85ea75d2a41d3e74f0ff45b46..3c1217d36522b1fd3d1a099d3a12d99016f34c4b 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Giant.java +++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -1,14 +1,37 @@ +@@ -1,11 +1,34 @@ package net.minecraft.world.entity.monster; import net.minecraft.core.BlockPos; +import net.minecraft.nbt.CompoundTag; +import net.minecraft.world.Difficulty; +import net.minecraft.world.DifficultyInstance; - import net.minecraft.world.entity.Entity; - import net.minecraft.world.entity.EntityDimensions; import net.minecraft.world.entity.EntityType; +import net.minecraft.world.entity.EquipmentSlot; +import net.minecraft.world.entity.MobSpawnType; - import net.minecraft.world.entity.Pose; +import net.minecraft.world.entity.SpawnGroupData; import net.minecraft.world.entity.ai.attributes.AttributeSupplier; import net.minecraft.world.entity.ai.attributes.Attributes; @@ -46,7 +43,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 public class Giant extends Monster { public Giant(EntityType type, Level world) { -@@ -34,8 +57,23 @@ public class Giant extends Monster { +@@ -30,8 +53,23 @@ public class Giant extends Monster { @Override protected void registerGoals() { @@ -70,15 +67,15 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 + } + } } - // Purpur end -@@ -46,6 +84,32 @@ public class Giant extends Monster { - this.getAttribute(Attributes.ATTACK_DAMAGE).setBaseValue(this.level().purpurConfig.giantAttackDamage); + @Override +@@ -47,8 +85,34 @@ public class Giant extends Monster { + return Monster.createMonsterAttributes().add(Attributes.MAX_HEALTH, 100.0).add(Attributes.MOVEMENT_SPEED, 0.5).add(Attributes.ATTACK_DAMAGE, 50.0); } + @Override -+ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData, @Nullable CompoundTag entityNbt) { -+ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData, entityNbt); ++ public SpawnGroupData finalizeSpawn(ServerLevelAccessor world, DifficultyInstance difficulty, MobSpawnType spawnReason, @Nullable SpawnGroupData entityData) { ++ SpawnGroupData groupData = super.finalizeSpawn(world, difficulty, spawnReason, entityData); + if (groupData == null) { + populateDefaultEquipmentSlots(this.random, difficulty); + populateDefaultEquipmentEnchantments(this.random, difficulty); @@ -102,11 +99,6 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 + return level().purpurConfig.giantJumpHeight; + } + - @Override - protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) { - return 10.440001F; -@@ -62,6 +126,6 @@ public class Giant extends Monster { - @Override public float getWalkTargetValue(BlockPos pos, LevelReader world) { - return world.getPathfindingCostFromLightLevels(pos); @@ -114,7 +106,7 @@ index c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5..d014731fe352246299253bf005e23673 } } diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 8142559d9d4eccd9d105acb1ff3aa131d8ea67b0..6d94dc88a470b7e51aafad6c912ff516d114f179 100644 +index ac44ee7789b96e60e6d1d964d64ca33a3d3c2c62..fb61cd498955fee2dec15fa584273a6e19ca58c9 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -554,6 +554,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch b/patches/server/0023-Zombie-horse-naturally-spawn.patch similarity index 93% rename from patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch rename to patches/server/0023-Zombie-horse-naturally-spawn.patch index 43c1f328c..8ff2f18f1 100644 --- a/patches/unapplied-server/0025-Zombie-horse-naturally-spawn.patch +++ b/patches/server/0023-Zombie-horse-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Zombie horse naturally spawn diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index cdc17904cdf3d6669503e09debfbb156a80f0020..0ae833018867b9f347fa8261898ec7353368ba4e 100644 +index fc791a66d299905798c2c1ca542467e4c7933caf..b02d9db8442b209a9df27e417be71b11d426878b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1016,10 +1016,18 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1006,10 +1006,18 @@ public class ServerLevel extends Level implements WorldGenLevel { boolean flag1 = this.getGameRules().getBoolean(GameRules.RULE_DOMOBSPAWNING) && this.random.nextDouble() < (double) difficultydamagescaler.getEffectiveDifficulty() * this.paperConfig().entities.spawning.skeletonHorseThunderSpawnChance.or(0.01D) && !this.getBlockState(blockposition.below()).is(Blocks.LIGHTNING_ROD); // Paper - Configurable spawn chances for skeleton horses if (flag1) { @@ -30,7 +30,7 @@ index cdc17904cdf3d6669503e09debfbb156a80f0020..0ae833018867b9f347fa8261898ec735 entityhorseskeleton.setPos((double) blockposition.getX(), (double) blockposition.getY(), (double) blockposition.getZ()); this.addFreshEntity(entityhorseskeleton, org.bukkit.event.entity.CreatureSpawnEvent.SpawnReason.LIGHTNING); // CraftBukkit diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 6d94dc88a470b7e51aafad6c912ff516d114f179..06ea43ddbbaf3165b74303a713f55512b9701765 100644 +index fb61cd498955fee2dec15fa584273a6e19ca58c9..41822b9b050f4267cc0151ea85682523f89af57f 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -1487,6 +1487,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch b/patches/server/0024-Charged-creeper-naturally-spawn.patch similarity index 94% rename from patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch rename to patches/server/0024-Charged-creeper-naturally-spawn.patch index ed722a27b..719013b12 100644 --- a/patches/unapplied-server/0026-Charged-creeper-naturally-spawn.patch +++ b/patches/server/0024-Charged-creeper-naturally-spawn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Charged creeper naturally spawn diff --git a/src/main/java/net/minecraft/world/entity/monster/Creeper.java b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -index e6542240c317be28a7b536a736f7ccdc9f050dca..bc3d0654759b330c473de080b8a51c0a04cf3a19 100644 +index 624ae0e10ef9f51d484e45ec9a15e4a120bf2af2..38241cd51086eb4dedc7fe47e9b199d443e5e033 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Creeper.java +++ b/src/main/java/net/minecraft/world/entity/monster/Creeper.java -@@ -256,6 +256,14 @@ public class Creeper extends Monster implements PowerableMob { +@@ -257,6 +257,14 @@ public class Creeper extends Monster implements PowerableMob { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.creeperMaxHealth); } diff --git a/patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch similarity index 89% rename from patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch rename to patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch index 6809dd89e..da9dd0eab 100644 --- a/patches/unapplied-server/0027-Rabbit-naturally-spawn-toast-and-killer.patch +++ b/patches/server/0025-Rabbit-naturally-spawn-toast-and-killer.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rabbit naturally spawn toast and killer diff --git a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606b2f9b9b2 100644 +index 9eb1158213064ddb37ae76e445b5861b963a1f55..4abcde662ed78b16632ee575f695ee4329f11b2f 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Rabbit.java +++ b/src/main/java/net/minecraft/world/entity/animal/Rabbit.java -@@ -469,10 +469,23 @@ public class Rabbit extends Animal implements VariantHolder { +@@ -466,10 +466,23 @@ public class Rabbit extends Animal implements VariantHolder { } this.setVariant(entityrabbit_variant); @@ -19,7 +19,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606 + } + // Purpur end + - return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData, entityNbt); + return super.finalizeSpawn(world, difficulty, spawnReason, (SpawnGroupData) entityData); } private static Rabbit.Variant getRandomRabbitVariant(LevelAccessor world, BlockPos pos) { @@ -33,7 +33,7 @@ index 23ede55b9b1198c72fe93b086129d4725d9352fe..106600ad9712d9a4fdf6770e81b40606 int i = world.getRandom().nextInt(100); diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index c7956dfe6ef01868106d7c0989d5c6a612e07b7d..6087141b308c1998a6be13dbf6e1ef75d6ddc6a8 100644 +index e033ef722d9b6336f1cbc6bdf404f35c34b45db9..a96aa7f127467a6ea8025c09f4e336f1910cc8af 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -988,6 +988,8 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch similarity index 92% rename from patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch rename to patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch index f840a5a9f..7699f3fc7 100644 --- a/patches/unapplied-server/0028-Fix-outdated-server-showing-in-ping-before-server-fu.patch +++ b/patches/server/0026-Fix-outdated-server-showing-in-ping-before-server-fu.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Fix 'outdated server' showing in ping before server fully diff --git a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java -index e5006e7672ba79ed4bcf2c4173c5a9ed4c68395b..6338c52e0082d36d3b80038fdb44abf2772adb30 100644 +index 6f1c9fa89e718cbc01a8d72de34154f49c5f46db..2455f8e9679914660ec4fcd081138dabfe9c225b 100644 --- a/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerStatusPacketListenerImpl.java @@ -153,6 +153,7 @@ public class ServerStatusPacketListenerImpl implements ServerStatusPacketListene diff --git a/patches/unapplied-server/0029-Tulips-change-fox-type.patch b/patches/server/0027-Tulips-change-fox-type.patch similarity index 91% rename from patches/unapplied-server/0029-Tulips-change-fox-type.patch rename to patches/server/0027-Tulips-change-fox-type.patch index d3f71bc69..50f08714b 100644 --- a/patches/unapplied-server/0029-Tulips-change-fox-type.patch +++ b/patches/server/0027-Tulips-change-fox-type.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Tulips change fox type diff --git a/src/main/java/net/minecraft/world/entity/animal/Fox.java b/src/main/java/net/minecraft/world/entity/animal/Fox.java -index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb512c1c51 100644 +index 8666d82775570b812d5bdd80336c8e14db6ddf47..d2be8c1c23f291e98b9a31a63ba5fa7d44fc7402 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Fox.java +++ b/src/main/java/net/minecraft/world/entity/animal/Fox.java -@@ -36,6 +36,7 @@ import net.minecraft.util.RandomSource; +@@ -37,6 +37,7 @@ import net.minecraft.util.RandomSource; import net.minecraft.util.StringRepresentable; import net.minecraft.world.DifficultyInstance; import net.minecraft.world.InteractionHand; @@ -16,7 +16,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb import net.minecraft.world.damagesource.DamageSource; import net.minecraft.world.entity.AgeableMob; import net.minecraft.world.entity.Entity; -@@ -394,6 +395,11 @@ public class Fox extends Animal implements VariantHolder { +@@ -389,6 +390,11 @@ public class Fox extends Animal implements VariantHolder { } private void setTargetGoals() { @@ -28,7 +28,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb if (this.getVariant() == Fox.Type.RED) { this.targetSelector.addGoal(4, this.landTargetGoal); this.targetSelector.addGoal(4, this.turtleEggTargetGoal); -@@ -427,6 +433,7 @@ public class Fox extends Animal implements VariantHolder { +@@ -422,6 +428,7 @@ public class Fox extends Animal implements VariantHolder { public void setVariant(Fox.Type variant) { this.entityData.set(Fox.DATA_TYPE_ID, variant.getId()); @@ -36,7 +36,7 @@ index 3faa945f9687abeba7a36f8198cb307685e348a9..a910e897cbd11fa17469642de43225eb } List getTrustedUUIDs() { -@@ -773,6 +780,29 @@ public class Fox extends Animal implements VariantHolder { +@@ -762,6 +769,29 @@ public class Fox extends Animal implements VariantHolder { } // Paper end diff --git a/patches/unapplied-server/0030-Breedable-Polar-Bears.patch b/patches/server/0028-Breedable-Polar-Bears.patch similarity index 97% rename from patches/unapplied-server/0030-Breedable-Polar-Bears.patch rename to patches/server/0028-Breedable-Polar-Bears.patch index 34dc78b85..952012279 100644 --- a/patches/unapplied-server/0030-Breedable-Polar-Bears.patch +++ b/patches/server/0028-Breedable-Polar-Bears.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Breedable Polar Bears diff --git a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java -index 5e6941abe1372ea4cba893de36ab20d2a3a42a21..5db17e4fc120e32e66a3a5c6313471ce5b090346 100644 +index 00afde0ec4811992aac306a42d473026b7e7e468..067bb175c457d6de089f18826dfce6c3661dad67 100644 --- a/src/main/java/net/minecraft/world/entity/animal/PolarBear.java +++ b/src/main/java/net/minecraft/world/entity/animal/PolarBear.java @@ -98,6 +98,27 @@ public class PolarBear extends Animal implements NeutralMob { diff --git a/patches/unapplied-server/0031-Chickens-can-retaliate.patch b/patches/server/0029-Chickens-can-retaliate.patch similarity index 88% rename from patches/unapplied-server/0031-Chickens-can-retaliate.patch rename to patches/server/0029-Chickens-can-retaliate.patch index a18d7b4bb..b7479c92c 100644 --- a/patches/unapplied-server/0031-Chickens-can-retaliate.patch +++ b/patches/server/0029-Chickens-can-retaliate.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Chickens can retaliate diff --git a/src/main/java/net/minecraft/world/entity/animal/Chicken.java b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae25692b09 100644 +index a7c76e1d89f54f0dc3b27a8a8db168ea4570bf60..14210dac8a4fa8caaf69ec830f83d15525bb1bea 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Chicken.java +++ b/src/main/java/net/minecraft/world/entity/animal/Chicken.java -@@ -75,19 +75,30 @@ public class Chicken extends Animal { +@@ -74,13 +74,16 @@ public class Chicken extends Animal { @Override public void initAttributes() { this.getAttribute(Attributes.MAX_HEALTH).setBaseValue(this.level().purpurConfig.chickenMaxHealth); @@ -24,8 +24,9 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae - this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); + // this.goalSelector.addGoal(1, new PanicGoal(this, 1.4D)); // Purpur - moved down this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); - this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, Chicken.FOOD_ITEMS, false)); - this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.1D)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.0D, (itemstack) -> { + return itemstack.is(ItemTags.CHICKEN_FOOD); +@@ -89,6 +92,14 @@ public class Chicken extends Animal { this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); this.goalSelector.addGoal(6, new LookAtPlayerGoal(this, Player.class, 6.0F)); this.goalSelector.addGoal(7, new RandomLookAroundGoal(this)); @@ -40,7 +41,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae } @Override -@@ -96,7 +107,7 @@ public class Chicken extends Animal { +@@ -97,7 +108,7 @@ public class Chicken extends Animal { } public static AttributeSupplier.Builder createAttributes() { @@ -50,7 +51,7 @@ index 3c06fe81e2e1d7bd546ead0d13d87cbe7e2e7b5b..bc3094493d7d25eaf50da8fdd74eacae @Override diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 0d6f0e69093594fffcdb616d319be1b416909a64..c76957ae7e9f2aa6b34d0a1098cfbc036b723237 100644 +index ae6383c3d8435caba2bae551f36e3562e724361a..4cd6d9309ed81956d59063fe4d229c6f930922ed 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -299,6 +299,7 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch similarity index 75% rename from patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch rename to patches/server/0030-Add-option-to-set-armorstand-step-height.patch index 96fce4658..cb9752a8c 100644 --- a/patches/unapplied-server/0032-Add-option-to-set-armorstand-step-height.patch +++ b/patches/server/0030-Add-option-to-set-armorstand-step-height.patch @@ -5,23 +5,31 @@ Subject: [PATCH] Add option to set armorstand step height diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index aa1e2c05c65391b5fbfce203c5095afd50682874..f8db28b15e551fc0e0c7f37c355237685c637529 100644 +index e49dda27dd609ebf377f679c4f60c13a5f610c8e..429d1a3fd7a75fe3dc8eb8d467ad4f2bd99e0212 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -337,7 +337,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S +@@ -340,6 +340,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess public double xOld; public double yOld; public double zOld; -- private float maxUpStep; -+ public float maxUpStep; // Purpur - private -> public ++ public float maxUpStep; // Purpur public boolean noPhysics; public final RandomSource random; public int tickCount; +@@ -4852,7 +4853,7 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess + } + + public float maxUpStep() { +- return 0.0F; ++ return maxUpStep; + } + + public void onExplosionHit(@Nullable Entity entity) {} diff --git a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -index eadcebd7845ee716e33c0ac0544502da1a6c5941..8cb248a185d880bf82ea4746341fe3db5dc89459 100644 +index c2bd2e303f956d390319f6bbbe9a6492ebec5154..5abbc0caf90cafc1a06dfff158c158b1538f827c 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java +++ b/src/main/java/net/minecraft/world/entity/decoration/ArmorStand.java -@@ -678,6 +678,7 @@ public class ArmorStand extends LivingEntity { +@@ -676,6 +676,7 @@ public class ArmorStand extends LivingEntity { @Override public void tick() { diff --git a/patches/unapplied-server/0033-Cat-spawning-options.patch b/patches/server/0031-Cat-spawning-options.patch similarity index 92% rename from patches/unapplied-server/0033-Cat-spawning-options.patch rename to patches/server/0031-Cat-spawning-options.patch index dd5a15479..862db1dc6 100644 --- a/patches/unapplied-server/0033-Cat-spawning-options.patch +++ b/patches/server/0031-Cat-spawning-options.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Cat spawning options diff --git a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d152251cce431 100644 +index e0e5046c84941a8d17e18c177f3daea9cb631940..d503d7a5837dbeb98e58dbe8f7e5de45f6d88990 100644 --- a/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java +++ b/src/main/java/net/minecraft/world/entity/npc/CatSpawner.java -@@ -28,7 +28,7 @@ public class CatSpawner implements CustomSpawner { +@@ -27,7 +27,7 @@ public class CatSpawner implements CustomSpawner { if (this.nextTick > 0) { return 0; } else { @@ -17,7 +17,7 @@ index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d1522 Player player = world.getRandomPlayer(); if (player == null) { return 0; -@@ -62,8 +62,12 @@ public class CatSpawner implements CustomSpawner { +@@ -61,8 +61,12 @@ public class CatSpawner implements CustomSpawner { private int spawnInVillage(ServerLevel world, BlockPos pos) { int i = 48; @@ -32,7 +32,7 @@ index 5d1610eddcaf0cf65c726a5438b42e53bab85332..5665aa461f8c943bd7373df28d7d1522 if (list.size() < 5) { return this.spawnCat(pos, world); } -@@ -74,7 +78,11 @@ public class CatSpawner implements CustomSpawner { +@@ -73,7 +77,11 @@ public class CatSpawner implements CustomSpawner { private int spawnInHut(ServerLevel world, BlockPos pos) { int i = 16; diff --git a/patches/unapplied-server/0034-Cows-eat-mushrooms.patch b/patches/server/0032-Cows-eat-mushrooms.patch similarity index 86% rename from patches/unapplied-server/0034-Cows-eat-mushrooms.patch rename to patches/server/0032-Cows-eat-mushrooms.patch index 7a70e2b82..4b9bf527b 100644 --- a/patches/unapplied-server/0034-Cows-eat-mushrooms.patch +++ b/patches/server/0032-Cows-eat-mushrooms.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Cows eat mushrooms diff --git a/src/main/java/net/minecraft/world/entity/animal/Cow.java b/src/main/java/net/minecraft/world/entity/animal/Cow.java -index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df50feef90 100644 +index bee1a275f242866206dc461461b7962e04289ddc..bda0d933ccbee613aa7fb31534351a0d2dbab0a7 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Cow.java +++ b/src/main/java/net/minecraft/world/entity/animal/Cow.java @@ -2,6 +2,7 @@ package net.minecraft.world.entity.animal; @@ -16,23 +16,24 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df import net.minecraft.server.level.ServerLevel; import net.minecraft.sounds.SoundEvent; import net.minecraft.sounds.SoundEvents; -@@ -30,6 +31,7 @@ import net.minecraft.world.item.ItemUtils; +@@ -29,6 +30,7 @@ import net.minecraft.world.item.ItemStack; + import net.minecraft.world.item.ItemUtils; import net.minecraft.world.item.Items; - import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.Level; +import net.minecraft.world.level.block.Blocks; import net.minecraft.world.level.block.state.BlockState; - import org.joml.Vector3f; - -@@ -73,6 +75,7 @@ public class Cow extends Animal { - this.goalSelector.addGoal(0, new org.purpurmc.purpur.entity.ai.HasRider(this)); // Purpur + // CraftBukkit start + import org.bukkit.craftbukkit.event.CraftEventFactory; +@@ -73,7 +75,7 @@ public class Cow extends Animal { this.goalSelector.addGoal(1, new PanicGoal(this, 2.0D)); this.goalSelector.addGoal(2, new BreedGoal(this, 1.0D)); -+ if (level().purpurConfig.cowFeedMushrooms > 0) this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT, Blocks.RED_MUSHROOM.asItem(), Blocks.BROWN_MUSHROOM.asItem()), false)); else // Purpur - this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, Ingredient.of(Items.WHEAT), false)); + this.goalSelector.addGoal(3, new TemptGoal(this, 1.25D, (itemstack) -> { +- return itemstack.is(ItemTags.COW_FOOD); ++ return level().purpurConfig.cowFeedMushrooms > 0 && (itemstack.is(Blocks.RED_MUSHROOM.asItem()) || itemstack.is(Blocks.BROWN_MUSHROOM.asItem())) || itemstack.is(ItemTags.COW_FOOD); // Purpur + }, false)); this.goalSelector.addGoal(4, new FollowParentGoal(this, 1.25D)); this.goalSelector.addGoal(5, new WaterAvoidingRandomStrollGoal(this, 1.0D)); -@@ -128,6 +131,10 @@ public class Cow extends Animal { +@@ -134,6 +136,10 @@ public class Cow extends Animal { player.setItemInHand(hand, itemstack1); return InteractionResult.sidedSuccess(this.level().isClientSide); @@ -43,9 +44,9 @@ index f440eabffb1abe4c7370bf7badf6137a22f99071..9a1e1387932a92fdf86a144b2d94b4df } else { return super.mobInteract(player, hand); } -@@ -148,4 +155,69 @@ public class Cow extends Animal { - protected Vector3f getPassengerAttachmentPoint(Entity passenger, EntityDimensions dimensions, float scaleFactor) { - return new Vector3f(0.0F, dimensions.height - 0.03125F * scaleFactor, 0.0F); +@@ -149,4 +155,69 @@ public class Cow extends Animal { + public EntityDimensions getDefaultDimensions(Pose pose) { + return this.isBaby() ? Cow.BABY_DIMENSIONS : super.getDefaultDimensions(pose); } + + // Purpur start - feed mushroom to change to mooshroom diff --git a/patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch similarity index 88% rename from patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch rename to patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch index 23314c286..b487f483e 100644 --- a/patches/unapplied-server/0035-Fix-cow-rotation-when-shearing-mooshroom.patch +++ b/patches/server/0033-Fix-cow-rotation-when-shearing-mooshroom.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Fix cow rotation when shearing mooshroom diff --git a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -index 0ff5902dde47c4bb9922d6605d874868fb4820b9..4c3a4a5e79412a570b0dc1fdeaf540b83eb84b82 100644 +index b47dddb2fc6058a90665ccbd362088d9a2e837b5..41b52f128fbc174939a7f2d1cd937ab19432de25 100644 --- a/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java +++ b/src/main/java/net/minecraft/world/entity/animal/MushroomCow.java -@@ -222,7 +222,13 @@ public class MushroomCow extends Cow implements Shearable, VariantHolder 0 && !source.is(DamageTypeTags.BYPASSES_INVULNERABILITY)) { diff --git a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bbc9052a01 100644 +index 4d7454e5a64fc18e63793a221daa94617f17c666..97172e9c53c381d451111227feb4d1fa19d38ad8 100644 --- a/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java +++ b/src/main/java/net/minecraft/world/entity/vehicle/AbstractMinecart.java -@@ -105,12 +105,14 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -102,12 +102,14 @@ public abstract class AbstractMinecart extends VehicleEntity { private double flyingY = 0.95; private double flyingZ = 0.95; public double maxSpeed = 0.4D; @@ -35,7 +35,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb } protected AbstractMinecart(EntityType type, Level world, double x, double y, double z) { -@@ -294,6 +296,12 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -296,6 +298,12 @@ public abstract class AbstractMinecart extends VehicleEntity { @Override public void tick() { @@ -48,7 +48,7 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb // CraftBukkit start double prevX = this.getX(); double prevY = this.getY(); -@@ -451,16 +459,62 @@ public abstract class AbstractMinecart extends VehicleEntity { +@@ -448,16 +456,62 @@ public abstract class AbstractMinecart extends VehicleEntity { public void activateMinecart(int x, int y, int z, boolean powered) {} @@ -112,10 +112,10 @@ index d514ec1e4cbdc579c3a61533998437903afdc8b6..93f42963816caa2a5f5b94c3bc1b87bb this.move(MoverType.SELF, this.getDeltaMovement()); if (!this.onGround()) { diff --git a/src/main/java/net/minecraft/world/item/MinecartItem.java b/src/main/java/net/minecraft/world/item/MinecartItem.java -index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976d533d54e 100644 +index 66074445d3908b9bb1c8d70e1e27d057720ec8e5..0fd4f2ab929df479360755a3f1e58a933ae59520 100644 --- a/src/main/java/net/minecraft/world/item/MinecartItem.java +++ b/src/main/java/net/minecraft/world/item/MinecartItem.java -@@ -119,8 +119,9 @@ public class MinecartItem extends Item { +@@ -120,8 +120,9 @@ public class MinecartItem extends Item { BlockState iblockdata = world.getBlockState(blockposition); if (!iblockdata.is(BlockTags.RAILS)) { @@ -127,7 +127,7 @@ index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976 ItemStack itemstack = context.getItemInHand(); if (world instanceof ServerLevel) { -@@ -145,6 +146,6 @@ public class MinecartItem extends Item { +@@ -146,6 +147,6 @@ public class MinecartItem extends Item { itemstack.shrink(1); return InteractionResult.sidedSuccess(world.isClientSide); @@ -136,20 +136,20 @@ index 3aa73cd44aa8c86b78c35bc1788e4f83018c49ed..66a8b28275619079e3bcbcc460146976 } } diff --git a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -index 2892e586146cbc560f0bcf4b9af6d0575cb0a82e..63c4d52c348d9297a24abb17e105b2f4c7758740 100644 +index 2034ca2edd3aff61d94416266e75402babd3e741..3c1091f2a729b7d06ba6e21c37f788edb2ad1775 100644 --- a/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java +++ b/src/main/java/net/minecraft/world/level/block/state/BlockBehaviour.java -@@ -92,7 +92,7 @@ public abstract class BlockBehaviour implements FeatureElement { +@@ -94,7 +94,7 @@ public abstract class BlockBehaviour implements FeatureElement { protected final float jumpFactor; protected final boolean dynamicShape; protected final FeatureFlagSet requiredFeatures; - protected final BlockBehaviour.Properties properties; + public final BlockBehaviour.Properties properties; // Purpur - protected -> public @Nullable - protected ResourceLocation drops; + protected ResourceKey drops; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 113d827713b409cc3093c39a56439d7c0d04e129..24dcdf3ca52129d3d35902c94ae302e35385cd50 100644 +index 41b804abeab390a259eb0c8ed72f75ad403471dd..755d53e04bb0ed678bebc3497476e252dd5a736e 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -95,6 +95,68 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch similarity index 91% rename from patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch rename to patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch index 0af00f4e2..996296e66 100644 --- a/patches/unapplied-server/0041-Disable-loot-drops-on-death-by-cramming.patch +++ b/patches/server/0039-Disable-loot-drops-on-death-by-cramming.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable loot drops on death by cramming diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 5e5485906f1157e52a7082278adcb7b6e56f3f06..a065009d01a5e28a3054241f30e5bedf21350cb5 100644 +index a3ee2af337acef86a15b12c9e6d8cd8452980a87..7b210484fd10e6e994c66afb45f8a28ffb5812f1 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -1851,6 +1851,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1864,6 +1864,7 @@ public abstract class LivingEntity extends Entity implements Attackable { this.dropEquipment(); // CraftBukkit - from below if (this.shouldDropLoot() && this.level().getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -16,7 +16,7 @@ index 5e5485906f1157e52a7082278adcb7b6e56f3f06..a065009d01a5e28a3054241f30e5bedf this.dropFromLootTable(source, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1859,6 +1860,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1872,6 +1873,7 @@ public abstract class LivingEntity extends Entity implements Attackable { // Paper end this.dropCustomDeathLoot(source, i, flag); this.clearEquipmentSlots = prev; // Paper diff --git a/patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch similarity index 67% rename from patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch rename to patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch index cc5f3aa2f..90595d0c8 100644 --- a/patches/unapplied-server/0042-Option-to-toggle-milk-curing-bad-omen.patch +++ b/patches/server/0040-Option-to-toggle-milk-curing-bad-omen.patch @@ -5,30 +5,21 @@ Subject: [PATCH] Option to toggle milk curing bad omen diff --git a/src/main/java/net/minecraft/world/item/MilkBucketItem.java b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -index f33977d95b6db473be4f95075ba99caf90ad0220..56dc04d8875971ee9a5d077a695509af74fe2473 100644 +index 0f83ae4b0d5f52ff9ccfff6bbcc31153d45bd619..d0751274e89042715cab8e9e72387042356e3244 100644 --- a/src/main/java/net/minecraft/world/item/MilkBucketItem.java +++ b/src/main/java/net/minecraft/world/item/MilkBucketItem.java -@@ -5,6 +5,8 @@ import net.minecraft.server.level.ServerPlayer; - import net.minecraft.stats.Stats; - import net.minecraft.world.InteractionHand; - import net.minecraft.world.InteractionResultHolder; -+import net.minecraft.world.effect.MobEffectInstance; -+import net.minecraft.world.effect.MobEffects; - import net.minecraft.world.entity.LivingEntity; - import net.minecraft.world.entity.player.Player; - import net.minecraft.world.level.Level; -@@ -31,7 +33,9 @@ public class MilkBucketItem extends Item { - } +@@ -26,7 +26,9 @@ public class MilkBucketItem extends Item { + stack.consume(1, user); if (!world.isClientSide) { -+ MobEffectInstance badOmen = user.getEffect(MobEffects.BAD_OMEN); ++ net.minecraft.world.effect.MobEffectInstance badOmen = user.getEffect(net.minecraft.world.effect.MobEffects.BAD_OMEN); // Purpur user.removeAllEffects(org.bukkit.event.entity.EntityPotionEffectEvent.Cause.MILK); // CraftBukkit + if (!world.purpurConfig.milkCuresBadOmen && badOmen != null) user.addEffect(badOmen); // Purpur } return stack.isEmpty() ? new ItemStack(Items.BUCKET) : stack; diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java -index 9832d71949025eed99a3e9e8b09f9bee9991e36a..297dfcc634cbe6993e7844209ee564ad530866ac 100644 +index b7bf1a6e59e33d13887ae3d98f37658f52030e37..40493cbb1b14f16549b95aa439e4c25c04a0627c 100644 --- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java +++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java @@ -96,8 +96,10 @@ public class PurpurWorldConfig { diff --git a/patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch b/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch similarity index 74% rename from patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch rename to patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch index f6670747b..d5bd1de5c 100644 --- a/patches/unapplied-server/0043-End-gateway-should-check-if-entity-can-use-portal.patch +++ b/patches/server/0041-End-gateway-should-check-if-entity-can-use-portal.patch @@ -5,14 +5,14 @@ Subject: [PATCH] End gateway should check if entity can use portal diff --git a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -index 098fde8200a11f91f934ddab6b1486dac4014dfe..8be3d696f6401189406032dd8d45dc747f546df5 100644 +index 93bd70c1dc2ba8b893a6087730071c81fb1132f4..60b343edc4383c8bc450f106f483349850432fa3 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/TheEndGatewayBlockEntity.java -@@ -171,6 +171,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { +@@ -167,6 +167,7 @@ public class TheEndGatewayBlockEntity extends TheEndPortalBlockEntity { public static void teleportEntity(Level world, BlockPos pos, BlockState state, Entity entity, TheEndGatewayBlockEntity blockEntity) { - if (world instanceof ServerLevel && !blockEntity.isCoolingDown()) { + if (world instanceof ServerLevel worldserver && !blockEntity.isCoolingDown()) { + if (!entity.canChangeDimensions()) return; // Purpur - ServerLevel worldserver = (ServerLevel) world; - blockEntity.teleportCooldown = 100; + BlockPos blockposition1; + diff --git a/patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch similarity index 88% rename from patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch rename to patches/server/0042-Skip-events-if-there-s-no-listeners.patch index 4513a3086..a34b98f86 100644 --- a/patches/unapplied-server/0044-Skip-events-if-there-s-no-listeners.patch +++ b/patches/server/0042-Skip-events-if-there-s-no-listeners.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Skip events if there's no listeners diff --git a/src/main/java/net/minecraft/commands/Commands.java b/src/main/java/net/minecraft/commands/Commands.java -index b7f338e982d0dcab99137ab6dc200b82ac6b7cba..32f355b1b33cf2b7b7a276fb0fd98314a962e685 100644 +index aa2fca6917fb67fe0e9ba067d11487c3a274f675..5c7287ef8c2d59215aff81cb138a55676bfa6356 100644 --- a/src/main/java/net/minecraft/commands/Commands.java +++ b/src/main/java/net/minecraft/commands/Commands.java -@@ -506,6 +506,7 @@ public class Commands { +@@ -501,6 +501,7 @@ public class Commands { private void runSync(ServerPlayer player, Collection bukkit, RootCommandNode rootcommandnode) { // Paper end - Perf: Async command map building new com.destroystokyo.paper.event.brigadier.AsyncPlayerSendCommandsEvent(player.getBukkitEntity(), (RootCommandNode) rootcommandnode, false).callEvent(); // Paper - Brigadier API @@ -16,7 +16,7 @@ index b7f338e982d0dcab99137ab6dc200b82ac6b7cba..32f355b1b33cf2b7b7a276fb0fd98314 PlayerCommandSendEvent event = new PlayerCommandSendEvent(player.getBukkitEntity(), new LinkedHashSet<>(bukkit)); event.getPlayer().getServer().getPluginManager().callEvent(event); -@@ -516,6 +517,7 @@ public class Commands { +@@ -511,6 +512,7 @@ public class Commands { } } // CraftBukkit end diff --git a/patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch b/patches/server/0043-Add-permission-for-F3-N-debug.patch similarity index 83% rename from patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch rename to patches/server/0043-Add-permission-for-F3-N-debug.patch index 05aa3c2d0..8b2ac074b 100644 --- a/patches/unapplied-server/0045-Add-permission-for-F3-N-debug.patch +++ b/patches/server/0043-Add-permission-for-F3-N-debug.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add permission for F3+N debug diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index f8a6d48200dae42cb73ed4f7eb52f957e7530e8c..8d4e080540fb24b434e6d01eee6e7c2116c66804 100644 +index f10dcc0debcdd2077ee53cb1aefca8abd12f3ecd..338808ba1138f62d89f3f1338a4c5068426df0e4 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -1181,6 +1181,7 @@ public abstract class PlayerList { +@@ -1180,6 +1180,7 @@ public abstract class PlayerList { } else { b0 = (byte) (24 + permissionLevel); } diff --git a/patches/unapplied-server/0046-Configurable-TPS-Catchup.patch b/patches/server/0044-Configurable-TPS-Catchup.patch similarity index 59% rename from patches/unapplied-server/0046-Configurable-TPS-Catchup.patch rename to patches/server/0044-Configurable-TPS-Catchup.patch index d661b88ae..2bed1436e 100644 --- a/patches/unapplied-server/0046-Configurable-TPS-Catchup.patch +++ b/patches/server/0044-Configurable-TPS-Catchup.patch @@ -5,29 +5,22 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0c7681a431e1986484319bf2de89d3cc3f7a6275..4c61c1dd393ac13da2f0f2b2c07db3070a172e02 100644 +index dfa332c4ff52033eb95248518bc44bbd22697697..f3ad4ee45ba48a10bbae1084f291ae0bcccdf624 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1233,11 +1233,18 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop getBrain() { return (Brain) super.getBrain(); // CraftBukkit - decompile error 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 301d985b89b98a644603a6b086889442f4a37d79..6f30c22fe0058320b995570c9af7b15ae917dd76 100644 +index 30f13bc35a96950f05b065b5c77830834e5792d1..9d5eaaf1869a3ecb61947ab0c09af558fa1cd283 100644 --- a/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java +++ b/src/main/java/net/minecraft/world/entity/npc/WanderingTrader.java @@ -93,6 +93,11 @@ public class WanderingTrader extends net.minecraft.world.entity.npc.AbstractVill diff --git a/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch b/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch deleted file mode 100644 index ccd80fc5a..000000000 --- a/patches/unapplied-server/0015-LivingEntity-safeFallDistance.patch +++ /dev/null @@ -1,91 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 5 May 2019 12:58:45 -0500 -Subject: [PATCH] LivingEntity safeFallDistance - - -diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 3c7c618dd9611485b81336ca4a5059fcb1e4f1ff..09f64c62333ff1fe4c77377d86922de59aa05265 100644 ---- a/src/main/java/net/minecraft/world/entity/LivingEntity.java -+++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -253,6 +253,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - protected boolean skipDropExperience; - // CraftBukkit start - public int expToDrop; -+ public float safeFallDistance = 3.0F; // Purpur - public boolean forceDrops; - public ArrayList drops = new ArrayList<>(); // Paper - Restore vanilla drops behavior - public final org.bukkit.craftbukkit.attribute.CraftAttributeMap craftAttributes; -@@ -353,7 +354,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - this.tryAddSoulSpeed(); - } - -- if (!this.level().isClientSide && this.fallDistance > 3.0F && onGround && !state.isAir()) { -+ if (!this.level().isClientSide && this.fallDistance > this.safeFallDistance && onGround && !state.isAir()) { // Purpur - double d1 = this.getX(); - double d2 = this.getY(); - double d3 = this.getZ(); -@@ -368,7 +369,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - d3 = (double) landedPosition.getZ() + 0.5D + d5 / d6 * 0.5D; - } - -- float f = (float) Mth.ceil(this.fallDistance - 3.0F); -+ float f = (float) Mth.ceil(this.fallDistance - this.safeFallDistance); // Purpur - double d7 = Math.min((double) (0.2F + f / 15.0F), 2.5D); - int i = (int) (150.0D * d7); - -@@ -2117,7 +2118,7 @@ public abstract class LivingEntity extends Entity implements Attackable { - MobEffectInstance mobeffect = this.getEffect(MobEffects.JUMP); - float f2 = mobeffect == null ? 0.0F : (float) (mobeffect.getAmplifier() + 1); - -- return Mth.ceil((fallDistance - 3.0F - f2) * damageMultiplier); -+ return Mth.ceil((fallDistance - this.safeFallDistance - f2) * damageMultiplier); // Purpur - } - } - -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -index 24fb38499092d8cbee3818bf5c873a55465b1edb..3170f9044f18b8c609433ddbd3ef9ac330644a0f 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/AbstractHorse.java -@@ -386,7 +386,7 @@ public abstract class AbstractHorse extends Animal implements ContainerListener, - - @Override - protected int calculateFallDamage(float fallDistance, float damageMultiplier) { -- return Mth.ceil((fallDistance * 0.5F - 3.0F) * damageMultiplier); -+ return Mth.ceil((fallDistance * 0.5F - this.safeFallDistance) * damageMultiplier); - } - - protected int getInventorySize() { -diff --git a/src/main/java/net/minecraft/world/entity/monster/Giant.java b/src/main/java/net/minecraft/world/entity/monster/Giant.java -index 2a30499fd6f4a1340f6911f0f7f079bcbe8576a3..c3c0fbe71c9af1125c80698865cb9eaf42d4a1c5 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/Giant.java -+++ b/src/main/java/net/minecraft/world/entity/monster/Giant.java -@@ -13,6 +13,7 @@ import net.minecraft.world.level.LevelReader; - public class Giant extends Monster { - public Giant(EntityType type, Level world) { - super(type, world); -+ this.safeFallDistance = 10.0F; // Purpur - } - - // Purpur start -diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 52c70c2793209aadb88bd4c5f45340747271d3d7..e25c95a904820a84ba18976a30faff289682a47f 100644 ---- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -@@ -1210,4 +1210,16 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { - this.getHandle().setYBodyRot(bodyYaw); - } - // Paper end - body yaw API -+ -+ // Purpur start -+ @Override -+ public float getSafeFallDistance() { -+ return getHandle().safeFallDistance; -+ } -+ -+ @Override -+ public void setSafeFallDistance(float safeFallDistance) { -+ getHandle().safeFallDistance = safeFallDistance; -+ } -+ // Purpur end - }