From 8bb5b1f601b3aab838ee903f5fd12faed592faf7 Mon Sep 17 00:00:00 2001 From: lexikiq Date: Sun, 26 Dec 2021 21:42:55 -0500 Subject: [PATCH] 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() {