Compare commits

...

5 Commits

Author SHA1 Message Date
MrHua269
dc4a73f92b Some events for threaded regions 2024-02-09 03:34:58 +00:00
MrHua269
785325c5e2 Leaves carpet protocol support 2024-02-08 11:57:39 +00:00
MrHua269
f1f23b48a9 Added notice 2024-02-08 03:59:56 +00:00
MrHua269
1e7ec58c46 Removed debug method in LuminolConfig 2024-02-08 01:14:44 +00:00
MrHua269
a5b1d1c1c4 Correct confusable config key names and clean patches 2024-02-08 00:49:25 +00:00
20 changed files with 1628 additions and 1251 deletions

View File

@@ -48,9 +48,11 @@ For maven
QQ Group: 368632360
## 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.
## Notice
**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
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>
## BStats
![bStats](https://bstats.org/signatures/server-implementation/Luminol.svg "bStats")

View File

@@ -0,0 +1,78 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Fri, 9 Feb 2024 03:28:48 +0000
Subject: [PATCH] Threaded region remove and create event
diff --git a/src/main/java/me/earthme/luminol/api/events/TickRegionCreateEvent.java b/src/main/java/me/earthme/luminol/api/events/TickRegionCreateEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..9f842aeb33e658f3db540b6195f848d2a56ce14f
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/api/events/TickRegionCreateEvent.java
@@ -0,0 +1,32 @@
+package me.earthme.luminol.api.events;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * This event was called when a new threaded region was created.When the event called,it means this region was already added to the region list
+ * Notice: It may be called when splitting or merging regions
+ */
+public class TickRegionCreateEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private final long id;
+
+ public TickRegionCreateEvent(long id) {
+ this.id = id;
+ }
+
+ /**
+ * Get the id of the threaded region which was created
+ * @return The id of the threaded region
+ */
+ public long getId() {
+ return this.id;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/src/main/java/me/earthme/luminol/api/events/TickRegionRemoveEvent.java b/src/main/java/me/earthme/luminol/api/events/TickRegionRemoveEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..aa3d3868f9d0c3353380960db36ee60a6b4aeb03
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/api/events/TickRegionRemoveEvent.java
@@ -0,0 +1,28 @@
+package me.earthme.luminol.api.events;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * This event was called when a new threaded region was removed.When the event called,it means this region was already removed from the region list
+ * Notice: It may be called when splitting or merging regions
+ */
+public class TickRegionRemoveEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private final long id;
+
+ public TickRegionRemoveEvent(long id) {
+ this.id = id;
+ }
+
+ public long getId() {
+ return this.id;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+}

View File

@@ -0,0 +1,101 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Fri, 9 Feb 2024 03:32:05 +0000
Subject: [PATCH] Threaded region start tick and finished tick event
diff --git a/src/main/java/me/earthme/luminol/api/events/TickRegionFinishedTickEvent.java b/src/main/java/me/earthme/luminol/api/events/TickRegionFinishedTickEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..29b98728d3ca4a439c6b3333cd123c0e0b8a2846
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/api/events/TickRegionFinishedTickEvent.java
@@ -0,0 +1,42 @@
+package me.earthme.luminol.api.events;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Called when a region finished its tick task.
+ */
+public class TickRegionFinishedTickEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+
+ private final long currTime;
+ private final long regionId;
+
+ public TickRegionFinishedTickEvent(long currTime, long regionId) {
+ this.currTime = currTime;
+ this.regionId = regionId;
+ }
+
+ /**
+ * Get the time of tick end
+ * @return The time of tick end in nanoseconds
+ */
+ public long getFinishedTime() {
+ return this.currTime;
+ }
+
+ /**
+ * Get the id of current region
+ * Notice: The id of global region is -1 in this event
+ * @return The id of current region
+ */
+ public long getRegionId() {
+ return this.regionId;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+}
diff --git a/src/main/java/me/earthme/luminol/api/events/TickRegionStartTickEvent.java b/src/main/java/me/earthme/luminol/api/events/TickRegionStartTickEvent.java
new file mode 100644
index 0000000000000000000000000000000000000000..1f3cba43ebd873965c24b96ca116abfb149ab4e6
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/api/events/TickRegionStartTickEvent.java
@@ -0,0 +1,41 @@
+package me.earthme.luminol.api.events;
+
+import org.bukkit.event.Event;
+import org.bukkit.event.HandlerList;
+import org.jetbrains.annotations.NotNull;
+
+/**
+ * Called when a tick was started.
+ */
+public class TickRegionStartTickEvent extends Event {
+ private static final HandlerList handlers = new HandlerList();
+ private final long currTime;
+ private final long regionId;
+
+ public TickRegionStartTickEvent(long currTime, long regionId) {
+ this.currTime = currTime;
+ this.regionId = regionId;
+ }
+
+ /**
+ * Get the id of current region
+ * Notice: The id of global region is -1 in this event
+ * @return The id of current region
+ */
+ public long getRegionId() {
+ return this.regionId;
+ }
+
+ /**
+ * Get the time of tick start
+ * @return The time of tick start in nanoseconds
+ */
+ public long getStartTime(){
+ return this.currTime;
+ }
+
+ @Override
+ public @NotNull HandlerList getHandlers() {
+ return handlers;
+ }
+}

File diff suppressed because it is too large Load Diff

View File

@@ -101,10 +101,10 @@ index 0000000000000000000000000000000000000000..9f6896711907ac30fe0c00130207b970
+}
diff --git a/src/main/java/me/earthme/luminol/config/LuminolConfig.java b/src/main/java/me/earthme/luminol/config/LuminolConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..caeb3249c2d99cc920f7a3e6380a263a52b3b8a6
index 0000000000000000000000000000000000000000..7dc4b97c396aab1128ad4761b3f3ac6ee9d07205
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/LuminolConfig.java
@@ -0,0 +1,184 @@
@@ -0,0 +1,183 @@
+package me.earthme.luminol.config;
+
+import com.electronwill.nightconfig.core.file.CommentedFileConfig;
@@ -147,7 +147,6 @@ index 0000000000000000000000000000000000000000..caeb3249c2d99cc920f7a3e6380a263a
+ try {
+ instanceAllModule();
+ loadAllModules();
+ System.out.println(allInstanced.size());
+ }catch (Exception e){
+ e.printStackTrace();
+ }

View File

@@ -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
new file mode 100644
index 0000000000000000000000000000000000000000..ea10d8d38ecdb791b7b2a748496791c04eff5997
index 0000000000000000000000000000000000000000..cb2fef0d808e2fc2950eded5b39651c66fff9103
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/UnsafeTeleportationConfig.java
@@ -0,0 +1,20 @@
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..ea10d8d38ecdb791b7b2a748496791c0
+
+ @Override
+ public String getBaseName() {
+ return "unsafe_teleportation";
+ return "allow_unsafe_teleportation";
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Add config for sand duping
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/SandDupingFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/SandDupingFixConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..cacb1f51a28eaa260aedba8d5b541475605e36ea
index 0000000000000000000000000000000000000000..7561dfd23724fc3f2cc580b2b53fa1469e3d098e
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/SandDupingFixConfig.java
@@ -0,0 +1,20 @@
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..cacb1f51a28eaa260aedba8d5b541475
+
+ @Override
+ public String getBaseName() {
+ return "sand_duping";
+ return "allow_sand_duping";
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java b/src/main/java/net/minecraft/world/entity/item/FallingBlockEntity.java

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Add config for void trading
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/VoidTradingFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/VoidTradingFixConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..a72f3a6cf1580f901b12417cac10303090a3370f
index 0000000000000000000000000000000000000000..22f3c6c70e4287f1bdd0b18f87f57efeb20140a2
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/VoidTradingFixConfig.java
@@ -0,0 +1,20 @@
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..a72f3a6cf1580f901b12417cac103030
+
+ @Override
+ public String getBaseName() {
+ return "void_trading";
+ return "allow_void_trading";
+ }
+}
diff --git a/src/main/java/net/minecraft/server/level/ServerLevel.java b/src/main/java/net/minecraft/server/level/ServerLevel.java

View File

@@ -6,7 +6,7 @@ Subject: [PATCH] Add config for incorrect tripwire updating fixing
diff --git a/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java b/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..8779c9fba1990c62e010387e32d1923410a043ed
index 0000000000000000000000000000000000000000..79ce93a1e97f176c7b0e5b00d7f0880f0d157d03
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/IncorrectTripwireFixConfig.java
@@ -0,0 +1,20 @@
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..8779c9fba1990c62e010387e32d19234
+
+ @Override
+ public String getBaseName() {
+ return "update_incorrect_trip_wire";
+ return "allow_update_incorrect_trip_wire";
+ }
+}
diff --git a/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java b/src/main/java/net/minecraft/world/level/block/TripWireHookBlock.java

View File

@@ -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
new file mode 100644
index 0000000000000000000000000000000000000000..8ba66e737d36157b3797c308cb9fca804e396915
index 0000000000000000000000000000000000000000..ee247014c9a2ec1bbb7f25ef41da110a270154d6
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/fixes/VanillaRandomSourceConfig.java
@@ -0,0 +1,20 @@
@@ -27,7 +27,7 @@ index 0000000000000000000000000000000000000000..8ba66e737d36157b3797c308cb9fca80
+
+ @Override
+ public String getBaseName() {
+ return "vanilla_random_source";
+ return "use_vanilla_random_source";
+ }
+}
diff --git a/src/main/java/net/minecraft/world/entity/Entity.java b/src/main/java/net/minecraft/world/entity/Entity.java

