mirror of
https://github.com/Winds-Studio/Leaf.git
synced 2025-12-19 15:09:25 +00:00
Updated Upstream (Gale/Purpur/Dependencies)
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
## 📥 Download
|
||||
You can find latest successful build in [GitHub Action](https://github.com/Winds-Studio/Leaf/actions) or [Releases](https://github.com/Winds-Studio/Leaf/releases)
|
||||
|
||||
**Please note Java >= 17 is required, Java >= 21 is recommended.**
|
||||
**Please note Java >= 17 is required, Java 21 is recommended.**
|
||||
|
||||
## 📦 Building
|
||||
Building a Paperclip JAR for distribution:
|
||||
|
||||
@@ -3,7 +3,7 @@ plugins {
|
||||
`maven-publish`
|
||||
id("com.github.johnrengelman.shadow") version "8.1.1" apply false // paperweight required this original shadow
|
||||
id("io.github.goooler.shadow") version "8.1.7" apply false
|
||||
id("io.papermc.paperweight.patcher") version "1.5.14-SNAPSHOT"
|
||||
id("io.papermc.paperweight.patcher") version "1.5.16-SNAPSHOT"
|
||||
}
|
||||
|
||||
val paperMavenPublicUrl = "https://repo.papermc.io/repository/maven-public/"
|
||||
@@ -17,7 +17,7 @@ repositories {
|
||||
|
||||
dependencies {
|
||||
remapper("net.fabricmc:tiny-remapper:0.10.1:fat")
|
||||
decompiler("org.vineflower:vineflower:1.10.0")
|
||||
decompiler("org.vineflower:vineflower:1.10.1")
|
||||
paperclip("io.papermc:paperclip:3.0.4-SNAPSHOT")
|
||||
}
|
||||
|
||||
|
||||
@@ -1,7 +1,7 @@
|
||||
group = org.dreeam.leaf
|
||||
version = 1.20.4-R0.1-SNAPSHOT
|
||||
|
||||
galeCommit = 634079471c530a62f3280dfeddc00f8f1d25532e
|
||||
galeCommit = 53ce7ab06d7eccb91990b163db28c60736153bc7
|
||||
|
||||
org.gradle.caching = true
|
||||
org.gradle.parallel = true
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Leaf config files
|
||||
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||
index bb73389fd8ffcc2fb89ece44e7704f87baa3058e..55830a5621b5f1b59dc7285425e1fd949a4aea83 100644
|
||||
index e0615e17765406bab75b5d16f9056d6821c577ee..80499cd30914ca97576532bd86967cbfaabe2577 100644
|
||||
--- a/src/main/java/org/bukkit/Server.java
|
||||
+++ b/src/main/java/org/bukkit/Server.java
|
||||
@@ -2282,6 +2282,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
@@ -2288,6 +2288,14 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
|
||||
// Paper end
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Original license: GPL v3
|
||||
Original project: https://github.com/pufferfish-gg/Pufferfish
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index f2cbc7a803177a901135cf020239031979292c6c..1bbc94b97662aa0367c9b5bac19bec313f158c14 100644
|
||||
index 810100ac785d49bd332455de23690d37e5fbbb81..4a9deabf03236533aa86860326f0da21650dd38f 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -51,6 +51,7 @@ dependencies {
|
||||
@@ -16,8 +16,8 @@ index f2cbc7a803177a901135cf020239031979292c6c..1bbc94b97662aa0367c9b5bac19bec31
|
||||
api("org.slf4j:slf4j-api:$slf4jVersion")
|
||||
+ api("io.sentry:sentry:5.4.0") // Pufferfish
|
||||
|
||||
implementation("org.ow2.asm:asm:9.5")
|
||||
implementation("org.ow2.asm:asm-commons:9.5")
|
||||
implementation("org.ow2.asm:asm:9.7")
|
||||
implementation("org.ow2.asm:asm-commons:9.7")
|
||||
diff --git a/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java b/src/main/java/gg/pufferfish/pufferfish/sentry/SentryContext.java
|
||||
new file mode 100644
|
||||
index 0000000000000000000000000000000000000000..364e20dfb1a141e86ae64663cc5f31ac6be3306f
|
||||
|
||||
@@ -34,10 +34,10 @@ index a736d7bcdc5861a01b66ba36158db1c716339346..22fc165fd9c95f0f3ae1be7a0857e48c
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/org/bukkit/Bukkit.java b/src/main/java/org/bukkit/Bukkit.java
|
||||
index 12412ffbfa05f91d46509a90fe3af7085349eb63..69e1800274218115877870b43d44cecd77f27c83 100644
|
||||
index d8201747ede92a0123eec012844a7a674e6947f5..e0ecc43fc6a952b4897c530af2e89f2c0558740e 100644
|
||||
--- a/src/main/java/org/bukkit/Bukkit.java
|
||||
+++ b/src/main/java/org/bukkit/Bukkit.java
|
||||
@@ -2945,4 +2945,127 @@ public final class Bukkit {
|
||||
@@ -2951,4 +2951,127 @@ public final class Bukkit {
|
||||
public static Server.Spigot spigot() {
|
||||
return server.spigot();
|
||||
}
|
||||
@@ -256,10 +256,10 @@ index 918a045165cdcde264bc24082b7afebb407271de..687d11619379aead7f665d4a5f8f8bcc
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/Material.java b/src/main/java/org/bukkit/Material.java
|
||||
index f9af60356da4668cec8b24e73f5747ab82e35a91..b304ad1307cdd6785653b1eab9781e070fb14c5a 100644
|
||||
index ec117c47401ea1a04beb0e5ee9d4d394db7c5c4e..5b058d709751a5b720e209931774e09fcc9c960c 100644
|
||||
--- a/src/main/java/org/bukkit/Material.java
|
||||
+++ b/src/main/java/org/bukkit/Material.java
|
||||
@@ -11557,4 +11557,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
|
||||
@@ -11559,4 +11559,40 @@ public enum Material implements Keyed, Translatable, net.kyori.adventure.transla
|
||||
public boolean isEnabledByFeature(@NotNull World world) {
|
||||
return Bukkit.getDataPackManager().isEnabledByFeature(this, world);
|
||||
}
|
||||
@@ -412,10 +412,10 @@ index 30298a629b39bd43ce14b414fc697b2dfcbea89c..ce00af9121de7a910aaea4e0685a06d4
|
||||
+ // Purpur end - OfflinePlayer API
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/Server.java b/src/main/java/org/bukkit/Server.java
|
||||
index 55830a5621b5f1b59dc7285425e1fd949a4aea83..bba0c8d28b0d02bd85d279b74a83aa8bf66c37d4 100644
|
||||
index 80499cd30914ca97576532bd86967cbfaabe2577..98311ea5696f722b431444a569f0f172a9d32973 100644
|
||||
--- a/src/main/java/org/bukkit/Server.java
|
||||
+++ b/src/main/java/org/bukkit/Server.java
|
||||
@@ -2282,6 +2282,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
@@ -2288,6 +2288,18 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
|
||||
// Paper end
|
||||
|
||||
@@ -434,7 +434,7 @@ index 55830a5621b5f1b59dc7285425e1fd949a4aea83..bba0c8d28b0d02bd85d279b74a83aa8b
|
||||
// Leaf start
|
||||
@NotNull
|
||||
public org.bukkit.configuration.file.YamlConfiguration getLeafConfig()
|
||||
@@ -2599,4 +2611,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
@@ -2605,4 +2617,111 @@ public interface Server extends PluginMessageRecipient, net.kyori.adventure.audi
|
||||
long getLastTickOversleepTime();
|
||||
// Gale end - YAPFA - last tick time - API
|
||||
|
||||
@@ -547,10 +547,10 @@ index 55830a5621b5f1b59dc7285425e1fd949a4aea83..bba0c8d28b0d02bd85d279b74a83aa8b
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/World.java b/src/main/java/org/bukkit/World.java
|
||||
index c5fe36050eeaff80cfb989fe2f38370215af6fe5..565ce4b0c5eb300953aaefa786b9f8938c771f2a 100644
|
||||
index 35fb5047dd8a8521586a9ca9f8d70881355fb7f5..c2fc3c7158b65a875515afda0d69e2d6529db976 100644
|
||||
--- a/src/main/java/org/bukkit/World.java
|
||||
+++ b/src/main/java/org/bukkit/World.java
|
||||
@@ -4213,6 +4213,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
||||
@@ -4222,6 +4222,86 @@ public interface World extends RegionAccessor, WorldInfo, PluginMessageRecipient
|
||||
@Nullable
|
||||
public DragonBattle getEnderDragonBattle();
|
||||
|
||||
@@ -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 967125e99adc1b5446f42811d60ef44ba56ef5f5..644f58eeef73bab67ab50b16b87e7c2e798ea2c0 100644
|
||||
index 23def071492ccd715693d534cc506936e18f0f46..51ae4b559a6ebb5c324ac029c86e5b5a6b894d7e 100644
|
||||
--- a/src/main/java/org/bukkit/entity/Entity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/Entity.java
|
||||
@@ -1138,4 +1138,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
|
||||
@@ -1144,4 +1144,42 @@ public interface Entity extends Metadatable, CommandSender, Nameable, Persistent
|
||||
*/
|
||||
@NotNull String getScoreboardEntryName();
|
||||
// Paper end - entity scoreboard name
|
||||
@@ -925,13 +925,13 @@ 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 5cb82901a5d0c8ee673501fc53389d526d4a5b6f..91ce069e4f23a115a01b329dcf053ed19dfb83bc 100644
|
||||
index 65112eae8b92344796850b1e4c89e75443eab2fe..5369d802d37863a1efc0c031520147ceedcadc78 100644
|
||||
--- a/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
+++ b/src/main/java/org/bukkit/entity/LivingEntity.java
|
||||
@@ -1312,4 +1312,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
@@ -1445,4 +1445,41 @@ public interface LivingEntity extends Attributable, Damageable, ProjectileSource
|
||||
*/
|
||||
void setBodyYaw(float bodyYaw);
|
||||
// Paper end
|
||||
// Paper end - body yaw API
|
||||
+
|
||||
+ // Purpur start
|
||||
+ /**
|
||||
@@ -1301,7 +1301,7 @@ index f680545b6b59bf8d2ad154b0472dda4cba42a162..3709ff939acdcaec124c2875a37c4a07
|
||||
+ // Purpur end
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/inventory/ItemStack.java b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
index 245a730a54c4b241a9a67eccceefafd2763bd238..516b3bcca3974ad4f4ae74747db0d7d094714e55 100644
|
||||
index 7414b4fa690d393a8e9557cc1fd1ce12fa426940..e0f8cab6d78110a43c29d3b5256539d62ba03abf 100644
|
||||
--- a/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
+++ b/src/main/java/org/bukkit/inventory/ItemStack.java
|
||||
@@ -17,6 +17,18 @@ import org.bukkit.inventory.meta.ItemMeta;
|
||||
@@ -1323,7 +1323,7 @@ index 245a730a54c4b241a9a67eccceefafd2763bd238..516b3bcca3974ad4f4ae74747db0d7d0
|
||||
|
||||
/**
|
||||
* Represents a stack of items.
|
||||
@@ -1033,4 +1045,636 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
|
||||
@@ -1061,4 +1073,636 @@ public class ItemStack implements Cloneable, ConfigurationSerializable, Translat
|
||||
return Bukkit.getUnsafe().computeTooltipLines(this, tooltipContext, player);
|
||||
}
|
||||
// Paper end - expose itemstack tooltip lines
|
||||
|
||||
@@ -2830,7 +2830,7 @@ index 3e61a926620a67daec3af54b72a1b911eaef2ed4..00000000000000000000000000000000
|
||||
- }
|
||||
-}
|
||||
diff --git a/src/main/java/org/bukkit/UnsafeValues.java b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
index 9a65c4f614a6c358d74491794d7b25172a00bc11..c4216af83db0529650f190a97f55a55b523161a7 100644
|
||||
index b9a07b2db8a3dcdb72c33c8ceda129921b2c02f1..d2e8e1f000277343801261d2dde4d1e5b91035ea 100644
|
||||
--- a/src/main/java/org/bukkit/UnsafeValues.java
|
||||
+++ b/src/main/java/org/bukkit/UnsafeValues.java
|
||||
@@ -40,7 +40,6 @@ public interface UnsafeValues {
|
||||
@@ -2841,7 +2841,7 @@ index 9a65c4f614a6c358d74491794d7b25172a00bc11..c4216af83db0529650f190a97f55a55b
|
||||
Material toLegacy(Material material);
|
||||
|
||||
Material fromLegacy(Material material);
|
||||
@@ -139,11 +138,6 @@ public interface UnsafeValues {
|
||||
@@ -141,11 +140,6 @@ public interface UnsafeValues {
|
||||
// Paper end
|
||||
|
||||
// Paper start
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..ff15203aa5f18ced362d1d6e5d10ed5fa3b90b40 100644
|
||||
index 4a9deabf03236533aa86860326f0da21650dd38f..5cd6853b555778fd198280790968fee390c85a8f 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -9,11 +9,11 @@ java {
|
||||
@@ -18,7 +18,7 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..ff15203aa5f18ced362d1d6e5d10ed5f
|
||||
val adventureVersion = "4.16.0"
|
||||
-val slf4jVersion = "2.0.9"
|
||||
-val log4jVersion = "2.17.1"
|
||||
+val slf4jVersion = "2.0.12" // Leaf - Bump Dependencies
|
||||
+val slf4jVersion = "2.0.13" // Leaf - Bump Dependencies
|
||||
+val log4jVersion = "2.23.1" // Leaf - Bump Dependencies
|
||||
val apiAndDocs: Configuration by configurations.creating {
|
||||
attributes {
|
||||
@@ -41,22 +41,16 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..ff15203aa5f18ced362d1d6e5d10ed5f
|
||||
apiAndDocs(platform("net.kyori:adventure-bom:$adventureVersion"))
|
||||
apiAndDocs("net.kyori:adventure-api")
|
||||
apiAndDocs("net.kyori:adventure-text-minimessage")
|
||||
@@ -51,10 +51,11 @@ dependencies {
|
||||
@@ -51,7 +51,7 @@ dependencies {
|
||||
apiAndDocs("net.kyori:adventure-text-logger-slf4j")
|
||||
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.6.0") // Pufferfish // Leaf - Bump Dependencies
|
||||
+ api("io.sentry:sentry:7.8.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.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
|
||||
@@ -66,16 +67,17 @@ dependencies {
|
||||
implementation("org.ow2.asm:asm:9.7")
|
||||
implementation("org.ow2.asm:asm-commons:9.7")
|
||||
@@ -66,13 +66,15 @@ dependencies {
|
||||
testCompileOnly(annotations)
|
||||
|
||||
// Paper start - add checker
|
||||
@@ -68,17 +62,13 @@ index 2ea90f77c8ad7a36c51df0dfe1d333b10a765255..ff15203aa5f18ced362d1d6e5d10ed5f
|
||||
|
||||
- testImplementation("org.apache.commons:commons-lang3:3.12.0")
|
||||
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
||||
+ // Leaf start - Bump Dependencies
|
||||
+ testImplementation("org.apache.commons:commons-lang3:3.14.0")
|
||||
+ testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||
testImplementation("org.hamcrest:hamcrest:2.2")
|
||||
- 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.7")
|
||||
+ // Leaf end
|
||||
}
|
||||
|
||||
// Paper start
|
||||
testImplementation("org.hamcrest:hamcrest:2.2")
|
||||
testImplementation("org.mockito:mockito-core:5.11.0")
|
||||
testImplementation("org.ow2.asm:asm-tree:9.7")
|
||||
@@ -143,12 +145,12 @@ tasks.withType<Javadoc> {
|
||||
options.use()
|
||||
options.isDocFilesSubDirs = true
|
||||
|
||||
@@ -20,7 +20,7 @@ and, in my opinion, worth the low risk of minor mob-spawning-related
|
||||
inconsistencies.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 43d362ec5444941b7d897bc3205375ac44c44924..3cfc1e3d332efd3abd5b55b59fb7bcf64b45dfcd 100644
|
||||
index 46a223d184bdc91058b90692df4002ed1da4516c..90eb43f08fe781aafe2f8ac7921bdf148178761b 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -297,6 +297,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -158,10 +158,10 @@ index 68ad7cb06d85c428f3560f95ed46bca32187e729..6587ce30d88983cb42822e6ff3e01204
|
||||
|
||||
// Gale start - MultiPaper - skip unnecessary mob spawning computations
|
||||
diff --git a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java
|
||||
index 4cdfc433df67afcd455422e9baf56f167dd712ae..57fcf3910f45ce371ac2e237b277b1034caaac4e 100644
|
||||
index 83a39f900551e39d5af6f17a339a386ddee4feef..0c8c534fc69172387f188af5282accfed7597ac7 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/entity/EntityTickList.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/entity/EntityTickList.java
|
||||
@@ -8,7 +8,7 @@ import javax.annotation.Nullable;
|
||||
@@ -9,7 +9,7 @@ import javax.annotation.Nullable;
|
||||
import net.minecraft.world.entity.Entity;
|
||||
|
||||
public class EntityTickList {
|
||||
|
||||
@@ -30,7 +30,7 @@ You should have received a copy of the GNU General Public License
|
||||
along with this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 8d517617e38edf7b6cd49f32f404f2f80c014f66..1fe45a264032047c67d84ab387e230af2f0eff20 100644
|
||||
index ab0ac738f3e3d231d8fbc663230892d3a5f07660..a26a756c35c77830a3407ae0dfbf8509141f30fa 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -880,6 +880,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -42,7 +42,7 @@ index 8d517617e38edf7b6cd49f32f404f2f80c014f66..1fe45a264032047c67d84ab387e230af
|
||||
if (false && this.shouldDiscardEntity(entity)) { // CraftBukkit - We prevent spawning in general, so this butchering is not needed
|
||||
entity.discard();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
index 4027ea7cb55dcb70c96cc2ada3b0da09c1dda8ad..1482310673c2c2ac9180ea80a96c24d4094e11c9 100644
|
||||
index 7e84b05e8e4261dd36db725ae83dc0a1b48613fd..3b7a00ab7ad3c1b9ce8ce323154d67cbbfb724f9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||
@@ -504,6 +504,11 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||
@@ -102,10 +102,10 @@ index a676228a7f4d8d4b7e54a641c1df1f1b0d262f10..43beb25bb42f19832da83f6f7f022cb5
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java
|
||||
index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe048d6e282 100644
|
||||
index 758f62416ca9c02351348ac0d41deeb4624abc0e..69130969c9a434ec2361e573c9a1ec9f462dfda2 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/VillagerPanicTrigger.java
|
||||
@@ -37,7 +37,11 @@ public class VillagerPanicTrigger extends Behavior<Villager> {
|
||||
@@ -36,7 +36,11 @@ public class VillagerPanicTrigger extends Behavior<Villager> {
|
||||
|
||||
@Override
|
||||
protected void tick(ServerLevel world, Villager entity, long time) {
|
||||
@@ -117,12 +117,12 @@ index 646d9a121d908a2fc3e4e302484dd5cd1bfc6804..e546ecdccde352502e26a8668eaaafe0
|
||||
+ // Pufferfish end
|
||||
entity.spawnGolemIfNeeded(world, time, 3);
|
||||
}
|
||||
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||
index 5e7b978a3019bc31ef94c1c666a3abdf380ced5c..8cc0d90665e64c81b15fc8aa251f2682b197e9f2 100644
|
||||
index fc16161d352221be549760dcdd8c62dfba6a6798..011e04a06f4583722d97e4bc847bd8445910692a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/GoalSelector.java
|
||||
@@ -51,9 +51,12 @@ public class GoalSelector {
|
||||
@@ -50,9 +50,12 @@ public class GoalSelector {
|
||||
}
|
||||
|
||||
// Paper start
|
||||
@@ -168,11 +168,11 @@ index 207d41b91bc02d94c5b40799619f7314ef84e41d..d0c624a6a000c2a41e41d14dd785a7bf
|
||||
AxolotlAi.updateActivity(this);
|
||||
if (!this.isNoAi()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
index 81e69ea2858228942177e54c92b50b2b908bc010..d1458cec0313f7317134e7eb8bdabc31cea5df68 100644
|
||||
index dfb1f7db2db231049cebf0283ab879618eddaba6..791791fa03c402998fa99b5da9e9f969b256bf4e 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
@@ -159,8 +159,10 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
|
||||
@@ -183,8 +183,10 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
}
|
||||
}
|
||||
|
||||
+ private int behaviorTick = 0; // Pufferfish
|
||||
@@ -213,11 +213,11 @@ index c6ff7c756aff281e7de094c05749740370988fe5..d75178611f2c74af45e39c9e37770e2c
|
||||
GoatAi.updateActivity(this);
|
||||
super.customServerAiStep();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
||||
index c97a3c7060b846aa92a730760e3428ba98919879..f270c54028867ae0026bba3f214c3da6d015befb 100644
|
||||
index 6b0f5aa9e49c7ff8784ae7a016c4403acf98ca1e..fde1a076d1a490cf7bdea7f89a8714b4661a0d7d 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/monster/hoglin/Hoglin.java
|
||||
@@ -128,8 +128,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
|
||||
return (Brain<Hoglin>) super.getBrain(); // Paper - decompile fix
|
||||
@@ -155,8 +155,10 @@ public class Hoglin extends Animal implements Enemy, HoglinBase {
|
||||
return (Brain<Hoglin>)super.getBrain();
|
||||
}
|
||||
|
||||
+ private int behaviorTick; // Pufferfish
|
||||
@@ -361,7 +361,7 @@ index 0000000000000000000000000000000000000000..2769eba9841ec866265e814e16f930a5
|
||||
+ }
|
||||
+}
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index 1cff8378c4939af4bbe300e5d6428539e75218ae..0735af396aa89b6ea7d5565d91f070fac90f7da1 100644
|
||||
index 5e24b70b102cbf4dce2dec748dab1949a77b0d4d..df50c32482067368b11d2928bd353f4fbe595afe 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -40,6 +40,9 @@ import net.minecraft.world.level.Level;
|
||||
@@ -374,7 +374,7 @@ index 1cff8378c4939af4bbe300e5d6428539e75218ae..0735af396aa89b6ea7d5565d91f070fa
|
||||
|
||||
public class ActivationRange
|
||||
{
|
||||
@@ -236,6 +239,25 @@ public class ActivationRange
|
||||
@@ -238,6 +241,25 @@ public class ActivationRange
|
||||
}
|
||||
// Paper end - Configurable marker ticking
|
||||
ActivationRange.activateEntity(entity);
|
||||
@@ -400,7 +400,7 @@ index 1cff8378c4939af4bbe300e5d6428539e75218ae..0735af396aa89b6ea7d5565d91f070fa
|
||||
}
|
||||
// Paper end
|
||||
}
|
||||
@@ -252,12 +274,12 @@ public class ActivationRange
|
||||
@@ -254,12 +276,12 @@ public class ActivationRange
|
||||
if ( MinecraftServer.currentTick > entity.activatedTick )
|
||||
{
|
||||
if ( entity.defaultActivationState )
|
||||
|
||||
File diff suppressed because one or more lines are too long
@@ -829,7 +829,7 @@ index b66a7d4aab887309579154815a0d4abf9de506b0..78cb9d7da9bb025ea362028fdc9d0317
|
||||
return executedUnloadTask | canSaveChunk | canSaveEntities | canSavePOI ? new SaveStat(executedUnloadTask || canSaveChunk, canSaveEntities, canSavePOI): null;
|
||||
}
|
||||
diff --git a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||
index 83ecb6402ddedd4a613afef7d3a9ad5a5ac6ae30..a1c8ee38255cdd04e35e3ae8c9126b50c81c792a 100644
|
||||
index 2e83fd8f0fd067d6585d66d7b419a39769eee312..c3e6102d1335ec99d1f8f8d6159e1606a1082828 100644
|
||||
--- a/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||
+++ b/src/main/java/io/papermc/paper/configuration/GlobalConfiguration.java
|
||||
@@ -1,7 +1,7 @@
|
||||
@@ -923,22 +923,21 @@ index dab211c458311869c61779305580a1c7da830f71..0ddcf3652a2cc9e0cc28f672f103ec7e
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/network/protocol/PacketUtils.java b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||
index 3e2d5dcd62775b6ed7c0ce0ba51a71b635b1d644..deca974c2a82bc341fe23ea46f61f42f04432755 100644
|
||||
index 83302c252f54481f239522e5c6861ccfe233070a..070231080052ef3d0da179a8ed8b754ed6f8dd11 100644
|
||||
--- a/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||
+++ b/src/main/java/net/minecraft/network/protocol/PacketUtils.java
|
||||
@@ -49,8 +49,8 @@ public class PacketUtils {
|
||||
@@ -49,8 +49,7 @@ public class PacketUtils {
|
||||
try { // Paper - detailed watchdog information
|
||||
if (MinecraftServer.getServer().hasStopped() || (listener instanceof ServerCommonPacketListenerImpl && ((ServerCommonPacketListenerImpl) listener).processedDisconnect)) return; // CraftBukkit, MC-142590
|
||||
if (listener instanceof ServerCommonPacketListenerImpl serverCommonPacketListener && serverCommonPacketListener.processedDisconnect) return; // CraftBukkit - Don't handle sync packets for kicked players
|
||||
if (listener.shouldHandleMessage(packet)) {
|
||||
- co.aikar.timings.Timing timing = co.aikar.timings.MinecraftTimings.getPacketTiming(packet); // Paper - timings
|
||||
- try (co.aikar.timings.Timing ignored = timing.startTiming()) { // Paper - timings
|
||||
+
|
||||
+ try {
|
||||
packet.handle(listener);
|
||||
} catch (Exception exception) {
|
||||
label25:
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index 5db1dd834ec47c7a510e86f8eaffde03277a5442..49105918ec09e9c9db49035fc03a6502bb4a951f 100644
|
||||
index 5c4272a9f25adad0dc21b03e8652a98b1fe2ddf1..8767b09e1b7e4626e2051535648cc45e129d7613 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -178,8 +178,6 @@ import org.bukkit.craftbukkit.Main;
|
||||
@@ -1346,7 +1345,7 @@ index 6587ce30d88983cb42822e6ff3e012047d3ce16d..93ec0bdece165e5a5058f9a7ed2fd67d
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 0c376236d0cbc6033865f25db592c42a0d3d30d7..165b9f9ede6eec3e5667a2e653988f0e69ddb09f 100644
|
||||
index 9eb2bc23a2e7dce3594d67ec97ba120824a80ab1..a04ea23c295b493984eb841253fcb0eb4ad26342 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -1,7 +1,6 @@
|
||||
@@ -1626,10 +1625,10 @@ index a9e2a758669550530eb29475ba99fe42e520f6ae..d617e803f47219621b6b3b42c3bb7f30
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java
|
||||
index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..358415f32a40b355f7bf397f2e197eca726547ec 100644
|
||||
index 03092417cd8ab5c6d266f3af9f20f47b34cfaba3..ffa4965ef1290a65d5c0261821e360d48fbad7d9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/Behavior.java
|
||||
@@ -13,9 +13,8 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
@@ -14,10 +14,9 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
private long endTimestamp;
|
||||
private final int minDuration;
|
||||
private final int maxDuration;
|
||||
@@ -1637,10 +1636,12 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..358415f32a40b355f7bf397f2e197eca
|
||||
+ // Paper start - configurable behavior tick rate
|
||||
private final String configKey;
|
||||
- private final co.aikar.timings.Timing timing;
|
||||
// Paper end - configurable behavior tick rate and timings
|
||||
- // Paper end - configurable behavior tick rate and timings
|
||||
+ // Paper end - configurable behavior tick rate
|
||||
|
||||
public Behavior(Map<MemoryModuleType<?>, MemoryStatus> requiredMemoryState) {
|
||||
@@ -30,14 +29,13 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
this(requiredMemoryState, 60);
|
||||
@@ -31,15 +30,14 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
this.minDuration = minRunTime;
|
||||
this.maxDuration = maxRunTime;
|
||||
this.entryCondition = requiredMemoryState;
|
||||
@@ -1653,10 +1654,24 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..358415f32a40b355f7bf397f2e197eca
|
||||
}
|
||||
this.configKey = key.toLowerCase(java.util.Locale.ROOT);
|
||||
- this.timing = co.aikar.timings.MinecraftTimings.getBehaviorTimings(configKey);
|
||||
// Paper end - configurable behavior tick rate and timings
|
||||
- // Paper end - configurable behavior tick rate and timings
|
||||
+ // Paper end - configurable behavior tick rate
|
||||
}
|
||||
|
||||
@@ -58,9 +56,7 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
@Override
|
||||
@@ -49,19 +47,17 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
|
||||
@Override
|
||||
public final boolean tryStart(ServerLevel world, E entity, long time) {
|
||||
- // Paper start - configurable behavior tick rate and timings
|
||||
+ // Paper start - configurable behavior tick rate
|
||||
int tickRate = java.util.Objects.requireNonNullElse(world.paperConfig().tickRates.behavior.get(entity.getType(), this.configKey), -1);
|
||||
if (tickRate > -1 && time < this.endTimestamp + tickRate) {
|
||||
return false;
|
||||
}
|
||||
- // Paper end - configurable behavior tick rate and timings
|
||||
+ // Paper end - configurable behavior tick rate
|
||||
if (this.hasRequiredMemories(entity) && this.checkExtraStartConditions(world, entity)) {
|
||||
this.status = Behavior.Status.RUNNING;
|
||||
int i = this.minDuration + world.getRandom().nextInt(this.maxDuration + 1 - this.minDuration);
|
||||
this.endTimestamp = time + (long)i;
|
||||
@@ -1666,7 +1681,7 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..358415f32a40b355f7bf397f2e197eca
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
@@ -72,14 +68,11 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
@@ -73,13 +69,11 @@ public abstract class Behavior<E extends LivingEntity> implements BehaviorContro
|
||||
|
||||
@Override
|
||||
public final void tickOrStop(ServerLevel world, E entity, long time) {
|
||||
@@ -1677,16 +1692,15 @@ index 1e71cde7cb7654f1c21ae5e27e2fad7b58f593eb..358415f32a40b355f7bf397f2e197eca
|
||||
this.doStop(world, entity, time);
|
||||
}
|
||||
- this.timing.stopTiming(); // Paper - behavior timings
|
||||
-
|
||||
}
|
||||
|
||||
protected void tick(ServerLevel world, E entity, long time) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||
index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..4de18d00cc464313b777874430da3f5595f9c202 100644
|
||||
index 9e90cb2f51d1bacacb287e912d14ab9152523205..57665076cbc6b1b506f38080c0c9612ea18d944a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/Sensor.java
|
||||
@@ -19,20 +19,18 @@ public abstract class Sensor<E extends LivingEntity> {
|
||||
private static final TargetingConditions ATTACK_TARGET_CONDITIONS_IGNORE_INVISIBILITY_AND_LINE_OF_SIGHT = TargetingConditions.forCombat().range(16.0D).ignoreLineOfSight().ignoreInvisibilityTesting();
|
||||
@@ -26,20 +26,18 @@ public abstract class Sensor<E extends LivingEntity> {
|
||||
.ignoreInvisibilityTesting();
|
||||
private final int scanRate;
|
||||
private long timeToTick;
|
||||
- // Paper start - configurable sensor tick rate and timings
|
||||
@@ -1708,7 +1722,7 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..4de18d00cc464313b777874430da3f55
|
||||
// Paper end
|
||||
this.scanRate = senseInterval;
|
||||
this.timeToTick = (long)RANDOM.nextInt(senseInterval);
|
||||
@@ -44,12 +42,10 @@ public abstract class Sensor<E extends LivingEntity> {
|
||||
@@ -51,12 +49,10 @@ public abstract class Sensor<E extends LivingEntity> {
|
||||
|
||||
public final void tick(ServerLevel world, E entity) {
|
||||
if (--this.timeToTick <= 0L) {
|
||||
@@ -1720,10 +1734,10 @@ index fcdb9bde8e1605e30dde3e580491522d4b62cdc0..4de18d00cc464313b777874430da3f55
|
||||
this.doTick(world, entity);
|
||||
- this.timing.stopTiming(); // Paper - sensor timings
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index 7583ce583b06306930cbae49b0386a6630bb916f..ff05efe0b78defe3d25905b6a2984bdb646fcff3 100644
|
||||
index 52fcce3b1c01c221becadc39334dc3b1de12e688..138c14ced11354e67b84956bdd02f90c1bed409e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -176,7 +176,6 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
@@ -1827,7 +1841,7 @@ index 07a83e06e9cb6e30c600445809e49a3fd23a391a..171feda35239281b0ec2416485bead19
|
||||
private static final CraftPersistentDataTypeRegistry DATA_TYPE_REGISTRY = new CraftPersistentDataTypeRegistry();
|
||||
public CraftPersistentDataContainer persistentDataContainer;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
index 3d0b8761866046ae7ee6b5777fb098ce786abd94..221a4a3fbeac621ec593c7ba44b83f4b247a5589 100644
|
||||
index 3efdd1513089c663aa5c33eace0b31a599eca2eb..f52b314dd0ed83682b6a60c66b21eefd2cefb793 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
@@ -792,7 +792,6 @@ public class LevelChunk extends ChunkAccess {
|
||||
@@ -1854,7 +1868,7 @@ index 3d0b8761866046ae7ee6b5777fb098ce786abd94..221a4a3fbeac621ec593c7ba44b83f4b
|
||||
BlockState iblockdata = LevelChunk.this.getBlockState(blockposition);
|
||||
|
||||
if (this.blockEntity.getType().isValid(iblockdata)) {
|
||||
@@ -1185,14 +1182,9 @@ public class LevelChunk extends ChunkAccess {
|
||||
@@ -1190,14 +1187,9 @@ public class LevelChunk extends ChunkAccess {
|
||||
net.minecraft.world.level.chunk.LevelChunk.this.level.getCraftServer().getPluginManager().callEvent(new com.destroystokyo.paper.event.server.ServerExceptionEvent(new ServerInternalException(msg, throwable))); // Paper - ServerExceptionEvent
|
||||
LevelChunk.this.removeBlockEntity(this.getPos());
|
||||
// Paper end - Prevent block entity and entity crashes
|
||||
@@ -1882,7 +1896,7 @@ index f4fb23ebdd35e23b022bdd78421dec6d86342260..3c3b98d13587ce21bffa14a79aed963a
|
||||
console.autosavePeriod = this.configuration.getInt("ticks-per.autosave");
|
||||
this.warningState = WarningState.value(this.configuration.getString("settings.deprecated-verbose"));
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/Main.java b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
index 419618b06f2e8b03bea0ee772b4f96cde543a1c6..ee166ad76bd2c143e04e4bf6bd9991bc90ab99a5 100644
|
||||
index bac135289e34c69ff0d02ff23b8a95d72505e1bc..dcb6ccda0b46dc271be305c93df5c7db574bc07b 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/Main.java
|
||||
@@ -373,8 +373,6 @@ public class Main {
|
||||
@@ -2035,7 +2049,7 @@ index b3e1adeb932da9b3bed16acd94e2f16da48a7c72..e9798517b9211c50a20ea5c69603aab3
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
index 050d6820efd55f73bf8aba915f6fb461bc884378..48ba783a9525cc86a9f648ed2504b0223e4b512c 100644
|
||||
index 53b73cac093797de47a9e61a5fdab44aced54ebb..aff95d844d810fb145b7587fef28df66e47d6530 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/util/CraftMagicNumbers.java
|
||||
@@ -214,12 +214,6 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
@@ -2051,7 +2065,7 @@ index 050d6820efd55f73bf8aba915f6fb461bc884378..48ba783a9525cc86a9f648ed2504b022
|
||||
|
||||
public static byte toLegacyData(BlockState data) {
|
||||
return CraftLegacy.toLegacyData(data);
|
||||
@@ -490,10 +484,6 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
@@ -495,10 +489,6 @@ public final class CraftMagicNumbers implements UnsafeValues {
|
||||
return new CraftDamageSourceBuilder(damageType);
|
||||
}
|
||||
// Paper start
|
||||
@@ -2269,7 +2283,7 @@ index 139d946346594d2a59a8b2930c4eae794c880dbc..00000000000000000000000000000000
|
||||
-
|
||||
-}
|
||||
diff --git a/src/main/java/org/spigotmc/ActivationRange.java b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
index c6c58c398b2ce4741301afaa04d2ba2dbee475d4..67e33ce28e3a775b6611334471061f72cae18cae 100644
|
||||
index 9edb1e43dc9c55202443ef5f893d8e2bd0301de3..f5822d9778ebf8256d6e184d6c21335830bcf045 100644
|
||||
--- a/src/main/java/org/spigotmc/ActivationRange.java
|
||||
+++ b/src/main/java/org/spigotmc/ActivationRange.java
|
||||
@@ -35,7 +35,6 @@ import net.minecraft.world.entity.projectile.FireworkRocketEntity;
|
||||
@@ -2280,7 +2294,7 @@ index c6c58c398b2ce4741301afaa04d2ba2dbee475d4..67e33ce28e3a775b6611334471061f72
|
||||
import net.minecraft.world.entity.schedule.Activity;
|
||||
import net.minecraft.world.level.Level;
|
||||
import net.minecraft.world.phys.AABB;
|
||||
@@ -184,7 +183,6 @@ public class ActivationRange
|
||||
@@ -186,7 +185,6 @@ public class ActivationRange
|
||||
*/
|
||||
public static void activateEntities(Level world)
|
||||
{
|
||||
@@ -2288,7 +2302,7 @@ index c6c58c398b2ce4741301afaa04d2ba2dbee475d4..67e33ce28e3a775b6611334471061f72
|
||||
final int miscActivationRange = world.spigotConfig.miscActivationRange;
|
||||
final int raiderActivationRange = world.spigotConfig.raiderActivationRange;
|
||||
final int animalActivationRange = world.spigotConfig.animalActivationRange;
|
||||
@@ -263,7 +261,6 @@ public class ActivationRange
|
||||
@@ -265,7 +263,6 @@ public class ActivationRange
|
||||
}
|
||||
// Paper end
|
||||
}
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Bump Dependencies
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 140638a117d9306bd08ed4fbcc4ea123adac4901..2e02cf5a4706721f0d00da7f7fa189e671acc769 100644
|
||||
index 0d72b6e0a9d9c12b7d4555aa85dcedde9123c5c1..a2eae367d6c0c031f2f29b86ead486c31dd0118c 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -32,9 +32,9 @@ dependencies {
|
||||
@@ -32,20 +32,19 @@ index 140638a117d9306bd08ed4fbcc4ea123adac4901..2e02cf5a4706721f0d00da7f7fa189e6
|
||||
runtimeOnly(log4jPlugins.output)
|
||||
alsoShade(log4jPlugins.output)
|
||||
- implementation("io.netty:netty-codec-haproxy:4.1.97.Final") // Paper - Add support for proxy protocol
|
||||
+ implementation("io.netty:netty-codec-haproxy:4.1.107.Final") // Paper - Add support for proxy protocol
|
||||
+ implementation("io.netty:netty-codec-haproxy:4.1.109.Final") // Paper - Add support for proxy protocol
|
||||
// Paper end
|
||||
- implementation("org.apache.logging.log4j:log4j-iostreams:2.19.0") // Paper - remove exclusion
|
||||
- implementation("org.ow2.asm:asm-commons:9.5")
|
||||
+ implementation("org.apache.logging.log4j:log4j-iostreams:2.23.1") // Paper - remove exclusion
|
||||
+ implementation("org.ow2.asm:asm-commons:9.7")
|
||||
implementation("org.ow2.asm:asm-commons:9.7")
|
||||
implementation("org.spongepowered:configurate-yaml:4.2.0-SNAPSHOT") // Paper - config files
|
||||
implementation("commons-lang:commons-lang:2.6")
|
||||
- implementation("net.fabricmc:mapping-io:0.5.0") // Paper - needed to read mappings for stacktrace deobfuscation
|
||||
- runtimeOnly("org.xerial:sqlite-jdbc:3.42.0.1")
|
||||
- runtimeOnly("com.mysql:mysql-connector-j:8.2.0")
|
||||
- runtimeOnly("com.lmax:disruptor:3.4.4") // Paper
|
||||
+ implementation("net.fabricmc:mapping-io:0.5.1") // Paper - needed to read mappings for stacktrace deobfuscation
|
||||
+ runtimeOnly("org.xerial:sqlite-jdbc:3.45.2.0") // Leaf - Bump Dependencies
|
||||
+ implementation("net.fabricmc:mapping-io:0.6.1") // Paper - needed to read mappings for stacktrace deobfuscation
|
||||
+ runtimeOnly("org.xerial:sqlite-jdbc:3.45.3.0")
|
||||
+ runtimeOnly("com.mysql:mysql-connector-j:8.3.0")
|
||||
+ runtimeOnly("com.lmax:disruptor:3.4.4") // Paper // Leaf - Bump Dependencies - Waiting Log4j 3.x to support disruptor 4.0.0
|
||||
// Paper start - Use Velocity cipher
|
||||
@@ -64,16 +63,14 @@ index 140638a117d9306bd08ed4fbcc4ea123adac4901..2e02cf5a4706721f0d00da7f7fa189e6
|
||||
- testImplementation("io.github.classgraph:classgraph:4.8.47") // Paper - mob goal test
|
||||
- testImplementation("org.junit.jupiter:junit-jupiter:5.10.0")
|
||||
+ // Leaf start - Bump Dependencies
|
||||
+ testImplementation("io.github.classgraph:classgraph:4.8.168") // Paper - mob goal test
|
||||
+ testImplementation("io.github.classgraph:classgraph:4.8.170") // Paper - mob goal test
|
||||
+ testImplementation("org.junit.jupiter:junit-jupiter:5.10.2")
|
||||
testImplementation("org.hamcrest:hamcrest:2.2")
|
||||
- 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.7")
|
||||
testImplementation("org.mockito:mockito-core:5.11.0")
|
||||
testImplementation("org.ow2.asm:asm-tree:9.7")
|
||||
testImplementation("org.junit-pioneer:junit-pioneer:2.2.0") // Paper - CartesianTest
|
||||
+
|
||||
+ implementation("io.netty:netty-all:4.1.107.Final")
|
||||
+ implementation("io.netty:netty-all:4.1.109.Final")
|
||||
+ // Leaf end
|
||||
}
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ Original license: MIT
|
||||
Original project: https://github.com/KeYiMC/KeYi
|
||||
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
index d6122c121d6e18d276fb78865c6a680e9afc3378..ce70f01611181e8f4c7324c7b9f9944a8605c710 100644
|
||||
index f3ae9a2d594a90c128402af57bc9536a136e7395..be00b95e723952c61c6f8ae01b61e4f5e1c77bdf 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/entity/CraftPlayer.java
|
||||
@@ -29,6 +29,11 @@ import java.util.Optional;
|
||||
@@ -30,7 +30,7 @@ index d6122c121d6e18d276fb78865c6a680e9afc3378..ce70f01611181e8f4c7324c7b9f9944a
|
||||
import org.bukkit.map.MapCursor;
|
||||
import org.bukkit.map.MapView;
|
||||
import org.bukkit.metadata.MetadataValue;
|
||||
@@ -3524,4 +3530,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
@@ -3522,4 +3528,27 @@ public class CraftPlayer extends CraftHumanEntity implements Player {
|
||||
this.getHandle().connection.send(new net.minecraft.network.protocol.game.ClientboundPlayerCombatKillPacket(getEntityId(), io.papermc.paper.adventure.PaperAdventure.asVanilla(message)));
|
||||
}
|
||||
// Purpur end
|
||||
|
||||
@@ -10,7 +10,7 @@ Optimized the getBiome call to be 25% - 75% faster
|
||||
This is a fully vanilla optimization.
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/biome/BiomeManager.java b/src/main/java/net/minecraft/world/level/biome/BiomeManager.java
|
||||
index 5695c5116c8a338b2e41aafcb2dc9f2146856970..08895c4d8e2d179ca8ed77377e31420d7229fb9b 100644
|
||||
index 01352cc83b25eb0e30b7e0ff521fc7c1b3d5155b..bd9c58b0086ea6ba5a73b41e805d4c9af4dc357d 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/biome/BiomeManager.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/biome/BiomeManager.java
|
||||
@@ -14,6 +14,7 @@ public class BiomeManager {
|
||||
@@ -31,22 +31,22 @@ index 5695c5116c8a338b2e41aafcb2dc9f2146856970..08895c4d8e2d179ca8ed77377e31420d
|
||||
- int l = i >> 2;
|
||||
- int m = j >> 2;
|
||||
- int n = k >> 2;
|
||||
- double d = (double)(i & 3) / 4.0D;
|
||||
- double e = (double)(j & 3) / 4.0D;
|
||||
- double f = (double)(k & 3) / 4.0D;
|
||||
- double d = (double)(i & 3) / 4.0;
|
||||
- double e = (double)(j & 3) / 4.0;
|
||||
- double f = (double)(k & 3) / 4.0;
|
||||
- int o = 0;
|
||||
- double g = Double.POSITIVE_INFINITY;
|
||||
-
|
||||
- for(int p = 0; p < 8; ++p) {
|
||||
- for (int p = 0; p < 8; p++) {
|
||||
- boolean bl = (p & 4) == 0;
|
||||
- boolean bl2 = (p & 2) == 0;
|
||||
- boolean bl3 = (p & 1) == 0;
|
||||
- int q = bl ? l : l + 1;
|
||||
- int r = bl2 ? m : m + 1;
|
||||
- int s = bl3 ? n : n + 1;
|
||||
- double h = bl ? d : d - 1.0D;
|
||||
- double t = bl2 ? e : e - 1.0D;
|
||||
- double u = bl3 ? f : f - 1.0D;
|
||||
- double h = bl ? d : d - 1.0;
|
||||
- double t = bl2 ? e : e - 1.0;
|
||||
- double u = bl3 ? f : f - 1.0;
|
||||
- double v = getFiddledDistance(this.biomeZoomSeed, q, r, s, h, t, u);
|
||||
- if (g > v) {
|
||||
- o = p;
|
||||
@@ -58,21 +58,21 @@ index 5695c5116c8a338b2e41aafcb2dc9f2146856970..08895c4d8e2d179ca8ed77377e31420d
|
||||
+ int x = xMinus2 >> 2; // BlockPos to BiomePos
|
||||
+ int y = yMinus2 >> 2;
|
||||
+ int z = zMinus2 >> 2;
|
||||
+ double quartX = (double) (xMinus2 & 3) / 4.0D; // quartLocal divided by 4
|
||||
+ double quartY = (double) (yMinus2 & 3) / 4.0D; // 0/4, 1/4, 2/4, 3/4
|
||||
+ double quartZ = (double) (zMinus2 & 3) / 4.0D; // [0, 0.25, 0.5, 0.75]
|
||||
+ double quartX = (double) (xMinus2 & 3) / 4.0; // quartLocal divided by 4
|
||||
+ double quartY = (double) (yMinus2 & 3) / 4.0; // 0/4, 1/4, 2/4, 3/4
|
||||
+ double quartZ = (double) (zMinus2 & 3) / 4.0; // [0, 0.25, 0.5, 0.75]
|
||||
+ int smallestX = 0;
|
||||
+ double smallestDist = Double.POSITIVE_INFINITY;
|
||||
+ for (int biomeX = 0; biomeX < 8; ++biomeX) {
|
||||
+ boolean everyOtherQuad = (biomeX & 4) == 0; // 1 1 1 1 0 0 0 0
|
||||
+ boolean everyOtherPair = (biomeX & 2) == 0; // 1 1 0 0 1 1 0 0
|
||||
+ boolean everyOther = (biomeX & 1) == 0; // 1 0 1 0 1 0 1 0
|
||||
+ double quartXX = everyOtherQuad ? quartX : quartX - 1.0D; //[-1.0,-0.75,-0.5,-0.25,0.0,0.25,0.5,0.75]
|
||||
+ double quartYY = everyOtherPair ? quartY : quartY - 1.0D;
|
||||
+ double quartZZ = everyOther ? quartZ : quartZ - 1.0D;
|
||||
+ double quartXX = everyOtherQuad ? quartX : quartX - 1.0; //[-1.0,-0.75,-0.5,-0.25,0.0,0.25,0.5,0.75]
|
||||
+ double quartYY = everyOtherPair ? quartY : quartY - 1.0;
|
||||
+ double quartZZ = everyOther ? quartZ : quartZ - 1.0;
|
||||
+
|
||||
+ //This code block is new
|
||||
+ double maxQuartYY = 0.0D, maxQuartZZ = 0.0D;
|
||||
+ double maxQuartYY = 0.0, maxQuartZZ = 0.0;
|
||||
+ if (biomeX != 0) {
|
||||
+ maxQuartYY = Mth.square(Math.max(quartYY + maxOffset, Math.abs(quartYY - maxOffset)));
|
||||
+ maxQuartZZ = Mth.square(Math.max(quartZZ + maxOffset, Math.abs(quartZZ - maxOffset)));
|
||||
|
||||
@@ -22,11 +22,11 @@ index 93e321a0b8fdce12968f03b3cfe6724ae564b823..cd696f6bb7f77338dd289c7c2d6bdf23
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java
|
||||
index 7292e68199d244990efa8475fb40b94fe72323c0..3c234bfcecd6d93f8ff9b1abc6dfc72c26fa30f0 100644
|
||||
index d624c5ebbbe88c5fc2a4b8521f71ac00f05d58cf..bc9a9a177e15570ad29bac0080dc341fc0277396 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/trialspawner/TrialSpawnerData.java
|
||||
@@ -50,7 +50,7 @@ public class TrialSpawnerData {
|
||||
});
|
||||
@@ -45,7 +45,7 @@ public class TrialSpawnerData {
|
||||
);
|
||||
protected final Set<UUID> detectedPlayers = new HashSet<>();
|
||||
protected final Set<UUID> currentMobs = new HashSet<>();
|
||||
- protected long cooldownEndsAt;
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Sync with Gale's Optimize-villager-data-storage.patch
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
||||
index 44701d0bed85c46e658bc3f2a738126bd748e5c6..429dd3c399db2d327e471e3a689a45cbf3dd1e7e 100644
|
||||
index 753587e4d9582605951461f2bea37aff3bf28fcd..77fb2b0c4b9defaa16a2f89b194e8f5084ade12c 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/TradeWithVillager.java
|
||||
@@ -22,6 +22,7 @@ public class TradeWithVillager extends Behavior<Villager> {
|
||||
@@ -16,7 +16,7 @@ index 44701d0bed85c46e658bc3f2a738126bd748e5c6..429dd3c399db2d327e471e3a689a45cb
|
||||
private @NotNull Item @Nullable [] trades = null;
|
||||
// Gale end - optimize villager data storage
|
||||
|
||||
@@ -62,7 +63,7 @@ public class TradeWithVillager extends Behavior<Villager> {
|
||||
@@ -67,7 +68,7 @@ public class TradeWithVillager extends Behavior<Villager> {
|
||||
|
||||
// Purpur start
|
||||
if (world.purpurConfig.villagerClericsFarmWarts && world.purpurConfig.villagerClericFarmersThrowWarts && entity.getVillagerData().getProfession() == VillagerProfession.CLERIC && entity.getInventory().countItem(Items.NETHER_WART) > Items.NETHER_WART.getMaxStackSize() / 2) {
|
||||
@@ -26,15 +26,15 @@ index 44701d0bed85c46e658bc3f2a738126bd748e5c6..429dd3c399db2d327e471e3a689a45cb
|
||||
// Purpur end
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java
|
||||
index b571731bbce25f17568370bb523cb9b0293a2f01..5c685a52daaf86f8df47abe6824792f87c8eb246 100644
|
||||
index 8f36f113e8eb3236ce53ad9cce320c3d6253d248..ebe79d9ad2934b53085c8a720fdfca0a6eda05ca 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/npc/VillagerProfession.java
|
||||
@@ -26,7 +26,7 @@ public record VillagerProfession(String name, Predicate<Holder<PoiType>> heldJob
|
||||
@@ -31,7 +31,7 @@ public record VillagerProfession(
|
||||
public static final VillagerProfession ARMORER = register("armorer", PoiTypes.ARMORER, SoundEvents.VILLAGER_WORK_ARMORER);
|
||||
public static final VillagerProfession BUTCHER = register("butcher", PoiTypes.BUTCHER, SoundEvents.VILLAGER_WORK_BUTCHER);
|
||||
public static final VillagerProfession CARTOGRAPHER = register("cartographer", PoiTypes.CARTOGRAPHER, SoundEvents.VILLAGER_WORK_CARTOGRAPHER);
|
||||
- public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, ImmutableSet.of(Items.NETHER_WART), ImmutableSet.of(Blocks.SOUL_SAND), SoundEvents.VILLAGER_WORK_CLERIC); // Purpur
|
||||
+ public static final VillagerProfession CLERIC = register("cleric", PoiTypes.CLERIC, new Item[] {Items.NETHER_WART}, Blocks.SOUL_SAND, SoundEvents.VILLAGER_WORK_CLERIC); // Purpur // Leaf - sync with Gale's Optimize-villager-data-storage.patch
|
||||
public static final VillagerProfession FARMER = register("farmer", PoiTypes.FARMER, new Item[] {Items.WHEAT, Items.WHEAT_SEEDS, Items.BEETROOT_SEEDS, Items.BONE_MEAL}, Blocks.FARMLAND, SoundEvents.VILLAGER_WORK_FARMER); // Gale - optimize villager data storage
|
||||
public static final VillagerProfession FISHERMAN = register("fisherman", PoiTypes.FISHERMAN, SoundEvents.VILLAGER_WORK_FISHERMAN);
|
||||
public static final VillagerProfession FLETCHER = register("fletcher", PoiTypes.FLETCHER, SoundEvents.VILLAGER_WORK_FLETCHER);
|
||||
public static final VillagerProfession FARMER = register(
|
||||
"farmer",
|
||||
PoiTypes.FARMER,
|
||||
|
||||
@@ -27,7 +27,7 @@ index ab442ad33124c75c261752d14d0ee209a673209e..4954cdcb642670d876dceb7b7bb3651c
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||
index aed7e9affaae1e0d1e3324a41e5818435f76fd0f..84b5552436b22ecfd2b88c6609ce8e583632cda7 100644
|
||||
index 4d2b6e69ed98aca98ffc50fefc6e535c1afb759d..74cd04a4e197e7d3dcf8986e77ed9a96acce01e4 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/AcquirePoi.java
|
||||
@@ -7,7 +7,6 @@ import java.util.HashSet;
|
||||
@@ -46,57 +46,55 @@ index aed7e9affaae1e0d1e3324a41e5818435f76fd0f..84b5552436b22ecfd2b88c6609ce8e58
|
||||
|
||||
public class AcquirePoi {
|
||||
public static final int SCAN_RANGE = 48;
|
||||
@@ -77,6 +77,40 @@ public class AcquirePoi {
|
||||
io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), 48, 48*48, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes);
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes);
|
||||
// Paper end - optimise POI access
|
||||
+ // Kaiiju start - petal - Async path processing
|
||||
+ if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
|
||||
+ // await on path async
|
||||
+ Path possiblePath = findPathToPois(entity, set);
|
||||
@@ -85,6 +85,38 @@ public class AcquirePoi {
|
||||
io.papermc.paper.util.PoiAccess.findNearestPoiPositions(poiManager, poiPredicate, predicate2, entity.blockPosition(), world.purpurConfig.villagerAcquirePoiSearchRadius, world.purpurConfig.villagerAcquirePoiSearchRadius*world.purpurConfig.villagerAcquirePoiSearchRadius, PoiManager.Occupancy.HAS_SPACE, false, 5, poiposes); // Purpur
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> set = new java.util.HashSet<>(poiposes);
|
||||
// Paper end - optimise POI access
|
||||
+ // Kaiiju start - petal - Async path processing
|
||||
+ if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
|
||||
+ // await on path async
|
||||
+ Path possiblePath = findPathToPois(entity, set);
|
||||
+
|
||||
+ // wait on the path to be processed
|
||||
+ AsyncPathProcessor.awaitProcessing(entity, possiblePath, path -> {
|
||||
+ // read canReach check
|
||||
+ if (path == null || !path.canReach()) {
|
||||
+ for(Pair<Holder<PoiType>, BlockPos> pair : set) {
|
||||
+ long2ObjectMap.computeIfAbsent(
|
||||
+ pair.getSecond().asLong(),
|
||||
+ (m) -> new JitteredLinearRetry(entity.level().random, time)
|
||||
+ );
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
+ BlockPos blockPos = path.getTarget();
|
||||
+ poiManager.getType(blockPos).ifPresent((poiType) -> {
|
||||
+ poiManager.take(poiPredicate,
|
||||
+ (holder, blockPos2) -> blockPos2.equals(blockPos),
|
||||
+ blockPos,
|
||||
+ 1
|
||||
+ );
|
||||
+ queryResult.set(GlobalPos.of(world.dimension(), blockPos));
|
||||
+ entityStatus.ifPresent((status) -> {
|
||||
+ world.broadcastEntityEvent(entity, status);
|
||||
+ });
|
||||
+ long2ObjectMap.clear();
|
||||
+ DebugPackets.sendPoiTicketCountPacket(world, blockPos);
|
||||
+ });
|
||||
+ });
|
||||
+ } else {
|
||||
+ // Kaiiju end
|
||||
Path path = findPathToPois(entity, set);
|
||||
if (path != null && path.canReach()) {
|
||||
BlockPos blockPos = path.getTarget();
|
||||
@@ -98,6 +132,7 @@ public class AcquirePoi {
|
||||
});
|
||||
}
|
||||
}
|
||||
+ } // Kaiiju - Async path processing
|
||||
+ // wait on the path to be processed
|
||||
+ AsyncPathProcessor.awaitProcessing(entity, possiblePath, path -> {
|
||||
+ // read canReach check
|
||||
+ if (path == null || !path.canReach()) {
|
||||
+ for (Pair<Holder<PoiType>, BlockPos> pair : set) {
|
||||
+ long2ObjectMap.computeIfAbsent(
|
||||
+ pair.getSecond().asLong(),
|
||||
+ (m) -> new JitteredLinearRetry(entity.level().random, time)
|
||||
+ );
|
||||
+ }
|
||||
+ return;
|
||||
+ }
|
||||
+ BlockPos blockPos = path.getTarget();
|
||||
+ poiManager.getType(blockPos).ifPresent((poiType) -> {
|
||||
+ poiManager.take(poiPredicate,
|
||||
+ (holder, blockPos2) -> blockPos2.equals(blockPos),
|
||||
+ blockPos,
|
||||
+ 1
|
||||
+ );
|
||||
+ queryResult.set(GlobalPos.of(world.dimension(), blockPos));
|
||||
+ entityStatus.ifPresent((status) -> world.broadcastEntityEvent(entity, status));
|
||||
+ long2ObjectMap.clear();
|
||||
+ DebugPackets.sendPoiTicketCountPacket(world, blockPos);
|
||||
+ });
|
||||
+ });
|
||||
+ } else {
|
||||
+ // Kaiiju end
|
||||
Path path = findPathToPois(entity, set);
|
||||
if (path != null && path.canReach()) {
|
||||
BlockPos blockPos = path.getTarget();
|
||||
@@ -102,6 +134,7 @@ public class AcquirePoi {
|
||||
);
|
||||
}
|
||||
}
|
||||
+ } // Kaiiju - Async path processing
|
||||
|
||||
return true;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/MoveToTargetSink.java b/src/main/java/net/minecraft/world/entity/ai/behavior/MoveToTargetSink.java
|
||||
index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee9034b69b803 100644
|
||||
index 2a7a26ca447cc78f24e61a2bf557411c31eb16b2..4010cb7ad8897995c8b850f9279aad2a2b58d4eb 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/MoveToTargetSink.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/MoveToTargetSink.java
|
||||
@@ -21,6 +21,7 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
@@ -107,7 +105,7 @@ index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee903
|
||||
@Nullable
|
||||
private BlockPos lastTargetPos;
|
||||
private float speedModifier;
|
||||
@@ -42,9 +43,10 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
@@ -53,9 +54,10 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
Brain<?> brain = entity.getBrain();
|
||||
WalkTarget walkTarget = brain.getMemory(MemoryModuleType.WALK_TARGET).get();
|
||||
boolean bl = this.reachedTarget(entity, walkTarget);
|
||||
@@ -119,7 +117,7 @@ index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee903
|
||||
} else {
|
||||
brain.eraseMemory(MemoryModuleType.WALK_TARGET);
|
||||
if (bl) {
|
||||
@@ -58,6 +60,7 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
@@ -69,6 +71,7 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
|
||||
@Override
|
||||
protected boolean canStillUse(ServerLevel world, Mob entity, long time) {
|
||||
@@ -127,7 +125,7 @@ index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee903
|
||||
if (this.path != null && this.lastTargetPos != null) {
|
||||
Optional<WalkTarget> optional = entity.getBrain().getMemory(MemoryModuleType.WALK_TARGET);
|
||||
boolean bl = optional.map(MoveToTargetSink::isWalkTargetSpectator).orElse(false);
|
||||
@@ -82,12 +85,68 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
@@ -95,12 +98,68 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
|
||||
@Override
|
||||
protected void start(ServerLevel serverLevel, Mob mob, long l) {
|
||||
@@ -196,9 +194,9 @@ index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee903
|
||||
Path path = mob.getNavigation().getPath();
|
||||
Brain<?> brain = mob.getBrain();
|
||||
if (this.path != path) {
|
||||
@@ -103,7 +162,23 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
@@ -116,7 +175,23 @@ public class MoveToTargetSink extends Behavior<Mob> {
|
||||
this.start(serverLevel, mob, l);
|
||||
}
|
||||
|
||||
}
|
||||
+ } // Kaiiju - async path processing
|
||||
+ }
|
||||
@@ -221,7 +219,7 @@ index 1ab77f3518d1df30f66ae44d7d4fa69e5b32d93a..e37ecae581e3723e36808fe51bcee903
|
||||
private boolean tryComputePath(Mob entity, WalkTarget walkTarget, long time) {
|
||||
BlockPos blockPos = walkTarget.getTarget().currentBlockPosition();
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java b/src/main/java/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
|
||||
index 271efbb027f6f5d69ac5bc5dc51102a1eb00ab31..08aa5cef303924c537f83b431b275853e652b5ba 100644
|
||||
index 6802e0c4d331c7125114dd86409f6a110465ab82..fb936e7c05f56b7c430b9b725c651fa85ea42c20 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/SetClosestHomeAsWalkTarget.java
|
||||
@@ -20,6 +20,7 @@ import net.minecraft.world.entity.ai.village.poi.PoiTypes;
|
||||
@@ -232,56 +230,56 @@ index 271efbb027f6f5d69ac5bc5dc51102a1eb00ab31..08aa5cef303924c537f83b431b275853
|
||||
|
||||
public class SetClosestHomeAsWalkTarget {
|
||||
private static final int CACHE_TIMEOUT = 40;
|
||||
@@ -57,6 +58,26 @@ public class SetClosestHomeAsWalkTarget {
|
||||
Set<Pair<Holder<PoiType>, BlockPos>> set = poiManager.findAllWithType((poiType) -> {
|
||||
return poiType.is(PoiTypes.HOME);
|
||||
}, predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY).collect(Collectors.toSet());
|
||||
+ // Kaiiju start - petal - Async path processing
|
||||
+ if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
|
||||
+ // await on path async
|
||||
+ Path possiblePath = AcquirePoi.findPathToPois(entity, set);
|
||||
@@ -60,6 +61,26 @@ public class SetClosestHomeAsWalkTarget {
|
||||
poiType -> poiType.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY
|
||||
)
|
||||
.collect(Collectors.toSet());
|
||||
+ // Kaiiju start - petal - Async path processing
|
||||
+ if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
|
||||
+ // await on path async
|
||||
+ Path possiblePath = AcquirePoi.findPathToPois(entity, set);
|
||||
+
|
||||
+ // wait on the path to be processed
|
||||
+ AsyncPathProcessor.awaitProcessing(entity, possiblePath, path -> {
|
||||
+ if (path == null || !path.canReach() || mutableInt.getValue() < 5) { // read canReach check
|
||||
+ long2LongMap.long2LongEntrySet().removeIf((entry) -> entry.getLongValue() < mutableLong.getValue());
|
||||
+ return;
|
||||
+ }
|
||||
+ BlockPos blockPos = path.getTarget();
|
||||
+ Optional<Holder<PoiType>> optional2 = poiManager.getType(blockPos);
|
||||
+ if (optional2.isPresent()) {
|
||||
+ walkTarget.set(new WalkTarget(blockPos, speed, 1));
|
||||
+ DebugPackets.sendPoiTicketCountPacket(world, blockPos);
|
||||
+ }
|
||||
+ });
|
||||
+ } else {
|
||||
+ // Kaiiju end
|
||||
Path path = AcquirePoi.findPathToPois(entity, set);
|
||||
if (path != null && path.canReach()) {
|
||||
BlockPos blockPos = path.getTarget();
|
||||
@@ -70,6 +91,7 @@ public class SetClosestHomeAsWalkTarget {
|
||||
return entry.getLongValue() < mutableLong.getValue();
|
||||
});
|
||||
}
|
||||
+ } // Kaiiju - async path processing
|
||||
+ // wait on the path to be processed
|
||||
+ AsyncPathProcessor.awaitProcessing(entity, possiblePath, path -> {
|
||||
+ if (path == null || !path.canReach() || mutableInt.getValue() < 5) { // read canReach check
|
||||
+ long2LongMap.long2LongEntrySet().removeIf((entry) -> entry.getLongValue() < mutableLong.getValue());
|
||||
+ return;
|
||||
+ }
|
||||
+ BlockPos blockPos = path.getTarget();
|
||||
+ Optional<Holder<PoiType>> optional2 = poiManager.getType(blockPos);
|
||||
+ if (optional2.isPresent()) {
|
||||
+ walkTarget.set(new WalkTarget(blockPos, speed, 1));
|
||||
+ DebugPackets.sendPoiTicketCountPacket(world, blockPos);
|
||||
+ }
|
||||
+ });
|
||||
+ } else {
|
||||
+ // Kaiiju end
|
||||
Path path = AcquirePoi.findPathToPois(entity, set);
|
||||
if (path != null && path.canReach()) {
|
||||
BlockPos blockPos = path.getTarget();
|
||||
@@ -71,6 +92,7 @@ public class SetClosestHomeAsWalkTarget {
|
||||
} else if (mutableInt.getValue() < 5) {
|
||||
long2LongMap.long2LongEntrySet().removeIf(entry -> entry.getLongValue() < mutableLong.getValue());
|
||||
}
|
||||
+ } // Kaiiju - async path processing
|
||||
|
||||
return true;
|
||||
} else {
|
||||
return true;
|
||||
} else {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java b/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
|
||||
index 6771f2dc974317b6b152288bf41d1a95bc78a8e4..7a641747b17164b09bb8483cda7f69d11741a94a 100644
|
||||
index 74aca307b4ebffe4e33c4fca3e07c23ca87622ac..37e61aa259f573cc5b5844026af99f3c72945f34 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/goal/DoorInteractGoal.java
|
||||
@@ -57,7 +57,7 @@ public abstract class DoorInteractGoal extends Goal {
|
||||
@@ -56,7 +56,7 @@ public abstract class DoorInteractGoal extends Goal {
|
||||
} else {
|
||||
GroundPathNavigation groundPathNavigation = (GroundPathNavigation)this.mob.getNavigation();
|
||||
Path path = groundPathNavigation.getPath();
|
||||
- if (path != null && !path.isDone() && groundPathNavigation.canOpenDoors()) {
|
||||
+ if (path != null && path.isProcessed() && !path.isDone() && groundPathNavigation.canOpenDoors()) { // Kaiiju - async pathfinding - ensure path is processed
|
||||
for(int i = 0; i < Math.min(path.getNextNodeIndex() + 2, path.getNodeCount()); ++i) {
|
||||
for (int i = 0; i < Math.min(path.getNextNodeIndex() + 2, path.getNodeCount()); i++) {
|
||||
Node node = path.getNode(i);
|
||||
this.doorPos = new BlockPos(node.x, node.y + 1, node.z);
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
|
||||
index 9d3b32c852d660356e0f16d4cc10072b1c603e64..fa843dd6fb4af72ab212d1d3d8440649240dc162 100644
|
||||
index ee38e447a810094d2253b85714b74282a4b4c2bc..abcb8a48cf162dd7bf553097ca045b919e7c408a 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/AmphibiousPathNavigation.java
|
||||
@@ -6,16 +6,34 @@ import net.minecraft.world.level.Level;
|
||||
@@ -320,7 +318,7 @@ index 9d3b32c852d660356e0f16d4cc10072b1c603e64..fa843dd6fb4af72ab212d1d3d8440649
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
|
||||
index e35c38feb62c3345d82636081decc09db9f061ab..7c5a9cbff031c0f78c50f3e31c0cea661e3c83aa 100644
|
||||
index a3e0c5af4cc9323c02e88e768cbda9e46854aea1..44ef3262c91c25c956500e1e460e383c6fb60b62 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/FlyingPathNavigation.java
|
||||
@@ -10,16 +10,34 @@ import net.minecraft.world.level.pathfinder.FlyNodeEvaluator;
|
||||
@@ -367,7 +365,7 @@ index e35c38feb62c3345d82636081decc09db9f061ab..7c5a9cbff031c0f78c50f3e31c0cea66
|
||||
if (!this.isDone()) {
|
||||
if (this.canUpdatePath()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
|
||||
index 47de460ff5435ea6712c800c77093126908d0fce..278f05d3d27d32e94e049f50d63965a3351619fe 100644
|
||||
index 74ae984ac41bcdd2cc45f1bec461cdc5f69977c6..2cf7e2d42a830c1b1cfd3bafd7b22803572e12bd 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/GroundPathNavigation.java
|
||||
@@ -15,6 +15,8 @@ import net.minecraft.world.level.pathfinder.Path;
|
||||
@@ -407,7 +405,7 @@ index 47de460ff5435ea6712c800c77093126908d0fce..278f05d3d27d32e94e049f50d63965a3
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
|
||||
index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a7e00699a 100644
|
||||
index cf57d0f4636ec3f93992626f06fe9c10c7cac19a..54d4260636409bcb06aaf850d7de653bdb12f177 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/PathNavigation.java
|
||||
@@ -25,6 +25,8 @@ import net.minecraft.world.level.pathfinder.PathFinder;
|
||||
@@ -419,7 +417,7 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
|
||||
public abstract class PathNavigation {
|
||||
private static final int MAX_TIME_RECOMPUTE = 20;
|
||||
@@ -153,6 +155,10 @@ public abstract class PathNavigation {
|
||||
@@ -152,6 +154,10 @@ public abstract class PathNavigation {
|
||||
return null;
|
||||
} else if (!this.canUpdatePath()) {
|
||||
return null;
|
||||
@@ -430,7 +428,7 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
} else if (this.path != null && !this.path.isDone() && positions.contains(this.targetPos)) {
|
||||
return this.path;
|
||||
} else {
|
||||
@@ -177,11 +183,29 @@ public abstract class PathNavigation {
|
||||
@@ -176,11 +182,29 @@ public abstract class PathNavigation {
|
||||
int i = (int)(followRange + (float)range);
|
||||
PathNavigationRegion pathNavigationRegion = new PathNavigationRegion(this.level, blockPos.offset(-i, -i, -i), blockPos.offset(i, i, i));
|
||||
Path path = this.pathFinder.findPath(pathNavigationRegion, this.mob, positions, followRange, distance, this.maxVisitedNodesMultiplier);
|
||||
@@ -460,7 +458,7 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
|
||||
return path;
|
||||
}
|
||||
@@ -228,8 +252,8 @@ public abstract class PathNavigation {
|
||||
@@ -227,8 +251,8 @@ public abstract class PathNavigation {
|
||||
if (this.isDone()) {
|
||||
return false;
|
||||
} else {
|
||||
@@ -471,7 +469,7 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
return false;
|
||||
} else {
|
||||
this.speedModifier = speed;
|
||||
@@ -252,6 +276,7 @@ public abstract class PathNavigation {
|
||||
@@ -251,6 +275,7 @@ public abstract class PathNavigation {
|
||||
if (this.hasDelayedRecomputation) {
|
||||
this.recomputePath();
|
||||
}
|
||||
@@ -479,7 +477,7 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
|
||||
if (!this.isDone()) {
|
||||
if (this.canUpdatePath()) {
|
||||
@@ -278,6 +303,7 @@ public abstract class PathNavigation {
|
||||
@@ -277,6 +302,7 @@ public abstract class PathNavigation {
|
||||
}
|
||||
|
||||
protected void followThePath() {
|
||||
@@ -494,10 +492,10 @@ index 33983ed67ad6b0d25d2ae00e03415bda940584eb..89b97f322ba32b24e87d850143f4434a
|
||||
- } else if (this.path != null && !this.path.isDone() && this.path.getNodeCount() != 0) {
|
||||
+ } else if (this.path != null && this.path.isProcessed() && !this.path.isDone() && this.path.getNodeCount() != 0) { // Kaiiju - petal - Skip if not processed
|
||||
Node node = this.path.getEndNode();
|
||||
Vec3 vec3 = new Vec3(((double)node.x + this.mob.getX()) / 2.0D, ((double)node.y + this.mob.getY()) / 2.0D, ((double)node.z + this.mob.getZ()) / 2.0D);
|
||||
Vec3 vec3 = new Vec3(((double)node.x + this.mob.getX()) / 2.0, ((double)node.y + this.mob.getY()) / 2.0, ((double)node.z + this.mob.getZ()) / 2.0);
|
||||
return pos.closerToCenterThan(vec3, (double)(this.path.getNodeCount() - this.path.getNextNodeIndex()));
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java b/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
|
||||
index ee8543afbbd681bf327a353530a7a635aa5ef592..8442ca52fe7fff47c3cc24ebb6d40e4f40bb85f3 100644
|
||||
index ce7398a617abe6e800c1e014b3ac5c970eb15c8a..0ccd291a2ed58d7a065f753a0211375203f87d18 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/navigation/WaterBoundPathNavigation.java
|
||||
@@ -7,6 +7,8 @@ import net.minecraft.world.level.Level;
|
||||
@@ -537,7 +535,7 @@ index ee8543afbbd681bf327a353530a7a635aa5ef592..8442ca52fe7fff47c3cc24ebb6d40e4f
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||
index 8db20db72cd51046213625fac46c35854c59ec5d..dbe9d592aa8b7c64ed375cfb8d135c6f84e0bd75 100644
|
||||
index 9104d7010bda6f9f73b478c11490ef9c53f76da2..c7b6f77f368518b62326f6b25979d1bd180feae0 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/sensing/NearestBedSensor.java
|
||||
@@ -7,7 +7,7 @@ import it.unimi.dsi.fastutil.longs.Long2LongOpenHashMap;
|
||||
@@ -560,7 +558,7 @@ index 8db20db72cd51046213625fac46c35854c59ec5d..dbe9d592aa8b7c64ed375cfb8d135c6f
|
||||
@@ -57,6 +58,25 @@ public class NearestBedSensor extends Sensor<Mob> {
|
||||
java.util.List<Pair<Holder<PoiType>, BlockPos>> poiposes = new java.util.ArrayList<>();
|
||||
// don't ask me why it's unbounded. ask mojang.
|
||||
io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), 48, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes);
|
||||
io.papermc.paper.util.PoiAccess.findAnyPoiPositions(poiManager, type -> type.is(PoiTypes.HOME), predicate, entity.blockPosition(), world.purpurConfig.villagerNearestBedSensorSearchRadius, PoiManager.Occupancy.ANY, false, Integer.MAX_VALUE, poiposes); // Purpur
|
||||
+ // Kaiiju start - await on async path processing
|
||||
+ if (org.dreeam.leaf.config.modules.async.AsyncPathfinding.enabled) {
|
||||
+ Path possiblePath = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes));
|
||||
@@ -583,14 +581,14 @@ index 8db20db72cd51046213625fac46c35854c59ec5d..dbe9d592aa8b7c64ed375cfb8d135c6f
|
||||
Path path = AcquirePoi.findPathToPois(entity, new java.util.HashSet<>(poiposes));
|
||||
// Paper end - optimise POI access
|
||||
if (path != null && path.canReach()) {
|
||||
@@ -70,6 +90,7 @@ public class NearestBedSensor extends Sensor<Mob> {
|
||||
return entry.getLongValue() < this.lastUpdate;
|
||||
});
|
||||
@@ -68,6 +88,7 @@ public class NearestBedSensor extends Sensor<Mob> {
|
||||
} else if (this.triedCount < 5) {
|
||||
this.batchCache.long2LongEntrySet().removeIf(entry -> entry.getLongValue() < this.lastUpdate);
|
||||
}
|
||||
+ } // Kaiiju - async path processing
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
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 997ab942be9f742804041b07d607e7dd6473ba96..9ef7be84999ab0ec39d2b58a48cdaebf42db10c9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/Bee.java
|
||||
@@ -614,7 +612,7 @@ index 997ab942be9f742804041b07d607e7dd6473ba96..9ef7be84999ab0ec39d2b58a48cdaebf
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
index 819445535895fbf79b99222bc6bf33cbd9089813..2957a7617acae18e23d8ffb90ed5c790681da9c1 100644
|
||||
index 44b17f1c6367b729d6e8f7f45c5689a12d6b3034..bde190fd608262fcf9eb272316c4984c918252ed 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
@@ -41,7 +41,6 @@ import net.minecraft.world.entity.VariantHolder;
|
||||
@@ -634,7 +632,7 @@ index 819445535895fbf79b99222bc6bf33cbd9089813..2957a7617acae18e23d8ffb90ed5c790
|
||||
|
||||
public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
public static final Ingredient TEMPTATION_ITEM = Ingredient.of(Items.SLIME_BALL);
|
||||
@@ -434,6 +435,17 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
@@ -467,6 +468,17 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
super(frog, world);
|
||||
}
|
||||
|
||||
@@ -652,7 +650,7 @@ index 819445535895fbf79b99222bc6bf33cbd9089813..2957a7617acae18e23d8ffb90ed5c790
|
||||
@Override
|
||||
public boolean canCutCorner(BlockPathTypes nodeType) {
|
||||
return nodeType != BlockPathTypes.WATER_BORDER && super.canCutCorner(nodeType);
|
||||
@@ -443,6 +455,11 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
@@ -476,6 +488,11 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
protected PathFinder createPathFinder(int range) {
|
||||
this.nodeEvaluator = new Frog.FrogNodeEvaluator(true);
|
||||
this.nodeEvaluator.setCanPassDoors(true);
|
||||
@@ -747,10 +745,10 @@ index 07fa613d75f3659145945245926e9068057e3ed2..df0d0868c11c26b2cadc1a07196a0191
|
||||
@Override
|
||||
protected float distance(Node a, Node b) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
|
||||
index 42407c5c0c09cd9d19bc7af92af8868bb038c686..8e7f7e4057940865a92d43fa081e9d41df02a52b 100644
|
||||
index 62ded304c08678750ae8c56c7de876ac5f39940b..4989b597b451e60da38f6e5ec4f790104775ce3e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/block/ShulkerBoxBlock.java
|
||||
@@ -254,8 +254,13 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
|
||||
@@ -243,8 +243,13 @@ public class ShulkerBoxBlock extends BaseEntityBlock {
|
||||
|
||||
@Override
|
||||
public VoxelShape getShape(BlockState state, BlockGetter world, BlockPos pos, CollisionContext context) {
|
||||
@@ -765,7 +763,7 @@ index 42407c5c0c09cd9d19bc7af92af8868bb038c686..8e7f7e4057940865a92d43fa081e9d41
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/Path.java b/src/main/java/net/minecraft/world/level/pathfinder/Path.java
|
||||
index 3049edb5a8b5967e5242a3896b23665888eb3472..0da9acd785cf785d82be7aab0a1e2bfd70c62998 100644
|
||||
index d9d0fff9962131808d54cca20f209df50b8e4af1..f2dcbb40ed43e6ddf6f3dc27fcff04f7962312aa 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/pathfinder/Path.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/pathfinder/Path.java
|
||||
@@ -27,6 +27,17 @@ public class Path {
|
||||
@@ -784,9 +782,9 @@ index 3049edb5a8b5967e5242a3896b23665888eb3472..0da9acd785cf785d82be7aab0a1e2bfd
|
||||
+ // Kaiiju end
|
||||
+
|
||||
public void advance() {
|
||||
++this.nextNodeIndex;
|
||||
this.nextNodeIndex++;
|
||||
}
|
||||
@@ -101,6 +112,7 @@ public class Path {
|
||||
@@ -100,6 +111,7 @@ public class Path {
|
||||
}
|
||||
|
||||
public boolean sameAs(@Nullable Path o) {
|
||||
@@ -795,7 +793,7 @@ index 3049edb5a8b5967e5242a3896b23665888eb3472..0da9acd785cf785d82be7aab0a1e2bfd
|
||||
return false;
|
||||
} else if (o.nodes.size() != this.nodes.size()) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
|
||||
index 61d5fe8e5344a6cb94d427859488c34821c8a3f6..ae9e47036c5de04383ea798f6c3899686f2243cb 100644
|
||||
index ad8b94cd37eb00c50af5b9c51c35b098a9ad67a3..d36cb87bd9d1b2127f404130127864f44852170e 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/pathfinder/PathFinder.java
|
||||
@@ -1,20 +1,18 @@
|
||||
@@ -912,16 +910,16 @@ index 61d5fe8e5344a6cb94d427859488c34821c8a3f6..ae9e47036c5de04383ea798f6c389968
|
||||
// Set<Target> set = positions.keySet();
|
||||
startNode.g = 0.0F;
|
||||
startNode.h = this.getBestH(startNode, positions); // Paper - optimize collection
|
||||
@@ -88,7 +131,7 @@ public class PathFinder {
|
||||
@@ -87,7 +130,7 @@ public class PathFinder {
|
||||
}
|
||||
|
||||
if (!(node.distanceTo(startNode) >= followRange)) {
|
||||
- int k = this.nodeEvaluator.getNeighbors(this.neighbors, node);
|
||||
+ int k = nodeEvaluator.getNeighbors(this.neighbors, node); // Kaiiju - petal - use provided nodeEvaluator
|
||||
|
||||
for(int l = 0; l < k; ++l) {
|
||||
for (int l = 0; l < k; l++) {
|
||||
Node node2 = this.neighbors[l];
|
||||
@@ -120,6 +163,7 @@ public class PathFinder {
|
||||
@@ -119,6 +162,7 @@ public class PathFinder {
|
||||
if (best == null || comparator.compare(path, best) < 0)
|
||||
best = path;
|
||||
}
|
||||
@@ -930,7 +928,7 @@ index 61d5fe8e5344a6cb94d427859488c34821c8a3f6..ae9e47036c5de04383ea798f6c389968
|
||||
// Paper end - Perf: remove streams and optimize collection
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/pathfinder/SwimNodeEvaluator.java b/src/main/java/net/minecraft/world/level/pathfinder/SwimNodeEvaluator.java
|
||||
index 0e2b14e7dfedf209d63279c81723fd7955122d78..079b278e2e262af433bb5bd0c12b3d8db4fa12fc 100644
|
||||
index 074e9c7f58adebadc3076bfc4b63adea8b1d521d..3cb00814eb7e248104e9a6bd016b6c342ba83220 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/pathfinder/SwimNodeEvaluator.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/pathfinder/SwimNodeEvaluator.java
|
||||
@@ -16,7 +16,7 @@ import net.minecraft.world.level.block.state.BlockState;
|
||||
|
||||
@@ -191,7 +191,7 @@ index 546028b42544bd62578e415faa245559a373a289..29ea09f27f4b0a7f1ab6075e68c73798
|
||||
// Paper start - remove allocation of Vec3D here
|
||||
// Vec3 vec3d = player.position().subtract(this.entity.position());
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerBossEvent.java b/src/main/java/net/minecraft/server/level/ServerBossEvent.java
|
||||
index ca42c2642a729b90d22b968af7258f3aee72e14b..fe03f0f55de978721a9d3d8446bdead2ec82f70d 100644
|
||||
index 4f91107f9ae42f96c060c310596db9aa869a8dbc..faad96f04af2e368f0276ade417dd1ba7841270b 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerBossEvent.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerBossEvent.java
|
||||
@@ -13,7 +13,7 @@ import net.minecraft.util.Mth;
|
||||
@@ -263,10 +263,10 @@ index 515e3f444e317de1d82421ad414c1ac10d4668ab..60e8bfc89cfb92e2f7d4860b11c16b3b
|
||||
|
||||
set.clear();
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 165b9f9ede6eec3e5667a2e653988f0e69ddb09f..0526ec7809f4937af85494679317f5fcbb6d8893 100644
|
||||
index a04ea23c295b493984eb841253fcb0eb4ad26342..667e2f0ce65c457fc656983e305be7e5d91718f1 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -2633,7 +2633,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -2644,7 +2644,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
|
||||
@Override
|
||||
public LevelEntityGetter<Entity> getEntities() {
|
||||
|
||||
@@ -38,7 +38,7 @@ index 83481539e058e5f428d9951e409fed62ef159e5c..ef2b60aa7686c92d27ce146ef320e05e
|
||||
LivingEntity entityliving1 = deadEntity.getLastHurtByMob();
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
index 221a4a3fbeac621ec593c7ba44b83f4b247a5589..2b2a40a4b33d4cafa521c607c06b13ce9f04acfb 100644
|
||||
index f52b314dd0ed83682b6a60c66b21eefd2cefb793..3a13de668a90d50b18214a91fd92d8b287bd76da 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/LevelChunk.java
|
||||
@@ -80,7 +80,18 @@ public class LevelChunk extends ChunkAccess {
|
||||
@@ -107,7 +107,7 @@ index 221a4a3fbeac621ec593c7ba44b83f4b247a5589..2b2a40a4b33d4cafa521c607c06b13ce
|
||||
|
||||
private void removeBlockEntityTicker(BlockPos pos) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry.java b/src/main/java/net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry.java
|
||||
index f30b2e964acdf44014065bd491a577040e61a2c2..7a69c96f255f0b925445dfb6790d27711fbf2b89 100644
|
||||
index 95c840f9bee51adef9bb00da5f53a5b011c0575e..1259d5d2ce58dd24b77a01d175a2037c17ed7791 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/gameevent/EuclideanGameEventListenerRegistry.java
|
||||
@@ -13,8 +13,8 @@ import net.minecraft.world.phys.Vec3;
|
||||
@@ -139,16 +139,16 @@ index f30b2e964acdf44014065bd491a577040e61a2c2..7a69c96f255f0b925445dfb6790d2771
|
||||
} else {
|
||||
this.listeners.remove(listener);
|
||||
}
|
||||
@@ -66,7 +66,7 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
@@ -65,7 +65,7 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
|
||||
while(iterator.hasNext()) {
|
||||
while (iterator.hasNext()) {
|
||||
GameEventListener gameEventListener = iterator.next();
|
||||
- if (this.listenersToRemove.remove(gameEventListener)) {
|
||||
+ if (false) { // Leaf - petal - Disallow concurrent modification
|
||||
iterator.remove();
|
||||
} else {
|
||||
Optional<Vec3> optional = getPostableListenerPosition(this.level, pos, gameEventListener);
|
||||
@@ -80,6 +80,8 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
@@ -79,6 +79,8 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
this.processing = false;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ index f30b2e964acdf44014065bd491a577040e61a2c2..7a69c96f255f0b925445dfb6790d2771
|
||||
if (!this.listenersToAdd.isEmpty()) {
|
||||
this.listeners.addAll(this.listenersToAdd);
|
||||
this.listenersToAdd.clear();
|
||||
@@ -89,6 +91,8 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
@@ -88,6 +90,8 @@ public class EuclideanGameEventListenerRegistry implements GameEventListenerRegi
|
||||
this.listeners.removeAll(this.listenersToRemove);
|
||||
this.listenersToRemove.clear();
|
||||
}
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Faster Natural Spawning
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/util/RandomSource.java b/src/main/java/net/minecraft/util/RandomSource.java
|
||||
index ff1ad1024419182f7f3de578442c1c033d4c9ebb..5e51a1c79811291a740ad4d5e79a7d672f4a2ab6 100644
|
||||
index 9c6f5b55b1f1376fa75e216cd366ee47c79fafc4..7762c8186035fdf60e11d9f1844516b61f442206 100644
|
||||
--- a/src/main/java/net/minecraft/util/RandomSource.java
|
||||
+++ b/src/main/java/net/minecraft/util/RandomSource.java
|
||||
@@ -16,6 +16,12 @@ public interface RandomSource {
|
||||
@@ -15,6 +15,12 @@ public interface RandomSource {
|
||||
return create(RandomSupport.generateUniqueSeed());
|
||||
}
|
||||
|
||||
@@ -18,11 +18,11 @@ index ff1ad1024419182f7f3de578442c1c033d4c9ebb..5e51a1c79811291a740ad4d5e79a7d67
|
||||
+ }
|
||||
+ // Leaf end
|
||||
+
|
||||
/** @deprecated */
|
||||
@Deprecated
|
||||
static RandomSource createThreadSafe() {
|
||||
return new ThreadSafeLegacyRandomSource(RandomSupport.generateUniqueSeed());
|
||||
diff --git a/src/main/java/net/minecraft/world/level/Level.java b/src/main/java/net/minecraft/world/level/Level.java
|
||||
index 14668a88d741de97817cdd7845dc9582610f590d..e3f64fdfddb47b6bcdd3bf1ed7d31d540a555c90 100644
|
||||
index 998f1fbd581acc3fb654d539ebb25dcea5f110e0..ba6ae356130f0147f3cc7886537c52b14926521f 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/Level.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/Level.java
|
||||
@@ -126,6 +126,7 @@ public abstract class Level implements LevelAccessor, AutoCloseable {
|
||||
@@ -55,7 +55,7 @@ index 31003588de8bef9952a688c486049077328e89a3..9c4a8b6a4371bf8b1af05fb180b8fee0
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java b/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
||||
index 36f9d68b70fbd1cd3790a9bb5a729a11da8cbf83..458ef9e6f68f89f34a9e1bd74b50d52eeb93342e 100644
|
||||
index 4327bee689e986561d126d6018d3fee7d2623176..e2958cbcac0433ae5be186699ce5f9b57cf7e95c 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/RandomSupport.java
|
||||
@@ -5,6 +5,7 @@ import com.google.common.base.Charsets;
|
||||
@@ -66,8 +66,8 @@ index 36f9d68b70fbd1cd3790a9bb5a729a11da8cbf83..458ef9e6f68f89f34a9e1bd74b50d52e
|
||||
import java.util.concurrent.atomic.AtomicLong;
|
||||
|
||||
public final class RandomSupport {
|
||||
@@ -43,6 +44,12 @@ public final class RandomSupport {
|
||||
}) ^ System.nanoTime();
|
||||
@@ -41,6 +42,12 @@ public final class RandomSupport {
|
||||
return SEED_UNIQUIFIER.updateAndGet(seedUniquifier -> seedUniquifier * 1181783497276652981L) ^ System.nanoTime();
|
||||
}
|
||||
|
||||
+ // Leaf start - Generate random seed faster
|
||||
|
||||
@@ -113,7 +113,7 @@ index feba8a264bae656244f60296d0511a8046297f73..2a24928fc4509ac3603f7e5ce574fed8
|
||||
@Override
|
||||
protected float getStandingEyeHeight(Pose pose, EntityDimensions dimensions) {
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e37c6e86e 100644
|
||||
index bf92f6c9d1ecff3e56e5bb904c7af9e793823e93..d37bc0dde078c2246474eadd19f6ebcc2a06fb17 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1530,6 +1530,7 @@ public class PurpurWorldConfig {
|
||||
@@ -148,7 +148,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
}
|
||||
|
||||
public boolean illusionerRidable = false;
|
||||
@@ -3119,6 +3123,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3123,6 +3127,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombieTakeDamageFromWater = false;
|
||||
public boolean zombieAlwaysDropExp = false;
|
||||
public double zombieHeadVisibilityPercent = 0.5D;
|
||||
@@ -156,7 +156,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
private void zombieSettings() {
|
||||
zombieRidable = getBoolean("mobs.zombie.ridable", zombieRidable);
|
||||
zombieRidableInWater = getBoolean("mobs.zombie.ridable-in-water", zombieRidableInWater);
|
||||
@@ -3138,6 +3143,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3142,6 +3147,7 @@ public class PurpurWorldConfig {
|
||||
zombieTakeDamageFromWater = getBoolean("mobs.zombie.takes-damage-from-water", zombieTakeDamageFromWater);
|
||||
zombieAlwaysDropExp = getBoolean("mobs.zombie.always-drop-exp", zombieAlwaysDropExp);
|
||||
zombieHeadVisibilityPercent = getDouble("mobs.zombie.head-visibility-percent", zombieHeadVisibilityPercent);
|
||||
@@ -164,7 +164,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
}
|
||||
|
||||
public boolean zombieHorseRidable = false;
|
||||
@@ -3186,6 +3192,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3190,6 +3196,7 @@ public class PurpurWorldConfig {
|
||||
public int zombieVillagerCuringTimeMax = 6000;
|
||||
public boolean zombieVillagerCureEnabled = true;
|
||||
public boolean zombieVillagerAlwaysDropExp = false;
|
||||
@@ -172,7 +172,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
private void zombieVillagerSettings() {
|
||||
zombieVillagerRidable = getBoolean("mobs.zombie_villager.ridable", zombieVillagerRidable);
|
||||
zombieVillagerRidableInWater = getBoolean("mobs.zombie_villager.ridable-in-water", zombieVillagerRidableInWater);
|
||||
@@ -3205,6 +3212,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3209,6 +3216,7 @@ public class PurpurWorldConfig {
|
||||
zombieVillagerCuringTimeMax = getInt("mobs.zombie_villager.curing_time.max", zombieVillagerCuringTimeMax);
|
||||
zombieVillagerCureEnabled = getBoolean("mobs.zombie_villager.cure.enabled", zombieVillagerCureEnabled);
|
||||
zombieVillagerAlwaysDropExp = getBoolean("mobs.zombie_villager.always-drop-exp", zombieVillagerAlwaysDropExp);
|
||||
@@ -180,7 +180,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
}
|
||||
|
||||
public boolean zombifiedPiglinRidable = false;
|
||||
@@ -3218,6 +3226,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3222,6 +3230,7 @@ public class PurpurWorldConfig {
|
||||
public boolean zombifiedPiglinCountAsPlayerKillWhenAngry = true;
|
||||
public boolean zombifiedPiglinTakeDamageFromWater = false;
|
||||
public boolean zombifiedPiglinAlwaysDropExp = false;
|
||||
@@ -188,7 +188,7 @@ index cd73f0e40e5010e3069330ae66120dace63cde56..f6338904ca0961cfd67326908e9cf72e
|
||||
private void zombifiedPiglinSettings() {
|
||||
zombifiedPiglinRidable = getBoolean("mobs.zombified_piglin.ridable", zombifiedPiglinRidable);
|
||||
zombifiedPiglinRidableInWater = getBoolean("mobs.zombified_piglin.ridable-in-water", zombifiedPiglinRidableInWater);
|
||||
@@ -3235,6 +3244,7 @@ public class PurpurWorldConfig {
|
||||
@@ -3239,6 +3248,7 @@ public class PurpurWorldConfig {
|
||||
zombifiedPiglinCountAsPlayerKillWhenAngry = getBoolean("mobs.zombified_piglin.count-as-player-kill-when-angry", zombifiedPiglinCountAsPlayerKillWhenAngry);
|
||||
zombifiedPiglinTakeDamageFromWater = getBoolean("mobs.zombified_piglin.takes-damage-from-water", zombifiedPiglinTakeDamageFromWater);
|
||||
zombifiedPiglinAlwaysDropExp = getBoolean("mobs.zombified_piglin.always-drop-exp", zombifiedPiglinAlwaysDropExp);
|
||||
|
||||
@@ -7,18 +7,16 @@ Replace `thenApply` with `thenCompose`. Once one task is completed then the next
|
||||
to prevent blocking threads while waiting to complete all tasks
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/Util.java b/src/main/java/net/minecraft/Util.java
|
||||
index b40864e41e1506884fdefefbf3cf4833a8f706c3..4b52a487296c8ea4d4159ec74582f13eb3ffbe36 100644
|
||||
index 01a12f4d6f3c2f09bffc78692443b9fd391db45a..da6a9d2e315bf769e762b70599eeff25f6540728 100644
|
||||
--- a/src/main/java/net/minecraft/Util.java
|
||||
+++ b/src/main/java/net/minecraft/Util.java
|
||||
@@ -409,9 +409,11 @@ public class Util {
|
||||
@@ -410,7 +410,11 @@ public class Util {
|
||||
return futures.get(0).thenApply(List::of);
|
||||
} else {
|
||||
CompletableFuture<Void> completableFuture = CompletableFuture.allOf(futures.toArray(new CompletableFuture[0]));
|
||||
- return completableFuture.thenApply((void_) -> {
|
||||
- return futures.stream().map(CompletableFuture::join).toList();
|
||||
- });
|
||||
- return completableFuture.thenApply(void_ -> futures.stream().map(CompletableFuture::join).toList());
|
||||
+ // Leaf start - Faster sequencing of futures for chunk structure gen
|
||||
+ return completableFuture.thenCompose((void_) ->
|
||||
+ return completableFuture.thenCompose(void_ ->
|
||||
+ CompletableFuture.supplyAsync(() ->
|
||||
+ futures.stream().map(CompletableFuture::join).toList()));
|
||||
+ // Leaf end
|
||||
|
||||
@@ -17,14 +17,14 @@ This format saves about 50% of disk space.
|
||||
Documentation: https://github.com/xymb-endcrystalme/LinearRegionFileFormatTools
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 5cd5ed2053bf8538c7733b8cfb784827f879c4c8..90d705a319323c82a9e19cf70c46c80354a7f3f2 100644
|
||||
index 544e9549cd5721728746f0995f8c0d5aba8750b0..e587b885772cc7cb4f9d298e2adea2c3417233cb 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -32,6 +32,8 @@ dependencies {
|
||||
// Leaf end
|
||||
|
||||
// Paper start
|
||||
+ implementation("com.github.luben:zstd-jni:1.5.5-11") // LinearPurpur
|
||||
+ implementation("com.github.luben:zstd-jni:1.5.6-2") // LinearPurpur
|
||||
+ implementation("org.lz4:lz4-java:1.8.0") // LinearPurpur
|
||||
implementation("org.jline:jline-terminal-jansi:3.25.1") // Leaf - Bump Dependencies
|
||||
implementation("com.github.Dreeam-qwq:TerminalConsoleAppender:360a0759") // Leaf - Use own TerminalConsoleAppender fork to fix some issues under latest version of jline/log4j
|
||||
@@ -118,7 +118,7 @@ index 8dffb330b474b830d2f816ecf8be2e8d2e4556cd..bed46642b59d38e58e6aa663a47cbfc9
|
||||
long expectedChunks = (long)regionFiles.length * (32L * 32L);
|
||||
// Gale start - instantly continue on world upgrade finish
|
||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
index ad24801339c4b5a4b4035aa85d5c45b3b309e985..8adca25614bb2ff999a2372e80e93402accd761f 100644
|
||||
index ad0be84c4f8eec371d7d0dacd3c5a3622e82e726..7ff74086641bdaaa211e7cc00e169b93e146fb39 100644
|
||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||
@@ -866,7 +866,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||
@@ -187,7 +187,7 @@ index 80168d2a040c02504af3a4f3f68802afb327046d..fdd72e567a1a59153da2adb35a9605b8
|
||||
regionFile.setStatus(chunkPos.x, chunkPos.z, ChunkSerializer.getStatus(compound));
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 0526ec7809f4937af85494679317f5fcbb6d8893..005549acdd30c88d14df9051cbb732baf38282e5 100644
|
||||
index 667e2f0ce65c457fc656983e305be7e5d91718f1..a5e3b6bee4484f598d7c762dc54bb92c7d0cb2d7 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -419,8 +419,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||
@@ -261,7 +261,7 @@ index 77dd632a266f4abed30b87b7909d77857c01e316..4938d86f62071f578822684f576b8382
|
||||
try {
|
||||
for (int i1 = 0; i1 < 32; ++i1) {
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
|
||||
index 12a7aaeaa8b4b788b620b1985591c3b93253ccd5..af639cc29999a49f4f2d494dc82f99577c6d9d1a 100644
|
||||
index 61a06706f1468a8d4cceb9fb2aae61cf56bd991d..3709835fe96a5d539cbdee004426b2c7396b3bdf 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/ai/village/poi/PoiManager.java
|
||||
@@ -57,8 +57,8 @@ public class PoiManager extends SectionStorage<PoiSection> {
|
||||
@@ -611,25 +611,35 @@ index fe312b1aef579cb4bf81bdd967cf72ff880d7505..8ee307a453e79e59444f5c5b8b45ffc7
|
||||
regionfile.flush();
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java
|
||||
index 4aac1979cf57300825a999c876fcf24d3170e68e..79a389b9a139f6838adf32d3b5d4d7ecdd87bcc3 100644
|
||||
index 4ac5024936987c15f927e3148af4bfa57228ad1e..bbb3e50e82f09e234ec48b8d462b9d9bc8680684 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/chunk/storage/SectionStorage.java
|
||||
@@ -47,8 +47,8 @@ public class SectionStorage<R> extends RegionFileStorage implements AutoCloseabl
|
||||
public final RegistryAccess registryAccess; // Paper - rewrite chunk system
|
||||
@@ -48,6 +48,11 @@ public class SectionStorage<R> extends RegionFileStorage implements AutoCloseabl
|
||||
protected final LevelHeightAccessor levelHeightAccessor;
|
||||
|
||||
- public SectionStorage(Path path, Function<Runnable, Codec<R>> codecFactory, Function<Runnable, R> factory, DataFixer dataFixer, DataFixTypes dataFixTypes, boolean dsync, RegistryAccess dynamicRegistryManager, LevelHeightAccessor world) {
|
||||
public SectionStorage(
|
||||
+ // LinearPurpur start
|
||||
+ org.purpurmc.purpur.region.RegionFileFormat format,
|
||||
+ int linearCompression,
|
||||
+ boolean linearCrashOnBrokenSymlink,
|
||||
+ // LinearPurpur end
|
||||
Path path,
|
||||
Function<Runnable, Codec<R>> codecFactory,
|
||||
Function<Runnable, R> factory,
|
||||
@@ -57,7 +62,7 @@ public class SectionStorage<R> extends RegionFileStorage implements AutoCloseabl
|
||||
RegistryAccess dynamicRegistryManager,
|
||||
LevelHeightAccessor world
|
||||
) {
|
||||
- super(path, dsync); // Paper - remove mojang I/O thread
|
||||
+ public SectionStorage(org.purpurmc.purpur.region.RegionFileFormat format, int linearCompression, boolean linearCrashOnBrokenSymlink, Path path, Function<Runnable, Codec<R>> codecFactory, Function<Runnable, R> factory, DataFixer dataFixer, DataFixTypes dataFixTypes, boolean dsync, RegistryAccess dynamicRegistryManager, LevelHeightAccessor world) { // LinearPurpur
|
||||
+ super(format, linearCompression, linearCrashOnBrokenSymlink, path, dsync); // Paper - remove mojang I/O thread // LinearPurpur
|
||||
this.codec = codecFactory;
|
||||
this.factory = factory;
|
||||
this.fixerUpper = dataFixer;
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
index 593119cefb6664f2b0b03b684103440b27696e37..485bf453be799d1cb4a3a10a831db7da5db64b3b 100644
|
||||
index 43aea7cf6e2398effdaed765559942031f049fd3..e8d262c1795a5015948259132e201ba522000b25 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
+++ b/src/main/java/org/bukkit/craftbukkit/CraftWorld.java
|
||||
@@ -573,7 +573,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||
@@ -574,7 +574,7 @@ public class CraftWorld extends CraftRegionAccessor implements World {
|
||||
world.getChunk(x, z); // make sure we're at ticket level 32 or lower
|
||||
return true;
|
||||
}
|
||||
@@ -663,7 +673,7 @@ index 0c8bcfbe35f9133a32a31163e5bf2f04786c77a0..63b5a0993207c55357ac507c974dea77
|
||||
private static void disableGiveCommandDrops() {
|
||||
disableGiveCommandDrops = getBoolean("settings.disable-give-dropping", disableGiveCommandDrops);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index f6338904ca0961cfd67326908e9cf72e37c6e86e..1ac5a18e2b56770fe1b9b27b56e4a88fe27a27fe 100644
|
||||
index d37bc0dde078c2246474eadd19f6ebcc2a06fb17..e36059ceb31a5b852af0782181e16c1a1309e105 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -27,6 +27,7 @@ import java.util.Map;
|
||||
|
||||
@@ -60,10 +60,10 @@ index a215c5a42943fcb97448e3ed67467e61efb0d28d..7bb25b1a8919abe4b9b65b6b5d54642a
|
||||
|
||||
@Override
|
||||
diff --git a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
index 2957a7617acae18e23d8ffb90ed5c790681da9c1..4da22d7e536706f2ce892d15435b56a63c11b544 100644
|
||||
index bde190fd608262fcf9eb272316c4984c918252ed..ecedc765b08aa6c2f11e48eac5c601baf6281ba9 100644
|
||||
--- a/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
+++ b/src/main/java/net/minecraft/world/entity/animal/frog/Frog.java
|
||||
@@ -137,6 +137,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
@@ -162,6 +162,23 @@ public class Frog extends Animal implements VariantHolder<FrogVariant> {
|
||||
public float getJumpPower() {
|
||||
return (getRider() != null && isControllable()) ? level().purpurConfig.frogRidableJumpHeight * this.getBlockJumpFactor() : super.getJumpPower();
|
||||
}
|
||||
@@ -209,7 +209,7 @@ index 63b5a0993207c55357ac507c974dea77206e80f4..e45c11bf2c42e6d57f803349d8ca6936
|
||||
org.bukkit.event.inventory.InventoryType.ENDER_CHEST.setDefaultSize(enderChestSixRows ? 54 : 27);
|
||||
enderChestPermissionRows = getBoolean("settings.blocks.ender_chest.use-permissions-for-rows", enderChestPermissionRows);
|
||||
diff --git a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
index 1ac5a18e2b56770fe1b9b27b56e4a88fe27a27fe..a4d60637dabcb57e0a559779455603752df03753 100644
|
||||
index e36059ceb31a5b852af0782181e16c1a1309e105..af6190075cc0ffa6e8473491186e7a7958376d59 100644
|
||||
--- a/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
+++ b/src/main/java/org/purpurmc/purpur/PurpurWorldConfig.java
|
||||
@@ -1193,7 +1193,15 @@ public class PurpurWorldConfig {
|
||||
@@ -290,7 +290,7 @@ index 1ac5a18e2b56770fe1b9b27b56e4a88fe27a27fe..a4d60637dabcb57e0a55977945560375
|
||||
tadpoleRidable = getBoolean("mobs.tadpole.ridable", tadpoleRidable);
|
||||
tadpoleRidableInWater = getBoolean("mobs.tadpole.ridable-in-water", tadpoleRidableInWater);
|
||||
tadpoleControllable = getBoolean("mobs.tadpole.controllable", tadpoleControllable);
|
||||
@@ -2999,7 +3037,15 @@ public class PurpurWorldConfig {
|
||||
@@ -3003,7 +3041,15 @@ public class PurpurWorldConfig {
|
||||
public boolean wardenRidable = false;
|
||||
public boolean wardenRidableInWater = true;
|
||||
public boolean wardenControllable = true;
|
||||
|
||||
@@ -5,10 +5,10 @@ Subject: [PATCH] Redirect vanilla getProfiler in PathNavigationRegion
|
||||
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java b/src/main/java/net/minecraft/world/level/PathNavigationRegion.java
|
||||
index 9c2321ebb1237b4ecd3e7f7053e5039b800d89ff..589d66a2d890415e75f9e30176f0a7ada04a8bd7 100644
|
||||
index a1a4b99167919bedb8a45c3b81889f58f2abfbcc..b0f619c0c145d32e6e5db066428b1c0f0a3774e4 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/PathNavigationRegion.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/PathNavigationRegion.java
|
||||
@@ -153,4 +153,10 @@ public class PathNavigationRegion implements BlockGetter, CollisionGetter {
|
||||
@@ -150,4 +150,10 @@ public class PathNavigationRegion implements BlockGetter, CollisionGetter {
|
||||
public int getHeight() {
|
||||
return this.level.getHeight();
|
||||
}
|
||||
|
||||
@@ -8,10 +8,10 @@ This patch ported from 1.20.5 snapshot - 24w04a
|
||||
Mojang issues: https://bugs.mojang.com/browse/MC-249136
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/StructureManager.java b/src/main/java/net/minecraft/world/level/StructureManager.java
|
||||
index b59581b92aed0bc1b09008c695b0b112c3e65743..d4422631d9e6728fedfb459c46b6494422e660b9 100644
|
||||
index 07eb481380e8fd4e492f36342ba633579c1b624e..9f1ab055bbad2d96831c207f8f1b612617377f79 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/StructureManager.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/StructureManager.java
|
||||
@@ -23,6 +23,7 @@ import net.minecraft.world.level.levelgen.structure.StructureCheck;
|
||||
@@ -25,6 +25,7 @@ import net.minecraft.world.level.levelgen.structure.StructureCheck;
|
||||
import net.minecraft.world.level.levelgen.structure.StructureCheckResult;
|
||||
import net.minecraft.world.level.levelgen.structure.StructurePiece;
|
||||
import net.minecraft.world.level.levelgen.structure.StructureStart;
|
||||
@@ -19,7 +19,7 @@ index b59581b92aed0bc1b09008c695b0b112c3e65743..d4422631d9e6728fedfb459c46b64944
|
||||
|
||||
public class StructureManager {
|
||||
public final LevelAccessor level;
|
||||
@@ -163,9 +164,11 @@ public class StructureManager {
|
||||
@@ -164,9 +165,11 @@ public class StructureManager {
|
||||
return this.level.getChunk(sectionPos.x(), sectionPos.z(), ChunkStatus.STRUCTURE_REFERENCES).getAllReferences();
|
||||
}
|
||||
|
||||
@@ -47,10 +47,10 @@ index b8b78494449c0cd638f9706a803dc54e184d981f..2dcbe2ffbcb3b33b71de21961cb83bb9
|
||||
|
||||
if (!skipReferencedStructures && structurecheckresult == StructureCheckResult.START_PRESENT) {
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java b/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java
|
||||
index 16356d7f388561300e794a52f3f263b8e7d9b880..1e973bcbc79de7fdbeb22e3b577ea51c8a165c79 100644
|
||||
index 09867812600b24b3b7d05b58f98582650d313fc8..2193b21de33a59d5a9100d5a34fc54e29866b436 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/StructureCheck.java
|
||||
@@ -32,6 +32,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||
@@ -31,6 +31,7 @@ import net.minecraft.world.level.chunk.ChunkGenerator;
|
||||
import net.minecraft.world.level.chunk.storage.ChunkScanAccess;
|
||||
import net.minecraft.world.level.chunk.storage.ChunkStorage;
|
||||
import net.minecraft.world.level.levelgen.RandomState;
|
||||
@@ -58,7 +58,7 @@ index 16356d7f388561300e794a52f3f263b8e7d9b880..1e973bcbc79de7fdbeb22e3b577ea51c
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager;
|
||||
import org.slf4j.Logger;
|
||||
|
||||
@@ -161,7 +162,7 @@ public class StructureCheck {
|
||||
@@ -171,7 +172,7 @@ public class StructureCheck {
|
||||
this.structureConfigs = registryManager.registryOrThrow(Registries.STRUCTURE);
|
||||
}
|
||||
|
||||
@@ -67,7 +67,7 @@ index 16356d7f388561300e794a52f3f263b8e7d9b880..1e973bcbc79de7fdbeb22e3b577ea51c
|
||||
long l = pos.toLong();
|
||||
Object2IntMap<Structure> object2IntMap = this.loadedChunksSafe.get(l); // Paper - rewrite chunk system - synchronise this class
|
||||
if (object2IntMap != null) {
|
||||
@@ -171,6 +172,11 @@ public class StructureCheck {
|
||||
@@ -181,6 +182,11 @@ public class StructureCheck {
|
||||
if (structureCheckResult != null) {
|
||||
return structureCheckResult;
|
||||
} else {
|
||||
@@ -76,36 +76,34 @@ index 16356d7f388561300e794a52f3f263b8e7d9b880..1e973bcbc79de7fdbeb22e3b577ea51c
|
||||
+ return StructureCheckResult.START_NOT_PRESENT;
|
||||
+ }
|
||||
+ // Leaf end
|
||||
boolean bl = this.featureChecksSafe.computeIfAbsent(type, (structure2) -> { // Paper - rewrite chunk system - synchronise this class
|
||||
return new SynchronisedLong2BooleanMap(PER_FEATURE_CHECK_LIMIT); // Paper - rewrite chunk system - synchronise this class
|
||||
}).getOrCompute(l, (chunkPos) -> { // Paper - rewrite chunk system - synchronise this class
|
||||
boolean bl = this.featureChecksSafe // Paper - rewrite chunk system - synchronise this class
|
||||
.computeIfAbsent(type, structure2 -> new SynchronisedLong2BooleanMap(PER_FEATURE_CHECK_LIMIT)) // Paper - rewrite chunk system - synchronise this class
|
||||
.getOrCompute(l, chunkPos -> this.canCreateStructure(pos, type)); // Paper - rewrite chunk system - synchronise this class
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
index 02e58161a0f5915084230831ee03050d762b67d2..7d7559f4d0ffb0a0e85e1562bd856032e2f26fda 100644
|
||||
index dc44ae806dc2779e5f0ec0de3fdb4b53da806a5b..c154b3213864f697cc679e2ecdd3b31a97113542 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
@@ -74,14 +74,18 @@ public abstract class StructurePlacement {
|
||||
@@ -94,11 +94,21 @@ public abstract class StructurePlacement {
|
||||
}
|
||||
}
|
||||
// Paper end - Add missing structure set seed configs
|
||||
- if (!this.isPlacementChunk(calculator, chunkX, chunkZ)) {
|
||||
- return false;
|
||||
- } else if (this.frequency < 1.0F && !this.frequencyReductionMethod.shouldGenerate(calculator.getLevelSeed(), this.salt, chunkX, chunkZ, this.frequency, saltOverride)) { // Paper - Add missing structure set seed configs
|
||||
- return false;
|
||||
- } else {
|
||||
- return !this.exclusionZone.isPresent() || !this.exclusionZone.get().isPlacementForbidden(calculator, chunkX, chunkZ);
|
||||
- }
|
||||
+ // Leaf start - Fix MC-249136
|
||||
+ return this.isPlacementChunk(calculator, chunkX, chunkZ) && this.applyAdditionalChunkRestrictions(chunkX, chunkZ, calculator.getLevelSeed(), saltOverride) && this.applyInteractionsWithOtherStructures(calculator, chunkX, chunkZ);
|
||||
+ }
|
||||
+
|
||||
return this.isPlacementChunk(calculator, chunkX, chunkZ)
|
||||
- && (!(this.frequency < 1.0F) || this.frequencyReductionMethod.shouldGenerate(calculator.getLevelSeed(), this.salt, chunkX, chunkZ, this.frequency, saltOverride)) // Paper - Add missing structure set seed configs
|
||||
- && (!this.exclusionZone.isPresent() || !this.exclusionZone.get().isPlacementForbidden(calculator, chunkX, chunkZ));
|
||||
+ && this.applyAdditionalChunkRestrictions(chunkX, chunkZ, calculator.getLevelSeed(), saltOverride)
|
||||
+ && this.applyInteractionsWithOtherStructures(calculator, chunkX, chunkZ);
|
||||
}
|
||||
|
||||
+ public boolean applyAdditionalChunkRestrictions(int chunkX, int chunkZ, long levelSeed, Integer saltOverride) {
|
||||
+ return !(this.frequency < 1.0f) || this.frequencyReductionMethod.shouldGenerate(levelSeed, this.salt, chunkX, chunkZ, this.frequency, saltOverride); // Paper - Add missing structure set seed configs
|
||||
+ }
|
||||
+
|
||||
+ public boolean applyInteractionsWithOtherStructures(ChunkGeneratorStructureState calculator, int chunkX, int chunkZ) {
|
||||
+ return this.exclusionZone.isEmpty() || !this.exclusionZone.get().isPlacementForbidden(calculator, chunkX, chunkZ);
|
||||
}
|
||||
+ }
|
||||
+ // Leaf end
|
||||
|
||||
+
|
||||
protected abstract boolean isPlacementChunk(ChunkGeneratorStructureState calculator, int chunkX, int chunkZ);
|
||||
|
||||
public BlockPos getLocatePos(ChunkPos chunkPos) {
|
||||
|
||||
@@ -27,7 +27,7 @@ index 3756de835ea87e3a4fb87cbf77365ffd87957ea9..66e149fe132191293b6075f3368192f7
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/ResultSlot.java b/src/main/java/net/minecraft/world/inventory/ResultSlot.java
|
||||
index 245731757f2593c736916ac6ee59e2c91d179934..45995459a174bd62896fbd205a367a9945ec3bb2 100644
|
||||
index accf752e7615f775483830f81bd0df30e40d3c7f..d3d7f9b81e0244b7d3a487ab16e78fd8be736765 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/ResultSlot.java
|
||||
+++ b/src/main/java/net/minecraft/world/inventory/ResultSlot.java
|
||||
@@ -45,7 +45,7 @@ public class ResultSlot extends Slot {
|
||||
@@ -38,7 +38,7 @@ index 245731757f2593c736916ac6ee59e2c91d179934..45995459a174bd62896fbd205a367a99
|
||||
+ stack.onCraftedBy(this.player.level(), this.player, stack.getCount()); // Leaf - Fix MC-65198
|
||||
}
|
||||
|
||||
Container var3 = this.container;
|
||||
if (this.container instanceof RecipeCraftingHolder recipeCraftingHolder) {
|
||||
diff --git a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java b/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java
|
||||
index eade15820dd9db38b6af2a5c4314acfb14ca03e9..5fef8a6bc746a34a0b742c51f169a502bc9b6ce6 100644
|
||||
--- a/src/main/java/net/minecraft/world/inventory/StonecutterMenu.java
|
||||
|
||||
@@ -24,10 +24,10 @@ index 397f985756c5bc6c11a32c844d536000dd922ed1..4a6a94c471d317dd8ea2ad83c5b97826
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
||||
index b8c1f3b9afddc87d56541c8af63cffecfcdd2653..65594c88f660b9d535cd2c6960496fae031446ac 100644
|
||||
index e62ae57532ddcf12b7ebca77220cb1f3bd603717..b702f707f03cba4f67657a0e7b65b28366b24b50 100644
|
||||
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
||||
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatCommandPacket.java
|
||||
@@ -16,7 +16,7 @@ public record ServerboundChatCommandPacket(String command, Instant timeStamp, lo
|
||||
@@ -18,7 +18,7 @@ public record ServerboundChatCommandPacket(
|
||||
buf.writeUtf(this.command, 256);
|
||||
buf.writeInstant(this.timeStamp);
|
||||
buf.writeLong(this.salt);
|
||||
@@ -37,10 +37,10 @@ index b8c1f3b9afddc87d56541c8af63cffecfcdd2653..65594c88f660b9d535cd2c6960496fae
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
||||
index d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..a39b0b643ee08ad3360ad5163af79c1d8b5887e4 100644
|
||||
index 831178218ddfaa1828c00d0662b251d11bb29ff5..a3718138b956f635faba10e3e38c5285318dd36a 100644
|
||||
--- a/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
||||
+++ b/src/main/java/net/minecraft/network/protocol/game/ServerboundChatPacket.java
|
||||
@@ -17,7 +17,7 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
|
||||
@@ -18,7 +18,7 @@ public record ServerboundChatPacket(String message, Instant timeStamp, long salt
|
||||
buf.writeUtf(this.message, 256);
|
||||
buf.writeInstant(this.timeStamp);
|
||||
buf.writeLong(this.salt);
|
||||
@@ -50,18 +50,44 @@ index d1d2fc0c57523c1abf1e8bfec913c78927c3dafc..a39b0b643ee08ad3360ad5163af79c1d
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
||||
index c40979e2fa37acb2f3df493395f3ab6e185345d7..8f1ea047b76f083603e7c86d73c7eeab1c3f3f76 100644
|
||||
index 5ed4a3a30657ab9e748245ad34333b915e870ae2..866226b083217fef72dfa9b0271ab25ef25e21d8 100644
|
||||
--- a/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
||||
+++ b/src/main/java/net/minecraft/network/protocol/status/ServerStatus.java
|
||||
@@ -17,7 +17,7 @@ import net.minecraft.network.chat.ComponentSerialization;
|
||||
|
||||
public record ServerStatus(Component description, Optional<ServerStatus.Players> players, Optional<ServerStatus.Version> version, Optional<ServerStatus.Favicon> favicon, boolean enforcesSecureChat) {
|
||||
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create((instance) -> {
|
||||
- return instance.group(ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description), ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players), ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version), ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)).apply(instance, ServerStatus::new);
|
||||
+ return !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled ? instance.group(ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description), ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players), ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version), ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(x -> true)).apply(instance, ServerStatus::new) : instance.group(ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description), ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players), ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version), ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon), Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(ServerStatus::enforcesSecureChat)).apply(instance, ServerStatus::new); // Leaf - Mirai - Configurable chat message signatures
|
||||
});
|
||||
@@ -22,16 +22,26 @@ public record ServerStatus(
|
||||
Optional<ServerStatus.Favicon> favicon,
|
||||
boolean enforcesSecureChat
|
||||
) {
|
||||
+ // Leaf start - Mirai - Configurable chat message signatures
|
||||
public static final Codec<ServerStatus> CODEC = RecordCodecBuilder.create(
|
||||
- instance -> instance.group(
|
||||
- ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
||||
- ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
|
||||
- ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
|
||||
- ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
|
||||
- Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.valueOf(false)).forGetter(ServerStatus::enforcesSecureChat)
|
||||
- )
|
||||
- .apply(instance, ServerStatus::new)
|
||||
+ instance ->
|
||||
+ !org.dreeam.leaf.config.modules.network.ChatMessageSignature.enabled
|
||||
+ ? instance.group(
|
||||
+ ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
||||
+ ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
|
||||
+ ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
|
||||
+ ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
|
||||
+ Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(x -> true)
|
||||
+ ).apply(instance, ServerStatus::new)
|
||||
+ : instance.group(
|
||||
+ ComponentSerialization.CODEC.optionalFieldOf("description", CommonComponents.EMPTY).forGetter(ServerStatus::description),
|
||||
+ ServerStatus.Players.CODEC.optionalFieldOf("players").forGetter(ServerStatus::players),
|
||||
+ ServerStatus.Version.CODEC.optionalFieldOf("version").forGetter(ServerStatus::version),
|
||||
+ ServerStatus.Favicon.CODEC.optionalFieldOf("favicon").forGetter(ServerStatus::favicon),
|
||||
+ Codec.BOOL.optionalFieldOf("enforcesSecureChat", Boolean.FALSE).forGetter(ServerStatus::enforcesSecureChat)
|
||||
+ ).apply(instance, ServerStatus::new)
|
||||
);
|
||||
+ // Leaf end- Mirai
|
||||
|
||||
public static record Favicon(byte[] iconBytes) {
|
||||
private static final String PREFIX = "data:image/png;base64,";
|
||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
index a83fb872a1d186a3547c12f518e1bb0067fffaf7..fbe299dc0e2d0903075f64f199a498c3e57f07ab 100644
|
||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||
@@ -75,7 +101,7 @@ index a83fb872a1d186a3547c12f518e1bb0067fffaf7..fbe299dc0e2d0903075f64f199a498c3
|
||||
|
||||
// Paper start - Add setting for proxy online mode status
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
index 9b87e62426f8805247b86eef0fe2939cf76aa1d8..8221cb9a4cc0cc382ed1dbc8e7c743d65ab91be5 100644
|
||||
index 54e872d7279a56ce1c1ff0310ed302f0012e5d3e..8cea11444cfb711c60ee6af84996c29100541cfa 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||
@@ -2262,7 +2262,7 @@ public class ServerPlayer extends Player {
|
||||
|
||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Cache player profileResult
|
||||
|
||||
|
||||
diff --git a/build.gradle.kts b/build.gradle.kts
|
||||
index 6a96a847c3b0a7af0e187cc2251c3ad275da4c11..517b7551bfaf546109fd8d4d246c083e9e62f85b 100644
|
||||
index 821a01ab64dc2e59b78c19af5a62cdc42bf8bc03..98846d73a121cf0b7b41498be1bae24cf4168f56 100644
|
||||
--- a/build.gradle.kts
|
||||
+++ b/build.gradle.kts
|
||||
@@ -31,6 +31,10 @@ dependencies {
|
||||
@@ -17,7 +17,7 @@ index 6a96a847c3b0a7af0e187cc2251c3ad275da4c11..517b7551bfaf546109fd8d4d246c083e
|
||||
+ // Leaf end
|
||||
+
|
||||
// Paper start
|
||||
implementation("com.github.luben:zstd-jni:1.5.5-11") // LinearPurpur
|
||||
implementation("com.github.luben:zstd-jni:1.5.6-2") // LinearPurpur
|
||||
implementation("org.lz4:lz4-java:1.8.0") // LinearPurpur
|
||||
diff --git a/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerLoginPacketListenerImpl.java
|
||||
index 0f3ba1abb609562e92dd9eb0ab7a621b8ed2d09f..910c8d2f32370c82c829535d4773fc7283c2e138 100644
|
||||
|
||||
@@ -70,7 +70,7 @@ index caef142261734aab264d1da420ff5e6d7117ea1c..e721f40495824dff2ba62c81156b2a89
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
index 005549acdd30c88d14df9051cbb732baf38282e5..c00f6bda8c05cdcbe834232e6b4dea3f54640e35 100644
|
||||
index a5e3b6bee4484f598d7c762dc54bb92c7d0cb2d7..8f8ca4f69c442e30f30838c49917b7b7c81a9c0c 100644
|
||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||
@@ -177,6 +177,10 @@ import org.bukkit.event.world.GenericGameEvent;
|
||||
@@ -273,10 +273,10 @@ index a907b79fd8291a0e92db138f37239d17424188a1..2f9546e69abedf06f3efbb96cd639bc1
|
||||
ProfiledDuration profiledduration = JvmProfiler.INSTANCE.onChunkGenerate(ichunkaccess.getPos(), world.dimension(), this.toString());
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/WorldOptions.java b/src/main/java/net/minecraft/world/level/levelgen/WorldOptions.java
|
||||
index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a70f52cc46 100644
|
||||
index 147e41c5869ac9070e1cb40f1411490a756dedef..b5212c859a43d0fd0fe0bc1296bccd3520ecede3 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/WorldOptions.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/WorldOptions.java
|
||||
@@ -3,29 +3,58 @@ package net.minecraft.world.level.levelgen;
|
||||
@@ -3,33 +3,60 @@ package net.minecraft.world.level.levelgen;
|
||||
import com.mojang.serialization.Codec;
|
||||
import com.mojang.serialization.MapCodec;
|
||||
import com.mojang.serialization.codecs.RecordCodecBuilder;
|
||||
@@ -294,29 +294,34 @@ index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a7
|
||||
+// Leaf end - Matter
|
||||
+
|
||||
public class WorldOptions {
|
||||
- public static final MapCodec<WorldOptions> CODEC = RecordCodecBuilder.mapCodec((instance) -> {
|
||||
- return instance.group(Codec.LONG.fieldOf("seed").stable().forGetter(WorldOptions::seed), Codec.BOOL.fieldOf("generate_features").orElse(true).stable().forGetter(WorldOptions::generateStructures), Codec.BOOL.fieldOf("bonus_chest").orElse(false).stable().forGetter(WorldOptions::generateBonusChest), Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter((generatorOptions) -> {
|
||||
- return generatorOptions.legacyCustomOptions;
|
||||
- })).apply(instance, instance.stable(WorldOptions::new));
|
||||
- });
|
||||
- public static final WorldOptions DEMO_OPTIONS = new WorldOptions((long)"North Carolina".hashCode(), true, true);
|
||||
+ // Leaf start - Matter - Feature Secure Seed
|
||||
+ private static final boolean isSecureSeedEnabled = org.dreeam.leaf.config.modules.misc.SecureSeed.enabled;
|
||||
+ public static final MapCodec<WorldOptions> CODEC = RecordCodecBuilder.mapCodec((instance) ->
|
||||
+ isSecureSeedEnabled ?
|
||||
+ instance.group(
|
||||
public static final MapCodec<WorldOptions> CODEC = RecordCodecBuilder.mapCodec(
|
||||
- instance -> instance.group(
|
||||
- Codec.LONG.fieldOf("seed").stable().forGetter(WorldOptions::seed),
|
||||
- Codec.BOOL.fieldOf("generate_features").orElse(true).stable().forGetter(WorldOptions::generateStructures),
|
||||
- Codec.BOOL.fieldOf("bonus_chest").orElse(false).stable().forGetter(WorldOptions::generateBonusChest),
|
||||
- Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter(generatorOptions -> generatorOptions.legacyCustomOptions)
|
||||
- )
|
||||
- .apply(instance, instance.stable(WorldOptions::new))
|
||||
- );
|
||||
- public static final WorldOptions DEMO_OPTIONS = new WorldOptions((long)"North Carolina".hashCode(), true, true);
|
||||
+ instance -> isSecureSeedEnabled
|
||||
+ ? instance.group(
|
||||
+ Codec.LONG.fieldOf("seed").stable().forGetter(WorldOptions::seed),
|
||||
+ Codec.LONG_STREAM.fieldOf("feature_seed").stable().forGetter(WorldOptions::featureSeedStream),
|
||||
+ Codec.BOOL.fieldOf("generate_features").orElse(true).stable().forGetter(WorldOptions::generateStructures),
|
||||
+ Codec.BOOL.fieldOf("bonus_chest").orElse(false).stable().forGetter(WorldOptions::generateBonusChest),
|
||||
+ Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter((generatorOptions) -> generatorOptions.legacyCustomOptions)).apply(instance, instance.stable(WorldOptions::new))
|
||||
+ : instance.group(
|
||||
+ Codec.LONG.fieldOf("seed").stable().forGetter(WorldOptions::seed),
|
||||
+ Codec.BOOL.fieldOf("generate_features").orElse(true).stable().forGetter(WorldOptions::generateStructures),
|
||||
+ Codec.BOOL.fieldOf("bonus_chest").orElse(false).stable().forGetter(WorldOptions::generateBonusChest),
|
||||
+ Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter((generatorOptions) -> generatorOptions.legacyCustomOptions)).apply(instance, instance.stable(WorldOptions::new)));
|
||||
+ Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter((generatorOptions) -> generatorOptions.legacyCustomOptions)
|
||||
+ ).apply(instance, instance.stable(WorldOptions::new))
|
||||
+ : instance.group(
|
||||
+ Codec.LONG.fieldOf("seed").stable().forGetter(WorldOptions::seed),
|
||||
+ Codec.BOOL.fieldOf("generate_features").orElse(true).stable().forGetter(WorldOptions::generateStructures),
|
||||
+ Codec.BOOL.fieldOf("bonus_chest").orElse(false).stable().forGetter(WorldOptions::generateBonusChest),
|
||||
+ Codec.STRING.optionalFieldOf("legacy_custom_options").stable().forGetter((generatorOptions) -> generatorOptions.legacyCustomOptions)
|
||||
+ ).apply(instance, instance.stable(WorldOptions::new)));
|
||||
+ // Leaf end - Matter
|
||||
+ public static final WorldOptions DEMO_OPTIONS = isSecureSeedEnabled ? new WorldOptions("North Carolina".hashCode(), Globals.createRandomWorldSeed(), true, true) : new WorldOptions("North Carolina".hashCode(), true, true); // Leaf - Matter - Feature Secure Seed
|
||||
+ public static final WorldOptions DEMO_OPTIONS = isSecureSeedEnabled ? new WorldOptions((long) "North Carolina".hashCode(), Globals.createRandomWorldSeed(), true, true) : new WorldOptions("North Carolina".hashCode(), true, true); // Leaf - Matter - Feature Secure Seed
|
||||
private final long seed;
|
||||
+ private long[] featureSeed = Globals.createRandomWorldSeed(); // Leaf - Matter - Feature Secure Seed
|
||||
private final boolean generateStructures;
|
||||
@@ -342,7 +347,7 @@ index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a7
|
||||
}
|
||||
|
||||
private WorldOptions(long seed, boolean generateStructures, boolean bonusChest, Optional<String> legacyCustomOptions) {
|
||||
@@ -35,10 +64,26 @@ public class WorldOptions {
|
||||
@@ -39,10 +66,26 @@ public class WorldOptions {
|
||||
this.legacyCustomOptions = legacyCustomOptions;
|
||||
}
|
||||
|
||||
@@ -369,7 +374,7 @@ index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a7
|
||||
public boolean generateStructures() {
|
||||
return this.generateStructures;
|
||||
}
|
||||
@@ -51,17 +96,19 @@ public class WorldOptions {
|
||||
@@ -55,17 +98,19 @@ public class WorldOptions {
|
||||
return this.legacyCustomOptions.isPresent();
|
||||
}
|
||||
|
||||
@@ -392,7 +397,7 @@ index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a7
|
||||
|
||||
public static OptionalLong parseSeed(String seed) {
|
||||
seed = seed.trim();
|
||||
@@ -71,7 +118,7 @@ public class WorldOptions {
|
||||
@@ -75,7 +120,7 @@ public class WorldOptions {
|
||||
try {
|
||||
return OptionalLong.of(Long.parseLong(seed));
|
||||
} catch (NumberFormatException var2) {
|
||||
@@ -402,7 +407,7 @@ index d38cabc9eeb45dd863e5f87b7df3b6327ea6a4a2..3c3bd59afb5ea35cdece02b2c0af41a7
|
||||
}
|
||||
}
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/feature/GeodeFeature.java b/src/main/java/net/minecraft/world/level/levelgen/feature/GeodeFeature.java
|
||||
index f945fae50983424091b58f83ed14f2e8f2621619..49a02cc2e2a619352453d645ae69ba9a7156fa87 100644
|
||||
index 17d2bb3f7d158ec1230a1ad7c52b9feeda586630..2a30f2d4beaa6077a283565211f5c632dfac4fcb 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/feature/GeodeFeature.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/feature/GeodeFeature.java
|
||||
@@ -25,6 +25,11 @@ import net.minecraft.world.level.levelgen.feature.configurations.GeodeConfigurat
|
||||
@@ -423,14 +428,14 @@ index f945fae50983424091b58f83ed14f2e8f2621619..49a02cc2e2a619352453d645ae69ba9a
|
||||
int k = geodeConfiguration.distributionPoints.sample(randomSource);
|
||||
- WorldgenRandom worldgenRandom = new WorldgenRandom(new LegacyRandomSource(worldGenLevel.getSeed()));
|
||||
+ WorldgenRandom worldgenRandom = org.dreeam.leaf.config.modules.misc.SecureSeed.enabled ? new WorldgenCryptoRandom(0, 0, Globals.Salt.GEODE_FEATURE, 0) : new WorldgenRandom(new LegacyRandomSource(worldGenLevel.getSeed())); // Leaf - Matter - Feature Secure Seed
|
||||
NormalNoise normalNoise = NormalNoise.create(worldgenRandom, -4, 1.0D);
|
||||
NormalNoise normalNoise = NormalNoise.create(worldgenRandom, -4, 1.0);
|
||||
List<BlockPos> list2 = Lists.newLinkedList();
|
||||
double d = (double)k / (double)geodeConfiguration.outerWallDistance.getMaxValue();
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/Structure.java b/src/main/java/net/minecraft/world/level/levelgen/structure/Structure.java
|
||||
index 8eaa1a57e904fe7e540b311c6c5c36b755f021fc..0173fb2e9e7e218b911953e71342f46ca8858dd6 100644
|
||||
index e1fcc71b81c9da7180384ea1dfc656fdecf900c7..5fe14ff7c05f91b8f00fbdfd02909f4404860369 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/Structure.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/Structure.java
|
||||
@@ -38,6 +38,11 @@ import net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer;
|
||||
@@ -39,6 +39,11 @@ import net.minecraft.world.level.levelgen.structure.pieces.PiecesContainer;
|
||||
import net.minecraft.world.level.levelgen.structure.pieces.StructurePiecesBuilder;
|
||||
import net.minecraft.world.level.levelgen.structure.templatesystem.StructureTemplateManager;
|
||||
|
||||
@@ -442,7 +447,7 @@ index 8eaa1a57e904fe7e540b311c6c5c36b755f021fc..0173fb2e9e7e218b911953e71342f46c
|
||||
public abstract class Structure {
|
||||
public static final Codec<Structure> DIRECT_CODEC = BuiltInRegistries.STRUCTURE_TYPE.byNameCodec().dispatch(Structure::type, StructureType::codec);
|
||||
public static final Codec<Holder<Structure>> CODEC = RegistryFileCodec.create(Registries.STRUCTURE, DIRECT_CODEC);
|
||||
@@ -164,6 +169,14 @@ public abstract class Structure {
|
||||
@@ -228,6 +233,14 @@ public abstract class Structure {
|
||||
}
|
||||
|
||||
private static WorldgenRandom makeRandom(long seed, ChunkPos chunkPos) {
|
||||
@@ -458,7 +463,7 @@ index 8eaa1a57e904fe7e540b311c6c5c36b755f021fc..0173fb2e9e7e218b911953e71342f46c
|
||||
worldgenRandom.setLargeFeatureSeed(seed, chunkPos.x, chunkPos.z);
|
||||
return worldgenRandom;
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.java b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.java
|
||||
index 41e24325dcb37e08936b1d13af34d338487929f3..062fdbb21e8cb5ae945ce39e208a04b9f60aef7f 100644
|
||||
index e6136d68111f47e2495de81713043865fffc864a..e78f2dd555ac90464bd03a809afd285d1dc35eae 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/RandomSpreadStructurePlacement.java
|
||||
@@ -11,6 +11,11 @@ import net.minecraft.world.level.chunk.ChunkGeneratorStructureState;
|
||||
@@ -471,9 +476,9 @@ index 41e24325dcb37e08936b1d13af34d338487929f3..062fdbb21e8cb5ae945ce39e208a04b9
|
||||
+// Leaf end - Matter
|
||||
+
|
||||
public class RandomSpreadStructurePlacement extends StructurePlacement {
|
||||
public static final Codec<RandomSpreadStructurePlacement> CODEC = ExtraCodecs.validate(RecordCodecBuilder.mapCodec((instance) -> {
|
||||
return placementCodec(instance).and(instance.group(Codec.intRange(0, 4096).fieldOf("spacing").forGetter(RandomSpreadStructurePlacement::spacing), Codec.intRange(0, 4096).fieldOf("separation").forGetter(RandomSpreadStructurePlacement::separation), RandomSpreadType.CODEC.optionalFieldOf("spread_type", RandomSpreadType.LINEAR).forGetter(RandomSpreadStructurePlacement::spreadType))).apply(instance, RandomSpreadStructurePlacement::new);
|
||||
@@ -51,8 +56,17 @@ public class RandomSpreadStructurePlacement extends StructurePlacement {
|
||||
public static final Codec<RandomSpreadStructurePlacement> CODEC = ExtraCodecs.validate(
|
||||
RecordCodecBuilder.mapCodec(
|
||||
@@ -74,8 +79,17 @@ public class RandomSpreadStructurePlacement extends StructurePlacement {
|
||||
public ChunkPos getPotentialStructureChunk(long seed, int chunkX, int chunkZ) {
|
||||
int i = Math.floorDiv(chunkX, this.spacing);
|
||||
int j = Math.floorDiv(chunkZ, this.spacing);
|
||||
@@ -494,10 +499,10 @@ index 41e24325dcb37e08936b1d13af34d338487929f3..062fdbb21e8cb5ae945ce39e208a04b9
|
||||
int l = this.spreadType.evaluate(worldgenRandom, k);
|
||||
int m = this.spreadType.evaluate(worldgenRandom, k);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
index 7d7559f4d0ffb0a0e85e1562bd856032e2f26fda..76d8e461144852de0d9967ad751ee0ffb66a48f4 100644
|
||||
index c154b3213864f697cc679e2ecdd3b31a97113542..b75a636d3d88e355877872ef697a7d6dbcbdaeec 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/placement/StructurePlacement.java
|
||||
@@ -18,6 +18,11 @@ import net.minecraft.world.level.levelgen.LegacyRandomSource;
|
||||
@@ -20,6 +20,11 @@ import net.minecraft.world.level.levelgen.LegacyRandomSource;
|
||||
import net.minecraft.world.level.levelgen.WorldgenRandom;
|
||||
import net.minecraft.world.level.levelgen.structure.StructureSet;
|
||||
|
||||
@@ -507,9 +512,9 @@ index 7d7559f4d0ffb0a0e85e1562bd856032e2f26fda..76d8e461144852de0d9967ad751ee0ff
|
||||
+// Leaf end - Matter
|
||||
+
|
||||
public abstract class StructurePlacement {
|
||||
public static final Codec<StructurePlacement> CODEC = BuiltInRegistries.STRUCTURE_PLACEMENT.byNameCodec().dispatch(StructurePlacement::type, StructurePlacementType::codec);
|
||||
private static final int HIGHLY_ARBITRARY_RANDOM_SALT = 10387320;
|
||||
@@ -96,8 +101,18 @@ public abstract class StructurePlacement {
|
||||
public static final Codec<StructurePlacement> CODEC = BuiltInRegistries.STRUCTURE_PLACEMENT
|
||||
.byNameCodec()
|
||||
@@ -118,8 +123,18 @@ public abstract class StructurePlacement {
|
||||
public abstract StructurePlacementType<?> type();
|
||||
|
||||
private static boolean probabilityReducer(long seed, int salt, int chunkX, int chunkZ, float frequency, @org.jetbrains.annotations.Nullable Integer saltOverride) { // Paper - Add missing structure set seed configs; ignore here
|
||||
@@ -531,7 +536,7 @@ index 7d7559f4d0ffb0a0e85e1562bd856032e2f26fda..76d8e461144852de0d9967ad751ee0ff
|
||||
}
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement.java b/src/main/java/net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement.java
|
||||
index f13572a4d0091972b95a45346853259953c269bf..078b2ead47a6c609618e7defac2888d749aa8d52 100644
|
||||
index 70dbf7267b43357578c07fcd46618f656410a8e2..c7d9359af6be9efa19dd1e27e36f3074d2b89c78 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/pools/JigsawPlacement.java
|
||||
@@ -43,6 +43,11 @@ import net.minecraft.world.phys.shapes.VoxelShape;
|
||||
@@ -546,7 +551,7 @@ index f13572a4d0091972b95a45346853259953c269bf..078b2ead47a6c609618e7defac2888d7
|
||||
public class JigsawPlacement {
|
||||
static final Logger LOGGER = LogUtils.getLogger();
|
||||
|
||||
@@ -51,7 +56,11 @@ public class JigsawPlacement {
|
||||
@@ -61,7 +66,11 @@ public class JigsawPlacement {
|
||||
ChunkGenerator chunkGenerator = context.chunkGenerator();
|
||||
StructureTemplateManager structureTemplateManager = context.structureTemplateManager();
|
||||
LevelHeightAccessor levelHeightAccessor = context.heightAccessor();
|
||||
@@ -558,36 +563,9 @@ index f13572a4d0091972b95a45346853259953c269bf..078b2ead47a6c609618e7defac2888d7
|
||||
+ // Leaf end - Matter
|
||||
Registry<StructureTemplatePool> registry = registryAccess.registryOrThrow(Registries.TEMPLATE_POOL);
|
||||
Rotation rotation = Rotation.getRandom(worldgenRandom);
|
||||
StructureTemplatePool structureTemplatePool = structurePool.unwrapKey().flatMap((resourceKey) -> {
|
||||
@@ -245,18 +254,20 @@ public class JigsawPlacement {
|
||||
if (!boundingBox2.isInside(structureBlockInfox.pos().relative(JigsawBlock.getFrontFacing(structureBlockInfox.state())))) {
|
||||
return 0;
|
||||
} else {
|
||||
- ResourceKey<StructureTemplatePool> resourceKey = readPoolKey(structureBlockInfox, aliasLookup);
|
||||
- Optional<? extends Holder<StructureTemplatePool>> optional = this.pools.getHolder(resourceKey);
|
||||
- Optional<Holder<StructureTemplatePool>> optional2 = optional.map((entry) -> {
|
||||
+ // Leaf start - Mater - Decompile fix
|
||||
+ ResourceKey<StructureTemplatePool> resourceKey1 = readPoolKey(structureBlockInfox, aliasLookup);
|
||||
+ Optional<? extends Holder<StructureTemplatePool>> optional1 = this.pools.getHolder(resourceKey1);
|
||||
+ Optional<Holder<StructureTemplatePool>> optional2 = optional1.map((entry) -> {
|
||||
return entry.value().getFallback();
|
||||
});
|
||||
- int i = optional.map((entry) -> {
|
||||
+ int i1 = optional1.map((entry) -> {
|
||||
return entry.value().getMaxSize(this.structureTemplateManager);
|
||||
}).orElse(0);
|
||||
- int j = optional2.map((entry) -> {
|
||||
+ int j1 = optional2.map((entry) -> {
|
||||
return entry.value().getMaxSize(this.structureTemplateManager);
|
||||
}).orElse(0);
|
||||
- return Math.max(i, j);
|
||||
+ return Math.max(i1, j1);
|
||||
+ // Leaf end - Matter
|
||||
}
|
||||
}).max().orElse(0);
|
||||
} else {
|
||||
StructureTemplatePool structureTemplatePool = structurePool.unwrapKey()
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/structures/EndCityStructure.java b/src/main/java/net/minecraft/world/level/levelgen/structure/structures/EndCityStructure.java
|
||||
index 2d4a14e8c3f876186c417b9e4284a95f65cf9cd5..fbac6cfcda9d164c169be4c5e49ae144fffa665a 100644
|
||||
index ffc8242c31bf18ef2f33f2b7ecb99f0a896ea730..5eb4cd3dfa593a9b8a368c820e395983b43df270 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/structures/EndCityStructure.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/structures/EndCityStructure.java
|
||||
@@ -10,6 +10,7 @@ import net.minecraft.world.level.levelgen.structure.Structure;
|
||||
@@ -599,7 +577,7 @@ index 2d4a14e8c3f876186c417b9e4284a95f65cf9cd5..fbac6cfcda9d164c169be4c5e49ae144
|
||||
public class EndCityStructure extends Structure {
|
||||
public static final Codec<EndCityStructure> CODEC = simpleCodec(EndCityStructure::new);
|
||||
diff --git a/src/main/java/net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure.java b/src/main/java/net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure.java
|
||||
index 087a9c500b9ae1ca2f410dc53e2f251114c97015..e0073906df7be4e219d1289d7178c7d4158598ef 100644
|
||||
index 944b5ff23ccf8e9c93db142a7cbeb29dc0b021da..dbda2a51b88f1c7c58d662a28e55bdcb913cb2dc 100644
|
||||
--- a/src/main/java/net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure.java
|
||||
+++ b/src/main/java/net/minecraft/world/level/levelgen/structure/structures/MineshaftStructure.java
|
||||
@@ -19,6 +19,7 @@ import net.minecraft.world.level.levelgen.WorldgenRandom;
|
||||
@@ -609,7 +587,7 @@ index 087a9c500b9ae1ca2f410dc53e2f251114c97015..e0073906df7be4e219d1289d7178c7d4
|
||||
+//import su.plo.matter.WorldgenCryptoRandom; // Leaf - Matter - Feature Secure Seed
|
||||
|
||||
public class MineshaftStructure extends Structure {
|
||||
public static final Codec<MineshaftStructure> CODEC = RecordCodecBuilder.create((instance) -> {
|
||||
public static final Codec<MineshaftStructure> CODEC = RecordCodecBuilder.create(
|
||||
diff --git a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java b/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
||||
index dca5f25cf331b5550e9be491b4e8a3466531e021..4882361460d934d0c1ff693325f59c10341c5f5d 100644
|
||||
--- a/src/main/java/org/bukkit/craftbukkit/CraftChunk.java
|
||||
|
||||
@@ -7,10 +7,10 @@ Original license: GPLv3
|
||||
Original project: https://github.com/plasmoapp/matter
|
||||
|
||||
diff --git a/src/main/java/net/minecraft/server/commands/SeedCommand.java b/src/main/java/net/minecraft/server/commands/SeedCommand.java
|
||||
index 342362c217df5476a927eb54cef3cafcea3889fd..a05e0d998fffd8a50643f118b2ddf4af6804cc14 100644
|
||||
index 0b500b19a99fa6c2740c0db350a166462668df9c..e0516ed524fe55277adb3e2c4571ca40c334c5ef 100644
|
||||
--- a/src/main/java/net/minecraft/server/commands/SeedCommand.java
|
||||
+++ b/src/main/java/net/minecraft/server/commands/SeedCommand.java
|
||||
@@ -6,6 +6,10 @@ import net.minecraft.commands.Commands;
|
||||
@@ -6,12 +6,27 @@ import net.minecraft.commands.Commands;
|
||||
import net.minecraft.network.chat.Component;
|
||||
import net.minecraft.network.chat.ComponentUtils;
|
||||
|
||||
@@ -20,25 +20,21 @@ index 342362c217df5476a927eb54cef3cafcea3889fd..a05e0d998fffd8a50643f118b2ddf4af
|
||||
+
|
||||
public class SeedCommand {
|
||||
public static void register(CommandDispatcher<CommandSourceStack> dispatcher, boolean dedicated) {
|
||||
dispatcher.register(Commands.literal("seed").requires((source) -> {
|
||||
@@ -16,7 +20,19 @@ public class SeedCommand {
|
||||
context.getSource().sendSuccess(() -> {
|
||||
return Component.translatable("commands.seed.success", component);
|
||||
}, false);
|
||||
- return (int)l;
|
||||
dispatcher.register(Commands.literal("seed").requires(source -> !dedicated || source.hasPermission(2)).executes(context -> {
|
||||
long l = context.getSource().getLevel().getSeed();
|
||||
Component component = ComponentUtils.copyOnClickText(String.valueOf(l));
|
||||
context.getSource().sendSuccess(() -> Component.translatable("commands.seed.success", component), false);
|
||||
+
|
||||
+ // Leaf start - Matter - SecureSeed Command
|
||||
+ if (org.dreeam.leaf.config.modules.misc.SecureSeed.enabled) {
|
||||
+ Globals.setupGlobals(context.getSource().getLevel());
|
||||
+ String seedStr = Globals.seedToString(Globals.worldSeed);
|
||||
+
|
||||
+ Component featureSeedComponent = ComponentUtils.copyOnClickText(seedStr);
|
||||
+
|
||||
+ context.getSource().sendSuccess(() -> Component.translatable(("Feature seed: %s"), featureSeedComponent), false);
|
||||
+ }
|
||||
+ // Leaf end - Matter
|
||||
+
|
||||
+ return (int) l;
|
||||
return (int)l;
|
||||
}));
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user