Compare commits

..

82 Commits

Author SHA1 Message Date
M2ke4U
1eba4e1a05 Merge pull request #101 from Suisuroru/ss/RemovedConfig
add RemovedConfig interface for Config-update
2025-05-18 08:15:09 +08:00
Helvetica Volubi
741b00c9be fix: fix an error in platform generate 2025-05-18 05:10:26 +08:00
Helvetica Volubi
3e73f9f9cb feat: new tripwire behavior modifier 2025-05-18 04:42:35 +08:00
Helvetica Volubi
b1e3a300a2 feat: RemovedConfig config tag 2025-05-18 03:20:35 +08:00
Helvetica Volubi
c12bf7b06c fix: fix a bug in patch [prevent tripwire dupe in end platform generate] 2025-05-17 20:56:45 +08:00
MrHua269
8673e02ca3 Fix rebranding 2025-05-17 15:55:53 +08:00
MrHua269
dc973293d6 Added some license information into patches 2025-05-17 15:55:53 +08:00
MrHua269
e2b129df71 Add getId to TickRegion api class 2025-05-17 15:55:53 +08:00
MrHua269
533a41b5c9 Make tickregion object bind with nms object 2025-05-17 15:55:53 +08:00
Helvetica Volubi
511b4fafd4 feat: add Config to fix string dupe in end platform (#62) 2025-05-17 15:55:53 +08:00
MrHua269
d5dfcfa253 Retidy patches 2025-05-17 15:55:53 +08:00
Helvetica Volubi
df72ac7a55 [ci skip]docs: update Contributing files 2025-05-17 15:55:53 +08:00
Helvetica Volubi
21440dbbce refactor: organize patches 2025-05-17 15:55:53 +08:00
Bacteriawa
a99b5fd8c6 Faster chunk serialization 2025-05-17 15:55:53 +08:00
Helvetica Volubi
649473678e refactor: organize patches 2025-05-17 15:55:53 +08:00
Helvetica Volubi
e79afe47dd fix: creative item fix
it fix Leaves#489[https://github.com/LeavesMC/Leaves/issues/489]
2025-05-17 15:55:53 +08:00
xiaoxijun
05795e53d7 neaten ci 2025-05-17 15:55:53 +08:00
Bacteriawa
730bc2ea62 Fix maven repo 2025-05-17 15:55:53 +08:00
Helvetica Volubi
8d4d923310 refactor: fix an error in speed-fix 2025-05-17 15:55:53 +08:00
Helvetica Volubi
9b42664025 refactor: use skip tick and compensate tick to fix some bugs 2025-05-17 15:55:53 +08:00
Helvetica Volubi
3d5fe06a3c [ci skip]note: fix up one note error 2025-05-17 15:55:53 +08:00
MrHua269
982e82de9e Tidy patches 2025-05-17 15:55:53 +08:00
Helvetica Volubi
53e4333bfc fix: rebuild Entity portal-teleport speed fix 2025-05-17 15:55:53 +08:00
Helvetica Volubi
e042d98762 ci: always use ncipollo/release-action@v1-latest to release 2025-05-17 15:55:53 +08:00
MrHua269
521c2b9cbd Run generateDevelopmentBundle 2025-05-17 15:55:53 +08:00
MrHua269
978e8a10ca Fix syntax error 2025-05-17 15:55:53 +08:00
MrHua269
7b2885fd8d Fix npe while running tasks without private mvn repo variables 2025-05-17 15:55:53 +08:00
MrHua269
3e0571fc52 Added private maven repo for some testing 2025-05-17 15:55:53 +08:00
MrHua269
9713a09905 Fix incorrectly synced data after player teleportation
Fixes:https://github.com/PaperMC/Folia/issues/357
2025-05-17 15:55:53 +08:00
Helvetica Volubi
9d2d3aff72 Add config to enable tick command (#94)
* feat: tick command support

* feat: use exp-config to enable tick command
2025-05-17 15:55:53 +08:00
MrHua269
80e438bf96 Tidy patches 2025-05-17 15:55:52 +08:00
Helvetica Volubi
45ce5b56bd MC-274911 Full revert & Cross Region Damage trace (#92)
* fix: Cross Region Damage trace

* fix: fix patch - revert raid

* refactor: pull code to rebuild patch

* note: rewrite raid-revert note

* feat: revert spawn position logic

[revert spawn position logic] reverted MC-274911, so old [MC-274911 revert] is removed, and config extended old revert_274911

* refactor: simplify code

* refactor: rewritten in thread-safe way

* fix: fix error print out

* refactor: rebuild patch

* refactor: remove import & fixup LOGGER print out

* refactor: move rebuild effect affect to Cross Region

* feat: use config to set if [Cross Region Damage Trace] is enabled
2025-05-17 15:55:52 +08:00
MrHua269
cf129162ef Tidy patches 2025-05-17 15:55:52 +08:00
Helvetica Volubi
a3b9c347f7 refactor: better log print 2025-05-17 15:55:52 +08:00
Helvetica Volubi
f9d700eca4 feat: origin print complete 2025-05-17 15:55:52 +08:00
Helvetica Volubi
760da7d7be bugfix: fix crash when execute setblock with an illegal nbt 2025-05-17 15:55:52 +08:00
MrHua269
af796c4b03 Tidy patches 2025-05-17 15:55:52 +08:00
Helvetica Volubi
1c27c1ce38 EndGateway Portal Passengers Fix (#90)
* feat: EndGateway Portal Passengers Fix

* refactor: delete some debug information

* refactor: merge patches to [Portal behavior modifiers]

* refactor: rebuild patch
2025-05-17 15:55:52 +08:00
MrHua269
7f297a4d20 Fix off tickregion sync teleport & tidy patches
Fixes: https://github.com/PaperMC/Folia/issues/329
2025-05-17 15:55:52 +08:00
Helvetica Volubi
923233be6f patch: fixup a patch's name 2025-05-17 15:55:52 +08:00
Helvetica Volubi
5d90f68192 note: fixup note 2025-05-17 15:55:52 +08:00
Helvetica Volubi
f835ecf227 feat: add flag to process async failed 2025-05-17 15:55:52 +08:00
Helvetica Volubi
9cb931e691 fix: Entity portal-teleport speed fix 2025-05-17 15:55:52 +08:00
Helvetica Volubi
e7b3a713b1 fixup note 2025-05-17 15:55:52 +08:00
Helvetica Volubi
ae32e89dbb ci: update build_1.21.4.yml
fix an error in a file name
2025-05-17 15:55:52 +08:00
Helvetica Volubi
5af12cd66f feat: add afterPortalLogic to process some logics 2025-05-17 15:55:52 +08:00
Helvetica Volubi
8611086dfc fix: TNT Nether Portal break portal fix 2025-05-17 15:55:52 +08:00
Helvetica Volubi
da39a79d17 remove: move 0044 to todo list 2025-05-17 15:55:52 +08:00
Helvetica Volubi
acd1ce5ded Leaves Fix SculkCatalyst exp skip (Leaves#471) 2025-05-17 15:55:52 +08:00
Helvetica Volubi
efb26e7554 note: use Correct player respawn place as tag 2025-05-17 15:55:52 +08:00
Helvetica Volubi
519f46ab01 fix: Player respawn in correct place 2025-05-17 15:55:52 +08:00
Bacteriawa
1f86bd0656 Add Lithium: fast util & Lithium: Skip unnecessary calculations if player is not flying or swing 2025-05-17 15:55:52 +08:00
Helvetica Volubi
97c2703fb4 remove: remove 0024 2025-05-17 15:55:52 +08:00
Helvetica Volubi
bbb0933042 Prefer Leaves#455 to luminol (#77)
* feat: prefer Leaves#452 to luminol

* feat: rename Files

* rename: fixup a file name
2025-05-17 15:55:52 +08:00
Bacteriawa
177bb8eed2 Updated Upstream (Folia) 2025-05-17 15:55:52 +08:00
Helvetica Volubi
cce7e23ae1 feat: rewrite MC-274911 revert (tick-mode) 2025-05-17 15:55:52 +08:00
Helvetica Volubi
ac008463d3 feat: try revert MC-274911 2025-05-17 15:55:52 +08:00
Helvetica Volubi
0b48acc022 tip: add a tip in new feat 2025-05-17 15:55:52 +08:00
Helvetica Volubi
fa59901792 feat: disable raid self check config
--Function from leaves
2025-05-17 15:55:52 +08:00
Helvetica Volubi
ec7f6d1e23 description: fix up description 2025-05-17 15:55:52 +08:00
Helvetica Volubi
db56fca556 feat: prefer #75 to hardfork-ver 2025-05-17 15:55:52 +08:00
MrHua269
0a1e7a509f Fully removed player teleport event and entity teleport event call & Rebase patches 2025-05-17 15:55:51 +08:00
MrHua269
6e7d7f9aad Add: Leaf Smart sort entities in NearestLivingEntitySensor 2025-05-17 15:55:51 +08:00
Helvetica Volubi
ef810b9f95 fix: fix up number 2025-05-17 15:55:51 +08:00
Helvetica Volubi
7c1818ed78 del: delete patch 0022(MrHua269) 2025-05-17 15:55:51 +08:00
Helvetica Volubi
692d40a89c feat: selected raid update 2025-05-17 15:55:51 +08:00
Bacteriawa
c0d4f434ce Updated Upstream (Folia) 2025-05-17 15:55:51 +08:00
ShintoKosei
c4d87f3d90 [ci skip] Enable dependabot 2025-05-17 15:55:51 +08:00
Dreeam
54fbeb2e5e [ci skip] Only release paperclip jar 2025-05-17 15:55:51 +08:00
MrHua269
a81e970785 Revert RegionizedTaskQueue referent counter changes 2025-05-17 15:55:51 +08:00
Kercute
1a8c988db1 Add force the data command to be enabled config 2025-05-17 15:55:51 +08:00
Creeam
6673fb02fd [ci skip] Update CONTRIBUTING_EN.md 2025-05-17 15:55:51 +08:00
Creeam
7bfb5ac414 [ci skip] Update EN contributing guide 2025-05-17 15:55:51 +08:00
Helvetica Volubi
b4acb43e85 [ci skip] Update CONTRIBUTING guide (#57)
* misc: fixup count of patch

* ci: update ncipollo/release-action to 1.16.0

* docs: update CONTRIBUTING.md

* docs: update CONTRIBUTING files

* docs: update CONTRIBUTING files

* Update CONTRIBUTING.md

* docs: sync zh_cn's update to en

* docs: correct grammar errors

* docs: fixup jdk version to 21

---------

Co-authored-by: xiaoxijun <A3167717663@hotmail.com>
2025-05-17 15:55:51 +08:00
Suisuroru
65516ac3c3 feat(config): optimize configuration description of raid config 2025-05-17 15:55:51 +08:00
Suisuroru
12b5752c2d feat: Merge Revert-raid-changes of Leaves to Luminol 2025-05-17 15:55:51 +08:00
HaHaWTH
cbf59b889c Updated Upstream (Folia) 2025-05-17 15:55:51 +08:00
MrHua269
58e9f3fd5f Do not search the block out of current region & Ported some micro optimizations from Leaf
Probably fixes(Do not search the block out of current region): https://github.com/PaperMC/Folia/issues/343
2025-05-17 15:55:50 +08:00
Kercute
d0d4292649 0019-Skip-collision-check-if-the-block-is-not-belong-to-c.patch 2025-05-17 15:55:29 +08:00
Kercute
3d6cc305cd Updated Upstream (Folia) 2025-05-17 15:55:29 +08:00
MrHua269
e5005425f7 [ci skip] Use --global flag to configure git 2025-05-17 15:55:29 +08:00
MrHua269
35cd2efa8e Add experiment config for entity to clean memory value which is not belong to current tickregion & Fix a series issue around entity memory typed GlobalPos
Probably fixes: https://github.com/PaperMC/Folia/issues/203
2025-05-17 15:55:28 +08:00
8 changed files with 217 additions and 88 deletions

View File

@@ -5,15 +5,19 @@ Subject: [PATCH] Rebrand to Luminol
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfo.java b/src/main/java/io/papermc/paper/ServerBuildInfo.java
index 652ff54e7c50412503725d628bfe72ed03059790..ee163b9fa8f441aa4b3e2309f33e8f932dfc02d7 100644
index 652ff54e7c50412503725d628bfe72ed03059790..db5e2f10278c20286779362cfdfadb2f42c724e0 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfo.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfo.java
@@ -19,6 +19,13 @@ public interface ServerBuildInfo {
@@ -19,6 +19,17 @@ public interface ServerBuildInfo {
*/
Key BRAND_PAPER_ID = Key.key("papermc", "paper");
+ // Luminol start
+ /**
+ * The brand id for folia
+ */
+ Key BRAND_FOLIA_ID = Key.key("papermc", "folia");
+ /**
+ * The brand id for Luminol.
+ */
+ Key BRAND_LUMINOL_ID = Key.key("luminolmc", "luminol");

View File

@@ -1,79 +0,0 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: HaHaWTH <102713261+HaHaWTH@users.noreply.github.com>
Date: Mon, 24 Feb 2025 06:00:00 -0800
Subject: [PATCH] Add config for tripwire dupe
diff --git a/net/minecraft/world/level/block/TripWireHookBlock.java b/net/minecraft/world/level/block/TripWireHookBlock.java
index 9aace993c6c18f1a50610e4766225485984b8167..07ffe289b9556b45a9ef7db5357d85b14fe23feb 100644
--- a/net/minecraft/world/level/block/TripWireHookBlock.java
+++ b/net/minecraft/world/level/block/TripWireHookBlock.java
@@ -215,7 +215,7 @@ public class TripWireHookBlock extends Block {
BlockState blockState2 = blockStates[i2];
if (blockState2 != null) {
BlockState blockState3 = level.getBlockState(blockPos1);
- if (blockState3.is(Blocks.TRIPWIRE) || blockState3.is(Blocks.TRIPWIRE_HOOK)) {
+ if (me.earthme.luminol.config.modules.misc.AllowTripwireDupe.enabled || blockState3.is(Blocks.TRIPWIRE) || blockState3.is(Blocks.TRIPWIRE_HOOK)) {
if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates || !blockState3.is(Blocks.TRIPWIRE)) level.setBlock(blockPos1, blockState2.trySetValue(ATTACHED, Boolean.valueOf(flag2)), 3); // Paper - prevent tripwire from updating
}
}
diff --git a/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java b/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
index f96fc1391167dea48cac1caa464b9026657df89a..c7a46407f4f0915161f26e87241a806bd38145b1 100644
--- a/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
+++ b/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
@@ -27,6 +27,9 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
// CraftBukkit end
BlockPos.MutableBlockPos mutableBlockPos = pos.mutable();
+ // Luminol start - prevent tripwire dupe in end platform generate
+ java.util.List<BlockPos> blockList1 = new java.util.ArrayList<>();
+ java.util.List<BlockPos> blockList2 = new java.util.ArrayList<>();
for (int i = -2; i <= 2; i++) {
for (int i1 = -2; i1 <= 2; i1++) {
for (int i2 = -1; i2 < 3; i2++) {
@@ -34,7 +37,23 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
Block block = i2 == -1 ? Blocks.OBSIDIAN : Blocks.AIR;
// CraftBukkit start
if (!blockList.getBlockState(blockPos).is(block)) {
- if (dropBlocks) {
+ boolean flag = false;
+ if (dropBlocks && me.earthme.luminol.config.modules.misc.AllowTripwireDupe.preventPlatformBreakString) {
+ net.minecraft.world.level.block.state.BlockState state = level.getBlockState(blockPos);
+ if (state.is(Blocks.TRIPWIRE)) {
+ if (state.getValue(net.minecraft.world.level.block.TripWireBlock.DISARMED)) {
+ flag = true;
+ blockList2.add(blockPos.immutable());
+ }
+ if (!flag) {
+ flag = checkString(blockList2, blockPos);
+ }
+ }
+ }
+ if (flag) {
+ blockList1.add(blockPos.immutable());
+ } else if (dropBlocks) {
+ // Luminol end - prevent tripwire dupe in end platform generate
blockList.destroyBlock(blockPos, true, null);
}
@@ -56,9 +75,19 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
// SPIGOT-7856: End platform not dropping items after replacing blocks
if (dropBlocks) {
- blockList.getList().forEach((state) -> level.destroyBlock(state.getPosition(), true, null));
+ blockList.getList().forEach((state) -> level.destroyBlock(state.getPosition(), !blockList1.contains(state.getPosition()), null)); // Luminol - prevent tripwire dupe in end platform generate
}
blockList.updateList();
// CraftBukkit end
}
+
+ // Luminol start - prevent tripwire dupe in end platform generate
+ private static boolean checkString(java.util.List<BlockPos> blockList, BlockPos blockPos) {
+ for (BlockPos pos : blockList) {
+ if (pos.getY() != blockPos.getY()) continue;
+ if (pos.getX() == blockPos.getX() || pos.getZ() == blockPos.getZ()) return true;
+ }
+ return false;
+ }
+ // Luminol end - prevent tripwire dupe in end platform generate
}

View File

@@ -0,0 +1,126 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: Helvetica Volubi <suisuroru@blue-millennium.fun>
Date: Sun, 18 May 2025 03:48:53 +0800
Subject: [PATCH] Add config to modify tripwire behavior
diff --git a/net/minecraft/world/level/block/TripWireHookBlock.java b/net/minecraft/world/level/block/TripWireHookBlock.java
index 9aace993c6c18f1a50610e4766225485984b8167..419c1c7e14691a472b70ed548ecb928cb289b939 100644
--- a/net/minecraft/world/level/block/TripWireHookBlock.java
+++ b/net/minecraft/world/level/block/TripWireHookBlock.java
@@ -214,10 +214,18 @@ public class TripWireHookBlock extends Block {
BlockPos blockPos1 = pos.relative(direction, i2);
BlockState blockState2 = blockStates[i2];
if (blockState2 != null) {
- BlockState blockState3 = level.getBlockState(blockPos1);
- if (blockState3.is(Blocks.TRIPWIRE) || blockState3.is(Blocks.TRIPWIRE_HOOK)) {
- if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates || !blockState3.is(Blocks.TRIPWIRE)) level.setBlock(blockPos1, blockState2.trySetValue(ATTACHED, Boolean.valueOf(flag2)), 3); // Paper - prevent tripwire from updating
+ // Luminol start - tripwire and tripwireHook dupe
+ if (me.earthme.luminol.config.modules.misc.AllowTripwireDupe.enabled) {
+ level.setBlock(blockPos1, blockState2.trySetValue(ATTACHED, flag2), 3);
+ level.getBlockState(blockPos1);
+ } else {
+ BlockState blockState3 = level.getBlockState(blockPos1);
+ if (blockState3.is(Blocks.TRIPWIRE) || blockState3.is(Blocks.TRIPWIRE_HOOK)) {
+ if (!io.papermc.paper.configuration.GlobalConfiguration.get().blockUpdates.disableTripwireUpdates || !blockState3.is(Blocks.TRIPWIRE))
+ level.setBlock(blockPos1, blockState2.trySetValue(ATTACHED, Boolean.valueOf(flag2)), 3); // Paper - prevent tripwire from updating
+ }
}
+ // Luminol end - tripwire and tripwireHook dupe
}
}
}
diff --git a/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java b/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
index f96fc1391167dea48cac1caa464b9026657df89a..eb869e574cee0d206684d5585c664a5f1d01ab65 100644
--- a/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
+++ b/net/minecraft/world/level/levelgen/feature/EndPlatformFeature.java
@@ -27,15 +27,43 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
// CraftBukkit end
BlockPos.MutableBlockPos mutableBlockPos = pos.mutable();
+ // Luminol start - tripwire behavior modifier
+ java.util.List<BlockPos> blockList1 = new java.util.ArrayList<>();
+ java.util.List<BlockPos> blockList2 = new java.util.ArrayList<>();
+ boolean flag21 = !java.util.Objects.equals(me.earthme.luminol.config.modules.misc.AllowTripwireDupe.behaviorMode, "VANILLA20")
+ && !java.util.Objects.equals(me.earthme.luminol.config.modules.misc.AllowTripwireDupe.behaviorMode, "MIXED");
for (int i = -2; i <= 2; i++) {
for (int i1 = -2; i1 <= 2; i1++) {
for (int i2 = -1; i2 < 3; i2++) {
BlockPos blockPos = mutableBlockPos.set(pos).move(i1, i2, i);
Block block = i2 == -1 ? Blocks.OBSIDIAN : Blocks.AIR;
- // CraftBukkit start
if (!blockList.getBlockState(blockPos).is(block)) {
if (dropBlocks) {
- blockList.destroyBlock(blockPos, true, null);
+ boolean flag = false;
+ if (me.earthme.luminol.config.modules.misc.AllowTripwireDupe.enabled) {
+ switch (me.earthme.luminol.config.modules.misc.AllowTripwireDupe.behaviorMode) {
+ case "VANILLA20": {
+ flag = true;
+ }
+ case "MIXED": {
+ net.minecraft.world.level.block.state.BlockState state = level.getBlockState(blockPos);
+ if (state.is(Blocks.TRIPWIRE)) {
+ if (state.getValue(net.minecraft.world.level.block.TripWireBlock.DISARMED)) {
+ flag = true;
+ blockList2.add(blockPos.immutable());
+ }
+ if (!flag) {
+ flag = checkString(blockList2, blockPos);
+ }
+ }
+ }
+ default: {
+
+ } // Luminol - 1.21 Logic - default empty
+ }
+ }
+ if (flag) blockList1.add(blockPos.immutable());
+ else blockList.destroyBlock(blockPos, true, null);
}
blockList.setBlock(blockPos, block.defaultBlockState(), 3);
@@ -54,11 +82,39 @@ public class EndPlatformFeature extends Feature<NoneFeatureConfiguration> {
if (portalEvent.isCancelled()) return;
}
- // SPIGOT-7856: End platform not dropping items after replacing blocks
- if (dropBlocks) {
- blockList.getList().forEach((state) -> level.destroyBlock(state.getPosition(), true, null));
+ if (flag21 && !me.earthme.luminol.config.modules.misc.AllowTripwireDupe.enabled) {
+ // Luminol start - When updated replace it with newer code
+ if (dropBlocks) {
+ java.util.function.Consumer<? super org.bukkit.craftbukkit.block.CraftBlockState> beforeRun = state -> level.destroyBlock(state.getPosition(), !blockList1.contains(state.getPosition()), null);
+ java.util.function.Predicate<? super org.bukkit.block.BlockState> filter = $ -> true;
+ for (org.bukkit.craftbukkit.block.CraftBlockState state : blockList.getList()) {
+ if (filter.test(state)) {
+ beforeRun.accept(state);
+ if (state.isPlaced()) {
+ state.getWorldHandle().setBlock(state.getPosition(), state.getHandle(), state.getFlag());
+ }
+ }
+ }
+ } else {
+ blockList.updateList();
+ }
+ // Luminol end - When updated replace it with newer code
+ } else {
+ // SPIGOT-7856: End platform not dropping items after replacing blocks
+ if (dropBlocks) {
+ blockList.getList().forEach((state) -> level.destroyBlock(state.getPosition(), !blockList1.contains(state.getPosition()), null)); // Luminol - prevent tripwire dupe in end platform generate
+ }
+ blockList.updateList();
}
- blockList.updateList();
// CraftBukkit end
}
+
+ private static boolean checkString(java.util.List<BlockPos> blockList, BlockPos blockPos) {
+ for (BlockPos pos : blockList) {
+ if (pos.getY() != blockPos.getY()) continue;
+ if (pos.getX() == blockPos.getX() || pos.getZ() == blockPos.getZ()) return true;
+ }
+ return false;
+ }
+ // Luminol end - tripwire behavior modifier
}

View File

@@ -63,7 +63,7 @@ index 29bd788ae8bc61c1e62a4f84b9e259931a7041ce..1676ac5e6c8369836bf719f338603fbb
} else {
final Optional<String> gitBranch = build.gitBranch();
diff --git a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
index e741201fdbea0dbbc0e42313ebd33368014c9dc4..673a81734a0903a0790f3007772642d3d9a044cc 100644
index e741201fdbea0dbbc0e42313ebd33368014c9dc4..e3c5f4c31f084294a59830f3e764921433dd80d5 100644
--- a/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
+++ b/src/main/java/io/papermc/paper/ServerBuildInfoImpl.java
@@ -31,6 +31,7 @@ public record ServerBuildInfoImpl(
@@ -91,7 +91,7 @@ index e741201fdbea0dbbc0e42313ebd33368014c9dc4..673a81734a0903a0790f3007772642d3
@Override
public boolean isBrandCompatible(final @NotNull Key brandId) {
- return brandId.equals(this.brandId);
+ return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID); // Luminol
+ return brandId.equals(this.brandId) || brandId.equals(BRAND_PAPER_ID) || brandId.equals(BRAND_FOLIA_ID); // Luminol
}
@Override

View File

@@ -0,0 +1,10 @@
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/BasicTransferLogic.java
@@ -1,0 +_,7 @@
+package me.earthme.luminol.config;
+
+public class BasicTransferLogic {
+ public Object transform(Object obj) {
+ return obj;
+ }
+}

View File

@@ -1,8 +1,9 @@
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/LuminolConfig.java
@@ -1,0 +_,226 @@
@@ -1,0 +_,268 @@
+package me.earthme.luminol.config;
+
+import com.electronwill.nightconfig.core.UnmodifiableConfig;
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
+import io.papermc.paper.threadedregions.RegionizedServer;
+import me.earthme.luminol.commands.LuminolConfigCommand;
@@ -128,6 +129,33 @@
+ final Object currentValue = field.get(null);
+
+ if (!configFileInstance.contains(fullConfigKeyName)){
+ for (RemovedConfig removedConfig : field.getAnnotationsByType(RemovedConfig.class)) {
+ final String oldConfigKeyName = String.join(".", removedConfig.category()) + "." + removedConfig.name();
+ Object oldValue = configFileInstance.get(oldConfigKeyName);
+ if (oldValue != null) {
+ boolean success = true;
+ if (removedConfig.transfer()) {
+ try {
+ Object oldValueTransferred = ((BasicTransferLogic)removedConfig.transferLogic().getDeclaredConstructor().newInstance()).transform(oldValue);
+ configFileInstance.add(fullConfigKeyName, oldValueTransferred);
+ } catch (Exception e) {
+ success = false;
+ logger.error("Failed to transfer removed config {}!", removedConfig.name());
+ }
+ }
+
+ if (success) {
+ removeConfig(oldConfigKeyName, removedConfig.category());
+ }
+ final String comments = configInfo.comments();
+
+ if (!comments.isBlank()){
+ configFileInstance.setComment(fullConfigKeyName,comments);
+ }
+ if (configFileInstance.get(fullConfigKeyName) != null) break;
+ }
+ }
+ if (configFileInstance.get(fullConfigKeyName) != null) continue;
+ if (currentValue == null){
+ throw new UnsupportedOperationException("Config " + singleConfigModule.getBaseName() + "tried to add an null default value!");
+ }
@@ -148,6 +176,20 @@
+ }
+ }
+
+ public static void removeConfig(String name,String[] keys) {
+ configFileInstance.remove(name);
+ if (configFileInstance.get(String.join(".", keys)) instanceof UnmodifiableConfig) {
+ removeConfig(keys);
+ }
+ }
+
+ public static void removeConfig(String[] keys) {
+ configFileInstance.remove(String.join(".", keys));
+ if (configFileInstance.get(String.join(".", Arrays.copyOfRange(keys, 1, keys.length))) instanceof UnmodifiableConfig) {
+ removeConfig(Arrays.copyOfRange(keys, 1, keys.length));
+ }
+ }
+
+ public static @NotNull Set<Class<?>> getClasses(String pack) {
+ Set<Class<?>> classes = new LinkedHashSet<>();
+ String packageDirName = pack.replace('.', '/');

View File

@@ -0,0 +1,23 @@
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/RemovedConfig.java
@@ -1,0 +_,20 @@
+package me.earthme.luminol.config;
+
+import java.lang.annotation.*;
+
+@Retention(RetentionPolicy.RUNTIME)
+@Repeatable(RemovedConfig.List.class)
+public @interface RemovedConfig {
+ String name() default "";
+
+ String[] category() default "";
+
+ boolean transfer() default true;
+
+ Class<?> transferLogic() default BasicTransferLogic.class;
+
+ @Retention(RetentionPolicy.RUNTIME)
+ @interface List {
+ RemovedConfig[] value();
+ }
+}

View File

@@ -1,6 +1,6 @@
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/misc/AllowTripwireDupe.java
@@ -1,0 +_,24 @@
@@ -1,0 +_,27 @@
+package me.earthme.luminol.config.modules.misc;
+
+import me.earthme.luminol.config.ConfigInfo;
@@ -10,10 +10,13 @@
+public class AllowTripwireDupe implements IConfigModule {
+ @ConfigInfo(baseName = "enabled")
+ public static boolean enabled = false;
+ @ConfigInfo(baseName = "prevent_platform_break_string", comments =
+ @ConfigInfo(baseName = "behavior-mode", comments =
+ """
+ Prevent string drop when platform generate""")
+ public static boolean preventPlatformBreakString = false;
+ Allowed Value:
+ VANILLA20
+ VANILLA21
+ MIXED""")
+ public static String behaviorMode = "VANILLA21";
+
+ @Override
+ public EnumConfigCategory getCategory() {