
Unbreakable Blocks Plugin
A lightweight, powerful plugin that lets you designate specific block types as permanently unbreakable. Protect your server from griefing, explosions, and piston abuse by granting true block ownership that persists across restarts.
1.21.8
Compatibility
Changes
๐ UnbreakableBlocks - Update Logs Version 1.1: Moderinth Security Update (Current Version) โจ This update introduces critical stability features, resolves data loss issues, and implements comprehensive anti-grief measures to ensure blocks remain truly unbreakable.
๐ New Features & Improvements ๐ก๏ธ Total Anti-Grief Protection:
Blocks set as unbreakable are now immune to all forms of explosions (TNT, Creepers, Withers, etc.).
Unbreakable blocks can no longer be pushed or pulled by pistons, preventing structural bypasses.
๐พ Persistent Block Ownership:
Implemented a separate data file (placed_blocks.yml) to store the UUID of the player who placed each unbreakable block.
Ownership data now persists across server restarts and reloads, eliminating the risk of players permanently losing the ability to break their own placed blocks.
๐ New Admin Command (/unbreakable check):
Admins can now look at any block and use /unbreakable check to instantly verify if the block is unbreakable and, if so, who the original owner is.
๐ ๏ธ Quality of Life (QoL):
Improved tab completion for /unbreakable add|remove now filters block names as the user types.
The command usage message now includes the new check subcommand.
๐ Bug Fixes & Code Stability Fixed Data Loading Error: Corrected an illegal multi-catch statement in loadPlacedBlocks() to ensure compatibility and successful loading of ownership data on all supported Java versions.
Fixed Compilation Error: Explicitly cast this to org.bukkit.event.Listener in onEnable() to resolve conflicts with modern Java networking imports during command-line compilation.
Permission Refinement: Added unbreakable.admin permission to cover general access to admin commands (add, remove, check).
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:S9pu6ITG:LaOFXML1"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:S9pu6ITG:LaOFXML1"
}
