xiaoxijun 07073cb4a3 #154 (#155)
* Add PCA sync protocol support

Introduce PCA sync protocol and integrate it into Carpet/Leaves.

- Added org/leavesmc/leaves/protocol/PcaSyncProtocol.java: full implementation of the PCA sync protocol (handlers for sync requests, watcher maps, update payloads, player/block watch management, scheduling, and config-driven behavior).
- Added fun/bm/lophine/config/modules/function/protocol/PcaSyncProtocolConfig.java and enum PcaPlayerEntityType.java to drive enabling and player-entity sync policy.
- Integrated protocol into Carpet: register new carpet rules (pcaSyncProtocol, pcaSyncPlayerEntity) in CarpetCompatSync and added batching to avoid excessive updates when rules change.
- Enhanced CarpetServerProtocol to track active players, batch rule updates, and send server rule data safely on the server thread.
- Added a Minecraft patch (0046-PCA-sync-protocol.patch) to trigger syncs from setChanged() in containers, chest boats, minecarts and BlockEntity updates so watched clients receive entity/block-entity updates.

This enables PCA clients to watch and receive synchronized block-entity and entity state on demand, while keeping updates gated by config and player permissions and improving rule-update performance via batching.

* Add Vanilla-like experience config and updates

Introduce a new VanillaLikeExperienceConfig module and a patch (0047) that gates multiple Paper/Luminol behavior changes behind this toggle to restore more vanilla-like technical behavior when enabled. The patch injects conditional checks across many server classes (entity merging, phantoms, pistons, hoppers, TNT handling, explosions, portal/piston protections, item merging, teleportation, spawn counting, etc.). Also adjust PCA sync protocol references in the existing 0046 patch to use the updated fun.bm.lophine package path. Includes the new fun.bm.lophine.config.modules.fixes.VanillaLikeExperienceConfig.java file.

* Restore vanilla ender pearl loading on Folia

Add patch (features/0048) that restores vanilla ender-pearl loading behavior on Folia. Reintroduces ender-pearl tracking and persistence: ServerPlayer now uses a thread-safe enderPearls set and saves pearl tags, ThrownEnderpearl maintains a lastSavedEnderPearlTag (updated on construction, owner changes, spawn and restore) and updates/clears it on tick/removal, and EnderpearlItem updates the saved tag when spawning a pearl. PlayerList and BotList now schedule pearl removal via the Bukkit taskScheduler when players/bots quit. The changes preserve Paper's legacyEnderPearlBehavior checks where applicable and add logging and safer tag handling to avoid saving invalid snapshots.

* Restore vanilla ender pearl loading

Restore vanilla ender-pearl loading behavior on Folia by preserving the last saved NBT for thrown pearls. ThrownEnderpearl.java: add a volatile CompoundTag lastSavedEnderPearlTag, provide a defensive-copying getter getLastSavedEnderPearlTag(), adjust @Nullable annotation placement, and update logger/comment. Minor index/format updates in ServerPlayer.java, PlayerList.java and EnderpearlItem.java.

* remove extra import

* Add Precise mob cap and adjust ender pearl patch

Introduce a Precise mob cap feature and integrate it into Paper/Folia world/region lifecycle. Adds new patch features/0049-Precise-mob-cap.patch which modifies RegionizedWorldData, ServerChunkCache and ServerLevel to support an incremental, event-driven mob counting system that can supersede the existing GlobalEntitiesCounter. Adds PreciseMobCapConfig (toggle and behavior flags) and PreciseMobCapCounter (unique id management, area map registration, per-level global counters, spawnable-chunk tracking, spawn state creation, and cleanup on unload). Also updates the existing 0048 ender-pearl loading patch file (minor import/index adjustments). The Precise mob cap counts only relevant mobs (configurable to match vanilla or Paper-optimized behavior), hooks into entity tracking start/end, and requires per-player-mob-spawns=false to be set in Paper world defaults when enabled.

* remove extra import

* pre merge config

* transform config

* merge config

