From 4c2ae384010d570b803ded5087a3658f81d5f91b Mon Sep 17 00:00:00 2001 From: Blast-MC Date: Sun, 19 May 2024 16:31:52 -0400 Subject: [PATCH] 1.20.6 --- .github/workflows/pr-build.yml | 2 +- .github/workflows/push-build.yml | 4 +- build.gradle.kts | 17 +- gradle.properties | 6 +- gradle/wrapper/gradle-wrapper.properties | 2 +- patches/api/0001-Build-changes.patch | 6 +- patches/api/0002-Add-Getter-interfaces.patch | 145 +++++++++--------- ...location-to-EntityDamageByBlockEvent.patch | 31 ++-- ...0007-Add-UnsafeValues-canPlaceItemOn.patch | 17 +- .../api/0008-Expose-MCUtil-Executors.patch | 4 +- patches/api/0010-Add-Furnace-Recipe-API.patch | 4 +- ...012-Add-Player-getHiddenEntities-API.patch | 8 +- .../0014-Expanded-Insomnia-API-methods.patch | 4 +- patches/api/0015-Add-NPC-to-EntityType.patch | 12 +- .../0016-Revert-BungeeChat-Deprecation.patch | 6 +- patches/api/0020-Entity-Data-Storage.patch | 4 +- patches/server/0001-Build-changes.patch | 99 +++++------- .../0002-Temporary-Access-Transformers.patch | 14 +- patches/server/0003-Add-SoundEvent.patch | 44 +++--- ...0004-Add-PlayerUseRespawnAnchorEvent.patch | 40 ++--- ...location-to-EntityDamageByBlockEvent.patch | 34 +--- ...0006-Add-UnsafeValues-canPlaceItemOn.patch | 14 +- .../0007-Add-Player-setGameProfile.patch | 4 +- .../server/0008-Expose-MCUtil-Executors.patch | 6 +- .../0009-Add-BlockDropResourcesEvent.patch | 12 +- .../server/0010-Add-Furnace-Recipe-API.patch | 4 +- ...1-Disable-sleep-status-announcements.patch | 4 +- ...d-config-for-ticking-TIME_SINCE_REST.patch | 8 +- .../0013-Add-HangingFrame-Tick-API.patch | 6 +- ...014-Add-Player-getHiddenEntities-API.patch | 4 +- patches/server/0015-Big-Barrels.patch | 8 +- .../server/0017-Expanded-Insomnia-API.patch | 6 +- .../0018-Add-spam-bypass-permission.patch | 22 +-- .../0019-Disable-set-respawn-message.patch | 4 +- .../0020-Make-FixLight-use-action-bar.patch | 22 +-- .../0022-Add-PreEntityShootBowEvent.patch | 129 +++++++++++----- ...3-Return-Displays-in-getTargetEntity.patch | 4 +- ... => 0024-Add-CustomBlockUpdateEvent.patch} | 62 ++++---- ...ake-SynchedEntityData-packAll-Public.patch | 19 --- ...e.patch => 0025-Entity-Data-Storage.patch} | 14 +- ...y.patch => 0026-Add-Sidebar-Utility.patch} | 2 +- ...7-Add-Block-BreakNaturally-Overload.patch} | 21 +-- 42 files changed, 413 insertions(+), 465 deletions(-) rename patches/server/{0025-Add-CustomBlockUpdateEvent.patch => 0024-Add-CustomBlockUpdateEvent.patch} (75%) delete mode 100644 patches/server/0024-Make-SynchedEntityData-packAll-Public.patch rename patches/server/{0026-Entity-Data-Storage.patch => 0025-Entity-Data-Storage.patch} (85%) rename patches/server/{0027-Add-Sidebar-Utility.patch => 0026-Add-Sidebar-Utility.patch} (97%) rename patches/server/{0028-Add-Block-BreakNaturally-Overload.patch => 0027-Add-Block-BreakNaturally-Overload.patch} (90%) diff --git a/.github/workflows/pr-build.yml b/.github/workflows/pr-build.yml index fa8b747..d461e2b 100644 --- a/.github/workflows/pr-build.yml +++ b/.github/workflows/pr-build.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - java: [17] + java: [21] fail-fast: true steps: diff --git a/.github/workflows/push-build.yml b/.github/workflows/push-build.yml index 41f97ff..0004e1f 100644 --- a/.github/workflows/push-build.yml +++ b/.github/workflows/push-build.yml @@ -9,7 +9,7 @@ jobs: strategy: matrix: - java: [17] + java: [21] fail-fast: true steps: @@ -40,7 +40,7 @@ jobs: git config --global user.email "no-reply@github.com" git config --global user.name "GitHub Actions" ./gradlew applyPatches - ./gradlew createReobfPaperclipJar + ./gradlew createMojmapBundlerJar ./gradlew :parchment-api:publishMavenPublicationToEdenSnapshotsRepository ./gradlew publishDevBundlePublicationToEdenSnapshotsRepository -PpublishDevBundle diff --git a/build.gradle.kts b/build.gradle.kts index b9d8e1c..b24f6b6 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -4,19 +4,19 @@ plugins { java `maven-publish` id("com.github.johnrengelman.shadow") version "8.1.1" apply false - id("io.papermc.paperweight.patcher") version "1.5.11" + id("io.papermc.paperweight.patcher") version "1.7.1" } repositories { mavenCentral() - maven("https://papermc.io/repo/repository/maven-public/") { + maven("https://repo.papermc.io/repository/maven-public/") { content { onlyForConfigurations(PAPERCLIP_CONFIG) } } } dependencies { - remapper("net.fabricmc:tiny-remapper:0.8.10:fat") - decompiler("net.minecraftforge:forgeflower:2.0.627.2") + remapper("net.fabricmc:tiny-remapper:0.10.2:fat") + decompiler("org.vineflower:vineflower:1.10.1") paperclip("io.papermc:paperclip:3.0.3") } @@ -26,7 +26,7 @@ allprojects { java { toolchain { - languageVersion.set(JavaLanguageVersion.of(17)) + languageVersion.set(JavaLanguageVersion.of(21)) } } } @@ -34,7 +34,7 @@ allprojects { subprojects { tasks.withType { options.encoding = Charsets.UTF_8.name() - options.release.set(17) + options.release.set(21) } tasks.withType { options.encoding = Charsets.UTF_8.name() @@ -45,7 +45,7 @@ subprojects { repositories { mavenCentral() - maven("https://papermc.io/repo/repository/maven-public/") + maven("https://repo.papermc.io/repository/maven-public/") maven("https://sonatype.projecteden.gg/repository/maven-public/") } } @@ -82,12 +82,11 @@ paperweight { tasks.generateDevelopmentBundle { apiCoordinates.set("gg.projecteden.parchment:parchment-api") - mojangApiCoordinates.set("io.papermc.paper:paper-mojangapi") libraryRepositories.set( listOf( "https://repo.maven.apache.org/maven2/", "https://libraries.minecraft.net/", - "https://papermc.io/repo/repository/maven-public/", + "https://repo.papermc.io/repository/maven-public/", "https://maven.quiltmc.org/repository/release/", "https://sonatype.projecteden.gg/repository/maven-public/" ) diff --git a/gradle.properties b/gradle.properties index 02d7dc5..44e5afc 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,8 +1,8 @@ group = gg.projecteden.parchment -version = 1.20.4-R0.1-SNAPSHOT +version = 1.20.6-R0.1-SNAPSHOT -mcVersion = 1.20.4 -paperRef = 3841722fe1ed1cc48c489265967bd39bc2984dc1 +mcVersion = 1.20.6 +paperRef = 0ad09de75bfb1db2a84bb760cdee09b06d609bb3 edenVersion = 2.2.8-SNAPSHOT updatingMinecraft=true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 3499ded..20db9ad 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,6 +1,6 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/patches/api/0001-Build-changes.patch b/patches/api/0001-Build-changes.patch index dae6520..7cdbdf2 100644 --- a/patches/api/0001-Build-changes.patch +++ b/patches/api/0001-Build-changes.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 50dd795c67557c7d2668068af0bba87a1ec8dc43..c0e062779a36e152e3b520101a8c7a4601dd2cfc 100644 +index fd39ed209b20c927054b8482c400beeeeab460a3..f7786d4034afae1926bb249e282f3f204e09ba1a 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -14,6 +14,9 @@ val bungeeCordChatVersion = "1.20-R0.2" - val adventureVersion = "4.15.0" + val adventureVersion = "4.17.0" val slf4jVersion = "2.0.9" val log4jVersion = "2.17.1" + @@ -23,6 +23,6 @@ index 50dd795c67557c7d2668068af0bba87a1ec8dc43..c0e062779a36e152e3b520101a8c7a46 dependencies { + api("gg.projecteden:eden-interfaces:$edenVersion") // Parchment + api("com.mojang:brigadier:1.2.9") // Paper - Brigadier command api // api dependencies are listed transitively to API consumers api("com.google.guava:guava:32.1.2-jre") - api("com.google.code.gson:gson:2.10.1") diff --git a/patches/api/0002-Add-Getter-interfaces.patch b/patches/api/0002-Add-Getter-interfaces.patch index 5343d50..2540e1a 100644 --- a/patches/api/0002-Add-Getter-interfaces.patch +++ b/patches/api/0002-Add-Getter-interfaces.patch @@ -8,91 +8,92 @@ 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..617a4b17982e3dac47480cb16046233232f288b7 100644 +index 7270c1feece2dc15a4a0503c4bca93a1288f8f13..a941a1e1a9e0c5047ad9f7976e65338ac3f87f68 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; +@@ -12,7 +12,7 @@ import org.jetbrains.annotations.NotNull; /** * 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, gg.projecteden.parchment.HasPlayer { // Parchment - private static final HandlerList handlers = new HandlerList(); - private boolean cancelled; - private PotionEffect effect; + + private static final HandlerList HANDLER_LIST = new HandlerList(); + 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..08897d13a8af33ed1cd40c46b0f168e0c4ebfd4a 100644 +index ae34e679723a2ef436da04c116038272743a8f35..420842d6882c37c64e0f2e9fd41ba9b289fe7690 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; +@@ -37,7 +37,7 @@ import org.jetbrains.annotations.NotNull; + * Starts off cancelled if the player is wearing a pumpkin head or is not looking * at the Enderman, according to Vanilla rules. - * */ -public class EndermanAttackPlayerEvent extends EntityEvent implements Cancellable { +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) { + private static final HandlerList HANDLER_LIST = new HandlerList(); + 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 bcc8dba50e3a3df0206c4827bb468bf884837b8b..83b23884d67e7600a3a3cc33050606e397106020 100644 +index 3029e406cd684efb5645e38711dff9c0bb7b01e4..7ce5cdb02c2b8dc46d01892f495bf06e59d11641 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; +@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Fired when a Turtle lays eggs */ -public class TurtleLayEggEvent extends EntityEvent implements Cancellable { +public class TurtleLayEggEvent extends EntityEvent implements Cancellable, gg.projecteden.parchment.HasLocation { // Parchment - private static final HandlerList handlers = new HandlerList(); - private boolean cancelled = false; - @NotNull + + private static final HandlerList HANDLER_LIST = new HandlerList(); + 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..890069604ca78a9a3f3b4c5f40969a451a1b2067 100644 +index 7a2fa4a11b47e4982d1644830d7e28f12b4378ec..0cb8e6b174ab62899068ab2a0fcc9e63834e6efd 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; +@@ -11,7 +11,7 @@ import org.jetbrains.annotations.NotNull; /** * Fired when a Turtle starts digging to lay eggs */ -public class TurtleStartDiggingEvent extends EntityEvent implements Cancellable { +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; + + private static final HandlerList HANDLER_LIST = new HandlerList(); + diff --git a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -index 59ae7bc3a0a2079fe4b3a92d777aca682a58e4e3..738007be082287a1f1662f2f3b7772e818042647 100644 +index 7c049bad187b94331f42f96833d1cf4ce03ef477..72c36b9ebd668750598a5bf1146fea8043126e05 100644 --- a/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/player/PlayerHandshakeEvent.java -@@ -20,7 +20,7 @@ import java.util.UUID; +@@ -21,7 +21,7 @@ import java.util.UUID; * *

WARNING: TAMPERING WITH THIS EVENT CAN BE DANGEROUS

*/ -public class PlayerHandshakeEvent extends Event implements Cancellable { -+public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment { ++public class PlayerHandshakeEvent extends Event implements Cancellable, gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment + + private static final HandlerList HANDLER_LIST = new HandlerList(); - 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..700fa58c70612ef18b26e8160e8ad1275ad56b5a 100644 +index 3f73ec52f9b581001bef3a19a5f1533dfa474356..92a38938ab76d5ae873a1d82b8d53250912ced06 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; +@@ -22,7 +22,7 @@ import org.jetbrains.annotations.Nullable; * No guarantees are made about thread execution context for this event. If you need to know, check - * event.isAsync() + * {@link Event#isAsynchronous()} */ -public class PreLookupProfileEvent extends Event { +public class PreLookupProfileEvent extends Event implements gg.projecteden.api.interfaces.OptionalUniqueId { // Parchment - private static final HandlerList handlers = new HandlerList(); - @NotNull private final String name; -@@ -51,10 +51,25 @@ public class PreLookupProfileEvent extends Event { + private static final HandlerList HANDLER_LIST = new HandlerList(); + +@@ -52,11 +52,26 @@ public class PreLookupProfileEvent extends Event { + * * @return The UUID of the profile if it has already been provided by a plugin */ - @Nullable + // Parchment start + @Deprecated + @Nullable public UUID getUUID() { - return uuid; + return this.uuid; } + /** @@ -110,20 +111,20 @@ index 4dcf6242c9acc62d030a94f67b78729ed29f8c85..700fa58c70612ef18b26e8160e8ad127 + /** * 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 9be64a95c2345433b6142d611077dedadcef9f5d..e3cea810881868fb5869de72f331733e6893fcee 100644 +index 8965974988ad20fbe1d45885f20a3a98d2e9595f..a19e23e55737bdb7ee9909e02ca6414aaf66830f 100644 --- a/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java +++ b/src/main/java/com/destroystokyo/paper/event/server/AsyncTabCompleteEvent.java -@@ -47,7 +47,7 @@ import org.jetbrains.annotations.Nullable; - * +@@ -53,7 +53,7 @@ import org.jetbrains.annotations.Nullable; + *

* 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, gg.projecteden.parchment.OptionalLocation { // Parchment - @NotNull private final CommandSender sender; - @NotNull private final String buffer; - private final boolean isCommand; + + private static final HandlerList HANDLER_LIST = new HandlerList(); + diff --git a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java b/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java index 2faef4cb358ec65e32a6aba6426f0dd7ddf90d2a..640a01478be687b089aeddad422e4bba2bea19b6 100644 --- a/src/main/java/com/destroystokyo/paper/exception/ServerPluginMessageException.java @@ -397,31 +398,31 @@ index 0000000000000000000000000000000000000000..c70ddc6f92d62d2d5baa001c9009ddd3 + } +} 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 +index 3ddbc099a13df939b3912f30b54e7635840ba5a4..cf34f788b732037713d9a0ab29636de1820afd0a 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; +@@ -15,7 +15,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; + private static final HandlerList HANDLER_LIST = new HandlerList(); + 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 +index 2cac7e27991c04a9ced261f2dd8ad8657ccddf6b..2dc9666fac98e3ff8b569f9510fa0db3ba0eb681 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; +@@ -13,7 +13,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; + private static final HandlerList HANDLER_LIST = new HandlerList(); + diff --git a/src/main/java/org/bukkit/Location.java b/src/main/java/org/bukkit/Location.java index c6049747fc286acb4e8053901fcc517e5170afa2..5ab9b3e73c9cc6ee9cc4471a1f40c9c60a75b99c 100644 --- a/src/main/java/org/bukkit/Location.java @@ -450,7 +451,7 @@ index c6049747fc286acb4e8053901fcc517e5170afa2..5ab9b3e73c9cc6ee9cc4471a1f40c9c6 * Constructs a new Location with the given coordinates * diff --git a/src/main/java/org/bukkit/OfflinePlayer.java b/src/main/java/org/bukkit/OfflinePlayer.java -index bce07d84cafca677bb6fad78c21b82097f06430c..c148832d2df44faa41d239d0be5b9df284a9b7c0 100644 +index 30298a629b39bd43ce14b414fc697b2dfcbea89c..5f50d10c79990a96ae3f954fbff41b5b39a4d7b8 100644 --- a/src/main/java/org/bukkit/OfflinePlayer.java +++ b/src/main/java/org/bukkit/OfflinePlayer.java @@ -19,7 +19,14 @@ import org.jetbrains.annotations.Nullable; @@ -470,15 +471,15 @@ index bce07d84cafca677bb6fad78c21b82097f06430c..c148832d2df44faa41d239d0be5b9df2 /** * Checks if this player is currently online diff --git a/src/main/java/org/bukkit/Raid.java b/src/main/java/org/bukkit/Raid.java -index 983a8c20a06d2b509602b27f49c090598b8ecc42..46dd8496f5a2c792ee7811e33c424e88edf8b5b3 100644 +index fa98599e3eee37bf68f0e9813497c718f457485c..7af5afbef7b1559221ab6c28131ae698aa8cec76 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; /** * Represents a raid event. */ --public interface Raid { -+public interface Raid extends gg.projecteden.parchment.HasLocation { // Parchment +-public interface Raid extends org.bukkit.persistence.PersistentDataHolder { // Paper ++public interface Raid extends org.bukkit.persistence.PersistentDataHolder, gg.projecteden.parchment.HasLocation { // Paper // Parchment /** * Get whether this raid started. @@ -496,10 +497,10 @@ index bbc01e7c192ae6689c301670047ff114306c57cb..2a83ba61686caffb247f17a67af47429 private final Location block; diff --git a/src/main/java/org/bukkit/attribute/AttributeModifier.java b/src/main/java/org/bukkit/attribute/AttributeModifier.java -index d124768378d6f0c5573f28ee815ea3886fe74868..11a00998b1cb5ee582e225553f15b1b7c1a65b2a 100644 +index 8ba00f743b61cd33dd41ae7f1c272ee2b0c8546d..6e2d3f7e8e2f96016d28bb941f16706d228b542d 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; +@@ -15,7 +15,7 @@ import org.jetbrains.annotations.Nullable; /** * Concrete implementation of an attribute modifier. */ @@ -509,7 +510,7 @@ index d124768378d6f0c5573f28ee815ea3886fe74868..11a00998b1cb5ee582e225553f15b1b7 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 25650e9a31bcaf672acd115547abc1ec41a1de34..104e562b84196527fa3e10b52836f21cb0471b81 100644 +index 8a842840e1a2652a6356d4a56e4749a5ba36e902..c5b6ec1c6dfa8789afcde1bf22b2507d20c0545f 100644 --- a/src/main/java/org/bukkit/block/Block.java +++ b/src/main/java/org/bukkit/block/Block.java @@ -32,7 +32,7 @@ import org.jetbrains.annotations.Nullable; @@ -522,7 +523,7 @@ index 25650e9a31bcaf672acd115547abc1ec41a1de34..104e562b84196527fa3e10b52836f21c /** * 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 ef35316fa66ac8d9c7836b9c8af56dcefbf6ff2e..01e2c95bf52cfcffc51d354770fbda5f76540a28 100644 +index 80e5d39afe8a6cf882b29c0da78450b958812137..e747f89e5129e360f9827886fcbfb238cf7e19c1 100644 --- a/src/main/java/org/bukkit/block/BlockState.java +++ b/src/main/java/org/bukkit/block/BlockState.java @@ -21,7 +21,7 @@ import org.jetbrains.annotations.Nullable; @@ -561,7 +562,7 @@ index 2e17b2d4f759531fbe9ee8e9b00c839186af09ca..8f4a293c131cb8b63c31b410ffa211bd /** * 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 6ace3581f8d0c2a1b7e2188d5b6af5c984b74a0e..fb108c194483ef104f323eb2e0aa73451c843292 100644 +index 62e3793903905b94eb1a120345015149abb33713..8f35e0c9e778d98ca191d45eec76a7a74d51959a 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -31,7 +31,7 @@ import org.jetbrains.annotations.Nullable; @@ -574,7 +575,7 @@ index 6ace3581f8d0c2a1b7e2188d5b6af5c984b74a0e..fb108c194483ef104f323eb2e0aa7345 /** * 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 8b0d04d5b39ee817555a36adddc39b18fc6f0d02..1c87047de615a85ee20297295478770e669d87e6 100644 +index ee866f3497ed56708d4062685f5585ca06a03955..4c8f373cb946f4db769be566c163f27a9f4af61e 100644 --- a/src/main/java/org/bukkit/entity/HumanEntity.java +++ b/src/main/java/org/bukkit/entity/HumanEntity.java @@ -20,7 +20,15 @@ import org.jetbrains.annotations.Nullable; @@ -595,10 +596,10 @@ index 8b0d04d5b39ee817555a36adddc39b18fc6f0d02..1c87047de615a85ee20297295478770e // Paper start @Override diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index 815631a6157b87a9ead270fe0b11ac3892a3fbf4..558903782a1898d875274be7561f332f1ca568b2 100644 +index 6c327a07bf8a6aa11a2d7dad12b2830acc539484..42e186ffdb421ccea61c4325f4b9800d55f624a8 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -52,7 +52,17 @@ import org.jetbrains.annotations.Nullable; +@@ -56,7 +56,17 @@ import org.jetbrains.annotations.Nullable; /** * Represents a player, connected or not */ @@ -631,7 +632,7 @@ index 691733a642b3295bbe6d484be728c77cd32803bd..a2eae7a9bad13d1ba2bd954888a03738 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 08d09c2a92d8aa6adf6610cc05905d58a76fce1f..5105d8be50d3ebc75eb776f27679ece82317fe06 100644 +index c74ac0cb004aa219ce2f761969a4bb46cb7c9160..0ef554454608f0129b764dc3d6e3d7780ddf2a11 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; @@ -657,10 +658,10 @@ index 392cde07d578d684423e1bf369af28696eb7e484..e1dacc04c73e0cabcd04d50540f3a571 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..3783fb96cc7086bc78dc06c573a1343c3a18c3cb 100644 +index 4c5ee91de162b202c2db8bf68259ad41a430125d..0d7087301c05bd801b32621e279ff69335b92660 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; +@@ -28,7 +28,7 @@ import org.jetbrains.annotations.NotNull; * AIR in most cases. Use #getBlockState() for more Information about the broken * block. */ @@ -761,7 +762,7 @@ index 59aab10c2d27247eb77bd71d75b5f9126aa0fb12..57f89f569725289d56f1c75db258ac19 /** * 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 099efafa14c10910e4ed04abb1823f0c1a96b6a6..382602ca4a9a33cf238f982f77865053d38bd285 100644 +index 8506fa03293c575c35b55b052224807470fdbd98..2b5e481929c956bdfff5522b2c7ec3e71aa750f5 100644 --- a/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityExplodeEvent.java @@ -13,7 +13,7 @@ import org.jetbrains.annotations.NotNull; @@ -787,7 +788,7 @@ index 71d664dd89995f088c47d17b38547d530319470c..d931ece8f35c8f01748c59d01617fd59 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..c9c4a6673fd3995bb9638b0d25fa212412cda807 100644 +index e4e3d2e22c28ef251d76c48ade267b4eb3749e7d..5128c4b618b4e369a8f9700169b187926ddde09e 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; @@ -813,7 +814,7 @@ index 961ee511342cd3a12ff2ff74d7b4683c6753123d..892732ab5ae58ec980c4fd05a5a3dfdc 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..dc45ec5b6ae8e2958d83a113d23ab0b1a911de3f 100644 +index 2bb29fa449cd6c90b52d2786ed15b6154d591607..ce4caa5d3b0801bc7e2fd2c917a4ae6e3f054052 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; @@ -891,10 +892,10 @@ index 8e2afeab4c62724148e8bb0c83fb7eec569c7a0c..2843fd117151dc75c87db06915a67322 private boolean cancelled; private net.kyori.adventure.text.Component titleOverride; // Paper diff --git a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -index f8b69b52ec8efa103e4e78e1b5c6a015e73d2a75..7c56a4a7552f71f8e81d23859282b6a8301872cb 100644 +index ae02788536d0c6736aba4ccf812844df4f9789f1..327558fcf2aacf0df5a62399fc510c25fcf7cb38 100644 --- a/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java +++ b/src/main/java/org/bukkit/event/player/AsyncPlayerPreLoginEvent.java -@@ -21,7 +21,7 @@ import org.jetbrains.annotations.NotNull; +@@ -18,7 +18,7 @@ import org.jetbrains.annotations.NotNull; * Consider rendering any translatable yourself with {@link net.kyori.adventure.translation.GlobalTranslator#render} * if the client's language is known. */ @@ -956,7 +957,7 @@ index 128e43cf12205f82f2b119a773208502cdccfdd4..ca1fed3081e2b0a3271a2dfa0f49cce7 private static final HandlerList handlers = new HandlerList(); // diff --git a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java -index 4a3451af454295ac3e1b688e6665cad9fc594c82..b88cebb219577d59cc338be89c6f391d10702095 100644 +index b43c3cb5c88eada186d6f81712c244aaa18fb53e..a37055d864038a0090fa0c71f7d8e22aea69b3fe 100644 --- a/src/main/java/org/bukkit/event/server/TabCompleteEvent.java +++ b/src/main/java/org/bukkit/event/server/TabCompleteEvent.java @@ -19,7 +19,7 @@ import org.jetbrains.annotations.NotNull; @@ -969,7 +970,7 @@ index 4a3451af454295ac3e1b688e6665cad9fc594c82..b88cebb219577d59cc338be89c6f391d 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 2a2a329877d8da45c2d6afecf78ce88d52635cad..22cdf3662b02fb5751ac6d913d781084cd7eee5b 100644 +index fb975fefc74d8c9746cab4c02860f55654cf92f7..172699ba31d1ee0697607125d75549930288dd5b 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; @@ -982,7 +983,7 @@ index 2a2a329877d8da45c2d6afecf78ce88d52635cad..22cdf3662b02fb5751ac6d913d781084 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..c28d62fc3dc359f9ebcf926094198ee3c92467aa 100644 +index 783e74bc382f0f6d24203fde7b811f588a674731..c0f863b35cc7f508a33ddcb1af9ed6c52115efdc 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; @@ -1021,7 +1022,7 @@ index ac6c5c7a58c2c88b6cb0f6632fb53e8d67f8a059..464c69fd652db3384b1a4a5f4151933c /** * 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 71b7aa9d675e1714e286e6fd4015ead036d912e0..95e120068a7c5c96b1b8553df9cf8654ba63a325 100644 +index b35dba42069f771db8727bf98f9d17aff9d6094e..0b4a90259952185c0897d4c6b68124dd3d42db26 100644 --- a/src/main/java/org/bukkit/loot/LootContext.java +++ b/src/main/java/org/bukkit/loot/LootContext.java @@ -11,7 +11,7 @@ import org.jetbrains.annotations.Nullable; diff --git a/patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index 75eb295..e2b2607 100644 --- a/patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/api/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -5,37 +5,35 @@ Subject: [PATCH] Add origin location to EntityDamageByBlockEvent diff --git a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java -index ab18f35b686ec79551c307dde9e43c7dfad1b182..47c522e31d704d6c36fbfe128c97cba234932bc7 100644 +index 148c4aad384ae8e3b8b22d264a84bddfbcafdf1e..61fcdd178fa5a8f13c889a78f431d2a5529c8c43 100644 --- a/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java +++ b/src/main/java/org/bukkit/event/entity/EntityDamageByBlockEvent.java -@@ -17,6 +17,7 @@ import org.jetbrains.annotations.Nullable; +@@ -20,6 +20,7 @@ import org.jetbrains.annotations.Nullable; public class EntityDamageByBlockEvent extends EntityDamageEvent { private final Block damager; - private final org.bukkit.block.BlockState damagerBlockState; // Paper + private final BlockState damagerState; + private final org.bukkit.Location location; // Parchment + @Deprecated(forRemoval = true) public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, final double damage) { - // Paper start -@@ -28,21 +29,41 @@ public class EntityDamageByBlockEvent extends EntityDamageEvent { - super(damagee, cause, damage); +@@ -30,19 +31,40 @@ public class EntityDamageByBlockEvent extends EntityDamageEvent { + super(damagee, cause, damageSource, damage); this.damager = damager; - this.damagerBlockState = damagerBlockState; // Paper + this.damagerState = damagerState; + this.location = damager != null ? damager.getLocation() : null; // Parchment } + @Deprecated(forRemoval = true) public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { - // Paper start -- this(damager, damagee, cause, modifiers, modifierFunctions, null); -+ this(damager, damagee, cause, modifiers, modifierFunctions, null, null); +- this(damager, (damager != null) ? damager.getState() : null, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions); ++ this(damager, (damager != null) ? damager.getState() : null, damagee, cause, (damager != null) ? DamageSource.builder(DamageType.GENERIC).withDamageLocation(damager.getLocation()).build() : DamageSource.builder(DamageType.GENERIC).build(), modifiers, modifierFunctions, null); } - @org.jetbrains.annotations.ApiStatus.Internal -- public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions, final @Nullable org.bukkit.block.BlockState damagerBlockState) { -+ public EntityDamageByBlockEvent(@Nullable final Block damager, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions, final @Nullable org.bukkit.block.BlockState damagerBlockState, @Nullable final org.bukkit.Location damageLocation) { // Parchment - // Paper end - super(damagee, cause, modifiers, modifierFunctions); +- public EntityDamageByBlockEvent(@Nullable final Block damager, @Nullable final BlockState damagerState, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions) { ++ public EntityDamageByBlockEvent(@Nullable final Block damager, @Nullable final BlockState damagerState, @NotNull final Entity damagee, @NotNull final DamageCause cause, @NotNull final DamageSource damageSource, @NotNull final Map modifiers, @NotNull final Map> modifierFunctions, @Nullable final org.bukkit.Location damageLocation) { // Parchment + super(damagee, cause, damageSource, modifiers, modifierFunctions); this.damager = damager; - this.damagerBlockState = damagerBlockState; // Paper + this.damagerState = damagerState; + // Parchment start + if (damageLocation != null) + this.location = damageLocation; @@ -56,6 +54,7 @@ index ab18f35b686ec79551c307dde9e43c7dfad1b182..47c522e31d704d6c36fbfe128c97cba2 + return location; + } + // Parchment end ++ + /** * Returns the block that damaged the player. diff --git a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch index 95cd326..9ed6a8e 100644 --- a/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/api/0007-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,21 +5,13 @@ Subject: [PATCH] Add UnsafeValues#canPlaceItemOn diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java -index 923d8655a84e26960d35d8dc6e4ebc0b10c295d5..325f53f2a052d6cc4e53e16f00d10713682540ff 100644 +index 0857a65ecbc36e0e4b8a7d0cda52be35f238f660..1a3151814ef669db1c8530c7afaa810be99ca267 100644 --- a/src/main/java/org/bukkit/UnsafeValues.java +++ b/src/main/java/org/bukkit/UnsafeValues.java -@@ -261,6 +261,7 @@ public interface UnsafeValues { - String getStatisticCriteriaKey(@NotNull org.bukkit.Statistic statistic); - // Paper end +@@ -282,4 +282,19 @@ public interface UnsafeValues { + // Paper end - lifecycle event API -+ - // Paper start - spawn egg color visibility - /** - * Obtains the underlying color informating for a spawn egg of a given -@@ -273,4 +274,18 @@ public interface UnsafeValues { - */ - @Nullable org.bukkit.Color getSpawnEggLayerColor(org.bukkit.entity.EntityType entityType, int layer); - // Paper end - spawn egg color visibility + @NotNull java.util.List computeTooltipLines(@NotNull ItemStack itemStack, @NotNull io.papermc.paper.inventory.tooltip.TooltipContext tooltipContext, @Nullable org.bukkit.entity.Player player); // Paper - expose itemstack tooltip lines + + // Parchment start + /** @@ -33,5 +25,6 @@ index 923d8655a84e26960d35d8dc6e4ebc0b10c295d5..325f53f2a052d6cc4e53e16f00d10713 + */ + java.util.concurrent.CompletableFuture canPlaceItemOn(@org.jetbrains.annotations.NotNull ItemStack item, @org.jetbrains.annotations.Nullable gg.projecteden.parchment.OptionalHumanEntity player, @org.jetbrains.annotations.NotNull org.bukkit.block.Block block, @org.jetbrains.annotations.NotNull org.bukkit.block.BlockFace face); + // Parchment end ++ + } diff --git a/patches/api/0008-Expose-MCUtil-Executors.patch b/patches/api/0008-Expose-MCUtil-Executors.patch index 7fe9c32..415cbc3 100644 --- a/patches/api/0008-Expose-MCUtil-Executors.patch +++ b/patches/api/0008-Expose-MCUtil-Executors.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expose MCUtil Executors diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java -index 9af4bc16da09e59009c47911219e99450cdf2aa5..ed897ec092c10ac5e5e0b645849c696c2f09b597 100644 +index c8595ffcfcbdd79794d464415287d46acef72b72..e018920520c8d747fb10e8365d4dd0326b04c50c 100644 --- a/src/main/java/org/bukkit/Server.java +++ b/src/main/java/org/bukkit/Server.java -@@ -2170,6 +2170,22 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi +@@ -2229,6 +2229,22 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi @NotNull UnsafeValues getUnsafe(); diff --git a/patches/api/0010-Add-Furnace-Recipe-API.patch b/patches/api/0010-Add-Furnace-Recipe-API.patch index 570b5fd..ca5baf3 100644 --- a/patches/api/0010-Add-Furnace-Recipe-API.patch +++ b/patches/api/0010-Add-Furnace-Recipe-API.patch @@ -64,10 +64,10 @@ index 0000000000000000000000000000000000000000..ea17d99c7a1d70d88e2c439399cdb376 + } +} diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java -index 5eb3521f5f91b0684b4beebf4f7ba2c795b41c42..c8a3e139fd462a184fac9ff472048451372229de 100644 +index 97f97ea5c6aa513c439f86a9c82821e0f7d9cd1e..64c1287b7a668680e19f8c4c1a678abb0eb5d88e 100644 --- a/src/main/java/org/bukkit/World.java +++ b/src/main/java/org/bukkit/World.java -@@ -50,6 +50,36 @@ import org.jetbrains.annotations.Nullable; +@@ -52,6 +52,36 @@ import org.jetbrains.annotations.Nullable; */ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient, Metadatable, PersistentDataHolder, Keyed, net.kyori.adventure.audience.ForwardingAudience { // Paper diff --git a/patches/api/0012-Add-Player-getHiddenEntities-API.patch b/patches/api/0012-Add-Player-getHiddenEntities-API.patch index 825d922..28bf971 100644 --- a/patches/api/0012-Add-Player-getHiddenEntities-API.patch +++ b/patches/api/0012-Add-Player-getHiddenEntities-API.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Add Player#getHiddenEntities API diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index c2581dee5e2fc07cb551d609cef31c589a845ca1..d16a1b5459f153d401806bdf22596850bac062ce 100644 +index 42e186ffdb421ccea61c4325f4b9800d55f624a8..8b2380241dbf40bd03941250a66e0a7b4a2282ec 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -1992,6 +1992,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM - @ApiStatus.Experimental +@@ -2092,6 +2092,17 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM + */ public boolean canSee(@NotNull Entity entity); + // Parchment start @@ -19,9 +19,9 @@ index c2581dee5e2fc07cb551d609cef31c589a845ca1..d16a1b5459f153d401806bdf22596850 + * @param plugin Plugin that has hidden entities + * @return a view of hidden entity UUIDs + */ -+ @ApiStatus.Experimental + public java.util.@NotNull Set getHiddenEntities(@NotNull Plugin plugin); + // Parchment end ++ + // Paper start /** diff --git a/patches/api/0014-Expanded-Insomnia-API-methods.patch b/patches/api/0014-Expanded-Insomnia-API-methods.patch index 6e19e3b..5af90fc 100644 --- a/patches/api/0014-Expanded-Insomnia-API-methods.patch +++ b/patches/api/0014-Expanded-Insomnia-API-methods.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expanded Insomnia API methods diff --git a/src/main/java/org/bukkit/entity/Player.java b/src/main/java/org/bukkit/entity/Player.java -index e59cac883dc83186e0977a73b03636993696b37e..e4df334e6ceba43144114c1ad84cb5710b71030e 100644 +index 8b2380241dbf40bd03941250a66e0a7b4a2282ec..d86f8f80e0873dccd24b186d4860d1e5dbe2f450 100644 --- a/src/main/java/org/bukkit/entity/Player.java +++ b/src/main/java/org/bukkit/entity/Player.java -@@ -62,6 +62,45 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM +@@ -66,6 +66,45 @@ public interface Player extends HumanEntity, Conversable, OfflinePlayer, PluginM */ @Override @NotNull Player getPlayer(); diff --git a/patches/api/0015-Add-NPC-to-EntityType.patch b/patches/api/0015-Add-NPC-to-EntityType.patch index 251c309..8c69a39 100644 --- a/patches/api/0015-Add-NPC-to-EntityType.patch +++ b/patches/api/0015-Add-NPC-to-EntityType.patch @@ -5,14 +5,14 @@ Subject: [PATCH] Add NPC to EntityType diff --git a/src/main/java/org/bukkit/entity/EntityType.java b/src/main/java/org/bukkit/entity/EntityType.java -index 4aaf268f58038cd5d4101ec3fbfdc20b544d6678..29aa9227a57b4ea458379402ccfce3334d9325d8 100644 +index 1d1315262737d99bf9f5aabc0ae66eee4645cc65..825ad446bcee169c4735955d226dae18b512d7e3 100644 --- a/src/main/java/org/bukkit/entity/EntityType.java +++ b/src/main/java/org/bukkit/entity/EntityType.java -@@ -303,6 +303,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans - */ - LIGHTNING("lightning_bolt", LightningStrike.class, -1, false), - PLAYER("player", Player.class, -1, false), -+ NPC("npc", NPC.class, -1, true), +@@ -317,6 +317,7 @@ public enum EntityType implements Keyed, Translatable, net.kyori.adventure.trans /** * An unknown entity without an Entity Class */ ++ NPC("npc", NPC.class, -1, true), + UNKNOWN(null, null, -1, false); + + private final String name; diff --git a/patches/api/0016-Revert-BungeeChat-Deprecation.patch b/patches/api/0016-Revert-BungeeChat-Deprecation.patch index 2616fdf..a9f154b 100644 --- a/patches/api/0016-Revert-BungeeChat-Deprecation.patch +++ b/patches/api/0016-Revert-BungeeChat-Deprecation.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Revert BungeeChat Deprecation diff --git a/build.gradle.kts b/build.gradle.kts -index c0e062779a36e152e3b520101a8c7a4601dd2cfc..a970742ac1632af0203cca28cee52979e2cad937 100644 +index f7786d4034afae1926bb249e282f3f204e09ba1a..f689a22e535bb007089b981fe803f1a6af4911c2 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -35,7 +35,7 @@ dependencies { +@@ -36,7 +36,7 @@ dependencies { api("com.google.guava:guava:32.1.2-jre") api("com.google.code.gson:gson:2.10.1") // Paper start - adventure @@ -17,7 +17,7 @@ index c0e062779a36e152e3b520101a8c7a4601dd2cfc..a970742ac1632af0203cca28cee52979 exclude("com.google.guava", "guava") } // Paper - adventure -@@ -133,7 +133,7 @@ tasks.withType { +@@ -154,7 +154,7 @@ tasks.withType { "https://guava.dev/releases/32.1.2-jre/api/docs/", "https://javadoc.io/doc/org.yaml/snakeyaml/2.2/", "https://javadoc.io/doc/org.jetbrains/annotations/$annotationsVersion/", // Paper - we don't want Java 5 annotations diff --git a/patches/api/0020-Entity-Data-Storage.patch b/patches/api/0020-Entity-Data-Storage.patch index a7d4ab8..c061fdd 100644 --- a/patches/api/0020-Entity-Data-Storage.patch +++ b/patches/api/0020-Entity-Data-Storage.patch @@ -260,10 +260,10 @@ index 0000000000000000000000000000000000000000..c9f9c0d235f33925ee247ba4af56bf9f + } +} diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index fb108c194483ef104f323eb2e0aa73451c843292..e0fdf6d2550a6f331c5ccc82443a9065eca48072 100644 +index 8f35e0c9e778d98ca191d45eec76a7a74d51959a..f865c4dbdf29e3cd718de7a325d478252895d940 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1107,4 +1107,7 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1155,4 +1155,7 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name diff --git a/patches/server/0001-Build-changes.patch b/patches/server/0001-Build-changes.patch index 9338cd6..a5070a8 100644 --- a/patches/server/0001-Build-changes.patch +++ b/patches/server/0001-Build-changes.patch @@ -5,46 +5,55 @@ Subject: [PATCH] Build changes diff --git a/build.gradle.kts b/build.gradle.kts -index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..556e2244f37243154e0f2bec756e290421ccc14b 100644 +index 4998aff0b7cb084dcda15c6a18bbe45e99b6000a..34f1acc44c17b53d93b750a35817131145db454f 100644 --- a/build.gradle.kts +++ b/build.gradle.kts -@@ -1,4 +1,5 @@ +@@ -1,6 +1,8 @@ import io.papermc.paperweight.util.* -+val edenVersion: String by project // Parchment + import java.time.Instant ++val edenVersion: String by project // Parchment ++ plugins { java -@@ -13,8 +14,12 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { + `maven-publish` +@@ -13,7 +15,9 @@ configurations.named(log4jPlugins.compileClasspathConfigurationName) { val alsoShade: Configuration by configurations.creating dependencies { - implementation(project(":paper-api")) -- implementation(project(":paper-mojangapi")) + // Parchment start + implementation(project(":parchment-api")) -+ implementation("io.papermc.paper:paper-mojangapi:${project.version}") { -+ exclude("io.papermc.paper", "paper-api") -+ } + // Parchment end // Paper start implementation("org.jline:jline-terminal-jansi:3.21.0") implementation("net.minecrell:terminalconsoleappender:1.3.0") -@@ -69,7 +74,7 @@ tasks.jar { +@@ -80,14 +84,14 @@ tasks.jar { + val gitBranch = git("rev-parse", "--abbrev-ref", "HEAD").getText().trim() // Paper attributes( "Main-Class" to "org.bukkit.craftbukkit.Main", - "Implementation-Title" to "CraftBukkit", -- "Implementation-Version" to "git-Paper-$implementationVersion", -+ "Implementation-Version" to "git-Parchment-$implementationVersion", // Parchment +- "Implementation-Title" to "Paper", ++ "Implementation-Title" to "Parchment", + "Implementation-Version" to implementationVersion, "Implementation-Vendor" to date, // Paper - "Specification-Title" to "Bukkit", +- "Specification-Title" to "Paper", ++ "Specification-Title" to "Parchment", "Specification-Version" to project.version, -@@ -97,7 +102,27 @@ tasks.compileTestJava { +- "Specification-Vendor" to "Paper Team", +- "Brand-Id" to "papermc:paper", +- "Brand-Name" to "Paper", ++ "Specification-Vendor" to "Project Eden", ++ "Brand-Id" to "projectedengg:parchment", ++ "Brand-Name" to "Parchment", + "Build-Number" to (build ?: ""), + "Build-Time" to Instant.now().toString(), + "Git-Branch" to gitBranch, // Paper +@@ -108,6 +112,27 @@ tasks.compileTestJava { publishing { publications.create("maven") { -- artifact(tasks.shadowJar) + // Parchment start -+ artifact(tasks.reobfJar) ++ artifact(tasks.jar) + groupId = project.group as String? + artifactId = "parchment" + version = project.version as String? @@ -67,7 +76,7 @@ index 376e8983fdfdbb6c3e5fd8ad0f6a05e655b622bf..556e2244f37243154e0f2bec756e2904 } } -@@ -153,7 +178,7 @@ fun TaskContainer.registerRunTask( +@@ -144,7 +169,7 @@ fun TaskContainer.registerRunTask( name: String, block: JavaExec.() -> Unit ): TaskProvider = register(name) { @@ -90,53 +99,23 @@ index 4b002e8b75d117b726b0de274a76d3596fce015b..4dca3956a76a9d57b3167f73696cf5d5 /** diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -index 9d687da5bdf398bb3f6c84cdf1249a7213d09f2e..9b248dde91651b40b6b3e3dda8985c73543b4922 100644 +index 532306cacd52579cdf37e4aca25887b1ed3ba6a1..87db580c74d20714e2ebe01df23811c79d1f8331 100644 --- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java +++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java -@@ -31,8 +31,10 @@ public class PaperVersionFetcher implements VersionFetcher { - @Nonnull - @Override - public Component getVersionMessage(@Nonnull String serverVersion) { -- String[] parts = serverVersion.substring("git-Paper-".length()).split("[-\\s]"); -- final Component updateMessage = getUpdateStatusMessage("PaperMC/Paper", GITHUB_BRANCH_NAME, parts[0]); -+ // Parchment start -+ String[] parts = serverVersion.substring("git-Parchment-".length()).split("[-\\s]"); -+ final Component updateMessage = getUpdateStatusMessage("ProjectEdenGG/Parchment", GITHUB_BRANCH_NAME, parts[0]); -+ // Parchment end - final Component history = getHistory(); +@@ -49,7 +49,7 @@ public class PaperVersionFetcher implements VersionFetcher { + if (build.buildNumber().isEmpty() && build.gitCommit().isEmpty()) { + updateMessage = text("You are running a development version without access to version information", color(0xFF5300)); + } else { +- updateMessage = getUpdateStatusMessage("PaperMC/Paper", build); ++ updateMessage = getUpdateStatusMessage("ProjectEdenGG/Parchment", build); + } + final @Nullable Component history = this.getHistory(); - return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage; -diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 90ae7e8c81f6a9ede8aeaeec3bf784023522cefc..45aa6acb72e5df1265036be02decd1cdb52b9c00 100644 ---- a/src/main/java/net/minecraft/server/MinecraftServer.java -+++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1855,7 +1855,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop //Paper - Paper > // Spigot - Spigot > // CraftBukkit - cb > vanilla! - } - - 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 34cd96dba5f11e64d7c90f4246b513b0ea943aa6..f2ed626ffb125d5a8663f2021524e5359b203177 100644 ---- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java -+++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -264,7 +264,7 @@ import javax.annotation.Nullable; // Paper - import javax.annotation.Nonnull; // Paper - - public final class CraftServer implements Server { -- private final String serverName = "Paper"; // Paper -+ private final String serverName = "Parchment"; // Paper // Parchment - private final String serverVersion; - 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 ce341f42b3a5e17fb6d1f7de8057e73137ae2a6e..226cf8f41190abee10050013f27cd59e135944d6 100644 +index e02102280ed1dc300191d19bbca8f00e17701753..9b5d9729288ac11d21365c900a3b2af454c765dc 100644 --- a/src/main/java/org/bukkit/craftbukkit/Main.java +++ b/src/main/java/org/bukkit/craftbukkit/Main.java -@@ -301,7 +301,7 @@ public class Main { +@@ -303,7 +303,7 @@ public class Main { if (buildDate.before(deadline.getTime())) { // Paper start - This is some stupid bullshit System.err.println("*** Warning, you've not updated in a while! ***"); @@ -159,7 +138,7 @@ index 774556a62eb240da42e84db4502e2ed43495be17..6f1b3fa6ebeabc7596034663ed06686f if (stream != null) { diff --git a/src/main/java/org/spigotmc/WatchdogThread.java b/src/main/java/org/spigotmc/WatchdogThread.java -index 9e638f72f180ff5ef63ec3dd6cf548c53f7bd4a5..b0df6388d08057774f965b5d830ba17e64ea131f 100644 +index 6db566e3111ec08a99aa429624979cb83a85e272..d3a5867e9202d1f34e66c4e6d3842211c40a6255 100644 --- a/src/main/java/org/spigotmc/WatchdogThread.java +++ b/src/main/java/org/spigotmc/WatchdogThread.java @@ -162,7 +162,7 @@ public final class WatchdogThread extends io.papermc.paper.util.TickThread // Pa @@ -167,7 +146,7 @@ index 9e638f72f180ff5ef63ec3dd6cf548c53f7bd4a5..b0df6388d08057774f965b5d830ba17e log.log( Level.SEVERE, "If you are unsure or still think this is a Paper bug, please report this to https://github.com/PaperMC/Paper/issues" ); log.log( Level.SEVERE, "Be sure to include ALL relevant console errors and Minecraft crash reports" ); - log.log( Level.SEVERE, "Paper version: " + Bukkit.getServer().getVersion() ); -+ log.log( Level.SEVERE, "Parchment version: " + Bukkit.getServer().getVersion() ); // Parchment ++ log.log( Level.SEVERE, "Parchment version: " + Bukkit.getServer().getVersion() ); // if ( net.minecraft.world.level.Level.lastPhysicsProblem != null ) { diff --git a/patches/server/0002-Temporary-Access-Transformers.patch b/patches/server/0002-Temporary-Access-Transformers.patch index 157f6f4..d47cf2d 100644 --- a/patches/server/0002-Temporary-Access-Transformers.patch +++ b/patches/server/0002-Temporary-Access-Transformers.patch @@ -5,11 +5,11 @@ Subject: [PATCH] Temporary Access Transformers diff --git a/src/main/java/net/minecraft/core/Holder.java b/src/main/java/net/minecraft/core/Holder.java -index 245f09b771fb1e8fab3bc4c03b1afe34ef505f1b..8dbef407de5c48543ca7f97d8c22301aa54da7d8 100644 +index d7bbf60ba94ecd85f991a0c5c70c34fdb00ec9d5..724adc4c35aece988af815e7886fcbd727f0e27e 100644 --- a/src/main/java/net/minecraft/core/Holder.java +++ b/src/main/java/net/minecraft/core/Holder.java -@@ -126,6 +126,12 @@ public interface Holder { - return new Holder.Reference<>(Holder.Reference.Type.INTRUSIVE, owner, (ResourceKey)null, value); +@@ -137,6 +137,12 @@ public interface Holder { + return new Holder.Reference<>(Holder.Reference.Type.INTRUSIVE, owner, null, value); } + // Parchment start @@ -22,15 +22,15 @@ index 245f09b771fb1e8fab3bc4c03b1afe34ef505f1b..8dbef407de5c48543ca7f97d8c22301a if (this.key == null) { throw new IllegalStateException("Trying to access unbound value '" + this.value + "' from registry " + this.owner); diff --git a/src/main/java/net/minecraft/world/item/BlockItem.java b/src/main/java/net/minecraft/world/item/BlockItem.java -index efdf56044396b4ce486948d2c993971f99174a5e..4238b65cc86b0c49a34b50c4dac00cd89e3900e1 100644 +index 96fb69ec6db2e7c8c728435f0c537b076259b2fb..45a5f63268ebd67d6601e86e33f9fa5fd458ad0c 100644 --- a/src/main/java/net/minecraft/world/item/BlockItem.java +++ b/src/main/java/net/minecraft/world/item/BlockItem.java -@@ -206,7 +206,7 @@ public class BlockItem extends Item { - }).orElse(state); +@@ -183,7 +183,7 @@ public class BlockItem extends Item { + } } - protected boolean canPlace(BlockPlaceContext context, BlockState state) { -+ public boolean canPlace(BlockPlaceContext context, BlockState state) { // Parchment ++ public boolean canPlace(BlockPlaceContext context, BlockState state) { // Parchment: protected -> public Player entityhuman = context.getPlayer(); CollisionContext voxelshapecollision = entityhuman == null ? CollisionContext.empty() : CollisionContext.of(entityhuman); // CraftBukkit start - store default return diff --git a/patches/server/0003-Add-SoundEvent.patch b/patches/server/0003-Add-SoundEvent.patch index d7cf507..68125b3 100644 --- a/patches/server/0003-Add-SoundEvent.patch +++ b/patches/server/0003-Add-SoundEvent.patch @@ -4,11 +4,11 @@ Date: Sat, 19 Jun 2021 16:30:39 -0400 Subject: [PATCH] Add SoundEvent -diff --git a/src/main/java/gg/projecteden/gg/parchment/event/sound/ParchmentSoundEvent.java b/src/main/java/gg/projecteden/gg/parchment/event/sound/ParchmentSoundEvent.java +diff --git a/src/main/java/gg/projecteden/parchment/event/sound/ParchmentSoundEvent.java b/src/main/java/gg/projecteden/parchment/event/sound/ParchmentSoundEvent.java new file mode 100644 index 0000000000000000000000000000000000000000..44245b61f64e4e2eb21ac4f5e540aa9a583bfcfe --- /dev/null -+++ b/src/main/java/gg/projecteden/gg/parchment/event/sound/ParchmentSoundEvent.java ++++ b/src/main/java/gg/projecteden/parchment/event/sound/ParchmentSoundEvent.java @@ -0,0 +1,28 @@ +package gg.projecteden.parchment.event.sound; + @@ -39,10 +39,10 @@ index 0000000000000000000000000000000000000000..44245b61f64e4e2eb21ac4f5e540aa9a + } +} diff --git a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -index ca80cbe422d766b3d044a5b53ce40bb7f92558e4..e1e379113a1e8aeeab0ce71ebc373756a7a16368 100644 +index badd85a92f38caae257181f67a322fc79599d1ce..4fc829f26512159f430ea26af462bbad0d602149 100644 --- a/src/main/java/io/papermc/paper/adventure/PaperAdventure.java +++ b/src/main/java/io/papermc/paper/adventure/PaperAdventure.java -@@ -348,6 +348,41 @@ public final class PaperAdventure { +@@ -363,6 +363,40 @@ public final class PaperAdventure { return asVanilla(source); } @@ -79,16 +79,15 @@ index ca80cbe422d766b3d044a5b53ce40bb7f92558e4..e1e379113a1e8aeeab0ce71ebc373756 + return Key.key(key.getNamespace(), key.getPath()); + } + // Parchment end -+ + public static Packet asSoundPacket(final Sound sound, final double x, final double y, final double z, final long seed, @Nullable BiConsumer, Float> packetConsumer) { final ResourceLocation name = asVanilla(sound.name()); final Optional soundEvent = BuiltInRegistries.SOUND_EVENT.getOptional(name); diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 6934e9dac0d69c043b73b7c46d59f2d39b37c67f..60df39dd0c6fbb970a39b5a67fc235fa87cdc789 100644 +index ca56a0b596976448da6bb2a0e82b3d5cd4133e12..c3891adadf9b49c8b17ec387bb63713285621b76 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1796,12 +1796,46 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1813,12 +1813,46 @@ public class ServerLevel extends Level implements WorldGenLevel { @Override public void playSeededSound(@Nullable Player source, double x, double y, double z, Holder sound, SoundSource category, float volume, float pitch, long seed) { @@ -138,50 +137,49 @@ index 6934e9dac0d69c043b73b7c46d59f2d39b37c67f..60df39dd0c6fbb970a39b5a67fc235fa @Override diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 0dba30c41affafe7b1d585b515925043b37712fa..1d2fa2de139ea713051ca4d2d79bec9f62e69af3 100644 +index a645ad66af061966c5e47cae677026b35a55c486..b1e1717b3b63b9c554c7925ed63ed217bff7e792 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2436,7 +2436,20 @@ public class ServerPlayer extends Player { +@@ -2528,7 +2528,20 @@ public class ServerPlayer extends Player { @Override - public void playNotifySound(SoundEvent event, SoundSource category, float volume, float pitch) { -- this.connection.send(new ClientboundSoundPacket(BuiltInRegistries.SOUND_EVENT.wrapAsHolder(event), category, this.getX(), this.getY(), this.getZ(), volume, pitch, this.random.nextLong())); + public void playNotifySound(SoundEvent sound, SoundSource category, float volume, float pitch) { +- this.connection.send(new ClientboundSoundPacket(BuiltInRegistries.SOUND_EVENT.wrapAsHolder(sound), category, this.getX(), this.getY(), this.getZ(), volume, pitch, this.random.nextLong())); + // Parchment start - sound event + CraftEventFactory.playSoundEvent(new gg.projecteden.parchment.event.sound.SoundEvent( + null, + net.kyori.adventure.sound.Sound.sound() -+ .type(io.papermc.paper.adventure.PaperAdventure.asAdventure(event.getLocation())) ++ .type(io.papermc.paper.adventure.PaperAdventure.asAdventure(sound.getLocation())) + .source(io.papermc.paper.adventure.PaperAdventure.asAdventure(category)) + .volume(volume) + .pitch(pitch) + .seed(this.random.nextLong()) + .build(), + gg.projecteden.parchment.event.sound.ParchmentSoundEvent.createEmitter(level(), getX(), getY(), getZ()), -+ sound -> 0d, soundEvent -> java.util.Collections.singletonList(getBukkitEntity()) ++ _sound -> 0d, soundEvent -> java.util.Collections.singletonList(getBukkitEntity()) + )); + // Parchment end } @Override diff --git a/src/main/java/net/minecraft/server/players/PlayerList.java b/src/main/java/net/minecraft/server/players/PlayerList.java -index e0ee45036b9bf14a6e2013fe291cde0402b85b1f..4810d387f70d00701dc970601d2684d7713dd20b 100644 +index a2142930b4d4b05987c90496fb9d733d99040aa0..ca96202a50f36dfc870e418c7816bc871f098eab 100644 --- a/src/main/java/net/minecraft/server/players/PlayerList.java +++ b/src/main/java/net/minecraft/server/players/PlayerList.java -@@ -967,8 +967,7 @@ public abstract class PlayerList { +@@ -967,7 +967,7 @@ public abstract class PlayerList { BlockState data = worldserver1.getBlockState(blockposition); worldserver1.setBlock(blockposition, data.setValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE, data.getValue(net.minecraft.world.level.block.RespawnAnchorBlock.CHARGE) - 1), 3); } - entityplayer1.connection.send(new ClientboundSoundPacket(SoundEvents.RESPAWN_ANCHOR_DEPLETE, SoundSource.BLOCKS, (double) location.getX(), (double) location.getY(), (double) location.getZ(), 1.0F, 1.0F, worldserver1.getRandom().nextLong())); -- // Paper end - Fix SPIGOT-5989 + entityplayer1.playNotifySound(SoundEvents.RESPAWN_ANCHOR_DEPLETE.value(), SoundSource.BLOCKS, 1.0F, 1.0F); // Parchment - use existing play sound method + // Paper end - Fix SPIGOT-5989 } // Added from changeDimension - this.sendAllPlayerInfo(entityplayer); // Update health, etc... 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 44a17a8e763455e834dcf488044a0f4907ce346e..001579e6919cbe634ae11482ec6d9303536457fe 100644 +index 686374e89e41b0917791264f3281f7384835bca8..75995354090771370ba6b4aa8f4ded28186583e8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1853,7 +1853,21 @@ public abstract class Player extends LivingEntity { +@@ -1882,7 +1882,21 @@ public abstract class Player extends LivingEntity { private static void sendSoundEffect(Player fromEntity, double x, double y, double z, SoundEvent soundEffect, SoundSource soundCategory, float volume, float pitch) { fromEntity.level().playSound(fromEntity, x, y, z, soundEffect, soundCategory, volume, pitch); // This will not send the effect to the entity himself if (fromEntity instanceof ServerPlayer) { @@ -205,10 +203,10 @@ index 44a17a8e763455e834dcf488044a0f4907ce346e..001579e6919cbe634ae11482ec6d9303 } // Paper end - send while respecting visibility 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 eaa2943b667967f93f28d9d794d702fdaeb670ec..df03f4867742cd194db260dfb81398b14286397e 100644 +index fdff9788eaf663be79214b2ca491f0f0444f6136..4b26f4a4620bacd40efe22b685f48fdda1012e8a 100644 --- a/src/main/java/net/minecraft/world/entity/raid/Raid.java +++ b/src/main/java/net/minecraft/world/entity/raid/Raid.java -@@ -542,7 +542,7 @@ public class Raid { +@@ -564,7 +564,7 @@ public class Raid { double d2 = vec3d.z + 13.0D / d0 * (vec3d1.z - vec3d.z); if (d0 <= 64.0D || collection.contains(entityplayer)) { @@ -218,10 +216,10 @@ index eaa2943b667967f93f28d9d794d702fdaeb670ec..df03f4867742cd194db260dfb81398b1 } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b9e90f589749dfc9324c4aa2062c505fbd4447bc..8e18a66c45af55ef37794cb6c00f565a347c95aa 100644 +index 34b91eff3190848bae38b20e1d956ece497b1473..75a3d42d0ac458e1f7161e88cf27ec6087828926 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2172,4 +2172,42 @@ public class CraftEventFactory { +@@ -2182,4 +2182,42 @@ public class CraftEventFactory { return event; } // Paper end - add EntityFertilizeEggEvent diff --git a/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch b/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch index 10bf645..a3818c7 100644 --- a/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch +++ b/patches/server/0004-Add-PlayerUseRespawnAnchorEvent.patch @@ -5,21 +5,20 @@ 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 797ece59c10bdb60a86f71ca3b7bb95dbe0f1078..e560312bacc25ef3c2f26122fa68228bdf9e42a5 100644 +index 94d067e9eeee73183de25165d8c97043fe256103..3d6e33abbebe526796359fab76768601c227fbe8 100644 --- a/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java +++ b/src/main/java/net/minecraft/world/level/block/RespawnAnchorBlock.java -@@ -65,23 +65,45 @@ public class RespawnAnchorBlock extends Block { - public InteractionResult use(BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { - ItemStack itemstack = player.getItemInHand(hand); +@@ -65,7 +65,33 @@ public class RespawnAnchorBlock extends Block { + @Override + protected ItemInteractionResult useItemOn(ItemStack stack, BlockState state, Level world, BlockPos pos, Player player, InteractionHand hand, BlockHitResult hit) { + // 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); + gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult result; + // Parchment end - if (hand == InteractionHand.MAIN_HAND && !RespawnAnchorBlock.isRespawnFuel(itemstack) && RespawnAnchorBlock.isRespawnFuel(player.getItemInHand(InteractionHand.OFF_HAND))) { - return InteractionResult.PASS; - } else if (RespawnAnchorBlock.isRespawnFuel(itemstack) && RespawnAnchorBlock.canBeCharged(state)) { ++ + if (RespawnAnchorBlock.isRespawnFuel(stack) && RespawnAnchorBlock.canBeCharged(state)) { + // Parchment start -- PlayerUseRespawnAnchorEvent + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE; + } else if (state.getValue(CHARGE) == 0) { @@ -29,7 +28,7 @@ index 797ece59c10bdb60a86f71ca3b7bb95dbe0f1078..e560312bacc25ef3c2f26122fa68228b + } else if (!world.isClientSide) { + result = gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.SET_SPAWN; + } else { -+ return InteractionResult.SUCCESS; ++ return ItemInteractionResult.SUCCESS; + } + if (bukkitPlayer != null) { + gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent event = new gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent(bukkitPlayer, block, result); @@ -37,28 +36,9 @@ index 797ece59c10bdb60a86f71ca3b7bb95dbe0f1078..e560312bacc25ef3c2f26122fa68228b + result = event.getResult(); + } + if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.NOTHING) { -+ return InteractionResult.PASS; ++ return ItemInteractionResult.PASS_TO_DEFAULT_BLOCK_INTERACTION; + } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.CHARGE) { + // Parchment end RespawnAnchorBlock.charge(player, world, pos, state); - if (!player.getAbilities().instabuild) { - itemstack.shrink(1); - } - - return InteractionResult.sidedSuccess(world.isClientSide); -- } else if ((Integer) state.getValue(RespawnAnchorBlock.CHARGE) == 0) { -- return InteractionResult.PASS; -- } else if (!RespawnAnchorBlock.canSetSpawn(world)) { -- if (!world.isClientSide) { -- this.explode(state, world, pos); -- } -- -- return InteractionResult.sidedSuccess(world.isClientSide); -+ // Parchment start -- PlayerUseRespawnAnchorEvent -+ } else if (result == gg.projecteden.parchment.event.player.PlayerUseRespawnAnchorEvent.RespawnAnchorResult.EXPLODE) { -+ this.explode(state, world, pos); -+ return InteractionResult.CONSUME; -+ // Parchment end - } else { - if (!world.isClientSide) { - ServerPlayer entityplayer = (ServerPlayer) player; + stack.consume(1, player); + return ItemInteractionResult.sidedSuccess(world.isClientSide); diff --git a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch index cb82fa6..2c673bd 100644 --- a/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch +++ b/patches/server/0005-Add-origin-location-to-EntityDamageByBlockEvent.patch @@ -5,33 +5,15 @@ Subject: [PATCH] Add origin location to EntityDamageByBlockEvent diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index 8e18a66c45af55ef37794cb6c00f565a347c95aa..b5ad5d810dbad4609bde5f0e12249be1949574a0 100644 +index 75a3d42d0ac458e1f7161e88cf27ec6087828926..ca52d30944a067bb156cae6290663ab20cb160e9 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -1058,7 +1058,7 @@ public class CraftEventFactory { - CraftEventFactory.entityDamage = null; - EntityDamageEvent event; - if (damager == null) { -- event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.BLOCK_EXPLOSION, modifiers, modifierFunctions, source.explodedBlockState); // Paper - add exploded state -+ event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.BLOCK_EXPLOSION, modifiers, modifierFunctions, source.explodedBlockState, source.getEntity() == null ? null : source.getEntity().getBukkitEntity().getLocation()); // Paper - handle block state in damage - } else if (entity instanceof EnderDragon && /*PAIL FIXME ((EntityEnderDragon) entity).target == damager*/ false) { - event = new EntityDamageEvent(entity.getBukkitEntity(), DamageCause.ENTITY_EXPLOSION, modifiers, modifierFunctions); - } else { -@@ -1106,7 +1106,7 @@ public class CraftEventFactory { +@@ -1188,7 +1188,7 @@ public class CraftEventFactory { + } - return CraftEventFactory.callEntityDamageEvent(damager, entity, cause, modifiers, modifierFunctions, cancelled, source.isCritical()); // Paper - add critical damage API - } else if (source.is(DamageTypes.FELL_OUT_OF_WORLD)) { -- EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions); -+ EntityDamageEvent event = new EntityDamageByBlockEvent(null, entity.getBukkitEntity(), DamageCause.VOID, modifiers, modifierFunctions, null, entity.getBukkitEntity().getLocation()); - event.setCancelled(cancelled); - CraftEventFactory.callEvent(event); - if (!event.isCancelled()) { -@@ -1116,7 +1116,7 @@ public class CraftEventFactory { - } - return event; - } else if (source.is(DamageTypes.LAVA)) { -- EntityDamageEvent event = (new EntityDamageByBlockEvent(CraftEventFactory.blockDamage, entity.getBukkitEntity(), DamageCause.LAVA, modifiers, modifierFunctions)); -+ EntityDamageEvent event = (new EntityDamageByBlockEvent(CraftEventFactory.blockDamage, entity.getBukkitEntity(), DamageCause.LAVA, modifiers, modifierFunctions, null, entity.getBukkitEntity().getLocation())); - event.setCancelled(cancelled); + private static EntityDamageEvent callEntityDamageEvent(Block damager, BlockState damagerState, Entity damagee, DamageCause cause, org.bukkit.damage.DamageSource bukkitDamageSource, Map modifiers, Map> modifierFunctions, boolean cancelled) { +- EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(damager, damagerState, damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions); ++ EntityDamageByBlockEvent event = new EntityDamageByBlockEvent(damager, damagerState, damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, bukkitDamageSource.getDamageLocation()); + return CraftEventFactory.callEntityDamageEvent(event, damagee, cancelled); + } - Block damager = CraftEventFactory.blockDamage; diff --git a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch index 77f8d9b..ff4d898 100644 --- a/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch +++ b/patches/server/0006-Add-UnsafeValues-canPlaceItemOn.patch @@ -5,20 +5,12 @@ 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 ca5312febcdd467889ad725c0263367bc5fe69f6..850d756b7799db561ab4f45938a64842e5a4deef 100644 +index 5a382907285a288f2a223189e690d3dbdf45594c..fab345b24eebeac1935bff9f0ece4334748d1b17 100644 --- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java +++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java -@@ -645,6 +645,7 @@ public final class CraftMagicNumbers implements UnsafeValues { +@@ -693,6 +693,55 @@ public final class CraftMagicNumbers implements UnsafeValues { } - // Paper end - -+ - // Paper start - spawn egg color visibility - @Override - public org.bukkit.Color getSpawnEggLayerColor(final EntityType entityType, final int layer) { -@@ -654,6 +655,55 @@ public final class CraftMagicNumbers implements UnsafeValues { - } - // Paper end - spawn egg color visibility + // Paper end - lifecycle event API + // Parchment start + @Override diff --git a/patches/server/0007-Add-Player-setGameProfile.patch b/patches/server/0007-Add-Player-setGameProfile.patch index 374cad3..1b73321 100644 --- a/patches/server/0007-Add-Player-setGameProfile.patch +++ b/patches/server/0007-Add-Player-setGameProfile.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#setGameProfile diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index 001579e6919cbe634ae11482ec6d9303536457fe..f23f18af19a551a21b58ef868f5f216c8a87d030 100644 +index 75995354090771370ba6b4aa8f4ded28186583e8..38388feb2a578d71568fbe17799c4f9a0d5f2c2c 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -1525,6 +1525,12 @@ public abstract class Player extends LivingEntity { +@@ -1541,6 +1541,12 @@ public abstract class Player extends LivingEntity { return this.gameProfile; } diff --git a/patches/server/0008-Expose-MCUtil-Executors.patch b/patches/server/0008-Expose-MCUtil-Executors.patch index c4d764c..ce282d1 100644 --- a/patches/server/0008-Expose-MCUtil-Executors.patch +++ b/patches/server/0008-Expose-MCUtil-Executors.patch @@ -5,12 +5,12 @@ 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 f2ed626ffb125d5a8663f2021524e5359b203177..e9de3ee7fbc1b9ff59802f6823312e974bfcc33c 100644 +index 2fa5507aa2153a05208077f9547c165a1099b5bb..50f91ac8303dd33f3b493c85cb713dba1b89d294 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftServer.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftServer.java -@@ -3227,4 +3227,16 @@ public final class CraftServer implements Server { +@@ -3264,4 +3264,16 @@ public final class CraftServer implements Server { + return this.potionBrewer; } - // Paper end + + // Parchment start diff --git a/patches/server/0009-Add-BlockDropResourcesEvent.patch b/patches/server/0009-Add-BlockDropResourcesEvent.patch index c679077..033b310 100644 --- a/patches/server/0009-Add-BlockDropResourcesEvent.patch +++ b/patches/server/0009-Add-BlockDropResourcesEvent.patch @@ -8,10 +8,10 @@ to easily get the items being dropped by any block instead of only blocks broken by players. diff --git a/src/main/java/net/minecraft/world/level/block/Block.java b/src/main/java/net/minecraft/world/level/block/Block.java -index 73d6f881a7d4d8ff96040d34ac502e5b0937d577..d6e2b9d4bbd3ba9f9461a02b282c26b95861530a 100644 +index cf8b8c8efd1c9c81eb5f02d75bd75875eb66771f..46330f02d04f9e8a921ddf14bb34e94392c17431 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -309,7 +309,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -301,7 +301,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos) { if (world instanceof ServerLevel) { @@ -20,7 +20,7 @@ index 73d6f881a7d4d8ff96040d34ac502e5b0937d577..d6e2b9d4bbd3ba9f9461a02b282c26b9 Block.popResource(world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); -@@ -319,7 +319,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -311,7 +311,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) { @@ -29,7 +29,7 @@ index 73d6f881a7d4d8ff96040d34ac502e5b0937d577..d6e2b9d4bbd3ba9f9461a02b282c26b9 Block.popResource((ServerLevel) world, pos, itemstack); }); state.spawnAfterBreak((ServerLevel) world, pos, ItemStack.EMPTY, true); -@@ -354,7 +354,7 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -347,7 +347,7 @@ public class Block extends BlockBehaviour implements ItemLike { public static void dropResources(BlockState state, Level world, BlockPos pos, @Nullable BlockEntity blockEntity, @Nullable Entity entity, ItemStack tool, boolean dropExperience) { // Paper end - Properly handle xp dropping if (world instanceof ServerLevel) { @@ -39,10 +39,10 @@ index 73d6f881a7d4d8ff96040d34ac502e5b0937d577..d6e2b9d4bbd3ba9f9461a02b282c26b9 }); state.spawnAfterBreak((ServerLevel) world, pos, tool, dropExperience); // Paper - Properly handle xp dropping diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index b5ad5d810dbad4609bde5f0e12249be1949574a0..2068624d9ce5685a8bf4748fa75002bdae6192dd 100644 +index ca52d30944a067bb156cae6290663ab20cb160e9..bbd231e085b3d14693a56c4b2abf393f86ff0683 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -@@ -2209,5 +2209,19 @@ public class CraftEventFactory { +@@ -2219,5 +2219,19 @@ public class CraftEventFactory { } }); } diff --git a/patches/server/0010-Add-Furnace-Recipe-API.patch b/patches/server/0010-Add-Furnace-Recipe-API.patch index 7cc1fbb..86c0065 100644 --- a/patches/server/0010-Add-Furnace-Recipe-API.patch +++ b/patches/server/0010-Add-Furnace-Recipe-API.patch @@ -215,10 +215,10 @@ index 0000000000000000000000000000000000000000..e7114e456f818d7bdd4081620f4b9b93 + } +} diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -index a139601888b88e8580bdb9c2469386a94abae975..78545a1ee1c403c39563f1b3c9ffcc4bb6e91fd8 100644 +index f2b20ed5063a293f0b464548f590d652170cd1d8..b6c14eaeb9e1c0f186e0ec15b76e6ba8814287d3 100644 --- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java -@@ -2488,4 +2488,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { +@@ -2561,4 +2561,11 @@ public class CraftWorld extends CraftRegionAccessor implements World { return this.adventure$pointers; } // Paper end diff --git a/patches/server/0011-Disable-sleep-status-announcements.patch b/patches/server/0011-Disable-sleep-status-announcements.patch index 0da5a04..475c1b7 100644 --- a/patches/server/0011-Disable-sleep-status-announcements.patch +++ b/patches/server/0011-Disable-sleep-status-announcements.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable sleep status announcements diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 60df39dd0c6fbb970a39b5a67fc235fa87cdc789..0b403859d0f24ceea72ea7ac2a8a608c949b74de 100644 +index c3891adadf9b49c8b17ec387bb63713285621b76..05ffad3a3bf6eeb720db239238b2d3189585cce9 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java -@@ -1172,7 +1172,7 @@ public class ServerLevel extends Level implements WorldGenLevel { +@@ -1178,7 +1178,7 @@ public class ServerLevel extends Level implements WorldGenLevel { } private void announceSleepStatus() { diff --git a/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch b/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch index 1d06467..74db4fe 100644 --- a/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch +++ b/patches/server/0012-Add-config-for-ticking-TIME_SINCE_REST.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add config for ticking TIME_SINCE_REST diff --git a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -index 385ca2c1022e0985550a5cc2bbff953f1aa33f5c..3859342b3fa840aaeb71203fcf9ee88ec1aa1160 100644 +index efc91ff91827872c62b8bd060282549ccdcf67dd..2555be33b41c7011c9acceb5ac777e7ab6752c10 100644 --- a/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java +++ b/src/main/java/io/papermc/paper/configuration/WorldConfiguration.java -@@ -287,6 +287,7 @@ public class WorldConfiguration extends ConfigurationPart { +@@ -288,6 +288,7 @@ public class WorldConfiguration extends ConfigurationPart { } public boolean disablePlayerCrits = false; @@ -17,10 +17,10 @@ index 385ca2c1022e0985550a5cc2bbff953f1aa33f5c..3859342b3fa840aaeb71203fcf9ee88e public PillagerPatrols pillagerPatrols; diff --git a/src/main/java/net/minecraft/world/entity/player/Player.java b/src/main/java/net/minecraft/world/entity/player/Player.java -index f23f18af19a551a21b58ef868f5f216c8a87d030..c07747901ddf1ac35ead12679ca740b8903da00e 100644 +index 38388feb2a578d71568fbe17799c4f9a0d5f2c2c..a11c18605c0fbaead1163466a38089265a5ac5a8 100644 --- a/src/main/java/net/minecraft/world/entity/player/Player.java +++ b/src/main/java/net/minecraft/world/entity/player/Player.java -@@ -286,7 +286,7 @@ public abstract class Player extends LivingEntity { +@@ -302,7 +302,7 @@ public abstract class Player extends LivingEntity { this.awardStat(Stats.CROUCH_TIME); } diff --git a/patches/server/0013-Add-HangingFrame-Tick-API.patch b/patches/server/0013-Add-HangingFrame-Tick-API.patch index 632d275..dbd71cc 100644 --- a/patches/server/0013-Add-HangingFrame-Tick-API.patch +++ b/patches/server/0013-Add-HangingFrame-Tick-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add HangingFrame Tick API diff --git a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -index f88918b7c15b72f4cb1dd313734f550432fd5858..74215934d25d48fc2628401ed57cb78222b8c2ce 100644 +index bf2d91bbb4bf401696f5f5d14a67e3920a179084..47a38704eba3ce3da1bf0d5dc18856f2c02c3ea8 100644 --- a/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java +++ b/src/main/java/net/minecraft/world/entity/decoration/HangingEntity.java -@@ -41,6 +41,7 @@ public abstract class HangingEntity extends Entity { +@@ -43,6 +43,7 @@ public abstract class HangingEntity extends Entity { private int checkInterval; { this.checkInterval = this.getId() % this.level().spigotConfig.hangingTickFrequency; } // Paper - Perf: offset item frame ticking public BlockPos pos; protected Direction direction; @@ -16,7 +16,7 @@ index f88918b7c15b72f4cb1dd313734f550432fd5858..74215934d25d48fc2628401ed57cb782 protected HangingEntity(EntityType type, Level world) { super(type, world); -@@ -116,7 +117,7 @@ public abstract class HangingEntity extends Entity { +@@ -118,7 +119,7 @@ public abstract class HangingEntity extends Entity { @Override public void tick() { diff --git a/patches/server/0014-Add-Player-getHiddenEntities-API.patch b/patches/server/0014-Add-Player-getHiddenEntities-API.patch index 570020e..dc8d5d2 100644 --- a/patches/server/0014-Add-Player-getHiddenEntities-API.patch +++ b/patches/server/0014-Add-Player-getHiddenEntities-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Player#getHiddenEntities API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index 39b25c2478eadd373383a3445a7f27ea30d18550..c8b87486653ea5a36d9b20371e0b095413e671d0 100644 +index 7e6116963d835d4606ef3d93b69d3e44b61288e1..1da9415f141aabe8df5b82392c142c1f3fd960fb 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -2028,6 +2028,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -2145,6 +2145,17 @@ public class CraftPlayer extends CraftHumanEntity implements Player { this.server.getPluginManager().callEvent(new PlayerShowEntityEvent(this, entity)); } // Paper start diff --git a/patches/server/0015-Big-Barrels.patch b/patches/server/0015-Big-Barrels.patch index 74d96e1..1b4b5e5 100644 --- a/patches/server/0015-Big-Barrels.patch +++ b/patches/server/0015-Big-Barrels.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Big Barrels diff --git a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -index 416aa989ebb18a8741cc9d605a1180ab830f6643..c48466a4d2115f4fa6121b6bcba87b838743af34 100644 +index 6186e55014bbb9d5bedaa0e9d196879c55339d42..4f02184ec9aa7067f0ee20f041799d25494cb358 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BarrelBlockEntity.java -@@ -67,7 +67,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -68,7 +68,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { public BarrelBlockEntity(BlockPos pos, BlockState state) { super(BlockEntityType.BARREL, pos, state); @@ -17,7 +17,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..c48466a4d2115f4fa6121b6bcba87b83 this.openersCounter = new ContainerOpenersCounter() { @Override protected void onOpen(Level world, BlockPos pos, BlockState state) { -@@ -118,7 +118,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -119,7 +119,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override public int getContainerSize() { @@ -26,7 +26,7 @@ index 416aa989ebb18a8741cc9d605a1180ab830f6643..c48466a4d2115f4fa6121b6bcba87b83 } @Override -@@ -138,7 +138,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { +@@ -139,7 +139,7 @@ public class BarrelBlockEntity extends RandomizableContainerBlockEntity { @Override protected AbstractContainerMenu createMenu(int syncId, Inventory playerInventory) { diff --git a/patches/server/0017-Expanded-Insomnia-API.patch b/patches/server/0017-Expanded-Insomnia-API.patch index 09233bb..77dc767 100644 --- a/patches/server/0017-Expanded-Insomnia-API.patch +++ b/patches/server/0017-Expanded-Insomnia-API.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Expanded Insomnia API diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -index c8b87486653ea5a36d9b20371e0b095413e671d0..12780409f4f4a99aa1904b5b79bdfd652dc0e3d0 100644 +index 1da9415f141aabe8df5b82392c142c1f3fd960fb..f8aaccfebf81debf807eb74fb7accaa86d5f1a9e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java -@@ -194,6 +194,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -211,6 +211,8 @@ public class CraftPlayer extends CraftHumanEntity implements Player { private static final boolean DISABLE_CHANNEL_LIMIT = System.getProperty("paper.disableChannelLimit") != null; // Paper - add a flag to disable the channel limit private long lastSaveTime; // Paper - getLastPlayed replacement API @@ -17,7 +17,7 @@ index c8b87486653ea5a36d9b20371e0b095413e671d0..12780409f4f4a99aa1904b5b79bdfd65 public CraftPlayer(CraftServer server, ServerPlayer entity) { super(server, entity); -@@ -3387,4 +3389,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { +@@ -3530,4 +3532,31 @@ public class CraftPlayer extends CraftHumanEntity implements Player { public void setSendViewDistance(final int viewDistance) { this.getHandle().setSendViewDistance(viewDistance); } diff --git a/patches/server/0018-Add-spam-bypass-permission.patch b/patches/server/0018-Add-spam-bypass-permission.patch index 56d57a0..84eecdc 100644 --- a/patches/server/0018-Add-spam-bypass-permission.patch +++ b/patches/server/0018-Add-spam-bypass-permission.patch @@ -5,15 +5,15 @@ Subject: [PATCH] Add spam bypass permission diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 6f9ec543185b6f68bb1eaa61a7ebea9d866d688f..981d10594ad23cdb0d202729a0ad08a9a0540b1c 100644 +index b9b3277c8ed94e0cd30b20b9c00a33eaad48e5ac..c68329a2668220b0884eafd88440f3aaffd9e0fa 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -768,9 +768,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -787,9 +787,11 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handleCustomCommandSuggestions(ServerboundCommandSuggestionPacket packet) { // PacketUtils.ensureRunningOnSameThread(packet, this, this.player.serverLevel()); // Paper - AsyncTabCompleteEvent; run this async // CraftBukkit start - if (this.chatSpamTickCount.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit && !this.server.getPlayerList().isOp(this.player.getGameProfile())) { // Paper - configurable tab spam limits -- server.scheduleOnMain(() -> this.disconnect(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - AsyncTabCompleteEvent & kick event cause +- this.disconnect(Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM); // Paper - Kick event cause - return; + if (!this.getCraftPlayer().hasPermission("spam.bypass")) { // Parchment - spam bypass + if (this.chatSpamTickCount.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.tabSpamLimit && !this.server.getPlayerList().isOp(this.player.getGameProfile())) { // Paper - configurable tab spam limits @@ -23,7 +23,7 @@ index 6f9ec543185b6f68bb1eaa61a7ebea9d866d688f..981d10594ad23cdb0d202729a0ad08a9 } // CraftBukkit end // Paper start - Don't suggest if tab-complete is disabled -@@ -2439,6 +2441,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -2512,6 +2514,7 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl // Spigot start - spam exclusions private void detectRateSpam(String s) { @@ -31,15 +31,19 @@ index 6f9ec543185b6f68bb1eaa61a7ebea9d866d688f..981d10594ad23cdb0d202729a0ad08a9 // CraftBukkit start - replaced with thread safe throttle boolean counted = true; for ( String exclude : org.spigotmc.SpigotConfig.spamExclusions ) -@@ -3188,10 +3191,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl +@@ -3273,10 +3276,12 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl public void handlePlaceRecipe(ServerboundPlaceRecipePacket packet) { // Paper start - auto recipe limit if (!org.bukkit.Bukkit.isPrimaryThread()) { +- if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { +- this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause +- return; +- } + if (!this.getCraftPlayer().hasPermission("spam.bypass")) { // Parchment - spam bypass - if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { - this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam", new Object[0]), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause - return; - } ++ if (this.recipeSpamPackets.addAndGet(io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamIncrement) > io.papermc.paper.configuration.GlobalConfiguration.get().spamLimiter.recipeSpamLimit) { ++ this.server.scheduleOnMain(() -> this.disconnect(net.minecraft.network.chat.Component.translatable("disconnect.spam"), org.bukkit.event.player.PlayerKickEvent.Cause.SPAM)); // Paper - kick event cause ++ return; ++ } + } // Parchment - spam bypass } // Paper end - auto recipe limit diff --git a/patches/server/0019-Disable-set-respawn-message.patch b/patches/server/0019-Disable-set-respawn-message.patch index 85dbe6f..318a4e9 100644 --- a/patches/server/0019-Disable-set-respawn-message.patch +++ b/patches/server/0019-Disable-set-respawn-message.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Disable set respawn message diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 1d2fa2de139ea713051ca4d2d79bec9f62e69af3..961bc4c00bb3b7aac7fa31a62130270353da04e4 100644 +index b1e1717b3b63b9c554c7925ed63ed217bff7e792..606384fa11d6aab9384278e89481cd7e07cdb945 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java -@@ -2400,9 +2400,10 @@ public class ServerPlayer extends Player { +@@ -2492,9 +2492,10 @@ public class ServerPlayer extends Player { forced = event.isForced(); // Paper end - Add PlayerSetSpawnEvent diff --git a/patches/server/0020-Make-FixLight-use-action-bar.patch b/patches/server/0020-Make-FixLight-use-action-bar.patch index 9660f40..964f98c 100644 --- a/patches/server/0020-Make-FixLight-use-action-bar.patch +++ b/patches/server/0020-Make-FixLight-use-action-bar.patch @@ -5,18 +5,10 @@ Subject: [PATCH] Make FixLight use action bar diff --git a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -index 463c6d8d5b114816ed9065558285945817c30385..d77fb29ea767fce5b8e00b76625188f19ecdbd24 100644 +index 56524cbe4303901007e1e7fb3703a19efbf79ae7..e13e1da7fc814e83bed1f0f32cd5d115c1c3b710 100644 --- a/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java +++ b/src/main/java/io/papermc/paper/command/subcommands/FixLightCommand.java -@@ -24,6 +24,7 @@ import static net.kyori.adventure.text.format.NamedTextColor.BLUE; - import static net.kyori.adventure.text.format.NamedTextColor.DARK_AQUA; - import static net.kyori.adventure.text.format.NamedTextColor.GREEN; - import static net.kyori.adventure.text.format.NamedTextColor.RED; -+import static net.kyori.adventure.text.format.NamedTextColor.YELLOW; - - @DefaultQualifier(NonNull.class) - public final class FixLightCommand implements PaperSubcommand { -@@ -93,17 +94,20 @@ public final class FixLightCommand implements PaperSubcommand { +@@ -87,17 +87,20 @@ public final class FixLightCommand implements PaperSubcommand { lightengine.relight(chunks, (final ChunkPos chunkPos) -> { ++relitChunks[0]; @@ -25,10 +17,10 @@ index 463c6d8d5b114816ed9065558285945817c30385..d77fb29ea767fce5b8e00b76625188f1 - text(", progress: ", BLUE), text((int) (Math.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%") + sender.getBukkitEntity().sendActionBar(text().color(DARK_AQUA).append( + text("Relighting Chunks: ", DARK_AQUA), text(chunkPos.toString()), -+ text(" " + relitChunks[0], YELLOW), ++ text(" " + relitChunks[0], net.kyori.adventure.text.format.NamedTextColor.YELLOW), + text("/", DARK_AQUA), -+ text(pending[0] + " ", YELLOW), -+ text("(" + (int) (Math.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%)", YELLOW) ++ text(pending[0] + " ", net.kyori.adventure.text.format.NamedTextColor.YELLOW), ++ text("(" + (int) (Math.round(100.0 * (double) (relitChunks[0]) / (double) pending[0])) + "%)", net.kyori.adventure.text.format.NamedTextColor.YELLOW) )); }, (final int totalRelit) -> { @@ -37,8 +29,8 @@ index 463c6d8d5b114816ed9065558285945817c30385..d77fb29ea767fce5b8e00b76625188f1 sender.getBukkitEntity().sendMessage(text().color(DARK_AQUA).append( - text("Relit ", BLUE), text(totalRelit), - text(" chunks. Took ", BLUE), text(diff + "ms") -+ text("Relit ", DARK_AQUA), text(totalRelit, YELLOW), -+ text(" chunks. Took ", DARK_AQUA), text(diff + "ms", YELLOW) ++ text("Relit ", DARK_AQUA), text(totalRelit, net.kyori.adventure.text.format.NamedTextColor.YELLOW), ++ text(" chunks. Took ", DARK_AQUA), text(diff + "ms", net.kyori.adventure.text.format.NamedTextColor.YELLOW) )); if (done != null) { done.run(); diff --git a/patches/server/0022-Add-PreEntityShootBowEvent.patch b/patches/server/0022-Add-PreEntityShootBowEvent.patch index b0ccb5a..f669bf3 100644 --- a/patches/server/0022-Add-PreEntityShootBowEvent.patch +++ b/patches/server/0022-Add-PreEntityShootBowEvent.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Add PreEntityShootBowEvent diff --git a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java -index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..e4d681ed34f53ba35fa066338c563a36f3937fa0 100644 +index 0c5fe46d2da113beff3e220843593d616e37d4ca..7a57f18eeb052a451c54f232f012a8cffa4803f4 100644 --- a/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java +++ b/src/main/java/net/minecraft/world/entity/monster/AbstractSkeleton.java @@ -199,13 +199,17 @@ public abstract class AbstractSkeleton extends Monster implements RangedAttackMo @@ -28,10 +28,10 @@ index 586e3e92ccc275446df6dbbff9bf010a37a9aa8f..e4d681ed34f53ba35fa066338c563a36 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, net.minecraft.world.InteractionHand.MAIN_HAND, 0.8F, true); // Paper if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -index fb84b35e34063075e69e00e430bc00e7c3b9d62c..c31872f7cb9fa5d635ee833cae8ca7f66b359ecd 100644 +index a7964208c952cb4e34916ae6523850fc3921b07e..776bfaf8bc5f3d7afe8c2e2cdafe734eb32aac82 100644 --- a/src/main/java/net/minecraft/world/entity/monster/Illusioner.java +++ b/src/main/java/net/minecraft/world/entity/monster/Illusioner.java -@@ -189,13 +189,17 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { +@@ -176,13 +176,17 @@ public class Illusioner extends SpellcasterIllager implements RangedAttackMob { @Override public void performRangedAttack(LivingEntity target, float pullProgress) { ItemStack itemstack = this.getProjectile(this.getItemInHand(ProjectileUtil.getWeaponHoldingHand(this, Items.BOW))); @@ -51,15 +51,15 @@ index fb84b35e34063075e69e00e430bc00e7c3b9d62c..c31872f7cb9fa5d635ee833cae8ca7f6 org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(this, this.getMainHandItem(), entityarrow.getPickupItem(), entityarrow, target.getUsedItemHand(), 0.8F, true); if (event.isCancelled()) { diff --git a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -index d14eab0d83d629a4522bf3f7d789d2853eb84f06..8f0e0efcc75dd07e3bd267ba0d4051d9e6891156 100644 +index 31b8a8bf78d52b5f11b68e780ec09bf78e7bda84..d296e1ce4798bd223a98bbc5693f29713a1fde7e 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java +++ b/src/main/java/net/minecraft/world/entity/projectile/AbstractArrow.java -@@ -136,8 +136,10 @@ public abstract class AbstractArrow extends Projectile { +@@ -143,8 +143,10 @@ public abstract class AbstractArrow extends Projectile { } @Override -- public void shoot(double x, double y, double z, float speed, float divergence) { -- super.shoot(x, y, z, speed, divergence); +- public void shoot(double x, double y, double z, float power, float uncertainty) { +- super.shoot(x, y, z, power, uncertainty); + // Parchment start + public void shoot(double x, double y, double z, float speed, float divergence, boolean relative) { + super.shoot(x, y, z, speed, divergence, relative); @@ -68,28 +68,30 @@ index d14eab0d83d629a4522bf3f7d789d2853eb84f06..8f0e0efcc75dd07e3bd267ba0d4051d9 } diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -index 156809090f1f83ad68e7e2477a3cfddac5757a8e..82e696e49bc4c823ba9504cc4f1f2006462e6df7 100644 +index 74c596264d4da551437bd2a23e1c70022cfc73fc..968bfd2004ec8bd2243f886ffee660f235e80241 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java +++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java -@@ -172,9 +172,17 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -175,9 +175,17 @@ public abstract class Projectile extends Entity implements TraceableEntity { } - public void shoot(double x, double y, double z, float speed, float divergence) { + public void shoot(double x, double y, double z, float power, float uncertainty) { +- Vec3 vec3d = this.getMovementToShoot(x, y, z, power, uncertainty); + // Parchment start -+ shoot(x, y, z, speed, divergence, true); ++ shoot(x, y, z, power, uncertainty, true); + } + + public void shoot(double x, double y, double z, float speed, float divergence, boolean relative) { + // Parchment end - Vec3 vec3d = (new Vec3(x, y, z)).normalize().add(this.random.triangle(0.0D, 0.0172275D * (double) divergence), this.random.triangle(0.0D, 0.0172275D * (double) divergence), this.random.triangle(0.0D, 0.0172275D * (double) divergence)).scale((double) speed); ++ Vec3 vec3d = this.getMovementToShoot(x, y, z, speed, divergence); +- this.setDeltaMovement(vec3d); + if (relative) { // Parchment - this.setDeltaMovement(vec3d); ++ this.setDeltaMovement(vec3d); + } // Parchment double d3 = vec3d.horizontalDistance(); this.setYRot((float) (Mth.atan2(vec3d.x, vec3d.z) * 57.2957763671875D)); -@@ -184,6 +192,12 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -187,6 +195,12 @@ public abstract class Projectile extends Entity implements TraceableEntity { } public void shootFromRotation(Entity shooter, float pitch, float yaw, float roll, float speed, float divergence) { @@ -102,48 +104,103 @@ index 156809090f1f83ad68e7e2477a3cfddac5757a8e..82e696e49bc4c823ba9504cc4f1f2006 float f5 = -Mth.sin(yaw * 0.017453292F) * Mth.cos(pitch * 0.017453292F); float f6 = -Mth.sin((pitch + roll) * 0.017453292F); float f7 = Mth.cos(yaw * 0.017453292F) * Mth.cos(pitch * 0.017453292F); -@@ -191,7 +205,9 @@ public abstract class Projectile extends Entity implements TraceableEntity { +@@ -194,7 +208,9 @@ public abstract class Projectile extends Entity implements TraceableEntity { this.shoot((double) f5, (double) f6, (double) f7, speed, divergence); Vec3 vec3d = shooter.getDeltaMovement(); +- if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); // Paper - allow disabling relative velocity + if (relative) { // Parchment - if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); // Paper - allow disabling relative velocity -+ } // Parchment ++ if (!shooter.level().paperConfig().misc.disableRelativeProjectileVelocity) this.setDeltaMovement(this.getDeltaMovement().add(vec3d.x, shooter.onGround() ? 0.0D : vec3d.y, vec3d.z)); // Paper - allow disabling relative velocity ++ } } // CraftBukkit start - call projectile hit event diff --git a/src/main/java/net/minecraft/world/item/BowItem.java b/src/main/java/net/minecraft/world/item/BowItem.java -index 08d597db1a5345a343777a01427655e6bf2c926b..b923ea037a69628309167d16cc2a0ae780444523 100644 +index 5ca843df5b4caa668953e5e36a9b20fabeb35046..68012cc58dc794afae8b74b7d81eab0080929707 100644 --- a/src/main/java/net/minecraft/world/item/BowItem.java +++ b/src/main/java/net/minecraft/world/item/BowItem.java -@@ -42,9 +42,13 @@ public class BowItem extends ProjectileWeaponItem implements Vanishable { - - if (!world.isClientSide) { - ArrowItem itemarrow = (ArrowItem) (itemstack1.getItem() instanceof ArrowItem ? itemstack1.getItem() : Items.ARROW); +@@ -31,7 +31,11 @@ public class BowItem extends ProjectileWeaponItem { + if (!((double)f < 0.1)) { + List list = draw(stack, itemStack, player); + if (!world.isClientSide() && !list.isEmpty()) { +- this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null); + // Parchment start -+ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(entityhuman.getBukkitEntity(), stack.asBukkitCopy(), itemstack1.asBukkitCopy()); ++ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(user.getBukkitEntity(), stack.asBukkitCopy(), itemStack.asBukkitCopy()); + if (!preEvent.callEvent()) return; + // Parchment end - AbstractArrow entityarrow = itemarrow.createArrow(world, itemstack1, entityhuman); ++ this.shoot(world, player, player.getUsedItemHand(), stack, list, f * 3.0F, 1.0F, f == 1.0F, null, preEvent.isRelative()); + } -- entityarrow.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, f * 3.0F, 1.0F); -+ entityarrow.shootFromRotation(entityhuman, entityhuman.getXRot(), entityhuman.getYRot(), 0.0F, f * 3.0F, 1.0F, preEvent.isRelative()); // Parchment - if (f == 1.0F) { - entityarrow.setCritArrow(true); - } + world.playSound( +@@ -52,9 +56,9 @@ public class BowItem extends ProjectileWeaponItem { + + @Override + protected void shootProjectile( +- LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target ++ LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target, boolean relative + ) { +- projectile.shootFromRotation(shooter, shooter.getXRot(), shooter.getYRot() + yaw, 0.0F, speed, divergence); ++ projectile.shootFromRotation(shooter, shooter.getXRot(), shooter.getYRot() + yaw, 0.0F, speed, divergence, relative); + } + + public static float getPowerForTime(int useTicks) { diff --git a/src/main/java/net/minecraft/world/item/CrossbowItem.java b/src/main/java/net/minecraft/world/item/CrossbowItem.java -index 06689ee8799079510a1a4e7b68029b9629e318fb..05018b1fb5a9928ac70485533e6700f386903d2f 100644 +index 1f52feb5684ee1bab710e1557cf69b43b4d4dfd4..b4633be6d59f5b05d0b59e2aff2d8452ffd29736 100644 --- a/src/main/java/net/minecraft/world/item/CrossbowItem.java +++ b/src/main/java/net/minecraft/world/item/CrossbowItem.java -@@ -225,6 +225,11 @@ public class CrossbowItem extends ProjectileWeaponItem implements Vanishable { +@@ -124,7 +124,7 @@ public class CrossbowItem extends ProjectileWeaponItem { - private static void shootProjectile(Level world, LivingEntity shooter, InteractionHand hand, ItemStack crossbow, ItemStack projectile, float soundPitch, boolean creative, float speed, float divergence, float simulated) { - if (!world.isClientSide) { + @Override + protected void shootProjectile( +- LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target ++ LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target, boolean relative + ) { + Vector3f vector3f; + if (target != null) { +@@ -186,8 +186,14 @@ public class CrossbowItem extends ProjectileWeaponItem { + ) { + if (!world.isClientSide()) { + ChargedProjectiles chargedProjectiles = stack.set(DataComponents.CHARGED_PROJECTILES, ChargedProjectiles.EMPTY); + // Parchment start -+ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(shooter.getBukkitEntity(), crossbow.asBukkitCopy(), projectile.asBukkitCopy()); ++ gg.projecteden.parchment.event.entity.PreEntityShootBowEvent preEvent = new gg.projecteden.parchment.event.entity.PreEntityShootBowEvent(shooter.getBukkitEntity(), stack.asBukkitCopy(), chargedProjectiles.getItems().get(0).asBukkitCopy()); + if (!preEvent.callEvent()) return; + // TODO: handle relative flag in CrossbowAttackMob#shootCrossbowProjectile + // Parchment end - boolean flag1 = projectile.is(Items.FIREWORK_ROCKET); - Object object; ++ + if (chargedProjectiles != null && !chargedProjectiles.isEmpty()) { +- this.shoot(world, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, livingEntity); ++ this.shoot(world, shooter, hand, stack, chargedProjectiles.getItems(), speed, divergence, shooter instanceof Player, livingEntity, preEvent.isRelative()); + if (shooter instanceof ServerPlayer serverPlayer) { + CriteriaTriggers.SHOT_CROSSBOW.trigger(serverPlayer, stack); + serverPlayer.awardStat(Stats.ITEM_USED.get(stack.getItem())); +diff --git a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +index d27e83c08c45b8514207f26e48ceb1a91ded94be..9d4460201093fa34a37c118c9a38dcd596448265 100644 +--- a/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java ++++ b/src/main/java/net/minecraft/world/item/ProjectileWeaponItem.java +@@ -46,7 +46,7 @@ public abstract class ProjectileWeaponItem extends Item { + public abstract int getDefaultProjectileRange(); + +- protected void shoot(Level world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target) { ++ protected void shoot(Level world, LivingEntity shooter, InteractionHand hand, ItemStack stack, List projectiles, float speed, float divergence, boolean critical, @Nullable LivingEntity target, boolean relative) { + float f2 = 10.0F; + float f3 = projectiles.size() == 1 ? 0.0F : 20.0F / (float) (projectiles.size() - 1); + float f4 = (float) ((projectiles.size() - 1) % 2) * f3 / 2.0F; +@@ -62,7 +62,7 @@ public abstract class ProjectileWeaponItem extends Item { + // itemstack.hurtAndBreak(this.getDurabilityUse(itemstack1), entityliving, EntityLiving.getSlotForHand(enumhand)); // CraftBukkit - moved down + Projectile iprojectile = this.createProjectile(world, shooter, stack, itemstack1, critical); + +- this.shootProjectile(shooter, iprojectile, i, speed, divergence, f6, target); ++ this.shootProjectile(shooter, iprojectile, i, speed, divergence, f6, target, relative); + // CraftBukkit start + org.bukkit.event.entity.EntityShootBowEvent event = org.bukkit.craftbukkit.event.CraftEventFactory.callEntityShootBowEvent(shooter, stack, itemstack1, iprojectile, hand, speed, true); + if (event.isCancelled()) { +@@ -90,7 +90,7 @@ public abstract class ProjectileWeaponItem extends Item { + return 1; + } + +- protected abstract void shootProjectile(LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target); ++ protected abstract void shootProjectile(LivingEntity shooter, Projectile projectile, int index, float speed, float divergence, float yaw, @Nullable LivingEntity target, boolean relative); + + protected Projectile createProjectile(Level world, LivingEntity shooter, ItemStack weaponStack, ItemStack projectileStack, boolean critical) { + Item item = projectileStack.getItem(); diff --git a/patches/server/0023-Return-Displays-in-getTargetEntity.patch b/patches/server/0023-Return-Displays-in-getTargetEntity.patch index 989515f..a16e327 100644 --- a/patches/server/0023-Return-Displays-in-getTargetEntity.patch +++ b/patches/server/0023-Return-Displays-in-getTargetEntity.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Return Displays in getTargetEntity diff --git a/src/main/java/net/minecraft/world/entity/LivingEntity.java b/src/main/java/net/minecraft/world/entity/LivingEntity.java -index 45b1a182acf6b2aef40b714d31ca125d8f74619a..90da5817fd0e5dc332193944b68fc343915d5b39 100644 +index ef0f118aecf0893e45cb9423a677d7e42496324b..ac75ec5d0d0e9ec36030859d78082e0fa48a9b70 100644 --- a/src/main/java/net/minecraft/world/entity/LivingEntity.java +++ b/src/main/java/net/minecraft/world/entity/LivingEntity.java -@@ -4107,7 +4107,7 @@ public abstract class LivingEntity extends Entity implements Attackable { +@@ -4117,7 +4117,7 @@ public abstract class LivingEntity extends Entity implements Attackable { Vec3 direction = this.getLookAngle(); Vec3 end = start.add(direction.x * maxDistance, direction.y * maxDistance, direction.z * maxDistance); diff --git a/patches/server/0025-Add-CustomBlockUpdateEvent.patch b/patches/server/0024-Add-CustomBlockUpdateEvent.patch similarity index 75% rename from patches/server/0025-Add-CustomBlockUpdateEvent.patch rename to patches/server/0024-Add-CustomBlockUpdateEvent.patch index 955e513..65b25bb 100644 --- a/patches/server/0025-Add-CustomBlockUpdateEvent.patch +++ b/patches/server/0024-Add-CustomBlockUpdateEvent.patch @@ -5,57 +5,47 @@ Subject: [PATCH] Add CustomBlockUpdateEvent diff --git a/src/main/java/net/minecraft/world/level/block/NoteBlock.java b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -index a541dc3a6e373b30fff0abf5305e77854c190f10..80624404c6e88ba2015f6732001dd462173ae214 100644 +index 1d82cfe7af0dc42f88901fb0c44896771fdf8a93..60bb2fe8bb5773d7d0d4279af2216f4c175eca74 100644 --- a/src/main/java/net/minecraft/world/level/block/NoteBlock.java +++ b/src/main/java/net/minecraft/world/level/block/NoteBlock.java -@@ -2,6 +2,8 @@ package net.minecraft.world.level.block; - - import com.mojang.serialization.MapCodec; - import javax.annotation.Nullable; -+ -+import gg.projecteden.parchment.event.block.CustomBlockUpdateEvent; - import net.minecraft.core.BlockPos; - import net.minecraft.core.Direction; - import net.minecraft.core.Holder; -@@ -65,12 +67,14 @@ public class NoteBlock extends Block { +@@ -66,12 +66,14 @@ public class NoteBlock extends Block { @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { -+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), CustomBlockUpdateEvent.UpdateType.INSTRUMENT).callEvent()) return this.defaultBlockState(); ++ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.INSTRUMENT).callEvent()) return this.defaultBlockState(); if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return this.defaultBlockState(); // Paper - place without considering instrument return this.setInstrument(ctx.getLevel(), ctx.getClickedPos(), this.defaultBlockState()); } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { -+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), CustomBlockUpdateEvent.UpdateType.INSTRUMENT, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world.getMinecraftWorld())).callEvent()) return state; + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { ++ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.INSTRUMENT, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world.getMinecraftWorld())).callEvent()) return state; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return state; // Paper - prevent noteblock instrument from updating boolean flag = direction.getAxis() == Direction.Axis.Y; -@@ -79,6 +83,7 @@ public class NoteBlock extends Block { +@@ -80,6 +82,7 @@ public class NoteBlock extends Block { @Override - public void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { -+ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; + protected void neighborChanged(BlockState state, Level world, BlockPos pos, Block sourceBlock, BlockPos sourcePos, boolean notify) { ++ if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) return; // Paper - prevent noteblock powered-state from updating boolean flag1 = world.hasNeighborSignal(pos); -@@ -117,7 +122,9 @@ public class NoteBlock extends Block { - } else if (world.isClientSide) { +@@ -119,7 +122,8 @@ public class NoteBlock extends Block { + if (world.isClientSide) { return InteractionResult.SUCCESS; } else { - if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates) state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating -+ + if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableNoteblockUpdates || -+ !new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), CustomBlockUpdateEvent.UpdateType.PITCH, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating ++ !new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(this.defaultBlockState()), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.PITCH, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) state = (BlockState) state.cycle(NoteBlock.NOTE); // Paper - prevent noteblock note from updating world.setBlock(pos, state, 3); this.playNote(player, state, world, pos); player.awardStat(Stats.TUNE_NOTEBLOCK); diff --git a/src/main/java/net/minecraft/world/level/block/TripWireBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireBlock.java -index 3cb1db27dba902678a5848a1fb5e2c6ec6241e60..950671e715b5353ab919814686fa0c55ae00050e 100644 +index 6fe5be785423a35b6ff4e6206ca281b66845b979..227c969c0c52709ccc85663d3b7dce282bba75b0 100644 --- a/src/main/java/net/minecraft/world/level/block/TripWireBlock.java +++ b/src/main/java/net/minecraft/world/level/block/TripWireBlock.java -@@ -66,21 +66,25 @@ public class TripWireBlock extends Block { +@@ -67,21 +67,25 @@ public class TripWireBlock extends Block { @Override public BlockState getStateForPlacement(BlockPlaceContext ctx) { @@ -70,27 +60,27 @@ index 3cb1db27dba902678a5848a1fb5e2c6ec6241e60..950671e715b5353ab919814686fa0c55 } @Override - public BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + protected BlockState updateShape(BlockState state, Direction direction, BlockState neighborState, LevelAccessor world, BlockPos pos, BlockPos neighborPos) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.SHAPE, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world.getMinecraftWorld())).callEvent()) return state; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return state; // Paper - prevent tripwire from updating return direction.getAxis().isHorizontal() ? (BlockState) state.setValue((Property) TripWireBlock.PROPERTY_BY_DIRECTION.get(direction), this.shouldConnectTo(neighborState, direction)) : super.updateShape(state, direction, neighborState, world, pos, neighborPos); } @Override - public void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + protected void onPlace(BlockState state, Level world, BlockPos pos, BlockState oldState, boolean notify) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.SHAPE, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating if (!oldState.is(state.getBlock())) { this.updateSource(world, pos, state); -@@ -89,6 +93,7 @@ public class TripWireBlock extends Block { +@@ -90,6 +94,7 @@ public class TripWireBlock extends Block { @Override - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { + protected void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.SHAPE, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating if (!moved && !state.is(newState.getBlock())) { - this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), true); // Paper - fix tripwire state inconsistency -@@ -97,6 +102,7 @@ public class TripWireBlock extends Block { + this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true)); +@@ -98,6 +103,7 @@ public class TripWireBlock extends Block { @Override public BlockState playerWillDestroy(Level world, BlockPos pos, BlockState state, Player player) { @@ -98,26 +88,26 @@ index 3cb1db27dba902678a5848a1fb5e2c6ec6241e60..950671e715b5353ab919814686fa0c55 if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return state; // Paper - prevent disarming tripwires if (!world.isClientSide && !player.getMainHandItem().isEmpty() && player.getMainHandItem().is(Items.SHEARS)) { world.setBlock(pos, (BlockState) state.setValue(TripWireBlock.DISARMED, true), 4); -@@ -107,6 +113,7 @@ public class TripWireBlock extends Block { +@@ -108,6 +114,7 @@ public class TripWireBlock extends Block { } private void updateSource(Level world, BlockPos pos, BlockState state) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.SHAPE, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent adjacent tripwires from updating - // Paper start - fix tripwire state inconsistency - this.updateSource(world, pos, state, false); -@@ -146,6 +153,7 @@ public class TripWireBlock extends Block { + Direction[] aenumdirection = new Direction[]{Direction.SOUTH, Direction.WEST}; + int i = aenumdirection.length; +@@ -141,6 +148,7 @@ public class TripWireBlock extends Block { @Override - public void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + protected void entityInside(BlockState state, Level world, BlockPos pos, Entity entity) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent tripwires from detecting collision if (!new io.papermc.paper.event.entity.EntityInsideBlockEvent(entity.getBukkitEntity(), org.bukkit.craftbukkit.block.CraftBlock.at(world, pos)).callEvent()) { return; } // Paper - Add EntityInsideBlockEvent if (!world.isClientSide) { -@@ -157,6 +165,7 @@ public class TripWireBlock extends Block { +@@ -152,6 +160,7 @@ public class TripWireBlock extends Block { @Override - public void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + protected void tick(BlockState state, ServerLevel world, BlockPos pos, RandomSource random) { + if (!new gg.projecteden.parchment.event.block.CustomBlockUpdateEvent(org.bukkit.craftbukkit.block.data.CraftBlockData.fromData(state), gg.projecteden.parchment.event.block.CustomBlockUpdateEvent.UpdateType.POWERED, org.bukkit.craftbukkit.util.CraftLocation.toBukkit(pos, world)).callEvent()) return; if (io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates) return; // Paper - prevent tripwire pressed check if ((Boolean) world.getBlockState(pos).getValue(TripWireBlock.POWERED)) { diff --git a/patches/server/0024-Make-SynchedEntityData-packAll-Public.patch b/patches/server/0024-Make-SynchedEntityData-packAll-Public.patch deleted file mode 100644 index 29d51e9..0000000 --- a/patches/server/0024-Make-SynchedEntityData-packAll-Public.patch +++ /dev/null @@ -1,19 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Blast-MC -Date: Thu, 23 Mar 2023 18:18:43 -0400 -Subject: [PATCH] Make SynchedEntityData#packAll Public - - -diff --git a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -index a043c382c37058032548a5192e17f5f816abe5a6..24fb2e60bcf3722cbc95684ce81952ad4a4f840d 100644 ---- a/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -+++ b/src/main/java/net/minecraft/network/syncher/SynchedEntityData.java -@@ -289,7 +289,7 @@ public class SynchedEntityData { - // We need to pack all as we cannot rely on "non default values" or "dirty" ones. - // Because these values can possibly be desynced on the client. - @Nullable -- private List> packAll() { -+ public List> packAll() { - if (this.isEmpty()) { - return null; - } diff --git a/patches/server/0026-Entity-Data-Storage.patch b/patches/server/0025-Entity-Data-Storage.patch similarity index 85% rename from patches/server/0026-Entity-Data-Storage.patch rename to patches/server/0025-Entity-Data-Storage.patch index 66aa61c..693dd72 100644 --- a/patches/server/0026-Entity-Data-Storage.patch +++ b/patches/server/0025-Entity-Data-Storage.patch @@ -27,10 +27,10 @@ index 0000000000000000000000000000000000000000..30f8fd154136d05267e8737ff04a0be4 + +} diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -index 6de6dad36203479677a29ad61e21bc369d4e5513..4718291014acba4fac77fe18766b46bf9e7b3277 100644 +index 2eb9c584cc77237f1c82d880a51a3f8b51008d73..dd0fa065e97f0ae0bc6a2f66392d6393e4c04b06 100644 --- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java +++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java -@@ -268,6 +268,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface +@@ -281,6 +281,8 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface return false; } @@ -40,12 +40,12 @@ index 6de6dad36203479677a29ad61e21bc369d4e5513..4718291014acba4fac77fe18766b46bf // this.setPlayerList(new DedicatedPlayerList(this, this.registries(), this.playerDataStorage)); // Spigot - moved up this.server.loadPlugins(); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 2c06f3ebf7e1069727387bfc60db30c958c14b5a..95a732d2ff7bf604e1640015552495e14b3ff2a4 100644 +index 25ea45a528612d1a2a2d77293b3802f473a52f38..169fdd2e21a192bfc834785a2e9eae2adde442c3 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java -@@ -160,6 +160,31 @@ import org.bukkit.plugin.PluginManager; +@@ -164,6 +164,31 @@ import org.bukkit.plugin.PluginManager; - public abstract class Entity implements Nameable, EntityAccess, CommandSource, ScoreHolder { + public abstract class Entity implements SyncedDataHolder, Nameable, EntityAccess, CommandSource, ScoreHolder { + @javax.annotation.Nullable + private gg.projecteden.parchment.entity.EntityData storedEntityData; @@ -76,10 +76,10 @@ index 2c06f3ebf7e1069727387bfc60db30c958c14b5a..95a732d2ff7bf604e1640015552495e1 private static final int CURRENT_LEVEL = 2; public boolean preserveMotion = true; // Paper - Fix Entity Teleportation and cancel velocity if teleported; keep initial motion on first setPositionRotation diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 8698104e3eb98e2cc5da5de87a8f538860c1d91d..269ad2696e07a602ca350284c32771a02dcdff08 100644 +index a2d336ceb52b63db5c03432ee7bc94dc6a742b82..a7a95547fc3f1614c7e6efdd0dcd24ba6af27fd8 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -@@ -77,6 +77,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -78,6 +78,10 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { }; // Paper end - Folia schedulers diff --git a/patches/server/0027-Add-Sidebar-Utility.patch b/patches/server/0026-Add-Sidebar-Utility.patch similarity index 97% rename from patches/server/0027-Add-Sidebar-Utility.patch rename to patches/server/0026-Add-Sidebar-Utility.patch index 4b9f3ae..2162b0f 100644 --- a/patches/server/0027-Add-Sidebar-Utility.patch +++ b/patches/server/0026-Add-Sidebar-Utility.patch @@ -183,7 +183,7 @@ index 0000000000000000000000000000000000000000..79900376e8d91792a23dde07fd9f516c + this.connection.send(packet); + } + -+ NumberFormat numberFormat = (display == null || display.isEmpty() || display.isBlank()) ? BlankFormat.INSTANCE : new FixedFormat(Component.literal(StringUtils.colorize(display))); ++ java.util.Optional numberFormat = java.util.Optional.of((display == null || display.isEmpty() || display.isBlank()) ? BlankFormat.INSTANCE : new FixedFormat(Component.literal(StringUtils.colorize(display)))); + ClientboundSetScorePacket packet = new ClientboundSetScorePacket(id + value, this.name, line, null, numberFormat); + + this.connection.send(packet); diff --git a/patches/server/0028-Add-Block-BreakNaturally-Overload.patch b/patches/server/0027-Add-Block-BreakNaturally-Overload.patch similarity index 90% rename from patches/server/0028-Add-Block-BreakNaturally-Overload.patch rename to patches/server/0027-Add-Block-BreakNaturally-Overload.patch index ba6b752..affd156 100644 --- a/patches/server/0028-Add-Block-BreakNaturally-Overload.patch +++ b/patches/server/0027-Add-Block-BreakNaturally-Overload.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Add Block BreakNaturally Overload 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 d6e2b9d4bbd3ba9f9461a02b282c26b95861530a..c05a8383c24e5a2b2d0469e66ca2c8853dc2c076 100644 +index 46330f02d04f9e8a921ddf14bb34e94392c17431..e7695d630e17260708951090da89db7dbb3db09e 100644 --- a/src/main/java/net/minecraft/world/level/block/Block.java +++ b/src/main/java/net/minecraft/world/level/block/Block.java -@@ -307,24 +307,28 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -299,24 +299,28 @@ public class Block extends BlockBehaviour implements ItemLike { return state.getDrops(lootparams_a); } @@ -41,9 +41,9 @@ index d6e2b9d4bbd3ba9f9461a02b282c26b95861530a..c05a8383c24e5a2b2d0469e66ca2c885 - + return new java.util.ArrayList<>(); } + // Paper start - Add BlockBreakBlockEvent - public static boolean dropResources(BlockState state, LevelAccessor world, BlockPos pos, @Nullable BlockEntity blockEntity, BlockPos source) { -@@ -351,15 +355,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -344,15 +348,17 @@ public class Block extends BlockBehaviour implements ItemLike { // Paper start - Properly handle xp dropping dropResources(state, world, pos, blockEntity, entity, tool, true); } @@ -64,7 +64,7 @@ index d6e2b9d4bbd3ba9f9461a02b282c26b95861530a..c05a8383c24e5a2b2d0469e66ca2c885 } public static void popResource(Level world, BlockPos pos, ItemStack stack) { -@@ -373,6 +379,17 @@ public class Block extends BlockBehaviour implements ItemLike { +@@ -366,6 +372,17 @@ public class Block extends BlockBehaviour implements ItemLike { }, stack); } @@ -83,11 +83,11 @@ index d6e2b9d4bbd3ba9f9461a02b282c26b95861530a..c05a8383c24e5a2b2d0469e66ca2c885 int i = direction.getStepX(); int j = direction.getStepY(); diff --git a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -index 4b42ef2a876ea210d948238e63fd7a2b7035bb5b..8d2ea69c52480b6b2e28fa00ba566b7a07cfd224 100644 +index ac11f18690434922179b61ffcc3036dea025b0cb..f9aae49eed516bce00cb968de36ca8b3de038311 100644 --- a/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java +++ b/src/main/java/org/bukkit/craftbukkit/block/CraftBlock.java -@@ -494,6 +494,11 @@ public class CraftBlock implements Block { - +@@ -500,6 +500,11 @@ public class CraftBlock implements Block { + @Override public boolean breakNaturally(ItemStack item, boolean triggerEffect, boolean dropExperience) { + return this.breakNaturally(null, item, triggerEffect, dropExperience); @@ -98,8 +98,8 @@ index 4b42ef2a876ea210d948238e63fd7a2b7035bb5b..8d2ea69c52480b6b2e28fa00ba566b7a // Paper end // Order matters here, need to drop before setting to air so skulls can get their data net.minecraft.world.level.block.state.BlockState iblockdata = this.getNMS(); -@@ -503,7 +508,11 @@ public class CraftBlock implements Block { - +@@ -509,7 +514,12 @@ public class CraftBlock implements Block { + // Modelled off EntityHuman#hasBlock if (block != Blocks.AIR && (item == null || !iblockdata.requiresCorrectToolForDrops() || nmsItem.isCorrectToolForDrops(iblockdata))) { - net.minecraft.world.level.block.Block.dropResources(iblockdata, this.world.getMinecraftWorld(), this.position, this.world.getBlockEntity(this.position), null, nmsItem, false); // Paper - Properly handle xp dropping @@ -108,6 +108,7 @@ index 4b42ef2a876ea210d948238e63fd7a2b7035bb5b..8d2ea69c52480b6b2e28fa00ba566b7a + if (player != null) { + new org.bukkit.event.block.BlockDropItemEvent(this, this.getState(), player, itemEntities.stream().map(i -> (org.bukkit.entity.Item) CraftEntity.getEntity((org.bukkit.craftbukkit.CraftServer) Bukkit.getServer(), i)).toList()).callEvent(); + } ++ // Paper start - improve Block#breanNaturally if (triggerEffect) { if (iblockdata.getBlock() instanceof net.minecraft.world.level.block.BaseFireBlock) {