diff --git a/build.gradle.kts b/build.gradle.kts index 6ecce7edc..ac7194df7 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -1,20 +1,22 @@ +import io.papermc.paperweight.util.constants.* + plugins { java + `maven-publish` id("com.github.johnrengelman.shadow") version "7.1.0" apply false - id("io.papermc.paperweight.patcher") version "1.1.14" + id("io.papermc.paperweight.patcher") version "1.2.0" } repositories { mavenCentral() maven("https://papermc.io/repo/repository/maven-public/") { - content { - onlyForConfigurations("paperclip") - } + content { onlyForConfigurations(PAPERCLIP_CONFIG) } } } dependencies { remapper("net.fabricmc:tiny-remapper:0.6.0:fat") + decompiler("net.minecraftforge:forgeflower:1.5.498.12") paperclip("io.papermc:paperclip:2.0.1") } @@ -57,14 +59,14 @@ subprojects { paperweight { serverProject.set(project(":Purpur-Server")) + remapRepo.set("https://maven.fabricmc.net/") + decompileRepo.set("https://files.minecraftforge.net/maven/") + usePaperUpstream(providers.gradleProperty("paperCommit")) { withPaperPatcher { apiPatchDir.set(layout.projectDirectory.dir("patches/api")) apiOutputDir.set(layout.projectDirectory.dir("Purpur-API")) - remapRepo.set("https://maven.fabricmc.net/") - decompileRepo.set("https://files.minecraftforge.net/maven/") - serverPatchDir.set(layout.projectDirectory.dir("patches/server")) serverOutputDir.set(layout.projectDirectory.dir("Purpur-Server")) } diff --git a/gradle.properties b/gradle.properties index 1d20de164..a0e238cee 100644 --- a/gradle.properties +++ b/gradle.properties @@ -4,7 +4,7 @@ version = 1.17.1-R0.1-SNAPSHOT mcVersion = 1.17.1 packageVersion = 1_17_R1 -paperCommit = cc2ecbc407e3e1b496938c2b2e66b53dba6e4d94 +paperCommit = 22aaf913686c8518e375deb01c6cde74942d3ac2 org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index ffed3a254..e750102e0 100644 --- a/gradle/wrapper/gradle-wrapper.properties +++ b/gradle/wrapper/gradle-wrapper.properties @@ -1,5 +1,5 @@ distributionBase=GRADLE_USER_HOME distributionPath=wrapper/dists -distributionUrl=https\://services.gradle.org/distributions/gradle-7.2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-7.3-bin.zip zipStoreBase=GRADLE_USER_HOME zipStorePath=wrapper/dists diff --git a/patches/server/0001-Airplane-Server-Changes.patch b/patches/server/0001-Airplane-Server-Changes.patch index 27a4d3a2b..ea6789fbd 100644 --- a/patches/server/0001-Airplane-Server-Changes.patch +++ b/patches/server/0001-Airplane-Server-Changes.patch @@ -2220,10 +2220,10 @@ index 505546d32eea4682452dbac02311433157f6a30e..5c7b9ad379f3c272e15648dd16f4df92 public static CompletableFuture> sequenceFailFast(List> futures) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index f274e40681d47a4ca421107c0d76c527279ce682..ff6ab10a1bc11ecc2d83255e51508ea70344b455 100644 +index 5a4172faaf960d48939d6a485719041987df9242..7120a77ec93009faf1f18fd6c9bc020de66a5f73 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1727,7 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop cachedSingleHashSet; // Paper diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index 744f7b717f14a070d5a4be0b35e7f422694fb407..eaffd394a6207d424882e49f07fb989e201b35d7 100644 +index 621ec8e8a197323da6b423fee57c816ac9d7c875..96c15c334f299cc289e55bc4b3286c498ca3334d 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3119,6 +3119,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3120,6 +3120,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser private static final ResourceLocation CUSTOM_UNREGISTER = new ResourceLocation("unregister"); private static final ResourceLocation MINECRAFT_BRAND = new ResourceLocation("brand"); // Paper - Brand support @@ -28,7 +28,7 @@ index 744f7b717f14a070d5a4be0b35e7f422694fb407..eaffd394a6207d424882e49f07fb989e @Override public void handleCustomPayload(ServerboundCustomPayloadPacket packet) { -@@ -3143,6 +3144,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3144,6 +3145,13 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser ServerGamePacketListenerImpl.LOGGER.error("Couldn\'t unregister custom payload", ex); this.disconnect("Invalid payload UNREGISTER!", org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PAYLOAD); // Paper - kick event cause } diff --git a/patches/server/0007-Ridables.patch b/patches/server/0007-Ridables.patch index bcb47134b..83d1c93c3 100644 --- a/patches/server/0007-Ridables.patch +++ b/patches/server/0007-Ridables.patch @@ -22,10 +22,10 @@ index 0cc0242d981586413bcc349df6e6fd3bc09710f1..ae394b3d8b8a157d345e102f5997058d super(x, y, z); } diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 0834a1247fead6600ad92b782e09a3622c2e576f..cba432eba35ab42d91eb8f498fff2adff76d11f7 100644 +index 9270382842146853ab99ef9b8973636fd72e9281..5f65a18ae90ed8d791941cd001918122fd0c6199 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1605,6 +1605,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Paper worldserver.hasEntityMoveEvent = io.papermc.paper.event.entity.EntityMoveEvent.getHandlerList().getRegisteredListeners().length > 0; // Paper @@ -34,7 +34,7 @@ index 0834a1247fead6600ad92b782e09a3622c2e576f..cba432eba35ab42d91eb8f498fff2adf this.profiler.push(() -> { diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java -index 1ae7a10df7460f223413c38ac6bd85dba15fb347..2a7e46b4f65dd4d90dbfa6fdf608b5496fa743c7 100644 +index 7c8eaf0e23b24a484a21b6c4a732b488b246b5b9..09013741e32cc415fa20aa31fbc243ea45bb4e86 100644 --- a/src/main/java/net/minecraft/server/level/ServerLevel.java +++ b/src/main/java/net/minecraft/server/level/ServerLevel.java @@ -200,6 +200,7 @@ public class ServerLevel extends Level implements WorldGenLevel { @@ -73,7 +73,7 @@ index 6c241da9f2711aeade0f3863e4e2bab1f6b242af..6c7628bb6f7f46555650195b19318c7f + } diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index eaffd394a6207d424882e49f07fb989e201b35d7..11c29157ec68c50ad98f502a41b442657a6f9242 100644 +index 96c15c334f299cc289e55bc4b3286c498ca3334d..6a71bbd96f3720321bb840d94bbd8942378fa695 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2426,6 +2426,8 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -86,7 +86,7 @@ index eaffd394a6207d424882e49f07fb989e201b35d7..11c29157ec68c50ad98f502a41b44265 if ((entity instanceof AbstractFish && origItem != null && origItem.asItem() == Items.WATER_BUCKET) && (event.isCancelled() || ServerGamePacketListenerImpl.this.player.getInventory().getSelected() == null || ServerGamePacketListenerImpl.this.player.getInventory().getSelected().getItem() != origItem)) { ServerGamePacketListenerImpl.this.send(new ClientboundAddMobPacket((AbstractFish) entity)); diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 7d17bfd793a53cb44e319ef980c1d9d5b711cd36..141a5c6e78b33a6e99d18d98982d9f7747768263 100644 +index 77bcd37b28524fa933efcb0c9a52557658bae89c..dcbf5d90d0c44ee1326132f4b9612bd2fd1b60b6 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -230,7 +230,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, n @@ -5749,7 +5749,7 @@ index 0bd800e1aeda87689a6c56ee6fadda381c74a4ff..ac89af911596955ac87882069b7010b6 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java -index c0b46ff81994e037e734b75afadcce372c2ddd7f..f69c762c94f67abb9358c61457bdb0bbba0d9cee 100644 +index aaf47d3f58819ead3553973c159c5c6eec4abe43..6d38c0478210bf264afd48be3e7ba7fee296ebc1 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -542,6 +542,15 @@ public class CraftEventFactory { diff --git a/patches/server/0014-Configurable-server-mod-name.patch b/patches/server/0014-Configurable-server-mod-name.patch index f2b34e6fe..07ed14033 100644 --- a/patches/server/0014-Configurable-server-mod-name.patch +++ b/patches/server/0014-Configurable-server-mod-name.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable server mod name diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index cba432eba35ab42d91eb8f498fff2adff76d11f7..7c73c149574f40e8474056fb3a6604c29e84db8e 100644 +index 5f65a18ae90ed8d791941cd001918122fd0c6199..a3420596178e14d4fec55db91c5e264a379323a5 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1728,7 +1728,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop= this.cost.get()) && this.cost.get() > 0; -+ return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() > 0); // Purpur +- return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && this.cost.get() >= 0; // Paper - fix anvil prepare event not working with 0 xp ++ return (player.getAbilities().instabuild || player.experienceLevel >= this.cost.get()) && (bypassCost || this.cost.get() >= 0); // Paper - fix anvil prepare event not working with 0 xp // Purpur } @Override diff --git a/patches/server/0022-Alternative-Keepalive-Handling.patch b/patches/server/0022-Alternative-Keepalive-Handling.patch index 4d9aac887..e8b29a24c 100644 --- a/patches/server/0022-Alternative-Keepalive-Handling.patch +++ b/patches/server/0022-Alternative-Keepalive-Handling.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Alternative Keepalive Handling diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index c0a1e171c882b4adc8b1fa180d4fb3ad9d6959a5..b692c3160c430277dc571207e73e6db44aee314b 100644 +index b836820ce38bbb9b0594c4cedcf716b4cf85485f..68d51846987f4c5707cfc9dec737728770a66f11 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -228,6 +228,7 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @@ -38,7 +38,7 @@ index c0a1e171c882b4adc8b1fa180d4fb3ad9d6959a5..b692c3160c430277dc571207e73e6db4 if (this.keepAlivePending) { if (!this.processedDisconnect && elapsedTime >= KEEPALIVE_LIMIT) { // check keepalive limit, don't fire if already disconnected ServerGamePacketListenerImpl.LOGGER.warn("{} was kicked due to keepalive timeout!", this.player.getScoreboardName()); // more info -@@ -3111,6 +3127,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser +@@ -3112,6 +3128,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser @Override public void handleKeepAlive(ServerboundKeepAlivePacket packet) { diff --git a/patches/server/0046-Signs-allow-color-codes.patch b/patches/server/0046-Signs-allow-color-codes.patch index 9185a2d3d..88470ffdb 100644 --- a/patches/server/0046-Signs-allow-color-codes.patch +++ b/patches/server/0046-Signs-allow-color-codes.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Signs allow color codes diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java -index 724e5975758f3055b210f96fcc208c81b7ff24a4..809bcdf0883d56f3a4b0f7d0be5403ec088b3959 100644 +index 7368e7df44c95aa5daa84e617d13ef140c3f96ed..dd8d1a7d634dd02050022ea178882b849c824c03 100644 --- a/src/main/java/net/minecraft/server/level/ServerPlayer.java +++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java @@ -1462,6 +1462,7 @@ public class ServerPlayer extends Player { @@ -17,13 +17,13 @@ index 724e5975758f3055b210f96fcc208c81b7ff24a4..809bcdf0883d56f3a4b0f7d0be5403ec this.connection.send(new ClientboundBlockUpdatePacket(this.level, sign.getBlockPos())); this.connection.send(new ClientboundOpenSignEditorPacket(sign.getBlockPos())); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index b692c3160c430277dc571207e73e6db44aee314b..175ab7ebcd50f94ae523badb520adb08c52a0fb3 100644 +index 68d51846987f4c5707cfc9dec737728770a66f11..367876813fcf772baf6542e1422b5c9572056a18 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -@@ -3101,11 +3101,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser - } +@@ -3102,11 +3102,16 @@ public class ServerGamePacketListenerImpl implements ServerPlayerConnection, Ser } // Paper end + - if (this.player.isTextFilteringEnabled()) { - lines.add(net.kyori.adventure.text.Component.text(SharedConstants.filterText(currentLine.getFiltered()))); - } else { @@ -37,7 +37,7 @@ index b692c3160c430277dc571207e73e6db44aee314b..175ab7ebcd50f94ae523badb520adb08 + if (player.hasPermission("purpur.sign.magic")) line = line.replaceAll("(?i)&([kr])", "\u00a7$1"); + lines.add(net.kyori.adventure.text.serializer.legacy.LegacyComponentSerializer.legacySection().deserialize(line)); + } else -+ lines.add(net.kyori.adventure.text.Component.text(line)); ++ lines.add(net.kyori.adventure.text.Component.text(line)); + // Purpur end } SignChangeEvent event = new SignChangeEvent((org.bukkit.craftbukkit.block.CraftBlock) player.getWorld().getBlockAt(x, y, z), this.player.getBukkitEntity(), lines); diff --git a/patches/server/0055-Configurable-TPS-Catchup.patch b/patches/server/0055-Configurable-TPS-Catchup.patch index b656913ea..c5b2d9269 100644 --- a/patches/server/0055-Configurable-TPS-Catchup.patch +++ b/patches/server/0055-Configurable-TPS-Catchup.patch @@ -5,10 +5,10 @@ Subject: [PATCH] Configurable TPS Catchup diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 1d9aa96588faff8e79c0a8fec891c5c1af27f4e9..c287e069e325ab61f251494150059ef982577d00 100644 +index dbdb913476c1006801988e05e4389bdd5b724dba..f2cd42fd61421f72a8e3104719408e33e3c72d28 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1282,7 +1282,13 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0.0D) { -+ if (level.purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer) { ((ServerPlayer) this).teleport(MCUtil.toLocation(level, level.getSharedSpawnPos())); return; } // Purpur ++ if (level.purpurConfig.teleportIfOutsideBorder && this instanceof ServerPlayer) { ((ServerPlayer) this).teleport(MCUtil.toLocation(level, ((ServerLevel) level).getSharedSpawnPos())); return; } // Purpur this.hurt(DamageSource.IN_WALL, (float) Math.max(1, Mth.floor(-d0 * d1))); } } diff --git a/patches/server/0136-Implement-TPSBar.patch b/patches/server/0136-Implement-TPSBar.patch index 275c46c66..bdc16d981 100644 --- a/patches/server/0136-Implement-TPSBar.patch +++ b/patches/server/0136-Implement-TPSBar.patch @@ -17,10 +17,10 @@ index 4308cf798c7f97532ee56369a11afe4dbf7a898f..d734addd622f6d429a79df08310bce56 if (environment.includeIntegrated) { diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 67543c4a191c81e322391d36e2f51341767e9b03..a1820f28dcf8f3d641b01e1e7e74b3104782ed8b 100644 +index 0d516ab3e0bd6996330f313635d06b213ffd4aab..450c357c97c15835e0367af9fd0b4ffb231b58bf 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1140,6 +1140,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop