Initial 1.18.1 update

This commit is contained in:
lexikiq
2021-12-26 21:42:55 -05:00
parent 684ee059ea
commit 8bb5b1f601
28 changed files with 368 additions and 394 deletions

View File

@@ -9,7 +9,7 @@ jobs:
strategy:
matrix:
java: [16]
java: [17]
fail-fast: true
steps:

View File

@@ -9,7 +9,7 @@ jobs:
strategy:
matrix:
java: [16]
java: [17]
fail-fast: true
steps:

View File

@@ -1,4 +1,4 @@
package me.lexikiq;
package gg.projecteden.common;
import org.jetbrains.annotations.NotNull;

View File

@@ -1,4 +1,4 @@
package me.lexikiq;
package gg.projecteden.common;
import org.jetbrains.annotations.Nullable;

View File

@@ -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<JavaCompile>().configureEach {
options.encoding = Charsets.UTF_8.name()
options.release.set(16)
options.release.set(17)
}
tasks.withType<Javadoc> {
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(

View File

@@ -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

View File

@@ -1,18 +1,18 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: lexikiq <noellekiq@gmail.com>
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")

View File

@@ -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
* <p>WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS</p>
*/
-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> 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.text.event.HoverEvent.ShowEntity>, net.kyori.adventure.sound.Sound.Emitter { // Paper
+public interface Entity extends Metadatable, CommandSender, Nameable, PersistentDataHolder, net.kyori.adventure.text.event.HoverEventSource<net.kyori.adventure.text.event.HoverEvent.ShowEntity>, 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.text.event.HoverEvent.ShowEntity>, 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
* </ul>
*/
-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<ItemStack> {
+public interface Inventory extends Iterable<ItemStack>, me.lexikiq.OptionalLocation { // Parchment
+public interface Inventory extends Iterable<ItemStack>, 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;

View File

@@ -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;

View File

@@ -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;

View File

@@ -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
}

View File

@@ -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<Boolean> 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<Boolean> 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
}

View File

@@ -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<Boolean> 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<Boolean> 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.

View File

@@ -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

View File

@@ -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;

View File

@@ -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.
+ * <p>
+ * 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
+
/**

View File

@@ -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<MavenPublication>("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<JavaExec> = register<JavaExec>(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<TickTa
@@ -1709,7 +1709,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
@DontObfuscate
public String getServerModName() {
@@ -124,10 +115,10 @@ index 5a4172faaf960d48939d6a485719041987df9242..9e73372f15b42a59fb9083e3210e6748
public SystemReport fillSystemReport(SystemReport details) {
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftServer.java b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
index 99a94898316b0601f55b333c15a9926eae24f8a2..8890fe4c8d11934328e20087ecadb76858d9e028 100644
index ba7023e7ca5d29375ff53c2951892138d155f69f..930772d4326aa106f9a267bc750eda11ca0ea355 100644
--- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java
+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java
@@ -251,7 +251,7 @@ import javax.annotation.Nullable; // Paper
@@ -254,7 +254,7 @@ import javax.annotation.Nullable; // Paper
import javax.annotation.Nonnull; // Paper
public final class CraftServer implements Server {
@@ -137,7 +128,7 @@ index 99a94898316b0601f55b333c15a9926eae24f8a2..8890fe4c8d11934328e20087ecadb768
private final String bukkitVersion = Versioning.getBukkitVersion();
private final Logger logger = Logger.getLogger("Minecraft");
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
index 22e9dd17f62103c5061435099ce96a3d70d54808..3344a9f976c0eaf88c62831ed8ec4952b400cca1 100644
index 55bae3efbc630be6d40d415509de4c3e744a5004..c605f411cddfb9d952f26baf9094ac34527c985e 100644
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
@@ -269,7 +269,7 @@ public class Main {
@@ -150,7 +141,7 @@ index 22e9dd17f62103c5061435099ce96a3d70d54808..3344a9f976c0eaf88c62831ed8ec4952
//Thread.sleep(TimeUnit.SECONDS.toMillis(20));
// Paper End
diff --git a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
index 774556a62eb240da42e84db4502e2ed43495be17..fbba763d909c4636174e79c680745b83c41409bb 100644
index 774556a62eb240da42e84db4502e2ed43495be17..6f1b3fa6ebeabc7596034663ed06686fd3892267 100644
--- a/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
+++ b/src/main/java/org/bukkit/craftbukkit/util/Versioning.java
@@ -11,7 +11,7 @@ public final class Versioning {
@@ -158,7 +149,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..fbba763d909c4636174e79c680745b83
String result = "Unknown-Version";
- InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/io.papermc.paper/paper-api/pom.properties");
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/me.lexikiq/parchment-api/pom.properties");
+ InputStream stream = Bukkit.class.getClassLoader().getResourceAsStream("META-INF/maven/gg.projecteden.parchment/parchment-api/pom.properties");
Properties properties = new Properties();
if (stream != null) {

View File

@@ -5,7 +5,7 @@ Subject: [PATCH] Temporary Access Transformers
diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java
index 8e6df16568c0dab482e10ad1b38920d77f6e684f..dbcf8a2138c55aa1ef32bbad92fb555f2acc79cd 100644
index 8175bb6331727440da2232998bdad068a1c47ae8..01b9b3cdb4d9d3b32d6c7d39e09dc7594a2d97ce 100644
--- a/src/main/java/net/minecraft/world/item/BlockItem.java
+++ b/src/main/java/net/minecraft/world/item/BlockItem.java
@@ -191,7 +191,7 @@ public class BlockItem extends Item {
@@ -15,5 +15,5 @@ index 8e6df16568c0dab482e10ad1b38920d77f6e684f..dbcf8a2138c55aa1ef32bbad92fb555f
- protected boolean canPlace(BlockPlaceContext context, BlockState state) {
+ public boolean canPlace(BlockPlaceContext context, BlockState state) { // Parchment
Player entityhuman = context.getPlayer();
CollisionContext voxelshapecollision = entityhuman == null ? CollisionContext.empty() : CollisionContext.of((Entity) entityhuman);
CollisionContext voxelshapecollision = entityhuman == null ? CollisionContext.empty() : CollisionContext.of(entityhuman);
// CraftBukkit start - store default return

View File

@@ -5,42 +5,42 @@ Subject: [PATCH] Add SoundEvent
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
index a62abcb2e05198001516cf2402dc7ead09761905..57743bb179ddb2c32641f45b5b1587e7cb998626 100644
index 28f605c3daa969c1a54745e552d55ecb874120a9..205b2a1c7db64cb0b23289e11d8b551a78fca5be 100644
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
@@ -1495,12 +1495,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@@ -1504,12 +1504,12 @@ public class ServerLevel extends Level implements WorldGenLevel {
@Override
public void playSound(@Nullable Player player, double x, double y, double z, SoundEvent sound, SoundSource category, float volume, float pitch) {
- this.server.getPlayerList().broadcast(player, 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 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<net.minecraft.network.protocol.game.ClientGamePacketListener> handleSoundEvent(me.lexikiq.event.sound.SoundEvent _event) {
+ private static net.minecraft.network.protocol.Packet<net.minecraft.network.protocol.game.ClientGamePacketListener> 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<net.minecraft.network.protocol.Packet<net.minecraft.network.protocol.game.ClientGamePacketListener>> soundPlayer) {
+ public static void playSoundEvent(gg.projecteden.parchment.event.sound.SoundEvent event, java.util.function.Consumer<net.minecraft.network.protocol.Packet<net.minecraft.network.protocol.game.ClientGamePacketListener>> 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<Level> 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");

View File

@@ -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 {

View File

@@ -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()) {

View File

@@ -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<Boolean> canPlaceItemOn(ItemStack item, me.lexikiq.OptionalHumanEntity player, org.bukkit.block.Block block, org.bukkit.block.BlockFace face) {
+ public java.util.concurrent.CompletableFuture<Boolean> 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");

View File

@@ -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<T extends Entity> implements EntityTypeTest<Entity, T> {
@@ -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<T extends Entity> implements EntityTypeTest<Entity, T> {
@@ -282,9 +284,31 @@ public class EntityType<T extends Entity> implements EntityTypeTest<Entity, T> {
private final EntityDimensions dimensions;
private static <T extends Entity> EntityType<T> 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<T>) 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<T>) 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);
}

View File

@@ -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;
}

View File

@@ -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

View File

@@ -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<ItemStack> callBlockDropResourcesEvent(LevelAccessor world, BlockPos pos, List<ItemStack> 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<org.bukkit.inventory.ItemStack> 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
}

View File

@@ -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
}

View File

@@ -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() {