diff --git a/patches/api/Add-Raw-Byte-Entity-Serialization.patch b/patches/api/Add-Raw-Byte-Entity-Serialization.patch index 15cd50a215..87db065cfa 100644 --- a/patches/api/Add-Raw-Byte-Entity-Serialization.patch +++ b/patches/api/Add-Raw-Byte-Entity-Serialization.patch @@ -28,8 +28,8 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java @@ -0,0 +0,0 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent - * @return players in tracking range */ + @Deprecated @NotNull Set getTrackedPlayers(); + + /** diff --git a/patches/api/Expose-Tracked-Players.patch b/patches/api/Expose-Tracked-Players.patch index 942789cd77..6b95a67132 100644 --- a/patches/api/Expose-Tracked-Players.patch +++ b/patches/api/Expose-Tracked-Players.patch @@ -17,7 +17,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + * Returns a set of {@link Player Players} within this entity's tracking range (players that can "see" this entity). + * + * @return players in tracking range ++ * @deprecated slightly misleading name, use {@link #getTrackedBy()} + */ ++ @Deprecated + @NotNull Set getTrackedPlayers(); // Paper end } diff --git a/patches/api/Fix-Spigot-annotation-mistakes.patch b/patches/api/Fix-Spigot-annotation-mistakes.patch index 2a1ec058ea..1cb237483a 100644 --- a/patches/api/Fix-Spigot-annotation-mistakes.patch +++ b/patches/api/Fix-Spigot-annotation-mistakes.patch @@ -434,7 +434,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/entity/LightningStrike.java +++ b/src/main/java/org/bukkit/entity/LightningStrike.java @@ -0,0 +0,0 @@ public interface LightningStrike extends Entity { - public boolean isEffect(); + public void setCausingPlayer(@Nullable Player player); // Spigot start + /** diff --git a/patches/api/More-lightning-API.patch b/patches/api/More-lightning-API.patch index b93eef8f7e..cabd5f3eaf 100644 --- a/patches/api/More-lightning-API.patch +++ b/patches/api/More-lightning-API.patch @@ -8,6 +8,26 @@ diff --git a/src/main/java/org/bukkit/entity/LightningStrike.java b/src/main/jav index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/org/bukkit/entity/LightningStrike.java +++ b/src/main/java/org/bukkit/entity/LightningStrike.java +@@ -0,0 +0,0 @@ public interface LightningStrike extends Entity { + * removed. By default this value is between 1 and 3. + * + * @return the flashes ++ * @deprecated use {@link #getFlashCount()} + */ ++ @Deprecated // Paper + public int getFlashes(); + + /** +@@ -0,0 +0,0 @@ public interface LightningStrike extends Entity { + * has reduced below 0. + * + * @param flashes the flashes ++ * @deprecated use {@link #setFlashCount(int)} + */ ++ @Deprecated // Paper + public void setFlashes(int flashes); + + /** @@ -0,0 +0,0 @@ public interface LightningStrike extends Entity { @Deprecated // Paper Spigot spigot(); @@ -31,22 +51,6 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + void setFlashCount(int flashes); + + /** -+ * Returns the amount of ticks the current flash will do damage for. -+ * Starts with 2 by default, will damage while it is equal to or above 0, with the next flash beginning somewhere between 0 and -9. -+ * -+ * @return ticks the current flash will do damage for -+ */ -+ int getLifeTicks(); -+ -+ /** -+ * Sets the amount of ticks the current flash will do damage/fire for. -+ * Default is 2 for each flash, on which the sound and effect will also be played. -+ * -+ * @param lifeTicks ticks the current flash will do damage for -+ */ -+ void setLifeTicks(int lifeTicks); -+ -+ /** + * Returns the potential entity that caused this lightning strike to spawn in the world. + *

