2.0.1
Compatibility
Changes
LF-Pistons 2.0.1 — Major Update
This is a major upgrade from version 1.2.1, focused on customization, performance, administration tools and reliability.
Update highlights
Mature plant recovery
Plants that became fully grown while the plugin was disabled are now detected gradually when the server starts, chunks are loaded, or the recovery command is used.
Per-world configuration
Each world can use different plant lists, piston behavior, farm profiles and processing settings.
Individual plant settings
Configure the following options separately for each plant:
- Custom drops
- Piston detection radius
- Bone meal behavior
- World-specific overrides
- Custom growth and harvesting behavior
Reusable farm profiles
Create profiles for farms such as sugar cane, bamboo, cactus or custom setups and apply them to different worlds.
Harvest statistics
Persistent statistics are now recorded:
- Globally
- Per world
- Per plant
- By harvested plant units
Improved plant management menu
The management menu now includes:
- Pagination
- Plant search
- Categories
- Status information
- Removal confirmation
- Automatic configuration backups
Piston inspection system
Use /lfpistons inspect and click a plant to display:
- Detected piston
- Piston direction
- Distance from the plant
- Current operating mode
- Reason why the farm may not be working
Configuration validator
The new /lfpistons validate command identifies:
- Invalid materials
- Invalid drop definitions
- Unsafe processing limits
- Missing profiles
- Conflicting settings
- Invalid world configurations
Temporary diagnostics
Detailed diagnostics can be enabled for a limited number of minutes. Diagnostic mode automatically disables itself to prevent unnecessary logging.
Powered-only mode
Farms can require the piston to be powered before harvesting instead of only checking whether it is pointing toward the plant.
Performance improvements
- Global harvest limit per tick
- Automatic TPS and MSPT protection
- Incremental mature plant recovery
- Grouped drops from the same farm
- Configurable item entity limit
- Safer piston cache invalidation
- Per-world plant caches
- Automatic cache cleanup when worlds unload
- Reduced processing during server overload
- Improved memory management for large farms
Integrations
Optional support has been added for:
- PlaceholderAPI
- WorldGuard
- GriefPrevention
- ItemsAdder
- CustomCrops
WorldGuard and GriefPrevention restrictions are disabled by default. They can be enabled if automatic harvesting should be blocked inside protected regions or claims.
PlaceholderAPI
New placeholders include:
%lfpistons_harvests_total%%lfpistons_plant_units_total%%lfpistons_harvests_world%%lfpistons_harvests_world_<world>%%lfpistons_harvests_plant_<material>%%lfpistons_state%%lfpistons_mode%%lfpistons_cache_size%%lfpistons_pending_drop_groups%%lfpistons_diagnostics%%lfpistons_plants_world%
Commands
/lfpistons status— Displays plants, cache size, operating mode, load protection, pending drops and diagnostics./lfpistons stats [world] [plant]— Displays persistent harvest statistics./lfpistons menu— Opens the improved plant management menu./lfpistons inspect— Inspects a plant and its detected piston./lfpistons validate— Validates materials, limits, profiles, drops and configuration conflicts./lfpistons diagnose [minutes|off]— Enables temporary diagnostics./lfpistons recover— Searches loaded chunks for plants that are already mature./lfpistons reload— Reloads the plugin and displays a detailed change report.
Developer API
Other plugins can now:
- Access registered plants and statistics
- Inspect piston detection results
- Register custom protection hooks
- Cancel or modify harvests using
HarvestPreEvent - Receive confirmed harvest information using
HarvestPostEvent
Administration and configuration
- Automatic configuration backups
- Administrative change history
- Detailed reload reports
- Reusable farm profiles
- Per-world overrides
- Automatic configuration migration
- Automatic
plugin.ymlversion synchronization through Gradle
Important fixes
- Fixed farms not detecting plants that were already mature before the plugin started.
- Fixed a regression that could block harvesting inside WorldGuard regions and GriefPrevention claims.
- Protection restrictions are now opt-in and disabled by default.
- Preserved the original piston detection and harvesting behavior.
- Improved glow berry compatibility across Paper 1.21.x versions.
- Improved cache cleanup and world unloading safety.
- Existing 1.2.1 configurations are migrated automatically.
Updating from 1.2.1
- Stop the server.
- Back up the current
LF-Pistonsfolder. - Replace the old JAR with the new version.
- Start the server normally.
- Existing configuration values will be migrated automatically.
- Run
/lfpistons validateand/lfpistons status.
Requirements
- Java 21
- Paper or Purpur 1.21.x
Thank you for using LF-Pistons!
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:aYTOVmAP:1kmVwKoW"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:aYTOVmAP:1kmVwKoW"
}