* rebuild patches

* fix a bug in new counter

* simplify code

---------

Co-authored-by: Helvetica Volubi <suisuroru@blue-millennium.fun>
Co-authored-by: Helvetica Volubi <88063803+Suisuroru@users.noreply.github.com>
2026-07-02 18:11:12 +08:00
2026-04-13 19:45:35 +08:00
2025-07-30 16:18:31 +08:00
2026-05-17 05:37:52 +08:00
2026-07-02 18:11:12 +08:00
2025-06-07 23:29:29 +08:00
2026-05-02 00:46:03 +08:00
2026-06-28 03:16:11 +08:00
2025-06-07 23:29:29 +08:00
2025-06-07 23:29:29 +08:00
2025-07-30 16:18:31 +08:00
2026-02-08 01:20:10 +08:00
2026-05-21 14:45:32 +08:00

Lophine Logo

Lophine

Lophine is a Luminol fork with many useful optimizations and configurable vanilla features, aims to provide more function for survival-usable circuit on folia (Please note that Fabric should be used for complete survival-usable)

Created At License Issues

Commit Activity CodeFactor Grade GitHub all releases

Repo contributors

English | 中文


Core Features

  • 🔧 Configurable Vanilla Features - Flexibly adjust game mechanics to suit different server needs
  • 📊 Tpsbar Support - Real-time TPS status display
  • 🐛 Folia Bug Fixes - Targeted fixes for known Folia issues
  • 💾 Multiple World Format Support - Support for linear and b_linear (linear reimplementation) world formats
  • 🔬 Redstone Enhancement - More redstone functionality on Folia (use Fabric for complete redstone features)
  • 🛠️ More Useful Functions - Continuously adding useful server features

📥 Download

Stable Releases

All release versions can be found on the Releases page.

Development Builds

If you want to experience the latest features, you can build it yourself following the steps below.

Build Steps

# Clone the project
git clone https://github.com/LuminolMC/Lophine.git
cd Lophine

# Apply patches and build Paperclip JAR
./gradlew applyAllPatches && ./gradlew createPaperclipJar

After building, you can find the generated JAR file in the lophine-server/build/libs directory.

🔌 API Usage

Gradle Configuration

repositories {
    maven {
        url = "https://repo.menthamc.org/repository/maven-public/"
    }
}

dependencies {
    compileOnly("fun.bm.lophine:lophine-api:$VERSION")
}

Maven Configuration

<repositories>
    <repository>
        <id>menthamc</id>
        <url>https://repo.menthamc.org/repository/maven-public/</url>
    </repository>
</repositories>

<dependencies>
    <dependency>
        <groupId>fun.bm.lophine</groupId>
        <artifactId>luminol-api</artifactId>
        <version>$VERSION</version>
        <scope>provided</scope>
    </dependency>
</dependencies>

💬 Community & Support

If you're interested in this project or have any questions, feel free to ask us.

Join Our Community

Get Help

🐛 Bug Reports

When you encounter any issues, please ask us and we'll do our best to resolve them. Please remember to:

  • 📝 Describe the problem clearly - Provide detailed information about the specific issue
  • 📋 Provide complete logs - Include error logs and relevant configuration information
  • 🔍 Environment details - Specify server version, plugin list, and other environment details
  • 🔄 Reproduction steps - If possible, provide specific steps to reproduce the issue

🤝 Contributing

We welcome community contributions! For detailed contribution guidelines, please see:

📊 Project Statistics

BStats Data

bStats

🎉 Special Thanks

Project Sponsors

Thanks to LegacyLands for sponsoring this project
If you want to develop cross-Folia/non-Folia platform plugins, legacy-lands-library would be a great choice

LegacyLands Logo

Give Us a Star!

Every free Star you give is the motivation for our every step forward.

Star History

Star History Chart
If this project helps you, please don't forget to give us a Star!
S
Description
旨在 Folia 上实现更多生电的内容以及更多的功能
Readme 7.1 MiB
Languages
Java 99.9%