+ * As of implementing this method, only {@link Player}s are capable of causing a lightning strike, however as this @@ -65,19 +69,5 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + */ + @org.jetbrains.annotations.Nullable + Entity getCausingEntity(); -+ -+ /** -+ * Updates the player that caused this lightning to be summoned into the world. -+ * By default, players that channel their {@link Trident} will be the cause of the respective lightning. -+ *

-+ * While the respective getter method {@link #getCausingEntity()} does not guarantee a player as the cause of a -+ * lightning to stay as future proof as possible, as of implementing this method, players are the only entities -+ * that can cause a lightning strike and hence this setter is restricted to players. -+ *

-+ * -+ * @param causingPlayer the player that should be the new cause of this lightning. {@code null} may be passed to -+ * indicate that no player is responsible for this lightning. -+ */ -+ void setCausingPlayer(@org.jetbrains.annotations.Nullable Player causingPlayer); + // Paper end } diff --git a/patches/server/Add-StructuresLocateEvent.patch b/patches/server/Add-StructuresLocateEvent.patch index 6276eee8ee..e5df579357 100644 --- a/patches/server/Add-StructuresLocateEvent.patch +++ b/patches/server/Add-StructuresLocateEvent.patch @@ -36,7 +36,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + public static final class LegacyRegistry extends CraftRegistry { + + public LegacyRegistry(final Registry minecraftRegistry) { -+ super(minecraftRegistry, LegacyRegistry::minecraftToBukkit); ++ super(ConfiguredStructure.class, minecraftRegistry, LegacyRegistry::minecraftToBukkit); + } + + private static @Nullable ConfiguredStructure minecraftToBukkit(NamespacedKey key, Structure nms) { @@ -80,7 +80,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -0,0 +0,0 @@ public class CraftRegistry implements Registry { - return new CraftRegistry<>(registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new); + return new CraftRegistry<>(TrimPattern.class, registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new); } // TODO registry modification API + // Paper start - remove this after a while along with all ConfiguredStructure stuff diff --git a/patches/server/Build-system-changes.patch b/patches/server/Build-system-changes.patch index 0e5b11de58..b240903331 100644 --- a/patches/server/Build-system-changes.patch +++ b/patches/server/Build-system-changes.patch @@ -23,7 +23,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.ow2.asm:asm:9.5") + implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") @@ -0,0 +0,0 @@ dependencies { diff --git a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch index cd4b00b3c3..3a865fb847 100644 --- a/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch +++ b/patches/server/Deobfuscate-stacktraces-in-log-messages-crash-report.patch @@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files implementation("commons-lang:commons-lang:2.6") + implementation("net.fabricmc:mapping-io:0.3.0") // Paper - needed to read mappings for stacktrace deobfuscation - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper @@ -0,0 +0,0 @@ tasks.check { diff --git a/patches/server/Don-t-use-level-random-in-entity-constructors.patch b/patches/server/Don-t-use-level-random-in-entity-constructors.patch index 15de06b0c5..1ecf707d9c 100644 --- a/patches/server/Don-t-use-level-random-in-entity-constructors.patch +++ b/patches/server/Don-t-use-level-random-in-entity-constructors.patch @@ -8,28 +8,6 @@ and constructing an entity off the main thread should be supported. Some entities (for whatever reason) use the level's random in some places. -diff --git a/src/main/java/net/minecraft/world/entity/animal/Bee.java b/src/main/java/net/minecraft/world/entity/animal/Bee.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/entity/animal/Bee.java -+++ b/src/main/java/net/minecraft/world/entity/animal/Bee.java -@@ -0,0 +0,0 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { - - BeeGoToHiveGoal() { - super(); -- this.travellingTicks = Bee.this.level().random.nextInt(10); -+ this.travellingTicks = Bee.this./* level(). */random.nextInt(10); // Paper - use entity random - this.blacklistedTargets = Lists.newArrayList(); - this.setFlags(EnumSet.of(Goal.Flag.MOVE)); - } -@@ -0,0 +0,0 @@ public class Bee extends Animal implements NeutralMob, FlyingAnimal { - - BeeGoToKnownFlowerGoal() { - super(); -- this.travellingTicks = Bee.this.level().random.nextInt(10); -+ this.travellingTicks = Bee.this./* level(). */random.nextInt(10); // Paper - use entity random - this.setFlags(EnumSet.of(Goal.Flag.MOVE)); - } - diff --git a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java b/src/main/java/net/minecraft/world/entity/item/ItemEntity.java index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 --- a/src/main/java/net/minecraft/world/entity/item/ItemEntity.java diff --git a/patches/server/Fix-creating-the-reverse-map-for-loot-table-keys.patch b/patches/server/Fix-creating-the-reverse-map-for-loot-table-keys.patch deleted file mode 100644 index 1147b51d31..0000000000 --- a/patches/server/Fix-creating-the-reverse-map-for-loot-table-keys.patch +++ /dev/null @@ -1,36 +0,0 @@ -From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 -From: Jake Potrebic -Date: Tue, 26 Sep 2023 18:32:49 -0700 -Subject: [PATCH] Fix creating the reverse map for loot table keys - - -diff --git a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -+++ b/src/main/java/net/minecraft/world/level/storage/loot/LootDataManager.java -@@ -0,0 +0,0 @@ public class LootDataManager implements PreparableReloadListener, LootDataResolv - public static final LootDataId EMPTY_LOOT_TABLE_KEY = new LootDataId<>(LootDataType.TABLE, BuiltInLootTables.EMPTY); - private Map, ?> elements = Map.of(); - private Multimap, ResourceLocation> typeKeys = ImmutableMultimap.of(); -- public Map lootTableToKey = ImmutableMap.of(); // CraftBukkit -+ public Map lootTableToKey = ImmutableMap.of(); // CraftBukkit // Paper - only store loot tables because those don't override equals and hashCode - - public LootDataManager() {} - -@@ -0,0 +0,0 @@ public class LootDataManager implements PreparableReloadListener, LootDataResolv - this.elements = map1; - this.typeKeys = com_google_common_collect_immutablemultimap_builder.build(); - // CraftBukkit start - build a reversed registry map -- ImmutableMap.Builder lootTableToKeyBuilder = ImmutableMap.builder(); -- this.elements.forEach((key, lootTable) -> lootTableToKeyBuilder.put((Object) lootTable, key.location())); -+ // Paper start - only create a map for loot tables -+ ImmutableMap.Builder lootTableToKeyBuilder = ImmutableMap.builder(); -+ this.elements.forEach((lootDataId, value) -> { -+ if (lootDataId.type() == LootDataType.TABLE && value instanceof LootTable lootTable) { -+ lootTableToKeyBuilder.put(lootTable, lootDataId.location()); -+ } -+ }); -+ // Paper end - this.lootTableToKey = lootTableToKeyBuilder.build(); - // CraftBukkit end - } diff --git a/patches/server/MC-Dev-fixes.patch b/patches/server/MC-Dev-fixes.patch index 68423bf9a3..aac005c816 100644 --- a/patches/server/MC-Dev-fixes.patch +++ b/patches/server/MC-Dev-fixes.patch @@ -257,16 +257,3 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 return AbortableIterationConsumer.Continuation.ABORT; } } -diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/StructurePiece.java b/src/main/java/net/minecraft/world/level/levelgen/structure/StructurePiece.java -index 0000000000000000000000000000000000000000..0000000000000000000000000000000000000000 100644 ---- a/src/main/java/net/minecraft/world/level/levelgen/structure/StructurePiece.java -+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/StructurePiece.java -@@ -0,0 +0,0 @@ public abstract class StructurePiece { - } - - public static BoundingBox createBoundingBox(Stream pieces) { -- Stream stream1 = pieces.map(StructurePiece::getBoundingBox); -+ Stream stream1 = pieces.map(StructurePiece::getBoundingBox); // Paper - decompile fix - - Objects.requireNonNull(stream1); - return (BoundingBox) BoundingBox.encapsulatingBoxes(stream1::iterator).orElseThrow(() -> { diff --git a/patches/server/More-lightning-API.patch b/patches/server/More-lightning-API.patch index 66059bfeda..cea909eac4 100644 --- a/patches/server/More-lightning-API.patch +++ b/patches/server/More-lightning-API.patch @@ -29,24 +29,9 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + + @Override -+ public int getLifeTicks() { -+ return getHandle().life; -+ } -+ -+ @Override -+ public void setLifeTicks(int lifeTicks) { -+ getHandle().life = lifeTicks; -+ } -+ -+ @Override + public @org.jetbrains.annotations.Nullable org.bukkit.entity.Entity getCausingEntity() { + final var cause = this.getHandle().getCause(); + return cause == null ? null : cause.getBukkitEntity(); + } -+ -+ @Override -+ public void setCausingPlayer(@org.jetbrains.annotations.Nullable org.bukkit.entity.Player causingPlayer) { -+ this.getHandle().setCause(causingPlayer == null ? null : ((CraftPlayer) causingPlayer).getHandle()); -+ } + // Paper end } diff --git a/patches/server/Paper-config-files.patch b/patches/server/Paper-config-files.patch index ebb87db9a2..9ec4808696 100644 --- a/patches/server/Paper-config-files.patch +++ b/patches/server/Paper-config-files.patch @@ -24,7 +24,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito + implementation("org.spongepowered:configurate-yaml:4.1.2") // Paper - config files implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") diff --git a/src/main/java/com/destroystokyo/paper/PaperConfig.java b/src/main/java/com/destroystokyo/paper/PaperConfig.java new file mode 100644 diff --git a/patches/server/Setup-Gradle-project.patch b/patches/server/Setup-Gradle-project.patch index 8ce5c2bbc3..5a0949298d 100644 --- a/patches/server/Setup-Gradle-project.patch +++ b/patches/server/Setup-Gradle-project.patch @@ -48,7 +48,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 + } + implementation("org.ow2.asm:asm:9.5") + implementation("commons-lang:commons-lang:2.6") -+ runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") ++ runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") + runtimeOnly("com.mysql:mysql-connector-j:8.1.0") + + runtimeOnly("org.apache.maven:maven-resolver-provider:3.8.5") @@ -413,7 +413,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 - - org.xerial - sqlite-jdbc -- 3.43.0.0 +- 3.42.0.1 - runtime - - diff --git a/patches/server/TODO-Registry-Modification-API.patch b/patches/server/TODO-Registry-Modification-API.patch index f1f9e76fbf..d66a82ed7b 100644 --- a/patches/server/TODO-Registry-Modification-API.patch +++ b/patches/server/TODO-Registry-Modification-API.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/src/main/java/org/bukkit/craftbukkit/CraftRegistry.java @@ -0,0 +0,0 @@ public class CraftRegistry implements Registry { if (bukkitClass == TrimPattern.class) { - return new CraftRegistry<>(registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new); + return new CraftRegistry<>(TrimPattern.class, registryHolder.registryOrThrow(Registries.TRIM_PATTERN), CraftTrimPattern::new); } + // TODO registry modification API diff --git a/patches/server/Test-changes.patch b/patches/server/Test-changes.patch index c2c65998b0..daedaf7f79 100644 --- a/patches/server/Test-changes.patch +++ b/patches/server/Test-changes.patch @@ -14,7 +14,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 implementation("org.ow2.asm:asm-commons:9.5") // Paper - ASM event executor generation + testImplementation("org.mockito:mockito-core:4.9.0") // Paper - switch to mockito implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") @@ -0,0 +0,0 @@ tasks.compileJava { options.setIncremental(false) diff --git a/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch index 9e30552a50..7214ff5959 100644 --- a/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch +++ b/patches/server/Use-AsyncAppender-to-keep-logging-IO-off-main-thread.patch @@ -10,7 +10,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 +++ b/build.gradle.kts @@ -0,0 +0,0 @@ dependencies { implementation("commons-lang:commons-lang:2.6") - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") + runtimeOnly("com.lmax:disruptor:3.4.4") // Paper diff --git a/patches/server/Use-Velocity-compression-and-cipher-natives.patch b/patches/server/Use-Velocity-compression-and-cipher-natives.patch index d9700d0d77..113dc004f7 100644 --- a/patches/server/Use-Velocity-compression-and-cipher-natives.patch +++ b/patches/server/Use-Velocity-compression-and-cipher-natives.patch @@ -9,7 +9,7 @@ index 0000000000000000000000000000000000000000..00000000000000000000000000000000 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -0,0 +0,0 @@ dependencies { - runtimeOnly("org.xerial:sqlite-jdbc:3.43.0.0") + runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1") runtimeOnly("com.mysql:mysql-connector-j:8.1.0") runtimeOnly("com.lmax:disruptor:3.4.4") // Paper + // Paper start - Use Velocity cipher diff --git a/work/Bukkit b/work/Bukkit index 044d4ee93f..09b1c123eb 160000 --- a/work/Bukkit +++ b/work/Bukkit @@ -1 +1 @@ -Subproject commit 044d4ee93f77d1e9d82c91155d38742640d557f4 +Subproject commit 09b1c123ebe4fe06ced3a6277a100aa8d4f55fcc diff --git a/work/CraftBukkit b/work/CraftBukkit index 99aafc222b..1bf30a4e90 160000 --- a/work/CraftBukkit +++ b/work/CraftBukkit @@ -1 +1 @@ -Subproject commit 99aafc222b5fdc36dc0bc124080d114dcae06cb3 +Subproject commit 1bf30a4e9019c8a6444e1460135c6c33d72f45a2 diff --git a/work/Spigot b/work/Spigot index a0f3d48691..224dad51c7 160000 --- a/work/Spigot +++ b/work/Spigot @@ -1 +1 @@ -Subproject commit a0f3d48691557f3f6e528fc62cd7d48a1974f016 +Subproject commit 224dad51c7c6dbae96729d15807094bff1283ac4