diff --git a/gradle.properties b/gradle.properties index 0cc1cc66..611a8d87 100644 --- a/gradle.properties +++ b/gradle.properties @@ -1,7 +1,7 @@ group = org.dreeam.leaf version = 1.20.4-R0.1-SNAPSHOT -galeCommit = 8a9cf6a7d5ce651518518f8bd06b1c213a2b0290 +galeCommit = 997dad5e84bf241739466a2495ad3b25a44b7ee0 org.gradle.caching = true org.gradle.parallel = true diff --git a/gradle/wrapper/gradle-wrapper.properties b/gradle/wrapper/gradle-wrapper.properties index 354bb4e9..b82aa23a 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.7-rc-2-bin.zip +distributionUrl=https\://services.gradle.org/distributions/gradle-8.7-bin.zip networkTimeout=10000 validateDistributionUrl=true zipStoreBase=GRADLE_USER_HOME diff --git a/patches/api/0003-Purpur-API-Changes.patch b/patches/api/0003-Purpur-API-Changes.patch index c133ff93..8b26d2d4 100644 --- a/patches/api/0003-Purpur-API-Changes.patch +++ b/patches/api/0003-Purpur-API-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur API Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 642956fe6151a87488d861ccb98e4d46d355d599 +Commit: b7e80840c6a96e1132bb0eb01ef34233334461d4 Patches below are removed in this patch: Pufferfish-API-Changes.patch @@ -786,10 +786,10 @@ index 138d2530de2410f4a9424dabd3e5ce0cd1c1dcd2..10a8d64ad2da0be2c14f34c3e7d1957c // Paper start /** diff --git a/src/main/java/org/bukkit/entity/Entity.java b/src/main/java/org/bukkit/entity/Entity.java -index d9929d9311e4b2b0ae13a8f6f13563257263f298..9fee171108e335827c5c164144284eb5a598742c 100644 +index 967125e99adc1b5446f42811d60ef44ba56ef5f5..644f58eeef73bab67ab50b16b87e7c2e798ea2c0 100644 --- a/src/main/java/org/bukkit/entity/Entity.java +++ b/src/main/java/org/bukkit/entity/Entity.java -@@ -1104,4 +1104,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent +@@ -1138,4 +1138,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent */ @NotNull String getScoreboardEntryName(); // Paper end - entity scoreboard name @@ -925,10 +925,10 @@ index bcc6ba95bd21c7972865838c636a03f50b6c1f1a..c3fcd8dd7dbb1e1a18e17c014c1e6411 + // Purpur end } diff --git a/src/main/java/org/bukkit/entity/LivingEntity.java b/src/main/java/org/bukkit/entity/LivingEntity.java -index e67455efc84f1e06d3396291d104ce65fee4591b..744b869c028324d5de30d2d64ab080b050fa3c47 100644 +index 5cb82901a5d0c8ee673501fc53389d526d4a5b6f..91ce069e4f23a115a01b329dcf053ed19dfb83bc 100644 --- a/src/main/java/org/bukkit/entity/LivingEntity.java +++ b/src/main/java/org/bukkit/entity/LivingEntity.java -@@ -1310,4 +1310,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource +@@ -1312,4 +1312,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource */ void setBodyYaw(float bodyYaw); // Paper end diff --git a/patches/api/0005-Bump-Dependencies.patch b/patches/api/0005-Bump-Dependencies.patch index ecaaa0b9..6ff97d39 100644 --- a/patches/api/0005-Bump-Dependencies.patch +++ b/patches/api/0005-Bump-Dependencies.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies diff --git a/build.gradle.kts b/build.gradle.kts -index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47e6a8102f 100644 +index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..ff15203aa5f18ced362d1d6e5d10ed5fa3b90b40 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -9,11 +9,11 @@ java { @@ -19,7 +19,7 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47 -val slf4jVersion = "2.0.9" -val log4jVersion = "2.17.1" +val slf4jVersion = "2.0.12" // Leaf - Bump Dependencies -+val log4jVersion = "2.23.0" // Leaf - Bump Dependencies ++val log4jVersion = "2.23.1" // Leaf - Bump Dependencies val apiAndDocs: Configuration by configurations.creating { attributes { attribute(Category.CATEGORY_ATTRIBUTE, objects.named(Category.DOCUMENTATION)) @@ -28,7 +28,7 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47 dependencies { // api dependencies are listed transitively to API consumers - api("com.google.guava:guava:32.1.2-jre") -+ api("com.google.guava:guava:33.0.0-jre") // Leaf - Bump Dependencies ++ api("com.google.guava:guava:33.1.0-jre") // Leaf - Bump Dependencies api("com.google.code.gson:gson:2.10.1") // Paper start - adventure api("net.md-5:bungeecord-chat:$bungeeCordChatVersion-deprecated+build.18") { @@ -46,13 +46,13 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47 api("org.apache.logging.log4j:log4j-api:$log4jVersion") api("org.slf4j:slf4j-api:$slf4jVersion") - api("io.sentry:sentry:5.4.0") // Pufferfish -+ api("io.sentry:sentry:7.5.0") // Pufferfish // Leaf - Bump Dependencies ++ api("io.sentry:sentry:7.6.0") // Pufferfish // Leaf - Bump Dependencies - implementation("org.ow2.asm:asm:9.5") - implementation("org.ow2.asm:asm-commons:9.5") + // Leaf start - Bump Dependencies -+ implementation("org.ow2.asm:asm:9.6") -+ implementation("org.ow2.asm:asm-commons:9.6") ++ implementation("org.ow2.asm:asm:9.7") ++ implementation("org.ow2.asm:asm-commons:9.7") // Paper end api("org.apache.maven:maven-resolver-provider:3.9.6") // Paper - make API dependency for Paper Plugins @@ -74,7 +74,7 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47 - testImplementation("org.mockito:mockito-core:5.5.0") - testImplementation("org.ow2.asm:asm-tree:9.5") + testImplementation("org.mockito:mockito-core:5.11.0") -+ testImplementation("org.ow2.asm:asm-tree:9.6") ++ testImplementation("org.ow2.asm:asm-tree:9.7") + // Leaf end } @@ -84,7 +84,7 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..a44f86f4be8db0c65de630d1bb2b1d47 options.isDocFilesSubDirs = true options.links( - "https://guava.dev/releases/32.1.2-jre/api/docs/", -+ "https://guava.dev/releases/33.0.0-jre/api/docs/", // Leaf - Bump Dependencies ++ "https://guava.dev/releases/33.1.0-jre/api/docs/", // Leaf - Bump Dependencies "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 // "https://javadoc.io/doc/net.md-5/bungeecord-chat/$bungeeCordChatVersion/", // Paper - don't link to bungee chat diff --git a/patches/generated-api/0001-Purpur-generated-api-Changes.patch b/patches/generated-api/0001-Purpur-generated-api-Changes.patch index 4a8d1e52..5cef10cb 100644 --- a/patches/generated-api/0001-Purpur-generated-api-Changes.patch +++ b/patches/generated-api/0001-Purpur-generated-api-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur generated-api Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 642956fe6151a87488d861ccb98e4d46d355d599 +Commit: b7e80840c6a96e1132bb0eb01ef34233334461d4 diff --git a/com/destroystokyo/paper/entity/ai/VanillaGoal.java b/com/destroystokyo/paper/entity/ai/VanillaGoal.java index 069f2668f5229b0368b796e65eef1648fba0a097..9b991201a2f6cc9feccccf7f4e7bcded64117764 100644 diff --git a/patches/server/0010-Purpur-Server-Changes.patch b/patches/server/0010-Purpur-Server-Changes.patch index ed185eb3..dbc87dce 100644 --- a/patches/server/0010-Purpur-Server-Changes.patch +++ b/patches/server/0010-Purpur-Server-Changes.patch @@ -6,7 +6,7 @@ Subject: [PATCH] Purpur Server Changes Original license: MIT Original project: https://github.com/PurpurMC/Purpur -Commit: 642956fe6151a87488d861ccb98e4d46d355d599 +Commit: b7e80840c6a96e1132bb0eb01ef34233334461d4 Patches below are removed in this patch: Metrics change in Purpur-config-files.patch @@ -748,7 +748,7 @@ index dc15850c30a9cafe1297629862976d58182e04f0..81e4b635de48f526498b47a6a49a9ead if (optionset.has("initSettings")) { // CraftBukkit // CraftBukkit start - SPIGOT-5761: Create bukkit.yml and commands.yml if not present diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index a001fd51a7eb4ff97a84965679170f2da6619a9b..330f0f66ab16c88b2a827f09f99c42671a53a410 100644 +index 220b28e969d5ffd5d3f5bba0e8e2918952528c03..b51f8d8173311a9322f3b63430c99c0e809bf34a 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java @@ -276,6 +276,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { this.print(textArea, scrollPane, message); -@@ -190,11 +228,14 @@ public class MinecraftServerGui extends JComponent { +@@ -224,11 +262,14 @@ public class MinecraftServerGui extends JComponent { flag = (double) jscrollbar.getValue() + jscrollbar.getSize().getHeight() + (double) (MinecraftServerGui.MONOSPACED.getSize() * 4) > (double) jscrollbar.getMaximum(); } @@ -1140,7 +1140,7 @@ index c42a9949c4d37d45883867a54222a7ab33944b39..7f07ffab0835d45d4d170fe171d7fa99 if (flag) { jscrollbar.setValue(Integer.MAX_VALUE); -@@ -202,4 +243,16 @@ public class MinecraftServerGui extends JComponent { +@@ -236,4 +277,16 @@ public class MinecraftServerGui extends JComponent { } } @@ -1708,7 +1708,7 @@ index d791c2f2facfc46d8664225c8b28f95f92df3413..61cd58a5bb3d228b29b9cc4db11be03d try { String channels = payload.toString(com.google.common.base.Charsets.UTF_8); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index e71dfe3db4a2cf616d91c987a38da1509f379c88..fc57aad909a843a7ebd8490f125b424872f71ed5 100644 +index 9025505e7c8ac81d97a553e0ebbeb5727bd69bb6..4a9c82780cf5b54a2e16d092b485aa131d3aea11 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -335,6 +335,20 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl @@ -2136,7 +2136,7 @@ index 9c99b2e365aacb8309f29acb9025faccd2c676b3..1653d154edb38a6450ee51cb5e5b8e3d } } diff --git a/src/main/java/net/minecraft/world/damagesource/DamageSource.java b/src/main/java/net/minecraft/world/damagesource/DamageSource.java -index 1561b85a45f52a8162f43553f8485bfe084b8f1f..ba4466c49a7c1713007140efdc2eb805e2516b4c 100644 +index b26e4d58ea1898a5e4b31c3d6ab33f38835ab2c6..a1724d2d545aa808ea380f910c0190658fc7881b 100644 --- a/src/main/java/net/minecraft/world/damagesource/DamageSource.java +++ b/src/main/java/net/minecraft/world/damagesource/DamageSource.java @@ -27,6 +27,8 @@ public class DamageSource { @@ -2145,10 +2145,10 @@ index 1561b85a45f52a8162f43553f8485bfe084b8f1f..ba4466c49a7c1713007140efdc2eb805 private boolean poison = false; + private boolean scissors = false; // Purpur + private boolean stonecutter = false; // Purpur - private Entity customCausingEntity = null; // This field is a helper for when causing entity damage is not set by vanilla + @Nullable + private Entity customEventDamager = null; // This field is a helper for when causing entity damage is not set by vanilla // Paper - fix DamageSource API - public DamageSource sweep() { -@@ -56,6 +58,26 @@ public class DamageSource { +@@ -57,6 +59,26 @@ public class DamageSource { return this.poison; } @@ -2172,10 +2172,10 @@ index 1561b85a45f52a8162f43553f8485bfe084b8f1f..ba4466c49a7c1713007140efdc2eb805 + } + // Purpur end + - public Entity getCausingEntity() { - return (this.customCausingEntity != null) ? this.customCausingEntity : this.causingEntity; - } -@@ -94,6 +116,8 @@ public class DamageSource { + // Paper start - fix DamageSource API + public @Nullable Entity getCustomEventDamager() { + return (this.customEventDamager != null) ? this.customEventDamager : this.directEntity; +@@ -100,6 +122,8 @@ public class DamageSource { damageSource.withSweep = this.isSweep(); damageSource.poison = this.isPoison(); damageSource.melting = this.isMelting(); @@ -2184,7 +2184,7 @@ index 1561b85a45f52a8162f43553f8485bfe084b8f1f..ba4466c49a7c1713007140efdc2eb805 return damageSource; } // CraftBukkit end -@@ -166,10 +190,19 @@ public class DamageSource { +@@ -172,10 +196,19 @@ public class DamageSource { ItemStack itemstack1 = itemstack; @@ -2454,7 +2454,7 @@ index 1f9e0c139988c4c44a26552881647d36965aa4fa..b8d612d22aca74a08b53393c0723a2ae @Override diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 6db989e08eb5f77389f0496aaabbca33ee5faa20..6b7025b4cacdc2b14662d09f8da78bce04392d17 100644 +index 58bfd5f631330c04b935064d8fd813eb7254e671..73a690978ebe9f262f7310a784baeccdd5e2bf05 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -160,7 +160,7 @@ import org.bukkit.plugin.PluginManager; @@ -6586,7 +6586,7 @@ index b05b560b7570e97bc234b75f26233909fcf575b3..87b6f6b10ba6e3d9c6a42298a2019a52 return "entity.minecraft.tropical_fish.predefined." + variant; } diff --git a/src/main/java/net/minecraft/world/entity/animal/Turtle.java b/src/main/java/net/minecraft/world/entity/animal/Turtle.java -index dbdb6c432448b151fa4421f14235f8bad23dc720..6bf8ed96eaed4a500164f21cb5ead32a7e5a224d 100644 +index 2eb099957a3d0bae3339ff4edbab103fb348abed..2153dac7c7c83ef3192d2b8370b8924ee67383a8 100644 --- a/src/main/java/net/minecraft/world/entity/animal/Turtle.java +++ b/src/main/java/net/minecraft/world/entity/animal/Turtle.java @@ -86,6 +86,43 @@ public class Turtle extends Animal { @@ -13175,7 +13175,7 @@ index 5e82549ea2e80b3968b793b7b4b685c4891e9a91..bb61e1132c28274175215a679befdcfa protected void onHit(HitResult hitResult) { super.onHit(hitResult); diff --git a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java -index 28690877c443ceb2bdf20e6d251c9d32f667814c..326d1db39e3d3cd46cb5a584e2a7b82dd46ff8fa 100644 +index 1fb1e729d6879568d8b4943071fa940325b2e5b0..d9761d8fe746e925a7a32dfc15eb8045c6150fe5 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java +++ b/src/main/java/net/minecraft/world/entity/projectile/ThrownEnderpearl.java @@ -71,10 +71,11 @@ public class ThrownEnderpearl extends ThrowableItemProjectile { @@ -13195,8 +13195,8 @@ index 28690877c443ceb2bdf20e6d251c9d32f667814c..326d1db39e3d3cd46cb5a584e2a7b82d entityplayer.connection.teleport(teleEvent.getTo()); entity.resetFallDistance(); -- entity.hurt(this.damageSources().fall().customCausingEntity(this), 5.0F); // CraftBukkit -+ entity.hurt(this.damageSources().fall().customCausingEntity(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Purpur +- entity.hurt(this.damageSources().fall().customEventDamager(this), 5.0F); // CraftBukkit // Paper - fix DamageSource API ++ entity.hurt(this.damageSources().fall().customEventDamager(this), this.level().purpurConfig.enderPearlDamage); // CraftBukkit // Paper - fix DamageSource API // Purpur } // CraftBukkit end this.level().playSound((Player) null, this.getX(), this.getY(), this.getZ(), SoundEvents.PLAYER_TELEPORT, SoundSource.PLAYERS); @@ -13214,7 +13214,7 @@ index 8ae7d62b72fb72d893e68b02b645d48374595ae6..2bd77524313ae7b32f710e7d197e81a2 if (!this.level().isClientSide && this.pickup == AbstractArrow.Pickup.ALLOWED) { this.spawnAtLocation(this.getPickupItem(), 0.1F); diff --git a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java -index 5c7a6fe97b1f0b55b4a5dddbb684e4424688f866..dba95e8fbe3e39869e1bbbcc75a010da5cf00262 100644 +index 6f49b9b8707d74330adb973e0db3cd5bccf138b6..b4a38621b58e16b2bf48b3d45d85130e8883b477 100644 --- a/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java +++ b/src/main/java/net/minecraft/world/entity/projectile/WitherSkull.java @@ -99,7 +99,7 @@ public class WitherSkull extends AbstractHurtingProjectile { @@ -14858,7 +14858,7 @@ index ed84c87a3f76bc0254c1abb189e6b8b808823465..5bc68b1ef33f297e9a4b1bdd7d69f86a if (range < 0.0D || d < range * range) { return true; diff --git a/src/main/java/net/minecraft/world/level/Explosion.java b/src/main/java/net/minecraft/world/level/Explosion.java -index aa784c1794b80b57fd9c1d738a744e0a8ab39d03..68fc000a76f62d764ee60f0f4e3af3121e6c7a57 100644 +index e2cb206841b346ace1f392d63790fcec03d57076..392b48f4cb7645282bd5eb1fceb947179325289b 100644 --- a/src/main/java/net/minecraft/world/level/Explosion.java +++ b/src/main/java/net/minecraft/world/level/Explosion.java @@ -97,7 +97,7 @@ public class Explosion { @@ -16598,7 +16598,7 @@ index 4b81b0180dfc96fc6a88646838a886ca5b5d301b..2c2e819fb8d92e2de0b4981333219ed5 BeaconBlockEntity.playSound(world, pos, SoundEvents.BEACON_AMBIENT); } diff --git a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java -index 55b0e2bf98a285cdcd30e40d94192b7a1802efd8..7810d763841825f68c60b7471026d71d89726bf0 100644 +index d445ed0895293dd45c36226051f5809be8587ebe..6afaab31539667667481f7e9bfc0c6846abe661a 100644 --- a/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java +++ b/src/main/java/net/minecraft/world/level/block/entity/BeehiveBlockEntity.java @@ -47,7 +47,7 @@ public class BeehiveBlockEntity extends BlockEntity { @@ -16655,7 +16655,7 @@ index 55b0e2bf98a285cdcd30e40d94192b7a1802efd8..7810d763841825f68c60b7471026d71d // CraftBukkit end return false; } else { -@@ -429,9 +451,9 @@ public class BeehiveBlockEntity extends BlockEntity { +@@ -435,9 +457,9 @@ public class BeehiveBlockEntity extends BlockEntity { private BeeReleaseStatus() {} } @@ -17837,7 +17837,7 @@ index d657fd2c507a5b215aeab0a5f3e9c2ee892a27c8..985e9ec21c60a1f47973bd5fc53b96a6 // Paper start @Override diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java -index 0b5a31477e3b76833fb97a455842316193663c8e..897f9f5d25c674f167530810c0b94bca83c3c3cc 100644 +index 7cd7912cecbbbe2c32bfd9b85181115c6d316eb8..83686f2fff044fd6b692da5533a3c97b0cf473b6 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftEntity.java @@ -84,6 +84,11 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { @@ -17863,7 +17863,7 @@ index 0b5a31477e3b76833fb97a455842316193663c8e..897f9f5d25c674f167530810c0b94bca return false; } -@@ -1228,4 +1237,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { +@@ -1252,4 +1261,27 @@ public abstract class CraftEntity implements org.bukkit.entity.Entity { return this.getHandle().getScoreboardName(); } // Paper end - entity scoreboard name @@ -17977,7 +17977,7 @@ index 30d62ee4d5cd2ddacb8783b5bbbf475d592b3e02..9b1dd59df1f7faea2fc74d82d003bd44 + // Purpur end } diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java -index 3f952d1409118535f325f614f1a6507c40efa4d6..fcb2687c7183114ecd36d4a190969f148f71ea8e 100644 +index 993844ee3d76591be38e8d27eba37ff8723443b1..a806028abda555247d9ab4fa3e67a118f550c77e 100644 --- a/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java +++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftLivingEntity.java @@ -490,7 +490,7 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { @@ -17989,7 +17989,7 @@ index 3f952d1409118535f325f614f1a6507c40efa4d6..fcb2687c7183114ecd36d4a190969f14 } // Paper end -@@ -1156,4 +1156,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { +@@ -1155,4 +1155,32 @@ public class CraftLivingEntity extends CraftEntity implements LivingEntity { getHandle().knockback(strength, directionX, directionZ); }; // Paper end @@ -18257,7 +18257,7 @@ index 38b6d2c377800134de592a780b737b45c8096a11..449acd9dc983be1cd51208bc8f8d843d + // 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 4c2e8129481384a143384d327e14320023735b1a..94be4f367f4c6cb2386d0e59d0417f29fca1cec7 100644 +index cb3e9672f375a1a660757a05362729ddb5ca7504..f587c8defaf55ffa77d90deb8b9a3975e8f90ef9 100644 --- a/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java +++ b/src/main/java/org/bukkit/craftbukkit/event/CraftEventFactory.java @@ -592,6 +592,15 @@ public class CraftEventFactory { @@ -18276,7 +18276,7 @@ index 4c2e8129481384a143384d327e14320023735b1a..94be4f367f4c6cb2386d0e59d0417f29 return event; } -@@ -1125,7 +1134,7 @@ public class CraftEventFactory { +@@ -1123,7 +1132,7 @@ public class CraftEventFactory { return CraftEventFactory.callEntityDamageEvent(source.getDirectBlock(), entity, DamageCause.LAVA, bukkitDamageSource, modifiers, modifierFunctions, cancelled); } else if (source.getDirectBlock() != null) { DamageCause cause; @@ -18285,7 +18285,7 @@ index 4c2e8129481384a143384d327e14320023735b1a..94be4f367f4c6cb2386d0e59d0417f29 cause = DamageCause.CONTACT; } else if (source.is(DamageTypes.HOT_FLOOR)) { cause = DamageCause.HOT_FLOOR; -@@ -1183,6 +1192,7 @@ public class CraftEventFactory { +@@ -1181,6 +1190,7 @@ public class CraftEventFactory { EntityDamageEvent event; if (damager != null) { event = new EntityDamageByEntityEvent(damager.getBukkitEntity(), damagee.getBukkitEntity(), cause, bukkitDamageSource, modifiers, modifierFunctions, critical); @@ -23775,10 +23775,10 @@ index 0000000000000000000000000000000000000000..9660716f4162a4441c6e1b0baddef8f5 +} diff --git a/src/main/java/org/purpurmc/purpur/gui/GUIColor.java b/src/main/java/org/purpurmc/purpur/gui/GUIColor.java new file mode 100644 -index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567cd93c17e +index 0000000000000000000000000000000000000000..550222758bf0e7deff26a6e813a860b7be365e87 --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/gui/GUIColor.java -@@ -0,0 +1,54 @@ +@@ -0,0 +1,58 @@ +package org.purpurmc.purpur.gui; + +import net.md_5.bungee.api.ChatColor; @@ -23819,6 +23819,10 @@ index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567 + return color; + } + ++ public ChatColor getChatColor() { ++ return chat; ++ } ++ + public String getCode() { + return chat.toString(); + } @@ -23835,19 +23839,17 @@ index 0000000000000000000000000000000000000000..0f2e7e0b81620c8581949bd5f0bdb567 +} diff --git a/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java b/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java new file mode 100644 -index 0000000000000000000000000000000000000000..33e89b4c00fa8318506b36cbe49fe4e412e0a9a1 +index 0000000000000000000000000000000000000000..062eef57117593e013f85b05561aa8843468133a --- /dev/null +++ b/src/main/java/org/purpurmc/purpur/gui/JColorTextPane.java -@@ -0,0 +1,78 @@ +@@ -0,0 +1,81 @@ +package org.purpurmc.purpur.gui; + +import com.google.common.collect.Sets; -+import net.md_5.bungee.api.ChatColor; +import net.md_5.bungee.api.chat.BaseComponent; +import net.md_5.bungee.api.chat.TextComponent; + -+import javax.swing.JTextPane; -+import javax.swing.Timer; ++import javax.swing.*; +import javax.swing.text.AttributeSet; +import javax.swing.text.BadLocationException; +import javax.swing.text.SimpleAttributeSet; @@ -23856,11 +23858,16 @@ index 0000000000000000000000000000000000000000..33e89b4c00fa8318506b36cbe49fe4e4 +import java.util.Set; + +public class JColorTextPane extends JTextPane { -+ private static final GUIColor DEFAULT_COLOR = GUIColor.BLACK; ++ private static final GUIColor DEFAULT_COLOR; ++ ++ static { ++ DEFAULT_COLOR = UIManager.getSystemLookAndFeelClassName().equals("com.sun.java.swing.plaf.gtk.GTKLookAndFeel") ++ ? GUIColor.WHITE : GUIColor.BLACK; ++ } + + public void append(String msg) { + // TODO: update to use adventure instead -+ BaseComponent[] components = TextComponent.fromLegacyText(DEFAULT_COLOR.getCode() + msg, ChatColor.BLACK); ++ BaseComponent[] components = TextComponent.fromLegacyText(DEFAULT_COLOR.getCode() + msg, DEFAULT_COLOR.getChatColor()); + for (BaseComponent component : components) { + String text = component.toPlainText(); + if (text == null || text.isEmpty()) { diff --git a/patches/server/0011-Purpur-Configurable-server-mod-name.patch b/patches/server/0011-Purpur-Configurable-server-mod-name.patch index 95a1c32d..3ec55058 100644 --- a/patches/server/0011-Purpur-Configurable-server-mod-name.patch +++ b/patches/server/0011-Purpur-Configurable-server-mod-name.patch @@ -7,10 +7,10 @@ Original license: MIT Original project: https://github.com/PurpurMC/Purpur diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java -index 330f0f66ab16c88b2a827f09f99c42671a53a410..16d3fc610fc15da85f3b0652e835d196c010c89d 100644 +index b51f8d8173311a9322f3b63430c99c0e809bf34a..5db1dd834ec47c7a510e86f8eaffde03277a5442 100644 --- a/src/main/java/net/minecraft/server/MinecraftServer.java +++ b/src/main/java/net/minecraft/server/MinecraftServer.java -@@ -1845,7 +1845,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { return !this.canSleepForTickNoOversleep(); // Paper - move oversleep into full server tick -@@ -1409,8 +1406,6 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop { entityplayer.connection.suspendFlushing(); }); @@ -1034,7 +1034,7 @@ index 16d3fc610fc15da85f3b0652e835d196c010c89d..86bb3df2915495387c43cf425e318368 // Paper start - Folia scheduler API ((io.papermc.paper.threadedregions.scheduler.FoliaGlobalRegionScheduler) Bukkit.getGlobalRegionScheduler()).tick(); getAllLevels().forEach(level -> { -@@ -1658,20 +1641,15 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop 0; // Purpur -@@ -1711,14 +1688,12 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop -Date: Sun, 18 Feb 2024 16:00:43 -0500 -Subject: [PATCH] Configurable fix tripwire dupe - - -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 c615d528610168c4ad52730079f3525ab211b89e..89b3f124e4e77ca5c77fd9620cf6799ca3795a0d 100644 ---- a/src/main/java/net/minecraft/world/level/block/TripWireBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/TripWireBlock.java -@@ -91,7 +91,7 @@ public class TripWireBlock extends Block { - public void onRemove(BlockState state, Level world, BlockPos pos, BlockState newState, boolean moved) { - 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), world.galeConfig().gameplayMechanics.fixes.tripwireDuping); // Paper - fix tripwire state inconsistency // Gale - Leaf - make tripwire duping fix configurable -+ this.updateSource(world, pos, (BlockState) state.setValue(TripWireBlock.POWERED, true), true); // Paper - fix tripwire state inconsistency // Gale - Leaf - make tripwire duping fix configurable // Leaf - Configurable fix tripwire dupe - } - } - -diff --git a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java -index 7f2dcf6a9e69779e6f898284b58fb1e32902000c..60aba45e21f669aba15a8bac40b63faedd2b78b7 100644 ---- a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java -+++ b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java -@@ -162,7 +162,7 @@ public class TripWireHookBlock extends Block { - boolean flag7 = (Boolean) iblockdata2.getValue(TripWireBlock.POWERED); - - flag5 |= flag6 && flag7; -- if (k != i || !tripWireBeingRemoved || !flag6) // Paper - fix tripwire state inconsistency; don't update the tripwire again if being removed and not disarmed -+ if (!org.dreeam.leaf.config.modules.fixes.TripwireDupe.enabled || k != i || !tripWireBeingRemoved || !flag6) // Paper - fix tripwire state inconsistency; don't update the tripwire again if being removed and not disarmed // Leaf - Configurable fix tripwire dupe - aiblockdata[k] = iblockdata2; - if (k == i) { - world.scheduleTick(pos, block, 10); -@@ -195,7 +195,7 @@ public class TripWireHookBlock extends Block { - - TripWireHookBlock.emitState(world, pos, flag4, flag5, flag2, flag3); - if (!beingRemoved) { // Paper - fix tripwire state inconsistency -- if (world.getBlockState(pos).getBlock() == Blocks.TRIPWIRE_HOOK) // Paper - Validate tripwire hook placement before update -+ if (!org.dreeam.leaf.config.modules.fixes.TripwireDupe.enabled || world.getBlockState(pos).getBlock() == Blocks.TRIPWIRE_HOOK) // Paper - Validate tripwire hook placement before update // Leaf - Configurable fix tripwire dupe - world.setBlock(pos, (BlockState) iblockdata3.setValue(TripWireHookBlock.FACING, enumdirection), 3); - if (flag1) { - TripWireHookBlock.notifyNeighbors(block, world, pos, enumdirection); -diff --git a/src/main/java/org/dreeam/leaf/config/modules/fixes/TripwireDupe.java b/src/main/java/org/dreeam/leaf/config/modules/fixes/TripwireDupe.java -new file mode 100644 -index 0000000000000000000000000000000000000000..6d4887d9a523086aabb33c6959d3821b675b2e1a ---- /dev/null -+++ b/src/main/java/org/dreeam/leaf/config/modules/fixes/TripwireDupe.java -@@ -0,0 +1,21 @@ -+package org.dreeam.leaf.config.modules.fixes; -+ -+import org.dreeam.leaf.config.ConfigInfo; -+import org.dreeam.leaf.config.EnumConfigCategory; -+import org.dreeam.leaf.config.IConfigModule; -+ -+public class TripwireDupe implements IConfigModule { -+ -+ @Override -+ public EnumConfigCategory getCategory() { -+ return EnumConfigCategory.FIXES; -+ } -+ -+ @Override -+ public String getBaseName() { -+ return "fix_tripwire_dupe"; -+ } -+ -+ @ConfigInfo(baseName = "enabled") -+ public static boolean enabled = true; -+} -diff --git a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -index 53375e9509a0871f337eefc387d1d9cbb53f5c1a..d0cef36361c579570bb69ba6a7225a533e88be79 100644 ---- a/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -+++ b/src/main/java/org/galemc/gale/configuration/GaleWorldConfiguration.java -@@ -107,7 +107,7 @@ public class GaleWorldConfiguration extends ConfigurationPart { - - public Fixes fixes; - public class Fixes extends ConfigurationPart { -- public boolean tripwireDuping = true; // Gale - Leaf - make tripwire duping fix configurable -+ //public boolean tripwireDuping = true; // Gale - Leaf - make tripwire duping fix configurable // Leaf - Move to leaf config - public boolean broadcastCritAnimationsAsTheEntityBeingCritted = false; // Gale - MultiPaper - broadcast crit animations as the entity being critted - public boolean keepMooshroomRotationAfterShearing = true; // Gale - Purpur - fix cow rotation when shearing mooshroom - public boolean checkCanChangeDimensionsBeforeUseEndGateway = false; // Gale - Purpur - end gateway should check if entity can use portal diff --git a/patches/server/0065-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch b/patches/server/0064-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch similarity index 100% rename from patches/server/0065-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch rename to patches/server/0064-Redirect-vanilla-getProfiler-in-PathNavigationRegion.patch diff --git a/patches/server/0066-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch b/patches/server/0065-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch similarity index 100% rename from patches/server/0066-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch rename to patches/server/0065-Fix-MC-249136-lag-when-attempting-to-locate-a-buried.patch diff --git a/patches/server/0067-Fix-MC-2025.patch b/patches/server/0066-Fix-MC-2025.patch similarity index 95% rename from patches/server/0067-Fix-MC-2025.patch rename to patches/server/0066-Fix-MC-2025.patch index cdb20a80..d63217ca 100644 --- a/patches/server/0067-Fix-MC-2025.patch +++ b/patches/server/0066-Fix-MC-2025.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Fix-MC-2025 diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java -index 98e673534927255b20f73238f6c213f256ec1694..caa0052a382196d9a8b9104ca42b1002a8e5c237 100644 +index 4bf569b6b81701ea2d45d090438686c5dbbd1744..434965c7ff6fdce1076952fa1f96334d7c362ba4 100644 --- a/src/main/java/net/minecraft/world/entity/Entity.java +++ b/src/main/java/net/minecraft/world/entity/Entity.java @@ -2566,6 +2566,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S diff --git a/patches/server/0068-Fix-MC-65198.patch b/patches/server/0067-Fix-MC-65198.patch similarity index 100% rename from patches/server/0068-Fix-MC-65198.patch rename to patches/server/0067-Fix-MC-65198.patch diff --git a/patches/server/0069-Fix-MC-172047.patch b/patches/server/0068-Fix-MC-172047.patch similarity index 100% rename from patches/server/0069-Fix-MC-172047.patch rename to patches/server/0068-Fix-MC-172047.patch diff --git a/patches/server/0070-Including-5s-in-getTPS.patch b/patches/server/0069-Including-5s-in-getTPS.patch similarity index 100% rename from patches/server/0070-Including-5s-in-getTPS.patch rename to patches/server/0069-Including-5s-in-getTPS.patch diff --git a/patches/server/0071-Remove-useless-creating-stats-json-bases-on-player-n.patch b/patches/server/0070-Remove-useless-creating-stats-json-bases-on-player-n.patch similarity index 100% rename from patches/server/0071-Remove-useless-creating-stats-json-bases-on-player-n.patch rename to patches/server/0070-Remove-useless-creating-stats-json-bases-on-player-n.patch diff --git a/patches/server/0072-Fix-NPE-during-creating-GUI-graph.patch b/patches/server/0071-Fix-NPE-during-creating-GUI-graph.patch similarity index 100% rename from patches/server/0072-Fix-NPE-during-creating-GUI-graph.patch rename to patches/server/0071-Fix-NPE-during-creating-GUI-graph.patch diff --git a/patches/server/0073-Don-t-throw-exception-on-missing-ResourceKey-value.patch b/patches/server/0072-Don-t-throw-exception-on-missing-ResourceKey-value.patch similarity index 100% rename from patches/server/0073-Don-t-throw-exception-on-missing-ResourceKey-value.patch rename to patches/server/0072-Don-t-throw-exception-on-missing-ResourceKey-value.patch diff --git a/patches/server/0074-Improve-Purpur-AFK-system.patch b/patches/server/0073-Improve-Purpur-AFK-system.patch similarity index 99% rename from patches/server/0074-Improve-Purpur-AFK-system.patch rename to patches/server/0073-Improve-Purpur-AFK-system.patch index b51b896e..0d579683 100644 --- a/patches/server/0074-Improve-Purpur-AFK-system.patch +++ b/patches/server/0073-Improve-Purpur-AFK-system.patch @@ -42,7 +42,7 @@ index 9950580f3d0387b142576bfdb6a8f74365c12878..9b87e62426f8805247b86eef0fe2939c } else { getBukkitEntity().setPlayerListName(prefix + scoreboardName + suffix); diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java -index d3a31ca2b926fe809d84cc8b28767c1c69896fe4..a02aa96200eba1012a26d6f4370a6eb9ad738a03 100644 +index e11de0bca95fe380b58553e1d963fd3687769a91..bf14f2a0eef3d3964d4ce1f09473e5106f20ebb8 100644 --- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java +++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java @@ -2264,8 +2264,33 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl diff --git a/patches/server/0075-Ability-to-use-Virtual-Thread-for-async-scheduler.patch b/patches/server/0074-Ability-to-use-Virtual-Thread-for-async-scheduler.patch similarity index 100% rename from patches/server/0075-Ability-to-use-Virtual-Thread-for-async-scheduler.patch rename to patches/server/0074-Ability-to-use-Virtual-Thread-for-async-scheduler.patch diff --git a/patches/server/0076-Use-a-shadow-fork-that-supports-Java-21.patch b/patches/server/0075-Use-a-shadow-fork-that-supports-Java-21.patch similarity index 85% rename from patches/server/0076-Use-a-shadow-fork-that-supports-Java-21.patch rename to patches/server/0075-Use-a-shadow-fork-that-supports-Java-21.patch index 00a08d8e..c4ca113a 100644 --- a/patches/server/0076-Use-a-shadow-fork-that-supports-Java-21.patch +++ b/patches/server/0075-Use-a-shadow-fork-that-supports-Java-21.patch @@ -5,7 +5,7 @@ Subject: [PATCH] Use a shadow fork that supports Java 21 diff --git a/build.gradle.kts b/build.gradle.kts -index 9d7cc530187263c6a4ed99df2c79d66d76749cc6..6497e2ce6720afb583dbfac5be2b7a14f8f2b632 100644 +index 5c14f2a186509e9f4a7a525320cc7492be939b7c..6eaa616acb8c6f21c6554b0bead67ac7cf613933 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -3,7 +3,7 @@ import io.papermc.paperweight.util.* diff --git a/patches/server/0077-Chat-Image-protocol.patch b/patches/server/0076-Chat-Image-protocol.patch similarity index 100% rename from patches/server/0077-Chat-Image-protocol.patch rename to patches/server/0076-Chat-Image-protocol.patch diff --git a/patches/server/0078-asteor-bar-protocol.patch b/patches/server/0077-Asteor-Bar-protocol.patch similarity index 99% rename from patches/server/0078-asteor-bar-protocol.patch rename to patches/server/0077-Asteor-Bar-protocol.patch index c9158dee..49eb5dde 100644 --- a/patches/server/0078-asteor-bar-protocol.patch +++ b/patches/server/0077-Asteor-Bar-protocol.patch @@ -1,7 +1,7 @@ From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: HaHaWTH Date: Fri, 22 Mar 2024 04:36:25 +0800 -Subject: [PATCH] asteor-bar-protocol +Subject: [PATCH] Asteor Bar protocol diff --git a/src/main/java/org/dreeam/leaf/config/modules/network/ProtocolSupport.java b/src/main/java/org/dreeam/leaf/config/modules/network/ProtocolSupport.java