From 8ee573806fbb0347dc2531582bfe30283f1d86a6 Mon Sep 17 00:00:00 2001 From: William Blake Galbreath Date: Mon, 21 Jun 2021 07:53:48 -0500 Subject: [PATCH] update paper --- gradle.properties | 2 +- ...igurable-permission-message-upgrades.patch | 33 ++++---- ...-to-ignore-nearby-mobs-when-sleeping.patch | 39 ---------- ...Enderman-to-aggro-spawned-Endermites.patch | 40 ---------- ...-Dragon-Head-wearers-and-stare-aggro.patch | 51 ------------ .../0177-Tick-fluids-config.patch | 53 ------------- ...178-Config-to-disable-Llama-caravans.patch | 53 ------------- ...ig-to-make-Creepers-explode-on-death.patch | 77 ------------------- ...urable-ravager-griefable-blocks-list.patch | 68 ---------------- ...0181-Sneak-to-bulk-process-composter.patch | 61 --------------- patches/server/0001-Rebrand.patch | 12 +-- patches/server/0002-Purpur-config-files.patch | 10 +-- patches/server/0003-Ridables.patch | 14 ++-- ...Add-player-death-exp-control-options.patch | 4 +- .../0065-Add-canSaveToDisk-to-Entity.patch | 4 +- ...-Add-allow-water-in-end-world-option.patch | 4 +- .../0080-Allow-color-codes-in-books.patch | 4 +- ...Stop-squids-floating-on-top-of-water.patch | 4 +- ...tities-can-use-portals-configuration.patch | 6 +- ...-check-to-EntityDamagedByEntityEvent.patch | 6 +- patches/server/0146-Add-MC-4-fix-back.patch | 4 +- .../server/0153-Fix-stuck-in-portals.patch | 6 +- 22 files changed, 60 insertions(+), 495 deletions(-) delete mode 100644 patches/server-unmapped/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch delete mode 100644 patches/server-unmapped/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch delete mode 100644 patches/server-unmapped/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch delete mode 100644 patches/server-unmapped/0177-Tick-fluids-config.patch delete mode 100644 patches/server-unmapped/0178-Config-to-disable-Llama-caravans.patch delete mode 100644 patches/server-unmapped/0179-Config-to-make-Creepers-explode-on-death.patch delete mode 100644 patches/server-unmapped/0180-Configurable-ravager-griefable-blocks-list.patch delete mode 100644 patches/server-unmapped/0181-Sneak-to-bulk-process-composter.patch diff --git a/gradle.properties b/gradle.properties index 4403e66b6..7395e30e8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group=net.pl3x.purpur version=1.17-R0.1-SNAPSHOT packageVersion=1_17_R1 -paperCommit=e31ad11127e9971958ceb2d236a92b12f9892b25 +paperCommit=47605b8e6035260be98c8650a736306a0a39258d org.gradle.parallel=true org.gradle.jvmargs=-Xmx3G diff --git a/patches/api/0022-Configurable-permission-message-upgrades.patch b/patches/api/0022-Configurable-permission-message-upgrades.patch index bda8c7b75..ee34402f5 100644 --- a/patches/api/0022-Configurable-permission-message-upgrades.patch +++ b/patches/api/0022-Configurable-permission-message-upgrades.patch @@ -6,22 +6,29 @@ Subject: [PATCH] Configurable permission message upgrades This allows the configurable permission message in paper.yml to be blank and also support newlines diff --git a/src/main/java/org/bukkit/command/Command.java b/src/main/java/org/bukkit/command/Command.java -index c10fc8d2386301bc2caddcdb1cd18566bcaa8689..882c565ac2be3df976e7bbeb4dc80c9ac474a8b1 100644 +index 1994f15831de1ca1bb7b4f52c23567825766d3f9..514efc8c79756a4ce7bc854586f9593af1d0180c 100644 --- a/src/main/java/org/bukkit/command/Command.java +++ b/src/main/java/org/bukkit/command/Command.java -@@ -184,9 +184,13 @@ public abstract class Command { +@@ -184,17 +184,11 @@ public abstract class Command { return true; } -+ // Purpur start -+ String permissionMessage = this.permissionMessage; - if (permissionMessage == null) { -- target.sendMessage(Bukkit.getPermissionMessage()); // Paper +- if (permissionMessage == null) { +- // Paper start +- String bukkitPermissionMessage = Bukkit.getPermissionMessage(); +- if (org.apache.commons.lang.StringUtils.isNotBlank(bukkitPermissionMessage)) { +- target.sendMessage(bukkitPermissionMessage); +- } +- // Paper end - } else if (permissionMessage.length() != 0) { -+ permissionMessage = Bukkit.getPermissionMessage(); -+ } -+ if (permissionMessage.length() != 0) { -+ // Purpur end - for (String line : permissionMessage.replace("", permission).split("\n")) { - target.sendMessage(line); - } +- for (String line : permissionMessage.replace("", permission).split("\n")) { +- target.sendMessage(line); +- } ++ // Purpur start ++ String msg = this.permissionMessage != null ? this.permissionMessage : Bukkit.getPermissionMessage(); ++ for (String line : msg.replace("", permission).split("\n")) { ++ if (org.apache.commons.lang.StringUtils.isNotBlank(line)) target.sendMessage(line); ++ //Purpur end + } + + return false; diff --git a/patches/server-unmapped/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch b/patches/server-unmapped/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch deleted file mode 100644 index cf99e7e20..000000000 --- a/patches/server-unmapped/0174-Config-to-ignore-nearby-mobs-when-sleeping.patch +++ /dev/null @@ -1,39 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Mon, 8 Mar 2021 16:46:54 -0500 -Subject: [PATCH] Config to ignore nearby mobs when sleeping - - -diff --git a/src/main/java/net/minecraft/server/level/EntityPlayer.java b/src/main/java/net/minecraft/server/level/EntityPlayer.java -index 6abc6cfa4e6fd4de03752526269db162503bf7b9..8b957fe6c88ae4eded4a89846cae2df4456c04bf 100644 ---- a/src/main/java/net/minecraft/server/level/EntityPlayer.java -+++ b/src/main/java/net/minecraft/server/level/EntityPlayer.java -@@ -1285,7 +1285,7 @@ public class EntityPlayer extends EntityHuman implements ICrafting { - return entitymonster.f((EntityHuman) this); - }); - -- if (!list.isEmpty()) { -+ if (!this.world.purpurConfig.playerSleepNearMonsters && !list.isEmpty()) { // Purpur - return Either.left(EntityHuman.EnumBedResult.NOT_SAFE); - } - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 129fef2e4da94bcd80153379a7246590e4ea9cdd..eaaaf9e5490095cd70ca892fa927017e6ea9de9d 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -328,6 +328,7 @@ public class PurpurWorldConfig { - public int raidCooldownSeconds = 0; - public int animalBreedingCooldownSeconds = 0; - public boolean creativeOnePunch = false; -+ public boolean playerSleepNearMonsters = false; - private void miscGameplayMechanicsSettings() { - useBetterMending = getBoolean("gameplay-mechanics.use-better-mending", useBetterMending); - alwaysTameInCreative = getBoolean("gameplay-mechanics.always-tame-in-creative", alwaysTameInCreative); -@@ -347,6 +348,7 @@ public class PurpurWorldConfig { - raidCooldownSeconds = getInt("gameplay-mechanics.raid-cooldown-seconds", raidCooldownSeconds); - animalBreedingCooldownSeconds = getInt("gameplay-mechanics.animal-breeding-cooldown-seconds", animalBreedingCooldownSeconds); - creativeOnePunch = getBoolean("gameplay-mechanics.player.one-punch-in-creative", creativeOnePunch); -+ playerSleepNearMonsters = getBoolean("gameplay-mechanics.player.sleep-ignore-nearby-mobs", playerSleepNearMonsters); - } - - public boolean catSpawning; diff --git a/patches/server-unmapped/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch b/patches/server-unmapped/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch deleted file mode 100644 index 7f1e26ff9..000000000 --- a/patches/server-unmapped/0175-Config-for-Enderman-to-aggro-spawned-Endermites.patch +++ /dev/null @@ -1,40 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Tue, 9 Mar 2021 16:10:39 -0500 -Subject: [PATCH] Config for Enderman to aggro spawned Endermites - -By default, Enderman do not attack Endermites unless spawned by an Ender Pearl. - -diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -index a2e0fed960f6dffb0f00c9d6ce91359e3597231c..25c49f6ded334ffb2d0c3155692879521ec58c09 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -+++ b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -@@ -71,7 +71,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { - private static final DataWatcherObject bo = DataWatcher.a(EntityEnderman.class, DataWatcherRegistry.i); - private static final DataWatcherObject bp = DataWatcher.a(EntityEnderman.class, DataWatcherRegistry.i); - private static final Predicate bq = (entityliving) -> { -- return entityliving instanceof EntityEndermite && ((EntityEndermite) entityliving).isPlayerSpawned(); -+ return entityliving instanceof EntityEndermite && (((EntityEndermite) entityliving).isPlayerSpawned() || entityliving.world.purpurConfig.endermanAggroSpawnedEndermites); // Purpur - }; - private int br = Integer.MIN_VALUE; - private int bs; -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index eaaaf9e5490095cd70ca892fa927017e6ea9de9d..bb8ad6a4ac87c4c34d12c5fc1dd92f3d63b84bc1 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -881,6 +881,7 @@ public class PurpurWorldConfig { - public boolean endermanDespawnEvenWithBlock = false; - public double endermanMaxHealth = 40.0D; - public boolean endermanTakeDamageFromWater = true; -+ public boolean endermanAggroSpawnedEndermites = false; - private void endermanSettings() { - endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); - endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -894,6 +895,7 @@ public class PurpurWorldConfig { - } - endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); - endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); -+ endermanAggroSpawnedEndermites = getBoolean("mobs.enderman.aggressive-towards-spawned-endermites", endermanAggroSpawnedEndermites); - } - - public boolean endermiteRidable = false; diff --git a/patches/server-unmapped/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch b/patches/server-unmapped/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch deleted file mode 100644 index 58a00170f..000000000 --- a/patches/server-unmapped/0176-Config-to-ignore-Dragon-Head-wearers-and-stare-aggro.patch +++ /dev/null @@ -1,51 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Tue, 9 Mar 2021 16:16:01 -0500 -Subject: [PATCH] Config to ignore Dragon Head wearers and stare aggro - -Prevents Enderman from becoming aggresive towards players that are wearing a Dragon Head. -Adds functionality to a useless item! - -diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -index 25c49f6ded334ffb2d0c3155692879521ec58c09..3bb5b360be98ac2f20793c0eb126e39eb2201331 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -+++ b/src/main/java/net/minecraft/world/entity/monster/EntityEnderman.java -@@ -50,6 +50,7 @@ import net.minecraft.world.entity.ai.goal.target.PathfinderGoalUniversalAngerRes - import net.minecraft.world.entity.ai.targeting.PathfinderTargetCondition; - import net.minecraft.world.entity.player.EntityHuman; - import net.minecraft.world.item.ItemStack; -+import net.minecraft.world.item.Items; - import net.minecraft.world.level.GameRules; - import net.minecraft.world.level.GeneratorAccess; - import net.minecraft.world.level.IMaterial; -@@ -252,7 +253,7 @@ public class EntityEnderman extends EntityMonster implements IEntityAngerable { - // Paper end - ItemStack itemstack = (ItemStack) entityhuman.inventory.armor.get(3); - -- if (itemstack.getItem() == Blocks.CARVED_PUMPKIN.getItem()) { -+ if (world.purpurConfig.endermanDisableStareAggro || itemstack.getItem() == Blocks.CARVED_PUMPKIN.getItem() || (world.purpurConfig.endermanIgnorePlayerDragonHead && itemstack.getItem() == Items.DRAGON_HEAD)) { // Purpur - return false; - } else { - Vec3D vec3d = entityhuman.f(1.0F).d(); -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index bb8ad6a4ac87c4c34d12c5fc1dd92f3d63b84bc1..838f97829dcb2926a56e3c34c4cbcdb9a13d6d84 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -882,6 +882,8 @@ public class PurpurWorldConfig { - public double endermanMaxHealth = 40.0D; - public boolean endermanTakeDamageFromWater = true; - public boolean endermanAggroSpawnedEndermites = false; -+ public boolean endermanIgnorePlayerDragonHead = false; -+ public boolean endermanDisableStareAggro = false; - private void endermanSettings() { - endermanRidable = getBoolean("mobs.enderman.ridable", endermanRidable); - endermanRidableInWater = getBoolean("mobs.enderman.ridable-in-water", endermanRidableInWater); -@@ -896,6 +898,8 @@ public class PurpurWorldConfig { - endermanMaxHealth = getDouble("mobs.enderman.attributes.max_health", endermanMaxHealth); - endermanTakeDamageFromWater = getBoolean("mobs.enderman.takes-damage-from-water", endermanTakeDamageFromWater); - endermanAggroSpawnedEndermites = getBoolean("mobs.enderman.aggressive-towards-spawned-endermites", endermanAggroSpawnedEndermites); -+ endermanIgnorePlayerDragonHead = getBoolean("mobs.enderman.ignore-players-wearing-dragon-head", endermanIgnorePlayerDragonHead); -+ endermanDisableStareAggro = getBoolean("mobs.enderman.disable-player-stare-aggression", endermanDisableStareAggro); - } - - public boolean endermiteRidable = false; diff --git a/patches/server-unmapped/0177-Tick-fluids-config.patch b/patches/server-unmapped/0177-Tick-fluids-config.patch deleted file mode 100644 index d771b614b..000000000 --- a/patches/server-unmapped/0177-Tick-fluids-config.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Mon, 15 Mar 2021 03:52:17 -0500 -Subject: [PATCH] Tick fluids config - - -diff --git a/src/main/java/net/minecraft/world/level/block/BlockFluids.java b/src/main/java/net/minecraft/world/level/block/BlockFluids.java -index 0ed8d938b8fafdb03e01a00a201ba3f8597ac6e9..0eff89bf9e114271c34c37cad1b98691902529ac 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockFluids.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockFluids.java -@@ -100,7 +100,7 @@ public class BlockFluids extends Block implements IFluidSource { - - @Override - public void onPlace(IBlockData iblockdata, World world, BlockPosition blockposition, IBlockData iblockdata1, boolean flag) { -- if (this.a(world, blockposition, iblockdata)) { -+ if (world.purpurConfig.tickFluids && this.a(world, blockposition, iblockdata)) { // Purpur - world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.getFlowSpeed(world, blockposition)); // Paper - } - -@@ -125,7 +125,7 @@ public class BlockFluids extends Block implements IFluidSource { - - @Override - public IBlockData updateState(IBlockData iblockdata, EnumDirection enumdirection, IBlockData iblockdata1, GeneratorAccess generatoraccess, BlockPosition blockposition, BlockPosition blockposition1) { -- if (iblockdata.getFluid().isSource() || iblockdata1.getFluid().isSource()) { -+ if (generatoraccess.getMinecraftWorld().purpurConfig.tickFluids && iblockdata.getFluid().isSource() || iblockdata1.getFluid().isSource()) { // Purpur - generatoraccess.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.b.a((IWorldReader) generatoraccess)); - } - -@@ -134,7 +134,7 @@ public class BlockFluids extends Block implements IFluidSource { - - @Override - public void doPhysics(IBlockData iblockdata, World world, BlockPosition blockposition, Block block, BlockPosition blockposition1, boolean flag) { -- if (this.a(world, blockposition, iblockdata)) { -+ if (world.purpurConfig.tickFluids && this.a(world, blockposition, iblockdata)) { // Purpur - world.getFluidTickList().a(blockposition, iblockdata.getFluid().getType(), this.getFlowSpeed(world, blockposition)); // Paper - } - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 838f97829dcb2926a56e3c34c4cbcdb9a13d6d84..d9fee278a2a5c04cc1a1796df2a6a77b432f47cc 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -305,6 +305,11 @@ public class PurpurWorldConfig { - witherSkullDespawnRate = getInt("gameplay-mechanics.projectile-despawn-rates.wither_skull", witherSkullDespawnRate); - } - -+ public boolean tickFluids = true; -+ private void fluidSettings() { -+ tickFluids = getBoolean("gameplay-mechanics.tick-fluids", tickFluids); -+ } -+ - public int snowballDamage = -1; - private void snowballSettings() { - snowballDamage = getInt("gameplay-mechanics.projectile-damage.snowball", snowballDamage); diff --git a/patches/server-unmapped/0178-Config-to-disable-Llama-caravans.patch b/patches/server-unmapped/0178-Config-to-disable-Llama-caravans.patch deleted file mode 100644 index baaca271c..000000000 --- a/patches/server-unmapped/0178-Config-to-disable-Llama-caravans.patch +++ /dev/null @@ -1,53 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Wed, 17 Mar 2021 10:12:53 -0400 -Subject: [PATCH] Config to disable Llama caravans - -Disables the mechanic where llamas follow leashed llamas. - -diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -index 34a854131dd939693a6df4d52103714ebe373dc3..ea02a78c31ed43220a2b83be4bd2a896500a70b8 100644 ---- a/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -+++ b/src/main/java/net/minecraft/world/entity/ai/goal/PathfinderGoalLlamaFollow.java -@@ -23,7 +23,7 @@ public class PathfinderGoalLlamaFollow extends PathfinderGoal { - - @Override - public boolean a() { -- if (!getLlama().shouldJoinCaravan) return false; // Purpur -+ if (!getLlama().world.purpurConfig.llamaCaravans || !getLlama().shouldJoinCaravan) return false; // Purpur - if (!this.a.isLeashed() && !this.a.fC()) { - List list = this.a.world.getEntities(this.a, this.a.getBoundingBox().grow(9.0D, 4.0D, 9.0D), (entity) -> { - EntityTypes entitytypes = entity.getEntityType(); -diff --git a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -index 4bea68fa35177d84a35dc5ced3e501a87e2a5391..f91e9dc5ae635329257f6b78b88c9c7c89e2f43d 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -+++ b/src/main/java/net/minecraft/world/entity/animal/horse/EntityLlama.java -@@ -518,7 +518,7 @@ public class EntityLlama extends EntityHorseChestedAbstract implements IRangedEn - - public void joinCaravan(EntityLlama entitiyllama) { a(entitiyllama); } // Purpur - OBFHELPER - public void a(EntityLlama entityllama) { -- if (!shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) entityllama.getBukkitEntity()).callEvent()) return; // Purpur -+ if (!this.world.purpurConfig.llamaCaravans || !shouldJoinCaravan || !new net.pl3x.purpur.event.entity.LlamaJoinCaravanEvent((org.bukkit.entity.Llama) getBukkitEntity(), (org.bukkit.entity.Llama) entityllama.getBukkitEntity()).callEvent()) return; // Purpur - this.bB = entityllama; - this.bB.bC = this; - } -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index d9fee278a2a5c04cc1a1796df2a6a77b432f47cc..c58a64f8ff38cde2de70ef9e06c1a6ca9e263669 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1121,6 +1121,7 @@ public class PurpurWorldConfig { - - public boolean llamaRidable = false; - public boolean llamaRidableInWater = false; -+ public boolean llamaCaravans = true; - public int llamaBreedingTicks = 6000; - public double llamaMaxHealthMin = 15.0D; - public double llamaMaxHealthMax = 30.0D; -@@ -1131,6 +1132,7 @@ public class PurpurWorldConfig { - private void llamaSettings() { - llamaRidable = getBoolean("mobs.llama.ridable", llamaRidable); - llamaRidableInWater = getBoolean("mobs.llama.ridable-in-water", llamaRidableInWater); -+ llamaCaravans = getBoolean("mobs.llama.join-caravans", llamaCaravans); - llamaBreedingTicks = getInt("mobs.llama.breeding-delay-ticks", llamaBreedingTicks); - if (PurpurConfig.version < 10) { - double oldMin = getDouble("mobs.llama.attributes.max-health.min", llamaMaxHealthMin); diff --git a/patches/server-unmapped/0179-Config-to-make-Creepers-explode-on-death.patch b/patches/server-unmapped/0179-Config-to-make-Creepers-explode-on-death.patch deleted file mode 100644 index d2b096238..000000000 --- a/patches/server-unmapped/0179-Config-to-make-Creepers-explode-on-death.patch +++ /dev/null @@ -1,77 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Encode42 -Date: Tue, 16 Mar 2021 19:50:58 -0400 -Subject: [PATCH] Config to make Creepers explode on death - -Creepers exploded after being killed in the alpha days. This brings that back. - -diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java b/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java -index d049aac0208386198d1da4e9470e64898d27b1c9..27d5e9fc5ec1396e95180fc14e8a61b030cfd1e6 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java -+++ b/src/main/java/net/minecraft/world/entity/monster/EntityCreeper.java -@@ -7,6 +7,7 @@ import net.minecraft.network.syncher.DataWatcher; - import net.minecraft.network.syncher.DataWatcherObject; - import net.minecraft.network.syncher.DataWatcherRegistry; - import net.minecraft.server.PathfinderGoalHasRider; -+import net.minecraft.server.level.EntityPlayer; - import net.minecraft.server.level.WorldServer; - import net.minecraft.sounds.SoundEffect; - import net.minecraft.sounds.SoundEffects; -@@ -63,6 +64,7 @@ public class EntityCreeper extends EntityMonster { - private int spacebarCharge = 0; - private int prevSpacebarCharge = 0; - private int powerToggleDelay = 0; -+ private boolean exploding = false; - // Purpur end - - public EntityCreeper(EntityTypes entitytypes, World world) { -@@ -142,6 +144,14 @@ public class EntityCreeper extends EntityMonster { - public void initAttributes() { - this.getAttributeInstance(GenericAttributes.MAX_HEALTH).setValue(this.world.purpurConfig.creeperMaxHealth); - } -+ -+ protected org.bukkit.event.entity.EntityDeathEvent d(DamageSource damagesource) { -+ if (!exploding && this.world.purpurConfig.creeperExplodeWhenKilled && damagesource.getEntity() instanceof EntityPlayer) { -+ this.explode(); -+ } -+ -+ return super.d(damagesource); -+ } - // Purpur end - - @Override -@@ -327,6 +337,7 @@ public class EntityCreeper extends EntityMonster { - } - - public void explode() { -+ this.exploding = true; // Purpur - if (!this.world.isClientSide) { - Explosion.Effect explosion_effect = this.world.getGameRules().getBoolean(GameRules.MOB_GRIEFING) && world.purpurConfig.creeperAllowGriefing ? Explosion.Effect.DESTROY : Explosion.Effect.NONE; // Purpur - float f = this.isPowered() ? 2.0F : 1.0F; -@@ -346,6 +357,7 @@ public class EntityCreeper extends EntityMonster { - // CraftBukkit end - } - -+ this.exploding = false; // Purpur - } - - private void createEffectCloud() { -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index c58a64f8ff38cde2de70ef9e06c1a6ca9e263669..1fcd11d5f14458cd42e8ff54d4f244067ab0736e 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -757,12 +757,14 @@ public class PurpurWorldConfig { - - public boolean creeperRidable = false; - public boolean creeperRidableInWater = false; -+ public boolean creeperExplodeWhenKilled = false; - public boolean creeperAllowGriefing = true; - public double creeperChargedChance = 0.0D; - public double creeperMaxHealth = 20.0D; - private void creeperSettings() { - creeperRidable = getBoolean("mobs.creeper.ridable", creeperRidable); - creeperRidableInWater = getBoolean("mobs.creeper.ridable-in-water", creeperRidableInWater); -+ creeperExplodeWhenKilled = getBoolean("mobs.creeper.explode-when-killed", creeperExplodeWhenKilled); - creeperAllowGriefing = getBoolean("mobs.creeper.allow-griefing", creeperAllowGriefing); - creeperChargedChance = getDouble("mobs.creeper.naturally-charged-chance", creeperChargedChance); - if (PurpurConfig.version < 10) { diff --git a/patches/server-unmapped/0180-Configurable-ravager-griefable-blocks-list.patch b/patches/server-unmapped/0180-Configurable-ravager-griefable-blocks-list.patch deleted file mode 100644 index 950a2acc8..000000000 --- a/patches/server-unmapped/0180-Configurable-ravager-griefable-blocks-list.patch +++ /dev/null @@ -1,68 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Wed, 17 Mar 2021 14:54:43 -0500 -Subject: [PATCH] Configurable ravager griefable blocks list - - -diff --git a/src/main/java/net/minecraft/world/entity/monster/EntityRavager.java b/src/main/java/net/minecraft/world/entity/monster/EntityRavager.java -index 16da85620c067b005ce029c8b9c5ea1642a794f0..c2a6f1cb399c2cd659e2b2191edbc2a687a40eeb 100644 ---- a/src/main/java/net/minecraft/world/entity/monster/EntityRavager.java -+++ b/src/main/java/net/minecraft/world/entity/monster/EntityRavager.java -@@ -188,7 +188,7 @@ public class EntityRavager extends EntityRaider { - IBlockData iblockdata = this.world.getType(blockposition); - Block block = iblockdata.getBlock(); - -- if (block instanceof BlockLeaves && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, net.minecraft.world.level.block.Blocks.AIR.getBlockData()).isCancelled()) { // CraftBukkit -+ if (world.purpurConfig.ravagerGriefableBlocks.contains(block) && !org.bukkit.craftbukkit.event.CraftEventFactory.callEntityChangeBlockEvent(this, blockposition, net.minecraft.world.level.block.Blocks.AIR.getBlockData()).isCancelled()) { // CraftBukkit // Purpur - flag = this.world.a(blockposition, true, this) || flag; - } - } -diff --git a/src/main/java/net/minecraft/world/level/block/BlockCrops.java b/src/main/java/net/minecraft/world/level/block/BlockCrops.java -index 55ad7693ced8bab5bc8b36a375c85370e84ccb77..99df890883165c39e0c8190c4729b952af03e1c8 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockCrops.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockCrops.java -@@ -161,7 +161,7 @@ public class BlockCrops extends BlockPlant implements IBlockFragilePlantElement - @Override - public void a(IBlockData iblockdata, World world, BlockPosition blockposition, Entity entity) { - if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, blockposition)).callEvent()) { return; } // Paper -- if (entity instanceof EntityRavager && !CraftEventFactory.callEntityChangeBlockEvent(entity, blockposition, Blocks.AIR.getBlockData(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.MOB_GRIEFING))).isCancelled()) { // CraftBukkit // Purpur -+ if (entity instanceof EntityRavager && world.purpurConfig.ravagerGriefableBlocks.contains(world.getType(blockposition).getBlock()) && !CraftEventFactory.callEntityChangeBlockEvent(entity, blockposition, Blocks.AIR.getBlockData(), (!world.purpurConfig.ravagerBypassMobGriefing && !world.getGameRules().getBoolean(GameRules.MOB_GRIEFING))).isCancelled()) { // CraftBukkit // Purpur - world.a(blockposition, true, entity); - } - -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index 1fcd11d5f14458cd42e8ff54d4f244067ab0736e..e360409a15feeb793bd3b4be82f9eda89b5660d7 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -1462,6 +1462,7 @@ public class PurpurWorldConfig { - public boolean ravagerRidableInWater = false; - public boolean ravagerBypassMobGriefing = false; - public double ravagerMaxHealth = 100.0D; -+ public List ravagerGriefableBlocks = new ArrayList<>(); - private void ravagerSettings() { - ravagerRidable = getBoolean("mobs.ravager.ridable", ravagerRidable); - ravagerRidableInWater = getBoolean("mobs.ravager.ridable-in-water", ravagerRidableInWater); -@@ -1472,6 +1473,23 @@ public class PurpurWorldConfig { - set("mobs.ravager.attributes.max_health", oldValue); - } - ravagerMaxHealth = getDouble("mobs.ravager.attributes.max_health", ravagerMaxHealth); -+ getList("mobs.ravager.griefable-blocks", new ArrayList(){{ -+ add("minecraft:oak_leaves"); -+ add("minecraft:spruce_leaves"); -+ add("minecraft:birch_leaves"); -+ add("minecraft:jungle_leaves"); -+ add("minecraft:acacia_leaves"); -+ add("minecraft:dark_oak_leaves"); -+ add("minecraft:beetroots"); -+ add("minecraft:carrots"); -+ add("minecraft:potatoes"); -+ add("minecraft:wheat"); -+ }}).forEach(key -> { -+ Block block = IRegistry.BLOCK.get(new MinecraftKey(key.toString())); -+ if (!block.getBlockData().isAir()) { -+ ravagerGriefableBlocks.add(block); -+ } -+ }); - } - - public boolean salmonRidable = false; diff --git a/patches/server-unmapped/0181-Sneak-to-bulk-process-composter.patch b/patches/server-unmapped/0181-Sneak-to-bulk-process-composter.patch deleted file mode 100644 index 1f37f03c6..000000000 --- a/patches/server-unmapped/0181-Sneak-to-bulk-process-composter.patch +++ /dev/null @@ -1,61 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: William Blake Galbreath -Date: Sun, 21 Mar 2021 15:49:15 -0500 -Subject: [PATCH] Sneak to bulk process composter - - -diff --git a/src/main/java/net/minecraft/world/level/block/BlockComposter.java b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -index e4e519ba773388b8d26a8f794a6eff51e3d8f72e..c0b235d5edf3cd14021696d1b4f76ce3de41f5d5 100644 ---- a/src/main/java/net/minecraft/world/level/block/BlockComposter.java -+++ b/src/main/java/net/minecraft/world/level/block/BlockComposter.java -@@ -44,7 +44,7 @@ import org.bukkit.craftbukkit.util.DummyGeneratorAccess; - - public class BlockComposter extends Block implements IInventoryHolder { - -- public static final BlockStateInteger a = BlockProperties.as; -+ public static final BlockStateInteger a = BlockProperties.as; public static BlockStateInteger level() { return BlockComposter.a; } // Purpur - OBFHELPER - public static final Object2FloatMap b = new Object2FloatOpenHashMap(); - private static final VoxelShape c = VoxelShapes.b(); - private static final VoxelShape[] d = (VoxelShape[]) SystemUtils.a((new VoxelShape[9]), (avoxelshape) -> { // CraftBukkit - decompile error -@@ -203,6 +203,25 @@ public class BlockComposter extends Block implements IInventoryHolder { - public static IBlockData a(IBlockData iblockdata, WorldServer worldserver, ItemStack itemstack, BlockPosition blockposition, Entity entity) { // CraftBukkit - int i = (Integer) iblockdata.get(BlockComposter.a); - -+ // Purpur start -+ IBlockData newState = process(i, iblockdata, worldserver, itemstack, blockposition, entity); -+ -+ if (worldserver.purpurConfig.composterBulkProcess && entity.isSneaking()) { -+ IBlockData oldState; -+ int oldCount, newCount, oldLevel, newLevel; -+ do { -+ oldState = newState; -+ oldCount = itemstack.getCount(); -+ oldLevel = oldState.get(BlockComposter.level()); -+ newState = process(oldLevel, oldState, worldserver, itemstack, blockposition, entity); -+ newCount = itemstack.getCount(); -+ newLevel = newState.get(BlockComposter.level()); -+ } while (newCount > 0 && (newCount != oldCount || newLevel != oldLevel || newState != oldState)); -+ } -+ return newState; -+ } -+ private static IBlockData process(int i, IBlockData iblockdata, WorldServer worldserver, ItemStack itemstack, BlockPosition blockposition, Entity entity) { -+ // Purpur end - if (i < 7 && BlockComposter.b.containsKey(itemstack.getItem())) { - // CraftBukkit start - double rand = worldserver.getRandom().nextDouble(); -diff --git a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -index e360409a15feeb793bd3b4be82f9eda89b5660d7..bb3c5d34b58ccf9bbaa1102e36b82a56f0dda7e3 100644 ---- a/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -+++ b/src/main/java/net/pl3x/purpur/PurpurWorldConfig.java -@@ -502,6 +502,11 @@ public class PurpurWorldConfig { - chestOpenWithBlockOnTop = getBoolean("blocks.chest.open-with-solid-block-on-top", chestOpenWithBlockOnTop); - } - -+ public boolean composterBulkProcess = false; -+ private void composterSettings() { -+ composterBulkProcess = getBoolean("blocks.composter.sneak-to-bulk-process", composterBulkProcess); -+ } -+ - public boolean dispenserApplyCursedArmor = true; - public boolean dispenserPlaceAnvils = false; - private void dispenserSettings() { diff --git a/patches/server/0001-Rebrand.patch b/patches/server/0001-Rebrand.patch index 8ccc0149c..e8f393fc8 100644 --- a/patches/server/0001-Rebrand.patch +++ b/patches/server/0001-Rebrand.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Rebrand diff --git a/build.gradle.kts b/build.gradle.kts -index 04938bb10c35d2e424043adb7ed8fec2e42bb816..4bcd8f006c94a82970be91cc58583b2261270567 100644 +index f427c6f5adf20f9e1b1fa4ab56041506d8240c92..008c1a4af01a981bab96e5cf12d25fab3640d2ce 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -18,8 +18,8 @@ repositories { +@@ -30,8 +30,8 @@ repositories { } dependencies { @@ -19,7 +19,7 @@ index 04938bb10c35d2e424043adb7ed8fec2e42bb816..4bcd8f006c94a82970be91cc58583b22 // Paper start implementation("org.jline:jline-terminal-jansi:3.12.1") implementation("net.minecrell:terminalconsoleappender:1.2.0") -@@ -49,6 +49,7 @@ dependencies { +@@ -61,6 +61,7 @@ dependencies { implementation("co.aikar:cleaner:1.0-SNAPSHOT") // Paper implementation("io.netty:netty-all:4.1.65.Final") // Paper @@ -27,7 +27,7 @@ index 04938bb10c35d2e424043adb7ed8fec2e42bb816..4bcd8f006c94a82970be91cc58583b22 implementation("com.github.oshi:oshi-core:5.7.5") // Paper - fix startup delay and warning -@@ -66,7 +67,7 @@ tasks.jar { +@@ -80,7 +81,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -36,7 +36,7 @@ index 04938bb10c35d2e424043adb7ed8fec2e42bb816..4bcd8f006c94a82970be91cc58583b22 "Implementation-Vendor" to SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ss'Z'").format(Date()), // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -122,7 +123,7 @@ tasks.test { +@@ -174,7 +175,7 @@ tasks.test { fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -229,7 +229,7 @@ index 0000000000000000000000000000000000000000..cabfcebf9f944f7a2a2a1cffc7401435 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 8a98bd1018afd934696fedbed24e271ab6b75f51..fccb85a34b799fd8ac85707e8fd43a08ae2b5fc4 100644 +index 0bcb3b4f156221521e4a2289196a7bee0767f494..84370d90593d9fa75bb4ed0bf02b84b22ea439e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -230,7 +230,7 @@ import javax.annotation.Nullable; // Paper diff --git a/patches/server/0002-Purpur-config-files.patch b/patches/server/0002-Purpur-config-files.patch index 9919e1c2e..1bb60d98e 100644 --- a/patches/server/0002-Purpur-config-files.patch +++ b/patches/server/0002-Purpur-config-files.patch @@ -29,7 +29,7 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..4d8740678049aa749b42618470e9cc83 metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> { Map> map = new HashMap<>(); diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java -index 7acf077bc131af718c7548cc29deef558c04e463..10126cb1c3efa2e6c84f20c0da701a131a5dd4cb 100644 +index 73652e403eaa419fb5b4b54bd506f246c0aa4e99..90c8ec385f972ffea4ddb7a1b80e41db3be7c248 100644 --- a/src/main/java/com/destroystokyo/paper/PaperConfig.java +++ b/src/main/java/com/destroystokyo/paper/PaperConfig.java @@ -118,6 +118,11 @@ public class PaperConfig { @@ -100,10 +100,10 @@ index 674eccb7db4982adc28d6878ed8d5b28282b80b1..5fa2723c9899c69ac326f95acf49cd47 io.papermc.paper.brigadier.PaperBrigadierProviderImpl.INSTANCE.getClass(); // init PaperBrigadierProvider // Paper end diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index af90013d48e2dd827e045e2fc0f7f5be0dbaa33f..a10df746ada5b8cdee6f5ccf90724142609841c6 100644 +index 7e8c3073993cd4b143049882779427d4d104c6f3..9ec55832877773131333f45899af42ac9411f0cd 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3371,6 +3371,37 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3373,6 +3373,37 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return SlotAccess.NULL; } @@ -142,7 +142,7 @@ index af90013d48e2dd827e045e2fc0f7f5be0dbaa33f..a10df746ada5b8cdee6f5ccf90724142 public void sendMessage(Component message, UUID sender) {} diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index 870ff060e34de4ec49ad5496e79c2bd543297c41..de649d73a636920f8b5e92820a8a618f188789e3 100644 +index 9da5b7b54c91894b379d41fb8d2b24f7c1c9d96f..c664bd4ab5eb976fd9cdd241436c5c4c947fca08 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java @@ -166,6 +166,8 @@ public abstract class Level implements LevelAccessor, AutoCloseable { @@ -435,7 +435,7 @@ index 0000000000000000000000000000000000000000..6e7f56fe2b78d7a09d5d130f2c88338f + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 92eb2dd977fbe00f7f2785e77f6d98c026bcbe2e..337bd4b47eab7c8b1d23c9bdeb7324f074191790 100644 +index 84370d90593d9fa75bb4ed0bf02b84b22ea439e9..072d79be3e03d4563c6d67199f91e4fdcf4fcb17 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java @@ -875,6 +875,7 @@ public final class CraftServer implements Server { diff --git a/patches/server/0003-Ridables.patch b/patches/server/0003-Ridables.patch index c5ddb9a5b..589c15725 100644 --- a/patches/server/0003-Ridables.patch +++ b/patches/server/0003-Ridables.patch @@ -46,7 +46,7 @@ index b3312fa2fd218ffcfaa61d98584003c97fbda4ce..f0b9ff60b6122473bc2f87f56a6d1909 return new Throwable(entity + " Added to world at " + new java.util.Date()); } diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 181ab56448796a617f30f1b9e0fec8917b5d8e07..952b6103fd417251e8a030bb574f79e69cfbbe10 100644 +index 935b22199ebdf84db591f8442e0506d8fcc92e02..4ed4ca8e623784f12e2c7850e1c055f30a16e5ec 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -663,6 +663,15 @@ public class ServerPlayer extends Player { @@ -73,7 +73,7 @@ index 181ab56448796a617f30f1b9e0fec8917b5d8e07..952b6103fd417251e8a030bb574f79e6 + } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 7d2ac8aa97805e8b022d3982b1332c5055fc8b90..b98263dc5dcba1a5a8518c2f0acd2c9d3a8b6087 100644 +index 0c295854f31422cf3ad699d229805c5881a65eed..359f8a37e625af463f898f72b8c30ff41f84c672 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2349,6 +2349,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -86,7 +86,7 @@ index 7d2ac8aa97805e8b022d3982b1332c5055fc8b90..b98263dc5dcba1a5a8518c2f0acd2c9d if ((entity instanceof AbstractFish && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((AbstractFish) entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a10df746ada5b8cdee6f5ccf90724142609841c6..d59ec735b15b02c075f357ee616b821d2760f412 100644 +index 9ec55832877773131333f45899af42ac9411f0cd..a79485e95a09c8f14b2de53d3904376c45ae0a5c 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n @@ -107,7 +107,7 @@ index a10df746ada5b8cdee6f5ccf90724142609841c6..d59ec735b15b02c075f357ee616b821d private float eyeHeight; public boolean isInPowderSnow; public boolean wasInPowderSnow; -@@ -2407,6 +2407,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2409,6 +2409,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n this.passengers = ImmutableList.copyOf(list); } @@ -120,7 +120,7 @@ index a10df746ada5b8cdee6f5ccf90724142609841c6..d59ec735b15b02c075f357ee616b821d } return true; // CraftBukkit } -@@ -2447,6 +2453,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2449,6 +2455,14 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return false; } // Spigot end @@ -135,7 +135,7 @@ index a10df746ada5b8cdee6f5ccf90724142609841c6..d59ec735b15b02c075f357ee616b821d if (this.passengers.size() == 1 && this.passengers.get(0) == entity) { this.passengers = ImmutableList.of(); } else { -@@ -4013,4 +4027,41 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -4015,4 +4029,41 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return ((ServerChunkCache) level.getChunkSource()).isPositionTicking(this); } // Paper end @@ -4463,7 +4463,7 @@ index c4f7c94255e4631a3c0355f9260132ba28296f50..d6c31596e21041a124a263054ccb6447 this.setTradingPlayer(player); this.openTradingScreen(player, this.getDisplayName(), 1); 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 d286d88a3c3f93dbfa92de9421e320c92cd96350..c458710a2af40848d617149d97f51e7ae1165637 100644 +index 1bccd932851045c374e3092d33dc77fab680d0db..deaf12324f740b5523179adfd5b9a437d263cb28 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -193,6 +193,19 @@ public abstract class Player extends LivingEntity { diff --git a/patches/server/0063-Add-player-death-exp-control-options.patch b/patches/server/0063-Add-player-death-exp-control-options.patch index db35421a0..f34fe891e 100644 --- a/patches/server/0063-Add-player-death-exp-control-options.patch +++ b/patches/server/0063-Add-player-death-exp-control-options.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add player death exp control options 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 721767812c765ac70c66f5445950c39167f344de..3fd54f7d0f3372d83ccd135db44870fbe926c026 100644 +index ff5ce25e4207ce6d87a553c340d79c14c5750c25..d1a6e3f3538f1a09a5448011e7e02722e1252708 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -194,6 +194,8 @@ public abstract class Player extends LivingEntity { @@ -17,7 +17,7 @@ index 721767812c765ac70c66f5445950c39167f344de..3fd54f7d0f3372d83ccd135db44870fb public abstract void resetLastActionTime(); public void setAfk(boolean afk) { -@@ -1899,9 +1901,18 @@ public abstract class Player extends LivingEntity { +@@ -1904,9 +1906,18 @@ public abstract class Player extends LivingEntity { @Override protected int getExperienceReward(Player player) { if (!this.level.getGameRules().getBoolean(GameRules.RULE_KEEPINVENTORY) && !this.isSpectator()) { diff --git a/patches/server/0065-Add-canSaveToDisk-to-Entity.patch b/patches/server/0065-Add-canSaveToDisk-to-Entity.patch index 441950e82..53ccd04d3 100644 --- a/patches/server/0065-Add-canSaveToDisk-to-Entity.patch +++ b/patches/server/0065-Add-canSaveToDisk-to-Entity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add canSaveToDisk to Entity diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index a663de350f315596806253c961544d1ebb682751..f226ea02e83246d8763e9b0587f986a6c148035b 100644 +index aa3a7ffe65b5fef1977b42918a3b8e7a6f2a55ec..f3a979712e89cb11968a3f25f8001e6d1ceba4f0 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -4064,5 +4064,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -4066,5 +4066,9 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n public boolean processClick(InteractionHand hand) { return false; } diff --git a/patches/server/0079-Add-allow-water-in-end-world-option.patch b/patches/server/0079-Add-allow-water-in-end-world-option.patch index 57dff7cc9..f047ed08d 100644 --- a/patches/server/0079-Add-allow-water-in-end-world-option.patch +++ b/patches/server/0079-Add-allow-water-in-end-world-option.patch @@ -27,10 +27,10 @@ index 4fdb99240e6ebda946fd2e0a847654d92b7c56a1..e6dbe6e2d65aa4432f469910fd060649 return true; diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java -index de649d73a636920f8b5e92820a8a618f188789e3..1f9129180badb6df786b080edf926d04ef95125c 100644 +index c664bd4ab5eb976fd9cdd241436c5c4c947fca08..1fa4773cd86630ffb68be99a49f6ede49205cf59 100644 --- a/src/main/java/net/minecraft/world/level/Level.java +++ b/src/main/java/net/minecraft/world/level/Level.java -@@ -1381,4 +1381,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { +@@ -1380,4 +1380,14 @@ public abstract class Level implements LevelAccessor, AutoCloseable { } } diff --git a/patches/server/0080-Allow-color-codes-in-books.patch b/patches/server/0080-Allow-color-codes-in-books.patch index 336e9f2fa..bdfb4d4b7 100644 --- a/patches/server/0080-Allow-color-codes-in-books.patch +++ b/patches/server/0080-Allow-color-codes-in-books.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Allow color codes in books diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 88233e6bb9d3c690d12aa3adf7b5a4ea33ad1db2..3146734c26aa6e6834cfc91fdd143c01a9c96dc5 100644 +index 461e80185d25529c367ede7df571fbff172f0384..b9cbbd3c69ef9e14905873f9e4ce3104026e5390 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -1181,13 +1181,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -58,7 +58,7 @@ index 88233e6bb9d3c690d12aa3adf7b5a4ea33ad1db2..3146734c26aa6e6834cfc91fdd143c01 if (!s.equals(s1)) { nbttagcompound.putString(String.valueOf(i), (String) unaryoperator.apply(s1)); @@ -1231,6 +1237,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser - this.player.containerMenu.setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) + this.player.getInventory().setItem(slot, CraftEventFactory.handleEditBookEvent(player, slot, handItem, itemstack)); // CraftBukkit // Paper - Don't ignore result (see other callsite for handleEditBookEvent) } + // Purpur start diff --git a/patches/server/0097-Stop-squids-floating-on-top-of-water.patch b/patches/server/0097-Stop-squids-floating-on-top-of-water.patch index 946978e45..d1ef7d4fa 100644 --- a/patches/server/0097-Stop-squids-floating-on-top-of-water.patch +++ b/patches/server/0097-Stop-squids-floating-on-top-of-water.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Stop squids floating on top of water diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index f226ea02e83246d8763e9b0587f986a6c148035b..238acdec48ee5524ecb7645252bec7613e286cf7 100644 +index f3a979712e89cb11968a3f25f8001e6d1ceba4f0..a2c060948f99739664f4c3c4657ca628378fa5c6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3638,11 +3638,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3640,11 +3640,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n this.yRotO = this.getYRot(); } diff --git a/patches/server/0100-Entities-can-use-portals-configuration.patch b/patches/server/0100-Entities-can-use-portals-configuration.patch index 3849cf889..f2fb8f6fd 100644 --- a/patches/server/0100-Entities-can-use-portals-configuration.patch +++ b/patches/server/0100-Entities-can-use-portals-configuration.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Entities can use portals configuration diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 238acdec48ee5524ecb7645252bec7613e286cf7..98609a741b9a47417e7de1be4b972e2a398952e5 100644 +index a2c060948f99739664f4c3c4657ca628378fa5c6..c443b850a512eae94d451521c5e9e0342aca2171 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2507,7 +2507,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2509,7 +2509,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n public void handleInsidePortal(BlockPos pos) { if (this.isOnPortalCooldown()) { this.setPortalCooldown(); @@ -17,7 +17,7 @@ index 238acdec48ee5524ecb7645252bec7613e286cf7..98609a741b9a47417e7de1be4b972e2a if (!this.level.isClientSide && !pos.equals(this.portalEntrancePos)) { this.portalEntrancePos = pos.immutable(); } -@@ -3139,7 +3139,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3141,7 +3141,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n } public boolean canChangeDimensions() { diff --git a/patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch b/patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch index e3a7bda64..72fcc96b2 100644 --- a/patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch +++ b/patches/server/0124-Add-critical-hit-check-to-EntityDamagedByEntityEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add critical hit check to EntityDamagedByEntityEvent 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 3fd54f7d0f3372d83ccd135db44870fbe926c026..62540f8af27709976e109bd79975a9a5cd11c8d3 100644 +index d1a6e3f3538f1a09a5448011e7e02722e1252708..328a9849bb601e1cc9fd31066c2313f9bdfa07b8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java @@ -182,6 +182,7 @@ public abstract class Player extends LivingEntity { @@ -16,7 +16,7 @@ index 3fd54f7d0f3372d83ccd135db44870fbe926c026..62540f8af27709976e109bd79975a9a5 // CraftBukkit start public boolean fauxSleeping; -@@ -1237,6 +1238,7 @@ public abstract class Player extends LivingEntity { +@@ -1242,6 +1243,7 @@ public abstract class Player extends LivingEntity { flag2 = flag2 && !level.paperConfig.disablePlayerCrits; // Paper flag2 = flag2 && !this.isSprinting(); if (flag2) { @@ -24,7 +24,7 @@ index 3fd54f7d0f3372d83ccd135db44870fbe926c026..62540f8af27709976e109bd79975a9a5 f *= 1.5F; } -@@ -1273,6 +1275,7 @@ public abstract class Player extends LivingEntity { +@@ -1278,6 +1280,7 @@ public abstract class Player extends LivingEntity { Vec3 vec3d = target.getDeltaMovement(); boolean flag5 = target.hurt(DamageSource.playerAttack(this), f); diff --git a/patches/server/0146-Add-MC-4-fix-back.patch b/patches/server/0146-Add-MC-4-fix-back.patch index d5c1b6ce9..24e807753 100644 --- a/patches/server/0146-Add-MC-4-fix-back.patch +++ b/patches/server/0146-Add-MC-4-fix-back.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add MC-4 fix back diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 4717b3292bbbc5c1ee7246668b30e515caf48a80..6460b84214fc517d05e655001f4ef92943a8ca90 100644 +index ff5b7c5f6cea71d541abf8a518aee347f2e00e85..e6d8a421b0e5496df9ea3fc01f88c2f3c6c527b4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -3836,7 +3836,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -3838,7 +3838,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n public final void setPosRaw(double x, double y, double z) { // Paper start - fix MC-4 if (this instanceof ItemEntity) { diff --git a/patches/server/0153-Fix-stuck-in-portals.patch b/patches/server/0153-Fix-stuck-in-portals.patch index 7a6671282..8876587b0 100644 --- a/patches/server/0153-Fix-stuck-in-portals.patch +++ b/patches/server/0153-Fix-stuck-in-portals.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix stuck in portals diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c4ff2e17d032f20395bb8a42152d16de6287eff8..0ea925a190ec2400559bbdec9bccbaa850f2b83d 100644 +index 820e1b059fedcc5fe4ccbec772594dddce71fecb..baefaa7bd81ef1fdec6f1b2a03c1a8bff42ce84c 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1136,6 +1136,7 @@ public class ServerPlayer extends Player { @@ -17,10 +17,10 @@ index c4ff2e17d032f20395bb8a42152d16de6287eff8..0ea925a190ec2400559bbdec9bccbaa8 // CraftBukkit end this.setLevel(worldserver); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 98f0728733e0bce5fe5a0e7b4ce1a42afd7c653e..bdd6bd6ddad0ead1f0887f83f0e47a03d0201575 100644 +index e879f7bdee9c58533a549f22286ebb8a22a30442..92a1c059b248e14b16efbca7824d9a1a474b9f85 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -2504,12 +2504,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n +@@ -2506,12 +2506,15 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n return Vec3.directionFromRotation(this.getRotationVector()); }