From 8bb5b1f601b3aab838ee903f5fd12faed592faf7 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 21:42:55 -0500 Subject: [PATCH 01/44] Initial 1.18.1 update --- .github/workflows/pr-build.yml | 2 +- .github/workflows/push-build.yml | 2 +- .../projecteden/common}/HasUniqueId.java | 2 +- .../projecteden/common}/OptionalUniqueId.java | 2 +- build.gradle.kts | 12 +- gradle.properties | 8 +- patches/api/0001-Build-changes.patch | 18 +- patches/api/0002-Add-Getter-interfaces.patch | 336 +++++++++--------- patches/api/0003-Add-SoundEvent.patch | 46 +-- ...0004-Add-PlayerUseRespawnAnchorEvent.patch | 8 +- .../api/0006-Expanded-Adventure-support.patch | 25 -- ...0007-Add-UnsafeValues-canPlaceItemOn.patch | 4 +- patches/api/0008-Expose-NMS-ordinals.patch | 4 +- .../api/0009-Expose-MCUtil-Executors.patch | 4 +- .../0010-Add-BlockDropResourcesEvent.patch | 8 +- patches/api/0011-Add-Furnace-Recipe-API.patch | 24 +- patches/server/0001-Build-changes.patch | 51 ++- .../0002-Temporary-Access-Transformers.patch | 4 +- patches/server/0003-Add-SoundEvent.patch | 68 ++-- ...0004-Add-PlayerUseRespawnAnchorEvent.patch | 20 +- ...location-to-EntityDamageByBlockEvent.patch | 26 +- ...0006-Add-UnsafeValues-canPlaceItemOn.patch | 6 +- .../0007-Expose-EntityType-Ordinals.patch | 16 +- .../0008-Add-Player-setGameProfile.patch | 4 +- .../server/0009-Expose-MCUtil-Executors.patch | 4 +- .../0011-Add-BlockDropResourcesEvent.patch | 30 +- .../server/0012-Add-Furnace-Recipe-API.patch | 24 +- ...3-Disable-sleep-status-announcements.patch | 4 +- 28 files changed, 368 insertions(+), 394 deletions(-) rename Parchment-Common/src/main/java/{me/lexikiq => gg/projecteden/common}/HasUniqueId.java (92%) rename Parchment-Common/src/main/java/{me/lexikiq => gg/projecteden/common}/OptionalUniqueId.java (92%) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 2aa834b..b27ff8d 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - java: [16] + java: [17] fail-fast: true steps: diff --git a/.github/workflows/push-build.yml b/.github/workflows/push-build.yml index dba9332..ec0210b 100644 --- a/.github/workflows/push-build.yml +++ b/.github/workflows/push-build.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - java: [16] + java: [17] fail-fast: true steps: diff --git a/Parchment-Common/src/main/java/me/lexikiq/HasUniqueId.java b/Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java similarity index 92% rename from Parchment-Common/src/main/java/me/lexikiq/HasUniqueId.java rename to Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java index c061535..3e557bb 100644 --- a/Parchment-Common/src/main/java/me/lexikiq/HasUniqueId.java +++ b/Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java @@ -1,4 +1,4 @@ -package me.lexikiq; +package gg.projecteden.common; import org.jetbrains.annotations.NotNull; diff --git a/Parchment-Common/src/main/java/me/lexikiq/OptionalUniqueId.java b/Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java similarity index 92% rename from Parchment-Common/src/main/java/me/lexikiq/OptionalUniqueId.java rename to Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java index 337800e..09600e8 100644 --- a/Parchment-Common/src/main/java/me/lexikiq/OptionalUniqueId.java +++ b/Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java @@ -1,4 +1,4 @@ -package me.lexikiq; +package gg.projecteden.common; import org.jetbrains.annotations.Nullable; diff --git a/build.gradle.kts b/build.gradle.kts index dffd096..f919719 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.0" apply false - id("io.papermc.paperweight.patcher") version "1.2.0" + id("io.papermc.paperweight.patcher") version "1.3.1" } repositories { @@ -15,9 +15,9 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.6.0:fat") + remapper("net.fabricmc:tiny-remapper:0.7.0:fat") decompiler("net.minecraftforge:forgeflower:1.5.498.12") - paperclip("io.papermc:paperclip:2.0.1") + paperclip("io.papermc:paperclip:3.0.2") } allprojects { @@ -26,7 +26,7 @@ allprojects { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(16)) + languageVersion.set(JavaLanguageVersion.of(17)) } } } @@ -34,7 +34,7 @@ allprojects { subprojects { tasks.withType().configureEach { options.encoding = Charsets.UTF_8.name() - options.release.set(16) + options.release.set(17) } tasks.withType { options.encoding = Charsets.UTF_8.name() @@ -71,7 +71,7 @@ paperweight { // tasks.generateDevelopmentBundle { - apiCoordinates.set("me.lexikiq:parchment-api") + apiCoordinates.set("gg.projecteden.parchment:parchment-api") mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi") libraryRepositories.set( listOf( diff --git a/gradle.properties b/gradle.properties index 7fd2d0d..657c422 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ -group = me.lexikiq -version = 1.17.1-R0.1-SNAPSHOT +group = gg.projecteden.parchment +version = 1.18.1-R0.1-SNAPSHOT -mcVersion = 1.17.1 -paperRef = d4318a6ebca2a3f2859ca0ef1b274192633c7d5e +mcVersion = 1.18.1 +paperRef = df8d28a450fe391b9f0c2dc4a64543cf9b84266f org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0001-Build-changes.patch b/patches/api/0001-Build-changes.patch index 7915d70..054cf42 100644 --- a/patches/api/0001-Build-changes.patch +++ b/patches/api/0001-Build-changes.patch @@ -1,18 +1,18 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: lexikiq -Date: Fri, 2 Jul 2021 01:33:12 -0400 +Date: Sun, 26 Dec 2021 20:48:45 -0500 Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 689d470ebe2c7e25e4c87f6127978d1d283e55b5..2715c109829dbdb93de12b06652988f5cd3353c5 100644 +index a23b2bd8e1ca1ff8d0ad5ed5d5e41c89e4795090..590754921a6c7de54fa79d0a15c95a9630c53eff 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -39,6 +39,7 @@ dependencies { - apiAndDocs("net.kyori:adventure-text-serializer-plain") - api("org.apache.logging.log4j:log4j-api:2.14.1") // Paper - api("org.slf4j:slf4j-api:1.7.30") // Paper -+ api(project(":Parchment-Common")) // Parchment +@@ -22,6 +22,7 @@ configurations.api { + } - implementation("org.ow2.asm:asm:9.1") - implementation("org.ow2.asm:asm-commons:9.1") + dependencies { ++ api(project(":Parchment-Common")) // Parchment + // api dependencies are listed transitively to API consumers + api("commons-lang:commons-lang:2.6") + api("com.google.guava:guava:31.0.1-jre") diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0002-Add-Getter-interfaces.patch index 2fa32ee..685c83f 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0002-Add-Getter-interfaces.patch @@ -8,7 +8,7 @@ Creates new interfaces for objects that have a reference to a player, offlinepla Also creates interfaces for objects that are like players in that they use all other interfaces and can receive Adventure messages. diff --git a/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java b/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java -index 978813b94a5eae0afccbd3b38b463091a46b56ac..14d057791db091e49b5be7cf9700435e8811edbc 100644 +index 978813b94a5eae0afccbd3b38b463091a46b56ac..617a4b17982e3dac47480cb16046233232f288b7 100644 --- a/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/block/BeaconEffectEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; @@ -16,12 +16,12 @@ index 978813b94a5eae0afccbd3b38b463091a46b56ac..14d057791db091e49b5be7cf9700435e * Called when a beacon effect is being applied to a player. */ -public class BeaconEffectEvent extends BlockEvent implements Cancellable { -+public class BeaconEffectEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BeaconEffectEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; private PotionEffect effect; diff --git a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java -index f530a3d9314e17d1da896cac633f6a422258d9a9..af6e9a654940ed0a9a434501d20dfe225155f4f2 100644 +index f530a3d9314e17d1da896cac633f6a422258d9a9..08897d13a8af33ed1cd40c46b0f168e0c4ebfd4a 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/EndermanAttackPlayerEvent.java @@ -38,7 +38,7 @@ import org.jetbrains.annotations.NotNull; @@ -29,12 +29,12 @@ index f530a3d9314e17d1da896cac633f6a422258d9a9..af6e9a654940ed0a9a434501d20dfe22 * */ -public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable { -+public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment @NotNull private final Player player; public EndermanAttackPlayerEvent(@NotNull Enderman entity, @NotNull Player player) { diff --git a/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java -index a315c5185cd465dcf63c0ababef195da76dfc786..ea39b1dd25e00d9e8a8db86a05105297eb46d9bc 100644 +index a315c5185cd465dcf63c0ababef195da76dfc786..a65eae92b9f369f0864d872817d9ce96679256bc 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/TurtleLayEggEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; @@ -42,12 +42,12 @@ index a315c5185cd465dcf63c0ababef195da76dfc786..ea39b1dd25e00d9e8a8db86a05105297 * Fired when a Turtle lays eggs */ -public class TurtleLayEggEvent extends EntityEvent implements Cancellable { -+public class TurtleLayEggEvent extends EntityEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class TurtleLayEggEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; @NotNull diff --git a/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java b/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java -index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..03f8ddd864eac5d87aba29f791022a6719cd054f 100644 +index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a451a1b2067 100644 --- a/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/entity/TurtleStartDiggingEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; @@ -55,12 +55,12 @@ index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..03f8ddd864eac5d87aba29f791022a67 * Fired when a Turtle starts digging to lay eggs */ -public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable { -+public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index a077962fa786a3291849abfa823c7f0ec4664fce..7895fe36f6f6f2e47d506a1704494d6cb71f3db7 100644 +index a077962fa786a3291849abfa823c7f0ec4664fce..c79fb3f53d5d74d80e4a7c6f13035a6cc624ed09 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; @@ -68,12 +68,12 @@ index a077962fa786a3291849abfa823c7f0ec4664fce..7895fe36f6f6f2e47d506a1704494d6c *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ -public class PlayerHandshakeEvent extends Event implements Cancellable { -+public class PlayerHandshakeEvent extends Event implements Cancellable, me.lexikiq.OptionalUniqueId { // Parchment ++public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.common.OptionalUniqueId { // Parchment private static final HandlerList HANDLERS = new HandlerList(); @NotNull private final String originalHandshake; diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..18fd6889457f1a9d7663c7631ce83b847eb458e2 100644 +index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..26d0cee20d93e2ecdea2b06f6e7c61bc2390f269 100644 --- a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; @@ -81,7 +81,7 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..18fd6889457f1a9d7663c7631ce83b84 * event.isAsync() */ -public class PreLookupProfileEvent extends Event { -+public class PreLookupProfileEvent extends Event implements me.lexikiq.OptionalUniqueId { // Parchment ++public class PreLookupProfileEvent extends Event implements gg.projecteden.common.OptionalUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); @NotNull private final String name; @@ -115,7 +115,7 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..18fd6889457f1a9d7663c7631ce83b84 /** * Sets the UUID for this player name. This will skip the initial API call to find the players UUID. diff --git a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -index 4cd97cb102e1ec53b3fe1a451b65b4b640fde099..2de2df06dcb7099e42a097ec2c74d45529cceb21 100644 +index 4cd97cb102e1ec53b3fe1a451b65b4b640fde099..871ff8bae4ac50049a6e23a0cd1263121f8fbad1 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java @@ -48,7 +48,7 @@ import org.jetbrains.annotations.Nullable; @@ -123,12 +123,12 @@ index 4cd97cb102e1ec53b3fe1a451b65b4b640fde099..2de2df06dcb7099e42a097ec2c74d455 * Only 1 process will be allowed to provide completions, the Async Event, or the standard process. */ -public class AsyncTabCompleteEvent extends Event implements Cancellable { -+public class AsyncTabCompleteEvent extends Event implements Cancellable, me.lexikiq.OptionalLocation { // Parchment ++public class AsyncTabCompleteEvent extends Event implements Cancellable, gg.projecteden.parchment.OptionalLocation { // Parchment @NotNull private final CommandSender sender; @NotNull private final String buffer; private final boolean isCommand; diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java -index 89e132525cfae0ce979e37b3e2793df781e47227..c06d406f0644aa7380581f81442878b95f555843 100644 +index 89e132525cfae0ce979e37b3e2793df781e47227..f14635ae3112862c1337398bf5f5f56a7f87d90f 100644 --- a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java +++ b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java @@ -8,7 +8,7 @@ import static com.google.common.base.Preconditions.*; @@ -136,50 +136,24 @@ index 89e132525cfae0ce979e37b3e2793df781e47227..c06d406f0644aa7380581f81442878b9 * Thrown when an incoming plugin message channel throws an exception */ -public class ServerPluginMessageException extends ServerPluginException { -+public class ServerPluginMessageException extends ServerPluginException implements me.lexikiq.HasPlayer { // Parchment ++public class ServerPluginMessageException extends ServerPluginException implements gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private final String channel; -diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java -index 2c1cda1126e577a88f19071e958eddb5a38785af..a0994a7613a2b34a6b9ec850a8a0fc9254c89751 100644 ---- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java -+++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java -@@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; - * Should only be used for packet/clientside related stuff. - * Not intended for modifying server side state. - */ --public class PlayerChunkLoadEvent extends ChunkEvent { -+public class PlayerChunkLoadEvent extends ChunkEvent implements me.lexikiq.HasPlayer { // Parchment - - private static final HandlerList handlers = new HandlerList(); - private final Player player; -diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java -index 12163a7b0591a7d022dc7eb9ee6608a1b6c39d9b..80e7db5cbc82e0ed69ea1a0f659fd3259ef0beb2 100644 ---- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java -+++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java -@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; - * Should only be used for packet/clientside related stuff. - * Not intended for modifying server side. - */ --public class PlayerChunkUnloadEvent extends ChunkEvent { -+public class PlayerChunkUnloadEvent extends ChunkEvent implements me.lexikiq.HasPlayer { // Parchment - - private static final HandlerList handlers = new HandlerList(); - private final Player player; -diff --git a/src/main/java/me/lexikiq/HasHumanEntity.java b/src/main/java/me/lexikiq/HasHumanEntity.java +diff --git a/src/main/java/gg/projecteden/parchment/HasHumanEntity.java b/src/main/java/gg/projecteden/parchment/HasHumanEntity.java new file mode 100644 -index 0000000000000000000000000000000000000000..46efc8787afe2eda000fc71a6a1f3c0f0d7da320 +index 0000000000000000000000000000000000000000..ee1bc817a60b602f7d437a21852c3dc285d854df --- /dev/null -+++ b/src/main/java/me/lexikiq/HasHumanEntity.java ++++ b/src/main/java/gg/projecteden/parchment/HasHumanEntity.java @@ -0,0 +1,19 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.entity.HumanEntity; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link HumanEntity} -+ * @see me.lexikiq.OptionalHumanEntity ++ * @see gg.projecteden.parchment.OptionalHumanEntity + */ +@FunctionalInterface +public interface HasHumanEntity extends OptionalHumanEntity { @@ -191,13 +165,13 @@ index 0000000000000000000000000000000000000000..46efc8787afe2eda000fc71a6a1f3c0f + @Override + @NotNull HumanEntity getPlayer(); +} -diff --git a/src/main/java/me/lexikiq/HasLocation.java b/src/main/java/me/lexikiq/HasLocation.java +diff --git a/src/main/java/gg/projecteden/parchment/HasLocation.java b/src/main/java/gg/projecteden/parchment/HasLocation.java new file mode 100644 -index 0000000000000000000000000000000000000000..ac380c3f767f2d7a86ca2f9a3f7dbfcfc172e2be +index 0000000000000000000000000000000000000000..e9f7bb3058639c94ee8e67627e5e34548d391df6 --- /dev/null -+++ b/src/main/java/me/lexikiq/HasLocation.java ++++ b/src/main/java/gg/projecteden/parchment/HasLocation.java @@ -0,0 +1,18 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.jetbrains.annotations.NotNull; @@ -215,13 +189,13 @@ index 0000000000000000000000000000000000000000..ac380c3f767f2d7a86ca2f9a3f7dbfcf + @Override + @NotNull Location getLocation(); +} -diff --git a/src/main/java/me/lexikiq/HasOfflinePlayer.java b/src/main/java/me/lexikiq/HasOfflinePlayer.java +diff --git a/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java b/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java new file mode 100644 -index 0000000000000000000000000000000000000000..33b04ae2dee02e53ffa070de6631f71e2ddaf998 +index 0000000000000000000000000000000000000000..15b72b693a32852f791c5578f701843c759737a7 --- /dev/null -+++ b/src/main/java/me/lexikiq/HasOfflinePlayer.java ++++ b/src/main/java/gg/projecteden/parchment/HasOfflinePlayer.java @@ -0,0 +1,17 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.OfflinePlayer; +import org.jetbrains.annotations.NotNull; @@ -238,20 +212,20 @@ index 0000000000000000000000000000000000000000..33b04ae2dee02e53ffa070de6631f71e + */ + @NotNull OfflinePlayer getOfflinePlayer(); +} -diff --git a/src/main/java/me/lexikiq/HasPlayer.java b/src/main/java/me/lexikiq/HasPlayer.java +diff --git a/src/main/java/gg/projecteden/parchment/HasPlayer.java b/src/main/java/gg/projecteden/parchment/HasPlayer.java new file mode 100644 -index 0000000000000000000000000000000000000000..117e3994ffec1830f471b8810746f6e4088db298 +index 0000000000000000000000000000000000000000..68a2e2093405eb39d91b5b79f16a521a6a729d4e --- /dev/null -+++ b/src/main/java/me/lexikiq/HasPlayer.java ++++ b/src/main/java/gg/projecteden/parchment/HasPlayer.java @@ -0,0 +1,19 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + +/** + * Represents an object that has a {@link Player} -+ * @see me.lexikiq.OptionalPlayer ++ * @see gg.projecteden.parchment.OptionalPlayer + */ +@FunctionalInterface +public interface HasPlayer extends OptionalPlayer, HasHumanEntity { @@ -263,13 +237,13 @@ index 0000000000000000000000000000000000000000..117e3994ffec1830f471b8810746f6e4 + @Override + @NotNull Player getPlayer(); +} -diff --git a/src/main/java/me/lexikiq/OptionalHumanEntity.java b/src/main/java/me/lexikiq/OptionalHumanEntity.java +diff --git a/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java b/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java new file mode 100644 -index 0000000000000000000000000000000000000000..139887822a853876508b937f5288bfd117d15da6 +index 0000000000000000000000000000000000000000..45410a77714ad28201520c188e280e4f5fa8bcab --- /dev/null -+++ b/src/main/java/me/lexikiq/OptionalHumanEntity.java ++++ b/src/main/java/gg/projecteden/parchment/OptionalHumanEntity.java @@ -0,0 +1,18 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.entity.HumanEntity; +import org.jetbrains.annotations.Nullable; @@ -287,13 +261,13 @@ index 0000000000000000000000000000000000000000..139887822a853876508b937f5288bfd1 + */ + @Nullable HumanEntity getPlayer(); +} -diff --git a/src/main/java/me/lexikiq/OptionalLocation.java b/src/main/java/me/lexikiq/OptionalLocation.java +diff --git a/src/main/java/gg/projecteden/parchment/OptionalLocation.java b/src/main/java/gg/projecteden/parchment/OptionalLocation.java new file mode 100644 -index 0000000000000000000000000000000000000000..10d06b9af2a9cfb2e80991d9916ca9953a25e42c +index 0000000000000000000000000000000000000000..23897904c6e2d6195f3613c36d77454587afd8bc --- /dev/null -+++ b/src/main/java/me/lexikiq/OptionalLocation.java ++++ b/src/main/java/gg/projecteden/parchment/OptionalLocation.java @@ -0,0 +1,18 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.jetbrains.annotations.Nullable; @@ -311,13 +285,13 @@ index 0000000000000000000000000000000000000000..10d06b9af2a9cfb2e80991d9916ca995 + */ + @Nullable Location getLocation(); +} -diff --git a/src/main/java/me/lexikiq/OptionalPlayer.java b/src/main/java/me/lexikiq/OptionalPlayer.java +diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayer.java b/src/main/java/gg/projecteden/parchment/OptionalPlayer.java new file mode 100644 -index 0000000000000000000000000000000000000000..6de254b174966ff9cc9e0ec091639885cd925b56 +index 0000000000000000000000000000000000000000..31b9ab6512c9f06160c268e88d5bce486ed87523 --- /dev/null -+++ b/src/main/java/me/lexikiq/OptionalPlayer.java ++++ b/src/main/java/gg/projecteden/parchment/OptionalPlayer.java @@ -0,0 +1,19 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.entity.Player; +import org.jetbrains.annotations.Nullable; @@ -336,13 +310,13 @@ index 0000000000000000000000000000000000000000..6de254b174966ff9cc9e0ec091639885 + */ + @Nullable Player getPlayer(); +} -diff --git a/src/main/java/me/lexikiq/OptionalPlayerLike.java b/src/main/java/me/lexikiq/OptionalPlayerLike.java +diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..9ea2385c1f4de8bfd59bae284fb47e5a15026b55 +index 0000000000000000000000000000000000000000..db44b117423fa65979480c8922de5eeb379b749d --- /dev/null -+++ b/src/main/java/me/lexikiq/OptionalPlayerLike.java ++++ b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java @@ -0,0 +1,189 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import net.kyori.adventure.audience.Audience; +import net.kyori.adventure.audience.MessageType; @@ -364,7 +338,7 @@ index 0000000000000000000000000000000000000000..9ea2385c1f4de8bfd59bae284fb47e5a + +/** + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. -+ * @see me.lexikiq.PlayerLike ++ * @see gg.projecteden.parchment.PlayerLike + */ +public interface OptionalPlayerLike extends OptionalPlayer, HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { + /** @@ -531,13 +505,13 @@ index 0000000000000000000000000000000000000000..9ea2385c1f4de8bfd59bae284fb47e5a + return player == null ? null : player.getLocation(); + } +} -diff --git a/src/main/java/me/lexikiq/PlayerLike.java b/src/main/java/me/lexikiq/PlayerLike.java +diff --git a/src/main/java/gg/projecteden/parchment/PlayerLike.java b/src/main/java/gg/projecteden/parchment/PlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..314bf6e8cacfe8891f1354952c5ccfe7d2e21939 +index 0000000000000000000000000000000000000000..dd5840ab1fe9375e83a3a30563ae59620171d3d3 --- /dev/null -+++ b/src/main/java/me/lexikiq/PlayerLike.java ++++ b/src/main/java/gg/projecteden/parchment/PlayerLike.java @@ -0,0 +1,28 @@ -+package me.lexikiq; ++package gg.projecteden.parchment; + +import org.bukkit.Location; +import org.bukkit.entity.Player; @@ -547,7 +521,7 @@ index 0000000000000000000000000000000000000000..314bf6e8cacfe8891f1354952c5ccfe7 + +/** + * Class that is like a {@link org.bukkit.entity.Player} in that it has a Player, {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, and an {@link net.kyori.adventure.identity.Identity}. -+ * @see me.lexikiq.OptionalPlayerLike ++ * @see gg.projecteden.parchment.OptionalPlayerLike + */ +public interface PlayerLike extends HasPlayer, HasLocation, OptionalPlayerLike { + @Override @@ -565,8 +539,34 @@ index 0000000000000000000000000000000000000000..314bf6e8cacfe8891f1354952c5ccfe7 + return getPlayer().getLocation(); + } +} +diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java +index 2c1cda1126e577a88f19071e958eddb5a38785af..39e746f0c8536642346abbb6909fd2053031d695 100644 +--- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java ++++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkLoadEvent.java +@@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; + * Should only be used for packet/clientside related stuff. + * Not intended for modifying server side state. + */ +-public class PlayerChunkLoadEvent extends ChunkEvent { ++public class PlayerChunkLoadEvent extends ChunkEvent implements gg.projecteden.parchment.HasPlayer { // Parchment + + private static final HandlerList handlers = new HandlerList(); + private final Player player; +diff --git a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java +index 12163a7b0591a7d022dc7eb9ee6608a1b6c39d9b..d81c7307127b135417e06a3b244416bee34b0abe 100644 +--- a/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java ++++ b/src/main/java/io/papermc/paper/event/packet/PlayerChunkUnloadEvent.java +@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; + * Should only be used for packet/clientside related stuff. + * Not intended for modifying server side. + */ +-public class PlayerChunkUnloadEvent extends ChunkEvent { ++public class PlayerChunkUnloadEvent extends ChunkEvent implements gg.projecteden.parchment.HasPlayer { // Parchment + + private static final HandlerList handlers = new HandlerList(); + private final Player player; diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index 8321441b8f528a05e297f485672f928e76fe017d..e6a66494941ccaeb62ec13c26a0e05c52e3af159 100644 +index 8321441b8f528a05e297f485672f928e76fe017d..e3b684a189b5c8e2d2b73ef9b057869012f86c03 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -30,7 +30,7 @@ import org.bukkit.entity.Player; @@ -574,7 +574,7 @@ index 8321441b8f528a05e297f485672f928e76fe017d..e6a66494941ccaeb62ec13c26a0e05c5 * representation by the implementation. */ -public class Location implements Cloneable, ConfigurationSerializable { -+public class Location implements Cloneable, ConfigurationSerializable, me.lexikiq.HasLocation { // Parchment ++public class Location implements Cloneable, ConfigurationSerializable, gg.projecteden.parchment.HasLocation { // Parchment private Reference world; private double x; private double y; @@ -593,7 +593,7 @@ index 8321441b8f528a05e297f485672f928e76fe017d..e6a66494941ccaeb62ec13c26a0e05c5 * Sets the world that this location resides in * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..5898a13f0f90547ff6ecabee18969c7891d0beee 100644 +index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..53decf2105e68e62478acebc73e3483918ced370 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java @@ -9,7 +9,7 @@ import org.bukkit.permissions.ServerOperator; @@ -601,7 +601,7 @@ index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..5898a13f0f90547ff6ecabee18969c78 import org.jetbrains.annotations.Nullable; -public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable { -+public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable, me.lexikiq.HasOfflinePlayer, me.lexikiq.OptionalPlayer { // Parchment ++public interface OfflinePlayer extends ServerOperator, AnimalTamer, ConfigurationSerializable, gg.projecteden.parchment.HasOfflinePlayer, gg.projecteden.parchment.OptionalPlayer { // Parchment /** * Checks if this player is currently online @@ -620,7 +620,7 @@ index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..5898a13f0f90547ff6ecabee18969c78 * Gets the first date and time that this player was witnessed on this * server. diff --git a/src/main/java/org/bukkit/Raid.java b/src/main/java/org/bukkit/Raid.java -index 983a8c20a06d2b509602b27f49c090598b8ecc42..bc6b6739ad46a076f3ac8f92814a027f9d2840a7 100644 +index 983a8c20a06d2b509602b27f49c090598b8ecc42..46dd8496f5a2c792ee7811e33c424e88edf8b5b3 100644 --- a/src/main/java/org/bukkit/Raid.java +++ b/src/main/java/org/bukkit/Raid.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; @@ -628,12 +628,12 @@ index 983a8c20a06d2b509602b27f49c090598b8ecc42..bc6b6739ad46a076f3ac8f92814a027f * Represents a raid event. */ -public interface Raid { -+public interface Raid extends me.lexikiq.HasLocation { // Parchment ++public interface Raid extends gg.projecteden.parchment.HasLocation { // Parchment /** * Get whether this raid started. diff --git a/src/main/java/org/bukkit/Vibration.java b/src/main/java/org/bukkit/Vibration.java -index 8d568d21fcbf706f55cda087bd7222ac60889c0a..51b214313e7ee6b5eb1f0fa6f1e1fe383c6d04e1 100644 +index 8d568d21fcbf706f55cda087bd7222ac60889c0a..8bc5b7a0df5c8f5e5d973c2d2b348968f5b759b2 100644 --- a/src/main/java/org/bukkit/Vibration.java +++ b/src/main/java/org/bukkit/Vibration.java @@ -64,7 +64,7 @@ public class Vibration { @@ -641,12 +641,12 @@ index 8d568d21fcbf706f55cda087bd7222ac60889c0a..51b214313e7ee6b5eb1f0fa6f1e1fe38 } - public static class BlockDestination implements Destination { -+ public static class BlockDestination implements Destination, me.lexikiq.HasLocation { // Parchment ++ public static class BlockDestination implements Destination, gg.projecteden.parchment.HasLocation { // Parchment private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..4a1e40e0c7cff6ef8898771adf3bc600c715ee8d 100644 +index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..caa7f8a269f923df85a319c1c9bf6cd1ce1ccdcd 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -654,12 +654,12 @@ index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..4a1e40e0c7cff6ef8898771adf3bc600 * Concrete implementation of an attribute modifier. */ -public class AttributeModifier implements ConfigurationSerializable { -+public class AttributeModifier implements ConfigurationSerializable, me.lexikiq.HasUniqueId { // Parchment ++public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.common.HasUniqueId { // Parchment private final UUID uuid; private final String name; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 70caaf05be813ba390412714ba0a39981edc2475..84525ded139292612256cba0ae3933a3b07f6fab 100644 +index 0dd0beee6800fb34520dfa2d05e5bdda76624d64..1c34b25d3c8a4ec098de6402de4c84fc663d5c27 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -667,12 +667,12 @@ index 70caaf05be813ba390412714ba0a39981edc2475..84525ded139292612256cba0ae3933a3 * generation when used in cases like BlockPhysicsEvent!!!! */ -public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable { // Paper - translatable -+public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable, me.lexikiq.HasLocation { // Paper - translatable ++public interface Block extends Metadatable, net.kyori.adventure.translation.Translatable, gg.projecteden.parchment.HasLocation { // Paper - translatable /** * Gets the metadata for this block diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java -index 96cde879922c796f3ac8d14ee99d7b190ff67bd9..5b7a4a1c4e210ad7e8c81e2958e26d0394060fdb 100644 +index 96cde879922c796f3ac8d14ee99d7b190ff67bd9..c17f34ceedc76ac489cb9f8576df1cdd520ef1ea 100644 --- a/src/main/java/org/bukkit/block/BlockState.java +++ b/src/main/java/org/bukkit/block/BlockState.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; @@ -680,12 +680,12 @@ index 96cde879922c796f3ac8d14ee99d7b190ff67bd9..5b7a4a1c4e210ad7e8c81e2958e26d03 * block to another type entirely, causing your BlockState to become invalid. */ -public interface BlockState extends Metadatable { -+public interface BlockState extends Metadatable, me.lexikiq.HasLocation { // Parchment ++public interface BlockState extends Metadatable, gg.projecteden.parchment.HasLocation { // Parchment /** * Gets the block represented by this block state. diff --git a/src/main/java/org/bukkit/block/DoubleChest.java b/src/main/java/org/bukkit/block/DoubleChest.java -index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..19b54fc9f05a88849538a1ed28d8440306b8c81e 100644 +index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..4348b8961afe7a57350856622aff8c988cd4bbdd 100644 --- a/src/main/java/org/bukkit/block/DoubleChest.java +++ b/src/main/java/org/bukkit/block/DoubleChest.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; @@ -693,12 +693,12 @@ index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..19b54fc9f05a88849538a1ed28d84403 * Represents a double chest. */ -public class DoubleChest implements InventoryHolder { -+public class DoubleChest implements InventoryHolder, me.lexikiq.HasLocation { // Parchment ++public class DoubleChest implements InventoryHolder, gg.projecteden.parchment.HasLocation { // Parchment private DoubleChestInventory inventory; public DoubleChest(@NotNull DoubleChestInventory chest) { diff --git a/src/main/java/org/bukkit/entity/AnimalTamer.java b/src/main/java/org/bukkit/entity/AnimalTamer.java -index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..3f87365f96b220cf58b5ab9405ec77b70d24039b 100644 +index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..404679175d68ced0909977d0b26be11f0cdc8f19 100644 --- a/src/main/java/org/bukkit/entity/AnimalTamer.java +++ b/src/main/java/org/bukkit/entity/AnimalTamer.java @@ -4,7 +4,7 @@ import java.util.UUID; @@ -706,12 +706,12 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..3f87365f96b220cf58b5ab9405ec77b7 import org.jetbrains.annotations.Nullable; -public interface AnimalTamer { -+public interface AnimalTamer extends me.lexikiq.HasUniqueId { // Parchment ++public interface AnimalTamer extends gg.projecteden.common.HasUniqueId { // Parchment /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index bafad5764cc3933fcd9602d37bd2e68424cbd575..c01d0c2bdd90a54ce853be610ed4554ce2030af4 100644 +index bafad5764cc3933fcd9602d37bd2e68424cbd575..30911648875fd537f97e5286a86ab4af5cf5c04c 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; @@ -719,12 +719,12 @@ index bafad5764cc3933fcd9602d37bd2e68424cbd575..c01d0c2bdd90a54ce853be610ed4554c * Represents a base entity in the world */ -public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter { // Paper -+public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, me.lexikiq.HasUniqueId, me.lexikiq.HasLocation { // Paper // Parchment ++public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.common.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment /** * Gets the entity's current position diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 28d1ff809e44bda0324ffac957c1d455be02e783..8b72f9e7514cffa5631186a4fd21671c7cf7c7d6 100644 +index 28d1ff809e44bda0324ffac957c1d455be02e783..2b64852da2f22bd984216ef0164587e085c445bf 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -19,7 +19,15 @@ import org.jetbrains.annotations.Nullable; @@ -733,7 +733,7 @@ index 28d1ff809e44bda0324ffac957c1d455be02e783..8b72f9e7514cffa5631186a4fd21671c */ -public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder { +// Parchment start -+public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder, me.lexikiq.HasHumanEntity { ++public interface HumanEntity extends LivingEntity, AnimalTamer, InventoryHolder, gg.projecteden.parchment.HasHumanEntity { + + @NotNull + @Override @@ -745,19 +745,19 @@ index 28d1ff809e44bda0324ffac957c1d455be02e783..8b72f9e7514cffa5631186a4fd21671c // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 9a6e410206852029f1fea0c4409352d5743dcf64..2b38fdc2dad244927a38c779f9c87073d017c259 100644 +index 1b4b54741719252892a3a51491d49cd5423de499..e851bcbfcd55fd450f58da3686a96165eb868688 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -41,7 +41,7 @@ import org.jetbrains.annotations.Nullable; +@@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ -public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient { // Paper -+public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, me.lexikiq.HasPlayer { // Paper // Parchment ++public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, gg.projecteden.parchment.HasPlayer { // Paper // Parchment // Paper start @Override -@@ -49,6 +49,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -51,6 +51,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM return net.kyori.adventure.identity.Identity.identity(this.getUniqueId()); } @@ -775,7 +775,7 @@ index 9a6e410206852029f1fea0c4409352d5743dcf64..2b38fdc2dad244927a38c779f9c87073 * Gets the "friendly" name to display of this player. * diff --git a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java -index 691733a642b3295bbe6d484be728c77cd32803bd..4481f9ea86fa18ea1fd2ea815784020cd2568740 100644 +index 691733a642b3295bbe6d484be728c77cd32803bd..a2eae7a9bad13d1ba2bd954888a0373834d30078 100644 --- a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.NotNull; @@ -783,12 +783,12 @@ index 691733a642b3295bbe6d484be728c77cd32803bd..4481f9ea86fa18ea1fd2ea815784020c * experience will not drop. */ -public class BlockBreakEvent extends BlockExpEvent implements Cancellable { -+public class BlockBreakEvent extends BlockExpEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BlockBreakEvent extends BlockExpEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private boolean dropItems; private boolean cancel; diff --git a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java -index a1350c0f74d445dca09eea6e10abac050bb06990..7d9573f88ab4333db2da42379344580087f7f561 100644 +index a1350c0f74d445dca09eea6e10abac050bb06990..11bb6f8f7363f31061d5fd0f2e4515099ac40649 100644 --- a/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockCanBuildEvent.java @@ -19,7 +19,7 @@ import org.jetbrains.annotations.Nullable; @@ -796,12 +796,12 @@ index a1350c0f74d445dca09eea6e10abac050bb06990..7d9573f88ab4333db2da423793445800 * */ -public class BlockCanBuildEvent extends BlockEvent { -+public class BlockCanBuildEvent extends BlockEvent implements me.lexikiq.OptionalPlayer { // Parchment ++public class BlockCanBuildEvent extends BlockEvent implements gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); protected boolean buildable; diff --git a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java -index f70871e1ae7b1a1d77405d942d82666f03bf0498..fc40801a3d314b20b4334cffff7e6beeceba80cf 100644 +index f70871e1ae7b1a1d77405d942d82666f03bf0498..e5bb8f4b75eb24fa507fcd93b62a4e7f5e2d3c98 100644 --- a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; @@ -809,12 +809,12 @@ index f70871e1ae7b1a1d77405d942d82666f03bf0498..fc40801a3d314b20b4334cffff7e6bee * If a Block Damage event is cancelled, the block will not be damaged. */ -public class BlockDamageEvent extends BlockEvent implements Cancellable { -+public class BlockDamageEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BlockDamageEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; private boolean instaBreak; diff --git a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java -index 3dd4bd38e72c04e74e5787fb38ca9abd10bad06b..440792fcdd618b75d9387e8104562b86bfe33c13 100644 +index 3dd4bd38e72c04e74e5787fb38ca9abd10bad06b..3783fb96cc7086bc78dc06c573a1343c3a18c3cb 100644 --- a/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockDropItemEvent.java @@ -24,7 +24,7 @@ import org.jetbrains.annotations.NotNull; @@ -822,12 +822,12 @@ index 3dd4bd38e72c04e74e5787fb38ca9abd10bad06b..440792fcdd618b75d9387e8104562b86 * block. */ -public class BlockDropItemEvent extends BlockEvent implements Cancellable { -+public class BlockDropItemEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BlockDropItemEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Player player; diff --git a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java -index 695309b4b7ef269ba2496408a5f874f61cd6c445..535e94fb4c2a021a89111ec98c7dbfef1534ac53 100644 +index 695309b4b7ef269ba2496408a5f874f61cd6c445..18207907e7b31ef9c136e857de046f9cce006111 100644 --- a/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockFertilizeEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; @@ -835,12 +835,12 @@ index 695309b4b7ef269ba2496408a5f874f61cd6c445..535e94fb4c2a021a89111ec98c7dbfef * {@link StructureGrowEvent}. */ -public class BlockFertilizeEvent extends BlockEvent implements Cancellable { -+public class BlockFertilizeEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BlockFertilizeEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java -index 6dcd9f828c6c40e48593b0bad5a44a656eb01645..542cfd60a1f4775544fb040a7d8c05daaf7a5c67 100644 +index 6dcd9f828c6c40e48593b0bad5a44a656eb01645..0651bdd983e90e0e1e8a3565dcb5d97cfd69ce3e 100644 --- a/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockIgniteEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -848,12 +848,12 @@ index 6dcd9f828c6c40e48593b0bad5a44a656eb01645..542cfd60a1f4775544fb040a7d8c05da * If a Block Ignite event is cancelled, the block will not be ignited. */ -public class BlockIgniteEvent extends BlockEvent implements Cancellable { -+public class BlockIgniteEvent extends BlockEvent implements Cancellable, me.lexikiq.OptionalPlayer { // Parchment ++public class BlockIgniteEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final IgniteCause cause; private final Entity ignitingEntity; diff --git a/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java b/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java -index be0a2d1f234d8265d98e54e518a994957b1f3ab7..ef5471f00a6c308368dd92f40fd1f3abe60e3e2b 100644 +index be0a2d1f234d8265d98e54e518a994957b1f3ab7..54cd6735fbcad009330927d760f8bd93ea9c51ec 100644 --- a/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockPlaceEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; @@ -861,12 +861,12 @@ index be0a2d1f234d8265d98e54e518a994957b1f3ab7..ef5471f00a6c308368dd92f40fd1f3ab * If a Block Place event is cancelled, the block will not be placed. */ -public class BlockPlaceEvent extends BlockEvent implements Cancellable { -+public class BlockPlaceEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class BlockPlaceEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); protected boolean cancel; protected boolean canBuild; diff --git a/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/src/main/java/org/bukkit/event/block/SignChangeEvent.java -index 1f79f704abf339150df08900b8ea7da4cefef258..d08d9a87c89effcc4882aeda67019f7278aa099c 100644 +index 1f79f704abf339150df08900b8ea7da4cefef258..45355bb0dde0b1432054a1504f2dfe01bb696b27 100644 --- a/src/main/java/org/bukkit/event/block/SignChangeEvent.java +++ b/src/main/java/org/bukkit/event/block/SignChangeEvent.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.Nullable; @@ -874,12 +874,12 @@ index 1f79f704abf339150df08900b8ea7da4cefef258..d08d9a87c89effcc4882aeda67019f72 * If a Sign Change event is cancelled, the sign will not be changed. */ -public class SignChangeEvent extends BlockEvent implements Cancellable { -+public class SignChangeEvent extends BlockEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class SignChangeEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel = false; private final Player player; diff --git a/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java b/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java -index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..6794fe6835ad8a5b1a3194288631f7178fa94b72 100644 +index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..b42465617e83d3413ab647cd9c78212b61ca5833 100644 --- a/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityEnterLoveModeEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; @@ -887,7 +887,7 @@ index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..6794fe6835ad8a5b1a3194288631f717 * make the entity enter into love mode. */ -public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable { -+public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable, me.lexikiq.OptionalHumanEntity { // Parchment ++public class EntityEnterLoveModeEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.OptionalHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel; @@ -921,7 +921,7 @@ index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..6794fe6835ad8a5b1a3194288631f717 /** * Gets the amount of ticks that the animal will fall in love for. diff --git a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java -index 10d0e18dfd423b108fe381e8142867eb10399359..9877ca9ee25f4f10b130085b70e02eedf7b5b469 100644 +index 10d0e18dfd423b108fe381e8142867eb10399359..7f9f266057de42261fa06e4874d7bec5388c90c7 100644 --- a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; @@ -929,12 +929,12 @@ index 10d0e18dfd423b108fe381e8142867eb10399359..9877ca9ee25f4f10b130085b70e02eed * Called when an entity explodes */ -public class EntityExplodeEvent extends EntityEvent implements Cancellable { -+public class EntityExplodeEvent extends EntityEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class EntityExplodeEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancel; private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java b/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java -index ea8f9ed43d8e4158e6c9c345252a94a5000c5561..d9000c142b4097ba17f7333864f0fa197f259300 100644 +index ea8f9ed43d8e4158e6c9c345252a94a5000c5561..98d308eda8287cb1f1a0aab5208c7c6f13047c05 100644 --- a/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityPlaceEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.Nullable; @@ -942,12 +942,12 @@ index ea8f9ed43d8e4158e6c9c345252a94a5000c5561..d9000c142b4097ba17f7333864f0fa19 * armor stands, boats, minecarts, and end crystals. */ -public class EntityPlaceEvent extends EntityEvent implements Cancellable { -+public class EntityPlaceEvent extends EntityEvent implements Cancellable, me.lexikiq.OptionalPlayer { // Parchment ++public class EntityPlaceEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java -index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..9bcc13260ed26a75a1325fe6598bfed51f63496c 100644 +index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..c9c4a6673fd3995bb9638b0d25fa212412cda807 100644 --- a/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityPortalEnterEvent.java @@ -8,7 +8,7 @@ import org.jetbrains.annotations.NotNull; @@ -955,12 +955,12 @@ index 6818e9f0ba32ca1a1e612703f7526b29f5a6438f..9bcc13260ed26a75a1325fe6598bfed5 * Called when an entity comes into contact with a portal */ -public class EntityPortalEnterEvent extends EntityEvent { -+public class EntityPortalEnterEvent extends EntityEvent implements me.lexikiq.HasLocation { // Parchment ++public class EntityPortalEnterEvent extends EntityEvent implements gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java b/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java -index 961ee511342cd3a12ff2ff74d7b4683c6753123d..35aaa2479ef2ede010162230a1b683de5811c4bb 100644 +index 961ee511342cd3a12ff2ff74d7b4683c6753123d..892732ab5ae58ec980c4fd05a5a3dfdcbd70a528 100644 --- a/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntitySpawnEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; @@ -968,12 +968,12 @@ index 961ee511342cd3a12ff2ff74d7b4683c6753123d..35aaa2479ef2ede010162230a1b683de * If an Entity Spawn event is cancelled, the entity will not spawn. */ -public class EntitySpawnEvent extends EntityEvent implements Cancellable { -+public class EntitySpawnEvent extends EntityEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class EntitySpawnEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean canceled; diff --git a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java b/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java -index 6fc66197eb2c5d59c70d8d028b7963748371edbe..f4c02474f16a009fccd480f6a59bb937c96bbfb7 100644 +index 6fc66197eb2c5d59c70d8d028b7963748371edbe..dc45ec5b6ae8e2958d83a113d23ab0b1a911de3f 100644 --- a/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java +++ b/src/main/java/org/bukkit/event/entity/ItemDespawnEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; @@ -981,12 +981,12 @@ index 6fc66197eb2c5d59c70d8d028b7963748371edbe..f4c02474f16a009fccd480f6a59bb937 * minutes. This behavior is not guaranteed and may change in future versions. */ -public class ItemDespawnEvent extends EntityEvent implements Cancellable { -+public class ItemDespawnEvent extends EntityEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class ItemDespawnEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean canceled; private final Location location; diff --git a/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java b/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java -index 5eb3fb72a13881b8bf0e40037b0002cb0a6eb883..6ab6bb4237418479156bd24d77bc1f24db637969 100644 +index 5eb3fb72a13881b8bf0e40037b0002cb0a6eb883..4d5d0b730ad957e44f549518366841492b537ab2 100644 --- a/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java +++ b/src/main/java/org/bukkit/event/entity/PlayerLeashEntityEvent.java @@ -10,7 +10,7 @@ import org.jetbrains.annotations.NotNull; @@ -994,12 +994,12 @@ index 5eb3fb72a13881b8bf0e40037b0002cb0a6eb883..6ab6bb4237418479156bd24d77bc1f24 * Called immediately prior to a creature being leashed by a player. */ -public class PlayerLeashEntityEvent extends Event implements Cancellable { -+public class PlayerLeashEntityEvent extends Event implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class PlayerLeashEntityEvent extends Event implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private final Entity leashHolder; private final Entity entity; diff --git a/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java b/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java -index 1bcff119ecd95012c568c777e5ca2e891e56831e..a92f0b6a1337cb09896291f3d7da39ae011ce9ce 100644 +index 1bcff119ecd95012c568c777e5ca2e891e56831e..517f115123fa2009ba0837b0754411e93808562f 100644 --- a/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java +++ b/src/main/java/org/bukkit/event/hanging/HangingPlaceEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.Nullable; @@ -1007,12 +1007,12 @@ index 1bcff119ecd95012c568c777e5ca2e891e56831e..a92f0b6a1337cb09896291f3d7da39ae * Triggered when a hanging entity is created in the world */ -public class HangingPlaceEvent extends HangingEvent implements Cancellable { -+public class HangingPlaceEvent extends HangingEvent implements Cancellable, me.lexikiq.OptionalPlayer { // Parchment ++public class HangingPlaceEvent extends HangingEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; private final Player player; diff --git a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java -index 020739697a0b535cad0b15b574f77cdabbdfa3eb..db95a2096f12c42d84b44bada6048184074a20b4 100644 +index 020739697a0b535cad0b15b574f77cdabbdfa3eb..ee4fd41e66852d5d2c62222c7b884473d3f3001d 100644 --- a/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java +++ b/src/main/java/org/bukkit/event/inventory/FurnaceExtractEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; @@ -1020,12 +1020,12 @@ index 020739697a0b535cad0b15b574f77cdabbdfa3eb..db95a2096f12c42d84b44bada6048184 * This event is called when a player takes items out of the furnace */ -public class FurnaceExtractEvent extends BlockExpEvent { -+public class FurnaceExtractEvent extends BlockExpEvent implements me.lexikiq.HasPlayer { // Parchment ++public class FurnaceExtractEvent extends BlockExpEvent implements gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private final Material itemType; private final int itemAmount; diff --git a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java -index 21ad8888c0e403bfc63518502577d651c02dda05..4dd6182476a4a9b961089f34d5376780e1774fc4 100644 +index 21ad8888c0e403bfc63518502577d651c02dda05..1c59335a8f0a40162190f6fb73ffbfef0cd795d8 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryCloseEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; @@ -1033,12 +1033,12 @@ index 21ad8888c0e403bfc63518502577d651c02dda05..4dd6182476a4a9b961089f34d5376780 * Represents a player related inventory event */ -public class InventoryCloseEvent extends InventoryEvent { -+public class InventoryCloseEvent extends InventoryEvent implements me.lexikiq.HasHumanEntity { // Parchment ++public class InventoryCloseEvent extends InventoryEvent implements gg.projecteden.parchment.HasHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); // Paper start private final Reason reason; diff --git a/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java b/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java -index 9013d043503d175004ad276799e5935b7fa59dc4..2af2c43ba34de3ff6f6a82f5abb4f94f2fa5d19e 100644 +index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f748278a7 100644 --- a/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java +++ b/src/main/java/org/bukkit/event/inventory/InventoryOpenEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; @@ -1046,12 +1046,12 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..2af2c43ba34de3ff6f6a82f5abb4f94f * Represents a player related inventory event */ -public class InventoryOpenEvent extends InventoryEvent implements Cancellable { -+public class InventoryOpenEvent extends InventoryEvent implements Cancellable, me.lexikiq.HasHumanEntity { // Parchment ++public class InventoryOpenEvent extends InventoryEvent implements Cancellable, gg.projecteden.parchment.HasHumanEntity { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 694a81769076ea58aae9f14f076ab80c9952c957..bea28949cc37a652427fc4ab1dfb225c65ea1d9b 100644 +index 694a81769076ea58aae9f14f076ab80c9952c957..933a83a00922ea7ed8a76a688152ed43d0ba5691 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; @@ -1059,12 +1059,12 @@ index 694a81769076ea58aae9f14f076ab80c9952c957..bea28949cc37a652427fc4ab1dfb225c * This event is asynchronous, and not run using main thread. */ -public class AsyncPlayerPreLoginEvent extends Event { -+public class AsyncPlayerPreLoginEvent extends Event implements me.lexikiq.HasUniqueId { // Parchment ++public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.common.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerEvent.java b/src/main/java/org/bukkit/event/player/PlayerEvent.java -index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..309d4526816853dfc2d5c3061bd772238776ab74 100644 +index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..44efb5cc62149b34b994eadac488a90269e8ae79 100644 --- a/src/main/java/org/bukkit/event/player/PlayerEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerEvent.java @@ -7,7 +7,7 @@ import org.jetbrains.annotations.NotNull; @@ -1072,12 +1072,12 @@ index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..309d4526816853dfc2d5c3061bd77223 * Represents a player related event */ -public abstract class PlayerEvent extends Event { -+public abstract class PlayerEvent extends Event implements me.lexikiq.HasPlayer { // Parchment ++public abstract class PlayerEvent extends Event implements gg.projecteden.parchment.HasPlayer { // Parchment protected Player player; public PlayerEvent(@NotNull final Player who) { diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index 123979ed64939d615b061f91c19c630e1e1db8c7..0220c4f087fd6b5769a0fa4f03bfd096a1462359 100644 +index 123979ed64939d615b061f91c19c630e1e1db8c7..0507e766428966ffe1e72f476991240d17b39f4a 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; @@ -1085,12 +1085,12 @@ index 123979ed64939d615b061f91c19c630e1e1db8c7..0220c4f087fd6b5769a0fa4f03bfd096 @Deprecated @Warning(reason = "This event causes a login thread to synchronize with the main thread") -public class PlayerPreLoginEvent extends Event { -+public class PlayerPreLoginEvent extends Event implements me.lexikiq.HasUniqueId { // Parchment ++public class PlayerPreLoginEvent extends Event implements gg.projecteden.common.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper diff --git a/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java b/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java -index 68eab1563caba1ee4f52b308f390e4e172667fc5..7ebf60f80ac29f3969d2d70fa0cf668f2933b647 100644 +index 68eab1563caba1ee4f52b308f390e4e172667fc5..7f2be08b1e7b6df4bab8a8996bc276f369a8ff78 100644 --- a/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerUnleashEntityEvent.java @@ -9,7 +9,7 @@ import org.jetbrains.annotations.NotNull; @@ -1098,12 +1098,12 @@ index 68eab1563caba1ee4f52b308f390e4e172667fc5..7ebf60f80ac29f3969d2d70fa0cf668f * Called prior to an entity being unleashed due to a player's action. */ -public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable { -+public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class PlayerUnleashEntityEvent extends EntityUnleashEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private final Player player; private boolean cancelled = false; diff --git a/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java b/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java -index 128e43cf12205f82f2b119a773208502cdccfdd4..f0a5fc39fa35ec71cf9cadb7d0cff379f5d8c6cb 100644 +index 128e43cf12205f82f2b119a773208502cdccfdd4..ca1fed3081e2b0a3271a2dfa0f49cce78bdb8e23 100644 --- a/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java +++ b/src/main/java/org/bukkit/event/raid/RaidTriggerEvent.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; @@ -1111,12 +1111,12 @@ index 128e43cf12205f82f2b119a773208502cdccfdd4..f0a5fc39fa35ec71cf9cadb7d0cff379 * enters a village). */ -public class RaidTriggerEvent extends RaidEvent implements Cancellable { -+public class RaidTriggerEvent extends RaidEvent implements Cancellable, me.lexikiq.HasPlayer { // Parchment ++public class RaidTriggerEvent extends RaidEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..39fa65a2b130c00b2ba5d90e2fa673a6d9c85f4b 100644 +index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..fdc3114adb18108ccd8acbab458bacededed4767 100644 --- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java +++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable; @@ -1124,12 +1124,12 @@ index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..39fa65a2b130c00b2ba5d90e2fa673a6 * commands, or use {@link PlayerCommandSendEvent}. */ -public class TabCompleteEvent extends Event implements Cancellable { -+public class TabCompleteEvent extends Event implements Cancellable, me.lexikiq.OptionalLocation { // Parchment ++public class TabCompleteEvent extends Event implements Cancellable, gg.projecteden.parchment.OptionalLocation { // Parchment private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/world/GenericGameEvent.java b/src/main/java/org/bukkit/event/world/GenericGameEvent.java -index 1746b66510e7b9c8708018582034b04714c29867..8f667cd2f05144bdc863f81b213f0a99b7f695b6 100644 +index 1746b66510e7b9c8708018582034b04714c29867..9c1c1acb91fc36e8811c27f7a6d8347249d95c16 100644 --- a/src/main/java/org/bukkit/event/world/GenericGameEvent.java +++ b/src/main/java/org/bukkit/event/world/GenericGameEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; @@ -1137,12 +1137,12 @@ index 1746b66510e7b9c8708018582034b04714c29867..8f667cd2f05144bdc863f81b213f0a99 * used internally by Sculk sensors. */ -public class GenericGameEvent extends WorldEvent implements Cancellable { -+public class GenericGameEvent extends WorldEvent implements Cancellable, me.lexikiq.HasLocation { // Parchment ++public class GenericGameEvent extends WorldEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment private static final HandlerList handlers = new HandlerList(); private final GameEvent event; diff --git a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java -index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..8baaa32094bacb181848904f18184fe6f90289df 100644 +index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..c28d62fc3dc359f9ebcf926094198ee3c92467aa 100644 --- a/src/main/java/org/bukkit/event/world/StructureGrowEvent.java +++ b/src/main/java/org/bukkit/event/world/StructureGrowEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -1150,12 +1150,12 @@ index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..8baaa32094bacb181848904f18184fe6 * Tree), (Mushroom {@literal ->} Huge Mushroom), naturally or using bonemeal. */ -public class StructureGrowEvent extends WorldEvent implements Cancellable { -+public class StructureGrowEvent extends WorldEvent implements Cancellable, me.lexikiq.OptionalPlayer { // Parchment ++public class StructureGrowEvent extends WorldEvent implements Cancellable, gg.projecteden.parchment.OptionalPlayer { // Parchment private static final HandlerList handlers = new HandlerList(); private boolean cancelled = false; private final Location location; diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java -index 8f00cb2e3bc9963e9657c1b2493e8b015a6664d0..7029f3e6fe4a5167265a70eb3113f25836c6e121 100644 +index 8864124c4a6ba48523ff217a78b9bac676da592f..b984678a49ff96fa7eca9a5450e1c690f6ec6953 100644 --- a/src/main/java/org/bukkit/inventory/Inventory.java +++ b/src/main/java/org/bukkit/inventory/Inventory.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; @@ -1163,12 +1163,12 @@ index 8f00cb2e3bc9963e9657c1b2493e8b015a6664d0..7029f3e6fe4a5167265a70eb3113f258 * @see #getStorageContents() */ -public interface Inventory extends Iterable { -+public interface Inventory extends Iterable, me.lexikiq.OptionalLocation { // Parchment ++public interface Inventory extends Iterable, gg.projecteden.parchment.OptionalLocation { // Parchment /** * Returns the size of the inventory diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index b06995aa57aa9cba0bb59f1d26d81015619a08e6..d599b72c2441a023dff8ee4bdaf587b21471f11f 100644 +index b06995aa57aa9cba0bb59f1d26d81015619a08e6..543d3cccc6dd04c66c89df09f4804333b8ce436e 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -1176,12 +1176,12 @@ index b06995aa57aa9cba0bb59f1d26d81015619a08e6..d599b72c2441a023dff8ee4bdaf587b2 * as it should. */ -public abstract class InventoryView { -+public abstract class InventoryView implements me.lexikiq.HasHumanEntity { // Parchment ++public abstract class InventoryView implements gg.projecteden.parchment.HasHumanEntity { // Parchment public static final int OUTSIDE = -999; /** * Represents various extra properties of certain inventory windows. diff --git a/src/main/java/org/bukkit/loot/LootContext.java b/src/main/java/org/bukkit/loot/LootContext.java -index e307f9fc45a4e5d742b78c4cda9a41d7f259a515..ab532552e4a10e03125b64e0884650a841275cca 100644 +index e307f9fc45a4e5d742b78c4cda9a41d7f259a515..a66d59321915b0dc76f8e2dd95f01f9e3adaefa6 100644 --- a/src/main/java/org/bukkit/loot/LootContext.java +++ b/src/main/java/org/bukkit/loot/LootContext.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; @@ -1189,7 +1189,7 @@ index e307f9fc45a4e5d742b78c4cda9a41d7f259a515..ab532552e4a10e03125b64e0884650a8 * generated loot. */ -public final class LootContext { -+public final class LootContext implements me.lexikiq.HasLocation { // Parchment ++public final class LootContext implements gg.projecteden.parchment.HasLocation { // Parchment public static final int DEFAULT_LOOT_MODIFIER = -1; diff --git a/patches/api/0003-Add-SoundEvent.patch b/patches/api/0003-Add-SoundEvent.patch index dd996e1..ba79b00 100644 --- a/patches/api/0003-Add-SoundEvent.patch +++ b/patches/api/0003-Add-SoundEvent.patch @@ -4,13 +4,13 @@ Date: Sat, 19 Jun 2021 22:55:10 -0400 Subject: [PATCH] Add SoundEvent -diff --git a/src/main/java/me/lexikiq/event/sound/EntitySoundEvent.java b/src/main/java/me/lexikiq/event/sound/EntitySoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..af2a2e87c8e266e908a9a72df1e469842cb7f19d +index 0000000000000000000000000000000000000000..5b74910e441a943597d3170ff00a9b9debab1d38 --- /dev/null -+++ b/src/main/java/me/lexikiq/event/sound/EntitySoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java @@ -0,0 +1,49 @@ -+package me.lexikiq.event.sound; ++package gg.projecteden.parchment.event.sound; + +import org.apache.commons.lang.Validate; +import org.bukkit.Sound; @@ -59,15 +59,15 @@ index 0000000000000000000000000000000000000000..af2a2e87c8e266e908a9a72df1e46984 + return origin.getWorld(); + } +} -diff --git a/src/main/java/me/lexikiq/event/sound/LocationCustomSoundEvent.java b/src/main/java/me/lexikiq/event/sound/LocationCustomSoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..f007bc326bea341735e7313789f5d110af5ac4ca +index 0000000000000000000000000000000000000000..59ad830329f31fdb13d402514b07ad851cb71dae --- /dev/null -+++ b/src/main/java/me/lexikiq/event/sound/LocationCustomSoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java @@ -0,0 +1,121 @@ -+package me.lexikiq.event.sound; ++package gg.projecteden.parchment.event.sound; + -+import me.lexikiq.HasLocation; ++import gg.projecteden.parchment.HasLocation; +import org.apache.commons.lang.Validate; +import org.bukkit.Keyed; +import org.bukkit.Location; @@ -186,15 +186,15 @@ index 0000000000000000000000000000000000000000..f007bc326bea341735e7313789f5d110 + return handlers; + } +} -diff --git a/src/main/java/me/lexikiq/event/sound/LocationNamedSoundEvent.java b/src/main/java/me/lexikiq/event/sound/LocationNamedSoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..81ba14fea8d04347a0fd3931b27188028c5ac859 +index 0000000000000000000000000000000000000000..0872f3850860fe7cca28aeabed6235cc2a805c94 --- /dev/null -+++ b/src/main/java/me/lexikiq/event/sound/LocationNamedSoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java @@ -0,0 +1,72 @@ -+package me.lexikiq.event.sound; ++package gg.projecteden.parchment.event.sound; + -+import me.lexikiq.HasLocation; ++import gg.projecteden.parchment.HasLocation; +import org.apache.commons.lang.Validate; +import org.bukkit.Location; +import org.bukkit.Sound; @@ -264,13 +264,13 @@ index 0000000000000000000000000000000000000000..81ba14fea8d04347a0fd3931b2718802 + this.vector = vector; + } +} -diff --git a/src/main/java/me/lexikiq/event/sound/NamedSoundEvent.java b/src/main/java/me/lexikiq/event/sound/NamedSoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..8623e03aa5ca094629bf6a20669ea8c5086d938c +index 0000000000000000000000000000000000000000..e51fd733424d9410fca24ba47883974efe9afad6 --- /dev/null -+++ b/src/main/java/me/lexikiq/event/sound/NamedSoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java @@ -0,0 +1,64 @@ -+package me.lexikiq.event.sound; ++package gg.projecteden.parchment.event.sound; + +import org.apache.commons.lang.Validate; +import org.bukkit.Sound; @@ -334,15 +334,15 @@ index 0000000000000000000000000000000000000000..8623e03aa5ca094629bf6a20669ea8c5 + return handlers; + } +} -diff --git a/src/main/java/me/lexikiq/event/sound/SoundEvent.java b/src/main/java/me/lexikiq/event/sound/SoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..5cc39ee9ae52a52bebde46236162f1260b96b3a0 +index 0000000000000000000000000000000000000000..ae7abca5d88fc7f650559b220de73b6f20a6a899 --- /dev/null -+++ b/src/main/java/me/lexikiq/event/sound/SoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java @@ -0,0 +1,97 @@ -+package me.lexikiq.event.sound; ++package gg.projecteden.parchment.event.sound; + -+import me.lexikiq.OptionalHumanEntity; ++import gg.projecteden.parchment.OptionalHumanEntity; +import org.apache.commons.lang.Validate; +import org.bukkit.SoundCategory; +import org.bukkit.World; diff --git a/patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch b/patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch index c4c485f..ff2b8a9 100644 --- a/patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch +++ b/patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch @@ -4,13 +4,13 @@ Date: Thu, 13 May 2021 23:55:02 -0400 Subject: [PATCH] Add PlayerUseRespawnAnchorEvent -diff --git a/src/main/java/me/lexikiq/event/player/PlayerUseRespawnAnchorEvent.java b/src/main/java/me/lexikiq/event/player/PlayerUseRespawnAnchorEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/player/PlayerUseRespawnAnchorEvent.java b/src/main/java/gg/projecteden/parchment/event/player/PlayerUseRespawnAnchorEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..fcf552bb84a10794dda178b337768efe4781facd +index 0000000000000000000000000000000000000000..c2dfb2e8dfe6462b12c2425225d2f7a66a53de8b --- /dev/null -+++ b/src/main/java/me/lexikiq/event/player/PlayerUseRespawnAnchorEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/player/PlayerUseRespawnAnchorEvent.java @@ -0,0 +1,117 @@ -+package me.lexikiq.event.player; ++package gg.projecteden.parchment.event.player; + +import com.google.common.base.Preconditions; +import org.bukkit.block.Block; diff --git a/patches/api/0006-Expanded-Adventure-support.patch b/patches/api/0006-Expanded-Adventure-support.patch index eb36c78..5751986 100644 --- a/patches/api/0006-Expanded-Adventure-support.patch +++ b/patches/api/0006-Expanded-Adventure-support.patch @@ -188,28 +188,3 @@ index bd213cabddd8752e609544f24cfba95405726155..7e89cadecde96f9c2394446669dc4d98 /** * Gets the DyeColor with the given wool data value. * -diff --git a/src/main/java/org/bukkit/Keyed.java b/src/main/java/org/bukkit/Keyed.java -index 32c92621c2c15eec14c50965f5ecda00c46e6c80..3876a03ab9df9a0aef7a5c05a38b39b07a6dd285 100644 ---- a/src/main/java/org/bukkit/Keyed.java -+++ b/src/main/java/org/bukkit/Keyed.java -@@ -5,7 +5,7 @@ import org.jetbrains.annotations.NotNull; - /** - * Represents an object which has a {@link NamespacedKey} attached to it. - */ --public interface Keyed { -+public interface Keyed extends net.kyori.adventure.key.Keyed { // Parchment - - /** - * Return the namespaced identifier for this object. -@@ -14,4 +14,11 @@ public interface Keyed { - */ - @NotNull - NamespacedKey getKey(); -+ -+ // Parchment start -+ @Override -+ default net.kyori.adventure.key.@org.checkerframework.checker.nullness.qual.NonNull Key key() { -+ return getKey(); -+ } -+ // Parchment end - } diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch index 618cfb1..fcecdb3 100644 --- a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 014c9984018ad5e51a26228a137e1ba4eb3e80c8..5606c09f62b7ad0cf33bb507d71830581114afd4 100644 +index 014c9984018ad5e51a26228a137e1ba4eb3e80c8..532040d23ef01513d1700f2fa3f09dc580784fc2 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java @@ -218,4 +218,17 @@ public interface UnsafeValues { @@ -23,6 +23,6 @@ index 014c9984018ad5e51a26228a137e1ba4eb3e80c8..5606c09f62b7ad0cf33bb507d7183058 + * @param face cardinal direction + * @return if the item can be placed + */ -+ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable me.lexikiq.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); ++ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); + // Parchment end } diff --git a/patches/api/0008-Expose-NMS-ordinals.patch b/patches/api/0008-Expose-NMS-ordinals.patch index f25a1d6..f9e1179 100644 --- a/patches/api/0008-Expose-NMS-ordinals.patch +++ b/patches/api/0008-Expose-NMS-ordinals.patch @@ -5,13 +5,13 @@ Subject: [PATCH] Expose NMS ordinals diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 5606c09f62b7ad0cf33bb507d71830581114afd4..91ce90be864c20cab92525693d37b07f94d978af 100644 +index 532040d23ef01513d1700f2fa3f09dc580784fc2..130c0e7facd1ad618dade0a2d8f48bb5d2031942 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java @@ -230,5 +230,12 @@ public interface UnsafeValues { * @return if the item can be placed */ - java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable me.lexikiq.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); + java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); + + /** + * Gets the ID/ordinal of an entity according to NMS. diff --git a/patches/api/0009-Expose-MCUtil-Executors.patch b/patches/api/0009-Expose-MCUtil-Executors.patch index 704cd7f..9e0df12 100644 --- a/patches/api/0009-Expose-MCUtil-Executors.patch +++ b/patches/api/0009-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index c34cfba8f9ed7e9dbd0b6b8ffef9fba46abff046..451ea2c118b661725047f344c91814668d25cea5 100644 +index e48af3822e9f118399c3a1c9358c56efae12e0da..1689306bb9a9fc251574877427ca846e6def7003 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1837,4 +1837,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1888,4 +1888,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull io.papermc.paper.datapack.DatapackManager getDatapackManager(); // Paper end diff --git a/patches/api/0010-Add-BlockDropResourcesEvent.patch b/patches/api/0010-Add-BlockDropResourcesEvent.patch index 016b41b..79b52b4 100644 --- a/patches/api/0010-Add-BlockDropResourcesEvent.patch +++ b/patches/api/0010-Add-BlockDropResourcesEvent.patch @@ -7,13 +7,13 @@ Adds an event which allows plugin developers to easily get the items being dropped by any block instead of only blocks broken by players. -diff --git a/src/main/java/me/lexikiq/event/block/BlockDropResourcesEvent.java b/src/main/java/me/lexikiq/event/block/BlockDropResourcesEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/block/BlockDropResourcesEvent.java b/src/main/java/gg/projecteden/parchment/event/block/BlockDropResourcesEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..5ac4994b3e530f7e7636dddfdf24dec12e74ebf7 +index 0000000000000000000000000000000000000000..1547d962e9c27411915a34efe0db0c3dff99c6e5 --- /dev/null -+++ b/src/main/java/me/lexikiq/event/block/BlockDropResourcesEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/block/BlockDropResourcesEvent.java @@ -0,0 +1,45 @@ -+package me.lexikiq.event.block; ++package gg.projecteden.parchment.event.block; + +import org.bukkit.block.Block; +import org.bukkit.event.HandlerList; diff --git a/patches/api/0011-Add-Furnace-Recipe-API.patch b/patches/api/0011-Add-Furnace-Recipe-API.patch index bcc1d6d..b0ee3f5 100644 --- a/patches/api/0011-Add-Furnace-Recipe-API.patch +++ b/patches/api/0011-Add-Furnace-Recipe-API.patch @@ -7,13 +7,13 @@ Temporary API to get the result of smelting an item in a (type of) furnace. Will eventually (hopefully) be replaced by a more extensive Paper PR with support for all recipes. -diff --git a/src/main/java/me/lexikiq/inventory/RecipeType.java b/src/main/java/me/lexikiq/inventory/RecipeType.java +diff --git a/src/main/java/gg/projecteden/parchment/inventory/RecipeType.java b/src/main/java/gg/projecteden/parchment/inventory/RecipeType.java new file mode 100644 -index 0000000000000000000000000000000000000000..f8f707483bf08142cdaf6c6ff9b1241832e9134f +index 0000000000000000000000000000000000000000..28c01caa9d6379046f6af6612719b40459a89d17 --- /dev/null -+++ b/src/main/java/me/lexikiq/inventory/RecipeType.java ++++ b/src/main/java/gg/projecteden/parchment/inventory/RecipeType.java @@ -0,0 +1,50 @@ -+package me.lexikiq.inventory; ++package gg.projecteden.parchment.inventory; + +/** + * A type of crafting recipe. @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..f8f707483bf08142cdaf6c6ff9b12418 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 4f673e9123145dc78564dc3eef0edf75795dafc2..85902538dae4a76ee79bc2d9921f2b4ec9f3c30d 100644 +index 1f8a51897d9de00f0004ab1de479198390483f7d..a74ee256922b220c1de31bb9784a78ffde59499d 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3764,6 +3764,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3772,6 +3772,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); @@ -80,17 +80,17 @@ index 4f673e9123145dc78564dc3eef0edf75795dafc2..85902538dae4a76ee79bc2d9921f2b4e + */ + @Nullable + default ItemStack smeltItem(@NotNull ItemStack toSmelt) { -+ return smeltItem(toSmelt, me.lexikiq.inventory.RecipeType.SMELTING); ++ return smeltItem(toSmelt, gg.projecteden.parchment.inventory.RecipeType.SMELTING); + } + + /** + * Returns the item that will result from smelting the input item, if applicable. + *

+ * Applicable values for {@code recipeType} are -+ * {@link me.lexikiq.inventory.RecipeType#SMELTING SMELTING}, -+ * {@link me.lexikiq.inventory.RecipeType#BLASTING BLASTING}, -+ * {@link me.lexikiq.inventory.RecipeType#SMOKING SMOKING}, -+ * and {@link me.lexikiq.inventory.RecipeType#CAMPFIRE_COOKING CAMPFIRE_COOKING}. ++ * {@link gg.projecteden.parchment.inventory.RecipeType#SMELTING SMELTING}, ++ * {@link gg.projecteden.parchment.inventory.RecipeType#BLASTING BLASTING}, ++ * {@link gg.projecteden.parchment.inventory.RecipeType#SMOKING SMOKING}, ++ * and {@link gg.projecteden.parchment.inventory.RecipeType#CAMPFIRE_COOKING CAMPFIRE_COOKING}. + * An {@link IllegalArgumentException} will be thrown if another value is supplied. + * + * @param toSmelt the item to simulate smelting @@ -98,7 +98,7 @@ index 4f673e9123145dc78564dc3eef0edf75795dafc2..85902538dae4a76ee79bc2d9921f2b4e + * @return the resulting item, or null + */ + @Nullable -+ ItemStack smeltItem(@NotNull ItemStack toSmelt, me.lexikiq.inventory.@NotNull RecipeType recipeType); ++ ItemStack smeltItem(@NotNull ItemStack toSmelt, gg.projecteden.parchment.inventory.@NotNull RecipeType recipeType); + // Parchment end + /** diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 8a9f47f..13885b8 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,21 +5,21 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index f442236efe30d7d9e0c6a8dfb0f040540dc62753..fdb196e44535eebf63a6c0e0ee98280e21d9b450 100644 +index da31e84cb558e6fad9cab015cfae753ce7be7db0..a1aecd789f09ef1e89e2a9c237cd8e1f9a47567b 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -22,8 +22,8 @@ repositories { +@@ -18,8 +18,8 @@ repositories { } dependencies { -- implementation(project(":Paper-API")) -- implementation(project(":Paper-MojangAPI")) +- implementation(project(":paper-api")) +- implementation(project(":paper-mojangapi")) + implementation(project(":Parchment-API")) // Parchment -+ implementation("io.papermc.paper:paper-mojangapi:1.17.1-R0.1-SNAPSHOT") // Parchment ++ implementation("io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT") // Parchment // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -75,7 +75,7 @@ tasks.jar { +@@ -68,7 +68,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -28,9 +28,9 @@ index f442236efe30d7d9e0c6a8dfb0f040540dc62753..fdb196e44535eebf63a6c0e0ee98280e "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -97,6 +97,26 @@ publishing { - classifier = null - } +@@ -85,6 +85,26 @@ tasks.jar { + publishing { + publications.create("maven") { artifact(tasks.shadowJar) + // Parchment start + groupId = project.group as String? @@ -55,24 +55,15 @@ index f442236efe30d7d9e0c6a8dfb0f040540dc62753..fdb196e44535eebf63a6c0e0ee98280e } } -@@ -141,7 +161,7 @@ tasks.shadowJar { - - // Needed for Paperclip's install to maven local feature - from(generatePom) { -- into("META-INF/maven/io.papermc.paper/paper") -+ into("META-INF/maven/${project.group}/${project.name.toLowerCase(Locale.ENGLISH)}") // Parchment - rename { "pom.xml" } - } - -@@ -202,7 +222,7 @@ tasks.test { - fun TaskContainer.registerRunTask( - name: String, block: JavaExec.() -> Unit +@@ -156,7 +176,7 @@ fun TaskContainer.registerRunTask( + name: String, + block: JavaExec.() -> Unit ): TaskProvider = register(name) { - group = "paper" + group = "paperweight" // Parchment + mainClass.set("org.bukkit.craftbukkit.Main") standardInput = System.`in` - workingDir = rootProject.layout.projectDirectory.dir( - providers.gradleProperty("runWorkDir").forUseAtConfigurationTime().orElse("run") + workingDir = rootProject.layout.projectDirectory diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..52126870f1fc15a9ddce4452673b236ea692860f 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java @@ -111,10 +102,10 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 5a4172faaf960d48939d6a485719041987df9242..9e73372f15b42a59fb9083e3210e6748e1b01789 100644 +index 481a5dbad82f3f8dd5b1bf8ab207d82ec73d5bbd..cc685535868f594e50b9595dc073f71f4e1a2966 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1729,7 +1729,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundPacket(sound, category, x, y, z, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new me.lexikiq.event.sound.LocationNamedSoundEvent(player == null ? null : player.getBukkitEntity(), getWorld(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment + public void playSound(@Nullable Player except, double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch) { +- this.server.getPlayerList().broadcast(except, x, y, z, volume > 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundPacket(sound, category, x, y, z, volume, pitch)); ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(null, getWorld(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment } @Override - public void playSound(@Nullable Player player, Entity entity, SoundEvent sound, SoundSource category, float volume, float pitch) { -- this.server.getPlayerList().broadcast(player, entity.getX(), entity.getY(), entity.getZ(), volume > 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundEntityPacket(sound, category, entity, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new me.lexikiq.event.sound.EntitySoundEvent(player == null ? null : player.getBukkitEntity(), entity.getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment + public void playSound(@Nullable Player except, Entity entity, SoundEvent sound, SoundSource category, float volume, float pitch) { +- this.server.getPlayerList().broadcast(except, entity.getX(), entity.getY(), entity.getZ(), volume > 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundEntityPacket(sound, category, entity, volume, pitch)); ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.EntitySoundEvent(null, entity.getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment } @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 11f46c1b8f4c8414e0667d1873542c17d6e01f2a..1d446104099856fd0ddbff28a1d280ee80613f39 100644 +index 7b23535a680d2a8534dcb8dd87770f66fb982c13..d522d26b388dbd3b61ca82e5d5ea83f5e1fb89eb 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2174,7 +2174,7 @@ public class ServerPlayer extends Player { +@@ -2189,7 +2189,7 @@ public class ServerPlayer extends Player { @Override public void playNotifySound(SoundEvent event, SoundSource category, float volume, float pitch) { - this.connection.send(new ClientboundSoundPacket(event, category, this.getX(), this.getY(), this.getZ(), volume, pitch)); -+ CraftEventFactory.playSoundEvent(new me.lexikiq.event.sound.LocationNamedSoundEvent(getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(event), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this); // Parchment ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(event), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this); // Parchment } @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index eaa005c1c9b4386bcdbe1d6eb28c3eca7635066c..32279bda7f5fe3400216d8cb0e6b75e29aa4156f 100644 +index 042be2cf60a9d01698808d84f2e537a5eb952079..9d624f8dc709bc43889bd5872582ac6f8e19da75 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -965,7 +965,7 @@ public abstract class PlayerList { +@@ -963,7 +963,7 @@ public abstract class PlayerList { if (flag2 && !isLocAltered) { BlockState data = worldserver1.getBlockState(blockposition); worldserver1.setBlock(blockposition, data.setValue(RespawnAnchorBlock.CHARGE, data.getValue(RespawnAnchorBlock.CHARGE) - 1), 3); @@ -50,23 +50,23 @@ index eaa005c1c9b4386bcdbe1d6eb28c3eca7635066c..32279bda7f5fe3400216d8cb0e6b75e2 } // Added from changeDimension 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 94e76e295dbd0f3bac4b30a3e7338cd56a971207..4f55f1bd49137b60957a05faad0e0c2a9dec07dc 100644 +index 2c00a766130a7f682fc6c4c74321e10637ca7932..2f6a7bb94f8fee19f8575ed640b33b2badb5e641 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1832,7 +1832,7 @@ public abstract class Player extends LivingEntity { +@@ -1834,7 +1834,7 @@ public abstract class Player extends LivingEntity { private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { fromEntity.level.playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself if (fromEntity instanceof ServerPlayer) { - ((ServerPlayer) fromEntity).connection.send(new ClientboundSoundPacket(soundEffect, soundCategory, x, y, z, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new me.lexikiq.event.sound.LocationNamedSoundEvent(fromEntity.getBukkitEntity(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(soundEffect), org.bukkit.SoundCategory.valueOf(soundCategory.name()), volume, pitch), (ServerPlayer) fromEntity); // Parchment ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(fromEntity.getBukkitEntity(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(soundEffect), org.bukkit.SoundCategory.valueOf(soundCategory.name()), volume, pitch), (ServerPlayer) fromEntity); // Parchment } } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index a79ba23ecf887ecbb6e095140f019ebb6fd0a6f7..5112edc5e68a386e9bb16ac0ec9d998e7df06f3c 100644 +index 7131226de05bc57830f7a68ba545ebfd19d33a59..56b5f5f9992c9f9fea7a606684efd44c901e3525 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -27,7 +27,7 @@ import net.minecraft.nbt.ListTag; +@@ -26,7 +26,7 @@ import net.minecraft.nbt.ListTag; import net.minecraft.nbt.NbtUtils; import net.minecraft.network.chat.Component; import net.minecraft.network.chat.TranslatableComponent; @@ -85,16 +85,16 @@ index a79ba23ecf887ecbb6e095140f019ebb6fd0a6f7..5112edc5e68a386e9bb16ac0ec9d998e } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 771a00ae7f467660b0c39ffeee05281e114df378..576f01eb7c6fce8955f760c0b36e23c16c97e7a6 100644 +index c667baa2da8222eb66344c8f1cc0fed416c4df01..c73e771ce5b428864e7d4f5e852e2103f48f9cfb 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1882,4 +1882,77 @@ public class CraftEventFactory { +@@ -1888,4 +1888,77 @@ public class CraftEventFactory { return event.callEvent(); } // Paper end + + // Parchment start -+ private static net.minecraft.network.protocol.Packet handleSoundEvent(me.lexikiq.event.sound.SoundEvent _event) { ++ private static net.minecraft.network.protocol.Packet handleSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent _event) { + if (!_event.callEvent()) { + return null; + } else { @@ -102,28 +102,28 @@ index 771a00ae7f467660b0c39ffeee05281e114df378..576f01eb7c6fce8955f760c0b36e23c1 + float pitch = _event.getPitch(); + net.minecraft.sounds.SoundSource source = net.minecraft.sounds.SoundSource.valueOf(_event.getCategory().name()); + -+ if (_event instanceof me.lexikiq.event.sound.NamedSoundEvent namedSoundEvent) { ++ if (_event instanceof gg.projecteden.parchment.event.sound.NamedSoundEvent namedSoundEvent) { + net.minecraft.sounds.SoundEvent sound = org.bukkit.craftbukkit.CraftSound.getSoundEffect(namedSoundEvent.getSound()); + -+ if (_event instanceof me.lexikiq.event.sound.LocationNamedSoundEvent event) { ++ if (_event instanceof gg.projecteden.parchment.event.sound.LocationNamedSoundEvent event) { + org.bukkit.util.Vector pos = event.getVector(); + return new net.minecraft.network.protocol.game.ClientboundSoundPacket(sound, source, pos.getX(), pos.getY(), pos.getZ(), volume, pitch); + } else { -+ me.lexikiq.event.sound.EntitySoundEvent event = (me.lexikiq.event.sound.EntitySoundEvent) _event; ++ gg.projecteden.parchment.event.sound.EntitySoundEvent event = (gg.projecteden.parchment.event.sound.EntitySoundEvent) _event; + return new net.minecraft.network.protocol.game.ClientboundSoundEntityPacket(sound, source, ((CraftEntity) event.getOrigin()).getHandle(), volume, pitch); + } + } else { -+ me.lexikiq.event.sound.LocationCustomSoundEvent event = (me.lexikiq.event.sound.LocationCustomSoundEvent) _event; ++ gg.projecteden.parchment.event.sound.LocationCustomSoundEvent event = (gg.projecteden.parchment.event.sound.LocationCustomSoundEvent) _event; + org.bukkit.util.Vector pos = event.getVector(); + return new net.minecraft.network.protocol.game.ClientboundCustomSoundPacket(CraftNamespacedKey.toMinecraft(event.getKey()), source, org.bukkit.craftbukkit.util.CraftVector.toNMS(pos), volume, pitch); + } + } + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, java.util.function.Consumer> soundPlayer) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, java.util.function.Consumer> soundPlayer) { + org.apache.commons.lang3.Validate.notNull(event, "event"); + org.apache.commons.lang3.Validate.notNull(soundPlayer, "soundPlayer"); -+ if (!(event instanceof me.lexikiq.event.sound.LocationNamedSoundEvent || event instanceof me.lexikiq.event.sound.LocationCustomSoundEvent || event instanceof me.lexikiq.event.sound.EntitySoundEvent)) { ++ if (!(event instanceof gg.projecteden.parchment.event.sound.LocationNamedSoundEvent || event instanceof gg.projecteden.parchment.event.sound.LocationCustomSoundEvent || event instanceof gg.projecteden.parchment.event.sound.EntitySoundEvent)) { + throw new IllegalArgumentException("Unknown sound event: " + event.getClass().getName()); + } + java.util.concurrent.CompletableFuture.supplyAsync(() -> handleSoundEvent(event), net.minecraft.server.MCUtil.asyncExecutor).thenAcceptAsync(packet -> { @@ -132,29 +132,29 @@ index 771a00ae7f467660b0c39ffeee05281e114df378..576f01eb7c6fce8955f760c0b36e23c1 + }, net.minecraft.server.MCUtil.asyncExecutor); + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, CraftPlayer sendTo) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, CraftPlayer sendTo) { + playSoundEvent(event, sendTo.getHandle()); + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, ServerPlayer sendTo) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, ServerPlayer sendTo) { + playSoundEvent(event, sendTo.connection); + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, net.minecraft.server.network.ServerPlayerConnection sendTo) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.network.ServerPlayerConnection sendTo) { + playSoundEvent(event, sendTo::send); + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, net.minecraft.server.MinecraftServer server, double radius) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.MinecraftServer server, double radius) { + playSoundEvent(event, server.getPlayerList(), radius); + } + -+ public static void playSoundEvent(me.lexikiq.event.sound.SoundEvent event, net.minecraft.server.players.PlayerList playerList, double radius) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.players.PlayerList playerList, double radius) { + final net.minecraft.world.entity.player.Player player = event.getPlayer() == null ? null : ((org.bukkit.craftbukkit.entity.CraftHumanEntity) event.getPlayer()).getHandle(); + final net.minecraft.resources.ResourceKey world = ((CraftWorld) event.getWorld()).getHandle().dimension(); + final org.bukkit.util.Vector pos; -+ if (event instanceof me.lexikiq.HasLocation hasLoc) { ++ if (event instanceof gg.projecteden.parchment.HasLocation hasLoc) { + pos = hasLoc.getLocation().toVector(); -+ } else if (event instanceof me.lexikiq.event.sound.EntitySoundEvent entityEvent) { ++ } else if (event instanceof gg.projecteden.parchment.event.sound.EntitySoundEvent entityEvent) { + pos = entityEvent.getOrigin().getLocation().toVector(); + } else { + throw new IllegalArgumentException("Could not determine location of sound event"); diff --git a/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch b/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch index 019522e..c579f5d 100644 --- a/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch +++ b/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PlayerUseRespawnAnchorEvent diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 0a5d563700c9f806139001181f01fa9d0111f792..88439b8f82a97a9763dadfc6c9dbaf0912ab3eb7 100644 +index 07e893f1859abe3c2a765694c21309d60346ca82..86692a83fb9acd3a501da58e6d509865b49931fe 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -52,33 +52,51 @@ public class RespawnAnchorBlock extends Block { @@ -16,30 +16,30 @@ index 0a5d563700c9f806139001181f01fa9d0111f792..88439b8f82a97a9763dadfc6c9dbaf09 + // Parchment start -- PlayerUseRespawnAnchorEvent + org.bukkit.entity.Player bukkitPlayer = player.getBukkitEntity() instanceof org.bukkit.entity.Player ? (org.bukkit.entity.Player) player.getBukkitEntity() : null; + org.bukkit.block.Block block = org.bukkit.craftbukkit.block.CraftBlock.at(world, pos); -+ me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult result; ++ gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult result; if (hand == InteractionHand.MAIN_HAND && !isRespawnFuel(itemStack) && isRespawnFuel(player.getItemInHand(InteractionHand.OFF_HAND))) { return InteractionResult.PASS; } else if (isRespawnFuel(itemStack) && canBeCharged(state)) { -+ result = me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE; ++ result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE; + } else if (state.getValue(CHARGE) == 0) { -+ result = me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING; ++ result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING; + } else if (!canSetSpawn(world) && !world.isClientSide) { -+ result = me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE; ++ result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE; + } else if (!world.isClientSide) { -+ result = me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.SET_SPAWN; ++ result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.SET_SPAWN; + } else { + return InteractionResult.SUCCESS; + } + + if (bukkitPlayer != null) { -+ me.lexikiq.event.player.PlayerUseRespawnAnchorEvent event = new me.lexikiq.event.player.PlayerUseRespawnAnchorEvent(bukkitPlayer, block, result); ++ gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent event = new gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent(bukkitPlayer, block, result); + event.callEvent(); + result = event.getResult(); + } + -+ if (result == me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING) { ++ if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING) { + return InteractionResult.PASS; -+ } else if (result == me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) { ++ } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) { charge(world, pos, state); if (!player.getAbilities().instabuild) { itemStack.shrink(1); @@ -54,7 +54,7 @@ index 0a5d563700c9f806139001181f01fa9d0111f792..88439b8f82a97a9763dadfc6c9dbaf09 - } - - return InteractionResult.sidedSuccess(world.isClientSide); -+ } else if (result == me.lexikiq.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE) { ++ } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE) { + this.explode(state, world, pos); + return InteractionResult.CONSUME; } else { diff --git a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index 6ef53c9..5dd44b6 100644 --- a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -79,7 +79,7 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..52cce7422c2a99e3de37f87ac7041516 return "DamageSource (" + this.msgId + ")"; } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 29aa428e019681af8d6b0020c12b18660ff6af6c..9b2276555e0d52996cb84cc6ca492263e6905780 100644 +index e17a3afa41fd628d2c4a3637ae19418e258a99b8..5a4489dff8b6ef70d52ba19ee8604b77d9c73791 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java @@ -101,10 +101,11 @@ public class EnderDragon extends Mob implements Enemy { @@ -96,10 +96,10 @@ index 29aa428e019681af8d6b0020c12b18660ff6af6c..9b2276555e0d52996cb84cc6ca492263 this.setHealth(this.getMaxHealth()); this.noPhysics = true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 132140e00865fcf84ebe03ffcbc2f30ac11a0b35..8245ec990c7a37839b0eedbcdbf834df2b421e61 100644 +index 6795132318a4e8b4c7a33b6f4b89a730ea66b97f..9d78f8bcf958a0ca2b12c16b58d0bee4e2a3604c 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -453,6 +453,13 @@ public class Explosion { +@@ -450,6 +450,13 @@ public class Explosion { return this.toBlow; } @@ -114,10 +114,10 @@ index 132140e00865fcf84ebe03ffcbc2f30ac11a0b35..8245ec990c7a37839b0eedbcdbf834df NONE, BREAK, DESTROY; diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index e3ff04fe21761db65fb03c5e58ecd5823f0507c6..943857d58d68628d3a79d2d687006a4fb89b75f3 100644 +index 20c0030d566012146021613325c6a979f392740e..a0a052095815ed63f06837155b48b0d84f404240 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java -@@ -146,7 +146,10 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock +@@ -145,7 +145,10 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock world.removeBlock(blockposition1, false); } @@ -130,7 +130,7 @@ index e3ff04fe21761db65fb03c5e58ecd5823f0507c6..943857d58d68628d3a79d2d687006a4f } } diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 88439b8f82a97a9763dadfc6c9dbaf0912ab3eb7..73a9b765b58bb547712c014c8b9086535b3cf6fa 100644 +index 86692a83fb9acd3a501da58e6d509865b49931fe..438ea548644aa9570a09fa4d4a06bde5f5c30567 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -138,7 +138,10 @@ public class RespawnAnchorBlock extends Block { @@ -146,10 +146,10 @@ index 88439b8f82a97a9763dadfc6c9dbaf0912ab3eb7..73a9b765b58bb547712c014c8b908653 public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b2f49ee945dae88c15a76e7ba5433b7ca150e9d6..a7679036d31f0262a68dd1bfb2871901b1d41825 100644 +index c73e771ce5b428864e7d4f5e852e2103f48f9cfb..4f38cac0cc172cb3d96a0f36c656326447c26202 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -955,7 +955,7 @@ public class CraftEventFactory { +@@ -961,7 +961,7 @@ public class CraftEventFactory { CraftEventFactory.entityDamage = null; EntityDamageEvent event; if (damager == null) { @@ -158,21 +158,21 @@ index b2f49ee945dae88c15a76e7ba5433b7ca150e9d6..a7679036d31f0262a68dd1bfb2871901 } else if (entity instanceof EnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); } else { -@@ -991,7 +991,7 @@ public class CraftEventFactory { +@@ -997,7 +997,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled, source.isCritical()); // Paper - add critical damage API } else if (source == DamageSource.OUT_OF_WORLD) { - EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions); -+ EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, entity.getBukkitEntity().getLocation(), modifiers, modifierFunctions); // Parchment ++ EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, entity.getBukkitEntity().getLocation(), modifiers, modifierFunctions); // Parchment - add location event.setCancelled(cancelled); CraftEventFactory.callEvent(event); if (!event.isCancelled()) { -@@ -999,7 +999,7 @@ public class CraftEventFactory { +@@ -1005,7 +1005,7 @@ public class CraftEventFactory { } return event; } else if (source == DamageSource.LAVA) { -- EntityDamageEvent event = (new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.LAVA, modifiers, modifierFunctions)); -+ EntityDamageEvent event = (new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.LAVA, entity.getBukkitEntity().getLocation().toBlockLocation(), modifiers, modifierFunctions)); // Parchment +- EntityDamageEvent event = (new EntityDamageByBlockEvent(CraftEventFactory.blockDamage, entity.getBukkitEntity(), DamageCause.LAVA, modifiers, modifierFunctions)); ++ EntityDamageEvent event = (new EntityDamageByBlockEvent(CraftEventFactory.blockDamage, entity.getBukkitEntity(), DamageCause.LAVA, entity.getBukkitEntity().getLocation().toBlockLocation(), modifiers, modifierFunctions)); // Parchment - add location event.setCancelled(cancelled); CraftEventFactory.callEvent(event); if (!event.isCancelled()) { diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index f1de4de..96d9965 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,16 +5,16 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 424f3a9a645d57ad43c52932f5b388b5f146b9f0..a50eb7ba668ba4410c7a7fee629bdac958734311 100644 +index 90e68a8cfd00e4ad7ffaddfc8e8d5df26c49cf7a..d05e7b7f7ed94849142f74b19fbce7d83752e7fa 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -559,6 +559,55 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -560,6 +560,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } // Paper end + // Parchment start + @Override -+ public java.util.concurrent.CompletableFuture canPlaceItemOn(ItemStack item, me.lexikiq.OptionalHumanEntity player, org.bukkit.block.Block block, org.bukkit.block.BlockFace face) { ++ public java.util.concurrent.CompletableFuture canPlaceItemOn(ItemStack item, gg.projecteden.parchment.OptionalHumanEntity player, org.bukkit.block.Block block, org.bukkit.block.BlockFace face) { + org.apache.commons.lang3.Validate.notNull(item, "item"); + org.apache.commons.lang3.Validate.notNull(block, "block"); + org.apache.commons.lang3.Validate.notNull(face, "face"); diff --git a/patches/server/0007-Expose-EntityType-Ordinals.patch b/patches/server/0007-Expose-EntityType-Ordinals.patch index 590b667..b60fe5e 100644 --- a/patches/server/0007-Expose-EntityType-Ordinals.patch +++ b/patches/server/0007-Expose-EntityType-Ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose EntityType Ordinals diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 1c446dba5de89698397041ee38a2e1a00bec8a56..d12e936920c03cafd18f6c9a509c85c31ab7ba45 100644 +index 419a7e9614af2328ed401fc954196056243a984c..b657453b61a29c920b87e94d23fc09e9be7fc296 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -149,6 +149,8 @@ import org.apache.logging.log4j.Logger; +@@ -148,6 +148,8 @@ import org.apache.logging.log4j.Logger; public class EntityType implements EntityTypeTest { @@ -17,20 +17,20 @@ index 1c446dba5de89698397041ee38a2e1a00bec8a56..d12e936920c03cafd18f6c9a509c85c3 private static final Logger LOGGER = LogManager.getLogger(); public static final String ENTITY_TAG = "EntityTag"; private static final float MAGIC_HORSE_WIDTH = 1.3964844F; -@@ -283,9 +285,31 @@ public class EntityType implements EntityTypeTest { +@@ -282,9 +284,31 @@ public class EntityType implements EntityTypeTest { private final EntityDimensions dimensions; private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error -- return (EntityType) Registry.register((Registry) Registry.ENTITY_TYPE, id, (Object) type.build(id)); +- return (EntityType) Registry.register(Registry.ENTITY_TYPE, id, (EntityType) type.build(id)); // CraftBukkit - decompile error + // Parchment start + EntityType build = type.build(id); + ordinals.put(build, ordinal); + ordinal += 1; -+ return (EntityType) Registry.register((Registry) Registry.ENTITY_TYPE, id, (Object) build); ++ return (EntityType) Registry.register(Registry.ENTITY_TYPE, id, (EntityType) build); } + public int ordinal() { -+ return ordinals.get(this); ++ return ordinals.get(this); // CraftBukkit - decompile error + } + + @Override @@ -51,10 +51,10 @@ index 1c446dba5de89698397041ee38a2e1a00bec8a56..d12e936920c03cafd18f6c9a509c85c3 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index a50eb7ba668ba4410c7a7fee629bdac958734311..00a8ded3ae58b00f2c833953908f1d43765f4557 100644 +index d05e7b7f7ed94849142f74b19fbce7d83752e7fa..42730bc76dfee91d745087edb2a21d0cc39a885f 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -606,6 +606,18 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -607,6 +607,18 @@ public final class CraftMagicNumbers implements UnsafeValues { final net.minecraft.world.item.context.BlockPlaceContext ctx = context; return future.completeAsync(() -> blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); } diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch index 03ef0b4..7314e25 100644 --- a/patches/server/0008-Add-Player-setGameProfile.patch +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile 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 266d676118e17af48e21370211c015898eba9691..16bc55fb8efbbda971b704446a07e9f732c1dfa5 100644 +index 2f6a7bb94f8fee19f8575ed640b33b2badb5e641..ca012d62cbc9b92174427cd7a4091c93528f249d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1451,6 +1451,12 @@ public abstract class Player extends LivingEntity { +@@ -1453,6 +1453,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0009-Expose-MCUtil-Executors.patch b/patches/server/0009-Expose-MCUtil-Executors.patch index 8dfffad..8990510 100644 --- a/patches/server/0009-Expose-MCUtil-Executors.patch +++ b/patches/server/0009-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 9f5bbb9e684ec11bc979ca2ece4eb73da0e3d1e8..9b92bd247f8752515830d1dea13f0137ae1621e1 100644 +index 930772d4326aa106f9a267bc750eda11ca0ea355..d7dc482819c58e8bb563fec76096286c7d070a22 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2720,4 +2720,16 @@ public final class CraftServer implements Server { +@@ -2816,4 +2816,16 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index da12380..3bc8907 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -8,19 +8,19 @@ to easily get the items being dropped by any block instead of only blocks broken by players. diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 8c30e28b97ac7e8b54322c903e0b75ee8135620b..4ca85a02a1eb46b5958aae55946c67cefb85f461 100644 +index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700d4afe0f0 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -306,7 +306,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -304,7 +304,7 @@ public class Block extends BlockBehaviour implements ItemLike { ServerLevel worldserver = lootContext.getLevel(); BlockPos blockposition = new BlockPos((Vec3) lootContext.getParameter(LootContextParams.ORIGIN)); - state.getDrops(lootContext).forEach((itemstack) -> { + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(worldserver, blockposition, state.getDrops(lootContext)).forEach((itemstack) -> { // Parchment - Block.popResource((Level) worldserver, blockposition, itemstack); + Block.popResource(worldserver, blockposition, itemstack); }); state.spawnAfterBreak(worldserver, blockposition, ItemStack.EMPTY); -@@ -314,7 +314,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -312,7 +312,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos) { if (world instanceof ServerLevel) { @@ -29,16 +29,16 @@ index 8c30e28b97ac7e8b54322c903e0b75ee8135620b..4ca85a02a1eb46b5958aae55946c67ce Block.popResource(world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -324,7 +324,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -322,7 +322,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { - Block.getDrops(state, (ServerLevel) world, pos, blockEntity).forEach((itemstack) -> { + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(world, pos, Block.getDrops(state, (ServerLevel) world, pos, blockEntity)).forEach((itemstack) -> { // Parchment - Block.popResource((Level) ((ServerLevel) world), pos, itemstack); + Block.popResource((ServerLevel) world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -351,7 +351,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -349,7 +349,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack stack) { if (world instanceof ServerLevel) { @@ -48,18 +48,26 @@ index 8c30e28b97ac7e8b54322c903e0b75ee8135620b..4ca85a02a1eb46b5958aae55946c67ce }); state.spawnAfterBreak((ServerLevel) world, pos, stack); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index a3245218525f538aaba00c72f3500880853dd9d0..760d35356591380a3e4a5cbd71ebe2ce13050dbc 100644 +index 4f38cac0cc172cb3d96a0f36c656326447c26202..502fadf66d62f197d5233ca739a1d3be3e1ea0ea 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1954,5 +1954,11 @@ public class CraftEventFactory { +@@ -1960,5 +1960,19 @@ public class CraftEventFactory { final double posZ = pos.getZ(); playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); } + + public static List callBlockDropResourcesEvent(LevelAccessor world, BlockPos pos, List items) { -+ me.lexikiq.event.block.BlockDropResourcesEvent event = new me.lexikiq.event.block.BlockDropResourcesEvent(CraftBlock.at(world, pos), items.stream().map(CraftItemStack::asBukkitCopy).collect(Collectors.toCollection(ArrayList::new))); ++ List bukkitItems = new ArrayList<>(items.size()); ++ for (ItemStack item : items) { ++ bukkitItems.add(CraftItemStack.asBukkitCopy(item)); ++ } ++ gg.projecteden.parchment.event.block.BlockDropResourcesEvent event = new gg.projecteden.parchment.event.block.BlockDropResourcesEvent(CraftBlock.at(world, pos), bukkitItems); + event.callEvent(); -+ return event.getResources().stream().map(CraftItemStack::asNMSCopy).collect(Collectors.toList()); ++ items = new ArrayList<>(bukkitItems.size()); ++ for (org.bukkit.inventory.ItemStack item : bukkitItems) { ++ items.add(CraftItemStack.asNMSCopy(item)); ++ } ++ return items; + } // Parchment end } diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index 80152fa..d508b64 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -7,13 +7,13 @@ Temporary API to get the result of smelting an item in a (type of) furnace. Will eventually (hopefully) be replaced by a more extensive Paper PR with support for all recipes. -diff --git a/src/main/java/me/lexikiq/inventory/CraftRecipeType.java b/src/main/java/me/lexikiq/inventory/CraftRecipeType.java +diff --git a/src/main/java/gg/projecteden/parchment/inventory/CraftRecipeType.java b/src/main/java/gg/projecteden/parchment/inventory/CraftRecipeType.java new file mode 100644 -index 0000000000000000000000000000000000000000..6a28791b12c309661e79e0e6a8f7a9ec8fd706a3 +index 0000000000000000000000000000000000000000..5549da2a0b0790699abff627148a6b15ca37febf --- /dev/null -+++ b/src/main/java/me/lexikiq/inventory/CraftRecipeType.java ++++ b/src/main/java/gg/projecteden/parchment/inventory/CraftRecipeType.java @@ -0,0 +1,44 @@ -+package me.lexikiq.inventory; ++package gg.projecteden.parchment.inventory; + +import net.minecraft.world.item.crafting.AbstractCookingRecipe; + @@ -57,13 +57,13 @@ index 0000000000000000000000000000000000000000..6a28791b12c309661e79e0e6a8f7a9ec + } + } +} -diff --git a/src/main/java/me/lexikiq/inventory/SingletonContainer.java b/src/main/java/me/lexikiq/inventory/SingletonContainer.java +diff --git a/src/main/java/gg/projecteden/parchment/inventory/SingletonContainer.java b/src/main/java/gg/projecteden/parchment/inventory/SingletonContainer.java new file mode 100644 -index 0000000000000000000000000000000000000000..e6d1e8faafe3fec48df51e5a25acef56a8428db3 +index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b9376679145 --- /dev/null -+++ b/src/main/java/me/lexikiq/inventory/SingletonContainer.java ++++ b/src/main/java/gg/projecteden/parchment/inventory/SingletonContainer.java @@ -0,0 +1,151 @@ -+package me.lexikiq.inventory; ++package gg.projecteden.parchment.inventory; + +import com.google.common.base.Preconditions; +import net.minecraft.world.Container; @@ -215,18 +215,18 @@ index 0000000000000000000000000000000000000000..e6d1e8faafe3fec48df51e5a25acef56 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 858e29ad77aee8a1b7797c2d82902abbfd662da2..cd98817b0dca964a5cbaa6c19169f37d0bee6682 100644 +index ac41bc23d2f7e16bbacdc9b33fcf6c0d706fa023..1067d2fbd6efefdb19998c4ee3c727021eed71f2 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2162,4 +2162,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2155,4 +2155,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end + + // Parchment start + @Override -+ public ItemStack smeltItem(ItemStack toSmelt, me.lexikiq.inventory.RecipeType recipeType) { -+ return world.getRecipeManager().getRecipeFor(me.lexikiq.inventory.CraftRecipeType.asCookingRecipe(recipeType), new me.lexikiq.inventory.SingletonContainer(toSmelt), world).map(recipe -> recipe.getResultItem().getBukkitStack()).orElse(null); ++ public ItemStack smeltItem(ItemStack toSmelt, gg.projecteden.parchment.inventory.RecipeType recipeType) { ++ return world.getRecipeManager().getRecipeFor(gg.projecteden.parchment.inventory.CraftRecipeType.asCookingRecipe(recipeType), new gg.projecteden.parchment.inventory.SingletonContainer(toSmelt), world).map(recipe -> recipe.getResultItem().getBukkitStack()).orElse(null); + } + // Parchment end } diff --git a/patches/server/0013-Disable-sleep-status-announcements.patch b/patches/server/0013-Disable-sleep-status-announcements.patch index 06eaea3..2be722e 100644 --- a/patches/server/0013-Disable-sleep-status-announcements.patch +++ b/patches/server/0013-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 933b577dd582d1624cbd587b726e96fc9cfef68a..d92740433c908f54b724b9d0ce37f51e228c4dcc 100644 +index 205b2a1c7db64cb0b23289e11d8b551a78fca5be..51af3b5b730a427743fb4f93c0e7fef7a10454ac 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -994,7 +994,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { From 62ac5e4ff9fb3c6b8ac0e52c67f8e0fb57a3cbff Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 21:52:46 -0500 Subject: [PATCH 02/44] Update upstream --- gradle.properties | 2 +- gradle/wrapper/gradle-wrapper.properties | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/gradle.properties b/gradle.properties index 657c422..a51b9bb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = df8d28a450fe391b9f0c2dc4a64543cf9b84266f +paperRef = e9947f8145ea1fa87d995fbf7df4868a556e78db org.gradle.caching=true org.gradle.parallel=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index e750102..2e6e589 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 7b1651af3f0658819687017eddfa87f5aae30b72 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 21:57:52 -0500 Subject: [PATCH 03/44] Rebuild patches --- patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/api/0008-Expose-NMS-ordinals.patch | 4 ++-- patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/server/0007-Expose-EntityType-Ordinals.patch | 4 ++-- 4 files changed, 8 insertions(+), 8 deletions(-) diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch index fcecdb3..d268e85 100644 --- a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 014c9984018ad5e51a26228a137e1ba4eb3e80c8..532040d23ef01513d1700f2fa3f09dc580784fc2 100644 +index 81e17ebb54f8b5c085842f223081f3d6d33a317d..701ac7a2cbce1567487e2ffff8e9cb24222fe9ab 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -218,4 +218,17 @@ public interface UnsafeValues { +@@ -219,4 +219,17 @@ public interface UnsafeValues { */ boolean isCollidable(@org.jetbrains.annotations.NotNull Material material); // Paper end diff --git a/patches/api/0008-Expose-NMS-ordinals.patch b/patches/api/0008-Expose-NMS-ordinals.patch index f9e1179..786e9ec 100644 --- a/patches/api/0008-Expose-NMS-ordinals.patch +++ b/patches/api/0008-Expose-NMS-ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose NMS ordinals diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 532040d23ef01513d1700f2fa3f09dc580784fc2..130c0e7facd1ad618dade0a2d8f48bb5d2031942 100644 +index 701ac7a2cbce1567487e2ffff8e9cb24222fe9ab..a40713772eaa400978791fab2c7a0a6fdf2951ec 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -230,5 +230,12 @@ public interface UnsafeValues { +@@ -231,5 +231,12 @@ public interface UnsafeValues { * @return if the item can be placed */ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index 96d9965..3609b97 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 90e68a8cfd00e4ad7ffaddfc8e8d5df26c49cf7a..d05e7b7f7ed94849142f74b19fbce7d83752e7fa 100644 +index 9679b17b19e208c82570e1769efb18e23b5b3778..04d6a80c1d98c79af1e2ab190d5add21534612b4 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -560,6 +560,55 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -565,6 +565,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } // Paper end diff --git a/patches/server/0007-Expose-EntityType-Ordinals.patch b/patches/server/0007-Expose-EntityType-Ordinals.patch index b60fe5e..2d29835 100644 --- a/patches/server/0007-Expose-EntityType-Ordinals.patch +++ b/patches/server/0007-Expose-EntityType-Ordinals.patch @@ -51,10 +51,10 @@ index 419a7e9614af2328ed401fc954196056243a984c..b657453b61a29c920b87e94d23fc09e9 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index d05e7b7f7ed94849142f74b19fbce7d83752e7fa..42730bc76dfee91d745087edb2a21d0cc39a885f 100644 +index 04d6a80c1d98c79af1e2ab190d5add21534612b4..6017e4ee046c3d298207f0e40a1baf866b80253a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -607,6 +607,18 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -612,6 +612,18 @@ public final class CraftMagicNumbers implements UnsafeValues { final net.minecraft.world.item.context.BlockPlaceContext ctx = context; return future.completeAsync(() -> blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); } From 2da7d0c89ad81536a5225574d21a023ae8146111 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 22:13:55 -0500 Subject: [PATCH 04/44] Fix compilation --- patches/api/0002-Add-Getter-interfaces.patch | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0002-Add-Getter-interfaces.patch index 685c83f..e74b337 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0002-Add-Getter-interfaces.patch @@ -340,7 +340,7 @@ index 0000000000000000000000000000000000000000..db44b117423fa65979480c8922de5eeb + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. + * @see gg.projecteden.parchment.PlayerLike + */ -+public interface OptionalPlayerLike extends OptionalPlayer, HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { ++public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.common.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { + /** + * Gets the identity associated with this object + * From 9e38d643a8d89b77f7c21eed53f8525840e474f1 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 22:24:33 -0500 Subject: [PATCH 05/44] Update GitHub workflows --- .github/workflows/pr-build.yml | 2 +- .github/workflows/push-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index b27ff8d..0c5e841 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -37,7 +37,7 @@ jobs: git config --global user.email "no-reply@github.com" git config --global user.name "GitHub Actions" ./gradlew applyPatches - ./gradlew paperclipJar + ./gradlew createReobfPaperclipJar - uses: actions/upload-artifact@v2 with: diff --git a/.github/workflows/push-build.yml b/.github/workflows/push-build.yml index ec0210b..bbc2c23 100644 --- a/.github/workflows/push-build.yml +++ b/.github/workflows/push-build.yml @@ -37,7 +37,7 @@ jobs: git config --global user.email "no-reply@github.com" git config --global user.name "GitHub Actions" ./gradlew applyPatches - ./gradlew paperclipJar + ./gradlew createReobfPaperclipJar - uses: actions/upload-artifact@v2 with: From 3af7aa6ed0f136ce7e33aa41fa9f88dd8c227ef8 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 22:38:05 -0500 Subject: [PATCH 06/44] Bump build dependencies --- build.gradle.kts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index f919719..f8b10f1 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,8 +3,8 @@ import io.papermc.paperweight.util.constants.* plugins { java `maven-publish` - id("com.github.johnrengelman.shadow") version "7.1.0" apply false - id("io.papermc.paperweight.patcher") version "1.3.1" + id("com.github.johnrengelman.shadow") version "7.1.1" apply false + id("io.papermc.paperweight.patcher") version "1.3.3" } repositories { From b7f563c2cba180f8dd20b43faab3f46f4459f976 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 27 Dec 2021 01:41:52 -0500 Subject: [PATCH 07/44] Remove common lib & use Eden modules --- Parchment-Common/build.gradle.kts | 41 ------------------- .../gg/projecteden/common/HasUniqueId.java | 17 -------- .../projecteden/common/OptionalUniqueId.java | 17 -------- build.gradle.kts | 1 + patches/api/0001-Build-changes.patch | 2 +- settings.gradle.kts | 2 +- 6 files changed, 3 insertions(+), 77 deletions(-) delete mode 100644 Parchment-Common/build.gradle.kts delete mode 100644 Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java delete mode 100644 Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java diff --git a/Parchment-Common/build.gradle.kts b/Parchment-Common/build.gradle.kts deleted file mode 100644 index fc00571..0000000 --- a/Parchment-Common/build.gradle.kts +++ /dev/null @@ -1,41 +0,0 @@ -import java.util.Locale -import java.net.URI - -plugins { - `maven-publish` -} - -java { - withSourcesJar() - withJavadocJar() -} - -dependencies { - val annotations = "org.jetbrains:annotations:21.0.1" - compileOnly(annotations) - testCompileOnly(annotations) -} - -configure { - publications.create("maven") { - from(components["java"]) - groupId = project.group as String? - artifactId = "Parchment-Common" - version = "1.17-R0.1-SNAPSHOT" - - pom { - name.set(project.name) - description.set("Common annotations for Parchment and other software") - } - } - - repositories { - maven { - credentials { - username = properties["edenusr"] as String? - password = properties["edenpwd"] as String? - } - url = URI.create("https://sonatype.projecteden.gg/repository/maven-snapshots/") - } - } -} \ No newline at end of file diff --git a/Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java b/Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java deleted file mode 100644 index 3e557bb..0000000 --- a/Parchment-Common/src/main/java/gg/projecteden/common/HasUniqueId.java +++ /dev/null @@ -1,17 +0,0 @@ -package gg.projecteden.common; - -import org.jetbrains.annotations.NotNull; - -import java.util.UUID; - -/** - * Represents an object that has a {@link UUID} - */ -public interface HasUniqueId extends OptionalUniqueId { - /** - * Returns a unique and persistent id for this object - * - * @return unique id - */ - @NotNull UUID getUniqueId(); // named getUniqueId to maintain compatibility with Bukkit -} diff --git a/Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java b/Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java deleted file mode 100644 index 09600e8..0000000 --- a/Parchment-Common/src/main/java/gg/projecteden/common/OptionalUniqueId.java +++ /dev/null @@ -1,17 +0,0 @@ -package gg.projecteden.common; - -import org.jetbrains.annotations.Nullable; - -import java.util.UUID; - -/** - * Represents an object that may have a {@link UUID} - */ -public interface OptionalUniqueId { - /** - * Returns a unique and persistent id for this object which may be null - * - * @return unique id or null - */ - @Nullable UUID getUniqueId(); // named getUniqueId to maintain compatibility with Bukkit -} diff --git a/build.gradle.kts b/build.gradle.kts index f8b10f1..e67fa15 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -46,6 +46,7 @@ subprojects { repositories { mavenCentral() maven("https://papermc.io/repo/repository/maven-public/") + maven("https://sonatype.projecteden.gg/repository/maven-public/") } } diff --git a/patches/api/0001-Build-changes.patch b/patches/api/0001-Build-changes.patch index 054cf42..88d4f6f 100644 --- a/patches/api/0001-Build-changes.patch +++ b/patches/api/0001-Build-changes.patch @@ -12,7 +12,7 @@ index a23b2bd8e1ca1ff8d0ad5ed5d5e41c89e4795090..590754921a6c7de54fa79d0a15c95a96 } dependencies { -+ api(project(":Parchment-Common")) // Parchment ++ api("gg.projecteden:eden-common:2.0.0-SNAPSHOT") // Parchment // api dependencies are listed transitively to API consumers api("commons-lang:commons-lang:2.6") api("com.google.guava:guava:31.0.1-jre") diff --git a/settings.gradle.kts b/settings.gradle.kts index cd331be..8570343 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -7,4 +7,4 @@ pluginManagement { rootProject.name = "Parchment" -include("Parchment-Common", "Parchment-API", "Parchment-Server") +include("Parchment-API", "Parchment-Server") From cbd4d6efa5c84c6820502f0fdb2cca0fe58955c4 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 27 Dec 2021 02:27:12 -0500 Subject: [PATCH 08/44] Update interface package --- patches/api/0002-Add-Getter-interfaces.patch | 34 ++++++++++---------- patches/server/0001-Build-changes.patch | 10 +++--- 2 files changed, 23 insertions(+), 21 deletions(-) diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0002-Add-Getter-interfaces.patch index e74b337..d6a0a93 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0002-Add-Getter-interfaces.patch @@ -60,7 +60,7 @@ index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a45 private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index a077962fa786a3291849abfa823c7f0ec4664fce..c79fb3f53d5d74d80e4a7c6f13035a6cc624ed09 100644 +index a077962fa786a3291849abfa823c7f0ec4664fce..900be9033fa8573158d2d6186d40fd14ebdb1996 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; @@ -68,12 +68,12 @@ index a077962fa786a3291849abfa823c7f0ec4664fce..c79fb3f53d5d74d80e4a7c6f13035a6c *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ -public class PlayerHandshakeEvent extends Event implements Cancellable { -+public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.common.OptionalUniqueId { // Parchment ++public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.interfaces.OptionalUniqueId { // Parchment private static final HandlerList HANDLERS = new HandlerList(); @NotNull private final String originalHandshake; diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..26d0cee20d93e2ecdea2b06f6e7c61bc2390f269 100644 +index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..d09aecb0b45f2ccf9badd308ef3e472ba36893a1 100644 --- a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; @@ -81,7 +81,7 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..26d0cee20d93e2ecdea2b06f6e7c61bc * event.isAsync() */ -public class PreLookupProfileEvent extends Event { -+public class PreLookupProfileEvent extends Event implements gg.projecteden.common.OptionalUniqueId { // Parchment ++public class PreLookupProfileEvent extends Event implements gg.projecteden.interfaces.OptionalUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); @NotNull private final String name; @@ -312,7 +312,7 @@ index 0000000000000000000000000000000000000000..31b9ab6512c9f06160c268e88d5bce48 +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..db44b117423fa65979480c8922de5eeb379b749d +index 0000000000000000000000000000000000000000..5283df238c09c3fa2dda1ac41db1ea93580517a2 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java @@ -0,0 +1,189 @@ @@ -340,7 +340,7 @@ index 0000000000000000000000000000000000000000..db44b117423fa65979480c8922de5eeb + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. + * @see gg.projecteden.parchment.PlayerLike + */ -+public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.common.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { ++public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { + /** + * Gets the identity associated with this object + * @@ -646,7 +646,7 @@ index 8d568d21fcbf706f55cda087bd7222ac60889c0a..8bc5b7a0df5c8f5e5d973c2d2b348968 private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..caa7f8a269f923df85a319c1c9bf6cd1ce1ccdcd 100644 +index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..ee19d7fd5bb1851af39320f1edd858e1f7bdd1cc 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -654,7 +654,7 @@ index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..caa7f8a269f923df85a319c1c9bf6cd1 * Concrete implementation of an attribute modifier. */ -public class AttributeModifier implements ConfigurationSerializable { -+public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.common.HasUniqueId { // Parchment ++public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.interfaces.HasUniqueId { // Parchment private final UUID uuid; private final String name; @@ -698,7 +698,7 @@ index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..4348b8961afe7a57350856622aff8c98 public DoubleChest(@NotNull DoubleChestInventory chest) { diff --git a/src/main/java/org/bukkit/entity/AnimalTamer.java b/src/main/java/org/bukkit/entity/AnimalTamer.java -index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..404679175d68ced0909977d0b26be11f0cdc8f19 100644 +index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..6daf17848951eff23186583a7b4af4de2f88d129 100644 --- a/src/main/java/org/bukkit/entity/AnimalTamer.java +++ b/src/main/java/org/bukkit/entity/AnimalTamer.java @@ -4,7 +4,7 @@ import java.util.UUID; @@ -706,12 +706,12 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..404679175d68ced0909977d0b26be11f import org.jetbrains.annotations.Nullable; -public interface AnimalTamer { -+public interface AnimalTamer extends gg.projecteden.common.HasUniqueId { // Parchment ++public interface AnimalTamer extends gg.projecteden.interfaces.HasUniqueId { // Parchment /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index bafad5764cc3933fcd9602d37bd2e68424cbd575..30911648875fd537f97e5286a86ab4af5cf5c04c 100644 +index 51ec2e4ec4239659272bba3d6ba2ad73926ebb88..2fa9309e9e015696c74332fb27350540e434f596 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; @@ -719,7 +719,7 @@ index bafad5764cc3933fcd9602d37bd2e68424cbd575..30911648875fd537f97e5286a86ab4af * Represents a base entity in the world */ -public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter { // Paper -+public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.common.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment ++public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.interfaces.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment /** * Gets the entity's current position @@ -745,7 +745,7 @@ index 28d1ff809e44bda0324ffac957c1d455be02e783..2b64852da2f22bd984216ef0164587e0 // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 1b4b54741719252892a3a51491d49cd5423de499..e851bcbfcd55fd450f58da3686a96165eb868688 100644 +index 5e4a9ce5f899624255e806152c59f60664bcf701..366ea14e42c21bd43f51434ddbf2d91b1433dff0 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable; @@ -1051,7 +1051,7 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 694a81769076ea58aae9f14f076ab80c9952c957..933a83a00922ea7ed8a76a688152ed43d0ba5691 100644 +index 694a81769076ea58aae9f14f076ab80c9952c957..d6efe9d51f1c8e975a897a1b03cfe5ceef5358f3 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; @@ -1059,7 +1059,7 @@ index 694a81769076ea58aae9f14f076ab80c9952c957..933a83a00922ea7ed8a76a688152ed43 * This event is asynchronous, and not run using main thread. */ -public class AsyncPlayerPreLoginEvent extends Event { -+public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.common.HasUniqueId { // Parchment ++public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper @@ -1077,7 +1077,7 @@ index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..44efb5cc62149b34b994eadac488a902 public PlayerEvent(@NotNull final Player who) { diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index 123979ed64939d615b061f91c19c630e1e1db8c7..0507e766428966ffe1e72f476991240d17b39f4a 100644 +index 123979ed64939d615b061f91c19c630e1e1db8c7..25b4e19d492cccdc0f37d4960a1206003a611456 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; @@ -1085,7 +1085,7 @@ index 123979ed64939d615b061f91c19c630e1e1db8c7..0507e766428966ffe1e72f476991240d @Deprecated @Warning(reason = "This event causes a login thread to synchronize with the main thread") -public class PlayerPreLoginEvent extends Event { -+public class PlayerPreLoginEvent extends Event implements gg.projecteden.common.HasUniqueId { // Parchment ++public class PlayerPreLoginEvent extends Event implements gg.projecteden.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 13885b8..9f29c31 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index da31e84cb558e6fad9cab015cfae753ce7be7db0..a1aecd789f09ef1e89e2a9c237cd8e1f9a47567b 100644 +index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db787523b9 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,8 +18,8 @@ repositories { @@ -28,11 +28,13 @@ index da31e84cb558e6fad9cab015cfae753ce7be7db0..a1aecd789f09ef1e89e2a9c237cd8e1f "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -85,6 +85,26 @@ tasks.jar { +@@ -84,7 +84,27 @@ tasks.jar { + publishing { publications.create("maven") { - artifact(tasks.shadowJar) -+ // Parchment start +- artifact(tasks.shadowJar) ++ // Parchment start ++ artifact(tasks.reobfJar) + groupId = project.group as String? + artifactId = "parchment" + version = project.version as String? From b87fce78d77c75e9fd1211b2a6630634a40e4b09 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 27 Dec 2021 15:26:47 -0500 Subject: [PATCH 09/44] Meaningless bump --- .github/workflows/pr-build.yml | 52 +++++++++++++++++----------------- 1 file changed, 26 insertions(+), 26 deletions(-) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 0c5e841..8b40eb8 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -13,33 +13,33 @@ jobs: fail-fast: true steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v2 - - name: Set up JDK ${{ matrix.java }} - uses: actions/setup-java@v2 - with: - java-version: ${{ matrix.java }} - distribution: 'adopt' + - name: Set up JDK ${{ matrix.java }} + uses: actions/setup-java@v2 + with: + java-version: ${{ matrix.java }} + distribution: 'adopt' - - name: Cache gradle - uses: actions/cache@v2 - with: - path: | - ~/.gradle/caches - ~/.gradle/jdks - ~/.gradle/native - ~/.gradle/wrapper - key: ${{ runner.os }}-parchment-2-${{ hashFiles('**/*.gradle*', 'gradle/**', 'gradle.properties') }} - restore-keys: ${{ runner.os }}-parchment-2 + - name: Cache gradle + uses: actions/cache@v2 + with: + path: | + ~/.gradle/caches + ~/.gradle/jdks + ~/.gradle/native + ~/.gradle/wrapper + key: ${{ runner.os }}-parchment-2-${{ hashFiles('**/*.gradle*', 'gradle/**', 'gradle.properties') }} + restore-keys: ${{ runner.os }}-parchment-2 - - name: Patch Parchment - run: | - git config --global user.email "no-reply@github.com" - git config --global user.name "GitHub Actions" - ./gradlew applyPatches - ./gradlew createReobfPaperclipJar + - name: Patch Parchment + run: | + git config --global user.email "no-reply@github.com" + git config --global user.name "GitHub Actions" + ./gradlew applyPatches + ./gradlew createReobfPaperclipJar - - uses: actions/upload-artifact@v2 - with: - name: Parchment-PR${{ github.event.pull_request.number }}-JDK${{ matrix.java }} - path: build/libs/Parchment-*.jar + - uses: actions/upload-artifact@v2 + with: + name: Parchment-PR${{ github.event.pull_request.number }}-JDK${{ matrix.java }} + path: build/libs/Parchment-*.jar From eb65aa3c47fe43415ef37bc3791f4f066ae2352f Mon Sep 17 00:00:00 2001 From: lexikiq Date: Thu, 30 Dec 2021 03:11:48 -0500 Subject: [PATCH 10/44] Update upstream --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index a51b9bb..6946cd2 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = e9947f8145ea1fa87d995fbf7df4868a556e78db +paperRef = a219c497bd1a8a9b511e1606c7417a42fa20491a org.gradle.caching=true org.gradle.parallel=true From 64583032618e0d28eb2dbb46133d84323184957e Mon Sep 17 00:00:00 2001 From: lexikiq Date: Thu, 13 Jan 2022 13:48:19 -0500 Subject: [PATCH 11/44] Update upstream --- gradle.properties | 2 +- .../api/0007-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/api/0008-Expose-NMS-ordinals.patch | 4 ++-- patches/api/0011-Add-Furnace-Recipe-API.patch | 4 ++-- .../server/0002-Temporary-Access-Transformers.patch | 4 ++-- patches/server/0003-Add-SoundEvent.patch | 12 ++++++------ ...origin-location-to-EntityDamageByBlockEvent.patch | 10 +++++----- .../0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/server/0007-Expose-EntityType-Ordinals.patch | 4 ++-- patches/server/0008-Add-Player-setGameProfile.patch | 4 ++-- .../server/0011-Add-BlockDropResourcesEvent.patch | 4 ++-- patches/server/0012-Add-Furnace-Recipe-API.patch | 4 ++-- 12 files changed, 30 insertions(+), 30 deletions(-) diff --git a/gradle.properties b/gradle.properties index 6946cd2..d45e24a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = a219c497bd1a8a9b511e1606c7417a42fa20491a +paperRef = 0c64d401aaa5e297f1d72b91370d24c947e19d99 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch index d268e85..bf6a51b 100644 --- a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 81e17ebb54f8b5c085842f223081f3d6d33a317d..701ac7a2cbce1567487e2ffff8e9cb24222fe9ab 100644 +index f59030893eba2bf653207b040a5f54fdf7b7b50f..02c78e80a0e30aaeebc441fde9b27e3563011a0f 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -219,4 +219,17 @@ public interface UnsafeValues { +@@ -225,4 +225,17 @@ public interface UnsafeValues { */ boolean isCollidable(@org.jetbrains.annotations.NotNull Material material); // Paper end diff --git a/patches/api/0008-Expose-NMS-ordinals.patch b/patches/api/0008-Expose-NMS-ordinals.patch index 786e9ec..945a2fa 100644 --- a/patches/api/0008-Expose-NMS-ordinals.patch +++ b/patches/api/0008-Expose-NMS-ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose NMS ordinals diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 701ac7a2cbce1567487e2ffff8e9cb24222fe9ab..a40713772eaa400978791fab2c7a0a6fdf2951ec 100644 +index 02c78e80a0e30aaeebc441fde9b27e3563011a0f..4a105b3e48eabb17dd701cd7287c7054311a365b 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -231,5 +231,12 @@ public interface UnsafeValues { +@@ -237,5 +237,12 @@ public interface UnsafeValues { * @return if the item can be placed */ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); diff --git a/patches/api/0011-Add-Furnace-Recipe-API.patch b/patches/api/0011-Add-Furnace-Recipe-API.patch index b0ee3f5..c6da453 100644 --- a/patches/api/0011-Add-Furnace-Recipe-API.patch +++ b/patches/api/0011-Add-Furnace-Recipe-API.patch @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..28c01caa9d6379046f6af6612719b404 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 1f8a51897d9de00f0004ab1de479198390483f7d..a74ee256922b220c1de31bb9784a78ffde59499d 100644 +index c808cc8dc96e325c543391048414880ed18a3ed3..9bd733282ed1aa1ac36d88a8da6bcbc20709ff12 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3772,6 +3772,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3797,6 +3797,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/server/0002-Temporary-Access-Transformers.patch b/patches/server/0002-Temporary-Access-Transformers.patch index 40673b5..fbbeadd 100644 --- a/patches/server/0002-Temporary-Access-Transformers.patch +++ b/patches/server/0002-Temporary-Access-Transformers.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Temporary Access Transformers diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index 8175bb6331727440da2232998bdad068a1c47ae8..01b9b3cdb4d9d3b32d6c7d39e09dc7594a2d97ce 100644 +index 893d5bf448ddbccb30db0ee751c7f4a4e83634b9..0a3f2cd954e28545520d63e9e047a331c1e6247e 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -191,7 +191,7 @@ public class BlockItem extends Item { +@@ -204,7 +204,7 @@ public class BlockItem extends Item { }).orElse(state); } diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index 5c09465..8e19685 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add SoundEvent diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 28f605c3daa969c1a54745e552d55ecb874120a9..205b2a1c7db64cb0b23289e11d8b551a78fca5be 100644 +index a2abb8aa1a257ccd2b5dbddc037fffc6eb600758..c27a253179d49956ebdd9d7b7b294a13690e4ca7 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -1504,12 +1504,12 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -37,7 +37,7 @@ index 7b23535a680d2a8534dcb8dd87770f66fb982c13..d522d26b388dbd3b61ca82e5d5ea83f5 @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 042be2cf60a9d01698808d84f2e537a5eb952079..9d624f8dc709bc43889bd5872582ac6f8e19da75 100644 +index f55f8c0b2c748a5442199c0a7f772b02ed533753..a05fa33f1525eb20d12163f8b3f34899c6da4fb1 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java @@ -963,7 +963,7 @@ public abstract class PlayerList { @@ -50,10 +50,10 @@ index 042be2cf60a9d01698808d84f2e537a5eb952079..9d624f8dc709bc43889bd5872582ac6f } // Added from changeDimension 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 2c00a766130a7f682fc6c4c74321e10637ca7932..2f6a7bb94f8fee19f8575ed640b33b2badb5e641 100644 +index d85da02be7f1d494af8f2cc840c49073774f5f9c..a90cbb8d5c3231f3278bd4893fa1443827c6567b 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1834,7 +1834,7 @@ public abstract class Player extends LivingEntity { +@@ -1833,7 +1833,7 @@ public abstract class Player extends LivingEntity { private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { fromEntity.level.playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself if (fromEntity instanceof ServerPlayer) { @@ -85,10 +85,10 @@ index 7131226de05bc57830f7a68ba545ebfd19d33a59..56b5f5f9992c9f9fea7a606684efd44c } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c667baa2da8222eb66344c8f1cc0fed416c4df01..c73e771ce5b428864e7d4f5e852e2103f48f9cfb 100644 +index 35cc150adf51f79e2fccef8b094c90554aafbee2..d479d3f0228af7fa91056e4ef17a09f6c4ad9d73 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1888,4 +1888,77 @@ public class CraftEventFactory { +@@ -1900,4 +1900,77 @@ public class CraftEventFactory { return event.callEvent(); } // Paper end diff --git a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index 5dd44b6..cfcf07e 100644 --- a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -96,10 +96,10 @@ index e17a3afa41fd628d2c4a3637ae19418e258a99b8..5a4489dff8b6ef70d52ba19ee8604b77 this.setHealth(this.getMaxHealth()); this.noPhysics = true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 6795132318a4e8b4c7a33b6f4b89a730ea66b97f..9d78f8bcf958a0ca2b12c16b58d0bee4e2a3604c 100644 +index 97f99a06b8954b08af9f4156abe8abdad359349a..4b40ba434a88f241ffbbb1a58ba9015f4fc35cec 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -450,6 +450,13 @@ public class Explosion { +@@ -471,6 +471,13 @@ public class Explosion { return this.toBlow; } @@ -146,7 +146,7 @@ index 86692a83fb9acd3a501da58e6d509865b49931fe..438ea548644aa9570a09fa4d4a06bde5 public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c73e771ce5b428864e7d4f5e852e2103f48f9cfb..4f38cac0cc172cb3d96a0f36c656326447c26202 100644 +index d479d3f0228af7fa91056e4ef17a09f6c4ad9d73..176ff59f7639b241a4eac09c00066ee3d4a9fc0b 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -961,7 +961,7 @@ public class CraftEventFactory { @@ -158,7 +158,7 @@ index c73e771ce5b428864e7d4f5e852e2103f48f9cfb..4f38cac0cc172cb3d96a0f36c6563264 } else if (entity instanceof EnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); } else { -@@ -997,7 +997,7 @@ public class CraftEventFactory { +@@ -999,7 +999,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled, source.isCritical()); // Paper - add critical damage API } else if (source == DamageSource.OUT_OF_WORLD) { @@ -167,7 +167,7 @@ index c73e771ce5b428864e7d4f5e852e2103f48f9cfb..4f38cac0cc172cb3d96a0f36c6563264 event.setCancelled(cancelled); CraftEventFactory.callEvent(event); if (!event.isCancelled()) { -@@ -1005,7 +1005,7 @@ public class CraftEventFactory { +@@ -1009,7 +1009,7 @@ public class CraftEventFactory { } return event; } else if (source == DamageSource.LAVA) { diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index 3609b97..fc4a5d0 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 9679b17b19e208c82570e1769efb18e23b5b3778..04d6a80c1d98c79af1e2ab190d5add21534612b4 100644 +index 4be7b18b4e794734439d1e8bec4304d88328c91e..5d287d4cb1c9302479d8d2dd92939b4832991a92 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -565,6 +565,55 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -587,6 +587,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } // Paper end diff --git a/patches/server/0007-Expose-EntityType-Ordinals.patch b/patches/server/0007-Expose-EntityType-Ordinals.patch index 2d29835..4ebfd8a 100644 --- a/patches/server/0007-Expose-EntityType-Ordinals.patch +++ b/patches/server/0007-Expose-EntityType-Ordinals.patch @@ -51,10 +51,10 @@ index 419a7e9614af2328ed401fc954196056243a984c..b657453b61a29c920b87e94d23fc09e9 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 04d6a80c1d98c79af1e2ab190d5add21534612b4..6017e4ee046c3d298207f0e40a1baf866b80253a 100644 +index 5d287d4cb1c9302479d8d2dd92939b4832991a92..fc03814909c0a128af74bdc09bc0b6a62859d05d 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -612,6 +612,18 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -634,6 +634,18 @@ public final class CraftMagicNumbers implements UnsafeValues { final net.minecraft.world.item.context.BlockPlaceContext ctx = context; return future.completeAsync(() -> blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); } diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch index 7314e25..d48df0d 100644 --- a/patches/server/0008-Add-Player-setGameProfile.patch +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile 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 2f6a7bb94f8fee19f8575ed640b33b2badb5e641..ca012d62cbc9b92174427cd7a4091c93528f249d 100644 +index a90cbb8d5c3231f3278bd4893fa1443827c6567b..9a903745bbeb68c7b056e35866c731656315f01c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1453,6 +1453,12 @@ public abstract class Player extends LivingEntity { +@@ -1452,6 +1452,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index 3bc8907..596e9a5 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -48,10 +48,10 @@ index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700 }); state.spawnAfterBreak((ServerLevel) world, pos, stack); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 4f38cac0cc172cb3d96a0f36c656326447c26202..502fadf66d62f197d5233ca739a1d3be3e1ea0ea 100644 +index 176ff59f7639b241a4eac09c00066ee3d4a9fc0b..7381004c126c7552c38fedc07d152b06764257e5 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1960,5 +1960,19 @@ public class CraftEventFactory { +@@ -1972,5 +1972,19 @@ public class CraftEventFactory { final double posZ = pos.getZ(); playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); } diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index d508b64..71733d2 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index ac41bc23d2f7e16bbacdc9b33fcf6c0d706fa023..1067d2fbd6efefdb19998c4ee3c727021eed71f2 100644 +index 5fb475b3ccaa98861e2c817b37cd1740e5bfed8d..edca5bad11068feee3980fee6078722b4134947f 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2155,4 +2155,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2198,4 +2198,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end From 0a615fc1007ffb787ff4c3fde077976404cfe400 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Thu, 13 Jan 2022 14:27:11 -0500 Subject: [PATCH 12/44] Update project directories/artifact IDs --- .gitignore | 6 ++++-- build.gradle.kts | 8 ++++---- patches/server/0001-Build-changes.patch | 2 +- settings.gradle.kts | 4 ++-- 4 files changed, 11 insertions(+), 9 deletions(-) diff --git a/.gitignore b/.gitignore index c053360..7dd15a4 100644 --- a/.gitignore +++ b/.gitignore @@ -45,8 +45,10 @@ out/ # other stuff run/ -Parchment-Server -Parchment-API +/Parchment-Server/ +/parchment-server/ +/Parchment-API/ +/parchment-api/ # Compiled class file *.class diff --git a/build.gradle.kts b/build.gradle.kts index e67fa15..4ccea85 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -32,7 +32,7 @@ allprojects { } subprojects { - tasks.withType().configureEach { + tasks.withType { options.encoding = Charsets.UTF_8.name() options.release.set(17) } @@ -51,7 +51,7 @@ subprojects { } paperweight { - serverProject.set(project(":Parchment-Server")) + serverProject.set(project(":parchment-server")) remapRepo.set("https://maven.fabricmc.net/") decompileRepo.set("https://files.minecraftforge.net/maven/") @@ -59,10 +59,10 @@ paperweight { usePaperUpstream(providers.gradleProperty("paperRef")) { withPaperPatcher { apiPatchDir.set(layout.projectDirectory.dir("patches/api")) - apiOutputDir.set(layout.projectDirectory.dir("Parchment-API")) + apiOutputDir.set(layout.projectDirectory.dir("parchment-api")) serverPatchDir.set(layout.projectDirectory.dir("patches/server")) - serverOutputDir.set(layout.projectDirectory.dir("Parchment-Server")) + serverOutputDir.set(layout.projectDirectory.dir("parchment-server")) } } } diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 9f29c31..8e30f20 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -14,7 +14,7 @@ index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db dependencies { - implementation(project(":paper-api")) - implementation(project(":paper-mojangapi")) -+ implementation(project(":Parchment-API")) // Parchment ++ implementation(project(":parchment-api")) // Parchment + implementation("io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT") // Parchment // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") diff --git a/settings.gradle.kts b/settings.gradle.kts index 8570343..db56c82 100644 --- a/settings.gradle.kts +++ b/settings.gradle.kts @@ -5,6 +5,6 @@ pluginManagement { } } -rootProject.name = "Parchment" +rootProject.name = "parchment" -include("Parchment-API", "Parchment-Server") +include("parchment-api", "parchment-server") From 5afe96ba36d8096617b3216e099b3438250c30d5 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 16 Jan 2022 14:13:43 -0500 Subject: [PATCH 13/44] Update upstream --- gradle.properties | 4 ++-- patches/server/0003-Add-SoundEvent.patch | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/gradle.properties b/gradle.properties index d45e24a..1c571ab 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,8 +2,8 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = 0c64d401aaa5e297f1d72b91370d24c947e19d99 +paperRef = 78999b5778270749e6e63f25fe346305ac00848d org.gradle.caching=true org.gradle.parallel=true -org.gradle.vfs.watch=false \ No newline at end of file +org.gradle.vfs.watch=false diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index 8e19685..5ac9675 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -37,10 +37,10 @@ index 7b23535a680d2a8534dcb8dd87770f66fb982c13..d522d26b388dbd3b61ca82e5d5ea83f5 @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index f55f8c0b2c748a5442199c0a7f772b02ed533753..a05fa33f1525eb20d12163f8b3f34899c6da4fb1 100644 +index cd08f9b16c065be8f0eacaeba51d3e72d332daf9..02f373ecd9e4da1115da9c650b91893be9d0faf5 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -963,7 +963,7 @@ public abstract class PlayerList { +@@ -967,7 +967,7 @@ public abstract class PlayerList { if (flag2 && !isLocAltered) { BlockState data = worldserver1.getBlockState(blockposition); worldserver1.setBlock(blockposition, data.setValue(RespawnAnchorBlock.CHARGE, data.getValue(RespawnAnchorBlock.CHARGE) - 1), 3); From bdf3d9c4076d6b776177979c2b9aa8d93bf28dd7 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 16 Jan 2022 23:24:10 -0500 Subject: [PATCH 14/44] Fix SoundEvent + Update Upstream --- gradle.properties | 2 +- patches/api/0003-Add-SoundEvent.patch | 90 ++++++++++----------------- 2 files changed, 33 insertions(+), 59 deletions(-) diff --git a/gradle.properties b/gradle.properties index 1c571ab..360d716 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = 78999b5778270749e6e63f25fe346305ac00848d +paperRef = 99cf01f99354ea7e3496a4767006d5ae53e9b899 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0003-Add-SoundEvent.patch b/patches/api/0003-Add-SoundEvent.patch index ba79b00..2fcc353 100644 --- a/patches/api/0003-Add-SoundEvent.patch +++ b/patches/api/0003-Add-SoundEvent.patch @@ -61,10 +61,10 @@ index 0000000000000000000000000000000000000000..5b74910e441a943597d3170ff00a9b9d +} diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..59ad830329f31fdb13d402514b07ad851cb71dae +index 0000000000000000000000000000000000000000..eed6098d16e051484129396c694b9cfbb8172fce --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java -@@ -0,0 +1,121 @@ +@@ -0,0 +1,95 @@ +package gg.projecteden.parchment.event.sound; + +import gg.projecteden.parchment.HasLocation; @@ -159,32 +159,6 @@ index 0000000000000000000000000000000000000000..59ad830329f31fdb13d402514b07ad85 + Validate.notNull(key, "key cannot be null"); + this.key = key; + } -+ -+ // boilerplate -+ -+ private boolean cancelled; -+ -+ @Override -+ public boolean isCancelled() { -+ return cancelled; -+ } -+ -+ @Override -+ public void setCancelled(boolean cancelled) { -+ this.cancelled = cancelled; -+ } -+ -+ private static final org.bukkit.event.HandlerList handlers = new org.bukkit.event.HandlerList(); -+ -+ @Override -+ public @NotNull org.bukkit.event.HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @NotNull -+ public static org.bukkit.event.HandlerList getHandlerList() { -+ return handlers; -+ } +} diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java new file mode 100644 @@ -266,10 +240,10 @@ index 0000000000000000000000000000000000000000..0872f3850860fe7cca28aeabed6235cc +} diff --git a/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..e51fd733424d9410fca24ba47883974efe9afad6 +index 0000000000000000000000000000000000000000..9c2e257de3487a73d4f5b796177061d8fea4c0f7 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java -@@ -0,0 +1,64 @@ +@@ -0,0 +1,38 @@ +package gg.projecteden.parchment.event.sound; + +import org.apache.commons.lang.Validate; @@ -307,39 +281,13 @@ index 0000000000000000000000000000000000000000..e51fd733424d9410fca24ba47883974e + Validate.notNull(sound, "sound cannot be null"); + this.sound = sound; + } -+ -+ // boilerplate -+ -+ private boolean cancelled; -+ -+ @Override -+ public boolean isCancelled() { -+ return cancelled; -+ } -+ -+ @Override -+ public void setCancelled(boolean cancelled) { -+ this.cancelled = cancelled; -+ } -+ -+ private static final org.bukkit.event.HandlerList handlers = new org.bukkit.event.HandlerList(); -+ -+ @Override -+ public @NotNull org.bukkit.event.HandlerList getHandlers() { -+ return handlers; -+ } -+ -+ @NotNull -+ public static org.bukkit.event.HandlerList getHandlerList() { -+ return handlers; -+ } +} diff --git a/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..ae7abca5d88fc7f650559b220de73b6f20a6a899 +index 0000000000000000000000000000000000000000..0506c9e461296aeb12da23b476b9b1c57702b7e1 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java -@@ -0,0 +1,97 @@ +@@ -0,0 +1,123 @@ +package gg.projecteden.parchment.event.sound; + +import gg.projecteden.parchment.OptionalHumanEntity; @@ -430,10 +378,36 @@ index 0000000000000000000000000000000000000000..ae7abca5d88fc7f650559b220de73b6f + this.pitch = pitch; + } + ++ // boilerplate ++ ++ private boolean cancelled; ++ ++ @Override ++ public boolean isCancelled() { ++ return cancelled; ++ } ++ ++ @Override ++ public void setCancelled(boolean cancelled) { ++ this.cancelled = cancelled; ++ } ++ + /** + * Gets the world in which the sound is being played + * @return sound's world + */ + @NotNull + public abstract World getWorld(); ++ ++ private static final org.bukkit.event.HandlerList handlers = new org.bukkit.event.HandlerList(); ++ ++ @Override ++ public @NotNull org.bukkit.event.HandlerList getHandlers() { ++ return handlers; ++ } ++ ++ @NotNull ++ public static org.bukkit.event.HandlerList getHandlerList() { ++ return handlers; ++ } +} From c0f0279679a7a9485cbf061e71d35ba516bb6b90 Mon Sep 17 00:00:00 2001 From: Griffin Kubesa Date: Tue, 18 Jan 2022 12:05:15 -0600 Subject: [PATCH 15/44] Fix artifact regex --- .github/workflows/push-build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/push-build.yml b/.github/workflows/push-build.yml index bbc2c23..84cf06d 100644 --- a/.github/workflows/push-build.yml +++ b/.github/workflows/push-build.yml @@ -42,4 +42,4 @@ jobs: - uses: actions/upload-artifact@v2 with: name: Parchment-JDK${{ matrix.java }} - path: build/libs/Parchment-*.jar + path: build/libs/parchment-*.jar From bcace8901a235f333829ca04d9ed4f60d44e011b Mon Sep 17 00:00:00 2001 From: lexikiq Date: Tue, 18 Jan 2022 13:45:27 -0500 Subject: [PATCH 16/44] Further amend Actions path --- .github/workflows/pr-build.yml | 2 +- .github/workflows/push-build.yml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index 8b40eb8..cb7293a 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -42,4 +42,4 @@ jobs: - uses: actions/upload-artifact@v2 with: name: Parchment-PR${{ github.event.pull_request.number }}-JDK${{ matrix.java }} - path: build/libs/Parchment-*.jar + path: build/libs/parchment-paperclip-*-reobf.jar diff --git a/.github/workflows/push-build.yml b/.github/workflows/push-build.yml index 84cf06d..fcadd62 100644 --- a/.github/workflows/push-build.yml +++ b/.github/workflows/push-build.yml @@ -42,4 +42,4 @@ jobs: - uses: actions/upload-artifact@v2 with: name: Parchment-JDK${{ matrix.java }} - path: build/libs/parchment-*.jar + path: build/libs/parchment-paperclip-*-reobf.jar From 5918afa8c87edad71b02d2dcb2302ff1c6783d61 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Wed, 19 Jan 2022 14:57:40 -0500 Subject: [PATCH 17/44] Exclude eden-common from shading --- patches/api/0001-Build-changes.patch | 4 ++-- patches/server/0001-Build-changes.patch | 15 ++++++++------- 2 files changed, 10 insertions(+), 9 deletions(-) diff --git a/patches/api/0001-Build-changes.patch b/patches/api/0001-Build-changes.patch index 88d4f6f..f99040e 100644 --- a/patches/api/0001-Build-changes.patch +++ b/patches/api/0001-Build-changes.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index a23b2bd8e1ca1ff8d0ad5ed5d5e41c89e4795090..590754921a6c7de54fa79d0a15c95a9630c53eff 100644 +index 001c2b963205012f340db0d539e4033c748124ce..ec41f7da61db5209874a9f01b1b5c3a90f1ea3ea 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -22,6 +22,7 @@ configurations.api { } dependencies { -+ api("gg.projecteden:eden-common:2.0.0-SNAPSHOT") // Parchment ++ compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") // Parchment // api dependencies are listed transitively to API consumers api("commons-lang:commons-lang:2.6") api("com.google.guava:guava:31.0.1-jre") diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 8e30f20..f01e221 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db787523b9 100644 +index 028f6a1795ceb99d1760c73b0980238677b4b8bc..603c4c12130c1be68eda955d89fb83f30b083ab3 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -18,8 +18,8 @@ repositories { +@@ -18,8 +18,9 @@ repositories { } dependencies { @@ -16,10 +16,11 @@ index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db - implementation(project(":paper-mojangapi")) + implementation(project(":parchment-api")) // Parchment + implementation("io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT") // Parchment ++ compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") // Parchment // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -68,7 +68,7 @@ tasks.jar { +@@ -68,7 +69,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -28,7 +29,7 @@ index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -84,7 +84,27 @@ tasks.jar { +@@ -84,7 +85,27 @@ tasks.jar { publishing { publications.create("maven") { @@ -57,7 +58,7 @@ index da31e84cb558e6fad9cab015cfae753ce7be7db0..bc67fde546f837f73fd8bed4d37b35db } } -@@ -156,7 +176,7 @@ fun TaskContainer.registerRunTask( +@@ -156,7 +177,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -104,7 +105,7 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 481a5dbad82f3f8dd5b1bf8ab207d82ec73d5bbd..cc685535868f594e50b9595dc073f71f4e1a2966 100644 +index c4e8e6af67b57406012612b617a7dcaa6e391d09..c43e1eb98644466ca5725b622fe33e2f983805c5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1709,7 +1709,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop Date: Wed, 19 Jan 2022 15:04:30 -0500 Subject: [PATCH 18/44] Exclude eden-common from shading (without patches) Slightly cleaner approach; less prone to patch breakage from upstream changes and much easier to update --- build.gradle.kts | 4 ++++ ....patch => 0001-Add-Getter-interfaces.patch} | 6 +++--- patches/api/0001-Build-changes.patch | 18 ------------------ ...ndEvent.patch => 0002-Add-SoundEvent.patch} | 0 ...0003-Add-PlayerUseRespawnAnchorEvent.patch} | 0 ...location-to-EntityDamageByBlockEvent.patch} | 0 ...h => 0005-Expanded-Adventure-support.patch} | 0 ...0006-Add-UnsafeValues-canPlaceItemOn.patch} | 0 ...ls.patch => 0007-Expose-NMS-ordinals.patch} | 0 ...atch => 0008-Expose-MCUtil-Executors.patch} | 0 ... => 0009-Add-BlockDropResourcesEvent.patch} | 0 ...patch => 0010-Add-Furnace-Recipe-API.patch} | 0 patches/server/0001-Build-changes.patch | 11 +++++------ 13 files changed, 12 insertions(+), 27 deletions(-) rename patches/api/{0002-Add-Getter-interfaces.patch => 0001-Add-Getter-interfaces.patch} (99%) delete mode 100644 patches/api/0001-Build-changes.patch rename patches/api/{0003-Add-SoundEvent.patch => 0002-Add-SoundEvent.patch} (100%) rename patches/api/{0004-Add-PlayerUseRespawnAnchorEvent.patch => 0003-Add-PlayerUseRespawnAnchorEvent.patch} (100%) rename patches/api/{0005-Add-origin-location-to-EntityDamageByBlockEvent.patch => 0004-Add-origin-location-to-EntityDamageByBlockEvent.patch} (100%) rename patches/api/{0006-Expanded-Adventure-support.patch => 0005-Expanded-Adventure-support.patch} (100%) rename patches/api/{0007-Add-UnsafeValues-canPlaceItemOn.patch => 0006-Add-UnsafeValues-canPlaceItemOn.patch} (100%) rename patches/api/{0008-Expose-NMS-ordinals.patch => 0007-Expose-NMS-ordinals.patch} (100%) rename patches/api/{0009-Expose-MCUtil-Executors.patch => 0008-Expose-MCUtil-Executors.patch} (100%) rename patches/api/{0010-Add-BlockDropResourcesEvent.patch => 0009-Add-BlockDropResourcesEvent.patch} (100%) rename patches/api/{0011-Add-Furnace-Recipe-API.patch => 0010-Add-Furnace-Recipe-API.patch} (100%) diff --git a/build.gradle.kts b/build.gradle.kts index 4ccea85..03b1b15 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -48,6 +48,10 @@ subprojects { maven("https://papermc.io/repo/repository/maven-public/") maven("https://sonatype.projecteden.gg/repository/maven-public/") } + + dependencies { + compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") + } } paperweight { diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch similarity index 99% rename from patches/api/0002-Add-Getter-interfaces.patch rename to patches/api/0001-Add-Getter-interfaces.patch index d6a0a93..de1ff86 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -659,7 +659,7 @@ index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..ee19d7fd5bb1851af39320f1edd858e1 private final UUID uuid; private final String name; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 0dd0beee6800fb34520dfa2d05e5bdda76624d64..1c34b25d3c8a4ec098de6402de4c84fc663d5c27 100644 +index 5f35ba35f8517ec28c1b21b3007c9a20dea097a7..37c83fd0ed65bc8b65ffca01b7e051d2175b751d 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -745,7 +745,7 @@ index 28d1ff809e44bda0324ffac957c1d455be02e783..2b64852da2f22bd984216ef0164587e0 // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 5e4a9ce5f899624255e806152c59f60664bcf701..366ea14e42c21bd43f51434ddbf2d91b1433dff0 100644 +index 7eda2ba17e39b8183e572c1cefa8afffbf17afcb..4d518881b845087730ae51e4baad569400c312e1 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java @@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable; @@ -1051,7 +1051,7 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 694a81769076ea58aae9f14f076ab80c9952c957..d6efe9d51f1c8e975a897a1b03cfe5ceef5358f3 100644 +index 356d1154b0732e2daf242d60fa715dba9f2dc9db..9722f420816246fee91eaf19d320a9b5b42e94fc 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; diff --git a/patches/api/0001-Build-changes.patch b/patches/api/0001-Build-changes.patch deleted file mode 100644 index f99040e..0000000 --- a/patches/api/0001-Build-changes.patch +++ /dev/null @@ -1,18 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: lexikiq -Date: Sun, 26 Dec 2021 20:48:45 -0500 -Subject: [PATCH] Build changes - - -diff --git a/build.gradle.kts b/build.gradle.kts -index 001c2b963205012f340db0d539e4033c748124ce..ec41f7da61db5209874a9f01b1b5c3a90f1ea3ea 100644 ---- a/build.gradle.kts -+++ b/build.gradle.kts -@@ -22,6 +22,7 @@ configurations.api { - } - - dependencies { -+ compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") // Parchment - // api dependencies are listed transitively to API consumers - api("commons-lang:commons-lang:2.6") - api("com.google.guava:guava:31.0.1-jre") diff --git a/patches/api/0003-Add-SoundEvent.patch b/patches/api/0002-Add-SoundEvent.patch similarity index 100% rename from patches/api/0003-Add-SoundEvent.patch rename to patches/api/0002-Add-SoundEvent.patch diff --git a/patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch b/patches/api/0003-Add-PlayerUseRespawnAnchorEvent.patch similarity index 100% rename from patches/api/0004-Add-PlayerUseRespawnAnchorEvent.patch rename to patches/api/0003-Add-PlayerUseRespawnAnchorEvent.patch diff --git a/patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/api/0004-Add-origin-location-to-EntityDamageByBlockEvent.patch similarity index 100% rename from patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch rename to patches/api/0004-Add-origin-location-to-EntityDamageByBlockEvent.patch diff --git a/patches/api/0006-Expanded-Adventure-support.patch b/patches/api/0005-Expanded-Adventure-support.patch similarity index 100% rename from patches/api/0006-Expanded-Adventure-support.patch rename to patches/api/0005-Expanded-Adventure-support.patch diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch similarity index 100% rename from patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch rename to patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch diff --git a/patches/api/0008-Expose-NMS-ordinals.patch b/patches/api/0007-Expose-NMS-ordinals.patch similarity index 100% rename from patches/api/0008-Expose-NMS-ordinals.patch rename to patches/api/0007-Expose-NMS-ordinals.patch diff --git a/patches/api/0009-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch similarity index 100% rename from patches/api/0009-Expose-MCUtil-Executors.patch rename to patches/api/0008-Expose-MCUtil-Executors.patch diff --git a/patches/api/0010-Add-BlockDropResourcesEvent.patch b/patches/api/0009-Add-BlockDropResourcesEvent.patch similarity index 100% rename from patches/api/0010-Add-BlockDropResourcesEvent.patch rename to patches/api/0009-Add-BlockDropResourcesEvent.patch diff --git a/patches/api/0011-Add-Furnace-Recipe-API.patch b/patches/api/0010-Add-Furnace-Recipe-API.patch similarity index 100% rename from patches/api/0011-Add-Furnace-Recipe-API.patch rename to patches/api/0010-Add-Furnace-Recipe-API.patch diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index f01e221..f02cbad 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 028f6a1795ceb99d1760c73b0980238677b4b8bc..603c4c12130c1be68eda955d89fb83f30b083ab3 100644 +index 028f6a1795ceb99d1760c73b0980238677b4b8bc..0466c22ca2325d090a5763c6b940252c32815a85 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -18,8 +18,9 @@ repositories { +@@ -18,8 +18,8 @@ repositories { } dependencies { @@ -16,11 +16,10 @@ index 028f6a1795ceb99d1760c73b0980238677b4b8bc..603c4c12130c1be68eda955d89fb83f3 - implementation(project(":paper-mojangapi")) + implementation(project(":parchment-api")) // Parchment + implementation("io.papermc.paper:paper-mojangapi:1.18.1-R0.1-SNAPSHOT") // Parchment -+ compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") // Parchment // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -68,7 +69,7 @@ tasks.jar { +@@ -68,7 +68,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -29,7 +28,7 @@ index 028f6a1795ceb99d1760c73b0980238677b4b8bc..603c4c12130c1be68eda955d89fb83f3 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -84,7 +85,27 @@ tasks.jar { +@@ -84,7 +84,27 @@ tasks.jar { publishing { publications.create("maven") { @@ -58,7 +57,7 @@ index 028f6a1795ceb99d1760c73b0980238677b4b8bc..603c4c12130c1be68eda955d89fb83f3 } } -@@ -156,7 +177,7 @@ fun TaskContainer.registerRunTask( +@@ -156,7 +176,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { From aa742363ff2630ba252a4467712453fb1f9c1986 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Wed, 19 Jan 2022 15:11:55 -0500 Subject: [PATCH 19/44] Update upstream --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 360d716..71f848a 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = 99cf01f99354ea7e3496a4767006d5ae53e9b899 +paperRef = c904da6eabef12c1007e25f96d2e3d8bd418db57 org.gradle.caching=true org.gradle.parallel=true From 73a82f685e2be59ee980f0f06176cb1ab6fc5971 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Wed, 19 Jan 2022 16:37:16 -0500 Subject: [PATCH 20/44] Make eden-common dependency non-transitive --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 03b1b15..157e98d 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,7 +50,7 @@ subprojects { } dependencies { - compileOnly("gg.projecteden:eden-common:2.0.5-SNAPSHOT") + implementation("gg.projecteden:eden-common:2.0.5-SNAPSHOT") } } From 02349061754337478f2a986caad1c14dcd012925 Mon Sep 17 00:00:00 2001 From: GriffinCodes Date: Thu, 20 Jan 2022 02:07:00 -0600 Subject: [PATCH 21/44] Bump eden-api --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 157e98d..2104c07 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,7 +50,7 @@ subprojects { } dependencies { - implementation("gg.projecteden:eden-common:2.0.5-SNAPSHOT") + implementation("gg.projecteden:eden-common:2.0.6-SNAPSHOT") } } From e703b602870d5c26128b500de49e58db68862dbc Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 14 Feb 2022 15:22:04 -0500 Subject: [PATCH 22/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@128691a Deprecate log4j logger method in `Plugin` PaperMC/Paper@2a306f5 Add Multi Block Change API (#7333) PaperMC/Paper@feb72b8 Update ASM EventExecutor generator patch to respect event handler return types. Fixes #7311 (#7317) PaperMC/Paper@dcca6cb Make tag presets unmodifiable (#7378) PaperMC/Paper@60e46ab Fix NotePlayEvent (#5180) PaperMC/Paper@512995c Updated Upstream (Bukkit/CraftBukkit/Spigot) (#7359) PaperMC/Paper@0a9602c [ci skip] Fix multiple ItemStack array nullability mistakes (#7055) PaperMC/Paper@9a19308 Lock Frozen Ticks API (#7207) PaperMC/Paper@a058ac0 Dolphin API (#7102) PaperMC/Paper@f6c7d53 Add configurable stronghold seed (#7334) PaperMC/Paper@7978121 More PotionEffectType API (#5737) PaperMC/Paper@9490475 Add STRUCTURE_TYPE registry entry (#6400) PaperMC/Paper@b164899 Update tiny-remapper PaperMC/Paper@f7dbd06 [ci skip] Update parameter mappings PaperMC/Paper@ca523ab [ci skip] Fix param mismatch from last commit PaperMC/Paper@2e99e5e Updated Upstream (Bukkit/CraftBukkit) (#7411) PaperMC/Paper@41263d9 [ci skip] Update paperweight to 1.3.4 PaperMC/Paper@3109dd8 Updated Upstream (Bukkit/CraftBukkit) (#7428) PaperMC/Paper@17eb884 Use a CHM for StructureTemplate.Pallete cache PaperMC/Paper@f79c0da Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@2121aed Rebuild patches PaperMC/Paper@2ec04e0 Use correct headerLocation for regionfile initialisation PaperMC/Paper@f23c039 Fix infinite recursion in spawnCategoryForChunk/Position PaperMC/Paper@9940bca API for creating command sender which forwards feedback (#7432) PaperMC/Paper@46ed080 fix portal linking in upgraded chunks (fixes #7419) (#7438) PaperMC/Paper@6df4641 Use destination world when preloading spawn chunk (#7441) PaperMC/Paper@0cc2503 Implement World#regenerateChunk (#7425) PaperMC/Paper@00da098 Log exceptions thrown during chat processing (#7467) PaperMC/Paper@26734e8 Updated Upstream (Bukkit/CraftBukkit/Spigot) (#7454) PaperMC/Paper@4a745f9 Optimize Util#sequence (#7115) PaperMC/Paper@2c8d48c Make Panda implement Sittable (#7414) PaperMC/Paper@2c4a589 Fix issues with LimitedRegion (#7343) PaperMC/Paper@3d91eca Fix cancelled snow bucket placement (#6751) PaperMC/Paper@9567753 Don't load plugins prefixed with a dot (#7392) PaperMC/Paper@92c777d Fix PlayerProfile BukkitObject serialization, deprecate setName and setId for removal (#7471) PaperMC/Paper@e6898ff Fix IllegalArgumentException for /paper mobcaps command (#7472) PaperMC/Paper@a8f2d67 - properly fix IllegalArgumentException in `/paper mobcaps` command --- createUpstreamCommit.sh | 52 +++++++++++++++++++ gradle.properties | 2 +- patches/api/0001-Add-Getter-interfaces.patch | 20 +++---- .../api/0008-Expose-MCUtil-Executors.patch | 4 +- patches/api/0010-Add-Furnace-Recipe-API.patch | 4 +- patches/server/0001-Build-changes.patch | 8 +-- .../0002-Temporary-Access-Transformers.patch | 4 +- patches/server/0003-Add-SoundEvent.patch | 4 +- ...location-to-EntityDamageByBlockEvent.patch | 12 ++--- .../server/0009-Expose-MCUtil-Executors.patch | 4 +- ...ing-CraftMetaSkull-serializedProfile.patch | 13 +++-- .../0011-Add-BlockDropResourcesEvent.patch | 4 +- .../server/0012-Add-Furnace-Recipe-API.patch | 4 +- 13 files changed, 93 insertions(+), 42 deletions(-) create mode 100755 createUpstreamCommit.sh diff --git a/createUpstreamCommit.sh b/createUpstreamCommit.sh new file mode 100755 index 0000000..04f70dc --- /dev/null +++ b/createUpstreamCommit.sh @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +# requires curl & jq + +# createUpstreamCommit --paper HASH +# flag: --paper HASH - the commit hash to use for comparing commits between paper (PaperMC/Paper/compare/HASH...HEAD) + +function getCommits() { + echo "$(curl -H "Accept: application/vnd.github.v3+json" https://api.github.com/repos/"$1"/compare/"$2"...HEAD | jq -r '.commits[] | "'"$1"'@\(.sha[:7]) \(.commit.message | split("\r\n")[0] | split("\n")[0])"')" +} + +( +set -e +PS1="$" + +paperHash="" + +TEMP=$(getopt --long paper: -o "" -- "$@") +eval set -- "$TEMP" +while true; do + case "$1" in + --paper) + paperHash="$2" + shift 2 + ;; + *) + break + ;; + esac +done + +paper="" +updated="" +logsuffix="" + +# Paper updates +if [ -n "$paperHash" ]; then + paper=$(getCommits "PaperMC/Paper" "$paperHash") + + # Updates found + if [ -n "$paper" ]; then + updated="Paper" + logsuffix="$logsuffix\n\nPaper Changes:\n$paper" + fi +fi + +disclaimer="Upstream has released updates that appear to apply and compile correctly" +log="Updated Upstream ($updated)\n\n${disclaimer}${logsuffix}" + +echo -e "$log" | git commit -a -F - + +) || exit 1 \ No newline at end of file diff --git a/gradle.properties b/gradle.properties index 71f848a..9d434c5 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = c904da6eabef12c1007e25f96d2e3d8bd418db57 +paperRef = a8f2d6749189f58b131fb077b7961b31df5f8005 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0001-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch index de1ff86..c21a7eb 100644 --- a/patches/api/0001-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -593,10 +593,10 @@ index 8321441b8f528a05e297f485672f928e76fe017d..e3b684a189b5c8e2d2b73ef9b0578690 * Sets the world that this location resides in * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..53decf2105e68e62478acebc73e3483918ced370 100644 +index 23e853bae0e051cd43deb9eb24c54e74a56d8ab0..20cb99c906725ba3a67d2a71338ba8cacfe5072c 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java -@@ -9,7 +9,7 @@ import org.bukkit.permissions.ServerOperator; +@@ -10,7 +10,7 @@ import org.bukkit.profile.PlayerProfile; import org.jetbrains.annotations.NotNull; import org.jetbrains.annotations.Nullable; @@ -605,7 +605,7 @@ index 3afd5f5c0208a4ee93b5dbfc2aab2b9d2e8a7544..53decf2105e68e62478acebc73e34839 /** * Checks if this player is currently online -@@ -126,6 +126,13 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio +@@ -139,6 +139,13 @@ public interface OfflinePlayer extends ServerOperator, AnimalTamer, Configuratio @Nullable public Player getPlayer(); @@ -659,7 +659,7 @@ index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..ee19d7fd5bb1851af39320f1edd858e1 private final UUID uuid; private final String name; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 5f35ba35f8517ec28c1b21b3007c9a20dea097a7..37c83fd0ed65bc8b65ffca01b7e051d2175b751d 100644 +index 3e980c630452c8ea72227bc4cd92c605253cd41b..01ce32234885363ddac10b2b277cbcfc19aad766 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -711,7 +711,7 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..6daf17848951eff23186583a7b4af4de /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 51ec2e4ec4239659272bba3d6ba2ad73926ebb88..2fa9309e9e015696c74332fb27350540e434f596 100644 +index 8bc6876c82935988436597161fa0ec94c032174b..ffd5fbc3e14be5439f1334c567b573c31528863c 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; @@ -724,7 +724,7 @@ index 51ec2e4ec4239659272bba3d6ba2ad73926ebb88..2fa9309e9e015696c74332fb27350540 /** * Gets the entity's current position diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index 28d1ff809e44bda0324ffac957c1d455be02e783..2b64852da2f22bd984216ef0164587e085c445bf 100644 +index e8b6cfe7e454c666b4d60b702a3b211dab238830..b9196b22e5bf4dea7466d6a691f93969a2c72843 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -19,7 +19,15 @@ import org.jetbrains.annotations.Nullable; @@ -745,10 +745,10 @@ index 28d1ff809e44bda0324ffac957c1d455be02e783..2b64852da2f22bd984216ef0164587e0 // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 7eda2ba17e39b8183e572c1cefa8afffbf17afcb..4d518881b845087730ae51e4baad569400c312e1 100644 +index 131daee2b29f7016463a00ce7927dff7b0a1b1b4..b3edc0c2afa0058b869e5aa2849084044b194e84 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -43,7 +43,7 @@ import org.jetbrains.annotations.Nullable; +@@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ @@ -757,7 +757,7 @@ index 7eda2ba17e39b8183e572c1cefa8afffbf17afcb..4d518881b845087730ae51e4baad5694 // Paper start @Override -@@ -51,6 +51,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -46,6 +46,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM return net.kyori.adventure.identity.Identity.identity(this.getUniqueId()); } @@ -1155,7 +1155,7 @@ index 7af8d6e51c824cf0592b722b834f1d4986e3cc08..c28d62fc3dc359f9ebcf926094198ee3 private boolean cancelled = false; private final Location location; diff --git a/src/main/java/org/bukkit/inventory/Inventory.java b/src/main/java/org/bukkit/inventory/Inventory.java -index 8864124c4a6ba48523ff217a78b9bac676da592f..b984678a49ff96fa7eca9a5450e1c690f6ec6953 100644 +index 1b577c03c3152d22b70f8bdb321b28ad8fbbc3af..b3449a874666bcd67950ec12da41738f7c24ddee 100644 --- a/src/main/java/org/bukkit/inventory/Inventory.java +++ b/src/main/java/org/bukkit/inventory/Inventory.java @@ -25,7 +25,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 9e0df12..2ca8ed2 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index e48af3822e9f118399c3a1c9358c56efae12e0da..1689306bb9a9fc251574877427ca846e6def7003 100644 +index a62c27777672eff1c488517b37876e3a44a2d57d..6d0e9ac4b48c81c9bbf1b0cfee9aac2bc70ba48d 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1888,4 +1888,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -1996,4 +1996,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull io.papermc.paper.datapack.DatapackManager getDatapackManager(); // Paper end diff --git a/patches/api/0010-Add-Furnace-Recipe-API.patch b/patches/api/0010-Add-Furnace-Recipe-API.patch index c6da453..b64ffcf 100644 --- a/patches/api/0010-Add-Furnace-Recipe-API.patch +++ b/patches/api/0010-Add-Furnace-Recipe-API.patch @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..28c01caa9d6379046f6af6612719b404 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index c808cc8dc96e325c543391048414880ed18a3ed3..9bd733282ed1aa1ac36d88a8da6bcbc20709ff12 100644 +index 959ee46cd440af5a4e5db3f6ee8b163db8e40d86..756bc14add024e74ca27dd12240e920610e7d74d 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3797,6 +3797,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3918,6 +3918,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index f02cbad..094fe41 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -104,7 +104,7 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c4e8e6af67b57406012612b617a7dcaa6e391d09..c43e1eb98644466ca5725b622fe33e2f983805c5 100644 +index eab93e1e3712c0a01cac187bf5944818c813d665..b0cf1f901fc0798e858be395ef349a42a7b3954a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -1709,7 +1709,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop internalTags) { if (this.profile != null) { @@ -17,9 +17,8 @@ index 7cacc61fed0c610845c67894d1cc68e44f5e46fe..18feaf0152b67b18989ca03fbb74194d internalTags.put(SKULL_PROFILE.NBT, serializedProfile); } } -@@ -91,6 +92,11 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { - } - // Paper end + + private void setProfile(GameProfile profile) { this.profile = profile; + // Parchment start -- fix NPEs from plugins abusing NMS + refreshSerializedProfile(); @@ -29,7 +28,7 @@ index 7cacc61fed0c610845c67894d1cc68e44f5e46fe..18feaf0152b67b18989ca03fbb74194d this.serializedProfile = (profile == null) ? null : NbtUtils.writeGameProfile(new CompoundTag(), profile); } -@@ -99,6 +105,7 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { +@@ -97,6 +103,7 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { super.applyToItem(tag); if (this.profile != null) { @@ -37,7 +36,7 @@ index 7cacc61fed0c610845c67894d1cc68e44f5e46fe..18feaf0152b67b18989ca03fbb74194d // SPIGOT-6558: Set initial textures tag.put(SKULL_OWNER.NBT, serializedProfile); // Fill in textures -@@ -234,6 +241,8 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { +@@ -252,6 +259,8 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { if (meta instanceof CraftMetaSkull) { CraftMetaSkull that = (CraftMetaSkull) meta; diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index 596e9a5..7be312a 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -48,10 +48,10 @@ index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700 }); state.spawnAfterBreak((ServerLevel) world, pos, stack); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 176ff59f7639b241a4eac09c00066ee3d4a9fc0b..7381004c126c7552c38fedc07d152b06764257e5 100644 +index 11ed21fb283a3ce80efd1d8a0ad027c47242ebc8..38f24ecd7783d2133819af53211f464559959908 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1972,5 +1972,19 @@ public class CraftEventFactory { +@@ -1991,5 +1991,19 @@ public class CraftEventFactory { final double posZ = pos.getZ(); playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); } diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index 71733d2..8b19296 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 5fb475b3ccaa98861e2c817b37cd1740e5bfed8d..edca5bad11068feee3980fee6078722b4134947f 100644 +index 72f395c8d88c7dd77f39c7ae29dbfcaa683ecc0a..d4f603904544b7f0e37df1cb66b6cc922ea7ef84 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2198,4 +2198,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2270,4 +2270,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end From e237cc3aa93777df172281ca0945878deb32a83d Mon Sep 17 00:00:00 2001 From: lexikiq Date: Mon, 14 Feb 2022 19:27:23 -0500 Subject: [PATCH 23/44] Update gradle plugins and remapper --- build.gradle.kts | 6 +++--- createUpstreamCommit.sh | 1 + 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 2104c07..deb342c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,8 +3,8 @@ import io.papermc.paperweight.util.constants.* plugins { java `maven-publish` - id("com.github.johnrengelman.shadow") version "7.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.3.3" + id("com.github.johnrengelman.shadow") version "7.1.2" apply false + id("io.papermc.paperweight.patcher") version "1.3.4" } repositories { @@ -15,7 +15,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.7.0:fat") + remapper("net.fabricmc:tiny-remapper:0.8.1:fat") decompiler("net.minecraftforge:forgeflower:1.5.498.12") paperclip("io.papermc:paperclip:3.0.2") } diff --git a/createUpstreamCommit.sh b/createUpstreamCommit.sh index 04f70dc..b89a4c0 100755 --- a/createUpstreamCommit.sh +++ b/createUpstreamCommit.sh @@ -1,6 +1,7 @@ #!/usr/bin/env bash # requires curl & jq +# borrowed from https://github.com/PurpurMC/Purpur which is licensed under the MIT license # createUpstreamCommit --paper HASH # flag: --paper HASH - the commit hash to use for comparing commits between paper (PaperMC/Paper/compare/HASH...HEAD) From 9aa2e4da7ea55e6f3515d910b7cfe4eec5b237df Mon Sep 17 00:00:00 2001 From: lexikiq Date: Tue, 1 Mar 2022 16:27:37 -0500 Subject: [PATCH 24/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c50fc3a Updated Upstream (Bukkit/CraftBukkit/Spigot) (#7480) PaperMC/Paper@2a4aef3 Mark ChatRender#render as ApiStatus.Override PaperMC/Paper@f5b9e07 Add GameEvent tags (#6439) PaperMC/Paper@b173c3e Use access transformers for player profile API (#7468) PaperMC/Paper@286bd1b 1.18 misc performance dev branch (#7368) PaperMC/Paper@5bb4549 Fix entity armor not showing on death animation (#7355) PaperMC/Paper@7b8e0c3 Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@36a1650 Furnace RecipesUsed API (#7399) PaperMC/Paper@392acfd Configurable sculk sensor listener range (#6443) PaperMC/Paper@b757019 Add missing block data mins and maxes (#6790) PaperMC/Paper@9cab01e [ci skip] Update Gradle wrapper to 7.4 PaperMC/Paper@cdb893b Add mid-tick task execution to block ticking PaperMC/Paper@854f3d3 Put world into worldlist before initing the world PaperMC/Paper@db81163 Execute mid tick tasks during tile entity ticking PaperMC/Paper@501834e Fix custom inventory holders (#6199) PaperMC/Paper@04a337a Add some missing deprecations to the adventure patch (#7500) PaperMC/Paper@b6dad9c Fix desync on teleporting entity on first tick (#7183) PaperMC/Paper@2a55e35 Option to have default CustomSpawners in custom worlds (#7493) PaperMC/Paper@bfa50ad Custom Potion Mixes (#6744) PaperMC/Paper@7f65b0b Add DataConverter to StructureCheck, for structure lookups PaperMC/Paper@30cb7d0 ignore excessive vel for Minecarts (Fixes #7515) --- gradle.properties | 2 +- patches/api/0008-Expose-MCUtil-Executors.patch | 8 ++++---- patches/api/0010-Add-Furnace-Recipe-API.patch | 4 ++-- patches/server/0001-Build-changes.patch | 8 ++++---- patches/server/0003-Add-SoundEvent.patch | 8 ++++---- patches/server/0009-Expose-MCUtil-Executors.patch | 4 ++-- ...missing-CraftMetaSkull-serializedProfile.patch | 15 ++++----------- patches/server/0012-Add-Furnace-Recipe-API.patch | 4 ++-- .../0013-Disable-sleep-status-announcements.patch | 4 ++-- 9 files changed, 25 insertions(+), 32 deletions(-) diff --git a/gradle.properties b/gradle.properties index 9d434c5..965b079 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.1-R0.1-SNAPSHOT mcVersion = 1.18.1 -paperRef = a8f2d6749189f58b131fb077b7961b31df5f8005 +paperRef = 30cb7d0407bfb01a3bc0cc2da1dc0af32dfae5a4 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 2ca8ed2..193cb1f 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,12 +5,12 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index a62c27777672eff1c488517b37876e3a44a2d57d..6d0e9ac4b48c81c9bbf1b0cfee9aac2bc70ba48d 100644 +index cca362e54d6ff4a5a1e60f85a7eb1b3d222d3d48..e9ee90ce4f1c8b58ab2b20a6806de11dcdf98423 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -1996,4 +1996,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi - @NotNull - io.papermc.paper.datapack.DatapackManager getDatapackManager(); +@@ -2003,4 +2003,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi + */ + @NotNull org.bukkit.potion.PotionBrewer getPotionBrewer(); // Paper end + + // Parchment start diff --git a/patches/api/0010-Add-Furnace-Recipe-API.patch b/patches/api/0010-Add-Furnace-Recipe-API.patch index b64ffcf..948cf68 100644 --- a/patches/api/0010-Add-Furnace-Recipe-API.patch +++ b/patches/api/0010-Add-Furnace-Recipe-API.patch @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..28c01caa9d6379046f6af6612719b404 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 959ee46cd440af5a4e5db3f6ee8b163db8e40d86..756bc14add024e74ca27dd12240e920610e7d74d 100644 +index 8a688583e65cd22e0417f9fd24e51803486d095e..b69e0ab985613eede661153e331f1172676212d9 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3918,6 +3918,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3929,6 +3929,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 094fe41..f64e2a5 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 028f6a1795ceb99d1760c73b0980238677b4b8bc..0466c22ca2325d090a5763c6b940252c32815a85 100644 +index 4662952bd0a389fe77e00ede9ab4a57f33522794..39a1d297feef86c9427a605b1ff2b7fa3fae370e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,8 +18,8 @@ repositories { @@ -104,10 +104,10 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index eab93e1e3712c0a01cac187bf5944818c813d665..b0cf1f901fc0798e858be395ef349a42a7b3954a 100644 +index c847a2b935130a293d9ac4c196c9cff27470649b..b624314d1c21be56b85764eb3fe3c76db63f7589 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1709,7 +1709,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop internalTags) { - if (this.profile != null) { -+ refreshSerializedProfile(); // Parchment -- fix NPEs from plugins abusing NMS - internalTags.put(SKULL_PROFILE.NBT, serializedProfile); - } - } +@@ -80,6 +80,11 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { private void setProfile(GameProfile profile) { this.profile = profile; @@ -28,7 +21,7 @@ index 9f72e1623fc85301c4ca8751a7e03877a7745948..4b5fdb42a72f0730553e5c5ff2819a67 this.serializedProfile = (profile == null) ? null : NbtUtils.writeGameProfile(new CompoundTag(), profile); } -@@ -97,6 +103,7 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { +@@ -88,6 +93,7 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { super.applyToItem(tag); if (this.profile != null) { @@ -36,7 +29,7 @@ index 9f72e1623fc85301c4ca8751a7e03877a7745948..4b5fdb42a72f0730553e5c5ff2819a67 // SPIGOT-6558: Set initial textures tag.put(SKULL_OWNER.NBT, serializedProfile); // Fill in textures -@@ -252,6 +259,8 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { +@@ -243,6 +249,8 @@ class CraftMetaSkull extends CraftMetaItem implements SkullMeta { if (meta instanceof CraftMetaSkull) { CraftMetaSkull that = (CraftMetaSkull) meta; diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index 8b19296..1e3c915 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 72f395c8d88c7dd77f39c7ae29dbfcaa683ecc0a..d4f603904544b7f0e37df1cb66b6cc922ea7ef84 100644 +index 2c3ce2065812de227c34506edddb439da9a07ba1..e238c3ac4948081bc28d03d45f6f1e2b097f0f97 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2270,4 +2270,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2312,4 +2312,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end diff --git a/patches/server/0013-Disable-sleep-status-announcements.patch b/patches/server/0013-Disable-sleep-status-announcements.patch index 2be722e..42b9eab 100644 --- a/patches/server/0013-Disable-sleep-status-announcements.patch +++ b/patches/server/0013-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 205b2a1c7db64cb0b23289e11d8b551a78fca5be..51af3b5b730a427743fb4f93c0e7fef7a10454ac 100644 +index 47ccd16dd86072805359266b746ff9a70e4513ad..2135c3e9df70c9c3e492e63f9c348510f488b121 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -893,7 +893,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -896,7 +896,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { From cad9362f3dbfe14afb7b4121a105eb63c4e60711 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Tue, 1 Mar 2022 16:47:05 -0500 Subject: [PATCH 25/44] Updated Upstream () Upstream has released updates that appear to apply and compile correctly --- gradle.properties | 6 +++--- patches/server/0001-Build-changes.patch | 12 ++++++------ patches/server/0003-Add-SoundEvent.patch | 16 ++++++++-------- ...in-location-to-EntityDamageByBlockEvent.patch | 6 +++--- .../server/0007-Expose-EntityType-Ordinals.patch | 12 ++++++------ .../server/0008-Add-Player-setGameProfile.patch | 4 ++-- .../server/0009-Expose-MCUtil-Executors.patch | 4 ++-- .../0011-Add-BlockDropResourcesEvent.patch | 10 +++++----- patches/server/0012-Add-Furnace-Recipe-API.patch | 4 ++-- ...0013-Disable-sleep-status-announcements.patch | 4 ++-- 10 files changed, 39 insertions(+), 39 deletions(-) diff --git a/gradle.properties b/gradle.properties index 965b079..40993f9 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = gg.projecteden.parchment -version = 1.18.1-R0.1-SNAPSHOT +version = 1.18.2-R0.1-SNAPSHOT -mcVersion = 1.18.1 -paperRef = 30cb7d0407bfb01a3bc0cc2da1dc0af32dfae5a4 +mcVersion = 1.18.2 +paperRef = 0859f594698246d3999ea9829393bc90cf783088 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index f64e2a5..ccc6a4d 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 4662952bd0a389fe77e00ede9ab4a57f33522794..39a1d297feef86c9427a605b1ff2b7fa3fae370e 100644 +index 4beb35d1e5b013395f5df101e843f41c2ce174ad..a2f1e252630c4ac0f2521a3f53be60116995617e 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -18,8 +18,8 @@ repositories { @@ -104,10 +104,10 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index c847a2b935130a293d9ac4c196c9cff27470649b..b624314d1c21be56b85764eb3fe3c76db63f7589 100644 +index 0a0bc8c45cb70073cb94dee25b5e54fb98bf9c8e..780a88c7fcab402f1908ee1959f907e52d998a2e 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1719,7 +1719,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop implements EntityTypeTest { + private static int ordinal = 0; // Parchment + private static final java.util.Map ordinals = new java.util.HashMap<>(); // Parchment - private static final Logger LOGGER = LogManager.getLogger(); + private static final Logger LOGGER = LogUtils.getLogger(); public static final String ENTITY_TAG = "EntityTag"; - private static final float MAGIC_HORSE_WIDTH = 1.3964844F; -@@ -282,9 +284,31 @@ public class EntityType implements EntityTypeTest { + private final Holder.Reference> builtInRegistryHolder; +@@ -285,9 +287,31 @@ public class EntityType implements EntityTypeTest { private final EntityDimensions dimensions; private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error @@ -51,7 +51,7 @@ index 419a7e9614af2328ed401fc954196056243a984c..b657453b61a29c920b87e94d23fc09e9 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 5d287d4cb1c9302479d8d2dd92939b4832991a92..fc03814909c0a128af74bdc09bc0b6a62859d05d 100644 +index 6fa8fdfeec2af4a669e60c5a238c81f90f19c546..b3c6cf1c6bd37815ef144965b8af7825b15e08e0 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -634,6 +634,18 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch index d48df0d..b91f344 100644 --- a/patches/server/0008-Add-Player-setGameProfile.patch +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile 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 a90cbb8d5c3231f3278bd4893fa1443827c6567b..9a903745bbeb68c7b056e35866c731656315f01c 100644 +index c4db8912d3af42cc4da825e8b43f3fdf4d49e1b5..86e6c4ce5b5dee9e1fc12deca288310ee485337c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1452,6 +1452,12 @@ public abstract class Player extends LivingEntity { +@@ -1465,6 +1465,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0009-Expose-MCUtil-Executors.patch b/patches/server/0009-Expose-MCUtil-Executors.patch index 13ad177..e180eaf 100644 --- a/patches/server/0009-Expose-MCUtil-Executors.patch +++ b/patches/server/0009-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index bb3c7383d774dec2951cf29ea516d242de25a15f..7ae15e38d65a6f122d6a710f91ed3cbe9322dd47 100644 +index 3336f223f9f0c6207471de15326f40d2ddc1dae2..a193f2ab16fecc26c04408a4473e064dd79168dd 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2857,4 +2857,16 @@ public final class CraftServer implements Server { +@@ -2833,4 +2833,16 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index 7be312a..e0c5770 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -8,10 +8,10 @@ to easily get the items being dropped by any block instead of only blocks broken by players. diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700d4afe0f0 100644 +index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1b90b05d6 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -304,7 +304,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -306,7 +306,7 @@ public class Block extends BlockBehaviour implements ItemLike { ServerLevel worldserver = lootContext.getLevel(); BlockPos blockposition = new BlockPos((Vec3) lootContext.getParameter(LootContextParams.ORIGIN)); @@ -20,7 +20,7 @@ index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700 Block.popResource(worldserver, blockposition, itemstack); }); state.spawnAfterBreak(worldserver, blockposition, ItemStack.EMPTY); -@@ -312,7 +312,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -314,7 +314,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos) { if (world instanceof ServerLevel) { @@ -29,7 +29,7 @@ index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700 Block.popResource(world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -322,7 +322,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -324,7 +324,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { @@ -38,7 +38,7 @@ index ab5b9f00123e2ede2931ffc520684e482aac49b4..51e69414e37d824d1d8b1e1b82bcf700 Block.popResource((ServerLevel) world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -349,7 +349,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -351,7 +351,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack stack) { if (world instanceof ServerLevel) { diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index 1e3c915..f94d085 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 2c3ce2065812de227c34506edddb439da9a07ba1..e238c3ac4948081bc28d03d45f6f1e2b097f0f97 100644 +index a3ddeb9862bc87294c215dc906cd8cca8f699b62..2e9efad46a1b395040a7dff6f80382ea9a2ae980 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2312,4 +2312,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2316,4 +2316,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end diff --git a/patches/server/0013-Disable-sleep-status-announcements.patch b/patches/server/0013-Disable-sleep-status-announcements.patch index 42b9eab..e86f54e 100644 --- a/patches/server/0013-Disable-sleep-status-announcements.patch +++ b/patches/server/0013-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 47ccd16dd86072805359266b746ff9a70e4513ad..2135c3e9df70c9c3e492e63f9c348510f488b121 100644 +index 8013aa65752e15217b5ae99e012fb745205b9853..98a54230527d97820f8d7873fb1c4adb71ee06d5 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -896,7 +896,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { From 9b316cd4b3e54d55375fa18fa226220bc151adb7 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Fri, 4 Mar 2022 18:40:31 -0500 Subject: [PATCH 26/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@c2e2281 Initial 1.18 update PaperMC/Paper@12efc3f Fixes PaperMC/Paper@60af9b0 moar fixes PaperMC/Paper@19f9520 1.18.2 compiles successfuly now PaperMC/Paper@f4eb08a Readd 'Fix entity type tags suggestions in selectors' PaperMC/Paper@706c98a Update Datafixer PaperMC/Paper@02e2402 Update README PaperMC/Paper@c984991 Fix mc dev fix by removing it PaperMC/Paper@490517d fixed flat bedrock patch PaperMC/Paper@9da236f re-add config for stronghold seed patch PaperMC/Paper@9a73213 Adventure 4.10.0 PaperMC/Paper@37436ac Move comment up PaperMC/Paper@c6fc144 Fix unload stall PaperMC/Paper@fbe43d6 clean up patch changes PaperMC/Paper@3526f22 move patch relying on TraceUtil to after its creation PaperMC/Paper@fd74326 update reobf-mappings-patch.tiny PaperMC/Paper@5071d50 clean up view distance api diff PaperMC/Paper@cc45a35 move decompile fixes to start of git history PaperMC/Paper@146ac7b address failing mob goals test PaperMC/Paper@b9037a5 fix issue resulting from kenny's apatch addiction PaperMC/Paper@126ca73 Add TODO for leaf PaperMC/Paper@ab8a139 Configure javadoc overview and doc-files copying PaperMC/Paper@0859f59 1_18_R2 PaperMC/Paper@14add2b Updated Upstream (CraftBukkit) PaperMC/Paper@178802a Fix various 1.18.2 update issues (#7523) PaperMC/Paper@b1afebb Force close world loading screen on join (#7529) PaperMC/Paper@d3caeeb Fix early registry access in xray patch PaperMC/Paper@c6ea84c Drop unneeded desync patch PaperMC/Paper@12d89fe Revert chunk postprocessing back to 1.18.1 logic PaperMC/Paper@90788a5 clean up prepareTickingChunk diff PaperMC/Paper@d33cdcf Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@753bf2c Update paperweight to 1.3.5 PaperMC/Paper@15b6b3d Add StructuresLocateEvent as replacement for StructureLocateEvent (#7524) PaperMC/Paper@c09365a Fix deadlock on watchdog crash (#7535) PaperMC/Paper@719daa8 Updated Upstream (CraftBukkit) PaperMC/Paper@b9f26bb Add printPaperVersion task PaperMC/Paper@63aa4d3 Clarify exception messages for invalid view distances (#7510) PaperMC/Paper@0ee6dda Add javadoc linking for adventure-text-minimessage (#7538) PaperMC/Paper@b6616c8 Fix falling block spawn methods PaperMC/Paper@6d47843 replace bungeecord-chat dependency with deprecated version (#7539) PaperMC/Paper@42a9c37 Move Adventure patch up --- gradle.properties | 2 +- patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/api/0007-Expose-NMS-ordinals.patch | 4 ++-- patches/server/0001-Build-changes.patch | 6 +++--- patches/server/0003-Add-SoundEvent.patch | 6 +++--- patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 ++-- patches/server/0007-Expose-EntityType-Ordinals.patch | 4 ++-- patches/server/0012-Add-Furnace-Recipe-API.patch | 4 ++-- 8 files changed, 17 insertions(+), 17 deletions(-) diff --git a/gradle.properties b/gradle.properties index 40993f9..ddb12a8 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.2-R0.1-SNAPSHOT mcVersion = 1.18.2 -paperRef = 0859f594698246d3999ea9829393bc90cf783088 +paperRef = 6d4784392d765fb6d82a4d57869925852543f7e3 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch index bf6a51b..f48517c 100644 --- a/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index f59030893eba2bf653207b040a5f54fdf7b7b50f..02c78e80a0e30aaeebc441fde9b27e3563011a0f 100644 +index b39d1474210da1974d7e95f10daaf496a9330442..107f356026397f1a6ef8580c7f239a02bf8105fe 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -225,4 +225,17 @@ public interface UnsafeValues { +@@ -238,4 +238,17 @@ public interface UnsafeValues { */ boolean isCollidable(@org.jetbrains.annotations.NotNull Material material); // Paper end diff --git a/patches/api/0007-Expose-NMS-ordinals.patch b/patches/api/0007-Expose-NMS-ordinals.patch index 945a2fa..682033f 100644 --- a/patches/api/0007-Expose-NMS-ordinals.patch +++ b/patches/api/0007-Expose-NMS-ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose NMS ordinals diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 02c78e80a0e30aaeebc441fde9b27e3563011a0f..4a105b3e48eabb17dd701cd7287c7054311a365b 100644 +index 107f356026397f1a6ef8580c7f239a02bf8105fe..12b9d9fff1313aa27a8178456934b88df76580d6 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -237,5 +237,12 @@ public interface UnsafeValues { +@@ -250,5 +250,12 @@ public interface UnsafeValues { * @return if the item can be placed */ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index ccc6a4d..9163b53 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -104,10 +104,10 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0a0bc8c45cb70073cb94dee25b5e54fb98bf9c8e..780a88c7fcab402f1908ee1959f907e52d998a2e 100644 +index 07c382f30ed3736ed15b5b71f48dc4a1de958242..6994038e8371a7d506d5f4c5abdf3b441f329231 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1685,7 +1685,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); } diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index f94d085..4bd4d21 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a3ddeb9862bc87294c215dc906cd8cca8f699b62..2e9efad46a1b395040a7dff6f80382ea9a2ae980 100644 +index 028663b86970b8a1ae3e5275429516ee00ef0a04..f3b65b3fa80f2cbc5986b6dfd56b6346bae83b36 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2316,4 +2316,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2328,4 +2328,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end From f5430d06d72cfeac37ace5b204172ebdc59f393b Mon Sep 17 00:00:00 2001 From: Lexi Date: Sun, 12 Jun 2022 18:18:03 -0400 Subject: [PATCH 27/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly PaperMC/Paper@42a9c37 Move Adventure patch up PaperMC/Paper@1d7a6a0 Add missing glow_item_frame walkers PaperMC/Paper@f9b05cc Expose furnace minecart push property. (#7548) PaperMC/Paper@9351513 Fix handling message in PlayerHandshakeEvent (#7542) PaperMC/Paper@6564f70 Fix cancelling ProjectileHitEvent for piercing arrows (#7492) PaperMC/Paper@196271d Fix save problems on shutdown PaperMC/Paper@1e12cf8 Add more to the save fixes PaperMC/Paper@a36d7f6 Updated Upstream (CraftBukkit) PaperMC/Paper@7b9c30f Fix scoreboard objective name length limit PaperMC/Paper@d9bf5e7 Add method to set noclip on arrows (#7263) PaperMC/Paper@c34fb09 Add ghast api (#7554) PaperMC/Paper@e0b3f3f Adventure 4.10.1 PaperMC/Paper@718fab1 Add CPU name and JVM vendor info in timings (#7490) PaperMC/Paper@7a21333 Fix setting the view distance to 32 (#7503) PaperMC/Paper@4423e12 Update docs link in paper.yml (#7562) PaperMC/Paper@b55ba19 Update README for new docs (#7561) PaperMC/Paper@657d163 Prevent despawned navigators being readded (#7574) PaperMC/Paper@d714682 Add more entity api (#7564) PaperMC/Paper@1790528 More projectile API (#5731) PaperMC/Paper@ea1efef Remove Patches (#7541) PaperMC/Paper@aab1f8a Fix swamp hut cat generation deadlock PaperMC/Paper@dc96bba Ensure the item sent isn't air (#7584) PaperMC/Paper@bfa33d9 Various improvements to console color formatting (#7560) PaperMC/Paper@87927e1 Fix CreativeCategory API (#7586) PaperMC/Paper@ab03538 Fix colors in some console messages PaperMC/Paper@1358d1e Updated Upstream (CraftBukkit/Spigot) (#7580) PaperMC/Paper@b65b48f [ci skip] Update gradle wrapper PaperMC/Paper@1ce3555 [ci-skip] Fix typo in feature request issue template (#7593) PaperMC/Paper@c8e49cc Add get/set wait time for fish hooks. (#5595) PaperMC/Paper@a5be178 Use correct toX/Y/Z in player move packet handling PaperMC/Paper@0ca80c7 Add getComputedBiome API (#5668) PaperMC/Paper@2d3e8f7 Properly lookup random-ticked precipitation blocks (#7606) PaperMC/Paper@f35a0ce Remove Java version check once and for all (#7612) PaperMC/Paper@1c5f8b0 Updated Upstream (Bukkit/CraftBukkit) (#7604) PaperMC/Paper@f0d0078 Add debug for invalid GameProfiles on skull blocks/items (#7512) PaperMC/Paper@8788bf7 fix datapacks not being able to modify nether/end (#7588) PaperMC/Paper@b8c90d2 Added method to check snapshot state of TileStates (#7325) PaperMC/Paper@8897cea Add enchantWithLevels API (#7615) PaperMC/Paper@2eeca6f Fix world saving in unloadWorld PaperMC/Paper@319d5fa Fix state locking for getTopMRUProfiles & getProfileIfCached PaperMC/Paper@bc68ee0 Remove redundant GameProfileCache diff PaperMC/Paper@855637f Updated Upstream (CraftBukkit) (#7624) PaperMC/Paper@5eb61dd Buffer OOB setBlock calls PaperMC/Paper@7b46444 Properly create profiles with custom name/uuid (#7558) PaperMC/Paper@a686ff5 Add more missing entity API (#7592) PaperMC/Paper@993f828 Add TameableDeathMessageEvent (#5392) PaperMC/Paper@a939d6e Fix generator settings string for flat-type worlds (#7568) PaperMC/Paper@ab666a4 Deprecating remaining blockkey methods (#7638) PaperMC/Paper@e7d928a Fix EntityChangeBlockEvent#getBlockData for when sheep eats grass block (#7646) PaperMC/Paper@e2f743d Fix PalettedContainer synchronization (#7663) PaperMC/Paper@7fa8870 Updated Upstream (Bukkit/CraftBukkit) (#7672) PaperMC/Paper@fa68bb1 Fix entity position desync for hanging entities (#7659) PaperMC/Paper@d3c1023 fix player loottables running when mob loot gamerule is false (#7651) PaperMC/Paper@7f47b9b Remove KeyedObject interface (#7680) PaperMC/Paper@7bf9446 Add per player chunk loading limits PaperMC/Paper@04c7b16 Undeprecate Material#isLegacy (#7679) PaperMC/Paper@443c506 Fix Nullability Annotations for PrepareItemEnchantEvent (#7681) PaperMC/Paper@ea2c81e Fix lectern quick move PaperMC/Paper@87e11bf Cache resource keys instead of trying to create them (#7643) PaperMC/Paper@820e9ca Update decompiler & param mappings PaperMC/Paper@92426e3 Update Gradle wrapper PaperMC/Paper@62dcff3 Update actions PaperMC/Paper@2914457 Allow seting custom podium location for ender dragon (#7695) PaperMC/Paper@11e0dcd Fix NBT pieces overriding a block entity during worldgen deadlock (#7692) PaperMC/Paper@2f16393 Updated Upstream (CraftBukkit) PaperMC/Paper@4322c05 Use patched spigot decompiler (#7706) PaperMC/Paper@f8e8d6c Strip enderpearl owners when they are no longer ticked (#7559) PaperMC/Paper@e42d683 Fix StructureGrowEvent species for RED_MUSHROOM PaperMC/Paper@a9ee104 Prevent tile entity copies loading chunks PaperMC/Paper@d4a712d [CI-SKIP] Remove unused import from last patch PaperMC/Paper@a9f252e Replace third party repos with Paper repo (#7733) PaperMC/Paper@b8fa41e [ci skip] Remove Mojang repo from test-plugin PaperMC/Paper@c6e631a Use username instead of display name in PlayerList#getPlayerStats (#7740) PaperMC/Paper@1cfd363 Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@af94364 Fix slime spawners not spawning outside slime chunks (#7741) PaperMC/Paper@6b9f7a0 Don't fire worldborder events for virtual borders (#7749) PaperMC/Paper@8bfb1d2 Pass ServerLevel for gamerule callbacks (#7668) PaperMC/Paper@c66b0f9 Add pre-unbreaking amount to PlayerItemDamageEvent (#7724) PaperMC/Paper@86fb3d2 Don't send itemmeta for books with the hide option enabled (#7734) PaperMC/Paper@c642d25 Improve update folder behavior (#7687) PaperMC/Paper@c7d4c01 Ignore invalid jars inside of the updates folder (Fixes #7751) PaperMC/Paper@4ecc338 WorldCreator#keepSpawnLoaded (#7673) PaperMC/Paper@873bfa6 Remove World#refreshChunk deprecation (#7684) PaperMC/Paper@76ed156 Grant temporary immunity from EAR to moving entities (Fixes #7637) (#7644) PaperMC/Paper@567fce6 Don't apply previous potion when item is potion (fixes #7756) (#7757) PaperMC/Paper@c449f6a Build updates PaperMC/Paper@ef6a1a5 Revert to old createProfile(UUID, String) logic (#7723) PaperMC/Paper@0f8aa4e Fix NPE for BlockDataMeta#getBlockData (#7670) PaperMC/Paper@16f224a Trigger bee_nest_destroyed trigger in the correct place (#7436) PaperMC/Paper@caf4a6f Remove or replace a few dumb deprecations (#7760) PaperMC/Paper@47f43da Add missing javadoc deprecation msgs for PlayerProfile (#7688) PaperMC/Paper@fbbc03a Add EntityDyeEvent and CollarColorable interface (#7625) PaperMC/Paper@5b85ee3 Fire CauldronLevelChange on initial fill (#7678) PaperMC/Paper@4dc78ae Fix some team color docs and added hasColor (#7602) PaperMC/Paper@0bf7c95 Fix opening inv in PlayerRecipeBookClickEvent handler (#7552) PaperMC/Paper@d70ac03 fix powder snow cauldrons not turning to water (#7229) PaperMC/Paper@ce059b4 Fix V1451 dataconverter stat types PaperMC/Paper@6f5e6c6 Use setMessage instead of arraycopy PaperMC/Paper@608482d cleanup filtered sign text (#7777) PaperMC/Paper@4166632 Updated Upstream (Bukkit/CraftBukkit) (#7776) PaperMC/Paper@e564110 Couple fixes/improvements to PlayerSetSpawnEvent (#6754) PaperMC/Paper@e5da93a Deprecate duplicate SoundGroup API (#7509) PaperMC/Paper@2ab0258 Use mojang item ids for alternative item despawn rate (#6997) PaperMC/Paper@f6a69de Undeprecate getOfflinePlayer (#7773) PaperMC/Paper@a117da6 Add PlayerStopUsingItemEvent (#7787) PaperMC/Paper@f3a8a0b FallingBlock auto expire setting (#7037) PaperMC/Paper@4219389 Don't tick markers (#7299) PaperMC/Paper@2515bc4 Improve configurable door difficulty (#6985) PaperMC/Paper@8c9d98e Clean unused field for Configurable door breaking difficulty (#7793) PaperMC/Paper@b831784 Only log for passenger / vehicle world mismatch PaperMC/Paper@7a6163b Add Alternate Current's redstone implementation as an alternative to Vanilla and Eigencraft's. (#7701) PaperMC/Paper@1a17a83 Move redstone config changes to Eigencraft patch PaperMC/Paper@87d2eb2 Fix door breaking difficulty defaults for vindicator (#7795) PaperMC/Paper@e399754 Do not accept invalid client settings PaperMC/Paper@268476b Fix whitespace error in Alternate Current patch PaperMC/Paper@18f0f8d Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@5928327 Remove unneeded patch (#7806) PaperMC/Paper@9fd870d Fix cancelling PlayerItemFrameChangeEvent (#7761) PaperMC/Paper@8d1de8d deprecate old MaterialData api (#7585) PaperMC/Paper@0116751 List world on tile entity placement exception (#7709) PaperMC/Paper@73bd35d Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@7045f18 Change link to screamingsandals PaperMC/Paper@ca62386 Hide ores with deepslate at Y=4 and below (#7792) PaperMC/Paper@9b492cf Deprecate set/doesBounce from Projectile (#7800) PaperMC/Paper@ed4e916 [ci-skip] Update repository and API urls (#7835) PaperMC/Paper@fc1752f Fix more upstream javadocs (#7837) PaperMC/Paper@123cad5 Remove incorrect parent perm from debugstick.always (#7846) PaperMC/Paper@d8108b5 team color parameter may be null, causing NPE PaperMC/Paper@31ccc57 Add support for Proxy Protocol (#7710) PaperMC/Paper@a90092e Updated Upstream (CraftBukkit/Spigot) (#7848) PaperMC/Paper@79e07f3 Fix addPassenger for Marker (#7762) PaperMC/Paper@182a609 Fix duplicate world keys via createWorld (#7614) PaperMC/Paper@b6a6544 Provide ComponentSerializer services (#7527) PaperMC/Paper@3f7fbe3 Fix cb's janky level name in WorldCreator (#7851) PaperMC/Paper@af3b377 Update ForgeFlower (#7857) PaperMC/Paper@9667181 Fix OfflinePlayer#getBedSpawnLocation (#7861) PaperMC/Paper@c123915 Fix FurnaceInventory for smokers and blast furnaces (#7249) PaperMC/Paper@f7382f5 Remove unneeded UOE when copying biome sources (#7629) PaperMC/Paper@6b035fd Update default vanilla command perms (#7386) PaperMC/Paper@f210f67 Update the rewriteForIde for new cb package version (#7242) PaperMC/Paper@3f7111d Fix EntityEquipment and related javadocs (#7380) PaperMC/Paper@78e6431 Add default kick msg component (#6886) PaperMC/Paper@04e1b07 Check HAProxyMessage type is PROXY (#7864) PaperMC/Paper@00c6ae8 Implement Translatable on CreativeCategory (#7587) PaperMC/Paper@7602dd2 Sanitize Sent BlockEntity NBT (#7010) PaperMC/Paper@2d17a50 Add translation keys to GameMode enum (#7081) PaperMC/Paper@c5caee3 Prevent entity loading causing async lookups (#7553) PaperMC/Paper@71fe3c6 Add numeric string completion suggestions as int suggestions (#6360) PaperMC/Paper@b1ac25f Respect x-ray permission in World#refreshChunk (#7214) PaperMC/Paper@1d08ce8 Disable book selector resolving by default PaperMC/Paper@80d5e71 Updated Upstream (Bukkit) PaperMC/Paper@2033dba Updated Upstream (CraftBukkit) PaperMC/Paper@a3ad720 Remove ChatColor usages (#7543) PaperMC/Paper@8fc0999 Fix some nullability things (#7275) PaperMC/Paper@fd069dd Remove incorrect throws javadoc in Team (#7869) PaperMC/Paper@bed5cb2 Limit resolved selectors when enabled PaperMC/Paper@4d83ed0 [ci skip] Changing the order of the rebase with autosquash command in the contributing.md (#6974) PaperMC/Paper@071a4a2 throw exception if worlds are created while being ticked (#7653) PaperMC/Paper@5b6397a Make leave messages for kicks the same as for quitting (#7874) PaperMC/Paper@5befb55 Updated Upstream (Bukkit/CraftBukkit) (#7875) PaperMC/Paper@b3deb25 Move some methods to RegionAccessor (#7635) PaperMC/Paper@d8ef841 [DataConverter] Fix generator options parsing PaperMC/Paper@4b27254 Fix treasure maps discovered settings (#7627) PaperMC/Paper@276d830 Fix campfire walker in V1920 PaperMC/Paper@3925a53 Make timings link clickable (#7944) --- build.gradle.kts | 4 +- gradle.properties | 2 +- patches/api/0001-Add-Getter-interfaces.patch | 43 ++++++++----------- ...0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 +- patches/api/0007-Expose-NMS-ordinals.patch | 4 +- .../api/0008-Expose-MCUtil-Executors.patch | 4 +- patches/api/0010-Add-Furnace-Recipe-API.patch | 4 +- patches/server/0001-Build-changes.patch | 26 +++++------ patches/server/0003-Add-SoundEvent.patch | 18 ++++---- ...0004-Add-PlayerUseRespawnAnchorEvent.patch | 27 ++++++------ ...location-to-EntityDamageByBlockEvent.patch | 24 ++++++----- ...0006-Add-UnsafeValues-canPlaceItemOn.patch | 4 +- .../0007-Expose-EntityType-Ordinals.patch | 4 +- .../0008-Add-Player-setGameProfile.patch | 4 +- .../server/0009-Expose-MCUtil-Executors.patch | 4 +- .../0011-Add-BlockDropResourcesEvent.patch | 4 +- .../server/0012-Add-Furnace-Recipe-API.patch | 4 +- ...3-Disable-sleep-status-announcements.patch | 4 +- 18 files changed, 91 insertions(+), 97 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index deb342c..90f8ef0 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.2" apply false - id("io.papermc.paperweight.patcher") version "1.3.4" + id("io.papermc.paperweight.patcher") version "1.3.6" } repositories { @@ -15,7 +15,7 @@ repositories { } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.1:fat") + remapper("net.fabricmc:tiny-remapper:0.8.2:fat") decompiler("net.minecraftforge:forgeflower:1.5.498.12") paperclip("io.papermc:paperclip:3.0.2") } diff --git a/gradle.properties b/gradle.properties index ddb12a8..21920f4 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.18.2-R0.1-SNAPSHOT mcVersion = 1.18.2 -paperRef = 6d4784392d765fb6d82a4d57869925852543f7e3 +paperRef = 3925a53dd0fbe6bb99c15228b618dddd67017dcd org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0001-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch index c21a7eb..4e2c1a6 100644 --- a/patches/api/0001-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -60,10 +60,10 @@ index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a45 private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index a077962fa786a3291849abfa823c7f0ec4664fce..900be9033fa8573158d2d6186d40fd14ebdb1996 100644 +index a79aa4834e700f845a625e9ab15760690726e81c..fd51dfa9218065b2ace87a92eedf4ec4584a7393 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -@@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; +@@ -20,7 +20,7 @@ import java.util.UUID; * *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ @@ -566,7 +566,7 @@ index 12163a7b0591a7d022dc7eb9ee6608a1b6c39d9b..d81c7307127b135417e06a3b244416be private static final HandlerList handlers = new HandlerList(); private final Player player; diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java -index 8321441b8f528a05e297f485672f928e76fe017d..e3b684a189b5c8e2d2b73ef9b057869012f86c03 100644 +index ef0cb00ca4cb7d2f5e4ec1c950cce036566d1ae4..df53183beb4c438ea3c821e1ffd8e2719c08f269 100644 --- a/src/main/java/org/bukkit/Location.java +++ b/src/main/java/org/bukkit/Location.java @@ -30,7 +30,7 @@ import org.bukkit.entity.Player; @@ -659,7 +659,7 @@ index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..ee19d7fd5bb1851af39320f1edd858e1 private final UUID uuid; private final String name; diff --git a/src/main/java/org/bukkit/block/Block.java b/src/main/java/org/bukkit/block/Block.java -index 3e980c630452c8ea72227bc4cd92c605253cd41b..01ce32234885363ddac10b2b277cbcfc19aad766 100644 +index e405c279f6135c94c775a856ab88fd3cace6bd5c..359cad4528e0c9b45ac3447655f24e7925bff7d2 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -672,7 +672,7 @@ index 3e980c630452c8ea72227bc4cd92c605253cd41b..01ce32234885363ddac10b2b277cbcfc /** * Gets the metadata for this block diff --git a/src/main/java/org/bukkit/block/BlockState.java b/src/main/java/org/bukkit/block/BlockState.java -index 96cde879922c796f3ac8d14ee99d7b190ff67bd9..c17f34ceedc76ac489cb9f8576df1cdd520ef1ea 100644 +index 10cbe71917bc32cca61748bcb0aa3395c554dbf8..280df0fc6f7344863f0fd2ba7592494bcd8bf2da 100644 --- a/src/main/java/org/bukkit/block/BlockState.java +++ b/src/main/java/org/bukkit/block/BlockState.java @@ -20,7 +20,7 @@ import org.jetbrains.annotations.Nullable; @@ -745,22 +745,16 @@ index e8b6cfe7e454c666b4d60b702a3b211dab238830..b9196b22e5bf4dea7466d6a691f93969 // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 131daee2b29f7016463a00ce7927dff7b0a1b1b4..b3edc0c2afa0058b869e5aa2849084044b194e84 100644 +index 6cd0b10d1dc4506cfb1e4db5e1260cb705566cec..a3ff1cb4b2754900879c67638a3488cd9d76cdb1 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -38,7 +38,7 @@ import org.jetbrains.annotations.Nullable; +@@ -40,7 +40,17 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ -public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient { // Paper +public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginMessageRecipient, net.kyori.adventure.identity.Identified, com.destroystokyo.paper.network.NetworkClient, gg.projecteden.parchment.HasPlayer { // Paper // Parchment - - // Paper start - @Override -@@ -46,6 +46,16 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - return net.kyori.adventure.identity.Identity.identity(this.getUniqueId()); - } - ++ + // Parchment start - fix defaults + /** + * Returns this player object. @@ -770,10 +764,9 @@ index 131daee2b29f7016463a00ce7927dff7b0a1b1b4..b3edc0c2afa0058b869e5aa284908404 + @Override + @NotNull Player getPlayer(); + // Parchment end -+ - /** - * Gets the "friendly" name to display of this player. - * + + // Paper start + @Override diff --git a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java b/src/main/java/org/bukkit/event/block/BlockBreakEvent.java index 691733a642b3295bbe6d484be728c77cd32803bd..a2eae7a9bad13d1ba2bd954888a0373834d30078 100644 --- a/src/main/java/org/bukkit/event/block/BlockBreakEvent.java @@ -801,12 +794,12 @@ index a1350c0f74d445dca09eea6e10abac050bb06990..11bb6f8f7363f31061d5fd0f2e451509 protected boolean buildable; diff --git a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java -index f70871e1ae7b1a1d77405d942d82666f03bf0498..e5bb8f4b75eb24fa507fcd93b62a4e7f5e2d3c98 100644 +index cd04a0bd9d232857408b38605787016a217cb8d2..7035fe7c0f5adb981ac41804605c4fbcf57968bf 100644 --- a/src/main/java/org/bukkit/event/block/BlockDamageEvent.java +++ b/src/main/java/org/bukkit/event/block/BlockDamageEvent.java -@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; - *

+@@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; * If a Block Damage event is cancelled, the block will not be damaged. + * @see BlockDamageAbortEvent */ -public class BlockDamageEvent extends BlockEvent implements Cancellable { +public class BlockDamageEvent extends BlockEvent implements Cancellable, gg.projecteden.parchment.HasPlayer { // Parchment @@ -866,7 +859,7 @@ index be0a2d1f234d8265d98e54e518a994957b1f3ab7..54cd6735fbcad009330927d760f8bd93 protected boolean cancel; protected boolean canBuild; diff --git a/src/main/java/org/bukkit/event/block/SignChangeEvent.java b/src/main/java/org/bukkit/event/block/SignChangeEvent.java -index 1f79f704abf339150df08900b8ea7da4cefef258..45355bb0dde0b1432054a1504f2dfe01bb696b27 100644 +index 1268066e30ddb0cd3792ea4b3de894eb04196669..1e20629da438651d3987258b93cf9caf9eff9452 100644 --- a/src/main/java/org/bukkit/event/block/SignChangeEvent.java +++ b/src/main/java/org/bukkit/event/block/SignChangeEvent.java @@ -12,7 +12,7 @@ import org.jetbrains.annotations.Nullable; @@ -1051,7 +1044,7 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 356d1154b0732e2daf242d60fa715dba9f2dc9db..9722f420816246fee91eaf19d320a9b5b42e94fc 100644 +index 635b8787fc235b61c0d5677def034656e4ec4cef..2270ecbf5189ab42aac357534896c89bbc871a97 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; @@ -1077,7 +1070,7 @@ index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..44efb5cc62149b34b994eadac488a902 public PlayerEvent(@NotNull final Player who) { diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index 123979ed64939d615b061f91c19c630e1e1db8c7..25b4e19d492cccdc0f37d4960a1206003a611456 100644 +index 6800132c6288b4588fd02b08d26f016c38f27129..f1a707adfe190090e2fa8cd0f497fb470959172f 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; @@ -1168,7 +1161,7 @@ index 1b577c03c3152d22b70f8bdb321b28ad8fbbc3af..b3449a874666bcd67950ec12da41738f /** * Returns the size of the inventory diff --git a/src/main/java/org/bukkit/inventory/InventoryView.java b/src/main/java/org/bukkit/inventory/InventoryView.java -index b06995aa57aa9cba0bb59f1d26d81015619a08e6..543d3cccc6dd04c66c89df09f4804333b8ce436e 100644 +index 2448e70d75ae7a678c6befac4506c103edb78875..65ca144618f74bc8e317a4b9c2732ad5ed13a208 100644 --- a/src/main/java/org/bukkit/inventory/InventoryView.java +++ b/src/main/java/org/bukkit/inventory/InventoryView.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch index f48517c..7f5a91f 100644 --- a/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index b39d1474210da1974d7e95f10daaf496a9330442..107f356026397f1a6ef8580c7f239a02bf8105fe 100644 +index 4fcafddf3792b66c618f91e04d102f374de565a8..716d5371c0ceb5b97c7008a6ac0c7ddf58b01a9f 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -238,4 +238,17 @@ public interface UnsafeValues { +@@ -243,4 +243,17 @@ public interface UnsafeValues { */ boolean isCollidable(@org.jetbrains.annotations.NotNull Material material); // Paper end diff --git a/patches/api/0007-Expose-NMS-ordinals.patch b/patches/api/0007-Expose-NMS-ordinals.patch index 682033f..a3bbffd 100644 --- a/patches/api/0007-Expose-NMS-ordinals.patch +++ b/patches/api/0007-Expose-NMS-ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose NMS ordinals diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 107f356026397f1a6ef8580c7f239a02bf8105fe..12b9d9fff1313aa27a8178456934b88df76580d6 100644 +index 716d5371c0ceb5b97c7008a6ac0c7ddf58b01a9f..16a332a6f8dad6a2758fd2bf3ab37637b9f26711 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -250,5 +250,12 @@ public interface UnsafeValues { +@@ -255,5 +255,12 @@ public interface UnsafeValues { * @return if the item can be placed */ java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 193cb1f..17bcbeb 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index cca362e54d6ff4a5a1e60f85a7eb1b3d222d3d48..e9ee90ce4f1c8b58ab2b20a6806de11dcdf98423 100644 +index 79b26045a68ebb9b01e5bd06abbccaaef5489777..da7d4eb2beea848e60d8c8cfe2a5abf0d6761950 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2003,4 +2003,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2055,4 +2055,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull org.bukkit.potion.PotionBrewer getPotionBrewer(); // Paper end diff --git a/patches/api/0010-Add-Furnace-Recipe-API.patch b/patches/api/0010-Add-Furnace-Recipe-API.patch index 948cf68..c5a23d8 100644 --- a/patches/api/0010-Add-Furnace-Recipe-API.patch +++ b/patches/api/0010-Add-Furnace-Recipe-API.patch @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..28c01caa9d6379046f6af6612719b404 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 8a688583e65cd22e0417f9fd24e51803486d095e..b69e0ab985613eede661153e331f1172676212d9 100644 +index 7ad1cabe05277c1f3238da6e121c35d8a9f0d952..2fd4f6a97a5964e187ee06a66d48e7e6021155d4 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -3929,6 +3929,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient +@@ -3909,6 +3909,36 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient @Nullable public DragonBattle getEnderDragonBattle(); diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 9163b53..155a679 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 4beb35d1e5b013395f5df101e843f41c2ce174ad..a2f1e252630c4ac0f2521a3f53be60116995617e 100644 +index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b8ca2c915 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -18,8 +18,8 @@ repositories { +@@ -9,8 +9,8 @@ plugins { } dependencies { @@ -19,7 +19,7 @@ index 4beb35d1e5b013395f5df101e843f41c2ce174ad..a2f1e252630c4ac0f2521a3f53be6011 // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -68,7 +68,7 @@ tasks.jar { +@@ -60,7 +60,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -28,7 +28,7 @@ index 4beb35d1e5b013395f5df101e843f41c2ce174ad..a2f1e252630c4ac0f2521a3f53be6011 "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -84,7 +84,27 @@ tasks.jar { +@@ -77,7 +77,27 @@ tasks.jar { publishing { publications.create("maven") { @@ -57,7 +57,7 @@ index 4beb35d1e5b013395f5df101e843f41c2ce174ad..a2f1e252630c4ac0f2521a3f53be6011 } } -@@ -156,7 +176,7 @@ fun TaskContainer.registerRunTask( +@@ -148,7 +168,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -80,7 +80,7 @@ index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..52126870f1fc15a9ddce4452673b236e /** diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286db810d434 100644 +index bf42969859545a8a520923ef1836ffa4a5cc24a0..2532e265c5dade55f71c34fcab6d1e74bbb58a87 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java @@ -31,8 +31,8 @@ public class PaperVersionFetcher implements VersionFetcher { @@ -104,10 +104,10 @@ index ece77f5ea4b14bbed7c070131b3251ea86764538..71bf426f7fb58fff6739bb1332d1286d org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 07c382f30ed3736ed15b5b71f48dc4a1de958242..6994038e8371a7d506d5f4c5abdf3b441f329231 100644 +index da15a224b8b974e78b9d8d5f514229b3b2a5a63e..f2b5e78b3fe68c38e755b9b4a8f96077ac6800f2 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1683,7 +1683,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); -+ explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // CraftBukkit - reusable source for CraftTNTPrimed.getSource() // Parchment - fix null world ++ explosionSource = new Explosion(world, this, null, null, Double.NaN, Double.NaN, Double.NaN, Float.NaN, true, Explosion.BlockInteraction.DESTROY); // Parchment - fix null world this.subEntities = new EnderDragonPart[]{this.head, this.neck, this.body, this.tail1, this.tail2, this.tail3, this.wing1, this.wing2}; this.setHealth(this.getMaxHealth()); this.noPhysics = true; @@ -130,10 +134,10 @@ index 20c0030d566012146021613325c6a979f392740e..a0a052095815ed63f06837155b48b0d8 } } diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 86692a83fb9acd3a501da58e6d509865b49931fe..438ea548644aa9570a09fa4d4a06bde5f5c30567 100644 +index 7d33dae2617991bce244ad906df7053c22e3f515..797a583f0e3516b4a1bfec4c122eff438d174776 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -138,7 +138,10 @@ public class RespawnAnchorBlock extends Block { +@@ -148,7 +148,10 @@ public class RespawnAnchorBlock extends Block { return pos.equals(explodedPos) && bl2 ? Optional.of(Blocks.WATER.getExplosionResistance()) : super.getBlockExplosionResistance(explosion, world, pos, blockState, fluidState); } }; @@ -146,10 +150,10 @@ index 86692a83fb9acd3a501da58e6d509865b49931fe..438ea548644aa9570a09fa4d4a06bde5 public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index d2a1368eeff0704760432166e0910343512bbe4f..11ed21fb283a3ce80efd1d8a0ad027c47242ebc8 100644 +index 70d445429fec455f8188341ffd401e83f6bdab1c..7df4e2bab4d0773d8246011368c8e1c82c8e49d4 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -971,7 +971,7 @@ public class CraftEventFactory { +@@ -969,7 +969,7 @@ public class CraftEventFactory { CraftEventFactory.entityDamage = null; EntityDamageEvent event; if (damager == null) { @@ -158,7 +162,7 @@ index d2a1368eeff0704760432166e0910343512bbe4f..11ed21fb283a3ce80efd1d8a0ad027c4 } else if (entity instanceof EnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); } else { -@@ -1009,7 +1009,7 @@ public class CraftEventFactory { +@@ -1007,7 +1007,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled, source.isCritical()); // Paper - add critical damage API } else if (source == DamageSource.OUT_OF_WORLD) { @@ -167,7 +171,7 @@ index d2a1368eeff0704760432166e0910343512bbe4f..11ed21fb283a3ce80efd1d8a0ad027c4 event.setCancelled(cancelled); CraftEventFactory.callEvent(event); if (!event.isCancelled()) { -@@ -1019,7 +1019,7 @@ public class CraftEventFactory { +@@ -1017,7 +1017,7 @@ public class CraftEventFactory { } return event; } else if (source == DamageSource.LAVA) { diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index ab494e7..50b69d6 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 41e7ca100073052b99c82fa6a82f8168e0135499..30a4ceccf2ac0244f91b64cc4864e186211c9042 100644 +index 88abd2d3a9626501b1800ee754b98c6c29c75fb9..0507e40c97567fc379ebe4d0b001af16922ddb3e 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -601,6 +601,55 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -606,6 +606,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } // Paper end diff --git a/patches/server/0007-Expose-EntityType-Ordinals.patch b/patches/server/0007-Expose-EntityType-Ordinals.patch index d43bde5..6697d71 100644 --- a/patches/server/0007-Expose-EntityType-Ordinals.patch +++ b/patches/server/0007-Expose-EntityType-Ordinals.patch @@ -51,10 +51,10 @@ index 79abd84696ef099f6b12ddeaa6e398f18c53316a..13e277c9ff27a52fbf7041c36d7c5ff6 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 30a4ceccf2ac0244f91b64cc4864e186211c9042..d71c9ed269e321cfec20c2a5223fd7741fc24702 100644 +index 0507e40c97567fc379ebe4d0b001af16922ddb3e..5f86de03f280b2e3d9e32e11a8df5761ea6591ee 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -648,6 +648,18 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -653,6 +653,18 @@ public final class CraftMagicNumbers implements UnsafeValues { final net.minecraft.world.item.context.BlockPlaceContext ctx = context; return future.completeAsync(() -> blockItem.canPlace(ctx, blockState), net.minecraft.server.MCUtil.MAIN_EXECUTOR); } diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch index b91f344..e75c74b 100644 --- a/patches/server/0008-Add-Player-setGameProfile.patch +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile 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 c4db8912d3af42cc4da825e8b43f3fdf4d49e1b5..86e6c4ce5b5dee9e1fc12deca288310ee485337c 100644 +index ef8038587117829c84a237a52498496cd39ab91a..f087f8b61d50541fbf527331f4d8e625aa0f8e0d 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1465,6 +1465,12 @@ public abstract class Player extends LivingEntity { +@@ -1468,6 +1468,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0009-Expose-MCUtil-Executors.patch b/patches/server/0009-Expose-MCUtil-Executors.patch index e180eaf..83885ec 100644 --- a/patches/server/0009-Expose-MCUtil-Executors.patch +++ b/patches/server/0009-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 3336f223f9f0c6207471de15326f40d2ddc1dae2..a193f2ab16fecc26c04408a4473e064dd79168dd 100644 +index 83f75d9c4ad146ba0a0ef28d0e49a1deb6db6a44..cfda86ba398a853427b4a6a14e3fdf2723f07a83 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2833,4 +2833,16 @@ public final class CraftServer implements Server { +@@ -2886,4 +2886,16 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index e0c5770..9a18801 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -48,10 +48,10 @@ index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1 }); state.spawnAfterBreak((ServerLevel) world, pos, stack); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 11ed21fb283a3ce80efd1d8a0ad027c47242ebc8..38f24ecd7783d2133819af53211f464559959908 100644 +index 7df4e2bab4d0773d8246011368c8e1c82c8e49d4..7f2cb8bec323fc0fc5188f2cd5efad73cf85301c 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1991,5 +1991,19 @@ public class CraftEventFactory { +@@ -1989,5 +1989,19 @@ public class CraftEventFactory { final double posZ = pos.getZ(); playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); } diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index 4bd4d21..ad1f2ee 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 028663b86970b8a1ae3e5275429516ee00ef0a04..f3b65b3fa80f2cbc5986b6dfd56b6346bae83b36 100644 +index 43244a479a112786539a905a22cb12e3cf55b2dd..72b0a17a52169c0bd6b985e82278fffa73340298 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2328,4 +2328,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2322,4 +2322,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end diff --git a/patches/server/0013-Disable-sleep-status-announcements.patch b/patches/server/0013-Disable-sleep-status-announcements.patch index e86f54e..1120859 100644 --- a/patches/server/0013-Disable-sleep-status-announcements.patch +++ b/patches/server/0013-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 8013aa65752e15217b5ae99e012fb745205b9853..98a54230527d97820f8d7873fb1c4adb71ee06d5 100644 +index 53f5e22370f3bc0d29cc38641d67e869305ced86..e4aaffe7ceecb0cf77172e2d96cfe50c8a708c37 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -897,7 +897,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -898,7 +898,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { From b03678a0a07e92a995e3bd8167490ac2609d56a1 Mon Sep 17 00:00:00 2001 From: Lexi Date: Mon, 13 Jun 2022 02:21:46 -0400 Subject: [PATCH 28/44] Updated Upstream (Paper) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@cb05aa6 Prepare for 1.19 dev PaperMC/Paper@56e6424 Patch cleanup PaperMC/Paper@028e2d9 API patches PaperMC/Paper@a9c5073 First server patches PaperMC/Paper@2710efc More patches PaperMC/Paper@1669c6b More more patches PaperMC/Paper@cac4deb More more more patches PaperMC/Paper@88f74d1 Fix some api compilation errors PaperMC/Paper@13fe886 API now compiles successfully PaperMC/Paper@c321ca5 fix unmerged diff PaperMC/Paper@aac58bb More more more more patches PaperMC/Paper@3773770 Fix more errors PaperMC/Paper@7d7779a Fix even more errors PaperMC/Paper@addf9c9 More more more more more patches PaperMC/Paper@4e13355 some server compile fixes PaperMC/Paper@58133bd Update PreCreatureSpawnEvent patch PaperMC/Paper@3a0b948 temporary fixes for adventure chat PaperMC/Paper@87ca0fa hate jmp and his gradle PaperMC/Paper@32c195b i love jmp PaperMC/Paper@c515eb9 rebuild after rebase PaperMC/Paper@a16970a Fix CanPlaceOn/CanDestroy API issues PaperMC/Paper@68b585f Fix cook speed patch PaperMC/Paper@a27b508 i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really love jmp PaperMC/Paper@26ea040 i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really love jmp PaperMC/Paper@515da2f update reobf-mappings-patch.tiny PaperMC/Paper@d41a026 few more server decompile fixes PaperMC/Paper@7bbeef2 i really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really really reall… PaperMC/Paper@c5db537 Fix more issues PaperMC/Paper@f371b4e <3 jmp PaperMC/Paper@f04e64d moar patches PaperMC/Paper@c3fc3de even moar patches PaperMC/Paper@dc12a6e a bunch more patches done PaperMC/Paper@0745f97 bunch o' patches PaperMC/Paper@2304bb3 bundle o' patches PaperMC/Paper@feca8d2 bouquet o' patches PaperMC/Paper@89c3c31 bag o' patches PaperMC/Paper@a1d0432 batch o' patches PaperMC/Paper@aabbfcd Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@cc7979a bale o' patches PaperMC/Paper@b464e02 Misc. 1.19 fixes (#7881) PaperMC/Paper@0e06c77 More more more more more more patches PaperMC/Paper@f0e575f More more more more more more more patches PaperMC/Paper@82f712c More more more more more more more more patches PaperMC/Paper@8d5407b Things, and DataConverter (maybe) PaperMC/Paper@d28b209 Things, and Starlight (maybe) PaperMC/Paper@2f0b2b9 Add missing DataConverter and fix some imports PaperMC/Paper@391e65f more misc compile fixes PaperMC/Paper@301cf57 More more more more more more more more more patches PaperMC/Paper@2259098 Misc fixes (#7883) PaperMC/Paper@beab8a3 More more more more more more more more more more patches PaperMC/Paper@55d7f56 More more more more more more more more more more more patches PaperMC/Paper@b1f5e70 Moar 1.19 fixes (#7884) PaperMC/Paper@7ece945 Use biome source method to prevent loading chunks (#7885) PaperMC/Paper@b561fd8 Compilation error fixes PaperMC/Paper@1d5b298 More compilation error fixes PaperMC/Paper@af4b5ee add back removed kelp modifier patch PaperMC/Paper@d5216d8 Add back Fix NotePlayEvent patch PaperMC/Paper@9ab6893 Add back Fix locateNearestStructure patch PaperMC/Paper@913d2ae Fix PaperMC/Paper@a6bc17b IT COMPILES BOIS PaperMC/Paper@7a165c9 Add back fix swamp hut deadlock patch PaperMC/Paper@02804a4 Fix tests PaperMC/Paper@8399e10 fix reobf issues around randomsource impls PaperMC/Paper@a02874e Remove painting desync (#7886) PaperMC/Paper@57dfcdf Reorder some patches PaperMC/Paper@b3b63d3 Fix tests (again?) PaperMC/Paper@222391f Check if is light status or above / isLightOn / starlight version fits (#7888) PaperMC/Paper@bd134f8 Update Alternate Current patch (#7890) PaperMC/Paper@4c1b338 Remove level propagator patch for now PaperMC/Paper@44ccc15 Port Fix missing chunks due to integer overflow to 1.19 (#7891) PaperMC/Paper@d1e1217 Only send empty chunk when player is dead PaperMC/Paper@897cc27 Remove no longer needed patch PaperMC/Paper@e24a250 correct patch description PaperMC/Paper@a93aa05 Wrap NBTOps in RegistryOps (#7892) PaperMC/Paper@29e9189 Fix structures issues/api (#7895) PaperMC/Paper@86c1650 Dont resent entity on art update (#7887) PaperMC/Paper@11c2705 Slightly untrash Spigot chat handling PaperMC/Paper@cbb47ca Add missing spawn eggs (#7896) PaperMC/Paper@9107753 (1.19) Make timings link clickable (#7897) PaperMC/Paper@467a166 fallback to default locate logic if no API found PaperMC/Paper@da80273 Deprecate origin for vibrations (#7898) PaperMC/Paper@172d260 Move to configurate for paper.yml (#7609) PaperMC/Paper@d7cc306 Update Optimise general POI access (#7903) PaperMC/Paper@ffddec5 Updated Upstream (CraftBukkit) PaperMC/Paper@7be0194 Readd dummy PaperConfig and PaperWorldConfig classes PaperMC/Paper@b26d590 Fixes PaperMC/Paper@e1c2939 Update configurable feature seed patch PaperMC/Paper@d385af0 Updated Upstream (Bukkit/CraftBukkit) PaperMC/Paper@a3a0390 Fix config migration error preventing server startup PaperMC/Paper@84434e6 Don't validate chunk before it's been run through DataConverter (#7907) PaperMC/Paper@e47848f Correctly handle ElderGuardianAppearanceEvent canceling (#7902) PaperMC/Paper@2e68ecc more configuration fixes/changes PaperMC/Paper@d9fcf39 Remove locname (#7909) PaperMC/Paper@f27aa33 catch IAE from empty transformation builder PaperMC/Paper@acd50c5 Keyed cat Type (#7901) PaperMC/Paper@c34a306 Remove old config options (#7908) PaperMC/Paper@c946526 minimessage conversion PaperMC/Paper@5052a45 Minor patch changes PaperMC/Paper@09c9215 Add sendRichMessage and sendPlainMessage methods PaperMC/Paper@ad51c40 Fix don't lookup profiles for blank names patch PaperMC/Paper@3f1c6a4 move commands out of configuration PaperMC/Paper@e5ed99a fix compile issue PaperMC/Paper@77de07a fix more config migration issues PaperMC/Paper@6249dd5 remove more unused config options PaperMC/Paper@181a847 Make slime spawn checks use tag again and rename config option (#7910) PaperMC/Paper@0a21166 Update player chunk loader patch, re-add ticket level propagator patch PaperMC/Paper@ade44f3 Remove todo PaperMC/Paper@7c55e62 Fix tests PaperMC/Paper@d833c0c Update starlight + read null light data (#7912) PaperMC/Paper@5ac29fc Fix migration of packet limiter PaperMC/Paper@4a51a54 Don't use deprecated permission message method PaperMC/Paper@83e2a35 Fix light (#7917) PaperMC/Paper@cfe3ad1 Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@02b5ec4 fix 2 more migration issues PaperMC/Paper@dd6a8e9 couple more migration issues PaperMC/Paper@8141349 improve packet config serializer (#7920) PaperMC/Paper@9a75a79 Readd PlayerAnimationEvent constructor removed by upstream PaperMC/Paper@0754819 Updated Upstream (CraftBukkit) PaperMC/Paper@9b6fb2f Remove bad warning PaperMC/Paper@cf384f5 Don't print stacktrace when client with invalid signature logs in PaperMC/Paper@a8a01bb port Significantly improve performance of the end generation (#7919) PaperMC/Paper@8bca919 Remove unneeded patch PaperMC/Paper@698b315 Improve migration file errors (#7929) PaperMC/Paper@99aa5f2 Fixes parsing tags in selectors in command functions PaperMC/Paper@76f81ae Keep default keys in some maps PaperMC/Paper@5a2973f Correct dataconverter diff PaperMC/Paper@ee7d161 Make starlight light read non-fatal if it throws PaperMC/Paper@f8beab5 correct argument check in PlayerHandshakeEvent#setFailMessage(String) (#7940) PaperMC/Paper@c80df84 Readd remove vec allocations diff (#7930) PaperMC/Paper@1ccff4f Readd mc-4 fix PaperMC/Paper@d7165b0 Fix some references to obfuscated code PaperMC/Paper@55201f0 Updated Upstream (Bukkit/CraftBukkit) (#7936) PaperMC/Paper@46954ee Don't explode on light data in the nether PaperMC/Paper@dfc1044 Fix keep spawn loaded patch PaperMC/Paper@9ad94dc Adjust config headers PaperMC/Paper@c044b14 Add support for Velocity forwarding v2 PaperMC/Paper@6c52b5e Ensure that Log4J is shutdown when stopping the server (Fixes #7932) PaperMC/Paper@ee4916d Fire kick event for out-of-order chat on main thread (#7942) PaperMC/Paper@8b6f4dd Add paper-settings-directory cl argument (#7949) PaperMC/Paper@4797e3a Dont reassign the hiddenConfigs field in TimingsManager (#7951) PaperMC/Paper@3690440 Update paperweight to 1.3.7 PaperMC/Paper@90050ff Update Adventure to 4.11.0 and implement ComponentLogger (#7937) PaperMC/Paper@e4f5e1c Bump netty --- build.gradle.kts | 18 +- gradle.properties | 6 +- patches/api/0001-Add-Getter-interfaces.patch | 24 +- patches/api/0002-Add-SoundEvent.patch | 715 +++++++++--------- .../api/0005-Expanded-Adventure-support.patch | 8 +- .../api/0008-Expose-MCUtil-Executors.patch | 4 +- patches/server/0001-Build-changes.patch | 26 +- patches/server/0003-Add-SoundEvent.patch | 308 +++++--- ...location-to-EntityDamageByBlockEvent.patch | 35 +- .../0007-Expose-EntityType-Ordinals.patch | 8 +- .../0008-Add-Player-setGameProfile.patch | 12 +- .../server/0009-Expose-MCUtil-Executors.patch | 4 +- .../0011-Add-BlockDropResourcesEvent.patch | 26 +- .../server/0012-Add-Furnace-Recipe-API.patch | 4 +- ...3-Disable-sleep-status-announcements.patch | 6 +- 15 files changed, 646 insertions(+), 558 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index 90f8ef0..741ec55 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,7 +4,7 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.2" apply false - id("io.papermc.paperweight.patcher") version "1.3.6" + id("io.papermc.paperweight.patcher") version "1.3.7" } repositories { @@ -16,7 +16,7 @@ repositories { dependencies { remapper("net.fabricmc:tiny-remapper:0.8.2:fat") - decompiler("net.minecraftforge:forgeflower:1.5.498.12") + decompiler("net.minecraftforge:forgeflower:1.5.605.7") paperclip("io.papermc:paperclip:3.0.2") } @@ -79,13 +79,13 @@ tasks.generateDevelopmentBundle { apiCoordinates.set("gg.projecteden.parchment:parchment-api") mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi") libraryRepositories.set( - listOf( - "https://repo.maven.apache.org/maven2/", - "https://libraries.minecraft.net/", - "https://papermc.io/repo/repository/maven-public/", - "https://maven.quiltmc.org/repository/release/", - "https://sonatype.projecteden.gg/repository/maven-public/" - ) + listOf( + "https://repo.maven.apache.org/maven2/", + "https://libraries.minecraft.net/", + "https://papermc.io/repo/repository/maven-public/", + "https://maven.quiltmc.org/repository/release/", + "https://sonatype.projecteden.gg/repository/maven-public/" + ) ) } diff --git a/gradle.properties b/gradle.properties index 21920f4..e50168c 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = gg.projecteden.parchment -version = 1.18.2-R0.1-SNAPSHOT +version = 1.19-R0.1-SNAPSHOT -mcVersion = 1.18.2 -paperRef = 3925a53dd0fbe6bb99c15228b618dddd67017dcd +mcVersion = 1.19 +paperRef = e4f5e1c9ab867701eb4b3347280ad2dc099b7db0 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/api/0001-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch index 4e2c1a6..5b2cc47 100644 --- a/patches/api/0001-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -60,7 +60,7 @@ index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a45 private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index a79aa4834e700f845a625e9ab15760690726e81c..fd51dfa9218065b2ace87a92eedf4ec4584a7393 100644 +index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..6aac09818b847ca6b25514a109f9b0e902840167 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java @@ -20,7 +20,7 @@ import java.util.UUID; @@ -115,10 +115,10 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..d09aecb0b45f2ccf9badd308ef3e472b /** * Sets the UUID for this player name. This will skip the initial API call to find the players UUID. diff --git a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -index 4cd97cb102e1ec53b3fe1a451b65b4b640fde099..871ff8bae4ac50049a6e23a0cd1263121f8fbad1 100644 +index 9be64a95c2345433b6142d611077dedadcef9f5d..e3cea810881868fb5869de72f331733e6893fcee 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -@@ -48,7 +48,7 @@ import org.jetbrains.annotations.Nullable; +@@ -47,7 +47,7 @@ import org.jetbrains.annotations.Nullable; * * Only 1 process will be allowed to provide completions, the Async Event, or the standard process. */ @@ -593,7 +593,7 @@ index ef0cb00ca4cb7d2f5e4ec1c950cce036566d1ae4..df53183beb4c438ea3c821e1ffd8e271 * Sets the world that this location resides in * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index 23e853bae0e051cd43deb9eb24c54e74a56d8ab0..20cb99c906725ba3a67d2a71338ba8cacfe5072c 100644 +index a7d1f1e701f23e851f735584a30bedadb0d8b9bd..7b37b6f596b4ac6b8049c7bd195139ac03ba63bc 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java @@ -10,7 +10,7 @@ import org.bukkit.profile.PlayerProfile; @@ -633,10 +633,10 @@ index 983a8c20a06d2b509602b27f49c090598b8ecc42..46dd8496f5a2c792ee7811e33c424e88 /** * Get whether this raid started. diff --git a/src/main/java/org/bukkit/Vibration.java b/src/main/java/org/bukkit/Vibration.java -index 8d568d21fcbf706f55cda087bd7222ac60889c0a..8bc5b7a0df5c8f5e5d973c2d2b348968f5b759b2 100644 +index 209a302c3a2ed333780ed760314a6ed352fc0767..9d29f1c5af56954bc452fa251d6bc0215ab3fe79 100644 --- a/src/main/java/org/bukkit/Vibration.java +++ b/src/main/java/org/bukkit/Vibration.java -@@ -64,7 +64,7 @@ public class Vibration { +@@ -74,7 +74,7 @@ public class Vibration { } } @@ -646,7 +646,7 @@ index 8d568d21fcbf706f55cda087bd7222ac60889c0a..8bc5b7a0df5c8f5e5d973c2d2b348968 private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index ff8f1231f3e2e71740fd24fa8d4dac5d0e550ae7..ee19d7fd5bb1851af39320f1edd858e1f7bdd1cc 100644 +index d124768378d6f0c5573f28ee815ea3886fe74868..e790878186b64422dc4a3f52f4c7611441c82589 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -724,7 +724,7 @@ index 8bc6876c82935988436597161fa0ec94c032174b..ffd5fbc3e14be5439f1334c567b573c3 /** * Gets the entity's current position diff --git a/src/main/java/org/bukkit/entity/HumanEntity.java b/src/main/java/org/bukkit/entity/HumanEntity.java -index e8b6cfe7e454c666b4d60b702a3b211dab238830..b9196b22e5bf4dea7466d6a691f93969a2c72843 100644 +index 5dbbeb92aec212d2e849d16320ed9c084b99fc35..32e5150b14f5d7d19d82d15631065db376814e25 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -19,7 +19,15 @@ import org.jetbrains.annotations.Nullable; @@ -1109,10 +1109,10 @@ index 128e43cf12205f82f2b119a773208502cdccfdd4..ca1fed3081e2b0a3271a2dfa0f49cce7 private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..fdc3114adb18108ccd8acbab458bacededed4767 100644 +index 4a3451af454295ac3e1b688e6665cad9fc594c82..b88cebb219577d59cc338be89c6f391d10702095 100644 --- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java +++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -@@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable; +@@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull; * advised to ensure the client does not have permission for the relevant * commands, or use {@link PlayerCommandSendEvent}. */ @@ -1122,7 +1122,7 @@ index f96c4ba53ab41ea66d4f9a4d54eeabb63f992b58..fdc3114adb18108ccd8acbab458baced private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/world/GenericGameEvent.java b/src/main/java/org/bukkit/event/world/GenericGameEvent.java -index 1746b66510e7b9c8708018582034b04714c29867..9c1c1acb91fc36e8811c27f7a6d8347249d95c16 100644 +index 2a2a329877d8da45c2d6afecf78ce88d52635cad..22cdf3662b02fb5751ac6d913d781084cd7eee5b 100644 --- a/src/main/java/org/bukkit/event/world/GenericGameEvent.java +++ b/src/main/java/org/bukkit/event/world/GenericGameEvent.java @@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; @@ -1174,7 +1174,7 @@ index 2448e70d75ae7a678c6befac4506c103edb78875..65ca144618f74bc8e317a4b9c2732ad5 /** * Represents various extra properties of certain inventory windows. diff --git a/src/main/java/org/bukkit/loot/LootContext.java b/src/main/java/org/bukkit/loot/LootContext.java -index e307f9fc45a4e5d742b78c4cda9a41d7f259a515..a66d59321915b0dc76f8e2dd95f01f9e3adaefa6 100644 +index 71b7aa9d675e1714e286e6fd4015ead036d912e0..95e120068a7c5c96b1b8553df9cf8654ba63a325 100644 --- a/src/main/java/org/bukkit/loot/LootContext.java +++ b/src/main/java/org/bukkit/loot/LootContext.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0002-Add-SoundEvent.patch b/patches/api/0002-Add-SoundEvent.patch index 2fcc353..9fc1bac 100644 --- a/patches/api/0002-Add-SoundEvent.patch +++ b/patches/api/0002-Add-SoundEvent.patch @@ -4,383 +4,313 @@ Date: Sat, 19 Jun 2021 22:55:10 -0400 Subject: [PATCH] Add SoundEvent -diff --git a/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..5b74910e441a943597d3170ff00a9b9debab1d38 ---- /dev/null -+++ b/src/main/java/gg/projecteden/parchment/event/sound/EntitySoundEvent.java -@@ -0,0 +1,49 @@ -+package gg.projecteden.parchment.event.sound; -+ -+import org.apache.commons.lang.Validate; -+import org.bukkit.Sound; -+import org.bukkit.SoundCategory; -+import org.bukkit.World; -+import org.bukkit.entity.Entity; -+import org.bukkit.entity.HumanEntity; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+/** -+ * Called when an entity sound is sent to a player. Cancelling this event will prevent the packet from sending. -+ *

-+ * This type of sound represents one that will follow the {@link #origin} entity. -+ */ -+public class EntitySoundEvent extends NamedSoundEvent { -+ private @NotNull Entity origin; -+ -+ public EntitySoundEvent(@Nullable HumanEntity receiver, @NotNull Entity origin, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ super(receiver, sound, category, volume, pitch); -+ Validate.notNull(origin, "origin cannot be null"); -+ this.origin = origin; -+ } -+ -+ /** -+ * Gets the entity that the sound is originating from -+ * @return originating entity -+ */ -+ public @NotNull Entity getOrigin() { -+ return origin; -+ } -+ -+ /** -+ * Sets the entity that the sound will originate from -+ * @param origin originating entity -+ */ -+ public void setOrigin(@NotNull Entity origin) { -+ Validate.notNull(origin, "origin cannot be null"); -+ if (!this.origin.getWorld().equals(origin.getWorld())) -+ throw new IllegalArgumentException("Entity must be in same world as originating location"); -+ this.origin = origin; -+ } -+ -+ @Override -+ public @org.jetbrains.annotations.NotNull World getWorld() { -+ return origin.getWorld(); -+ } -+} -diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..eed6098d16e051484129396c694b9cfbb8172fce ---- /dev/null -+++ b/src/main/java/gg/projecteden/parchment/event/sound/LocationCustomSoundEvent.java -@@ -0,0 +1,95 @@ -+package gg.projecteden.parchment.event.sound; -+ -+import gg.projecteden.parchment.HasLocation; -+import org.apache.commons.lang.Validate; -+import org.bukkit.Keyed; -+import org.bukkit.Location; -+import org.bukkit.NamespacedKey; -+import org.bukkit.SoundCategory; -+import org.bukkit.World; -+import org.bukkit.entity.HumanEntity; -+import org.bukkit.util.Vector; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+import static com.google.common.base.Preconditions.checkNotNull; -+ -+/** -+ * Called when a sound not available in {@link org.bukkit.Sound} is sent to a player from a {@link Location}. Cancelling this event will prevent the packet from sending. -+ */ -+public class LocationCustomSoundEvent extends SoundEvent implements Keyed, HasLocation { -+ private @NotNull Vector vector; -+ private @NotNull NamespacedKey key; -+ private @NotNull final World world; -+ -+ public LocationCustomSoundEvent(@Nullable HumanEntity receiver, @NotNull World world, @NotNull Vector vector, @NotNull NamespacedKey key, @NotNull SoundCategory category, float volume, float pitch) { -+ super(receiver, category, volume, pitch); -+ Validate.notNull(world, "world cannot be null"); -+ Validate.notNull(vector, "vector cannot be null"); -+ Validate.notNull(key, "key cannot be null"); -+ this.world = world; -+ this.vector = vector; -+ this.key = key; -+ } -+ -+ public LocationCustomSoundEvent(@Nullable HumanEntity receiver, @NotNull Location location, @NotNull NamespacedKey key, @NotNull SoundCategory category, float volume, float pitch) { -+ this(receiver, checkNotNull(location, "location").getWorld(), location.toVector(), key, category, volume, pitch); -+ } -+ -+ public LocationCustomSoundEvent(@NotNull HumanEntity receiver, @NotNull Vector vector, @NotNull NamespacedKey key, @NotNull SoundCategory category, float volume, float pitch) { -+ this(checkNotNull(receiver, "receiver"), receiver.getWorld(), vector, key, category, volume, pitch); -+ } -+ -+ public LocationCustomSoundEvent(@NotNull HumanEntity receiver, @NotNull NamespacedKey key, @NotNull SoundCategory category, float volume, float pitch) { -+ this(checkNotNull(receiver, "receiver"), receiver.getLocation().toVector(), key, category, volume, pitch); -+ } -+ -+ /** -+ * Gets the position in the world of the sound -+ * @return position in the world -+ */ -+ public @NotNull Vector getVector() { -+ return vector; -+ } -+ -+ /** -+ * Gets the resource pack key of the sound -+ * @return asset key -+ */ -+ public @NotNull NamespacedKey getKey() { -+ return key; -+ } -+ -+ @Override -+ public @NotNull World getWorld() { -+ return world; -+ } -+ -+ /** -+ * Gets the location of the sound being played -+ * @return copy of sound location -+ * @see #getVector() -+ * @see #setVector(Vector) -+ */ -+ public @NotNull Location getLocation() { -+ return new Location(world, vector.getX(), vector.getY(), vector.getZ()); -+ } -+ -+ /** -+ * Sets the position in the world of the sound -+ * @param vector position in the world -+ */ -+ public void setVector(@NotNull Vector vector) { -+ Validate.notNull(vector, "vector cannot be null"); -+ this.vector = vector; -+ } -+ -+ /** -+ * Sets the resource pack key of the sound -+ * @param key asset key -+ */ -+ public void setKey(@NotNull NamespacedKey key) { -+ Validate.notNull(key, "key cannot be null"); -+ this.key = key; -+ } -+} -diff --git a/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..0872f3850860fe7cca28aeabed6235cc2a805c94 ---- /dev/null -+++ b/src/main/java/gg/projecteden/parchment/event/sound/LocationNamedSoundEvent.java -@@ -0,0 +1,72 @@ -+package gg.projecteden.parchment.event.sound; -+ -+import gg.projecteden.parchment.HasLocation; -+import org.apache.commons.lang.Validate; -+import org.bukkit.Location; -+import org.bukkit.Sound; -+import org.bukkit.SoundCategory; -+import org.bukkit.World; -+import org.bukkit.entity.HumanEntity; -+import org.bukkit.util.Vector; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+import static com.google.common.base.Preconditions.checkNotNull; -+ -+/** -+ * Called when a sound available in {@link Sound} is sent to a player from a {@link Location}. Cancelling this event will prevent the packet from sending. -+ */ -+public class LocationNamedSoundEvent extends NamedSoundEvent implements HasLocation { -+ private @NotNull Vector vector; -+ private @NotNull final World world; -+ -+ public LocationNamedSoundEvent(@Nullable HumanEntity receiver, @NotNull World world, @NotNull Vector vector, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ super(receiver, sound, category, volume, pitch); -+ this.world = checkNotNull(world, "world"); -+ this.vector = checkNotNull(vector, "vector"); -+ } -+ -+ public LocationNamedSoundEvent(@Nullable HumanEntity receiver, @NotNull Location location, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ this(receiver, checkNotNull(location, "location").getWorld(), location.toVector(), sound, category, volume, pitch); -+ } -+ -+ public LocationNamedSoundEvent(@NotNull HumanEntity receiver, @NotNull Vector vector, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ this(checkNotNull(receiver, "receiver"), receiver.getWorld(), vector, sound, category, volume, pitch); -+ } -+ -+ public LocationNamedSoundEvent(@NotNull HumanEntity receiver, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ this(checkNotNull(receiver, "receiver"), receiver.getLocation().toVector(), sound, category, volume, pitch); -+ } -+ -+ /** -+ * Gets the position in the world of the sound -+ * @return position in the world -+ */ -+ public @NotNull Vector getVector() { -+ return vector; -+ } -+ -+ @Override -+ public @NotNull World getWorld() { -+ return world; -+ } -+ -+ /** -+ * Gets the location of the sound being played -+ * @return copy of sound location -+ * @see #getVector() -+ * @see #setVector(Vector) -+ */ -+ public @NotNull Location getLocation() { -+ return new Location(world, vector.getX(), vector.getY(), vector.getZ()); -+ } -+ -+ /** -+ * Sets the position in the world of the sound -+ * @param vector position in the world -+ */ -+ public void setVector(@NotNull Vector vector) { -+ Validate.notNull(vector, "vector cannot be null"); -+ this.vector = vector; -+ } -+} -diff --git a/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java -new file mode 100644 -index 0000000000000000000000000000000000000000..9c2e257de3487a73d4f5b796177061d8fea4c0f7 ---- /dev/null -+++ b/src/main/java/gg/projecteden/parchment/event/sound/NamedSoundEvent.java -@@ -0,0 +1,38 @@ -+package gg.projecteden.parchment.event.sound; -+ -+import org.apache.commons.lang.Validate; -+import org.bukkit.Sound; -+import org.bukkit.SoundCategory; -+import org.bukkit.entity.HumanEntity; -+import org.jetbrains.annotations.NotNull; -+import org.jetbrains.annotations.Nullable; -+ -+/** -+ * Called when a sound available in {@link Sound} is sent to a player. Cancelling this event will prevent the packet from sending. -+ */ -+public abstract class NamedSoundEvent extends SoundEvent { -+ private @NotNull Sound sound; -+ -+ public NamedSoundEvent(@Nullable HumanEntity receiver, @NotNull Sound sound, @NotNull SoundCategory category, float volume, float pitch) { -+ super(receiver, category, volume, pitch); -+ Validate.notNull(sound, "sound cannot be null"); -+ this.sound = sound; -+ } -+ -+ /** -+ * Gets the sound being played -+ * @return sound to play -+ */ -+ public @NotNull Sound getSound() { -+ return sound; -+ } -+ -+ /** -+ * Sets the sound yo played -+ * @param sound sound to play -+ */ -+ public void setSound(@NotNull Sound sound) { -+ Validate.notNull(sound, "sound cannot be null"); -+ this.sound = sound; -+ } -+} diff --git a/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..0506c9e461296aeb12da23b476b9b1c57702b7e1 +index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3540d7c38 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java -@@ -0,0 +1,123 @@ +@@ -0,0 +1,380 @@ +package gg.projecteden.parchment.event.sound; + +import gg.projecteden.parchment.OptionalHumanEntity; -+import org.apache.commons.lang.Validate; -+import org.bukkit.SoundCategory; -+import org.bukkit.World; ++import net.kyori.adventure.sound.Sound; ++import org.bukkit.Location; ++import org.bukkit.entity.Entity; +import org.bukkit.entity.HumanEntity; ++import org.bukkit.entity.Player; +import org.bukkit.event.Cancellable; +import org.bukkit.event.Event; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; ++import org.slf4j.Logger; ++ ++import java.util.ArrayList; ++import java.util.List; ++import java.util.Objects; ++import java.util.function.Function; + +/** -+ * Called when a sound is sent to a player. Cancelling this event will prevent the packet from sending. ++ * Called when a sound is sent to a player. ++ * Cancelling this event will prevent the packet from sending. + */ -+public abstract class SoundEvent extends Event implements Cancellable, OptionalHumanEntity { -+ private @Nullable final HumanEntity receiver; -+ private @NotNull SoundCategory category; -+ private float volume; -+ private float pitch; ++public final class SoundEvent extends Event implements Cancellable, OptionalHumanEntity { ++ private static final Logger LOGGER = org.slf4j.LoggerFactory.getLogger(SoundEvent.class); + -+ public SoundEvent(@Nullable HumanEntity receiver, @NotNull SoundCategory category, float volume, float pitch) { -+ super(true); -+ Validate.notNull(category, "category cannot be null"); -+ this.receiver = receiver; -+ this.category = category; -+ this.volume = volume; -+ this.pitch = pitch; -+ } -+ -+ /** -+ * Gets the player that this sound will be sent to. May be null if the sound is being played to several players. -+ * @return player receiving the sound -+ */ -+ @Override -+ public @Nullable HumanEntity getPlayer() { -+ return receiver; -+ } -+ -+ /** -+ * Gets the category of sounds this will be played with. -+ * @return category of sounds -+ */ -+ public @NotNull SoundCategory getCategory() { -+ return category; -+ } -+ -+ /** -+ * Gets the volume of the sound to be played. Should be non-negative. -+ * @return sound volume -+ */ -+ public float getVolume() { -+ return volume; -+ } -+ -+ /** -+ * Gets the pitch of the sound to be played. Should be within the range [0,2]. -+ * @return sound pitch -+ */ -+ public float getPitch() { -+ return pitch; -+ } -+ -+ /** -+ * Sets the category of sounds this will be played with. -+ * @param category category of sounds -+ */ -+ public void setCategory(@NotNull SoundCategory category) { -+ Validate.notNull(category, "category cannot be null"); -+ this.category = category; -+ } -+ -+ /** -+ * Sets the volume of the sound to be played. Must be non-negative. -+ * @param volume sound volume -+ */ -+ public void setVolume(float volume) { -+ Validate.isTrue(volume >= 0, "volume should be non-negative"); -+ this.volume = volume; -+ } -+ -+ /** -+ * Sets the pitch of the sound to be played. Must be within the range [0,2]. -+ * @param pitch sound pitch -+ */ -+ public void setPitch(float pitch) { -+ Validate.isTrue(pitch >= 0 && pitch <= 2, "pitch should be within range [0,2]"); -+ this.pitch = pitch; -+ } -+ -+ // boilerplate ++ private static final org.bukkit.event.HandlerList handlers = new org.bukkit.event.HandlerList(); ++ public static final @NotNull Function DEFAULT_DISTANCE_FUNCTION = event -> event.volume() > 1.0F ? (double) (16.0F * event.volume()) : 16.0D; ++ public static final @NotNull Function> DEFAULT_RECIPIENTS_FUNCTION = new WrappedRecipientsFunction(event -> { ++ final double distance = event.calculateDistance(); ++ final Location loc = event.getEmitter().location(); ++ return loc.getWorld().getPlayers().stream() ++ .filter(player -> { ++ Location pl = player.getLocation(); ++ double x = loc.getX() - pl.getX(); ++ double y = loc.getY() - pl.getY(); ++ double z = loc.getZ() - pl.getZ(); ++ return x * x + y * y + z * z < distance * distance; ++ }) ++ .toList(); ++ }); + ++ private @Nullable HumanEntity except; ++ private @NotNull Function<@NotNull Sound, @NotNull Double> distanceFunction; ++ private @NotNull Function<@NotNull SoundEvent, @NotNull List<@NotNull Player>> recipientsFunction; // TODO replace with Player -> Nullable Sound function ? ++ private @NotNull Sound sound; ++ private @NotNull Emitter emitter; + private boolean cancelled; ++ private long seed; ++ private @Nullable Function<@NotNull Player, @Nullable Sound> soundOverrideFunction; ++ private @Nullable Function<@NotNull Player, @Nullable Emitter> emitterOverrideFunction; ++ ++ public SoundEvent(@Nullable HumanEntity except, @NotNull Sound sound, @NotNull Emitter emitter, long seed, @Nullable Function distanceFunction, @Nullable Function> recipientsFunction) { ++ super(true); ++ this.except = except; ++ this.sound = Objects.requireNonNull(sound, "sound cannot be null"); ++ this.emitter = Objects.requireNonNull(emitter, "emitter cannot be null"); ++ this.seed = seed; ++ this.distanceFunction = Objects.requireNonNullElse(distanceFunction, DEFAULT_DISTANCE_FUNCTION); ++ this.recipientsFunction = wrapRecipientsFunction(Objects.requireNonNullElse(recipientsFunction, DEFAULT_RECIPIENTS_FUNCTION)); ++ } ++ ++ /** ++ * Gets the player that won't be receiving this sound. ++ * ++ * @return player excluded from receiving this sound ++ * @deprecated use {@link #getException()} for more clarity ++ */ ++ @Override ++ @Deprecated ++ public @Nullable HumanEntity getPlayer() { ++ return getException(); ++ } ++ ++ /** ++ * Gets the player that won't be receiving this sound. ++ * ++ * @return player excluded from receiving this sound ++ */ ++ public @Nullable HumanEntity getException() { ++ return except; ++ } ++ ++ /** ++ * Sets the player that won't be receiving this sound. ++ * ++ * @param except player excluded from receiving this sound ++ */ ++ public void setException(@Nullable HumanEntity except) { ++ this.except = except; ++ } ++ ++ /** ++ * Gets the sound that will be sent. ++ * ++ * @return sound that will be sent ++ */ ++ public @NotNull Sound getSound() { ++ return sound; ++ } ++ ++ /** ++ * Sets the sound that will be sent. ++ * ++ * @param sound sound that will be sent ++ */ ++ public void setSound(@NotNull Sound sound) { ++ this.sound = Objects.requireNonNull(sound, "sound cannot be null"); ++ } ++ ++ /** ++ * Gets the emitter which determines how and where the sound will be played from. ++ * ++ * @return emitter which determines how and where the sound will be played from ++ */ ++ public @NotNull Emitter getEmitter() { ++ return emitter; ++ } ++ ++ /** ++ * Sets the emitter which determines how and where the sound will be played from. ++ * ++ * @param emitter emitter which determines how and where the sound will be played from ++ */ ++ public void setEmitter(@NotNull Emitter emitter) { ++ this.emitter = Objects.requireNonNull(emitter, "emitter cannot be null"); ++ } ++ ++ /** ++ * Gets the seed used to generate the sound. ++ * ++ * @return seed used to generate the sound ++ */ ++ public long getSeed() { ++ return seed; ++ } ++ ++ /** ++ * Sets the seed used to generate the sound. ++ * ++ * @param seed seed used to generate the sound ++ */ ++ public void setSeed(long seed) { ++ this.seed = seed; ++ } ++ ++ /** ++ * Calculates the distance of the sound. ++ *

++ * The distance value is dynamically calculated using a ++ * {@link Function Function<SoundEvent, Double>}. ++ * In vanilla Minecraft, the default function is {@link #DEFAULT_DISTANCE_FUNCTION} ++ * ({@code event -> event.getVolume() > 1.0F ? (double) (16.0F * event.getVolume()) : 16.0D}). ++ *

++ * This is used by the vanilla implementation of {@link #calculateRecipients()}, though custom ++ * implementations won't always use this method. ++ * ++ * @return calculated distance ++ * @see #getDistanceFunction() ++ * @see #setDistanceFunction(Function) ++ */ ++ public double calculateDistance() { ++ return distanceFunction.apply(sound); ++ } ++ ++ /** ++ * Gets the function that calculates the distance of the sound. ++ * ++ * @return distance function ++ * @see #calculateDistance() ++ * @see #setDistanceFunction(Function) ++ */ ++ public @NotNull Function<@NotNull Sound, @NotNull Double> getDistanceFunction() { ++ return distanceFunction; ++ } ++ ++ /** ++ * Sets the function that calculates the distance of the sound. ++ * ++ * @param distanceFunction distance function ++ * @see #calculateDistance() ++ * @see #getDistanceFunction() ++ */ ++ public void setDistanceFunction(@NotNull Function<@NotNull Sound, @NotNull Double> distanceFunction) { ++ this.distanceFunction = Objects.requireNonNull(distanceFunction, "distanceFunction cannot be null"); ++ } ++ ++ /** ++ * Determines which players will receive this sound packet. ++ * ++ * @return immutable list of players ++ * @see #getRecipientsFunction() ++ * @see #setRecipientsFunction(Function) ++ */ ++ public @NotNull List calculateRecipients() { ++ return recipientsFunction.apply(this); ++ } ++ ++ /** ++ * Gets the function that determines which players will receive the sound packet. ++ * ++ * @return recipients function ++ * @see #calculateRecipients() ++ * @see #setRecipientsFunction(Function) ++ */ ++ public @NotNull Function<@NotNull SoundEvent, @NotNull List<@NotNull Player>> getRecipientsFunction() { ++ return recipientsFunction; ++ } ++ ++ /** ++ * Sets the function that determines which players will receive the sound packet. ++ *

++ * This function does not need to query {@link #getException()} as this is done automatically. ++ * ++ * @param recipientsFunction recipients function ++ * @see #calculateRecipients() ++ * @see #getRecipientsFunction() ++ */ ++ public void setRecipientsFunction(@NotNull Function<@NotNull SoundEvent, @NotNull List<@NotNull Player>> recipientsFunction) { ++ this.recipientsFunction = wrapRecipientsFunction(Objects.requireNonNull(recipientsFunction, "recipientsFunction cannot be null")); ++ } ++ ++ /** ++ * Gets the function that overrides what {@link Sound} is sent to a {@link Player}. ++ * ++ * @return sound override function (or {@code null} if not overridden) ++ */ ++ public @Nullable Function<@NotNull Player, @Nullable Sound> getSoundOverrideFunction() { ++ return soundOverrideFunction; ++ } ++ ++ /** ++ * Sets the function that overrides what {@link Sound} is sent to a {@link Player}. ++ * ++ * @param soundOverrideFunction function which accepts a player and returns a sound ++ * (or {@code null} if the default sound should be used) ++ */ ++ public void setSoundOverrideFunction(@Nullable Function<@NotNull Player, @Nullable Sound> soundOverrideFunction) { ++ this.soundOverrideFunction = soundOverrideFunction; ++ } ++ ++ /** ++ * Calculates the sound that will be sent to a {@link Player}. ++ * ++ * @param player player to calculate the sound for ++ * @return sound that will be sent to the player ++ */ ++ public @NotNull Sound calculateSound(@NotNull Player player) { ++ if (soundOverrideFunction != null) { ++ try { ++ Sound override = soundOverrideFunction.apply(player); ++ if (override != null) { ++ return override; ++ } ++ } catch (Throwable e) { ++ LOGGER.error("Error while overriding sound for player " + player.getName(), e); ++ } ++ } ++ return sound; ++ } ++ ++ /** ++ * Gets the function that overrides what {@link Emitter} is used when playing this sound to a ++ * {@link Player}. ++ * ++ * @return emitter override function (or {@code null} if not overridden) ++ */ ++ public @Nullable Function<@NotNull Player, @Nullable Emitter> getEmitterOverrideFunction() { ++ return emitterOverrideFunction; ++ } ++ ++ /** ++ * Sets the function that overrides what {@link Emitter} is used when playing this sound to a ++ * {@link Player}. ++ * ++ * @param emitterOverrideFunction function which accepts a player and returns an emitter ++ * (or {@code null} if the default emitter should be used) ++ */ ++ public void setEmitterOverrideFunction(@Nullable Function<@NotNull Player, @Nullable Emitter> emitterOverrideFunction) { ++ this.emitterOverrideFunction = emitterOverrideFunction; ++ } ++ ++ /** ++ * Calculates the emitter that will be used when playing this sound to a {@link Player}. ++ * ++ * @param player player to calculate the emitter for ++ * @return emitter that will be used when playing the sound to the player ++ */ ++ public @NotNull Emitter calculateEmitter(@NotNull Player player) { ++ if (emitterOverrideFunction != null) { ++ try { ++ Emitter override = emitterOverrideFunction.apply(player); ++ if (override != null) { ++ return override; ++ } ++ } catch (Throwable e) { ++ LOGGER.error("Error while overriding emitter for player " + player.getName(), e); ++ } ++ } ++ return emitter; ++ } + + @Override + public boolean isCancelled() { @@ -392,22 +322,71 @@ index 0000000000000000000000000000000000000000..0506c9e461296aeb12da23b476b9b1c5 + this.cancelled = cancelled; + } + -+ /** -+ * Gets the world in which the sound is being played -+ * @return sound's world -+ */ + @NotNull -+ public abstract World getWorld(); -+ -+ private static final org.bukkit.event.HandlerList handlers = new org.bukkit.event.HandlerList(); ++ public static org.bukkit.event.HandlerList getHandlerList() { ++ return handlers; ++ } + + @Override + public @NotNull org.bukkit.event.HandlerList getHandlers() { + return handlers; + } + ++ private record WrappedRecipientsFunction(@NotNull Function> wrapped) implements Function> { ++ @Override ++ public List apply(SoundEvent event) { ++ List recipients = wrapped.apply(event); ++ HumanEntity except = event.getException(); ++ if (except != null) { ++ List filteredRecipients = new ArrayList<>(recipients.size()); ++ for (Player player : recipients) { ++ if (!player.getUniqueId().equals(except.getUniqueId())) ++ filteredRecipients.add(player); ++ } ++ return filteredRecipients; ++ } ++ return recipients; ++ } ++ } ++ + @NotNull -+ public static org.bukkit.event.HandlerList getHandlerList() { -+ return handlers; ++ private static Function> wrapRecipientsFunction(@NotNull Function> recipientsFunction) { ++ if (recipientsFunction instanceof WrappedRecipientsFunction) ++ return recipientsFunction; ++ else ++ return new WrappedRecipientsFunction(recipientsFunction); ++ } ++ ++ /** ++ * The class which determines where a sound will emit from. ++ */ ++ public sealed interface Emitter permits EntityEmitter, LocationEmitter { ++ /** ++ * Gets the location at which the sound will be played. ++ * ++ * @return sound's location ++ */ ++ @NotNull ++ Location location(); ++ } ++ ++ /** ++ * An emitter which plays a sound from an entity. ++ * ++ * @param entity the entity from which the sound will be played ++ */ ++ public record EntityEmitter(@NotNull Entity entity) implements Emitter { ++ @Override ++ public @NotNull Location location() { ++ return entity.getLocation(); ++ } ++ } ++ ++ /** ++ * An emitter which plays a sound from a location. ++ * ++ * @param location the location from which the sound will be played ++ */ ++ public record LocationEmitter(@NotNull Location location) implements Emitter { + } +} diff --git a/patches/api/0005-Expanded-Adventure-support.patch b/patches/api/0005-Expanded-Adventure-support.patch index 5751986..1d9e1a9 100644 --- a/patches/api/0005-Expanded-Adventure-support.patch +++ b/patches/api/0005-Expanded-Adventure-support.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Expanded Adventure support Adds support for Adventure in a few places where it was previously missing. diff --git a/src/main/java/org/bukkit/ChatColor.java b/src/main/java/org/bukkit/ChatColor.java -index 4594701d77c5d0f744bece871b98d9f6f73eb5a7..136f87f6cd2f3a56cfa645084fd6446a20f2e88e 100644 +index f6eb30f53dad684f156102cf7147b2f00c82c71e..1b4e9840f0e829be533ad0bd1c918489642245c2 100644 --- a/src/main/java/org/bukkit/ChatColor.java +++ b/src/main/java/org/bukkit/ChatColor.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; @@ -120,10 +120,10 @@ index 4594701d77c5d0f744bece871b98d9f6f73eb5a7..136f87f6cd2f3a56cfa645084fd6446a * Gets the char value associated with this color * diff --git a/src/main/java/org/bukkit/Color.java b/src/main/java/org/bukkit/Color.java -index deae003b7e9a96bbf1c0167d3e1d864e61b07f82..53afcd97fc34bceff741ee118f63226781f9c895 100644 +index d2f8f5a8e49f60422b6a41e51248a6710251d61b..40b09a861ba365b126c2b28bb7f18c8fb8b3e5b5 100644 --- a/src/main/java/org/bukkit/Color.java +++ b/src/main/java/org/bukkit/Color.java -@@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; +@@ -15,7 +15,7 @@ import org.jetbrains.annotations.NotNull; * but subject to change. */ @SerializableAs("Color") @@ -132,7 +132,7 @@ index deae003b7e9a96bbf1c0167d3e1d864e61b07f82..53afcd97fc34bceff741ee118f632267 private static final int BIT_MASK = 0xff; /** -@@ -242,6 +242,13 @@ public final class Color implements ConfigurationSerializable { +@@ -244,6 +244,13 @@ public final class Color implements ConfigurationSerializable { return getRed() << 16 | getGreen() << 8 | getBlue() << 0; } diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 17bcbeb..dceba84 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 79b26045a68ebb9b01e5bd06abbccaaef5489777..da7d4eb2beea848e60d8c8cfe2a5abf0d6761950 100644 +index 30b49aed62fa67276e8964922ea3f84458d854bb..c78ca045a0a7fa651a34f76c802bb82cd6ac4d13 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2055,4 +2055,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2065,4 +2065,20 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi */ @NotNull org.bukkit.potion.PotionBrewer getPotionBrewer(); // Paper end diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 155a679..01455a4 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b8ca2c915 100644 +index 68b8f275f9c9e77a949ca29749a05b469bcdb910..82d6922ca22eee74de2140789787e6e5da51378c 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,8 +9,8 @@ plugins { @@ -19,7 +19,7 @@ index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -60,7 +60,7 @@ tasks.jar { +@@ -64,7 +64,7 @@ tasks.jar { attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", "Implementation-Title" to "CraftBukkit", @@ -28,7 +28,7 @@ index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b "Implementation-Vendor" to date, // Paper "Specification-Title" to "Bukkit", "Specification-Version" to project.version, -@@ -77,7 +77,27 @@ tasks.jar { +@@ -81,7 +81,27 @@ tasks.jar { publishing { publications.create("maven") { @@ -57,7 +57,7 @@ index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b } } -@@ -148,7 +168,7 @@ fun TaskContainer.registerRunTask( +@@ -152,7 +172,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -67,7 +67,7 @@ index 0282e3b75470e1a68ea1fc228082483514ba432e..9c860b39f1131920ea747783423a736b standardInput = System.`in` workingDir = rootProject.layout.projectDirectory diff --git a/src/main/java/com/destroystokyo/paper/Metrics.java b/src/main/java/com/destroystokyo/paper/Metrics.java -index 218f5bafeed8551b55b91c7fccaf6935c8b631ca..52126870f1fc15a9ddce4452673b236ea692860f 100644 +index 7b1843e16745ca8db2244e17490d291401f22679..c340575e9c2a114f2165b74feb4481975821811c 100644 --- a/src/main/java/com/destroystokyo/paper/Metrics.java +++ b/src/main/java/com/destroystokyo/paper/Metrics.java @@ -73,7 +73,7 @@ public class Metrics { @@ -104,10 +104,10 @@ index bf42969859545a8a520923ef1836ffa4a5cc24a0..2532e265c5dade55f71c34fcab6d1e74 org.bukkit.Bukkit.getLogger().warning("Version: " + org.bukkit.Bukkit.getBukkitVersion()); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index da15a224b8b974e78b9d8d5f514229b3b2a5a63e..f2b5e78b3fe68c38e755b9b4a8f96077ac6800f2 100644 +index 32dc0cd20a4dd8fc02be1f7ba3d727db826dbe5d..d48ac4df6f9cde9ccdc068010e977206dd838eaf 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1696,7 +1696,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop DISTANCE_FUNCTION = sound -> { ++ Optional soundEvent = PaperAdventure.asVanillaSound(sound.name()); ++ if (soundEvent.isPresent()) ++ return Double.valueOf(soundEvent.get().getRange(sound.volume())); ++ return gg.projecteden.parchment.event.sound.SoundEvent.DEFAULT_DISTANCE_FUNCTION.apply(sound); ++ }; ++ ++ public static gg.projecteden.parchment.event.sound.SoundEvent.Emitter createEmitter(Level level, double x, double y, double z) { ++ return new gg.projecteden.parchment.event.sound.SoundEvent.LocationEmitter(new Location(level.getWorld(), x, y, z)); ++ } ++ ++ public static gg.projecteden.parchment.event.sound.SoundEvent.Emitter createEmitter(Entity entity) { ++ return new gg.projecteden.parchment.event.sound.SoundEvent.EntityEmitter(entity.getBukkitEntity()); ++ } ++} +diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +index 3f25a9b1a74cfa0c9a4d0379ecda109d99f33db3..b954cda43afbfd367f7f8f436dca65f900706ccb 100644 +--- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java ++++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +@@ -302,6 +302,32 @@ public final class PaperAdventure { + return asVanilla(source); + } + ++ // Parchment start ++ public static Sound.Source asAdventure(final SoundSource source) { ++ return switch (source) { ++ case MASTER -> Sound.Source.MASTER; ++ case MUSIC -> Sound.Source.MUSIC; ++ case RECORDS -> Sound.Source.RECORD; ++ case WEATHER -> Sound.Source.WEATHER; ++ case BLOCKS -> Sound.Source.BLOCK; ++ case HOSTILE -> Sound.Source.HOSTILE; ++ case NEUTRAL -> Sound.Source.NEUTRAL; ++ case PLAYERS -> Sound.Source.PLAYER; ++ case AMBIENT -> Sound.Source.AMBIENT; ++ case VOICE -> Sound.Source.VOICE; ++ }; ++ } ++ ++ public static java.util.Optional asVanillaSound(final Key key) { ++ return net.minecraft.core.Registry.SOUND_EVENT.getOptional(asVanilla(key)); ++ } ++ ++ @SuppressWarnings("PatternValidation") ++ public static Key asAdventure(final ResourceLocation key) { ++ return Key.key(key.getNamespace(), key.getPath()); ++ } ++ // Parchment end ++ + // NBT + + public static @Nullable BinaryTagHolder asBinaryTagHolder(final @Nullable CompoundTag tag) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 98209532ad3e692d7e459640123f78bbd9a65889..53f5e22370f3bc0d29cc38641d67e869305ced86 100644 +index 0dc7a827aeacc7fae53b1f975f45883da7db6a0c..782be663520c27fccb58484ec56cc94def38f136 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1520,12 +1520,12 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1540,12 +1540,40 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override - public void playSound(@Nullable Player except, double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch) { -- this.server.getPlayerList().broadcast(except, x, y, z, volume > 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundPacket(sound, category, x, y, z, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(null, getWorld(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment + public void playSeededSound(@Nullable Player except, double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch, long seed) { +- this.server.getPlayerList().broadcast(except, x, y, z, (double) sound.getRange(volume), this.dimension(), new ClientboundSoundPacket(sound, category, x, y, z, volume, pitch, seed)); ++ // Parchment start - sound event ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( ++ except == null ? null : except.getBukkitEntity(), ++ net.kyori.adventure.sound.Sound.sound( ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(sound.getLocation()), ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(category), ++ volume, ++ pitch ++ ), ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.createEmitter(this, x, y, z), ++ seed, ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.DISTANCE_FUNCTION, ++ null ++ )); ++ // Parchment end } @Override - public void playSound(@Nullable Player except, Entity entity, SoundEvent sound, SoundSource category, float volume, float pitch) { -- this.server.getPlayerList().broadcast(except, entity.getX(), entity.getY(), entity.getZ(), volume > 1.0F ? (double) (16.0F * volume) : 16.0D, this.dimension(), new ClientboundSoundEntityPacket(sound, category, entity, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.EntitySoundEvent(null, entity.getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(sound), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this.server, volume > 1.0F ? (double) (16.0F * volume) : 16.0D); // Parchment + public void playSeededSound(@Nullable Player except, Entity entity, SoundEvent sound, SoundSource category, float volume, float pitch, long seed) { +- this.server.getPlayerList().broadcast(except, entity.getX(), entity.getY(), entity.getZ(), (double) sound.getRange(volume), this.dimension(), new ClientboundSoundEntityPacket(sound, category, entity, volume, pitch, seed)); ++ // Parchment start - sound event ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( ++ except == null ? null : except.getBukkitEntity(), ++ net.kyori.adventure.sound.Sound.sound( ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(sound.getLocation()), ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(category), ++ volume, ++ pitch ++ ), ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.createEmitter(entity), ++ seed, ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.DISTANCE_FUNCTION, ++ null ++ )); ++ // Parchment end } @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index a6edf5117d4ae03d8294e7bb74dd2d77048895a5..0f29fd8768d4443211e85c96f624c12d60f488da 100644 +index c8057f98e16ba6e19640e0b250e5201e0f4f57db..f2048fe46e0231e877d4e61f30387406fef82d51 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2195,7 +2195,7 @@ public class ServerPlayer extends Player { +@@ -2221,7 +2221,19 @@ public class ServerPlayer extends Player { @Override public void playNotifySound(SoundEvent event, SoundSource category, float volume, float pitch) { -- this.connection.send(new ClientboundSoundPacket(event, category, this.getX(), this.getY(), this.getZ(), volume, pitch)); -+ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(getBukkitEntity(), org.bukkit.craftbukkit.CraftSound.getBukkit(event), org.bukkit.SoundCategory.valueOf(category.name()), volume, pitch), this); // Parchment +- this.connection.send(new ClientboundSoundPacket(event, category, this.getX(), this.getY(), this.getZ(), volume, pitch, this.random.nextLong())); ++ // Parchment start - sound event ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( ++ null, ++ net.kyori.adventure.sound.Sound.sound( ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(event.getLocation()), ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(category), ++ volume, ++ pitch ++ ), ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.createEmitter(level, getX(), getY(), getZ()), ++ this.random.nextLong(), sound -> 0d, soundEvent -> java.util.Collections.singletonList(getBukkitEntity()) ++ )); ++ // Parchment end } @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index 624946f48f0811c94d05174f28d0b1fc6d5e6a00..ebc22dc4729146f9e28830a64204daf0084018a3 100644 +index 20cdfdb3b9351f74e89bc45b3ab972384165659a..aaef762c95584103937955413629aa11f7cf2bd0 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -974,7 +974,7 @@ public abstract class PlayerList { +@@ -977,7 +977,7 @@ public abstract class PlayerList { if (flag2 && !isLocAltered) { BlockState data = worldserver1.getBlockState(blockposition); - worldserver1.setBlock(blockposition, data.setValue(RespawnAnchorBlock.CHARGE, data.getValue(RespawnAnchorBlock.CHARGE) - 1), 3); -- entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) location.getX(), (double) location.getY(), (double) location.getZ(), 1.0F, 1.0F)); -+ entityplayer1.playNotifySound(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, 1.0F, 1.0F); // Parchment + worldserver1.setBlock(blockposition, data.setValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE, data.getValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE) - 1), 3); +- entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) location.getX(), (double) location.getY(), (double) location.getZ(), 1.0F, 1.0F, worldserver1.getRandom().nextLong())); ++ entityplayer1.playNotifySound(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, 1.0F, 1.0F); // Parchment - use existing play sound method // Paper end } // Added from changeDimension 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 2483d7df7f1bf94344afd38b37602c645a4a2dff..ef8038587117829c84a237a52498496cd39ab91a 100644 +index cd9cbfa5ef94994b3f7f2ecdde843620e7e6c071..bc6bdc8752718777ac698cfda2a0e7f35fcf9896 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1849,7 +1849,7 @@ public abstract class Player extends LivingEntity { +@@ -1898,7 +1898,21 @@ public abstract class Player extends LivingEntity { private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { fromEntity.level.playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself if (fromEntity instanceof ServerPlayer) { -- ((ServerPlayer) fromEntity).connection.send(new ClientboundSoundPacket(soundEffect, soundCategory, x, y, z, volume, pitch)); -+ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.LocationNamedSoundEvent(fromEntity.getBukkitEntity(), new org.bukkit.util.Vector(x, y, z), org.bukkit.craftbukkit.CraftSound.getBukkit(soundEffect), org.bukkit.SoundCategory.valueOf(soundCategory.name()), volume, pitch), (ServerPlayer) fromEntity); // Parchment +- ((ServerPlayer) fromEntity).connection.send(new net.minecraft.network.protocol.game.ClientboundSoundPacket(soundEffect, soundCategory, x, y, z, volume, pitch, fromEntity.random.nextLong())); ++ // Parchment start - sound event ++ CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( ++ null, ++ net.kyori.adventure.sound.Sound.sound( ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(soundEffect.getLocation()), ++ io.papermc.paper.adventure.PaperAdventure.asAdventure(soundCategory), ++ volume, ++ pitch ++ ), ++ gg.projecteden.parchment.event.sound.ParchmentSoundEvent.createEmitter(fromEntity.level, x, y, z), ++ fromEntity.random.nextLong(), ++ sound -> 0d, ++ soundEvent -> java.util.Collections.singletonList(((ServerPlayer) fromEntity).getBukkitEntity()) ++ )); ++ // Parchment end } } // Paper end diff --git a/src/main/java/net/minecraft/world/entity/raid/Raid.java b/src/main/java/net/minecraft/world/entity/raid/Raid.java -index f50abfd058e3adf1cf8c0f4468a60bc04e8541e7..2ff60e8fa65626a9805597776b9163fd40e6807d 100644 +index 6a0a1731fd6804eb69d3641213712d31bce085b2..81819d12e0becde85b6d66f3b3ffedde847a72f6 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -26,7 +26,7 @@ import net.minecraft.nbt.ListTag; - import net.minecraft.nbt.NbtUtils; - import net.minecraft.network.chat.Component; - import net.minecraft.network.chat.TranslatableComponent; --import net.minecraft.network.protocol.game.ClientboundSoundPacket; -+//import net.minecraft.network.protocol.game.ClientboundSoundPacket; // Parchment - import net.minecraft.server.level.ServerBossEvent; - import net.minecraft.server.level.ServerLevel; - import net.minecraft.server.level.ServerPlayer; -@@ -537,7 +537,7 @@ public class Raid { +@@ -526,7 +526,7 @@ public class Raid { + float f = 13.0F; + boolean flag = true; + Collection collection = this.raidEvent.getPlayers(); +- long i = this.random.nextLong(); ++ //long i = this.random.nextLong(); // Parchment - remove redundant variable + Iterator iterator = this.level.players().iterator(); + + while (iterator.hasNext()) { +@@ -538,7 +538,7 @@ public class Raid { double d2 = vec3d.z + 13.0D / d0 * (vec3d1.z - vec3d.z); if (d0 <= 64.0D || collection.contains(entityplayer)) { -- entityplayer.connection.send(new ClientboundSoundPacket(SoundEvents.RAID_HORN, SoundSource.NEUTRAL, d1, entityplayer.getY(), d2, 64.0F, 1.0F)); -+ entityplayer.playNotifySound(SoundEvents.RAID_HORN, SoundSource.NEUTRAL, 64.0F, 1.0F); // Parchment +- entityplayer.connection.send(new ClientboundSoundPacket(SoundEvents.RAID_HORN, SoundSource.NEUTRAL, d1, entityplayer.getY(), d2, 64.0F, 1.0F, i)); ++ entityplayer.playNotifySound(SoundEvents.RAID_HORN, SoundSource.NEUTRAL, 64.0F, 1.0F); // Parchment - use existing play sound method } } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index ceacb62aef0dd0f73f1542a1898ceb62c3f4c367..70d445429fec455f8188341ffd401e83f6bdab1c 100644 +index 1d8ec0f85ec42f2dcd9405df83b526ae1c59de6f..1547cd54b805e46ebcf8d7a910533f29537c2c55 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1917,4 +1917,77 @@ public class CraftEventFactory { +@@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.event; + + import com.google.common.base.Function; + import com.google.common.base.Functions; +-import com.google.common.collect.Lists; + import com.mojang.datafixers.util.Either; + import java.net.InetAddress; + import java.util.ArrayList; +@@ -1919,4 +1918,52 @@ public class CraftEventFactory { return event.callEvent(); } // Paper end + + // Parchment start -+ private static net.minecraft.network.protocol.Packet handleSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent _event) { -+ if (!_event.callEvent()) { -+ return null; -+ } else { -+ float volume = _event.getVolume(); -+ float pitch = _event.getPitch(); -+ net.minecraft.sounds.SoundSource source = net.minecraft.sounds.SoundSource.valueOf(_event.getCategory().name()); -+ -+ if (_event instanceof gg.projecteden.parchment.event.sound.NamedSoundEvent namedSoundEvent) { -+ net.minecraft.sounds.SoundEvent sound = org.bukkit.craftbukkit.CraftSound.getSoundEffect(namedSoundEvent.getSound()); -+ -+ if (_event instanceof gg.projecteden.parchment.event.sound.LocationNamedSoundEvent event) { -+ org.bukkit.util.Vector pos = event.getVector(); -+ return new net.minecraft.network.protocol.game.ClientboundSoundPacket(sound, source, pos.getX(), pos.getY(), pos.getZ(), volume, pitch); -+ } else { -+ gg.projecteden.parchment.event.sound.EntitySoundEvent event = (gg.projecteden.parchment.event.sound.EntitySoundEvent) _event; -+ return new net.minecraft.network.protocol.game.ClientboundSoundEntityPacket(sound, source, ((CraftEntity) event.getOrigin()).getHandle(), volume, pitch); -+ } -+ } else { -+ gg.projecteden.parchment.event.sound.LocationCustomSoundEvent event = (gg.projecteden.parchment.event.sound.LocationCustomSoundEvent) _event; -+ org.bukkit.util.Vector pos = event.getVector(); -+ return new net.minecraft.network.protocol.game.ClientboundCustomSoundPacket(CraftNamespacedKey.toMinecraft(event.getKey()), source, org.bukkit.craftbukkit.util.CraftVector.toNMS(pos), volume, pitch); ++ private static net.minecraft.network.protocol.@org.jetbrains.annotations.NotNull Packet handleSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, CraftPlayer recipient) { ++ // init variables ++ net.kyori.adventure.sound.Sound sound = event.calculateSound(recipient); ++ gg.projecteden.parchment.event.sound.SoundEvent.Emitter emitter = event.calculateEmitter(recipient); ++ net.minecraft.sounds.SoundSource source = io.papermc.paper.adventure.PaperAdventure.asVanilla(sound.source()); ++ float volume = sound.volume(); ++ float pitch = sound.pitch(); ++ long seed = event.getSeed(); ++ java.util.Optional soundEvent = io.papermc.paper.adventure.PaperAdventure.asVanillaSound(sound.name()); ++ // handle vanilla sounds ++ if (soundEvent.isPresent()) { ++ if (emitter instanceof gg.projecteden.parchment.event.sound.SoundEvent.EntityEmitter entityEmitter) ++ return new net.minecraft.network.protocol.game.ClientboundSoundEntityPacket(soundEvent.get(), source, ((CraftEntity) entityEmitter.entity()).getHandle(), volume, pitch, seed); ++ else if (emitter instanceof gg.projecteden.parchment.event.sound.SoundEvent.LocationEmitter locationEmitter) { ++ Location loc = locationEmitter.location(); ++ return new net.minecraft.network.protocol.game.ClientboundSoundPacket(soundEvent.get(), source, loc.getX(), loc.getY(), loc.getZ(), volume, pitch, seed); + } ++ else ++ throw new IllegalArgumentException("Unknown emitter type: " + emitter.getClass().getName()); ++ } ++ // handle custom sounds ++ else { ++ // warn if trying to use EntityEmitter with custom sound ++ if (emitter instanceof gg.projecteden.parchment.event.sound.SoundEvent.EntityEmitter) ++ org.slf4j.LoggerFactory.getLogger("SoundEvent").warn("Sound event is using a custom sound ({}) which cannot be used with EntityEmitter. Falling back to playing at the entity's location.", sound.name().asString()); ++ Vec3 pos = org.bukkit.craftbukkit.util.CraftVector.toNMS(emitter.location().toVector()); ++ return new net.minecraft.network.protocol.game.ClientboundCustomSoundPacket(io.papermc.paper.adventure.PaperAdventure.asVanilla(sound.name()), source, pos, volume, pitch, seed); + } + } + -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, java.util.function.Consumer> soundPlayer) { ++ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event) { + org.apache.commons.lang3.Validate.notNull(event, "event"); -+ org.apache.commons.lang3.Validate.notNull(soundPlayer, "soundPlayer"); -+ if (!(event instanceof gg.projecteden.parchment.event.sound.LocationNamedSoundEvent || event instanceof gg.projecteden.parchment.event.sound.LocationCustomSoundEvent || event instanceof gg.projecteden.parchment.event.sound.EntitySoundEvent)) { -+ throw new IllegalArgumentException("Unknown sound event: " + event.getClass().getName()); -+ } -+ java.util.concurrent.CompletableFuture.supplyAsync(() -> handleSoundEvent(event), net.minecraft.server.MCUtil.asyncExecutor).thenAcceptAsync(packet -> { -+ if (packet != null) -+ soundPlayer.accept(packet); -+ }, net.minecraft.server.MCUtil.asyncExecutor); -+ } -+ -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, CraftPlayer sendTo) { -+ playSoundEvent(event, sendTo.getHandle()); -+ } -+ -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, ServerPlayer sendTo) { -+ playSoundEvent(event, sendTo.connection); -+ } -+ -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.network.ServerPlayerConnection sendTo) { -+ playSoundEvent(event, sendTo::send); -+ } -+ -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.MinecraftServer server, double radius) { -+ playSoundEvent(event, server.getPlayerList(), radius); -+ } -+ -+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, net.minecraft.server.players.PlayerList playerList, double radius) { -+ final net.minecraft.world.entity.player.Player player = event.getPlayer() == null ? null : ((org.bukkit.craftbukkit.entity.CraftHumanEntity) event.getPlayer()).getHandle(); -+ final net.minecraft.resources.ResourceKey world = ((CraftWorld) event.getWorld()).getHandle().dimension(); -+ final org.bukkit.util.Vector pos; -+ if (event instanceof gg.projecteden.parchment.HasLocation hasLoc) { -+ pos = hasLoc.getLocation().toVector(); -+ } else if (event instanceof gg.projecteden.parchment.event.sound.EntitySoundEvent entityEvent) { -+ pos = entityEvent.getOrigin().getLocation().toVector(); -+ } else { -+ throw new IllegalArgumentException("Could not determine location of sound event"); -+ } -+ final double posX = pos.getX(); -+ final double posY = pos.getY(); -+ final double posZ = pos.getZ(); -+ playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); ++ if (!event.callEvent()) ++ return; ++ net.minecraft.server.MCUtil.asyncExecutor.execute(() -> { ++ try { ++ for (Player _player : event.calculateRecipients()) { ++ CraftPlayer player = (CraftPlayer) _player; ++ player.getHandle().connection.send(handleSoundEvent(event, player)); ++ } ++ } catch (Throwable e) { ++ org.slf4j.LoggerFactory.getLogger("SoundEvent").error("Error playing sound event", e); ++ } ++ }); + } + // Parchment end } diff --git a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index 0832f15..2f8c488 100644 --- a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add origin location to EntityDamageByBlockEvent diff --git a/src/main/java/net/minecraft/world/damagesource/BadRespawnPointDamage.java b/src/main/java/net/minecraft/world/damagesource/BadRespawnPointDamage.java -index f5a18fb39eb69b2a9842d3f96aa1cd6a8dff6d9b..456d93305f524da6142bad320edb817b27c6c1e6 100644 +index 968c915cc494bb3c57169b7b3640002c3a4a8810..0c2b2cb4be57b11d748d13a0ec24b7470619267f 100644 --- a/src/main/java/net/minecraft/world/damagesource/BadRespawnPointDamage.java +++ b/src/main/java/net/minecraft/world/damagesource/BadRespawnPointDamage.java -@@ -9,12 +9,20 @@ import net.minecraft.network.chat.TranslatableComponent; +@@ -7,12 +7,20 @@ import net.minecraft.network.chat.HoverEvent; import net.minecraft.world.entity.LivingEntity; public class BadRespawnPointDamage extends DamageSource { @@ -28,9 +28,9 @@ index f5a18fb39eb69b2a9842d3f96aa1cd6a8dff6d9b..456d93305f524da6142bad320edb817b + @Override public Component getLocalizedDeathMessage(LivingEntity entity) { - Component component = ComponentUtils.wrapInSquareBrackets(new TranslatableComponent("death.attack.badRespawnPoint.link")).withStyle((style) -> { + Component component = ComponentUtils.wrapInSquareBrackets(Component.translatable("death.attack.badRespawnPoint.link")).withStyle((style) -> { diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..52cce7422c2a99e3de37f87ac704151682578718 100644 +index 67bce77093dcc126098731047447da2031e3388d..051cf78fe9f7700e1f639c804f35903c8079eae9 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -77,6 +77,18 @@ public class DamageSource { @@ -52,7 +52,7 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..52cce7422c2a99e3de37f87ac7041516 public static DamageSource sting(LivingEntity attacker) { return new EntityDamageSource("sting", attacker); -@@ -127,17 +139,24 @@ public class DamageSource { +@@ -127,7 +139,7 @@ public class DamageSource { } public static DamageSource explosion(@Nullable Explosion explosion) { @@ -61,7 +61,8 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..52cce7422c2a99e3de37f87ac7041516 } public static DamageSource explosion(@Nullable LivingEntity attacker) { - return attacker != null ? (new EntityDamageSource("explosion.player", attacker)).setScalesWithDifficulty().setExplosion() : (new DamageSource("explosion")).setScalesWithDifficulty().setExplosion(); +@@ -138,10 +150,17 @@ public class DamageSource { + return (new EntityDamageSource("sonic_boom", attacker)).bypassArmor().bypassEnchantments().setMagic(); } + @Deprecated // Parchment @@ -79,10 +80,10 @@ index a828cad27fcd39f8bfbaefa97052a2a3b6650ee7..52cce7422c2a99e3de37f87ac7041516 return "DamageSource (" + this.msgId + ")"; } diff --git a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -index 8c4db2f0e5158872879da52a96bc592145e52e13..2b25f719205bccd697e8b57e942005d0524728b1 100644 +index 219877901fb5fc6401646253d6e5d7bd8416ffe1..caffd9b78d370019e98c9049a121c7d3734372e6 100644 --- a/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java +++ b/src/main/java/net/minecraft/world/entity/boss/enderdragon/EnderDragon.java -@@ -99,7 +99,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -98,7 +98,7 @@ public class EnderDragon extends Mob implements Enemy { private final Node[] nodes = new Node[24]; private final int[] nodeAdjacency = new int[24]; private final BinaryHeap openSet = new BinaryHeap(); @@ -91,7 +92,7 @@ index 8c4db2f0e5158872879da52a96bc592145e52e13..2b25f719205bccd697e8b57e942005d0 // Paper start - add var for save custom podium @Nullable private BlockPos podium; -@@ -107,6 +107,7 @@ public class EnderDragon extends Mob implements Enemy { +@@ -106,6 +106,7 @@ public class EnderDragon extends Mob implements Enemy { public EnderDragon(EntityType entitytypes, Level world) { super(EntityType.ENDER_DRAGON, world); @@ -100,10 +101,10 @@ index 8c4db2f0e5158872879da52a96bc592145e52e13..2b25f719205bccd697e8b57e942005d0 this.setHealth(this.getMaxHealth()); this.noPhysics = true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index 29f6c10e2c2626a9726d295acf12efea2b463cd3..370bde9e458a11c504a52356524fd289569612f1 100644 +index 01477e7240f9e33d08d416a7d40ee10f3e5d4abf..e8e1501f31b27d2e4448475db46f98304874575f 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java -@@ -471,6 +471,13 @@ public class Explosion { +@@ -474,6 +474,13 @@ public class Explosion { return this.toBlow; } @@ -118,7 +119,7 @@ index 29f6c10e2c2626a9726d295acf12efea2b463cd3..370bde9e458a11c504a52356524fd289 NONE, BREAK, DESTROY; diff --git a/src/main/java/net/minecraft/world/level/block/BedBlock.java b/src/main/java/net/minecraft/world/level/block/BedBlock.java -index 20c0030d566012146021613325c6a979f392740e..a0a052095815ed63f06837155b48b0d84f404240 100644 +index 654a859a37bf991c7a7fa8a44a3d20f8feb223db..52e6c9ea22273759ea9a827125bf561a62272ad9 100644 --- a/src/main/java/net/minecraft/world/level/block/BedBlock.java +++ b/src/main/java/net/minecraft/world/level/block/BedBlock.java @@ -145,7 +145,10 @@ public class BedBlock extends HorizontalDirectionalBlock implements EntityBlock @@ -134,7 +135,7 @@ index 20c0030d566012146021613325c6a979f392740e..a0a052095815ed63f06837155b48b0d8 } } diff --git a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -index 7d33dae2617991bce244ad906df7053c22e3f515..797a583f0e3516b4a1bfec4c122eff438d174776 100644 +index 6be6adf73dc48ebbac22fe2a9be635f675f18cb1..e814c791137da2a10f4d4dd65f201fc220399975 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java @@ -148,7 +148,10 @@ public class RespawnAnchorBlock extends Block { @@ -150,10 +151,10 @@ index 7d33dae2617991bce244ad906df7053c22e3f515..797a583f0e3516b4a1bfec4c122eff43 public static boolean canSetSpawn(Level world) { diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 70d445429fec455f8188341ffd401e83f6bdab1c..7df4e2bab4d0773d8246011368c8e1c82c8e49d4 100644 +index 1547cd54b805e46ebcf8d7a910533f29537c2c55..de6ec4c6d59d1b9fa203b0d373452e466a89e1ec 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -969,7 +969,7 @@ public class CraftEventFactory { +@@ -968,7 +968,7 @@ public class CraftEventFactory { CraftEventFactory.entityDamage = null; EntityDamageEvent event; if (damager == null) { @@ -162,7 +163,7 @@ index 70d445429fec455f8188341ffd401e83f6bdab1c..7df4e2bab4d0773d8246011368c8e1c8 } else if (entity instanceof EnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); } else { -@@ -1007,7 +1007,7 @@ public class CraftEventFactory { +@@ -1008,7 +1008,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled, source.isCritical()); // Paper - add critical damage API } else if (source == DamageSource.OUT_OF_WORLD) { @@ -171,7 +172,7 @@ index 70d445429fec455f8188341ffd401e83f6bdab1c..7df4e2bab4d0773d8246011368c8e1c8 event.setCancelled(cancelled); CraftEventFactory.callEvent(event); if (!event.isCancelled()) { -@@ -1017,7 +1017,7 @@ public class CraftEventFactory { +@@ -1018,7 +1018,7 @@ public class CraftEventFactory { } return event; } else if (source == DamageSource.LAVA) { diff --git a/patches/server/0007-Expose-EntityType-Ordinals.patch b/patches/server/0007-Expose-EntityType-Ordinals.patch index 6697d71..feb69fe 100644 --- a/patches/server/0007-Expose-EntityType-Ordinals.patch +++ b/patches/server/0007-Expose-EntityType-Ordinals.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose EntityType Ordinals diff --git a/src/main/java/net/minecraft/world/entity/EntityType.java b/src/main/java/net/minecraft/world/entity/EntityType.java -index 79abd84696ef099f6b12ddeaa6e398f18c53316a..13e277c9ff27a52fbf7041c36d7c5ff6d0028cfc 100644 +index ac0f0a4da4282c13f6e1f37710cb615d66b8ef2c..aa98cea349a3929cbb29fa01962ae98d9136cda7 100644 --- a/src/main/java/net/minecraft/world/entity/EntityType.java +++ b/src/main/java/net/minecraft/world/entity/EntityType.java -@@ -150,6 +150,8 @@ import org.slf4j.Logger; +@@ -154,6 +154,8 @@ import org.slf4j.Logger; public class EntityType implements EntityTypeTest { @@ -17,7 +17,7 @@ index 79abd84696ef099f6b12ddeaa6e398f18c53316a..13e277c9ff27a52fbf7041c36d7c5ff6 private static final Logger LOGGER = LogUtils.getLogger(); public static final String ENTITY_TAG = "EntityTag"; private final Holder.Reference> builtInRegistryHolder; -@@ -285,9 +287,31 @@ public class EntityType implements EntityTypeTest { +@@ -294,9 +296,31 @@ public class EntityType implements EntityTypeTest { private final EntityDimensions dimensions; private static EntityType register(String id, EntityType.Builder type) { // CraftBukkit - decompile error @@ -51,7 +51,7 @@ index 79abd84696ef099f6b12ddeaa6e398f18c53316a..13e277c9ff27a52fbf7041c36d7c5ff6 return Registry.ENTITY_TYPE.getKey(type); } diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -index 0507e40c97567fc379ebe4d0b001af16922ddb3e..5f86de03f280b2e3d9e32e11a8df5761ea6591ee 100644 +index ee4d1e3f0be4ac94bb03263425b2acfa97a85c0d..840017182f0c75af07bd461d59fc340b3c304b8a 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java @@ -653,6 +653,18 @@ public final class CraftMagicNumbers implements UnsafeValues { diff --git a/patches/server/0008-Add-Player-setGameProfile.patch b/patches/server/0008-Add-Player-setGameProfile.patch index e75c74b..128cdca 100644 --- a/patches/server/0008-Add-Player-setGameProfile.patch +++ b/patches/server/0008-Add-Player-setGameProfile.patch @@ -5,19 +5,19 @@ Subject: [PATCH] Add Player#setGameProfile 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 ef8038587117829c84a237a52498496cd39ab91a..f087f8b61d50541fbf527331f4d8e625aa0f8e0d 100644 +index bc6bdc8752718777ac698cfda2a0e7f35fcf9896..05584d344c9f7d6d89bb8fbdfa254c1dca91b590 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1468,6 +1468,12 @@ public abstract class Player extends LivingEntity { +@@ -1511,6 +1511,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } -+ // Parchment start ++ // Parchment start | TODO: rename to match getter + public void setProfile(GameProfile gameProfile) { + this.gameProfile = gameProfile; + } + // Parchment end + - public Inventory getInventory() { - return this.inventory; - } + @Nullable + public ProfilePublicKey getProfilePublicKey() { + return this.profilePublicKey; diff --git a/patches/server/0009-Expose-MCUtil-Executors.patch b/patches/server/0009-Expose-MCUtil-Executors.patch index 83885ec..9502756 100644 --- a/patches/server/0009-Expose-MCUtil-Executors.patch +++ b/patches/server/0009-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -index 83f75d9c4ad146ba0a0ef28d0e49a1deb6db6a44..cfda86ba398a853427b4a6a14e3fdf2723f07a83 100644 +index f4847a8671bd21f78af598faacea5c763669ddbc..97e60454716eacdfa4420efff2596b7f99d2bfd6 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -2886,4 +2886,16 @@ public final class CraftServer implements Server { +@@ -2869,4 +2869,16 @@ public final class CraftServer implements Server { } // Paper end diff --git a/patches/server/0011-Add-BlockDropResourcesEvent.patch b/patches/server/0011-Add-BlockDropResourcesEvent.patch index 9a18801..5266ba2 100644 --- a/patches/server/0011-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0011-Add-BlockDropResourcesEvent.patch @@ -8,10 +8,10 @@ to easily get the items being dropped by any block instead of only blocks broken by players. diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1b90b05d6 100644 +index 224ce424b9a22548212ac157ec273c6dd80d6cfb..f33a8f7e46f9d88137de509e22d73edea3804cbe 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -306,7 +306,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -308,7 +308,7 @@ public class Block extends BlockBehaviour implements ItemLike { ServerLevel worldserver = lootContext.getLevel(); BlockPos blockposition = new BlockPos((Vec3) lootContext.getParameter(LootContextParams.ORIGIN)); @@ -19,8 +19,8 @@ index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1 + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(worldserver, blockposition, state.getDrops(lootContext)).forEach((itemstack) -> { // Parchment Block.popResource(worldserver, blockposition, itemstack); }); - state.spawnAfterBreak(worldserver, blockposition, ItemStack.EMPTY); -@@ -314,7 +314,7 @@ public class Block extends BlockBehaviour implements ItemLike { + state.spawnAfterBreak(worldserver, blockposition, ItemStack.EMPTY, true); +@@ -316,7 +316,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos) { if (world instanceof ServerLevel) { @@ -28,8 +28,8 @@ index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1 + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(world, pos, Block.getDrops(state, (ServerLevel) world, pos, (BlockEntity) null)).forEach((itemstack) -> { // Parchment Block.popResource(world, pos, itemstack); }); - state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -324,7 +324,7 @@ public class Block extends BlockBehaviour implements ItemLike { + state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); +@@ -326,7 +326,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity) { if (world instanceof ServerLevel) { @@ -37,8 +37,8 @@ index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1 + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(world, pos, Block.getDrops(state, (ServerLevel) world, pos, blockEntity)).forEach((itemstack) -> { // Parchment Block.popResource((ServerLevel) world, pos, itemstack); }); - state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY); -@@ -351,7 +351,7 @@ public class Block extends BlockBehaviour implements ItemLike { + state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); +@@ -353,7 +353,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, Entity entity, ItemStack stack) { if (world instanceof ServerLevel) { @@ -46,14 +46,14 @@ index a80f4dc0a642c744223a155232291ace6e007636..f76849d67d71bf5bed1b9006adfee1c1 + org.bukkit.craftbukkit.event.CraftEventFactory.callBlockDropResourcesEvent(world, pos, Block.getDrops(state, (ServerLevel) world, pos, blockEntity, entity, stack)).forEach((itemstack1) -> { // Parchment Block.popResource(world, pos, itemstack1); }); - state.spawnAfterBreak((ServerLevel) world, pos, stack); + state.spawnAfterBreak((ServerLevel) world, pos, stack, true); diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 7df4e2bab4d0773d8246011368c8e1c82c8e49d4..7f2cb8bec323fc0fc5188f2cd5efad73cf85301c 100644 +index de6ec4c6d59d1b9fa203b0d373452e466a89e1ec..6ff4c2cc4e49796e947dc70db1eff475e0eeaa3b 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1989,5 +1989,19 @@ public class CraftEventFactory { - final double posZ = pos.getZ(); - playSoundEvent(event, packet -> playerList.broadcast(player, posX, posY, posZ, radius, world, packet)); +@@ -1965,5 +1965,19 @@ public class CraftEventFactory { + } + }); } + + public static List callBlockDropResourcesEvent(LevelAccessor world, BlockPos pos, List items) { diff --git a/patches/server/0012-Add-Furnace-Recipe-API.patch b/patches/server/0012-Add-Furnace-Recipe-API.patch index ad1f2ee..0167924 100644 --- a/patches/server/0012-Add-Furnace-Recipe-API.patch +++ b/patches/server/0012-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index 43244a479a112786539a905a22cb12e3cf55b2dd..72b0a17a52169c0bd6b985e82278fffa73340298 100644 +index 25e56be9055c5c432e1180d45341f4e9d9fcb7ca..4e8dbefb953a8ca09dda1e195591c10ebd9b0243 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2322,4 +2322,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2321,4 +2321,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end diff --git a/patches/server/0013-Disable-sleep-status-announcements.patch b/patches/server/0013-Disable-sleep-status-announcements.patch index 1120859..88e02b5 100644 --- a/patches/server/0013-Disable-sleep-status-announcements.patch +++ b/patches/server/0013-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 53f5e22370f3bc0d29cc38641d67e869305ced86..e4aaffe7ceecb0cf77172e2d96cfe50c8a708c37 100644 +index 782be663520c27fccb58484ec56cc94def38f136..e33d731d4689963fa9c5b2feef24a6b7b202988b 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -898,7 +898,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -918,7 +918,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { @@ -16,4 +16,4 @@ index 53f5e22370f3bc0d29cc38641d67e869305ced86..e4aaffe7ceecb0cf77172e2d96cfe50c + if (false && this.canSleepThroughNights()) { if (!this.getServer().isSingleplayer() || this.getServer().isPublished()) { int i = this.getGameRules().getInt(GameRules.RULE_PLAYERS_SLEEPING_PERCENTAGE); - TranslatableComponent chatmessage; + MutableComponent ichatmutablecomponent; From 7bab72aea830137df2a9f5a45ea606d1054ab544 Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 01:45:17 -0400 Subject: [PATCH 29/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@bd097b4 Updated Upstream (Bukkit/CraftBukkit/Spigot) PaperMC/Paper@8bae82d Use deserialised row keys in config tables (#7962) PaperMC/Paper@3d37b42 Couple config fixes (#7975) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index e50168c..3cf2ecb 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = e4f5e1c9ab867701eb4b3347280ad2dc099b7db0 +paperRef = 3d37b42a89db7af2dd367861fa66c28b9e4aae97 org.gradle.caching=true org.gradle.parallel=true From dbd237b3ae38401adc224ce788c62fb501103e7e Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 02:38:11 -0400 Subject: [PATCH 30/44] SoundEvent API fixes Brings the new override functions inline with the existing recipients override function --- patches/api/0002-Add-SoundEvent.patch | 28 ++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/patches/api/0002-Add-SoundEvent.patch b/patches/api/0002-Add-SoundEvent.patch index 9fc1bac..e5d0d2b 100644 --- a/patches/api/0002-Add-SoundEvent.patch +++ b/patches/api/0002-Add-SoundEvent.patch @@ -6,10 +6,10 @@ Subject: [PATCH] Add SoundEvent diff --git a/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3540d7c38 +index 0000000000000000000000000000000000000000..2a948f2c68cff28e4e0294b065020957dc34bc37 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java -@@ -0,0 +1,380 @@ +@@ -0,0 +1,382 @@ +package gg.projecteden.parchment.event.sound; + +import gg.projecteden.parchment.OptionalHumanEntity; @@ -27,6 +27,7 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 +import java.util.ArrayList; +import java.util.List; +import java.util.Objects; ++import java.util.function.BiFunction; +import java.util.function.Function; + +/** @@ -59,8 +60,8 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + private @NotNull Emitter emitter; + private boolean cancelled; + private long seed; -+ private @Nullable Function<@NotNull Player, @Nullable Sound> soundOverrideFunction; -+ private @Nullable Function<@NotNull Player, @Nullable Emitter> emitterOverrideFunction; ++ private @Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Sound> soundOverrideFunction; ++ private @Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Emitter> emitterOverrideFunction; + + public SoundEvent(@Nullable HumanEntity except, @NotNull Sound sound, @NotNull Emitter emitter, long seed, @Nullable Function distanceFunction, @Nullable Function> recipientsFunction) { + super(true); @@ -237,17 +238,17 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + * + * @return sound override function (or {@code null} if not overridden) + */ -+ public @Nullable Function<@NotNull Player, @Nullable Sound> getSoundOverrideFunction() { ++ public @Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Sound> getSoundOverrideFunction() { + return soundOverrideFunction; + } + + /** + * Sets the function that overrides what {@link Sound} is sent to a {@link Player}. + * -+ * @param soundOverrideFunction function which accepts a player and returns a sound -+ * (or {@code null} if the default sound should be used) ++ * @param soundOverrideFunction function which accepts a sound event and a player and returns ++ * a sound (or {@code null} if the default sound should be used) + */ -+ public void setSoundOverrideFunction(@Nullable Function<@NotNull Player, @Nullable Sound> soundOverrideFunction) { ++ public void setSoundOverrideFunction(@Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Sound> soundOverrideFunction) { + this.soundOverrideFunction = soundOverrideFunction; + } + @@ -260,7 +261,7 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + public @NotNull Sound calculateSound(@NotNull Player player) { + if (soundOverrideFunction != null) { + try { -+ Sound override = soundOverrideFunction.apply(player); ++ Sound override = soundOverrideFunction.apply(this, player); + if (override != null) { + return override; + } @@ -277,7 +278,7 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + * + * @return emitter override function (or {@code null} if not overridden) + */ -+ public @Nullable Function<@NotNull Player, @Nullable Emitter> getEmitterOverrideFunction() { ++ public @Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Emitter> getEmitterOverrideFunction() { + return emitterOverrideFunction; + } + @@ -285,10 +286,11 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + * Sets the function that overrides what {@link Emitter} is used when playing this sound to a + * {@link Player}. + * -+ * @param emitterOverrideFunction function which accepts a player and returns an emitter ++ * @param emitterOverrideFunction function which accepts a sound event and a player and returns ++ * an emitter + * (or {@code null} if the default emitter should be used) + */ -+ public void setEmitterOverrideFunction(@Nullable Function<@NotNull Player, @Nullable Emitter> emitterOverrideFunction) { ++ public void setEmitterOverrideFunction(@Nullable BiFunction<@NotNull SoundEvent, @NotNull Player, @Nullable Emitter> emitterOverrideFunction) { + this.emitterOverrideFunction = emitterOverrideFunction; + } + @@ -301,7 +303,7 @@ index 0000000000000000000000000000000000000000..427161356c432b5dc5d69a53801c1cd3 + public @NotNull Emitter calculateEmitter(@NotNull Player player) { + if (emitterOverrideFunction != null) { + try { -+ Emitter override = emitterOverrideFunction.apply(player); ++ Emitter override = emitterOverrideFunction.apply(this, player); + if (override != null) { + return override; + } From 6333cb1ffca9482a133d0e067be6d83b42bdba8d Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 11:31:37 -0400 Subject: [PATCH 31/44] remove outdated todo --- patches/api/0002-Add-SoundEvent.patch | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/patches/api/0002-Add-SoundEvent.patch b/patches/api/0002-Add-SoundEvent.patch index e5d0d2b..aa8b4de 100644 --- a/patches/api/0002-Add-SoundEvent.patch +++ b/patches/api/0002-Add-SoundEvent.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Add SoundEvent diff --git a/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java new file mode 100644 -index 0000000000000000000000000000000000000000..2a948f2c68cff28e4e0294b065020957dc34bc37 +index 0000000000000000000000000000000000000000..e612cecc89b060a9c0fc882754e45c0409febb9d --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/event/sound/SoundEvent.java @@ -0,0 +1,382 @@ @@ -55,7 +55,7 @@ index 0000000000000000000000000000000000000000..2a948f2c68cff28e4e0294b065020957 + + private @Nullable HumanEntity except; + private @NotNull Function<@NotNull Sound, @NotNull Double> distanceFunction; -+ private @NotNull Function<@NotNull SoundEvent, @NotNull List<@NotNull Player>> recipientsFunction; // TODO replace with Player -> Nullable Sound function ? ++ private @NotNull Function<@NotNull SoundEvent, @NotNull List<@NotNull Player>> recipientsFunction; + private @NotNull Sound sound; + private @NotNull Emitter emitter; + private boolean cancelled; From e72d7d46f138275db187c509cb6eef969dc9bc1f Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 11:31:55 -0400 Subject: [PATCH 32/44] update gradlew --- gradle/wrapper/gradle-wrapper.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 2e6e589..aa991fc 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.3.3-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.4.2-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists From 8f29c13359bea73efce88e0526fb2dcc7ed0203e Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 11:40:32 -0400 Subject: [PATCH 33/44] fix SoundEvent being called in wrong thread --- patches/server/0003-Add-SoundEvent.patch | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index dc620a8..e559bf6 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -210,7 +210,7 @@ index 6a0a1731fd6804eb69d3641213712d31bce085b2..81819d12e0becde85b6d66f3b3ffedde } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 1d8ec0f85ec42f2dcd9405df83b526ae1c59de6f..1547cd54b805e46ebcf8d7a910533f29537c2c55 100644 +index 1d8ec0f85ec42f2dcd9405df83b526ae1c59de6f..5204590757f5f0890f72e915d30a8c52497090a3 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -2,7 +2,6 @@ package org.bukkit.craftbukkit.event; @@ -259,9 +259,9 @@ index 1d8ec0f85ec42f2dcd9405df83b526ae1c59de6f..1547cd54b805e46ebcf8d7a910533f29 + + public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event) { + org.apache.commons.lang3.Validate.notNull(event, "event"); -+ if (!event.callEvent()) -+ return; + net.minecraft.server.MCUtil.asyncExecutor.execute(() -> { ++ if (!event.callEvent()) ++ return; + try { + for (Player _player : event.calculateRecipients()) { + CraftPlayer player = (CraftPlayer) _player; From feae8704daef207dd680c0049d9de921062e78df Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 11:42:11 -0400 Subject: [PATCH 34/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@1654175 [ci skip] Update performance problem issue template to account for new config formats (#7967) PaperMC/Paper@b844286 Fix command signs patch update (#7976) PaperMC/Paper@cb410bb [ci skip] Update CONTRIBUTING.md for config changes (#7977) PaperMC/Paper@48f7a1a Add WardenAngerChangeEvent (#7943) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 3cf2ecb..eaa67ef 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = 3d37b42a89db7af2dd367861fa66c28b9e4aae97 +paperRef = 48f7a1a9ef14511efb341c145c664a5a47f1f595 org.gradle.caching=true org.gradle.parallel=true From 26abf19533ae6bcae00015f20b03047a958cac35 Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 12:49:45 -0400 Subject: [PATCH 35/44] update eden-api --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 741ec55..9c05917 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,7 +50,7 @@ subprojects { } dependencies { - implementation("gg.projecteden:eden-common:2.0.6-SNAPSHOT") + implementation("gg.projecteden:eden-common:2.0.9-SNAPSHOT") } } From 8ec8cba8370d24904e79181504b9d090b5da5781 Mon Sep 17 00:00:00 2001 From: GriffinCodes Date: Tue, 14 Jun 2022 20:17:31 -0500 Subject: [PATCH 36/44] Bump eden-api --- build.gradle.kts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9c05917..1580533 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,7 +50,7 @@ subprojects { } dependencies { - implementation("gg.projecteden:eden-common:2.0.9-SNAPSHOT") + implementation("gg.projecteden:eden-common:2.0.12-SNAPSHOT") } } From a39df4e450904f5c170c72761cd01c842d5eac57 Mon Sep 17 00:00:00 2001 From: Lexi Date: Tue, 14 Jun 2022 23:08:02 -0400 Subject: [PATCH 37/44] update eden-api --- build.gradle.kts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/build.gradle.kts b/build.gradle.kts index 9c05917..de41471 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,3 +1,4 @@ +import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar import io.papermc.paperweight.util.constants.* plugins { @@ -50,7 +51,7 @@ subprojects { } dependencies { - implementation("gg.projecteden:eden-common:2.0.9-SNAPSHOT") + implementation("gg.projecteden:eden-interfaces:2.0.13-SNAPSHOT") } } From c9e7de5dafa23b0e874d355277c5acfd00f02f9d Mon Sep 17 00:00:00 2001 From: GriffinCodes Date: Thu, 16 Jun 2022 11:00:43 -0500 Subject: [PATCH 38/44] Repackage --- build.gradle.kts | 2 +- patches/api/0001-Add-Getter-interfaces.patch | 32 ++++++++++---------- 2 files changed, 17 insertions(+), 17 deletions(-) diff --git a/build.gradle.kts b/build.gradle.kts index e679d7a..4239885 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -50,7 +50,7 @@ subprojects { } dependencies { - implementation("gg.projecteden:eden-interfaces:2.0.13-SNAPSHOT") + implementation("gg.projecteden:eden-interfaces:2.1.0-SNAPSHOT") } } diff --git a/patches/api/0001-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch index 5b2cc47..fa50da8 100644 --- a/patches/api/0001-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -60,7 +60,7 @@ index abeb24fccda2acfdb0dfdadacb8fe688bd97cf78..890069604ca78a9a3f3b4c5f40969a45 private boolean cancelled = false; @NotNull private final Location location; diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..6aac09818b847ca6b25514a109f9b0e902840167 100644 +index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..b0cc7665e6591c71b7cd4388d028a5f8abd65e64 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java @@ -20,7 +20,7 @@ import java.util.UUID; @@ -68,12 +68,12 @@ index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..6aac09818b847ca6b25514a109f9b0e9 *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ -public class PlayerHandshakeEvent extends Event implements Cancellable { -+public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.interfaces.OptionalUniqueId { // Parchment ++public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment private static final HandlerList HANDLERS = new HandlerList(); @NotNull private final String originalHandshake; diff --git a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java -index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..d09aecb0b45f2ccf9badd308ef3e472ba36893a1 100644 +index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..33550df23fea251368b16dbebad27bdcb1de2e78 100644 --- a/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/profile/PreLookupProfileEvent.java @@ -23,7 +23,7 @@ import org.jetbrains.annotations.Nullable; @@ -81,7 +81,7 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..d09aecb0b45f2ccf9badd308ef3e472b * event.isAsync() */ -public class PreLookupProfileEvent extends Event { -+public class PreLookupProfileEvent extends Event implements gg.projecteden.interfaces.OptionalUniqueId { // Parchment ++public class PreLookupProfileEvent extends Event implements gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); @NotNull private final String name; @@ -312,7 +312,7 @@ index 0000000000000000000000000000000000000000..31b9ab6512c9f06160c268e88d5bce48 +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..5283df238c09c3fa2dda1ac41db1ea93580517a2 +index 0000000000000000000000000000000000000000..7c32d6cfc1c3f284701a147cfd4a7397d5415420 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java @@ -0,0 +1,189 @@ @@ -340,7 +340,7 @@ index 0000000000000000000000000000000000000000..5283df238c09c3fa2dda1ac41db1ea93 + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. + * @see gg.projecteden.parchment.PlayerLike + */ -+public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { ++public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.api.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { + /** + * Gets the identity associated with this object + * @@ -646,7 +646,7 @@ index 209a302c3a2ed333780ed760314a6ed352fc0767..9d29f1c5af56954bc452fa251d6bc021 private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index d124768378d6f0c5573f28ee815ea3886fe74868..e790878186b64422dc4a3f52f4c7611441c82589 100644 +index d124768378d6f0c5573f28ee815ea3886fe74868..11a00998b1cb5ee582e225553f15b1b7c1a65b2a 100644 --- a/src/main/java/org/bukkit/attribute/AttributeModifier.java +++ b/src/main/java/org/bukkit/attribute/AttributeModifier.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.Nullable; @@ -654,7 +654,7 @@ index d124768378d6f0c5573f28ee815ea3886fe74868..e790878186b64422dc4a3f52f4c76114 * Concrete implementation of an attribute modifier. */ -public class AttributeModifier implements ConfigurationSerializable { -+public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.interfaces.HasUniqueId { // Parchment ++public class AttributeModifier implements ConfigurationSerializable, gg.projecteden.api.interfaces.HasUniqueId { // Parchment private final UUID uuid; private final String name; @@ -698,7 +698,7 @@ index a39d2f1acbbd84ae0e2cf29f85594e09e55e9355..4348b8961afe7a57350856622aff8c98 public DoubleChest(@NotNull DoubleChestInventory chest) { diff --git a/src/main/java/org/bukkit/entity/AnimalTamer.java b/src/main/java/org/bukkit/entity/AnimalTamer.java -index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..6daf17848951eff23186583a7b4af4de2f88d129 100644 +index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..8f4a293c131cb8b63c31b410ffa211bdb42b3338 100644 --- a/src/main/java/org/bukkit/entity/AnimalTamer.java +++ b/src/main/java/org/bukkit/entity/AnimalTamer.java @@ -4,7 +4,7 @@ import java.util.UUID; @@ -706,12 +706,12 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..6daf17848951eff23186583a7b4af4de import org.jetbrains.annotations.Nullable; -public interface AnimalTamer { -+public interface AnimalTamer extends gg.projecteden.interfaces.HasUniqueId { // Parchment ++public interface AnimalTamer extends gg.projecteden.api.interfaces.HasUniqueId { // Parchment /** * This is the name of the specified AnimalTamer. diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index 8bc6876c82935988436597161fa0ec94c032174b..ffd5fbc3e14be5439f1334c567b573c31528863c 100644 +index 8bc6876c82935988436597161fa0ec94c032174b..b27576e9c7f22e203251487334288239be0dcb9e 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -26,7 +26,7 @@ import org.jetbrains.annotations.Nullable; @@ -719,7 +719,7 @@ index 8bc6876c82935988436597161fa0ec94c032174b..ffd5fbc3e14be5439f1334c567b573c3 * Represents a base entity in the world */ -public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter { // Paper -+public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.interfaces.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment ++public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource, net.kyori.adventure.sound.Sound.Emitter, gg.projecteden.api.interfaces.HasUniqueId, gg.projecteden.parchment.HasLocation { // Paper // Parchment /** * Gets the entity's current position @@ -1044,7 +1044,7 @@ index 9013d043503d175004ad276799e5935b7fa59dc4..4095ca19e6ceff2432e0cbd372e9475f private boolean cancelled; diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index 635b8787fc235b61c0d5677def034656e4ec4cef..2270ecbf5189ab42aac357534896c89bbc871a97 100644 +index 635b8787fc235b61c0d5677def034656e4ec4cef..6f15f4adfa552e2f5960464663ee126282086bb1 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java @@ -14,7 +14,7 @@ import org.jetbrains.annotations.NotNull; @@ -1052,7 +1052,7 @@ index 635b8787fc235b61c0d5677def034656e4ec4cef..2270ecbf5189ab42aac357534896c89b * This event is asynchronous, and not run using main thread. */ -public class AsyncPlayerPreLoginEvent extends Event { -+public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.interfaces.HasUniqueId { // Parchment ++public class AsyncPlayerPreLoginEvent extends Event implements gg.projecteden.api.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper @@ -1070,7 +1070,7 @@ index f6d3b817de3001f04ea4554c7c39a1290af3fd6d..44efb5cc62149b34b994eadac488a902 public PlayerEvent(@NotNull final Player who) { diff --git a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java -index 6800132c6288b4588fd02b08d26f016c38f27129..f1a707adfe190090e2fa8cd0f497fb470959172f 100644 +index 6800132c6288b4588fd02b08d26f016c38f27129..8e333a361cdee30a83e9472285dfb0b30b2e72ca 100644 --- a/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/PlayerPreLoginEvent.java @@ -16,7 +16,7 @@ import org.jetbrains.annotations.NotNull; @@ -1078,7 +1078,7 @@ index 6800132c6288b4588fd02b08d26f016c38f27129..f1a707adfe190090e2fa8cd0f497fb47 @Deprecated @Warning(reason = "This event causes a login thread to synchronize with the main thread") -public class PlayerPreLoginEvent extends Event { -+public class PlayerPreLoginEvent extends Event implements gg.projecteden.interfaces.HasUniqueId { // Parchment ++public class PlayerPreLoginEvent extends Event implements gg.projecteden.api.interfaces.HasUniqueId { // Parchment private static final HandlerList handlers = new HandlerList(); private Result result; private net.kyori.adventure.text.Component message; // Paper From cf3ebd68d41e9545952e6374d674b794dfb7e026 Mon Sep 17 00:00:00 2001 From: Lexi Date: Thu, 16 Jun 2022 12:56:45 -0400 Subject: [PATCH 39/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@e3042d2 Fix the growth modifier for glowberries (#7986) PaperMC/Paper@805423c Add ARMOR tag to MaterialTags (1.19) (#7987) PaperMC/Paper@4a48ed3 Add option for strict advancement dimension checks (#7954) PaperMC/Paper@17c1c6c Add missing important BlockStateListPopulator methods (#7952) PaperMC/Paper@94ef34c Fix incorrect ansi code being used for bold (#8000) PaperMC/Paper@2dcfb2b Nameable Banner API (#7711) --- gradle.properties | 2 +- patches/server/0003-Add-SoundEvent.patch | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index eaa67ef..c8f2c1d 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = 48f7a1a9ef14511efb341c145c664a5a47f1f595 +paperRef = 2dcfb2b11fb0ef9807d01c81e891d90b74ba4750 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index e559bf6..6b7b428 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -123,10 +123,10 @@ index 0dc7a827aeacc7fae53b1f975f45883da7db6a0c..782be663520c27fccb58484ec56cc94d @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index c8057f98e16ba6e19640e0b250e5201e0f4f57db..f2048fe46e0231e877d4e61f30387406fef82d51 100644 +index 353463084d90eb684717e65c56da52cd25a1e375..e7fb384822966c149777148792723f7f36681f76 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2221,7 +2221,19 @@ public class ServerPlayer extends Player { +@@ -2227,7 +2227,19 @@ public class ServerPlayer extends Player { @Override public void playNotifySound(SoundEvent event, SoundSource category, float volume, float pitch) { From e6fb86fc9bb7927a51b46807b6e8fb6dada2c294 Mon Sep 17 00:00:00 2001 From: Lexi Date: Fri, 17 Jun 2022 03:53:16 -0400 Subject: [PATCH 40/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@0c1643c Fix MC-252439 (#7994) PaperMC/Paper@0ae78d3 Fix advancement saving before reloads (#8003) PaperMC/Paper@f428887 Prevent empty items from being added to world (#7998) PaperMC/Paper@dd61319 Couple fixes for command blocks (#8004) PaperMC/Paper@d1b1c6f Add missing deprecation to AdvancementDisplayType (#7876) PaperMC/Paper@81f2eec [ci skip] rebuild patches PaperMC/Paper@e269a0a Fix incorrect random nextLong to nextInt (#8009) PaperMC/Paper@b77fe3a Temp: Disable javadoc.io for now --- gradle.properties | 2 +- patches/server/0003-Add-SoundEvent.patch | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/gradle.properties b/gradle.properties index c8f2c1d..9f0a87f 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = 2dcfb2b11fb0ef9807d01c81e891d90b74ba4750 +paperRef = b77fe3a42b270bb6da2afdef1657968b3b4dcab4 org.gradle.caching=true org.gradle.parallel=true diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index 6b7b428..ace68e2 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -76,10 +76,10 @@ index 3f25a9b1a74cfa0c9a4d0379ecda109d99f33db3..b954cda43afbfd367f7f8f436dca65f9 public static @Nullable BinaryTagHolder asBinaryTagHolder(final @Nullable CompoundTag tag) { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 0dc7a827aeacc7fae53b1f975f45883da7db6a0c..782be663520c27fccb58484ec56cc94def38f136 100644 +index 2b9669df574cf95c2643344a66ad18b213bd9cd7..ce354a3bd5deea844f86c89d555b438c50de31b8 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1540,12 +1540,40 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1541,12 +1541,40 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void playSeededSound(@Nullable Player except, double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch, long seed) { From 411fb52ab5c56933ea2f69a03bdd772daf603233 Mon Sep 17 00:00:00 2001 From: Lexi Date: Fri, 17 Jun 2022 14:36:59 -0400 Subject: [PATCH 41/44] Add config for ticking TIME_SINCE_REST --- ...d-config-for-ticking-TIME_SINCE_REST.patch | 31 +++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 patches/server/0014-Add-config-for-ticking-TIME_SINCE_REST.patch diff --git a/patches/server/0014-Add-config-for-ticking-TIME_SINCE_REST.patch b/patches/server/0014-Add-config-for-ticking-TIME_SINCE_REST.patch new file mode 100644 index 0000000..4902236 --- /dev/null +++ b/patches/server/0014-Add-config-for-ticking-TIME_SINCE_REST.patch @@ -0,0 +1,31 @@ +From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 +From: Lexi +Date: Fri, 17 Jun 2022 14:36:42 -0400 +Subject: [PATCH] Add config for ticking TIME_SINCE_REST + + +diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +index 32f0cd29d1198fe320d10ccfe0b02f8632ac12aa..7154ca5d729f44a7cbd0d47f23c10f44c0aef6b3 100644 +--- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java ++++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +@@ -252,6 +252,7 @@ public class WorldConfiguration extends ConfigurationPart { + } + + public boolean disablePlayerCrits = false; ++ public boolean tickTimeSinceSleep = true; // Parchment + public boolean nerfPigmenFromNetherPortals = false; + public PillagerPatrols pillagerPatrols; + +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 05584d344c9f7d6d89bb8fbdfa254c1dca91b590..aea543059600f093b96df985468a61da048acdb6 100644 +--- a/src/main/java/net/minecraft/world/entity/player/Player.java ++++ b/src/main/java/net/minecraft/world/entity/player/Player.java +@@ -293,7 +293,7 @@ public abstract class Player extends LivingEntity { + this.awardStat(Stats.CROUCH_TIME); + } + +- if (!this.isSleeping()) { ++ if (!this.isSleeping() && this.level.paperConfig().entities.behavior.tickTimeSinceSleep) { // Parchment + this.awardStat(Stats.TIME_SINCE_REST); + } + } From d119c6de625db1679f6aca25fdde7166a4563540 Mon Sep 17 00:00:00 2001 From: Lexi Date: Sat, 18 Jun 2022 02:17:22 -0400 Subject: [PATCH 42/44] Refactor OptionalPlayerLike See comments from https://github.com/ProjectEdenGG/Nexus/commit/e71cc8588d50f98ca81d25611d5bf4e52ffdecf0 --- patches/api/0001-Add-Getter-interfaces.patch | 171 ++----------------- 1 file changed, 16 insertions(+), 155 deletions(-) diff --git a/patches/api/0001-Add-Getter-interfaces.patch b/patches/api/0001-Add-Getter-interfaces.patch index fa50da8..09f1cca 100644 --- a/patches/api/0001-Add-Getter-interfaces.patch +++ b/patches/api/0001-Add-Getter-interfaces.patch @@ -312,35 +312,28 @@ index 0000000000000000000000000000000000000000..31b9ab6512c9f06160c268e88d5bce48 +} diff --git a/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..7c32d6cfc1c3f284701a147cfd4a7397d5415420 +index 0000000000000000000000000000000000000000..4b2fa7abc6ce8f7e21e137d3cafab1ab2ac192a2 --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/OptionalPlayerLike.java -@@ -0,0 +1,189 @@ +@@ -0,0 +1,48 @@ +package gg.projecteden.parchment; + +import net.kyori.adventure.audience.Audience; -+import net.kyori.adventure.audience.MessageType; -+import net.kyori.adventure.bossbar.BossBar; ++import net.kyori.adventure.audience.ForwardingAudience; +import net.kyori.adventure.identity.Identified; +import net.kyori.adventure.identity.Identity; -+import net.kyori.adventure.inventory.Book; -+import net.kyori.adventure.sound.Sound; -+import net.kyori.adventure.sound.SoundStop; -+import net.kyori.adventure.text.Component; -+import net.kyori.adventure.title.Title; -+import org.apache.commons.lang3.Validate; +import org.bukkit.Location; +import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; +import org.jetbrains.annotations.Nullable; + -+import java.util.function.Consumer; ++import java.util.Objects; + +/** + * Class that may be like a {@link org.bukkit.entity.Player} in that it has a {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, {@link Identity}, and a nullable Player. + * @see gg.projecteden.parchment.PlayerLike + */ -+public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.api.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, Audience { ++public interface OptionalPlayerLike extends OptionalPlayer, gg.projecteden.api.interfaces.HasUniqueId, HasOfflinePlayer, OptionalLocation, Identified, ForwardingAudience.Single { + /** + * Gets the identity associated with this object + * @@ -360,143 +353,9 @@ index 0000000000000000000000000000000000000000..7c32d6cfc1c3f284701a147cfd4a7397 + return getPlayer() != null; + } + -+ /** -+ * Run a consumer with the {@link Player} associated with this object if the player is online. -+ *

-+ * Allows easily running a code on the player only if they are connected. -+ * -+ * @param consumer function that accepts a Player -+ */ -+ default void consumeIfOnline(final @NotNull Consumer<@NotNull Player> consumer) { -+ Validate.notNull(consumer, "Consumer should not be null"); -+ -+ final Player player = getPlayer(); -+ if (player != null) -+ consumer.accept(player); -+ } -+ -+ /** -+ * Sends a chat message. -+ * -+ * @param source the identity of the source of the message -+ * @param message a message -+ * @param type the type -+ */ + @Override -+ default void sendMessage(final @NotNull Identity source, final @NotNull Component message, final @NotNull MessageType type) { -+ consumeIfOnline(player -> player.sendMessage(source, message, type)); -+ } -+ -+ /** -+ * Sends a message on the action bar. -+ * -+ * @param message a message -+ */ -+ @Override -+ default void sendActionBar(final @NotNull Component message) { -+ consumeIfOnline(player -> player.sendActionBar(message)); -+ } -+ -+ /** -+ * Sends the player list header and footer. -+ * -+ * @param header the header -+ * @param footer the footer -+ */ -+ @Override -+ default void sendPlayerListHeaderAndFooter(final @NotNull Component header, final @NotNull Component footer) { -+ consumeIfOnline(player -> player.sendPlayerListHeaderAndFooter(header, footer)); -+ } -+ -+ /** -+ * Shows a title. -+ * -+ * @param title a title -+ */ -+ @Override -+ default void showTitle(final @NotNull Title title) { -+ consumeIfOnline(player -> player.showTitle(title)); -+ } -+ -+ /** -+ * Clears the title, if one is being displayed. -+ */ -+ @Override -+ default void clearTitle() { -+ consumeIfOnline(Audience::clearTitle); -+ } -+ -+ /** -+ * Resets the title and timings back to their default. -+ */ -+ @Override -+ default void resetTitle() { -+ consumeIfOnline(Audience::resetTitle); -+ } -+ -+ /** -+ * Shows a boss bar. -+ * -+ * @param bar a boss bar -+ */ -+ @Override -+ default void showBossBar(final @NotNull BossBar bar) { -+ consumeIfOnline(player -> player.showBossBar(bar)); -+ } -+ -+ /** -+ * Hides a boss bar. -+ * -+ * @param bar a boss bar -+ */ -+ @Override -+ default void hideBossBar(final @NotNull BossBar bar) { -+ consumeIfOnline(player -> player.hideBossBar(bar)); -+ } -+ -+ /** -+ * Plays a sound. -+ * -+ * @param sound a sound -+ */ -+ @Override -+ default void playSound(final @NotNull Sound sound) { -+ consumeIfOnline(player -> player.playSound(sound)); -+ } -+ -+ /** -+ * Plays a sound at a location. -+ * -+ * @param sound a sound -+ * @param x x coordinate -+ * @param y y coordinate -+ * @param z z coordinate -+ */ -+ @Override -+ default void playSound(final @NotNull Sound sound, final double x, final double y, final double z) { -+ consumeIfOnline(player -> player.playSound(sound, x, y, z)); -+ } -+ -+ /** -+ * Stops a sound, or many sounds. -+ * -+ * @param stop a sound stop -+ */ -+ @Override -+ default void stopSound(final @NotNull SoundStop stop) { -+ consumeIfOnline(player -> player.stopSound(stop)); -+ } -+ -+ /** -+ * Opens a book. -+ * -+ *

When possible, no item should persist after closing the book.

-+ * -+ * @param book a book -+ */ -+ @Override -+ default void openBook(final @NotNull Book book) { -+ consumeIfOnline(player -> player.openBook(book)); ++ default @NotNull Audience audience() { ++ return Objects.requireNonNullElse(getPlayer(), Audience.empty()); + } + + @Override @@ -507,26 +366,28 @@ index 0000000000000000000000000000000000000000..7c32d6cfc1c3f284701a147cfd4a7397 +} diff --git a/src/main/java/gg/projecteden/parchment/PlayerLike.java b/src/main/java/gg/projecteden/parchment/PlayerLike.java new file mode 100644 -index 0000000000000000000000000000000000000000..dd5840ab1fe9375e83a3a30563ae59620171d3d3 +index 0000000000000000000000000000000000000000..c70ddc6f92d62d2d5baa001c9009ddd30c31ae5d --- /dev/null +++ b/src/main/java/gg/projecteden/parchment/PlayerLike.java -@@ -0,0 +1,28 @@ +@@ -0,0 +1,30 @@ +package gg.projecteden.parchment; + ++import net.kyori.adventure.audience.Audience; +import org.bukkit.Location; -+import org.bukkit.entity.Player; +import org.jetbrains.annotations.NotNull; + -+import java.util.function.Consumer; -+ +/** + * Class that is like a {@link org.bukkit.entity.Player} in that it has a Player, {@link java.util.UUID}, {@link org.bukkit.OfflinePlayer}, and an {@link net.kyori.adventure.identity.Identity}. + * @see gg.projecteden.parchment.OptionalPlayerLike + */ +public interface PlayerLike extends HasPlayer, HasLocation, OptionalPlayerLike { ++ ++ // reduce nullability checks by re-implementing the methods from OptionalPlayerLike ++ // (but without the null checks) ++ + @Override -+ default void consumeIfOnline(final @NotNull Consumer<@NotNull Player> consumer) { -+ consumer.accept(getPlayer()); ++ default @NotNull Audience audience() { ++ return getPlayer(); + } + + @Override From 53a63fd498ee366d723ea846bdc07c62d57b935b Mon Sep 17 00:00:00 2001 From: Lexi Date: Sat, 18 Jun 2022 02:19:42 -0400 Subject: [PATCH 43/44] Updated Upstream (Paper) Upstream has released updates that appear to apply and compile correctly Paper Changes: PaperMC/Paper@7688112 restore jd.io PaperMC/Paper@b0eb4e0 Fix number parsing (#8013) --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 9f0a87f..ac14fff 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = b77fe3a42b270bb6da2afdef1657968b3b4dcab4 +paperRef = b0eb4e0c7497836bf4fd8a1bfabb822ff2f1c24f org.gradle.caching=true org.gradle.parallel=true From 2b756651a8d33e14b676eb9f00d22b10663ee23e Mon Sep 17 00:00:00 2001 From: GriffinCodes Date: Mon, 20 Jun 2022 09:11:24 -0500 Subject: [PATCH 44/44] Update upstream --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index ac14fff..f013a30 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,7 +2,7 @@ group = gg.projecteden.parchment version = 1.19-R0.1-SNAPSHOT mcVersion = 1.19 -paperRef = b0eb4e0c7497836bf4fd8a1bfabb822ff2f1c24f +paperRef = ed9cf5ca087991f38d9926665f268dece213a1e6 org.gradle.caching=true org.gradle.parallel=true