View File

@@ -0,0 +1,150 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Thu, 8 Feb 2024 11:57:18 +0000
Subject: [PATCH] Leaves carpet protocol support
diff --git a/src/main/java/me/earthme/luminol/config/modules/gameplay/LeavesProtocolSupportConfig.java b/src/main/java/me/earthme/luminol/config/modules/gameplay/LeavesProtocolSupportConfig.java
new file mode 100644
index 0000000000000000000000000000000000000000..80d57d6262510cf7c6446e46cdd16d05461e9484
--- /dev/null
+++ b/src/main/java/me/earthme/luminol/config/modules/gameplay/LeavesProtocolSupportConfig.java
@@ -0,0 +1,20 @@
+package me.earthme.luminol.config.modules.gameplay;
+
+import me.earthme.luminol.config.ConfigInfo;
+import me.earthme.luminol.config.EnumConfigCategory;
+import me.earthme.luminol.config.IConfigModule;
+
+public class LeavesProtocolSupportConfig implements IConfigModule {
+ @ConfigInfo(baseName = "enabled")
+ public static boolean enabled = false;
+
+ @Override
+ public EnumConfigCategory getCategory() {
+ return EnumConfigCategory.GAMEPLAY;
+ }
+
+ @Override
+ public String getBaseName() {
+ return "leaves_carpet_protocol";
+ }
+}
diff --git a/src/main/java/top/leavesmc/leaves/protocol/CarpetServerProtocol.java b/src/main/java/top/leavesmc/leaves/protocol/CarpetServerProtocol.java
new file mode 100644
index 0000000000000000000000000000000000000000..2af49a86bf2a8bb65073c8ce088e875224916fd8
--- /dev/null
+++ b/src/main/java/top/leavesmc/leaves/protocol/CarpetServerProtocol.java
@@ -0,0 +1,112 @@
+package top.leavesmc.leaves.protocol;
+
+import net.minecraft.nbt.CompoundTag;
+import net.minecraft.network.FriendlyByteBuf;
+import net.minecraft.network.protocol.common.custom.CustomPacketPayload;
+import net.minecraft.resources.ResourceLocation;
+import net.minecraft.server.MinecraftServer;
+import net.minecraft.server.level.ServerPlayer;
+import org.jetbrains.annotations.Contract;
+import org.jetbrains.annotations.NotNull;
+import top.leavesmc.leaves.protocol.core.LeavesProtocol;
+import top.leavesmc.leaves.protocol.core.ProtocolHandler;
+import top.leavesmc.leaves.protocol.core.ProtocolUtils;
+
+import java.util.HashMap;
+import java.util.Locale;
+import java.util.Map;
+
+@LeavesProtocol(namespace = "carpet")
+public class CarpetServerProtocol {
+
+ public static final String PROTOCOL_ID = "carpet";
+ public static final String VERSION = "leaves-carpet-1.0.0";
+
+ private static final ResourceLocation HELLO_ID = CarpetServerProtocol.id("hello");
+
+ private static final String HI = "69";
+ private static final String HELLO = "420";
+
+ @Contract("_ -> new")
+ public static @NotNull ResourceLocation id(String path) {
+ return new ResourceLocation(PROTOCOL_ID, path);
+ }
+
+ @ProtocolHandler.PlayerJoin
+ public static void onPlayerJoin(ServerPlayer player) {
+ if (me.earthme.luminol.config.modules.gameplay.LeavesProtocolSupportConfig.enabled) {
+ CompoundTag data = new CompoundTag();
+ data.putString(HI, VERSION);
+ ProtocolUtils.sendPayloadPacket(player, new CarpetPayload(data));
+ }
+ }
+
+ @ProtocolHandler.PayloadReceiver(payload = CarpetPayload.class, payloadId = "hello")
+ private static void handleHello(@NotNull ServerPlayer player, @NotNull CarpetServerProtocol.CarpetPayload payload) {
+ if (me.earthme.luminol.config.modules.gameplay.LeavesProtocolSupportConfig.enabled) {
+ if (payload.nbt.contains(HELLO)) {
+ MinecraftServer.LOGGER.info("Player " + player.getScoreboardName() + " joined with carpet " + payload.nbt.getString(HELLO));
+ CompoundTag data = new CompoundTag();
+ CarpetRules.write(data);
+ ProtocolUtils.sendPayloadPacket(player, new CarpetPayload(data));
+ }
+ }
+ }
+
+ public static class CarpetRules {
+
+ private static final Map<String, CarpetRule> rules = new HashMap<>();
+
+ public static void write(@NotNull CompoundTag tag) {
+ CompoundTag rulesNbt = new CompoundTag();
+ rules.values().forEach(rule -> rule.writeNBT(rulesNbt));
+
+ tag.put("Rules", rulesNbt);
+ }
+
+ public static void register(CarpetRule rule) {
+ rules.put(rule.name, rule);
+ }
+ }
+
+ public record CarpetRule(String identifier, String name, String value) {
+
+ @NotNull
+ @Contract("_, _, _ -> new")
+ public static CarpetRule of(String identifier, String name, Enum<?> value) {
+ return new CarpetRule(identifier, name, value.name().toLowerCase(Locale.ROOT));
+ }
+
+ @NotNull
+ @Contract("_, _, _ -> new")
+ public static CarpetRule of(String identifier, String name, boolean value) {
+ return new CarpetRule(identifier, name, Boolean.toString(value));
+ }
+
+ public void writeNBT(@NotNull CompoundTag rules) {
+ CompoundTag rule = new CompoundTag();
+ rule.putString("Value", value);
+ rule.putString("Manager", identifier);
+ rule.putString("Rule", name);
+ rules.put(name, rule);
+ }
+ }
+
+ public record CarpetPayload(CompoundTag nbt) implements CustomPacketPayload {
+
+ public CarpetPayload(ResourceLocation location, FriendlyByteBuf buf) {
+ this(buf.readNbt());
+ }
+
+ @Override
+ public void write(FriendlyByteBuf buf) {
+ buf.writeNbt(nbt);
+ }
+
+ @Override
+ @NotNull
+ public ResourceLocation id() {
+ return HELLO_ID;
+ }
+ }
+}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,26 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Fri, 9 Feb 2024 03:28:48 +0000
Subject: [PATCH] Threaded region remove and create event
diff --git a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
index 531aa50f2c84e13358e8918bb0c15ea3cd036cb5..26183f979e24de369fd8f5e72a26a6a9ba44f601 100644
--- a/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
+++ b/src/main/java/io/papermc/paper/threadedregions/ThreadedRegionizer.java
@@ -805,6 +805,7 @@ public final class ThreadedRegionizer<R extends ThreadedRegionizer.ThreadedRegio
private void onCreate() {
this.regioniser.onRegionCreate(this);
this.regioniser.callbacks.onRegionCreate(this);
+ new me.earthme.luminol.api.events.TickRegionCreateEvent(this.id).callEvent(); //Luminol - Threaded regions API
}
private void onRemove(final boolean wasActive) {
@@ -813,6 +814,7 @@ public final class ThreadedRegionizer<R extends ThreadedRegionizer.ThreadedRegio
}
this.regioniser.callbacks.onRegionDestroy(this);
this.regioniser.onRegionDestroy(this);
+ new me.earthme.luminol.api.events.TickRegionRemoveEvent(this.id).callEvent(); //Luminol - Threaded regions API
}
private final boolean hasNoAliveSections() {

View File

@@ -0,0 +1,27 @@
From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001
From: MrHua269 <novau233@163.com>
Date: Fri, 9 Feb 2024 03:32:05 +0000
Subject: [PATCH] Threaded region start tick and finished tick event
diff --git a/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java b/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java
index 865044d40a95d201765435cbc14b0384980eebf6..ab5f832aafc479eca1c5da012e180d6374e32325 100644
--- a/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java
+++ b/src/main/java/io/papermc/paper/threadedregions/TickRegionScheduler.java
@@ -389,7 +389,7 @@ public final class TickRegionScheduler {
final long scheduledStart = this.getScheduledStart();
final long scheduledEnd = scheduledStart + TIME_BETWEEN_TICKS;
-
+ new me.earthme.luminol.api.events.TickRegionStartTickEvent(this.region == null ? -1 : this.region.region.id,System.nanoTime()); //Luminol - Threaded regions API
synchronized (this) {
this.currentTickData = new TickTime(
lastTickStart, scheduledStart, tickStart, cpuStart,
@@ -424,6 +424,7 @@ public final class TickRegionScheduler {
);
this.addTickTime(time);
+ new me.earthme.luminol.api.events.TickRegionFinishedTickEvent(this.region == null ? -1 : this.region.region.id,System.nanoTime()); //Luminol - Threaded regions API
TickRegionScheduler.setTickTask(null);
if (this.region != null) {
TickRegionScheduler.setTickingRegion(null);