Compare commits
30 Commits
ver/1.21.5
...
ver/1.20.4
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6a7501f0eb | ||
|
|
5fbb4cd58d | ||
|
|
a7b73c6321 | ||
|
|
f960ffddc3 | ||
|
|
5a6f4bbf03 | ||
|
|
bbddf1cf4a | ||
|
|
8f9f29697b | ||
|
|
2fb281a364 | ||
|
|
06bb9d05b1 | ||
|
|
e22eb0f63c | ||
|
|
2c5d683242 | ||
|
|
3299d03d66 | ||
|
|
5579f65eae | ||
|
|
592877ef28 | ||
|
|
bbd1c34a4f | ||
|
|
9885fe491b | ||
|
|
6918237be3 | ||
|
|
5c631a232b | ||
|
|
db740bdb3d | ||
|
|
25f8a7c455 | ||
|
|
40a7b1a5ff | ||
|
|
5601fb53d1 | ||
|
|
d753f168ae | ||
|
|
b22fc1fd60 | ||
|
|
4c6f3c3861 | ||
|
|
b42bf0819b | ||
|
|
3ee5f928f0 | ||
|
|
3b04cc4759 | ||
|
|
391ba7a9d6 | ||
|
|
bedc48ca25 |
2
.github/FUNDING.yml
vendored
2
.github/FUNDING.yml
vendored
@@ -11,4 +11,4 @@ issuehunt: # Replace with a single IssueHunt username
|
|||||||
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
lfx_crowdfunding: # Replace with a single LFX Crowdfunding project-name e.g., cloud-foundry
|
||||||
polar: # Replace with a single Polar username
|
polar: # Replace with a single Polar username
|
||||||
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
buy_me_a_coffee: # Replace with a single Buy Me a Coffee username
|
||||||
custom: https://afdian.net/a/Luminol
|
custom: https://afdian.com/a/Luminol
|
||||||
|
|||||||
9
.github/workflows/build_1.20.4.yml
vendored
9
.github/workflows/build_1.20.4.yml
vendored
@@ -31,7 +31,14 @@ jobs:
|
|||||||
- name: Apply Patches
|
- name: Apply Patches
|
||||||
run: gradle applyPatches
|
run: gradle applyPatches
|
||||||
- name: CreateJar
|
- name: CreateJar
|
||||||
run: gradle createMojmapBundlerJar createMojmapPaperclipJar
|
run: gradle createReobfBundlerJar createReobfPaperclipJar
|
||||||
|
- name: Publish to repo
|
||||||
|
run: |
|
||||||
|
export GITHUB_USERNAME=LuminolCI
|
||||||
|
export GITHUB_TOKEN=${{ secrets.GITHUB_TOKEN }}
|
||||||
|
export MAVEN_REPO_USER=${{ secrets.MAVEN_REPO_USER }}
|
||||||
|
export MAVEN_REPO_PASSWORD=${{ secrets.MAVEN_REPO_PASSWORD }}
|
||||||
|
./gradlew publish -PpublishDevBundle=true
|
||||||
- name: SetENV
|
- name: SetENV
|
||||||
run: sh scripts/SetENV.sh
|
run: sh scripts/SetENV.sh
|
||||||
- name: Upload Artifact
|
- name: Upload Artifact
|
||||||
|
|||||||
32
README.md
32
README.md
@@ -14,7 +14,6 @@
|
|||||||
## 特性
|
## 特性
|
||||||
- 可配置的原版特性
|
- 可配置的原版特性
|
||||||
- Tpsbar 支持
|
- Tpsbar 支持
|
||||||
- 线性区域文件格式 (from kaiiju)
|
|
||||||
- 对单线程区域性能的优化
|
- 对单线程区域性能的优化
|
||||||
- 更多的插件开发API支持(进行中)
|
- 更多的插件开发API支持(进行中)
|
||||||
|
|
||||||
@@ -32,28 +31,41 @@
|
|||||||
使用 Gradle:
|
使用 Gradle:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = "http://maven.nostal.ink/repository/maven-snapshots/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-SNAPSHOT")
|
compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-20241001.135101-1")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
使用 Maven
|
使用 Maven
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<dependency>
|
<repositories>
|
||||||
<groupId>me.earthme.luminol</groupId>
|
<repository>
|
||||||
<artifactId>luminol-api</artifactId>
|
<id>nostal</id>
|
||||||
<version>1.20.4-R0.1-SNAPSHOT</version>
|
<url>http://maven.nostal.ink/repository/maven-snapshots/</url>
|
||||||
</dependency>
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>me.earthme.luminol</groupId>
|
||||||
|
<artifactId>luminol-api</artifactId>
|
||||||
|
<version>1.20.4-R0.1-20241001.135101-1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
```
|
```
|
||||||
|
|
||||||
## 联系方式
|
## 联系方式
|
||||||
> 如果您对这个项目感兴趣或有任何问题,请随时向我们提问。
|
> 如果您对这个项目感兴趣或有任何问题,请随时向我们提问。
|
||||||
|
|
||||||
QQ群: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360) | QQ频道: [点击加入](https://pd.qq.com/s/eq9krf9j) | Telegram: [点击加入](https://t.me/LuminolMC) | Discord: [点击加入](https://discord.gg/Qd7m3V6eDx)
|
**QQ群: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360)** | QQ频道: [点击加入](https://pd.qq.com/s/eq9krf9j) | Telegram: [点击加入](https://t.me/LuminolMC) | Discord: [点击加入](https://discord.gg/Qd7m3V6eDx)
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> **此项目与Leaves无关。不要向Leaves报告任何有关协议支持的错误,因为协议支持已经重构**
|
|
||||||
|
|
||||||
## 关于 Issue
|
## 关于 Issue
|
||||||
当您遇到任何问题时,请向我们提问,我们将尽力解决,但请记得清楚地描述您的问题并提供足够的日志等信息。
|
当您遇到任何问题时,请向我们提问,我们将尽力解决,但请记得清楚地描述您的问题并提供足够的日志等信息。
|
||||||
|
|||||||
35
README_EN.md
35
README_EN.md
@@ -1,5 +1,3 @@
|
|||||||
<img src="./public/image/Luminol_5.png" alt="Logo" align="right" width="250">
|
|
||||||
|
|
||||||
# Luminol
|
# Luminol
|
||||||
<h4>Luminol is a Folia fork with many useful optimizations, configurable vanilla features, and more API supports, and it was designed for survival and anarchy servers</h4>
|
<h4>Luminol is a Folia fork with many useful optimizations, configurable vanilla features, and more API supports, and it was designed for survival and anarchy servers</h4>
|
||||||
|
|
||||||
@@ -14,7 +12,6 @@
|
|||||||
## Features
|
## Features
|
||||||
- Configurable vanilla features
|
- Configurable vanilla features
|
||||||
- Tpsbar support
|
- Tpsbar support
|
||||||
- Linear region file format(from kaiiju)
|
|
||||||
- Useful optimizations to improve the performance of single threaded region
|
- Useful optimizations to improve the performance of single threaded region
|
||||||
- More API support for plugin development (W.I.P)
|
- More API support for plugin development (W.I.P)
|
||||||
|
|
||||||
@@ -32,28 +29,40 @@ To build a paperclip jar, you need to run the following command. You can find th
|
|||||||
For gradle:
|
For gradle:
|
||||||
|
|
||||||
```kotlin
|
```kotlin
|
||||||
|
repositories {
|
||||||
|
maven {
|
||||||
|
url = "http://maven.nostal.ink/repository/maven-snapshots/"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
dependencies {
|
dependencies {
|
||||||
compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-SNAPSHOT")
|
compileOnly("me.earthme.luminol:luminol-api:1.20.4-R0.1-20241001.135101-1")
|
||||||
}
|
}
|
||||||
```
|
```
|
||||||
|
|
||||||
For maven
|
For maven
|
||||||
|
|
||||||
```xml
|
```xml
|
||||||
<dependency>
|
<repositories>
|
||||||
<groupId>me.earthme.luminol</groupId>
|
<repository>
|
||||||
<artifactId>luminol-api</artifactId>
|
<id>nostal</id>
|
||||||
<version>1.20.4-R0.1-SNAPSHOT</version>
|
<url>http://maven.nostal.ink/repository/maven-snapshots/</url>
|
||||||
</dependency>
|
</repository>
|
||||||
|
</repositories>
|
||||||
|
|
||||||
|
<dependencies>
|
||||||
|
<dependency>
|
||||||
|
<groupId>me.earthme.luminol</groupId>
|
||||||
|
<artifactId>luminol-api</artifactId>
|
||||||
|
<version>1.20.4-R0.1-20241001.135101-1</version>
|
||||||
|
</dependency>
|
||||||
|
</dependencies>
|
||||||
```
|
```
|
||||||
|
|
||||||
## Contact
|
## Contact
|
||||||
> If you are interested in this project or have any issue, feel free to ask us.
|
> If you are interested in this project or have any issue, feel free to ask us.
|
||||||
|
|
||||||
QQ Group: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360) | QQ Channel: [Click To Join](https://pd.qq.com/s/eq9krf9j) | Telegram: [Click To Join](https://t.me/LuminolMC) | Discord: [Click To Join](https://discord.gg/Qd7m3V6eDx)
|
**QQ Group: [368632360](http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=MfosKhcDd8Fdxn1MREuZ8Krbf9T6jiBC&authKey=3cm6qdHohON3gHnuD63FK4k07fIbrWnY4hdyq8OmELsfjMVP1kbFTJY9mRyM2Rkj&noverify=0&group_code=368632360)** | QQ Channel: [Click To Join](https://pd.qq.com/s/eq9krf9j) | Telegram: [Click To Join](https://t.me/LuminolMC) | Discord: [Click To Join](https://discord.gg/Qd7m3V6eDx)
|
||||||
|
|
||||||
> [!WARNING]
|
|
||||||
> **This project is not related to Leaves.Do not report any bugs about protocol support to leaves because the protocol supports are already refactored.**
|
|
||||||
|
|
||||||
## About Issue
|
## About Issue
|
||||||
When you meet any problems, just ask us, we will do our best to solve it, but remember to state your problem clear and provide enough logs etc.</br>
|
When you meet any problems, just ask us, we will do our best to solve it, but remember to state your problem clear and provide enough logs etc.</br>
|
||||||
|
|||||||
@@ -75,7 +75,7 @@ paperweight {
|
|||||||
decompileRepo.set("https://maven.quiltmc.org/")
|
decompileRepo.set("https://maven.quiltmc.org/")
|
||||||
|
|
||||||
useStandardUpstream("folia") {
|
useStandardUpstream("folia") {
|
||||||
url.set(github("Dreeam-qwq", "Folia"))
|
url.set(github("PaperMC", "Folia"))
|
||||||
ref.set(providers.gradleProperty("foliaCommit"))
|
ref.set(providers.gradleProperty("foliaCommit"))
|
||||||
|
|
||||||
withStandardPatcher {
|
withStandardPatcher {
|
||||||
@@ -112,21 +112,15 @@ allprojects {
|
|||||||
publishing {
|
publishing {
|
||||||
repositories {
|
repositories {
|
||||||
maven {
|
maven {
|
||||||
name = "githubPackage"
|
name = "moliaMavenRepo"
|
||||||
url = uri("https://maven.pkg.github.com/LuminolMC/Luminol")
|
url = uri("https://maven.nostal.ink/repository/maven-snapshots/")
|
||||||
|
|
||||||
credentials.username = System.getenv("GITHUB_USERNAME")
|
credentials.username = System.getenv("MAVEN_REPO_USER")
|
||||||
credentials.password = System.getenv("GITHUB_TOKEN")
|
credentials.password = System.getenv("MAVEN_REPO_PASSWORD")
|
||||||
}
|
|
||||||
|
|
||||||
publications {
|
|
||||||
register<MavenPublication>("gpr") {
|
|
||||||
from(components["java"])
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
publishing {
|
publishing {
|
||||||
if (project.hasProperty("publishDevBundle")) {
|
if (project.hasProperty("publishDevBundle")) {
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
group = me.earthme.luminol
|
group = me.earthme.luminol
|
||||||
version = 1.20.4-R0.1-SNAPSHOT
|
version = 1.20.4-R0.1-SNAPSHOT
|
||||||
|
|
||||||
foliaCommit = 6dba62e72c05cd71da3a99da09f3d8879a508ac3
|
foliaCommit = ec6b1729ec9c3449cb65918d7af1ccf464ab3692
|
||||||
|
|
||||||
org.gradle.caching = true
|
org.gradle.caching = true
|
||||||
org.gradle.parallel = true
|
org.gradle.parallel = true
|
||||||
|
|||||||
@@ -27,7 +27,7 @@ index cb60d58d4a7556dd896f31d0cd249f860bb3ef84..b52a805150e95d7d27403d3c18088b33
|
|||||||
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
metrics.addCustomChart(new Metrics.DrilldownPie("java_version", () -> {
|
||||||
Map<String, Map<String, Integer>> map = new HashMap<>();
|
Map<String, Map<String, Integer>> map = new HashMap<>();
|
||||||
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
diff --git a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795df9830ab 100644
|
index e2f704c115fd6e00960bb56bb0779f1100c89c17..7707908064a75ecf02677a0110207e194c3eefd1 100644
|
||||||
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
--- a/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
+++ b/src/main/java/com/destroystokyo/paper/PaperVersionFetcher.java
|
||||||
@@ -20,7 +20,7 @@ import java.util.stream.StreamSupport;
|
@@ -20,7 +20,7 @@ import java.util.stream.StreamSupport;
|
||||||
@@ -51,7 +51,7 @@ index e2f704c115fd6e00960bb56bb0779f1100c89c17..72b9343979de5aa8bb399cbe7cb8a795
|
|||||||
|
|
||||||
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
|
return history != null ? TextComponent.ofChildren(updateMessage, Component.newline(), history) : updateMessage;
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index d6a7188227cee9072976db98613324ee2d3dcdc8..8c9a80197247a384dd80747bf23fdd809d08b341 100644
|
index bcc8a0171f981e2b2e24dd57834701c1899ab4c9..489e0faaf1847bf849719a58323d8eb575bdaf50 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1963,7 +1963,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1963,7 +1963,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Add config for unsafe teleportation
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..1b0de6f0ccab72c409a63dc1904829008e30328e
|
index 0000000000000000000000000000000000000000..ea374875f529b30db17e8b8cb07b99a600b722dc
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,20 @@
|
||||||
@@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..1b0de6f0ccab72c409a63dc190482900
|
|||||||
+import me.earthme.luminol.config.IConfigModule;
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
+
|
+
|
||||||
+public class UnsafeTeleportationConfig implements IConfigModule {
|
+public class UnsafeTeleportationConfig implements IConfigModule {
|
||||||
+ @ConfigInfo(baseName = "enabled", comments = "If you want to use sand duping,please turn on this")
|
+ @ConfigInfo(baseName = "enabled", comments = "Allow non player entities enter end portals if enabled.If you want to use sand duping,please turn on this")
|
||||||
+ public static boolean enabled = false;
|
+ public static boolean enabled = false;
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..1b0de6f0ccab72c409a63dc190482900
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 1d77bc6bdb87de1ad6c8740376391dedcaa73089..5e3a5e6b05254481ad413069b249ef554b591f8c 100644
|
index 0e71fa29ebfa649bc23899046396a6b01c4bd131..6463a55477b61f8cb3d17159792e5d3f1a87f7b7 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -4065,6 +4065,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4065,6 +4065,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
|
|||||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Add config for vanilla random
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..ee247014c9a2ec1bbb7f25ef41da110a270154d6
|
index 0000000000000000000000000000000000000000..0e6bfc03be660415c333024b56ac6565e3b61ab1
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,20 @@
|
||||||
@@ -17,7 +17,7 @@ index 0000000000000000000000000000000000000000..ee247014c9a2ec1bbb7f25ef41da110a
|
|||||||
+import me.earthme.luminol.config.IConfigModule;
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
+
|
+
|
||||||
+public class VanillaRandomSourceConfig implements IConfigModule {
|
+public class VanillaRandomSourceConfig implements IConfigModule {
|
||||||
+ @ConfigInfo(baseName = "enable_for_player_entity")
|
+ @ConfigInfo(baseName = "enable_for_player_entity",comments = "Related with RNG cracks")
|
||||||
+ public static boolean useLegacyRandomSourceForPlayers = false;
|
+ public static boolean useLegacyRandomSourceForPlayers = false;
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..ee247014c9a2ec1bbb7f25ef41da110a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 5e3a5e6b05254481ad413069b249ef554b591f8c..9bbfac91f97331b1b558264c867b7e00185291f2 100644
|
index 6463a55477b61f8cb3d17159792e5d3f1a87f7b7..8ad21bf69fe2ebbda7295c16971c31a55cd23108 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -567,7 +567,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -567,7 +567,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
|
|||||||
331
patches/server/0010-Add-a-simple-membar.patch
Normal file
331
patches/server/0010-Add-a-simple-membar.patch
Normal file
@@ -0,0 +1,331 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Sun, 2 Jun 2024 12:18:05 +0000
|
||||||
|
Subject: [PATCH] Add a simple membar
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/commands/MembarCommand.java b/src/main/java/me/earthme/luminol/commands/MembarCommand.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..a5cbad6b947b1c3e1499bc6d311e17a5eb570c2f
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/commands/MembarCommand.java
|
||||||
|
@@ -0,0 +1,47 @@
|
||||||
|
+package me.earthme.luminol.commands;
|
||||||
|
+
|
||||||
|
+import me.earthme.luminol.config.modules.misc.MembarConfig;
|
||||||
|
+import me.earthme.luminol.functions.GlobalServerMemoryBar;
|
||||||
|
+import net.kyori.adventure.text.Component;
|
||||||
|
+import net.kyori.adventure.text.format.TextColor;
|
||||||
|
+import org.bukkit.command.Command;
|
||||||
|
+import org.bukkit.command.CommandSender;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+public class MembarCommand extends Command {
|
||||||
|
+ public MembarCommand(@NotNull String name) {
|
||||||
|
+ super(name);
|
||||||
|
+ this.setPermission("luminol.commands.membar");
|
||||||
|
+ this.setDescription("Show the memory usage through a bossbar");
|
||||||
|
+ this.setUsage("/membar");
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public boolean execute(@NotNull CommandSender sender, @NotNull String commandLabel, @NotNull String[] args) {
|
||||||
|
+ if (!testPermission(sender)){
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!MembarConfig.memoryBarEnabled){
|
||||||
|
+ sender.sendMessage(Component.text("Membar was already disabled!").color(TextColor.color(255,0,0)));
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!(sender instanceof Player player)){
|
||||||
|
+ sender.sendMessage(Component.text("Only player can use this command!").color(TextColor.color(255,0,0)));
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (GlobalServerMemoryBar.isPlayerVisible(player)) {
|
||||||
|
+ player.sendMessage(Component.text("Disabled mem bar").color(TextColor.color(0,255,0)));
|
||||||
|
+ GlobalServerMemoryBar.setVisibilityForPlayer(player,false);
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ player.sendMessage(Component.text("Enabled mem bar").color(TextColor.color(0,255,0)));
|
||||||
|
+ GlobalServerMemoryBar.setVisibilityForPlayer(player,true);
|
||||||
|
+
|
||||||
|
+ return true;
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..b632c4a636974535bf001f010de1dcb6b25868c0
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/MembarConfig.java
|
||||||
|
@@ -0,0 +1,50 @@
|
||||||
|
+package me.earthme.luminol.config.modules.misc;
|
||||||
|
+
|
||||||
|
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
|
||||||
|
+import me.earthme.luminol.commands.MembarCommand;
|
||||||
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
|
+import me.earthme.luminol.config.DoNotLoad;
|
||||||
|
+import me.earthme.luminol.config.EnumConfigCategory;
|
||||||
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
|
+import me.earthme.luminol.functions.GlobalServerMemoryBar;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+
|
||||||
|
+import java.util.List;
|
||||||
|
+
|
||||||
|
+public class MembarConfig implements IConfigModule {
|
||||||
|
+ @ConfigInfo(baseName = "enabled")
|
||||||
|
+ public static boolean memoryBarEnabled = false;
|
||||||
|
+ @ConfigInfo(baseName = "format")
|
||||||
|
+ public static String memBarFormat = "<gray>Memory usage <yellow>:</yellow> <used>MB<yellow>/</yellow><available>MB";
|
||||||
|
+ @ConfigInfo(baseName = "memory_color_list")
|
||||||
|
+ public static List<String> memColors = List.of("GREEN","YELLOW","RED","PURPLE");
|
||||||
|
+ @ConfigInfo(baseName = "update_interval_ticks")
|
||||||
|
+ public static int updateInterval = 15;
|
||||||
|
+
|
||||||
|
+ @DoNotLoad
|
||||||
|
+ private static boolean inited = false;
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public EnumConfigCategory getCategory() {
|
||||||
|
+ return EnumConfigCategory.MISC;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getBaseName() {
|
||||||
|
+ return "membar";
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public void onLoaded(CommentedFileConfig configInstance){
|
||||||
|
+ if (memoryBarEnabled){
|
||||||
|
+ GlobalServerMemoryBar.init();
|
||||||
|
+ }else{
|
||||||
|
+ GlobalServerMemoryBar.cancelBarUpdateTask();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (!inited){
|
||||||
|
+ Bukkit.getCommandMap().register("membar","luminol",new MembarCommand("membar"));
|
||||||
|
+ inited = true;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..a33a45194273cc1b4e4157a5449c7994968a3480
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
@@ -0,0 +1,186 @@
|
||||||
|
+package me.earthme.luminol.functions;
|
||||||
|
+
|
||||||
|
+import io.papermc.paper.threadedregions.ThreadedRegionizer;
|
||||||
|
+import io.papermc.paper.threadedregions.TickRegions;
|
||||||
|
+import io.papermc.paper.threadedregions.scheduler.ScheduledTask;
|
||||||
|
+import me.earthme.luminol.config.modules.misc.MembarConfig;
|
||||||
|
+import net.kyori.adventure.bossbar.BossBar;
|
||||||
|
+import net.kyori.adventure.text.Component;
|
||||||
|
+import net.kyori.adventure.text.minimessage.MiniMessage;
|
||||||
|
+import net.kyori.adventure.text.minimessage.tag.resolver.Placeholder;
|
||||||
|
+import net.minecraft.server.level.ServerLevel;
|
||||||
|
+import net.minecraft.server.level.ServerPlayer;
|
||||||
|
+import org.apache.logging.log4j.LogManager;
|
||||||
|
+import org.apache.logging.log4j.Logger;
|
||||||
|
+import org.bukkit.Bukkit;
|
||||||
|
+import org.bukkit.craftbukkit.entity.CraftPlayer;
|
||||||
|
+import org.bukkit.craftbukkit.scheduler.MinecraftInternalPlugin;
|
||||||
|
+import org.bukkit.entity.Player;
|
||||||
|
+import org.jetbrains.annotations.NotNull;
|
||||||
|
+
|
||||||
|
+import java.lang.management.ManagementFactory;
|
||||||
|
+import java.lang.management.MemoryUsage;
|
||||||
|
+import java.util.*;
|
||||||
|
+
|
||||||
|
+public class GlobalServerMemoryBar {
|
||||||
|
+ protected static final MinecraftInternalPlugin NULL_PLUGIN = new MinecraftInternalPlugin();
|
||||||
|
+ protected static final Map<UUID, BossBar> uuid2Bossbars = new HashMap<>();
|
||||||
|
+ protected static volatile ScheduledTask membarTask = null;
|
||||||
|
+ private static final Logger logger = LogManager.getLogger();
|
||||||
|
+
|
||||||
|
+ public static void init(){
|
||||||
|
+ cancelBarUpdateTask();
|
||||||
|
+
|
||||||
|
+ Bukkit.getGlobalRegionScheduler().runAtFixedRate(NULL_PLUGIN, c -> {
|
||||||
|
+ membarTask = c;
|
||||||
|
+ try {
|
||||||
|
+ update();
|
||||||
|
+ }catch (Exception e){
|
||||||
|
+ logger.error(e);
|
||||||
|
+ }
|
||||||
|
+ },1, MembarConfig.updateInterval);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void removeAllBars(){
|
||||||
|
+ for (Map.Entry<UUID,BossBar> barEntry : uuid2Bossbars.entrySet()){
|
||||||
|
+ final UUID playerUUID = barEntry.getKey();
|
||||||
|
+ final BossBar memBar = barEntry.getValue();
|
||||||
|
+
|
||||||
|
+ final Player targetPlayer = Bukkit.getPlayer(playerUUID);{
|
||||||
|
+ if (targetPlayer != null){
|
||||||
|
+ targetPlayer.hideBossBar(memBar);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ uuid2Bossbars.clear();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void cancelBarUpdateTask(){
|
||||||
|
+ removeAllBars();
|
||||||
|
+
|
||||||
|
+ if (membarTask == null || membarTask.isCancelled()){
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ membarTask.cancel();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static boolean isPlayerVisible(Player player){
|
||||||
|
+ return ((CraftPlayer) player).getHandle().isMemBarVisible;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ public static void setVisibilityForPlayer(Player target,boolean canSee){
|
||||||
|
+ ((CraftPlayer) target).getHandle().isMemBarVisible = canSee;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void update(){
|
||||||
|
+ updateBarValues();
|
||||||
|
+ cleanUpPlayers();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void cleanUpPlayers(){
|
||||||
|
+ final List<UUID> toRemove = new ArrayList<>();
|
||||||
|
+
|
||||||
|
+ for (Map.Entry<UUID,BossBar> bossBarEntry : uuid2Bossbars.entrySet()){
|
||||||
|
+ final UUID uuid = bossBarEntry.getKey();
|
||||||
|
+ boolean shouldRemove = true;
|
||||||
|
+
|
||||||
|
+ final Player target = Bukkit.getPlayer(uuid);
|
||||||
|
+ if (target != null){
|
||||||
|
+ shouldRemove = !isPlayerVisible(target);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (shouldRemove){
|
||||||
|
+ toRemove.add(uuid);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ for (UUID uuid : toRemove){
|
||||||
|
+ final BossBar removed = uuid2Bossbars.remove(uuid);
|
||||||
|
+ if (removed != null){
|
||||||
|
+ final Player targetPlayer = Bukkit.getPlayer(uuid);
|
||||||
|
+ if (targetPlayer != null){
|
||||||
|
+ targetPlayer.hideBossBar(removed);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void updateBarValues(){
|
||||||
|
+ MemoryUsage heap = ManagementFactory.getMemoryMXBean().getHeapMemoryUsage();
|
||||||
|
+
|
||||||
|
+ long used = heap.getUsed();
|
||||||
|
+ long xmx = heap.getMax();
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+ for (Player apiPlayer : Bukkit.getOnlinePlayers()){
|
||||||
|
+ final ServerPlayer nmsPlayer = ((CraftPlayer) apiPlayer).getHandle();
|
||||||
|
+ final ThreadedRegionizer.ThreadedRegion<TickRegions.TickRegionData, TickRegions.TickRegionSectionData> region = ((ServerLevel) nmsPlayer.level()).regioniser.getRegionAtUnsynchronised(nmsPlayer.sectionX,nmsPlayer.sectionZ);
|
||||||
|
+
|
||||||
|
+ if (region == null){
|
||||||
|
+ continue;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ BossBar targetBossbar = uuid2Bossbars.get(nmsPlayer.getUUID());
|
||||||
|
+
|
||||||
|
+ if (targetBossbar == null && isPlayerVisible(apiPlayer)){
|
||||||
|
+ targetBossbar = BossBar.bossBar(Component.text(""),0.0F, BossBar.Color.valueOf(MembarConfig.memColors.get(3)), BossBar.Overlay.NOTCHED_20);
|
||||||
|
+ uuid2Bossbars.put(nmsPlayer.getUUID(),targetBossbar);
|
||||||
|
+ apiPlayer.showBossBar(targetBossbar);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (targetBossbar != null){
|
||||||
|
+ updateMembar(targetBossbar,used,xmx);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static void updateMembar(@NotNull BossBar bar, long used, long xmx){
|
||||||
|
+ double percent = Math.max(Math.min((float) used / xmx, 1.0F), 0.0F);
|
||||||
|
+ bar.name(MiniMessage.miniMessage().deserialize(
|
||||||
|
+ MembarConfig.memBarFormat,
|
||||||
|
+ Placeholder.component("used", getMemoryComponent(used,xmx)),
|
||||||
|
+ Placeholder.component("available",getMaxMemComponent(xmx))
|
||||||
|
+ ));
|
||||||
|
+ bar.color(barColorFromMemory(percent));
|
||||||
|
+ bar.progress((float) percent);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static @NotNull Component getMaxMemComponent(double max){
|
||||||
|
+ final BossBar.Color colorBukkit = BossBar.Color.GREEN;
|
||||||
|
+ final String colorString = colorBukkit.name();
|
||||||
|
+
|
||||||
|
+ final String content = "<%s><text></%s>";
|
||||||
|
+ final String replaced = String.format(content,colorString,colorString);
|
||||||
|
+
|
||||||
|
+ return MiniMessage.miniMessage().deserialize(replaced,Placeholder.parsed("text", String.format("%.2f", (double)max / (1024 * 1024))));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static @NotNull Component getMemoryComponent(long used,long max){
|
||||||
|
+ final BossBar.Color colorBukkit = barColorFromMemory(Math.max(Math.min((float) used / max, 1.0F), 0.0F));
|
||||||
|
+ final String colorString = colorBukkit.name();
|
||||||
|
+
|
||||||
|
+ final String content = "<%s><text></%s>";
|
||||||
|
+ final String replaced = String.format(content,colorString,colorString);
|
||||||
|
+
|
||||||
|
+ return MiniMessage.miniMessage().deserialize(replaced,Placeholder.parsed("text", String.format("%.2f", (double)used / (1024 * 1024))));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ private static BossBar.Color barColorFromMemory(double memPercent){
|
||||||
|
+ if (memPercent == -1){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(3));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (memPercent <= 50){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.getFirst());
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (memPercent <= 70){
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(1));
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(2));
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
index c626018d786fe231cd74a28c83515715d896f214..49647526d81e269aaf7a375992e3b42765ef5f8a 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
|
@@ -831,6 +831,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
|
@Override
|
||||||
|
public void stopServer() {
|
||||||
|
me.earthme.luminol.functions.GlobalServerTpsBar.cancelBarUpdateTask(); //Luminol - Tpsbar
|
||||||
|
+ me.earthme.luminol.functions.GlobalServerMemoryBar.cancelBarUpdateTask(); //Luminol - Memory bar
|
||||||
|
super.stopServer();
|
||||||
|
//Util.shutdownExecutors(); // Paper - moved into super
|
||||||
|
SkullBlockEntity.clear();
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
index c8701a2a0a3cbd60e263fe5c069b5993b36842a6..4e500aea07278535467ab6a9eba5b4269e1bd6ac 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
|
@@ -286,6 +286,7 @@ public class ServerPlayer extends Player {
|
||||||
|
private final java.util.concurrent.atomic.AtomicReference<io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances> viewDistances = new java.util.concurrent.atomic.AtomicReference<>(new io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances(-1, -1, -1));
|
||||||
|
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.PlayerChunkLoaderData chunkLoader;
|
||||||
|
public volatile boolean isTpsBarVisible = false; //Luminol - Tps bar
|
||||||
|
+ public volatile boolean isMemBarVisible = false; //Luminol - Memory bar
|
||||||
|
|
||||||
|
public io.papermc.paper.chunk.system.RegionizedPlayerChunkLoader.ViewDistances getViewDistances() {
|
||||||
|
return this.viewDistances.get();
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..502b93c7bda9e8577a1901a8777b7cf9
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
diff --git a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9d992637b 100644
|
index 49647526d81e269aaf7a375992e3b42765ef5f8a..04cf704af4def0b6fb4fbdedb4c9cdaa4216bc46 100644
|
||||||
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
--- a/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
+++ b/src/main/java/net/minecraft/server/dedicated/DedicatedServer.java
|
||||||
@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
@@ -282,7 +282,7 @@ public class DedicatedServer extends MinecraftServer implements ServerInterface
|
||||||
@@ -39,7 +39,7 @@ index c626018d786fe231cd74a28c83515715d896f214..49555381641e9cf9a5c3f00db1e193c9
|
|||||||
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
|
String proxyLink = (io.papermc.paper.configuration.GlobalConfiguration.get().proxies.velocity.enabled) ? "https://docs.papermc.io/velocity/security" : "http://www.spigotmc.org/wiki/firewall-guide/";
|
||||||
// Paper end - Add Velocity IP Forwarding Support
|
// Paper end - Add Velocity IP Forwarding Support
|
||||||
- if (!this.usesAuthentication()) {
|
- if (!this.usesAuthentication()) {
|
||||||
+ if (!this.usesAuthentication() && !me.earthme.luminol.config.modules.misc.OfflineModeWarningConfig.enabled) { //Luminol - Add config for offline mod warning
|
+ if (!this.usesAuthentication() && me.earthme.luminol.config.modules.misc.OfflineModeWarningConfig.enabled) { //Luminol - Add config for offline mod warning
|
||||||
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
DedicatedServer.LOGGER.warn("**** SERVER IS RUNNING IN OFFLINE/INSECURE MODE!");
|
||||||
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
|
DedicatedServer.LOGGER.warn("The server will make no attempt to authenticate usernames. Beware.");
|
||||||
// Spigot start
|
// Spigot start
|
||||||
@@ -16,24 +16,11 @@ index fc3d332aa1c1d469cedfe2aaa7102dcd78e25642..1ae61bc6603dd3ac290e3ead20416f9c
|
|||||||
/*
|
/*
|
||||||
if (false) {
|
if (false) {
|
||||||
io.papermc.paper.threadedregions.ThreadedTicketLevelPropagator.main(null);
|
io.papermc.paper.threadedregions.ThreadedTicketLevelPropagator.main(null);
|
||||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
|
|
||||||
index 531aa50f2c84e13358e8918bb0c15ea3cd036cb5..fd0053369eb68f0fd596d8acfba4a5247ef8105a 100644
|
|
||||||
--- a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
|
|
||||||
+++ b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
|
|
||||||
@@ -167,6 +167,8 @@ public final class ThreadedRegionizer<R extends ThreadedRegionizer.ThreadedRegio
|
|
||||||
if (removed != region) {
|
|
||||||
throw new IllegalStateException("Expected to remove " + region + ", but removed " + removed);
|
|
||||||
}
|
|
||||||
+
|
|
||||||
+ me.earthme.luminol.utils.LuminolWatchDog.onRegionDeath(region); //Luminol - Simple watchdog
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getSectionCoordinate(final int chunkCoordinate) {
|
|
||||||
diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
||||||
index 2ad25dd345ab42125d456f2b9cf67d8c4515c8b7..78c50292fb25e8703e9c91db892f05456f07d72f 100644
|
index 2ad25dd345ab42125d456f2b9cf67d8c4515c8b7..183fede965c3d227bbcc7e54781869e09796081f 100644
|
||||||
--- a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
--- a/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
||||||
+++ b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
+++ b/src/main/java/io/papermc/paper/threadedregions/TickRegions.java
|
||||||
@@ -402,6 +402,7 @@ public final class TickRegions implements ThreadedRegionizer.RegionCallbacks<Tic
|
@@ -402,10 +402,11 @@ public final class TickRegions implements ThreadedRegionizer.RegionCallbacks<Tic
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void tickRegion(final int tickCount, final long startTime, final long scheduledEnd) {
|
protected void tickRegion(final int tickCount, final long startTime, final long scheduledEnd) {
|
||||||
@@ -41,6 +28,11 @@ index 2ad25dd345ab42125d456f2b9cf67d8c4515c8b7..78c50292fb25e8703e9c91db892f0545
|
|||||||
final ca.spottedleaf.leafprofiler.RegionizedProfiler.Handle profiler = io.papermc.paper.threadedregions.TickRegionScheduler.getProfiler(); // Folia - profiler
|
final ca.spottedleaf.leafprofiler.RegionizedProfiler.Handle profiler = io.papermc.paper.threadedregions.TickRegionScheduler.getProfiler(); // Folia - profiler
|
||||||
profiler.startTick(); try { // Folia - profiler
|
profiler.startTick(); try { // Folia - profiler
|
||||||
MinecraftServer.getServer().tickServer(startTime, scheduledEnd, TimeUnit.MILLISECONDS.toMillis(10L), this.region);
|
MinecraftServer.getServer().tickServer(startTime, scheduledEnd, TimeUnit.MILLISECONDS.toMillis(10L), this.region);
|
||||||
|
- } finally { profiler.stopTick(); } // Folia - profiler
|
||||||
|
+ } finally { profiler.stopTick(); me.earthme.luminol.utils.LuminolWatchDog.releaseTickRegion(); } // Folia - profiler //Luminol - Simple watchdog
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/WatchdogConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/WatchdogConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/WatchdogConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/WatchdogConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..71d80b401470db777a86274d32f178bb2aa023d5
|
index 0000000000000000000000000000000000000000..71d80b401470db777a86274d32f178bb2aa023d5
|
||||||
@@ -76,10 +68,10 @@ index 0000000000000000000000000000000000000000..71d80b401470db777a86274d32f178bb
|
|||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
|
diff --git a/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd008a4236ee
|
index 0000000000000000000000000000000000000000..e19c6330a48cee402b1a999ca71cb2329d530356
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
|
+++ b/src/main/java/me/earthme/luminol/utils/LuminolWatchDog.java
|
||||||
@@ -0,0 +1,161 @@
|
@@ -0,0 +1,178 @@
|
||||||
+package me.earthme.luminol.utils;
|
+package me.earthme.luminol.utils;
|
||||||
+
|
+
|
||||||
+import com.google.common.collect.Maps;
|
+import com.google.common.collect.Maps;
|
||||||
@@ -100,18 +92,23 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+import java.util.Map;
|
+import java.util.Map;
|
||||||
+import java.util.concurrent.CompletableFuture;
|
+import java.util.concurrent.CompletableFuture;
|
||||||
+import java.util.concurrent.Executor;
|
+import java.util.concurrent.Executor;
|
||||||
|
+import java.util.concurrent.Executors;
|
||||||
+import java.util.concurrent.TimeUnit;
|
+import java.util.concurrent.TimeUnit;
|
||||||
+
|
+
|
||||||
+public class LuminolWatchDog {
|
+public class LuminolWatchDog {
|
||||||
+ private static final Object keepaliveDataLock = new Object();
|
+ private static final Object keepaliveDataLock = new Object();
|
||||||
+ private static Pair<Thread,Long> globalRegionLastKeepalive = null;
|
+ private static Pair<Thread,Long> globalRegionLastKeepalive = null;
|
||||||
+ private static final Map<Thread,Pair<ThreadedRegionizer.ThreadedRegion<?,?>,Long>> otherTickRegionKeepalive = Maps.newHashMap();
|
+ private static final Map<Thread,Pair<ThreadedRegionizer.ThreadedRegion<?,?>,Long>> otherTickRegionKeepalive = Maps.newHashMap();
|
||||||
+ private static final Executor checkTimer = CompletableFuture.delayedExecutor(50, TimeUnit.MILLISECONDS);
|
+ private static final Executor checkTimer = CompletableFuture.delayedExecutor(50, TimeUnit.MILLISECONDS,Executors.newSingleThreadExecutor());
|
||||||
+ private static final Logger logger = MinecraftServer.LOGGER;
|
+ private static final Logger logger = MinecraftServer.LOGGER;
|
||||||
+ private static int tickCount = 0;
|
+ private static int tickCount = 0;
|
||||||
+ private static boolean runScheduleNext = true;
|
+ private static volatile boolean runScheduleNext = true;
|
||||||
+
|
+
|
||||||
+ public static void boot(){
|
+ public static void boot(){
|
||||||
|
+ if (!WatchdogConfig.enabled){
|
||||||
|
+ return;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ runCheck();
|
+ runCheck();
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
@@ -119,6 +116,10 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+ checkTimer.execute(LuminolWatchDog::runCheck);
|
+ checkTimer.execute(LuminolWatchDog::runCheck);
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ public static void stopTicking(){
|
||||||
|
+ runScheduleNext = false;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ private static void runCheck(){
|
+ private static void runCheck(){
|
||||||
+ try {
|
+ try {
|
||||||
+ if (MinecraftServer.getServer().isStopped() || !runScheduleNext){
|
+ if (MinecraftServer.getServer().isStopped() || !runScheduleNext){
|
||||||
@@ -143,15 +144,23 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
|
+ for (Map.Entry<Thread,Pair<ThreadedRegionizer.ThreadedRegion<?,?>,Long>> tickData : otherTickRegionKeepalive.entrySet()){
|
||||||
|
+ final Thread targetThread = tickData.getKey();
|
||||||
|
+ final Pair<ThreadedRegionizer.ThreadedRegion<?, ?>, Long> keepaliveData = tickData.getValue();
|
||||||
|
+ final long lastKeepalive = keepaliveData.getRight();
|
||||||
|
+
|
||||||
|
+ final long timeEscaped = currentTimeNano - lastKeepalive;
|
||||||
|
+
|
||||||
|
+ if (timeEscaped >= WatchdogConfig.warnPeriodTicks * 50 * 1000 * 1000){
|
||||||
|
+ threadsToWarn.add(Pair.of(targetThread,timeEscaped));
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
+ for(Pair<Thread,Long> warnInfo : threadsToWarn){
|
+ for(Pair<Thread,Long> warnInfo : threadsToWarn){
|
||||||
+ final Thread targetThread = warnInfo.getLeft();
|
+ final Thread targetThread = warnInfo.getLeft();
|
||||||
+ final long timeEscaped = warnInfo.getRight();
|
+ final long timeEscaped = warnInfo.getRight();
|
||||||
+
|
+
|
||||||
+ final ThreadedRegionizer.ThreadedRegion<?,?> targetRegion;
|
+ final ThreadedRegionizer.ThreadedRegion<?,?> targetRegion = targetThread == globalRegionLastKeepalive.getKey() ? null : otherTickRegionKeepalive.get(targetThread).getLeft();
|
||||||
+
|
|
||||||
+ synchronized (keepaliveDataLock){
|
|
||||||
+ targetRegion = otherTickRegionKeepalive.get(targetThread).getLeft();
|
|
||||||
+ }
|
|
||||||
+
|
+
|
||||||
+ if (tickCount % WatchdogConfig.warnPeriodTicks == 0){
|
+ if (tickCount % WatchdogConfig.warnPeriodTicks == 0){
|
||||||
+ dumpSingleRegion(targetThread,targetRegion,timeEscaped);
|
+ dumpSingleRegion(targetThread,targetRegion,timeEscaped);
|
||||||
@@ -231,7 +240,7 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+
|
+
|
||||||
+ public static void onRegionDeath(ThreadedRegionizer.ThreadedRegion<?,?> currentRegion){
|
+ public static void releaseTickRegion(){
|
||||||
+ if (!WatchdogConfig.enabled){
|
+ if (!WatchdogConfig.enabled){
|
||||||
+ return;
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
@@ -243,10 +252,18 @@ index 0000000000000000000000000000000000000000..6b4368cdf9762ad981345fef0f26cd00
|
|||||||
+}
|
+}
|
||||||
\ No newline at end of file
|
\ No newline at end of file
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 0d756dd5181a2444175184227bef648d07c17236..59b1da130e519cbe06ed5eedf9e4dc881e45ba36 100644
|
index cb3ae17634dfc753dec75c7e2385a4ccdcba40d3..90fa6634dd1e426ba2469d366b3226a077c10f0e 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1222,6 +1222,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1003,6 +1003,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
|
// Folia end - region threading
|
||||||
|
|
||||||
|
public void stopServer() {
|
||||||
|
+ me.earthme.luminol.utils.LuminolWatchDog.stopTicking(); // Luminol - Watchdog
|
||||||
|
// Folia start - region threading
|
||||||
|
// halt scheduler
|
||||||
|
// don't wait, we may be on a scheduler thread
|
||||||
|
@@ -1222,6 +1223,8 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
this.statusIcon = (ServerStatus.Favicon) this.loadStatusIcon().orElse(null); // CraftBukkit - decompile error
|
this.statusIcon = (ServerStatus.Favicon) this.loadStatusIcon().orElse(null); // CraftBukkit - decompile error
|
||||||
this.status = this.buildServerStatus();
|
this.status = this.buildServerStatus();
|
||||||
|
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -6,10 +6,10 @@ Subject: [PATCH] Try fixing folia spector teleportation
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..8487799cdfb776eaca33b57f7c99ae3aeadb890d
|
index 0000000000000000000000000000000000000000..01f8c6ff3662569be5a4ff998bcd4fbbcb555105
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaSpectorTeleportationFixConfig.java
|
||||||
@@ -0,0 +1,20 @@
|
@@ -0,0 +1,25 @@
|
||||||
+package me.earthme.luminol.config.modules.fixes;
|
+package me.earthme.luminol.config.modules.fixes;
|
||||||
+
|
+
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
@@ -17,7 +17,12 @@ index 0000000000000000000000000000000000000000..8487799cdfb776eaca33b57f7c99ae3a
|
|||||||
+import me.earthme.luminol.config.IConfigModule;
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
+
|
+
|
||||||
+public class FoliaSpectorTeleportationFixConfig implements IConfigModule {
|
+public class FoliaSpectorTeleportationFixConfig implements IConfigModule {
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
+ @ConfigInfo(baseName = "enabled", comments =
|
||||||
|
+ """
|
||||||
|
+ The teleportation of spector players would call absMoveTo directly.\s
|
||||||
|
+ And when the camera teleported to another region,this would call absMoveTo\s
|
||||||
|
+ to let the spector player move to another region without any checks, which \s
|
||||||
|
+ would trigger the async catcher and crash the server""")
|
||||||
+ public static boolean fixSpectorTeleportFolia = false;
|
+ public static boolean fixSpectorTeleportFolia = false;
|
||||||
+
|
+
|
||||||
+ @Override
|
+ @Override
|
||||||
@@ -31,10 +36,10 @@ index 0000000000000000000000000000000000000000..8487799cdfb776eaca33b57f7c99ae3a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index c8701a2a0a3cbd60e263fe5c069b5993b36842a6..46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355 100644
|
index 4e500aea07278535467ab6a9eba5b4269e1bd6ac..25978b9c25096f252acd60a0924bac400d6026e7 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -842,6 +842,11 @@ public class ServerPlayer extends Player {
|
@@ -843,6 +843,11 @@ public class ServerPlayer extends Player {
|
||||||
}
|
}
|
||||||
|
|
||||||
Entity entity = this.getCamera();
|
Entity entity = this.getCamera();
|
||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Teleport async if entity was moving to another region at once
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..73d99a105a18231901e691922b0c283adae0cc79
|
index 0000000000000000000000000000000000000000..0e51d465db3554ac80d00c6b85cc1f013f3949ba
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaEntityMovingFixConfig.java
|
||||||
@@ -0,0 +1,22 @@
|
@@ -0,0 +1,28 @@
|
||||||
+package me.earthme.luminol.config.modules.fixes;
|
+package me.earthme.luminol.config.modules.fixes;
|
||||||
+
|
+
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
@@ -17,7 +17,13 @@ index 0000000000000000000000000000000000000000..73d99a105a18231901e691922b0c283a
|
|||||||
+import me.earthme.luminol.config.IConfigModule;
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
+
|
+
|
||||||
+public class FoliaEntityMovingFixConfig implements IConfigModule {
|
+public class FoliaEntityMovingFixConfig implements IConfigModule {
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
+ @ConfigInfo(baseName = "enabled", comments =
|
||||||
|
+ """
|
||||||
|
+ A simple fix of a issue on folia\s
|
||||||
|
+ (Some times the entity would\s
|
||||||
|
+ have a large moment that cross the\s
|
||||||
|
+ different tick regions and it would\s
|
||||||
|
+ make the server crashed) but sometimes it might doesn't work""")
|
||||||
+ public static boolean enabled = false;
|
+ public static boolean enabled = false;
|
||||||
+ @ConfigInfo(baseName = "warn_on_detected")
|
+ @ConfigInfo(baseName = "warn_on_detected")
|
||||||
+ public static boolean warnOnDetected = true;
|
+ public static boolean warnOnDetected = true;
|
||||||
@@ -33,7 +39,7 @@ index 0000000000000000000000000000000000000000..73d99a105a18231901e691922b0c283a
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 64e58d2d69f837b268e6a70b8a795e6fd5b1ed0c..36f0175228f4ab80ebc67082e7c9bbbc2c14e147 100644
|
index 8ad21bf69fe2ebbda7295c16971c31a55cd23108..cbf5bda50b87b8520ee6fa6d0b41c94b5c9f3583 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -1086,10 +1086,40 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -1086,10 +1086,40 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -0,0 +1,97 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <novau233@163.com>
|
||||||
|
Date: Mon, 10 Jun 2024 10:51:08 +0000
|
||||||
|
Subject: [PATCH] Try fixing folia off region POI accessing issue
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaPOIAccessOffRegionFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaPOIAccessOffRegionFixConfig.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..7812a71f05dd32646037afd22cdabf72bb23b0d1
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaPOIAccessOffRegionFixConfig.java
|
||||||
|
@@ -0,0 +1,25 @@
|
||||||
|
+package me.earthme.luminol.config.modules.fixes;
|
||||||
|
+
|
||||||
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
|
+import me.earthme.luminol.config.EnumConfigCategory;
|
||||||
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
|
+
|
||||||
|
+public class FoliaPOIAccessOffRegionFixConfig implements IConfigModule {
|
||||||
|
+ @ConfigInfo(baseName = "enabled", comments =
|
||||||
|
+ """
|
||||||
|
+ The POIManager of folia has something which has not been patched\s
|
||||||
|
+ for regionized ticking and these would trigger the async catcher\s
|
||||||
|
+ and make the server crash.If you would like to prevent it and didn't\s
|
||||||
|
+ mind the side effect(currently unknown), you can enable this""")
|
||||||
|
+ public static boolean enabled = false;
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public EnumConfigCategory getCategory() {
|
||||||
|
+ return EnumConfigCategory.FIXES;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getBaseName() {
|
||||||
|
+ return "folia.fix_poi_access_off_region";
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java b/src/main/java/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java
|
||||||
|
index aac1df9e2c0652bc6348af0404deba7465f82d42..4dcf71e9f861596bd02902d0851ffa57ff9e4170 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/GoToPotentialJobSite.java
|
||||||
|
@@ -49,10 +49,17 @@ public class GoToPotentialJobSite extends Behavior<Villager> {
|
||||||
|
ServerLevel serverLevel2 = serverLevel.getServer().getLevel(pos.dimension());
|
||||||
|
if (serverLevel2 != null) {
|
||||||
|
PoiManager poiManager = serverLevel2.getPoiManager();
|
||||||
|
+ //Luminol start - Fix off region POI accessing
|
||||||
|
+ java.lang.Runnable scheduledRelease = () -> {
|
||||||
|
if (poiManager.exists(blockPos, poiType -> true)) {
|
||||||
|
poiManager.release(blockPos);
|
||||||
|
}
|
||||||
|
-
|
||||||
|
+ };
|
||||||
|
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(serverLevel2, blockPos) && me.earthme.luminol.config.modules.fixes.FoliaPOIAccessOffRegionFixConfig.enabled)
|
||||||
|
+ io.papermc.paper.threadedregions.RegionizedServer.getInstance().taskQueue.queueTickTaskQueue(serverLevel2, blockPos.getX() >> 4, blockPos.getZ() >> 4, scheduledRelease);
|
||||||
|
+ else
|
||||||
|
+ scheduledRelease.run();
|
||||||
|
+ //Luminol end
|
||||||
|
DebugPackets.sendPoiTicketCountPacket(serverLevel, blockPos);
|
||||||
|
}
|
||||||
|
});
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/behavior/YieldJobSite.java b/src/main/java/net/minecraft/world/entity/ai/behavior/YieldJobSite.java
|
||||||
|
index d1a9b62d3304916275dd6b4c4e783cf1563b5e21..dd1baee4bc36b28b7e10d98525d55cbcfb562649 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/ai/behavior/YieldJobSite.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/ai/behavior/YieldJobSite.java
|
||||||
|
@@ -6,6 +6,7 @@ import net.minecraft.core.BlockPos;
|
||||||
|
import net.minecraft.core.GlobalPos;
|
||||||
|
import net.minecraft.core.Holder;
|
||||||
|
import net.minecraft.network.protocol.game.DebugPackets;
|
||||||
|
+import net.minecraft.server.level.ServerLevel;
|
||||||
|
import net.minecraft.world.entity.LivingEntity;
|
||||||
|
import net.minecraft.world.entity.PathfinderMob;
|
||||||
|
import net.minecraft.world.entity.ai.behavior.declarative.BehaviorBuilder;
|
||||||
|
@@ -33,7 +34,10 @@ public class YieldJobSite {
|
||||||
|
} else if (entity.getVillagerData().getProfession() != VillagerProfession.NONE) {
|
||||||
|
return false;
|
||||||
|
} else {
|
||||||
|
- BlockPos blockPos = context.<GlobalPos>get(potentialJobSite).pos();
|
||||||
|
+ final GlobalPos globalPos = context.<GlobalPos>get(potentialJobSite); //Luminol - Try fixing off main POI accessing
|
||||||
|
+ final ServerLevel targetLevel = net.minecraft.server.MinecraftServer.getServer().getLevel(globalPos.dimension()); //Luminol - Try fixing off main POI accessing
|
||||||
|
+ BlockPos blockPos = globalPos.pos(); //Luminol - Try fixing off main POI accessing
|
||||||
|
+ if (!io.papermc.paper.util.TickThread.isTickThreadFor(targetLevel, blockPos) && me.earthme.luminol.config.modules.fixes.FoliaPOIAccessOffRegionFixConfig.enabled) return true; //Luminol - Try fixing off main POI accessing
|
||||||
|
Optional<Holder<PoiType>> optional = world.getPoiManager().getType(blockPos);
|
||||||
|
if (optional.isEmpty()) {
|
||||||
|
return true;
|
||||||
|
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 a26cc9b81d93f04cd741a2558f0787bb2037351e..c7860dca86e4a9251d81d98129347e1a59c09f04 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
|
||||||
|
@@ -82,7 +82,7 @@ public class PoiManager extends SectionStorage<PoiSection> {
|
||||||
|
|
||||||
|
public Stream<PoiRecord> getInSquare(Predicate<Holder<PoiType>> typePredicate, BlockPos pos, int radius, PoiManager.Occupancy occupationStatus) {
|
||||||
|
int i = Math.floorDiv(radius, 16) + 1;
|
||||||
|
- return ChunkPos.rangeClosed(new ChunkPos(pos), i).flatMap(chunkPos -> this.getInChunk(typePredicate, chunkPos, occupationStatus)).filter(poi -> {
|
||||||
|
+ return ChunkPos.rangeClosed(new ChunkPos(pos), i).filter(cpos -> me.earthme.luminol.config.modules.fixes.FoliaPOIAccessOffRegionFixConfig.enabled ? io.papermc.paper.util.TickThread.isTickThreadFor(this.world,cpos) : true).flatMap(chunkPos -> this.getInChunk(typePredicate, chunkPos, occupationStatus)).filter(poi -> { //Luminol - Fix off region POI access
|
||||||
|
BlockPos blockPos2 = poi.getPos();
|
||||||
|
return Math.abs(blockPos2.getX() - pos.getX()) <= radius && Math.abs(blockPos2.getZ() - pos.getZ()) <= radius;
|
||||||
|
});
|
||||||
@@ -6,10 +6,10 @@ Subject: [PATCH] Prevent teleportAsync calling during moving event being
|
|||||||
|
|
||||||
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java
|
||||||
new file mode 100644
|
new file mode 100644
|
||||||
index 0000000000000000000000000000000000000000..b8aceab54bb60000e7c56810140271022f5147a2
|
index 0000000000000000000000000000000000000000..8f1449545d6d217b46a9ffae705123daefe55b25
|
||||||
--- /dev/null
|
--- /dev/null
|
||||||
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java
|
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/FoliaTeleportAsyncFixConfig.java
|
||||||
@@ -0,0 +1,22 @@
|
@@ -0,0 +1,24 @@
|
||||||
+package me.earthme.luminol.config.modules.fixes;
|
+package me.earthme.luminol.config.modules.fixes;
|
||||||
+
|
+
|
||||||
+import me.earthme.luminol.config.ConfigInfo;
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
@@ -17,7 +17,9 @@ index 0000000000000000000000000000000000000000..b8aceab54bb60000e7c5681014027102
|
|||||||
+import me.earthme.luminol.config.IConfigModule;
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
+
|
+
|
||||||
+public class FoliaTeleportAsyncFixConfig implements IConfigModule {
|
+public class FoliaTeleportAsyncFixConfig implements IConfigModule {
|
||||||
+ @ConfigInfo(baseName = "enabled")
|
+ @ConfigInfo(baseName = "enabled", comments =
|
||||||
|
+ "A fix which fixed some bugs of teleportAsync " +
|
||||||
|
+ "that caused by plugins(such as Residence)")
|
||||||
+ public static boolean enabled = false;
|
+ public static boolean enabled = false;
|
||||||
+ @ConfigInfo(baseName = "throw_on_detected")
|
+ @ConfigInfo(baseName = "throw_on_detected")
|
||||||
+ public static boolean throwOnDetected = true;
|
+ public static boolean throwOnDetected = true;
|
||||||
@@ -33,10 +35,10 @@ index 0000000000000000000000000000000000000000..b8aceab54bb60000e7c5681014027102
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355..0086a1a4611b983eefd0cb7bf8e9cff677246d0f 100644
|
index 25978b9c25096f252acd60a0924bac400d6026e7..922ce7627bd0d546802ec6b013056f7aa6acbf33 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -330,6 +330,10 @@ public class ServerPlayer extends Player {
|
@@ -331,6 +331,10 @@ public class ServerPlayer extends Player {
|
||||||
public double lastEntitySpawnRadiusSquared = -1.0;
|
public double lastEntitySpawnRadiusSquared = -1.0;
|
||||||
// Paper end - optimise chunk tick iteration
|
// Paper end - optimise chunk tick iteration
|
||||||
|
|
||||||
@@ -48,7 +50,7 @@ index 46df26bef2f1d4b0bd5a1313e8ee4f86c2fdf355..0086a1a4611b983eefd0cb7bf8e9cff6
|
|||||||
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
||||||
this.chatVisibility = ChatVisiblity.FULL;
|
this.chatVisibility = ChatVisiblity.FULL;
|
||||||
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
diff --git a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
index 954809d8997750959541e6462668f17efd0b0f70..4fc9a47745b817d9ee2da4776cab26ff9f3b0025 100644
|
index e7b510dee355a9865bd67f5aea52c62957226eb3..e0f12426f18b343b27089440cd01127d79600ef0 100644
|
||||||
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
--- a/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
+++ b/src/main/java/net/minecraft/server/network/ServerGamePacketListenerImpl.java
|
||||||
@@ -675,7 +675,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
@@ -675,7 +675,9 @@ public class ServerGamePacketListenerImpl extends ServerCommonPacketListenerImpl
|
||||||
@@ -72,7 +74,7 @@ index 954809d8997750959541e6462668f17efd0b0f70..4fc9a47745b817d9ee2da4776cab26ff
|
|||||||
// If the event is cancelled we move the player back to their old location.
|
// If the event is cancelled we move the player back to their old location.
|
||||||
if (event.isCancelled()) {
|
if (event.isCancelled()) {
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 36f0175228f4ab80ebc67082e7c9bbbc2c14e147..ad15df5dfe34e20a6b5dafaf01e8a7306b158109 100644
|
index cbf5bda50b87b8520ee6fa6d0b41c94b5c9f3583..ac4533f69e9bb22c7375ad8bc83ddc23399a56d7 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -3986,6 +3986,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -3986,6 +3986,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Kaiiju Vanilla end portal teleportation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 8749e1d7109b751ec69e771b43014c085c0802cd..b676200cb54afa7aebe23eee4e7aef7c9a6e0712 100644
|
index ac4533f69e9bb22c7375ad8bc83ddc23399a56d7..2ff3216c3789fc4779bb18502cb288f57e370ea0 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -4193,12 +4193,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -4193,12 +4193,17 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -33,7 +33,7 @@ index 0000000000000000000000000000000000000000..dd45cf1fde5ee4cf8347064f106c64b8
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
index 54297b9dde40fe853d873d60373cd8c0a3c9466b..7369d608c26e46e9d3a881ac14efe1d0f075b1cb 100644
|
index 3228d15fc21fec08e8683f96c829935a1de6cf45..7433a29577ecb36e847bd610059c0c83702d01f6 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
@@ -926,10 +926,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
@@ -926,10 +926,11 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Pufferfish Cache climbing check for activation
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index b676200cb54afa7aebe23eee4e7aef7c9a6e0712..2fb2df4922a1b5b3acf732e68d8db7bb15ecc789 100644
|
index 2ff3216c3789fc4779bb18502cb288f57e370ea0..a19773b8721fb4011a48738977a162358b4dbcb5 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -309,7 +309,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Pufferfish Reduce entity fluid lookups if no fluids
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 2fb2df4922a1b5b3acf732e68d8db7bb15ecc789..9b4a9025f9b30834a07a83cc02e7ee7f665dcbd9 100644
|
index a19773b8721fb4011a48738977a162358b4dbcb5..ada744f8e594dbec516e2a66beaf6140e98d7510 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -5260,16 +5260,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5260,16 +5260,18 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -49,7 +49,7 @@ index 0000000000000000000000000000000000000000..15697d69659b6e1e776acf5094684b5f
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 9b4a9025f9b30834a07a83cc02e7ee7f665dcbd9..835a6e73a340375e30e4822df45a1c99d36ac009 100644
|
index ada744f8e594dbec516e2a66beaf6140e98d7510..5c36b3c6bf38acfa3f38dcca4b666aca9665e7d4 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -812,6 +812,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -812,6 +812,12 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -33,10 +33,10 @@ index 0000000000000000000000000000000000000000..12683ec5a5102e45b6171fea0b833ba5
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
index 10d7c64fb3a9bafdcdae99f8dc87017722341337..11dfac223d36b0a8cbd865b3a29de15b4268eeb0 100644
|
index 10d7c64fb3a9bafdcdae99f8dc87017722341337..079c0b34f28d57ce967715f809e737a67fa56d07 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
@@ -45,6 +45,36 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
@@ -45,6 +45,38 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||||
super(type, world);
|
super(type, world);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -47,23 +47,25 @@ index 10d7c64fb3a9bafdcdae99f8dc87017722341337..11dfac223d36b0a8cbd865b3a29de15b
|
|||||||
+ private int loadedLifetime = 0;
|
+ private int loadedLifetime = 0;
|
||||||
+ @Override
|
+ @Override
|
||||||
+ public void setPos(double x, double y, double z) {
|
+ public void setPos(double x, double y, double z) {
|
||||||
+ long currentTick = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion().getData().getCurrentTick();
|
+ if (io.papermc.paper.util.TickThread.isTickThreadFor(this) && io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion() != null){
|
||||||
+ if (loadedTick != currentTick) {
|
+ long currentTick = io.papermc.paper.threadedregions.TickRegionScheduler.getCurrentRegion().getData().getCurrentTick();
|
||||||
+ loadedTick = currentTick;
|
+ if (loadedTick != currentTick) {
|
||||||
+ loadedThisTick = 0;
|
+ loadedTick = currentTick;
|
||||||
+ }
|
+ loadedThisTick = 0;
|
||||||
+ int previousX = Mth.floor(this.getX()) >> 4, previousZ = Mth.floor(this.getZ()) >> 4;
|
+ }
|
||||||
+ int newX = Mth.floor(x) >> 4, newZ = Mth.floor(z) >> 4;
|
+ int previousX = Mth.floor(this.getX()) >> 4, previousZ = Mth.floor(this.getZ()) >> 4;
|
||||||
+ if (previousX != newX || previousZ != newZ) {
|
+ int newX = Mth.floor(x) >> 4, newZ = Mth.floor(z) >> 4;
|
||||||
+ boolean isLoaded = ((net.minecraft.server.level.ServerChunkCache) this.level().getChunkSource()).getChunkAtIfLoadedMainThread(newX, newZ) != null;
|
+ if ((previousX != newX || previousZ != newZ) && io.papermc.paper.util.TickThread.isTickThreadFor(((ServerLevel) this.level()), newX, newZ)) {
|
||||||
+ if (!isLoaded) {
|
+ boolean isLoaded = ((net.minecraft.server.level.ServerChunkCache) this.level().getChunkSource()).getChunkAtIfLoadedMainThread(newX, newZ) != null;
|
||||||
+ if (Projectile.loadedThisTick > me.earthme.luminol.config.modules.optimizations.ProjectileChunkReduceConfig.maxProjectileLoadsPerTick) {
|
+ if (!isLoaded) {
|
||||||
+ if (++this.loadedLifetime > me.earthme.luminol.config.modules.optimizations.ProjectileChunkReduceConfig.maxProjectileLoadsPerProjectile) {
|
+ if (Projectile.loadedThisTick > me.earthme.luminol.config.modules.optimizations.ProjectileChunkReduceConfig.maxProjectileLoadsPerTick) {
|
||||||
+ this.discard();
|
+ if (++this.loadedLifetime > me.earthme.luminol.config.modules.optimizations.ProjectileChunkReduceConfig.maxProjectileLoadsPerProjectile) {
|
||||||
|
+ this.discard();
|
||||||
|
+ }
|
||||||
|
+ return;
|
||||||
+ }
|
+ }
|
||||||
+ return;
|
+ Projectile.loadedThisTick++;
|
||||||
+ }
|
+ }
|
||||||
+ Projectile.loadedThisTick++;
|
|
||||||
+ }
|
+ }
|
||||||
+ }
|
+ }
|
||||||
+ super.setPos(x, y, z);
|
+ super.setPos(x, y, z);
|
||||||
@@ -71,7 +71,7 @@ index 0000000000000000000000000000000000000000..af5893ba1f738ec9827d7b714682c314
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index 43b8f64d7c14e6dd0975b24a3205806c4433f26f..3f394934e64df09e65b86d61a1dcabd3c6031a38 100644
|
index 6439c6974f0292d105581456fcb5e27fdfbae6d6..2847d5c82f8f266ab552410e23168a7115c1e3ab 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -987,6 +987,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -987,6 +987,7 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..acc032f727e605e79b688efb4873ff47
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Mob.java b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
index 7f6b810f175e21dbbc85d17fefbba2a7c638144d..a892ff1b3bc11df5f46269c5ae8838c4a7f91ea9 100644
|
index 397c8ef1c83f0bf3c03d31ee19dbf1533dba9e48..abbbd6b56af8a177cd8ebfc5aa34c3f7282bdc59 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
--- a/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
+++ b/src/main/java/net/minecraft/world/entity/Mob.java
|
||||||
@@ -230,11 +230,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
@@ -230,11 +230,13 @@ public abstract class Mob extends LivingEntity implements Targeting {
|
||||||
@@ -31,7 +31,7 @@ index 0000000000000000000000000000000000000000..ed62d25d6cd6dfcf8c5db20ced36eb3d
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index c7c0f6e399e472792ecad75fc402a64785fae818..31f80438e82da6de1cd1ec35a2f77c45f0127722 100644
|
index 5b76c645214852f172c2a498751438090cc970ec..62f997aae20fe392bc271b23b632441ce989c69c 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -5458,6 +5458,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -5458,6 +5458,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -6,7 +6,7 @@ Subject: [PATCH] Gale Don't trigger lootable refresh for non-player
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
diff --git a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
||||||
index a5cd70b6ada2b44f64db0985483ee5eadc67003f..e49be65c2d379027c2821c0db7f151bc3cd20a4b 100644
|
index fa64bf5ad13c278438039b663ea3134e72108411..cb3318c124337868f763b0e060f90e7eb3ba466d 100644
|
||||||
--- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
--- a/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
+++ b/src/main/java/net/minecraft/world/level/block/entity/RandomizableContainerBlockEntity.java
|
||||||
@@ -68,6 +68,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc
|
@@ -68,6 +68,7 @@ public abstract class RandomizableContainerBlockEntity extends BaseContainerBloc
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Gale Skip entity move if movement is zero
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 6948342ef9fa4af0e13707e85cd788c815e34544..29cbafa048f61f7eb7d35dd103faff8c2b4a77f5 100644
|
index 485ca9a13a04ee47b27f1d23c6323583139865a1..2072664329f68552f43db55dee283ba96951ac09 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -317,6 +317,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -317,6 +317,7 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Gale Replace AI attributes with optimized collections
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
diff --git a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
index 683c9693754d1a87b7e8fccc757a0d0963351f60..d904cc2d882f62f74ff34f7e8266947798563ed4 100644
|
index 8d6954d05d2bf6d6c1c4953db3127b011a858cec..0ddb031bfe8df351f1cf97d258f81558e4719dbf 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
--- a/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
+++ b/src/main/java/net/minecraft/world/entity/ai/attributes/AttributeMap.java
|
||||||
@@ -1,8 +1,6 @@
|
@@ -1,8 +1,6 @@
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Sparkly Paper Optimize canSee checks
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
diff --git a/src/main/java/net/minecraft/server/level/ChunkMap.java b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
index 6ab9f83786dcfbd3156d2f2bd6da57baed1399f4..09b72783bab881a42d94b77c453c638f5b7aaf40 100644
|
index 0e8023d7105ea9781482e26e75d35565c52bfcb7..e192ae7eb424613fbb5b54d226ece9121545d468 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
--- a/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
+++ b/src/main/java/net/minecraft/server/level/ChunkMap.java
|
||||||
@@ -1408,7 +1408,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
@@ -1408,7 +1408,7 @@ public class ChunkMap extends ChunkStorage implements ChunkHolder.PlayerProvider
|
||||||
@@ -168,10 +168,10 @@ index 936f8663b23908ac5de2076401a5d508f88a0376..0e8e57c291539e50f61e8178fc355fa6
|
|||||||
super.channelActive(channelhandlercontext);
|
super.channelActive(channelhandlercontext);
|
||||||
this.channel = channelhandlercontext.channel();
|
this.channel = channelhandlercontext.channel();
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 08b0d3b970a7c86f577d20487d5fe3930b8eae6e..8ea86315e09a6b182bab03ee902ef92c5e18d962 100644
|
index 90fa6634dd1e426ba2469d366b3226a077c10f0e..2ed097054d18919ad570a0fa990876285279f921 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1727,7 +1727,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1728,7 +1728,7 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
private ServerStatus.Players buildPlayerStatus() {
|
private ServerStatus.Players buildPlayerStatus() {
|
||||||
@@ -210,7 +210,7 @@ index e7b444a10b244828827b3c66c53465206ea8e0ec..030601fdfde2232a933b2ad7022e9909
|
|||||||
.filter(player -> !playerList.isOp(player.getGameProfile()))
|
.filter(player -> !playerList.isOp(player.getGameProfile()))
|
||||||
.map(player -> player.getGameProfile().getName()),
|
.map(player -> player.getGameProfile().getName()),
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index 0086a1a4611b983eefd0cb7bf8e9cff677246d0f..dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a 100644
|
index 922ce7627bd0d546802ec6b013056f7aa6acbf33..6357440e89ffddfc61de767e4a1bfdbbb9d854b3 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -197,7 +197,7 @@ public class ServerPlayer extends Player {
|
@@ -197,7 +197,7 @@ public class ServerPlayer extends Player {
|
||||||
@@ -5,7 +5,7 @@ Subject: [PATCH] Fix-MC-2025
|
|||||||
|
|
||||||
|
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
index 29cbafa048f61f7eb7d35dd103faff8c2b4a77f5..0893b62e72fe03a14e7617f28676f53f77e7624c 100644
|
index 2072664329f68552f43db55dee283ba96951ac09..82ffe6571b06a482296fb28e37aa148daf6a0ce6 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
--- a/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
+++ b/src/main/java/net/minecraft/world/entity/Entity.java
|
||||||
@@ -2549,6 +2549,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
@@ -2549,6 +2549,16 @@ public abstract class Entity implements Nameable, EntityAccess, CommandSource, S
|
||||||
@@ -101,10 +101,10 @@ index 0000000000000000000000000000000000000000..53b4397997bc9b9b9d88e48304b37a25
|
|||||||
+ }
|
+ }
|
||||||
+}
|
+}
|
||||||
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
diff --git a/src/main/java/net/minecraft/server/MinecraftServer.java b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
index 8ea86315e09a6b182bab03ee902ef92c5e18d962..d933895e833bea1720cc32256e98e0fe3638f4eb 100644
|
index 2ed097054d18919ad570a0fa990876285279f921..37e7e88fa75dda6c2b59ed610ec3ae2136c653a5 100644
|
||||||
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
--- a/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
+++ b/src/main/java/net/minecraft/server/MinecraftServer.java
|
||||||
@@ -1654,6 +1654,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1655,6 +1655,17 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
// Folia end - region threading
|
// Folia end - region threading
|
||||||
|
|
||||||
@@ -122,7 +122,7 @@ index 8ea86315e09a6b182bab03ee902ef92c5e18d962..d933895e833bea1720cc32256e98e0fe
|
|||||||
// Folia - region threading
|
// Folia - region threading
|
||||||
if (region == null) this.tickRateManager.tick(); // Folia - region threading
|
if (region == null) this.tickRateManager.tick(); // Folia - region threading
|
||||||
this.tickChildren(shouldKeepTicking, region); // Folia - region threading
|
this.tickChildren(shouldKeepTicking, region); // Folia - region threading
|
||||||
@@ -1663,6 +1674,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
@@ -1664,6 +1675,20 @@ public abstract class MinecraftServer extends ReentrantBlockableEventLoop<TickTa
|
||||||
}
|
}
|
||||||
|
|
||||||
// Folia - region threading
|
// Folia - region threading
|
||||||
@@ -144,7 +144,7 @@ index 8ea86315e09a6b182bab03ee902ef92c5e18d962..d933895e833bea1720cc32256e98e0fe
|
|||||||
int playerSaveInterval = io.papermc.paper.configuration.GlobalConfiguration.get().playerAutoSave.rate;
|
int playerSaveInterval = io.papermc.paper.configuration.GlobalConfiguration.get().playerAutoSave.rate;
|
||||||
if (playerSaveInterval < 0) {
|
if (playerSaveInterval < 0) {
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
index 3f394934e64df09e65b86d61a1dcabd3c6031a38..ba33c107cfbe9920fc33375daf8e6b62cc794d98 100644
|
index 2847d5c82f8f266ab552410e23168a7115c1e3ab..3ab3e61879e5b2ab93fae9ace79deec9305b0df9 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
--- a/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerLevel.java
|
||||||
@@ -1542,6 +1542,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
@@ -1542,6 +1542,8 @@ public class ServerLevel extends Level implements WorldGenLevel {
|
||||||
@@ -182,10 +182,10 @@ index 3f394934e64df09e65b86d61a1dcabd3c6031a38..ba33c107cfbe9920fc33375daf8e6b62
|
|||||||
} else {
|
} else {
|
||||||
passenger.stopRiding();
|
passenger.stopRiding();
|
||||||
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
diff --git a/src/main/java/net/minecraft/server/level/ServerPlayer.java b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
index dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a..c40ec90543bf51c9b16a7b63d8339020e7333b90 100644
|
index 6357440e89ffddfc61de767e4a1bfdbbb9d854b3..c25261e2c5313aedeae813b5f439a5b29a0ffcbb 100644
|
||||||
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
--- a/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
+++ b/src/main/java/net/minecraft/server/level/ServerPlayer.java
|
||||||
@@ -334,6 +334,25 @@ public class ServerPlayer extends Player {
|
@@ -335,6 +335,25 @@ public class ServerPlayer extends Player {
|
||||||
public boolean handlingMoveEvent = false;
|
public boolean handlingMoveEvent = false;
|
||||||
//Luminol end
|
//Luminol end
|
||||||
|
|
||||||
@@ -211,7 +211,7 @@ index dcbf18eb7fb9a37fcd7faf3efe023d2503b4091a..c40ec90543bf51c9b16a7b63d8339020
|
|||||||
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) {
|
public ServerPlayer(MinecraftServer server, ServerLevel world, GameProfile profile, ClientInformation clientOptions) {
|
||||||
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
super(world, world.getSharedSpawnPos(), world.getSharedSpawnAngle(), profile);
|
||||||
this.chatVisibility = ChatVisiblity.FULL;
|
this.chatVisibility = ChatVisiblity.FULL;
|
||||||
@@ -872,6 +891,12 @@ public class ServerPlayer extends Player {
|
@@ -873,6 +892,12 @@ public class ServerPlayer extends Player {
|
||||||
this.trackStartFallingPosition();
|
this.trackStartFallingPosition();
|
||||||
this.trackEnteredOrExitedLavaOnVehicle();
|
this.trackEnteredOrExitedLavaOnVehicle();
|
||||||
this.advancements.flushDirty(this);
|
this.advancements.flushDirty(this);
|
||||||
@@ -334,10 +334,10 @@ index 579eb5a81281ca36c145153d8c24a517242ffe18..a758081a3058bee62721a0b73adbce51
|
|||||||
+ // KioCG end
|
+ // KioCG end
|
||||||
}
|
}
|
||||||
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
diff --git a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
index 11dfac223d36b0a8cbd865b3a29de15b4268eeb0..2dcfcb226bef8ca0f60ade043dcde1acc8a0811c 100644
|
index d44510a3b70b97b13b87a8e0868fdc699b70b75b..2430e5c15be02c75d0e7de3af4118846da122554 100644
|
||||||
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
--- a/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
+++ b/src/main/java/net/minecraft/world/entity/projectile/Projectile.java
|
||||||
@@ -351,4 +351,11 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
@@ -353,4 +353,11 @@ public abstract class Projectile extends Entity implements TraceableEntity {
|
||||||
public boolean mayBreak(Level world) {
|
public boolean mayBreak(Level world) {
|
||||||
return this.getType().is(EntityTypeTags.IMPACT_PROJECTILES) && world.getGameRules().getBoolean(GameRules.RULE_PROJECTILESCANBREAKBLOCKS);
|
return this.getType().is(EntityTypeTags.IMPACT_PROJECTILES) && world.getGameRules().getBoolean(GameRules.RULE_PROJECTILESCANBREAKBLOCKS);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,46 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stabrinai <wujiaxin752@outlook.com>
|
||||||
|
Date: Sun, 30 Jun 2024 20:46:42 +0800
|
||||||
|
Subject: [PATCH] Verify signature only in online-mode
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java b/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000000000000000000000000000000000000..e45ce3abf49684c911678abcefd69586246cc0e3
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/PublickeyVerifyConfig.java
|
||||||
|
@@ -0,0 +1,21 @@
|
||||||
|
+package me.earthme.luminol.config.modules.misc;
|
||||||
|
+
|
||||||
|
+import me.earthme.luminol.config.ConfigInfo;
|
||||||
|
+import me.earthme.luminol.config.EnumConfigCategory;
|
||||||
|
+import me.earthme.luminol.config.IConfigModule;
|
||||||
|
+
|
||||||
|
+public class PublickeyVerifyConfig implements IConfigModule {
|
||||||
|
+
|
||||||
|
+ @ConfigInfo(baseName = "enabled")
|
||||||
|
+ public static boolean enabled = false;
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public EnumConfigCategory getCategory() {
|
||||||
|
+ return EnumConfigCategory.MISC;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ @Override
|
||||||
|
+ public String getBaseName() {
|
||||||
|
+ return "verify_publickey_only_in_online_mode";
|
||||||
|
+ }
|
||||||
|
+}
|
||||||
|
diff --git a/src/main/java/net/minecraft/world/entity/player/ProfilePublicKey.java b/src/main/java/net/minecraft/world/entity/player/ProfilePublicKey.java
|
||||||
|
index 2fa51c3a70f43cd23b8f494fc643d66cecfda7d2..5adefc33c501baf967adeaa4741373507eb0946d 100644
|
||||||
|
--- a/src/main/java/net/minecraft/world/entity/player/ProfilePublicKey.java
|
||||||
|
+++ b/src/main/java/net/minecraft/world/entity/player/ProfilePublicKey.java
|
||||||
|
@@ -23,7 +23,7 @@ public record ProfilePublicKey(ProfilePublicKey.Data data) {
|
||||||
|
public static final Codec<ProfilePublicKey> TRUSTED_CODEC = ProfilePublicKey.Data.CODEC.xmap(ProfilePublicKey::new, ProfilePublicKey::data);
|
||||||
|
|
||||||
|
public static ProfilePublicKey createValidated(SignatureValidator servicesSignatureVerifier, UUID playerUuid, ProfilePublicKey.Data publicKeyData) throws ProfilePublicKey.ValidationException {
|
||||||
|
- if (!publicKeyData.validateSignature(servicesSignatureVerifier, playerUuid)) {
|
||||||
|
+ if ((!me.earthme.luminol.config.modules.misc.PublickeyVerifyConfig.enabled || org.bukkit.Bukkit.getServer().getOnlineMode()) && !publicKeyData.validateSignature(servicesSignatureVerifier, playerUuid)) { // Luminol - Verify signature only in online-mode
|
||||||
|
throw new ProfilePublicKey.ValidationException(INVALID_SIGNATURE, org.bukkit.event.player.PlayerKickEvent.Cause.INVALID_PUBLIC_KEY_SIGNATURE); // Paper - kick event causes
|
||||||
|
} else {
|
||||||
|
return new ProfilePublicKey(publicKeyData);
|
||||||
32
patches/server/0061-Fix-linear-java-compile.patch
Normal file
32
patches/server/0061-Fix-linear-java-compile.patch
Normal file
@@ -0,0 +1,32 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <wangxyper@163.com>
|
||||||
|
Date: Fri, 12 Jul 2024 21:52:54 +0800
|
||||||
|
Subject: [PATCH] Fix linear java compile
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
|
||||||
|
index 4938d86f62071f578822684f576b838296d4070f..654eaae20ccddd6d6ffa6f431472e28ffb44ae0c 100644
|
||||||
|
--- a/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
|
||||||
|
+++ b/src/main/java/net/minecraft/util/worldupdate/WorldUpgrader.java
|
||||||
|
@@ -118,9 +118,9 @@ public class WorldUpgrader {
|
||||||
|
|
||||||
|
// LinearPurpur start
|
||||||
|
String worldName = this.levelStorage.getLevelId();
|
||||||
|
- org.purpurmc.purpur.region.RegionFileFormat formatName = ((org.bukkit.craftbukkit.CraftWorld) org.bukkit.Bukkit.getWorld(worldName)).getHandle().purpurConfig.regionFormatName;
|
||||||
|
- int linearCompression = ((org.bukkit.craftbukkit.CraftWorld) org.bukkit.Bukkit.getWorld(worldName)).getHandle().purpurConfig.regionFormatLinearCompressionLevel;
|
||||||
|
- boolean linearCrashOnBrokenSymlink = ((org.bukkit.craftbukkit.CraftWorld) org.bukkit.Bukkit.getWorld(worldName)).getHandle().purpurConfig.linearCrashOnBrokenSymlink;
|
||||||
|
+ org.purpurmc.purpur.region.RegionFileFormat formatName = me.earthme.luminol.config.modules.misc.RegionFormatConfig.regionFormatType;
|
||||||
|
+ int linearCompression = me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearCompressionLevel;
|
||||||
|
+ boolean linearCrashOnBrokenSymlink = me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearCrashOnBrokenSymlink;
|
||||||
|
builder1.put(resourcekey1, new ChunkStorage(formatName, linearCompression, linearCrashOnBrokenSymlink, path.resolve("region"), this.dataFixer, true));
|
||||||
|
// LinearPurpur end
|
||||||
|
}
|
||||||
|
@@ -268,7 +268,7 @@ public class WorldUpgrader {
|
||||||
|
try {
|
||||||
|
// LinearPurpur start
|
||||||
|
String worldName = this.levelStorage.getLevelId();
|
||||||
|
- int linearCompression = ((org.bukkit.craftbukkit.CraftWorld) org.bukkit.Bukkit.getWorld(worldName)).getHandle().purpurConfig.regionFormatLinearCompressionLevel;
|
||||||
|
+ int linearCompression = me.earthme.luminol.config.modules.misc.RegionFormatConfig.linearCompressionLevel;
|
||||||
|
org.purpurmc.purpur.region.AbstractRegionFile regionfile = org.purpurmc.purpur.region.AbstractRegionFileFactory.getAbstractRegionFile(linearCompression, file2.toPath(), file1.toPath(), true);
|
||||||
|
// LinearPurpur end
|
||||||
|
|
||||||
19
patches/server/0062-Fix-membar-java-compile.patch
Normal file
19
patches/server/0062-Fix-membar-java-compile.patch
Normal file
@@ -0,0 +1,19 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: MrHua269 <wangxyper@163.com>
|
||||||
|
Date: Fri, 12 Jul 2024 21:53:03 +0800
|
||||||
|
Subject: [PATCH] Fix membar java compile
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
index a33a45194273cc1b4e4157a5449c7994968a3480..e7b37460587ec5b0b1b24e164713a7e19da9e40e 100644
|
||||||
|
--- a/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
+++ b/src/main/java/me/earthme/luminol/functions/GlobalServerMemoryBar.java
|
||||||
|
@@ -174,7 +174,7 @@ public class GlobalServerMemoryBar {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (memPercent <= 50){
|
||||||
|
- return BossBar.Color.valueOf(MembarConfig.memColors.getFirst());
|
||||||
|
+ return BossBar.Color.valueOf(MembarConfig.memColors.get(0));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (memPercent <= 70){
|
||||||
@@ -0,0 +1,44 @@
|
|||||||
|
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
|
||||||
|
From: bridge <ctibeheerder@gmail.com>
|
||||||
|
Date: Fri, 23 Aug 2024 22:44:57 +0200
|
||||||
|
Subject: [PATCH] Fix Concurrency issue in ServerEntity#sendDirtyEntityData()
|
||||||
|
|
||||||
|
|
||||||
|
diff --git a/src/main/java/net/minecraft/server/level/ServerEntity.java b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
index 16373e0c5ea38199fab3eb289bf2a5fcf0dd7439..da03bd8fc88a4bbc756e6335ef0adc15ee6eb97e 100644
|
||||||
|
--- a/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
+++ b/src/main/java/net/minecraft/server/level/ServerEntity.java
|
||||||
|
@@ -3,13 +3,8 @@ package net.minecraft.server.level;
|
||||||
|
import com.google.common.collect.Lists;
|
||||||
|
import com.mojang.datafixers.util.Pair;
|
||||||
|
import com.mojang.logging.LogUtils;
|
||||||
|
-import java.util.ArrayList;
|
||||||
|
-import java.util.Collection;
|
||||||
|
-import java.util.Collections;
|
||||||
|
-import java.util.Iterator;
|
||||||
|
-import java.util.List;
|
||||||
|
-import java.util.Objects;
|
||||||
|
-import java.util.Set;
|
||||||
|
+
|
||||||
|
+import java.util.*;
|
||||||
|
import java.util.function.Consumer;
|
||||||
|
import java.util.stream.Stream;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
@@ -392,7 +387,7 @@ public class ServerEntity {
|
||||||
|
}
|
||||||
|
|
||||||
|
if (this.entity instanceof LivingEntity) {
|
||||||
|
- Set<AttributeInstance> set = ((LivingEntity) this.entity).getAttributes().getDirtyAttributes();
|
||||||
|
+ Set<AttributeInstance> set = new HashSet<>(((LivingEntity) this.entity).getAttributes().getDirtyAttributes());
|
||||||
|
|
||||||
|
if (!set.isEmpty()) {
|
||||||
|
// CraftBukkit start - Send scaled max health
|
||||||
|
@@ -403,7 +398,7 @@ public class ServerEntity {
|
||||||
|
this.broadcastAndSend(new ClientboundUpdateAttributesPacket(this.entity.getId(), set));
|
||||||
|
}
|
||||||
|
|
||||||
|
- set.clear();
|
||||||
|
+ ((LivingEntity) this.entity).getAttributes().getDirtyAttributes().clear();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user