Tags
Creators
Details
1.1.0
Compatibility
Changes
Compatiblity: 26.2 - Java 25
This is the first release of the MoonBreak API, following the internal versions v1.0.x and now finally the first public one v1.1.0 with a whole lot of bug fixes and core changes.
Key Features
- Full Vanilla Breaking Simulation
- Custom Blocks
- Custom Tools (Full Pickaxe Support)
- Massive Performance Improvements
Full Changelog
Changes
- Massively improved Performance
- Finished JavaDocs
- Increased saving interval
- Excluded players in creative/spectator from breaking speed calculations
- Encapsuled non-thread-safe methods in CustomBlockLoader#loadChunk and simplified to using in-built methods
- Deduplicated checks for executing the PRE_BLOCK_BREAK hook
- Made CustomTool#repair and CustomTool#damage affected by the tools unbreakable state
- Made IO operations run asynchronously
- Made speed be a mandatory argument for a CustomToolType if the underlying material does not offer a default mining speed value
- Made api and plugin version the same
- Made CustomBlockManager#place (non-virtual) not update the physical block if the material at the location is already correct
- Added CustomTool Event Hook Integration
- Added Builder for event hook integration
- Added a way to virtually place blocks
- Added a way to remove CustomBlocks and more by exposing the CustomBlockManager
- Added a way to get a CustomTool by player
- Added a way to disable vanilla mineables being overwritten, if set
- Added a move method to CustomBlockManager to allow for easier moving of blocks, both physically and virtually
- Added fallback for reading the chunk index file
- Added tool durability load fallback to the default maxDurability
- Added bool ItemProperty factory
- Removed BlockFromToEvent listener to massively increase performance and banned the dragon egg as a custom block material, being the only material requiring it
- Removed unneccesarry chunk loads
- Removed CustomBlock.java in favor of the CustomBlockManager to prevent state desynchronizations and provide a single source of truth
- Now also resetting to initial values upon being excluded from breaking speed calculations
- Now saving all blocks onDisable
- Now cancelling events before logging
Bug Fixes
- Fixed tools having a maxDurability of 0
- Fixed mining level 0 being invalid
- Fixed lore and correctToolFor being unmutable upon using CustomToolType.Builder#copyFrom
- Fixed durability possibly exceeding its bounds
- Fixed error messages for incorrect materials and updated javadocs accordingly
- Fixed POST_BLOCK_BREAK hook not firing if the tool is unbreakable or broke as the result of the block breaking
- Fixed durability not being displayed as the item was set to unbreakable
- Fixed incorrect JavaDocs
- Fixed breaking speeds not being updated upon some state changes and compressed it down into a LastState class
- Fixed tool items meta being reset on data change and added a ItemMeta injection accordingly
- Fixed piston traversal being moved in the wrong order
- Fixed blocks not being removed on unloading a non-save chunk
- Fixed INTERACT_AT_ENTITY event hook firing for both hands
- Fixed overwriteVanillaMineables not being included in CustomToolType.Builder#copyFrom
- Fixed unbreakable property being lost upon recreating the itemstack
- Fixed lastLookedAt and lastHeldItem in BreakingService.LastState not being cloned on setting them
- Changed listener priorities to be correct
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:pbypQShk:Kcpsbwp4"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:pbypQShk:Kcpsbwp4"
}

