From 6e45786e29214ed50daf6a9a950213d1851b3c78 Mon Sep 17 00:00:00 2001 From: granny Date: Tue, 14 Jan 2025 01:19:08 -0800 Subject: [PATCH] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@46c6f49 Fix Registry#getKey implementation PaperMC/Paper@4c6ea84 move junit platform dep to -server and -api PaperMC/Paper@c31d95e remove test plugin diff accidentally committed PaperMC/Paper@90d50aa update .editorconfig PaperMC/Paper@8ad15d6 Update minecraft dir references PaperMC/Paper@083c083 Fix a bunch more issues arising from mutable types (#11769) PaperMC/Paper@eb793c3 [ci skip] more cleanup from repo reorg PaperMC/Paper@f8bf600 Fix potion effect type removal (#11778) PaperMC/Paper@188124b Fix totems negating incorrect item (#11776) PaperMC/Paper@a0b3326 refactor registry entry to detach 'delayed' from other meta PaperMC/Paper@cbf630d Move missing import into feature patches to fix pre-features compile PaperMC/Paper@17f649d Fix PlayerTradeEvent visual issue when being cancelled (#11773) PaperMC/Paper@976b0a4 [ci skip] Simplify and update contribution guidelines PaperMC/Paper@63c94c9 [ci skip] Comment out update tasks, update comments PaperMC/Paper@62d4130 [ci skip] Fix Inventory#addItem javadoc mismatch with behaviour (#11782) PaperMC/Paper@bd4c235 Throw during plugin update folder process on failed rename/delete (#11784) PaperMC/Paper@793d361 Fix recipe book items order (#11787) PaperMC/Paper@c768099 Fix tripwires (#11790) PaperMC/Paper@17d76ae Correctly die when cancelling EntityResurrectEvent (#11785) PaperMC/Paper@aa2c52b Fix dropper inventory var PaperMC/Paper@d0d0efe Partially revert 083c083188 for Transformation (#11798) PaperMC/Paper@b8a0541 Fix 0 parameter in Player#applyMending (#11802) PaperMC/Paper@9e2d39c Fix double chest identification (#11812) PaperMC/Paper@321d17c [ci skip] Only build PRs on correct label (#11811) PaperMC/Paper@d568e17 Port basic lookAt methods from Player to Entity (#11775) PaperMC/Paper@25cc3d8 Fix EnchantmentView#setOffers length precondition being flipped (#11818) PaperMC/Paper@763b32d Fix framed maps looping through all players in world (#11819) PaperMC/Paper@946314f Remove disableTeleportationSuffocationCheck config (#11822) PaperMC/Paper@140577b Fix broken field rename compat for instrument "feel_goat_horn" (#11824) PaperMC/Paper@a07cec1 Add effective name to ItemStack (#11770) PaperMC/Paper@3a479ea Add Registry#getTags (#11795) PaperMC/Paper@d85d318 Fix NullPointerException in PlayerInteractEvent#getClickedPosition (#11827) PaperMC/Paper@3331805 Deprecate #furnace_materials item tag (#11823) PaperMC/Paper@c9a904e Fix keepalive logic resetting counter PaperMC/Paper@a8f850a temporarily revert OldEnum toString changes (#11829) PaperMC/Paper@a14c06b fix annotation test for null marked inner classes (#11826) PaperMC/Paper@f51aa3e Fix BlockRedstoneEvent for tripwire hooks (#11791) PaperMC/Paper@af2812f For new registry values, allow copying from existing (#11796) PaperMC/Paper@0efd301 Fix suggestions for ResourceLocation (#11830) PaperMC/Paper@aac246a Expand on entity serialization API (#11807) PaperMC/Paper@953f6f9 Banner pattern registry modification (#11803) PaperMC/Paper@a5b8df6 add tagkey file for entity type (#11832) PaperMC/Paper@c530c39 More var name fixes PaperMC/Paper@2b73d19 More var name fixes PaperMC/Paper@326c687 Fix whack diff from last commit PaperMC/Paper@13c94e4 Updated adventure to 4.18.0 (#11809) PaperMC/Paper@ca8709b Fix more incorrect array nullability annotations (#11836) PaperMC/Paper@e10dcbf [ci skip] Improve build workflow conditions (#11842) PaperMC/Paper@b4051db Handle disabled vanilla registry values correctly (#11781) PaperMC/Paper@4b89390 Fix contextual map renderer memory leak (#11841) PaperMC/Paper@5c7537c Add DamageType RegistryEvent (#11783) PaperMC/Paper@33411ec Properly remove UnsafeValues#getDamageEffect PaperMC/Paper@0629524 Directly build Art (#11813) PaperMC/Paper@e0abc5f Do not spawn fire for visual lightning (#11845) PaperMC/Paper@dac977a Correctly force particles (#11850) PaperMC/Paper@feb8756 Add datapack registration lifecycle event (#11804) PaperMC/Paper@18da1ae [ci skip] update DiscoveredDatapack javadoc PaperMC/Paper@93a3df0 Extend HumanEntity#dropItem API (#11810) PaperMC/Paper@287eb52 Use hidden classes for event executors (#11848) PaperMC/Paper@887f3f7 [ci skip] Replace FQN with import in EventExecutor PaperMC/Paper@d00344a update jb annotations to 26.0.1 (#11860) PaperMC/Paper@60edd61 [ci skip] Fix spelling of ignition's word into javadoc (#11864) PaperMC/Paper@a81990e Update mache, fixes dev bundle use with Java 23 PaperMC/Paper@1e4669e [ci skip] Clarify loot table behavior when set to null. (#11861) PaperMC/Paper@9298f59 Update paperweight to 2.0.0-beta.10 PaperMC/Paper@bdfad1c Add sendRich/PlainMessage methods to Server (#11872) PaperMC/Paper@1dd52be Use playerlist whitelist status instead of properties PaperMC/Paper@83995d7 Fix settings changes not being saved (#11881) PaperMC/Paper@daddcf6 Fix JOML javadoc URL (#11883) PaperMC/Paper@edde726 [ci skip] Add missing Nullable annotations for NMS DamageSource (#11875) PaperMC/Paper@4106da7 Fix retain passengers teleport flag (#11858) PaperMC/Paper@6ab1352 Improve performance of PoiCompetitorScan by unrolling stream (#11871) PaperMC/Paper@33a590b Fix TargetHitEvent#getSignalStrength() post-hard-fork (#11897) PaperMC/Paper@f367f10 Add rotation helpers to Location (#11908) PaperMC/Paper@9f90b4c Fix ItemDamageEvents called for 0 damage (#11900) PaperMC/Paper@486e521 Re-add droped MapLike spam fix (#11917) PaperMC/Paper@3375570 Fix MapCanvas#drawImage (#11865) PaperMC/Paper@49d15f6 Fix DiscoveredDatapack#getSource (#11928) PaperMC/Paper@b34ae4f Fix wolves ignoring result of damage event (#11932) PaperMC/Paper@efdcaa2 Fix removing the "LootTable" nbt tag from Block entities (#11929) PaperMC/Paper@55f3f28 Reimplement ItemStack Obfuscation (#11817) PaperMC/Paper@08fc33c Update CustomTimingsHandler Nag Message (#11923) PaperMC/Paper@5e14504 [ci skip] Add missing deprecated docs for isEnabledByFeature (#11938) PaperMC/Paper@4007171 Correct obfuscation of oversized items (#11944) PaperMC/Paper@1b38f28 Fix reading recipes used on furnace (#11947) PaperMC/Paper@b03d39b [ci skip] Update paperweight to 2.0.0-beta.13 PaperMC/Paper@6316a50 Make CraftServer#isPrimaryThread use TickThread check PaperMC/Paper@ea7b961 Fix MapItem incorectly fetching water biomes on treasure maps (#11936) PaperMC/Paper@b242f1e Prevent day cycle on the client when using fixed time (#11924) PaperMC/Paper@3e42518 Fix snow accumulating in custom biomes without precipitation (#11854) PaperMC/Paper@3d9ecc4 Log thread check parameters when the thread check fails PaperMC/Paper@3ad3fbc Update to Concurrentutil 0.0.3 PaperMC/Paper@79ffcd1 Fix vanilla parity on enchantable items with no targets (#11896) PaperMC/Paper@19ddbef Fix InventoryAction wrong for Bundles (#11902) PaperMC/Paper@ac3aaa2 Don't use delayed registries in impl anywhere (#11918) PaperMC/Paper@775002a [ci skip] Remove nullable from SyncedEntityData#packAll (#11949) PaperMC/Paper@c949225 MenuType API addition InventoryView Builders (#11816) PaperMC/Paper@c2f24e1 Feat: Add 'with' methods to CommandSourceStack (#11868) PaperMC/Paper@ed75b0e Disallow calling JavaPlugin#getCommand during onEnable for Paper plugins (#11914) PaperMC/Paper@08ac057 Rename getPotentialBedLocation to getPotentialRespawnLocation (#11950) PaperMC/Paper@9746d73 Add back known movement check PaperMC/Paper@e5542cf Hide unnecessary decorated pot data (#11957) PaperMC/Paper@eb4db79 Make CommandSourceStack respect hidden players (#11898) PaperMC/Paper@76617dd Add EntityEffectTickEvent (#11838) PaperMC/Paper@86c6308 Fix locate command dist overflow/underflow (#11956) PaperMC/Paper@2ea6aee Deprecate Turtle#isDigging (#11959) PaperMC/Paper@ad74b67 Fix client visual desync if cooldown events are cancelled (#11892) PaperMC/Paper@50c2c59 Fix unstable Suggestion comparison by sorting int suggestions before text ones (#11941) PaperMC/Paper@3709150 Expose all possible block data states (#11958) PaperMC/Paper@5e23d28 Remove entity tag selector tag completion fix (#11964) PaperMC/Paper@ab1b312 Call PlayerItemDamageEvent for tridents (#11899) PaperMC/Paper@1bb3677 Remove deprecation from EntityRemoveEvent (#11961) PaperMC/Paper@d69981b [ci skip] Remove redundant build configuration PaperMC/Paper@6fde26d remove .paperassetsroot PaperMC/Paper@fe75eaf split direct holder support up from ctor accepting Holder --- .editorconfig | 13 +++++-- build.gradle.kts | 2 +- gradle.properties | 2 +- purpur-api/build.gradle.kts.patch | 6 +-- .../features/0002-Purpur-config-files.patch | 4 +- .../java/co/aikar/timings/Timings.java.patch | 5 +++ .../main/java/org/bukkit/Bukkit.java.patch | 2 +- .../main/java/org/bukkit/Material.java.patch | 2 +- .../main/java/org/bukkit/Server.java.patch | 2 +- .../src/main/java/org/bukkit/World.java.patch | 2 +- .../java/org/bukkit/entity/Entity.java.patch | 2 +- .../java/org/bukkit/entity/Player.java.patch | 2 +- .../java/org/bukkit/entity/Wolf.java.patch | 4 +- .../org/bukkit/inventory/ItemStack.java.patch | 4 +- purpur-server/build.gradle.kts.patch | 37 ++++++++++--------- .../features/0001-Ridables.patch | 26 ++++++------- .../0003-Barrels-and-enderchests-6-rows.patch | 20 +++++----- .../0009-Implement-elytra-settings.patch | 6 +-- ...iefing-bypass-to-everything-affected.patch | 8 ++-- ...019-API-for-any-mob-to-burn-daylight.patch | 6 +-- .../commands/CommandSourceStack.java.patch | 4 +- .../server/MinecraftServer.java.patch | 2 +- .../server/level/ServerPlayer.java.patch | 2 +- .../ServerCommonPacketListenerImpl.java.patch | 4 +- .../damagesource/DamageSource.java.patch | 4 +- .../minecraft/world/entity/Entity.java.patch | 16 ++++---- .../world/entity/LivingEntity.java.patch | 12 +++--- .../world/entity/player/Player.java.patch | 6 +-- .../inventory/EnchantmentMenu.java.patch | 2 +- .../minecraft/world/item/ItemStack.java.patch | 2 +- .../world/level/block/BedBlock.java.patch | 18 ++++----- .../world/level/block/BushBlock.java.patch | 2 +- .../world/level/block/ChestBlock.java.patch | 2 +- .../world/level/block/NoteBlock.java.patch | 6 +-- .../block/entity/SignBlockEntity.java.patch | 2 +- .../level/material/WaterFluid.java.patch | 6 +-- .../features/0002-Ridables.patch | 6 +-- ...urable-void-damage-height-and-damage.patch | 10 ++--- ...0005-Add-EntityTeleportHinderedEvent.patch | 12 +++--- ...006-API-for-any-mob-to-burn-daylight.patch | 4 +- .../bukkit/craftbukkit/CraftServer.java.patch | 16 ++++---- .../bukkit/craftbukkit/CraftWorld.java.patch | 2 +- .../craftbukkit/entity/CraftEntity.java.patch | 2 +- .../entity/CraftHumanEntity.java.patch | 2 +- .../craftbukkit/entity/CraftPlayer.java.patch | 6 +-- .../entity/CraftVillager.java.patch | 2 +- .../craftbukkit/entity/CraftWolf.java.patch | 2 +- .../inventory/CraftItemStack.java.patch | 2 +- .../util/CraftMagicNumbers.java.patch | 2 +- .../resources/data/.paperassetsroot.patch | 3 -- 50 files changed, 163 insertions(+), 153 deletions(-) delete mode 100644 purpur-server/paper-patches/files/src/main/resources/data/.paperassetsroot.patch diff --git a/.editorconfig b/.editorconfig index 35f64eb9a..11c88eec2 100644 --- a/.editorconfig +++ b/.editorconfig @@ -29,9 +29,16 @@ ij_java_names_count_to_use_import_on_demand = 999999 ij_java_imports_layout = *,|,$* ij_java_generate_final_locals = true ij_java_generate_final_parameters = true - -[test-plugin/**/*.java] +ij_java_method_parameters_new_line_after_left_paren = true +ij_java_method_parameters_right_paren_on_new_line = true ij_java_use_fq_class_names = false +ij_java_class_names_in_javadoc = 1 -[Purpur-Server/src/main/resources/data/**/*.json] +[purpur-server/src/minecraft/java/**/*.java] +ij_java_use_fq_class_names = true + +[purpur-server/src/minecraft/resources/data/**/*.json] indent_size = 2 + +[paper-api-generator/generated/**/*.java] +ij_java_imports_layout = $*,|,* diff --git a/build.gradle.kts b/build.gradle.kts index 3495a40d0..2c5e648da 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import org.gradle.api.tasks.testing.logging.TestLogEvent plugins { java // TODO java launcher tasks - id("io.papermc.paperweight.patcher") version "2.0.0-beta.8" + id("io.papermc.paperweight.patcher") version "2.0.0-beta.13" } val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/" diff --git a/gradle.properties b/gradle.properties index cb04d40f2..a121c72a3 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = org.purpurmc.purpur version = 1.21.4-R0.1-SNAPSHOT mcVersion = 1.21.4 -paperCommit = 54debf494f467a71c561cf8765c4f21725c99dd8 +paperCommit = fe75eaf09a22a5cc46877edb714274638d3b111f org.gradle.configuration-cache = true #org.gradle.caching = true diff --git a/purpur-api/build.gradle.kts.patch b/purpur-api/build.gradle.kts.patch index d151023fb..3f880d605 100644 --- a/purpur-api/build.gradle.kts.patch +++ b/purpur-api/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-api/build.gradle.kts +++ b/paper-api/build.gradle.kts -@@ -105,6 +_,18 @@ +@@ -103,6 +_,18 @@ main { java { srcDir(generatedApiPath) @@ -19,7 +19,7 @@ } } } -@@ -173,8 +_,10 @@ +@@ -168,8 +_,10 @@ val services = objects.newInstance() tasks.withType { @@ -31,7 +31,7 @@ options.use() options.isDocFilesSubDirs = true options.links( -@@ -212,11 +_,11 @@ +@@ -202,11 +_,11 @@ } // workaround for https://github.com/gradle/gradle/issues/4046 diff --git a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch index 468f17714..e3535a398 100644 --- a/purpur-api/paper-patches/features/0002-Purpur-config-files.patch +++ b/purpur-api/paper-patches/features/0002-Purpur-config-files.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Purpur config files diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index ad816538b30079c62d5e1eb98c6f4b61e12e8d47..f90da51a8d1003a5cba86decbd42470f7f7e9211 100644 +index 365368983a25f7ccbd3c8b7b572a5173a4c868a0..594bcedd823acc87ed429ad8ef17b66e9dc15beb 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2283,6 +2283,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2330,6 +2330,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi } // Paper end diff --git a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch index b8ded8647..beab0b68d 100644 --- a/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/co/aikar/timings/Timings.java.patch @@ -18,3 +18,8 @@ warnedAboutDeprecationOnEnable = true; } } +@@ -322,4 +_,3 @@ + return TimingsManager.getHandler(groupName, name, groupHandler); + } + } +- diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch index 15591c03a..7bdf2cf76 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Bukkit.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Bukkit.java +++ b/src/main/java/org/bukkit/Bukkit.java -@@ -2968,4 +_,133 @@ +@@ -2980,4 +_,133 @@ public static Server.Spigot spigot() { return server.spigot(); } diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch index a00a53147..48bef86e4 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Material.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Material.java +++ b/src/main/java/org/bukkit/Material.java -@@ -5811,4 +_,40 @@ +@@ -5812,4 +_,40 @@ return this.asItemType().getDefaultDataTypes(); } // Paper end - data component API diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch index 1ebbe3fa4..b149d0c27 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/Server.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2607,4 +_,111 @@ +@@ -2654,4 +_,111 @@ */ void allowPausing(@NotNull org.bukkit.plugin.Plugin plugin, boolean value); // Paper end - API to check if the server is sleeping diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch index 76028e4f5..2fb8c1498 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/World.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -4246,6 +_,86 @@ +@@ -4244,6 +_,86 @@ @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch index 91c5c6b8b..2ee29df0c 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Entity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1172,4 +_,59 @@ +@@ -1196,4 +_,59 @@ */ void broadcastHurtAnimation(@NotNull java.util.Collection players); // Paper end - broadcast hurt animation diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch index 1bce37015..9887a20d8 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Player.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -3911,4 +_,123 @@ +@@ -3892,4 +_,123 @@ */ void sendEntityEffect(org.bukkit.@NotNull EntityEffect effect, @NotNull Entity target); // Paper end - entity effect API diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch index b41648d8d..f3ac2ef4a 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/entity/Wolf.java.patch @@ -1,7 +1,7 @@ --- a/src/main/java/org/bukkit/entity/Wolf.java +++ b/src/main/java/org/bukkit/entity/Wolf.java -@@ -108,4 +_,20 @@ - return Registry.WOLF_VARIANT.getOrThrow(NamespacedKey.minecraft(key)); +@@ -110,4 +_,20 @@ + return RegistryAccess.registryAccess().getRegistry(RegistryKey.WOLF_VARIANT).getOrThrow(NamespacedKey.minecraft(key)); } } + diff --git a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch index 1bbbc6821..02c8dfc89 100644 --- a/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch +++ b/purpur-api/paper-patches/files/src/main/java/org/bukkit/inventory/ItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/inventory/ItemStack.java +++ b/src/main/java/org/bukkit/inventory/ItemStack.java -@@ -19,6 +_,13 @@ +@@ -21,6 +_,13 @@ import org.bukkit.material.MaterialData; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -14,7 +14,7 @@ /** * Represents a stack of items. -@@ -1318,4 +_,482 @@ +@@ -1329,4 +_,482 @@ return this.craftDelegate.matchesWithoutData(item, excludeTypes, ignoreCount); } // Paper end - data component API diff --git a/purpur-server/build.gradle.kts.patch b/purpur-server/build.gradle.kts.patch index 96c0092f6..04c855e1a 100644 --- a/purpur-server/build.gradle.kts.patch +++ b/purpur-server/build.gradle.kts.patch @@ -1,6 +1,6 @@ --- a/paper-server/build.gradle.kts +++ b/paper-server/build.gradle.kts -@@ -20,8 +_,19 @@ +@@ -21,6 +_,20 @@ // macheOldPath = file("F:\\Projects\\PaperTooling\\mache\\versions\\1.21.4\\src\\main\\java") // gitFilePatches = true @@ -12,16 +12,16 @@ + outputDir = rootDirectory.dir("paper-server") + } + } -+ + activeFork = purpur + - paper { -- reobfMappingsPatch = layout.projectDirectory.file("../build-data/reobf-mappings-patch.tiny") ++ paper { + paperServerDir = upstreamsDirectory().map { it.dir("paper/paper-server") } - } - ++ } ++ spigot { -@@ -104,7 +_,19 @@ + buildDataRef = "3edaf46ec1eed4115ce1b18d2846cded42577e42" + packageVersion = "v1_21_R3" // also needs to be updated in MappingEnvironment +@@ -101,7 +_,20 @@ } } @@ -36,24 +36,25 @@ + resources { srcDir("../paper-server/src/test/resources") } + } +} ++ +val log4jPlugins = sourceSets.create("log4jPlugins") { + java { srcDir("../paper-server/src/log4jPlugins/java") } +} configurations.named(log4jPlugins.compileClasspathConfigurationName) { extendsFrom(configurations.compileClasspath.get()) } -@@ -123,7 +_,7 @@ - // Paper end - configure mockito agent that is needed in newer java versions +@@ -119,7 +_,7 @@ + } dependencies { - implementation(project(":paper-api")) + implementation(project(":purpur-api")) - implementation("ca.spottedleaf:concurrentutil:0.0.2") // Paper - Add ConcurrentUtil dependency - // Paper start + implementation("ca.spottedleaf:concurrentutil:0.0.3") implementation("org.jline:jline-terminal-ffm:3.27.1") // use ffm on java 22+ -@@ -155,6 +_,10 @@ - } - // Paper end - Use Velocity cipher + implementation("org.jline:jline-terminal-jni:3.27.1") // fall back to jni on java 21 +@@ -149,6 +_,10 @@ + runtimeOnly("com.mysql:mysql-connector-j:9.1.0") + runtimeOnly("com.lmax:disruptor:3.4.4") + implementation("org.mozilla:rhino-runtime:1.7.14") // Purpur + implementation("org.mozilla:rhino-engine:1.7.14") // Purpur @@ -62,14 +63,14 @@ runtimeOnly("org.apache.maven:maven-resolver-provider:3.9.6") runtimeOnly("org.apache.maven.resolver:maven-resolver-connector-basic:1.9.18") runtimeOnly("org.apache.maven.resolver:maven-resolver-transport-http:1.9.18") -@@ -193,14 +_,14 @@ - val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() // Paper +@@ -188,14 +_,14 @@ + val gitBranch = git.exec(providers, "rev-parse", "--abbrev-ref", "HEAD").get().trim() attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "Paper", + "Implementation-Title" to "Purpur", // Purpur "Implementation-Version" to implementationVersion, - "Implementation-Vendor" to date, // Paper + "Implementation-Vendor" to date, - "Specification-Title" to "Paper", + "Specification-Title" to "Purpur", // Purpur "Specification-Version" to project.version, @@ -81,4 +82,4 @@ + "Brand-Name" to "Purpur", // Purpur "Build-Number" to (build ?: ""), "Build-Time" to buildTime.toString(), - "Git-Branch" to gitBranch, // Paper + "Git-Branch" to gitBranch, diff --git a/purpur-server/minecraft-patches/features/0001-Ridables.patch b/purpur-server/minecraft-patches/features/0001-Ridables.patch index 5dfd66d5a..78c7aab62 100644 --- a/purpur-server/minecraft-patches/features/0001-Ridables.patch +++ b/purpur-server/minecraft-patches/features/0001-Ridables.patch @@ -18,10 +18,10 @@ index 29d402620d2e1cbed94f941f933ae8eb5d786e7f..ec0998369158286fccb38c8e10c3cfa2 public boolean isLocalPlayer() { return true; diff --git a/net/minecraft/server/MinecraftServer.java b/net/minecraft/server/MinecraftServer.java -index 6a8aa33bbfbf1cd5afcd40abede3176975e8fae9..2bd5a295be2500f198230a62f48900b51038d22b 100644 +index 121b57c7f5345f5d8884eaa1d36dac79fb7d42ef..9afbfe9bf493e09ca1963e8956ab7573964479b4 100644 --- a/net/minecraft/server/MinecraftServer.java +++ b/net/minecraft/server/MinecraftServer.java -@@ -1744,6 +1744,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper - Add EntityMoveEvent serverLevel.updateLagCompensationTick(); // Paper - lag compensation net.minecraft.world.level.block.entity.HopperBlockEntity.skipHopperEvents = serverLevel.paperConfig().hopper.disableMoveEvent || org.bukkit.event.inventory.InventoryMoveItemEvent.getHandlerList().getRegisteredListeners().length == 0; // Paper - Perf: Optimize Hoppers @@ -42,7 +42,7 @@ index 345e5c7aff07544e24f2e91d71585b06392d9927..fd84a5aac26bbf2de2c2fa8bb5bc76bc public LevelChunk getChunkIfLoaded(int x, int z) { return this.chunkSource.getChunkAtIfLoadedImmediately(x, z); // Paper - Use getChunkIfLoadedImmediately diff --git a/net/minecraft/server/level/ServerPlayer.java b/net/minecraft/server/level/ServerPlayer.java -index 30f36d3beb477e3e37b4b2ca27cd84a58f1e1cc2..580818b9d2f992dd33b4831dbc612ba28c1bd725 100644 +index bb8f89d9a5f0bb69baea6ba241cc391b43f2314e..e4a27ef7c201b2f8c9fbb12a7dbcf704b9a92f2f 100644 --- a/net/minecraft/server/level/ServerPlayer.java +++ b/net/minecraft/server/level/ServerPlayer.java @@ -848,6 +848,15 @@ public class ServerPlayer extends Player implements ca.spottedleaf.moonrise.patc @@ -62,7 +62,7 @@ index 30f36d3beb477e3e37b4b2ca27cd84a58f1e1cc2..580818b9d2f992dd33b4831dbc612ba2 private void updatePlayerAttributes() { diff --git a/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 4b1c9dc3f14973f9a1403d6cc407a31017f9a468..4dc6531bca6bd91d4f04e0559d21ce6ba07c05df 100644 +index d0dc5d6f25b7514bc3c65bbef5b40703f6d0eed7..f524f1de2093e0a3bd2f3cf8806232b2211d0583 100644 --- a/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2828,6 +2828,8 @@ public class ServerGamePacketListenerImpl @@ -75,10 +75,10 @@ index 4b1c9dc3f14973f9a1403d6cc407a31017f9a468..4dc6531bca6bd91d4f04e0559d21ce6b if ((target instanceof Bucketable && target instanceof LivingEntity && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { target.resendPossiblyDesyncedEntityData(ServerGamePacketListenerImpl.this.player); // Paper - The entire mob gets deleted, so resend it diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b7344dcf3 100644 +index 474e5b8163e82a76aea8c4402d6acfcd366acaef..e4ee886f33ee63ae740cd89067c8ec81c12f2a62 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java -@@ -3157,6 +3157,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3155,6 +3155,13 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess this.passengers = ImmutableList.copyOf(list); } @@ -92,7 +92,7 @@ index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b this.gameEvent(GameEvent.ENTITY_MOUNT, passenger); } } -@@ -3198,6 +3205,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -3196,6 +3203,14 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return false; } // CraftBukkit end @@ -107,7 +107,7 @@ index a6fdb8bca6e8973392dc4faaed1124fc5f19e762..bc89d1401343d98381603684d5610a3b if (this.passengers.size() == 1 && this.passengers.get(0) == passenger) { this.passengers = ImmutableList.of(); } else { -@@ -5121,4 +5136,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess +@@ -5119,4 +5134,44 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess return ((ServerLevel) this.level).isPositionEntityTicking(this.blockPosition()); } // Paper end - Expose entity id counter @@ -177,7 +177,7 @@ index 95d78dcdb6777df73898694367ee17b1cb76d7a2..d0313fd5368baa53ec511c8c07fc78a1 protected ParticleOptions getInkParticle() { return ParticleTypes.GLOW_SQUID_INK; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e9760070c 100644 +index f41d5ffe83e3cfb4c30d150f8b66f8f2568ae20c..8c2bdb1775f7c4110c5f967b1052eba6a8fcbbfa 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -250,9 +250,9 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -210,7 +210,7 @@ index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e @Override protected void checkFallDamage(double y, boolean onGround, BlockState state, BlockPos pos) { -@@ -3535,8 +3536,10 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3537,8 +3538,10 @@ public abstract class LivingEntity extends Entity implements Attackable { this.pushEntities(); profilerFiller.pop(); // Paper start - Add EntityMoveEvent @@ -223,7 +223,7 @@ index b42390df47688309d8862914d2bfa763fa442d30..e2da1610ccb816acafb8abdbf82efd2e Location from = new Location(this.level().getWorld(), this.xo, this.yo, this.zo, this.yRotO, this.xRotO); Location to = new Location(this.level().getWorld(), this.getX(), this.getY(), this.getZ(), this.getYRot(), this.getXRot()); io.papermc.paper.event.entity.EntityMoveEvent event = new io.papermc.paper.event.entity.EntityMoveEvent(this.getBukkitLivingEntity(), from, to.clone()); -@@ -3546,6 +3549,21 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3548,6 +3551,21 @@ public abstract class LivingEntity extends Entity implements Attackable { this.absMoveTo(event.getTo().getX(), event.getTo().getY(), event.getTo().getZ(), event.getTo().getYaw(), event.getTo().getPitch()); } } @@ -1931,7 +1931,7 @@ index 354ec2b987882d8f40ef4ac5257183d2fda73bb8..98cb91574c8d2bdb6d180256f657ecc6 this.turtle.setDeltaMovement(this.turtle.getDeltaMovement().add(0.0, this.turtle.getSpeed() * d1 * 0.1, 0.0)); } diff --git a/net/minecraft/world/entity/animal/Wolf.java b/net/minecraft/world/entity/animal/Wolf.java -index 2455164db9612c97008e4bca76bdcc2e7bf3d0b1..9c517f7afdf18f3cfa7c30da00066b3757f2dbbf 100644 +index 6cc3893742b443ec84942252910cf444cdbf0c96..90609ff3060322110ece27630de0abae1a6370a8 100644 --- a/net/minecraft/world/entity/animal/Wolf.java +++ b/net/minecraft/world/entity/animal/Wolf.java @@ -180,9 +180,32 @@ public class Wolf extends TamableAnimal implements NeutralMob, VariantHolder i - // Paper start - Fix InventoryOpenEvent cancellation - moved up; +@@ -85,8 +85,8 @@ public class EnderChestBlock extends AbstractChestBlock i enderChestInventory.setActiveChest(enderChestBlockEntity); // Needs to happen before ChestMenu.threeRows as it is required for opening animations if (level instanceof ServerLevel serverLevel && player.openMenu( -- new SimpleMenuProvider((i, inventory, playerx) -> ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE) -+ new SimpleMenuProvider((i, inventory, playerx) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(i, inventory, player, enderChestInventory) : ChestMenu.threeRows(i, inventory, enderChestInventory), CONTAINER_TITLE) // Purpur - Barrels and enderchests 6 rows + new SimpleMenuProvider( +- (containerId, playerInventory, player1) -> ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE +- ) ++ (containerId, playerInventory, player1) -> org.purpurmc.purpur.PurpurConfig.enderChestSixRows ? getEnderChestSixRows(containerId, playerInventory, player, enderChestInventory) : ChestMenu.threeRows(containerId, playerInventory, enderChestInventory), CONTAINER_TITLE ++ ) // Purpur - Barrels and enderchests 6 rows ).isPresent()) { // Paper end - Fix InventoryOpenEvent cancellation - moved up; player.awardStat(Stats.OPEN_ENDERCHEST); -@@ -98,6 +98,35 @@ public class EnderChestBlock extends AbstractChestBlock i +@@ -100,6 +100,35 @@ public class EnderChestBlock extends AbstractChestBlock i } } diff --git a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch index 68fe09597..c3e530309 100644 --- a/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch +++ b/purpur-server/minecraft-patches/features/0009-Implement-elytra-settings.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Implement elytra settings diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index a82b57734afdd5f470db14c8ad953b5a5d1f69bd..f70bf8f32064a8ec33367107cfcc51b7780f5870 100644 +index d1f7da0f4adc4609247c349d7ccdb0e6bba9b8f8..6de5f527c018201d874e06a45c9509fa12125766 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -3593,7 +3593,18 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3595,7 +3595,18 @@ public abstract class LivingEntity extends Entity implements Attackable { if (i1 % 2 == 0) { List list = EquipmentSlot.VALUES.stream().filter(slot -> canGlideUsing(this.getItemBySlot(slot), slot)).toList(); EquipmentSlot equipmentSlot = Util.getRandom(list, this.random); @@ -53,7 +53,7 @@ index 75a9bd205f32b77c5d242cb9fac0f571ce36045a..b03f182c62c699cc222e67c1ae6eadf9 itemInHand.shrink(1); // Moved up from below } else { diff --git a/net/minecraft/world/item/ItemStack.java b/net/minecraft/world/item/ItemStack.java -index ef66c7b03696c2601d1fd0379fa038336ee0bb87..735ede5c5aa4b74639660fb4966101dcf63a2d75 100644 +index c5426585f53a3139dc9d188a73e3a7ff4cb2e492..264b713e8b7c3d5f7d8e1facc90a60349f2cf414 100644 --- a/net/minecraft/world/item/ItemStack.java +++ b/net/minecraft/world/item/ItemStack.java @@ -733,6 +733,14 @@ public final class ItemStack implements DataComponentHolder { diff --git a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch index d4f7ce89a..4e21dcf5d 100644 --- a/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch +++ b/purpur-server/minecraft-patches/features/0016-Add-mobGriefing-bypass-to-everything-affected.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add mobGriefing bypass to everything affected diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index f70bf8f32064a8ec33367107cfcc51b7780f5870..bbf8dce405942b2840028d12f0d80fc0779bc14f 100644 +index 6de5f527c018201d874e06a45c9509fa12125766..2dc588e2d503c16ccd2589ce18abd2ecebbc8e74 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java -@@ -1816,7 +1816,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -1818,7 +1818,7 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel) { boolean var6 = false; if (this.dead && entitySource instanceof WitherBoss) { // Paper @@ -268,10 +268,10 @@ index 4a752ace041228f095af7b1b4878a03c5ed2381f..3e8b5d042eddb817dee2504ff9aa263f org.bukkit.event.entity.ExplosionPrimeEvent event = new org.bukkit.event.entity.ExplosionPrimeEvent((org.bukkit.entity.Explosive) this.getBukkitEntity()); this.level().getCraftServer().getPluginManager().callEvent(event); diff --git a/net/minecraft/world/entity/projectile/Projectile.java b/net/minecraft/world/entity/projectile/Projectile.java -index af71a71ff11b418a43728fd464b1e673d593140f..a7c5896226e57c6dea1bea894c5f23fcb5481fcd 100644 +index ad0bb896d6ea669ce88bfe6490319e8ba7a29001..843f1396a6567672e5e8002d7e48fb18cf39d5de 100644 --- a/net/minecraft/world/entity/projectile/Projectile.java +++ b/net/minecraft/world/entity/projectile/Projectile.java -@@ -451,7 +451,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -454,7 +454,7 @@ public abstract class Projectile extends Entity implements TraceableEntity { @Override public boolean mayInteract(ServerLevel level, BlockPos pos) { Entity owner = this.getOwner(); diff --git a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch index e6d1a519a..7f3efdce0 100644 --- a/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/minecraft-patches/features/0019-API-for-any-mob-to-burn-daylight.patch @@ -6,7 +6,7 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/net/minecraft/world/entity/Entity.java b/net/minecraft/world/entity/Entity.java -index 250676c904f6083edd06a2284307569cd76f0694..f11f3aa49ad40c6efd08274e30573ec19c84c23d 100644 +index e4ee886f33ee63ae740cd89067c8ec81c12f2a62..f61c29abf75443b206f37b90950d6c0e14ea59ff 100644 --- a/net/minecraft/world/entity/Entity.java +++ b/net/minecraft/world/entity/Entity.java @@ -534,6 +534,24 @@ public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess @@ -35,7 +35,7 @@ index 250676c904f6083edd06a2284307569cd76f0694..f11f3aa49ad40c6efd08274e30573ec1 this.type = entityType; this.level = level; diff --git a/net/minecraft/world/entity/LivingEntity.java b/net/minecraft/world/entity/LivingEntity.java -index bbf8dce405942b2840028d12f0d80fc0779bc14f..19a36386efdeb135e17e13153fa5adf0e9a8c925 100644 +index 2dc588e2d503c16ccd2589ce18abd2ecebbc8e74..db5a2227009bc4d655fc781d5850221f36f2d112 100644 --- a/net/minecraft/world/entity/LivingEntity.java +++ b/net/minecraft/world/entity/LivingEntity.java @@ -301,6 +301,7 @@ public abstract class LivingEntity extends Entity implements Attackable { @@ -67,7 +67,7 @@ index bbf8dce405942b2840028d12f0d80fc0779bc14f..19a36386efdeb135e17e13153fa5adf0 } // CraftBukkit start -@@ -3572,6 +3580,32 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -3574,6 +3582,32 @@ public abstract class LivingEntity extends Entity implements Attackable { if (this.level() instanceof ServerLevel serverLevel && this.isSensitiveToWater() && this.isInWaterRainOrBubble()) { this.hurtServer(serverLevel, this.damageSources().drown(), 1.0F); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch index 86f83273f..1a48edcf9 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/commands/CommandSourceStack.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/commands/CommandSourceStack.java +++ b/net/minecraft/commands/CommandSourceStack.java -@@ -431,6 +_,19 @@ +@@ -455,6 +_,19 @@ } // CraftBukkit end @@ -20,7 +20,7 @@ public Vec3 getPosition() { return this.worldPosition; } -@@ -516,6 +_,30 @@ +@@ -540,6 +_,30 @@ } } } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch index c4362fa13..a3769afc7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/MinecraftServer.java.patch @@ -122,7 +122,7 @@ continue; } ServerPlayer entityplayer = (ServerPlayer) entityhuman; -@@ -1854,7 +_,7 @@ +@@ -1855,7 +_,7 @@ @DontObfuscate public String getServerModName() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch index e8a5043bf..fc98a0e35 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/level/ServerPlayer.java.patch @@ -217,7 +217,7 @@ public ServerStatsCounter getStats() { return this.stats; -@@ -3077,4 +_,56 @@ +@@ -3078,4 +_,56 @@ return (org.bukkit.craftbukkit.entity.CraftPlayer) super.getBukkitEntity(); } // CraftBukkit end diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch index 1532d11a4..4405b9245 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/server/network/ServerCommonPacketListenerImpl.java.patch @@ -68,5 +68,5 @@ + // Purpur end - Alternative Keepalive Handling + if (!this.isSingleplayerOwner() && elapsedTime >= 15000L) { // use vanilla's 15000L between keep alive packets - if (this.keepAlivePending && !this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected - // Paper end - give clients a longer time to respond to pings as per pre 1.12.2 timings + if (this.keepAlivePending) { + if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch index b354cea7b..4fe0b6a16 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/damagesource/DamageSource.java.patch @@ -37,7 +37,7 @@ // Paper start - fix DamageSource API @Nullable public Entity getCustomEventDamager() { -@@ -116,6 +_,8 @@ +@@ -118,6 +_,8 @@ damageSource.sweep = this.isSweep(); damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); @@ -46,7 +46,7 @@ return damageSource; } // CraftBukkit end -@@ -182,11 +_,20 @@ +@@ -184,11 +_,20 @@ } else { Component component = this.causingEntity == null ? this.directEntity.getDisplayName() : this.causingEntity.getDisplayName(); ItemStack itemStack = this.causingEntity instanceof LivingEntity livingEntity1 ? livingEntity1.getMainHandItem() : ItemStack.EMPTY; diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch index 224dceb45..d8e53c8f7 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/Entity.java.patch @@ -88,7 +88,7 @@ if (this.getVehicle() instanceof AbstractBoat abstractBoat && !abstractBoat.isUnderWater()) { this.wasTouchingWater = false; } else if (this.updateFluidHeightAndDoFluidPushing(FluidTags.WATER, 0.014)) { -@@ -2532,6 +_,13 @@ +@@ -2525,6 +_,13 @@ compound.putBoolean("Paper.FreezeLock", true); } // Paper end @@ -102,7 +102,7 @@ return compound; } catch (Throwable var9) { CrashReport crashReport = CrashReport.forThrowable(var9, "Saving entity NBT"); -@@ -2681,6 +_,13 @@ +@@ -2674,6 +_,13 @@ freezeLocked = compound.getBoolean("Paper.FreezeLock"); } // Paper end @@ -116,7 +116,7 @@ } catch (Throwable var17) { CrashReport crashReport = CrashReport.forThrowable(var17, "Loading entity NBT"); CrashReportCategory crashReportCategory = crashReport.addCategory("Entity being loaded"); -@@ -2922,6 +_,7 @@ +@@ -2920,6 +_,7 @@ if (this.isAlive() && this instanceof Leashable leashable) { if (leashable.getLeashHolder() == player) { if (!this.level().isClientSide()) { @@ -124,7 +124,7 @@ // CraftBukkit start - fire PlayerUnleashEntityEvent // Paper start - Expand EntityUnleashEvent org.bukkit.event.player.PlayerUnleashEntityEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callPlayerUnleashEntityEvent(this, player, hand, !player.hasInfiniteMaterials()); -@@ -3247,15 +_,18 @@ +@@ -3245,15 +_,18 @@ return Vec3.directionFromRotation(this.getRotationVector()); } @@ -144,7 +144,7 @@ } } } -@@ -3460,7 +_,7 @@ +@@ -3458,7 +_,7 @@ } public int getMaxAirSupply() { @@ -153,7 +153,7 @@ } public int getAirSupply() { -@@ -3955,7 +_,7 @@ +@@ -3953,7 +_,7 @@ // CraftBukkit end public boolean canUsePortal(boolean allowPassengers) { @@ -162,7 +162,7 @@ } public boolean canTeleport(Level fromLevel, Level toLevel) { -@@ -4487,6 +_,12 @@ +@@ -4485,6 +_,12 @@ return Mth.lerp(partialTick, this.yRotO, this.yRot); } @@ -175,7 +175,7 @@ // Paper start - optimise collisions public boolean updateFluidHeightAndDoFluidPushing(final TagKey fluid, final double flowScale) { if (this.touchingUnloadedChunk()) { -@@ -4885,7 +_,7 @@ +@@ -4883,7 +_,7 @@ } public float maxUpStep() { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch index cb68f1978..bf89dba4b 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/LivingEntity.java.patch @@ -135,10 +135,10 @@ + } + // Purpur end - Totems work in inventory + - org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; - EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); + final org.bukkit.inventory.EquipmentSlot handSlot = (hand != null) ? org.bukkit.craftbukkit.CraftEquipmentSlot.getHand(hand) : null; + final EntityResurrectEvent event = new EntityResurrectEvent((org.bukkit.entity.LivingEntity) this.getBukkitEntity(), handSlot); event.setCancelled(itemStack == null); -@@ -1788,6 +_,7 @@ +@@ -1790,6 +_,7 @@ boolean flag = this.lastHurtByPlayerTime > 0; this.dropEquipment(level); // CraftBukkit - from below if (this.shouldDropLoot() && level.getGameRules().getBoolean(GameRules.RULE_DOMOBLOOT)) { @@ -146,7 +146,7 @@ this.dropFromLootTable(level, damageSource, flag); // Paper start final boolean prev = this.clearEquipmentSlots; -@@ -1796,6 +_,7 @@ +@@ -1798,6 +_,7 @@ // Paper end this.dropCustomDeathLoot(level, damageSource, flag); this.clearEquipmentSlots = prev; // Paper @@ -154,7 +154,7 @@ } // CraftBukkit start - Call death event // Paper start - call advancement triggers with correct entity equipment -@@ -2987,6 +_,7 @@ +@@ -2989,6 +_,7 @@ float f = (float)(d * 10.0 - 3.0); if (f > 0.0F) { this.playSound(this.getFallDamageSound((int)f), 1.0F, 1.0F); @@ -162,7 +162,7 @@ this.hurt(this.damageSources().flyIntoWall(), f); } } -@@ -4396,6 +_,12 @@ +@@ -4398,6 +_,12 @@ ? slot == EquipmentSlot.MAINHAND && this.canUseSlot(EquipmentSlot.MAINHAND) : slot == equippable.slot() && this.canUseSlot(equippable.slot()) && equippable.canBeEquippedBy(this.getType()); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch index 7926c7d9f..9cd3b72ab 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/entity/player/Player.java.patch @@ -61,7 +61,7 @@ list.add(entity); } else if (!entity.isRemoved()) { this.touch(entity); -@@ -1264,7 +_,7 @@ +@@ -1269,7 +_,7 @@ flag2 = flag2 && !this.level().paperConfig().entities.behavior.disablePlayerCrits; // Paper - Toggleable player crits if (flag2) { damageSource = damageSource.critical(true); // Paper start - critical damage API @@ -70,7 +70,7 @@ } float f2 = f + f1; -@@ -1877,7 +_,23 @@ +@@ -1882,7 +_,23 @@ @Override protected int getBaseExperienceReward(ServerLevel level) { @@ -95,7 +95,7 @@ } @Override -@@ -1960,6 +_,13 @@ +@@ -1965,6 +_,13 @@ public boolean canUseSlot(EquipmentSlot slot) { return slot != EquipmentSlot.BODY; } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch index c1174ba5e..8f9902689 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/inventory/EnchantmentMenu.java.patch @@ -40,7 +40,7 @@ this.addStandardInventorySlots(playerInventory, 8, 84); this.addDataSlot(DataSlot.shared(this.costs, 0)); this.addDataSlot(DataSlot.shared(this.costs, 1)); -@@ -292,7 +_,7 @@ +@@ -294,7 +_,7 @@ @Override public void removed(Player player) { super.removed(player); diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch index dc98b116e..d8595672c 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/item/ItemStack.java.patch @@ -43,7 +43,7 @@ public int getDamageValue() { return Mth.clamp(this.getOrDefault(DataComponents.DAMAGE, Integer.valueOf(0)), 0, this.getMaxDamage()); } -@@ -1232,6 +_,12 @@ +@@ -1251,6 +_,12 @@ public boolean isEnchanted() { return !this.getOrDefault(DataComponents.ENCHANTMENTS, ItemEnchantments.EMPTY).isEmpty(); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch index 0f14c15fe..69cb91158 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BedBlock.java.patch @@ -9,16 +9,16 @@ return InteractionResult.SUCCESS_SERVER; } else if (state.getValue(OCCUPIED)) { if (!BedBlock.canSetSpawn(level)) return this.explodeBed(state, level, pos); // Paper - check explode first -@@ -152,7 +_,7 @@ +@@ -148,7 +_,7 @@ + } - Vec3 vec3d = blockposition.getCenter(); - -- world.explode(null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), null, vec3d, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state -+ if (world.purpurConfig.bedExplode) world.explode(null, world.damageSources().badRespawnPointExplosion(vec3d, blockState), null, vec3d, (float) world.purpurConfig.bedExplosionPower, world.purpurConfig.bedExplosionFire, world.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options - return InteractionResult.SUCCESS; - } - } -@@ -175,7 +_,7 @@ + Vec3 center = pos.getCenter(); +- level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, 5.0F, true, Level.ExplosionInteraction.BLOCK); // CraftBukkit - add state ++ if (level.purpurConfig.bedExplode) level.explode(null, level.damageSources().badRespawnPointExplosion(center, blockState), null, center, (float) level.purpurConfig.bedExplosionPower, level.purpurConfig.bedExplosionFire, level.purpurConfig.bedExplosionEffect); // CraftBukkit - add state // Purpur - Implement bed explosion options + return InteractionResult.SUCCESS_SERVER; + } + // CraftBukkit end +@@ -169,7 +_,7 @@ @Override public void fallOn(Level level, BlockState state, BlockPos pos, Entity entity, float fallDistance) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch index fc893f1b7..b166eb72a 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/BushBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/BushBlock.java +++ b/net/minecraft/world/level/block/BushBlock.java -@@ -62,4 +_,24 @@ +@@ -61,4 +_,24 @@ protected boolean isPathfindable(BlockState state, PathComputationType pathComputationType) { return pathComputationType == PathComputationType.AIR && !this.hasCollision || super.isPathfindable(state, pathComputationType); } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch index ecdef0db4..c2e63ab56 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/ChestBlock.java.patch @@ -1,6 +1,6 @@ --- a/net/minecraft/world/level/block/ChestBlock.java +++ b/net/minecraft/world/level/block/ChestBlock.java -@@ -361,6 +_,7 @@ +@@ -357,6 +_,7 @@ } public static boolean isBlockedChestByBlock(BlockGetter level, BlockPos pos) { diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch index aac0b0985..b9260673f 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/NoteBlock.java.patch @@ -6,6 +6,6 @@ private void playNote(@Nullable Entity entity, BlockState state, Level level, BlockPos pos) { - if (state.getValue(INSTRUMENT).worksAboveNoteBlock() || level.getBlockState(pos.above()).isAir()) { + if (level.purpurConfig.noteBlockIgnoreAbove || state.getValue(INSTRUMENT).worksAboveNoteBlock() || level.getBlockState(pos.above()).isAir()) { // Purpur - Config to allow Note Block sounds when blocked - // CraftBukkit start - // org.bukkit.event.block.NotePlayEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callNotePlayEvent(world, pos, state.getValue(NoteBlock.INSTRUMENT), state.getValue(NoteBlock.NOTE)); - // if (event.isCancelled()) { + level.blockEvent(pos, this, 0, 0); + level.gameEvent(entity, GameEvent.NOTE_BLOCK_PLAY, pos); + } diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch index db6bfc0bf..96784944d 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/block/entity/SignBlockEntity.java.patch @@ -37,7 +37,7 @@ } @@ -310,6 +_,28 @@ // CraftBukkit - this - return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel) world, 2, string, component, world.getServer(), player); // Paper - Fix commands from signs not firing command events + return new CommandSourceStack(commandSource, Vec3.atCenterOf(pos), Vec2.ZERO, (ServerLevel)level, 2, string, component, level.getServer(), player); // Paper - Fix commands from signs not firing command events } + + // Purpur start - Signs allow color codes diff --git a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch index a4051ef49..88d21ec4e 100644 --- a/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch +++ b/purpur-server/minecraft-patches/sources/net/minecraft/world/level/material/WaterFluid.java.patch @@ -1,17 +1,15 @@ --- a/net/minecraft/world/level/material/WaterFluid.java +++ b/net/minecraft/world/level/material/WaterFluid.java -@@ -74,6 +_,14 @@ +@@ -74,6 +_,12 @@ protected boolean canConvertToSource(ServerLevel level) { return level.getGameRules().getBoolean(GameRules.RULE_WATER_SOURCE_CONVERSION); } -+ + // Purpur start - Implement infinite liquids + @Override + protected int getRequiredSources(Level level) { + return level.purpurConfig.waterInfiniteRequiredSources; + } + // Purpur end - Implement infinite liquids -+ // Paper start - Add BlockBreakBlockEvent @Override - protected void beforeDestroyingBlock(LevelAccessor world, BlockPos pos, BlockState state, BlockPos source) { + protected void beforeDestroyingBlock(LevelAccessor level, BlockPos pos, BlockState state, BlockPos source) { diff --git a/purpur-server/paper-patches/features/0002-Ridables.patch b/purpur-server/paper-patches/features/0002-Ridables.patch index ec1fe92b1..c461807c4 100644 --- a/purpur-server/paper-patches/features/0002-Ridables.patch +++ b/purpur-server/paper-patches/features/0002-Ridables.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Ridables diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index de89c7c9388ba9202d075aff60a5e5d0696ae13d..48a2800004c8d5be6b672af849c7a93658e24d7a 100644 +index 03ff6e062f92d0405dcf10bd35c6ba2fa553b8c0..4e584c69e3f13e7e441dc8a69d57287fc349841d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -1318,4 +1318,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1344,4 +1344,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } } // Paper end - broadcast hurt animation @@ -37,7 +37,7 @@ index de89c7c9388ba9202d075aff60a5e5d0696ae13d..48a2800004c8d5be6b672af849c7a936 + // Purpur end - Ridables } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 471752b8f05e9496e6b25efa8412377e937ba1c4..d52d41d8c56e017f95914da19b05c3d79f8f1640 100644 +index 1bb9a0bb4b1b898c9359d0095d9413a46b5e7630..1b7fdbecf9c28732d5196236980e87fa737a0769 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -602,6 +602,15 @@ public class CraftEventFactory { diff --git a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch index 8ae983590..700ad9f28 100644 --- a/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch +++ b/purpur-server/paper-patches/features/0004-Configurable-void-damage-height-and-damage.patch @@ -7,10 +7,10 @@ temporarily migrate to paper's config drop patch on the next minecraft release diff --git a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -index 098ab351de4f84cdc943ebe855dd0022174e1e67..9f87f3da8e3f8cb16ea8f04cc233e143b174a709 100644 +index e48fa405d92fab221fa8331b65c8f324e801d439..e319d6337811051de478d584a37015c450960701 100644 --- a/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java +++ b/src/main/java/io/papermc/paper/configuration/PaperConfigurations.java -@@ -263,6 +263,7 @@ public class PaperConfigurations extends Configurations. diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 48a2800004c8d5be6b672af849c7a93658e24d7a..f6c8a08fd4f0329357156085348d6b9141d18fdb 100644 +index 4e584c69e3f13e7e441dc8a69d57287fc349841d..762cd2f3a18bcb4039f8d232f1175aaac4ef623d 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -258,6 +258,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { - boolean ignorePassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); +@@ -260,6 +260,7 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { + boolean retainPassengers = flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS); // Don't allow teleporting between worlds while keeping passengers if (flagSet.contains(io.papermc.paper.entity.TeleportFlag.EntityState.RETAIN_PASSENGERS) && this.entity.isVehicle() && location.getWorld() != this.getWorld()) { + if (!new org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent(entity.getBukkitEntity(), org.purpurmc.purpur.event.entity.EntityTeleportHinderedEvent.Reason.IS_VEHICLE, cause).callEvent()) // Purpur - Add EntityTeleportHinderedEvent @@ -29,10 +29,10 @@ index 48a2800004c8d5be6b672af849c7a93658e24d7a..f6c8a08fd4f0329357156085348d6b91 } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index b61e994e90f9ccc3e24cb916dd83a0af46ecf39f..614ebecdfe5838af5b2bf4a2d9f7ba26698a00f7 100644 +index da365651d67f584547217701762564d74e09ad5d..9fbbdc9664353fd2be8eae112e5cfe8880d51d08 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -1449,6 +1449,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1431,6 +1431,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { // Paper start - Teleport passenger API // Don't allow teleporting between worlds while keeping passengers if (ignorePassengers && entity.isVehicle() && location.getWorld() != this.getWorld()) { @@ -40,7 +40,7 @@ index b61e994e90f9ccc3e24cb916dd83a0af46ecf39f..614ebecdfe5838af5b2bf4a2d9f7ba26 return false; } -@@ -1470,6 +1471,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -1452,6 +1453,7 @@ public class CraftPlayer extends CraftHumanEntity implements Player { } if (entity.isVehicle() && !ignorePassengers) { // Paper - Teleport API diff --git a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch index b8f193bf6..ad8c5190d 100644 --- a/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch +++ b/purpur-server/paper-patches/features/0006-API-for-any-mob-to-burn-daylight.patch @@ -6,10 +6,10 @@ Subject: [PATCH] API for any mob to burn daylight Co-authored by: Encode42 diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index f6c8a08fd4f0329357156085348d6b9141d18fdb..359fb91294b3b0eb4719982ba64fcf8667533a42 100644 +index 762cd2f3a18bcb4039f8d232f1175aaac4ef623d..8755fc950af21e076858de7aafe3b562982299cf 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -99,6 +99,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -101,6 +101,13 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { } // Purpur end - Fire Immunity API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch index 19557fefe..7a5ade3e0 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftServer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -426,6 +_,20 @@ +@@ -427,6 +_,20 @@ this.paperPluginManager = new io.papermc.paper.plugin.manager.PaperPluginManagerImpl(this, this.commandMap, pluginManager); this.pluginManager.paperPluginManager = this.paperPluginManager; // Paper end @@ -21,7 +21,7 @@ CraftRegistry.setMinecraftRegistry(console.registryAccess()); -@@ -1086,6 +_,7 @@ +@@ -1087,6 +_,7 @@ org.spigotmc.SpigotConfig.init((File) this.console.options.valueOf("spigot-settings")); // Spigot this.console.paperConfigurations.reloadConfigs(this.console); @@ -29,7 +29,7 @@ for (ServerLevel world : this.console.getAllLevels()) { // world.serverLevelData.setDifficulty(config.difficulty); // Paper - per level difficulty world.setSpawnSettings(world.serverLevelData.getDifficulty() != Difficulty.PEACEFUL && config.spawnMonsters); // Paper - per level difficulty (from MinecraftServer#setDifficulty(ServerLevel, Difficulty, boolean)) -@@ -1101,6 +_,7 @@ +@@ -1102,6 +_,7 @@ } } world.spigotConfig.init(); // Spigot @@ -37,7 +37,7 @@ } Plugin[] pluginClone = pluginManager.getPlugins().clone(); // Paper -@@ -1118,6 +_,7 @@ +@@ -1119,6 +_,7 @@ org.spigotmc.SpigotConfig.registerCommands(); // Spigot io.papermc.paper.command.PaperCommands.registerCommands(this.console); // Paper this.spark.registerCommandBeforePlugins(this); // Paper - spark @@ -45,7 +45,7 @@ this.overrideAllCommandBlockCommands = this.commandsConfiguration.getStringList("command-block-overrides").contains("*"); this.ignoreVanillaPermissions = this.commandsConfiguration.getBoolean("ignore-vanilla-permissions"); -@@ -1645,6 +_,60 @@ +@@ -1646,6 +_,60 @@ return true; } @@ -106,7 +106,7 @@ @Override public List getRecipesFor(ItemStack result) { Preconditions.checkArgument(result != null, "ItemStack cannot be null"); -@@ -3049,6 +_,18 @@ +@@ -3055,6 +_,18 @@ return CraftServer.this.console.paperConfigurations.createLegacyObject(CraftServer.this.console); } @@ -125,7 +125,7 @@ @Override public void restart() { org.spigotmc.RestartCommand.restart(); -@@ -3078,6 +_,7 @@ +@@ -3084,6 +_,7 @@ @Override public double[] getTPS() { return new double[] { @@ -133,7 +133,7 @@ net.minecraft.server.MinecraftServer.getServer().tps1.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps5.getAverage(), net.minecraft.server.MinecraftServer.getServer().tps15.getAverage() -@@ -3288,4 +_,18 @@ +@@ -3294,4 +_,18 @@ this.console.addPluginAllowingSleep(plugin.getName(), value); } // Paper end - API to check if the server is sleeping diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch index 35b519694..6fa5de971 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/CraftWorld.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2346,6 +_,50 @@ +@@ -2349,6 +_,50 @@ return (this.getHandle().getDragonFight() == null) ? null : new CraftDragonBattle(this.getHandle().getDragonFight()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch index 0c61c86ab..82e4f1b76 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -87,6 +_,18 @@ +@@ -89,6 +_,18 @@ this.entityType = CraftEntityType.minecraftToBukkit(entity.getType()); } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch index 01fc3ac5b..721712915 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftHumanEntity.java -@@ -273,6 +_,7 @@ +@@ -281,6 +_,7 @@ @Override public void recalculatePermissions() { this.perm.recalculatePermissions(); diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch index 6464bba57..0853c2848 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -584,10 +_,15 @@ +@@ -585,10 +_,15 @@ @Override public void setPlayerListName(String name) { @@ -17,7 +17,7 @@ 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)) { -@@ -2763,6 +_,28 @@ +@@ -2745,6 +_,28 @@ return this.getHandle().getAbilities().walkingSpeed * 2f; } @@ -46,7 +46,7 @@ private void validateSpeed(float value) { Preconditions.checkArgument(value <= 1f && value >= -1f, "Speed value (%s) need to be between -1f and 1f", value); } -@@ -3559,4 +_,74 @@ +@@ -3541,4 +_,74 @@ this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundEntityEventPacket(((CraftEntity) target).getHandle(), effect.getData())); } // Paper end - entity effect API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch index 2072df52c..9f16640c4 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftVillager.java -@@ -375,4 +_,11 @@ +@@ -373,4 +_,11 @@ getHandle().getGossips().gossips.clear(); } // Paper end diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch index e9ee9fe8c..a85fb1dbd 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftWolf.java -@@ -146,4 +_,15 @@ +@@ -145,4 +_,15 @@ return this.getKey().hashCode(); } } diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch index c53a5719a..458f702dd 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java +++ b/src/main/java/org/bukkit/craftbukkit/inventory/CraftItemStack.java -@@ -658,4 +_,285 @@ +@@ -666,4 +_,285 @@ } // Paper end - data component API diff --git a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch index 65c3c6d5d..2f747707b 100644 --- a/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch +++ b/purpur-server/paper-patches/files/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java.patch @@ -1,6 +1,6 @@ --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -505,7 +_,7 @@ +@@ -508,7 +_,7 @@ // Paper start @Override public com.destroystokyo.paper.util.VersionFetcher getVersionFetcher() { diff --git a/purpur-server/paper-patches/files/src/main/resources/data/.paperassetsroot.patch b/purpur-server/paper-patches/files/src/main/resources/data/.paperassetsroot.patch deleted file mode 100644 index b41d58b68..000000000 --- a/purpur-server/paper-patches/files/src/main/resources/data/.paperassetsroot.patch +++ /dev/null @@ -1,3 +0,0 @@ ---- a/src/main/resources/data/.paperassetsroot -+++ b/src/main/resources/data/.paperassetsroot -@@ -1,0 +_,0 @@