Keep Illegal Blocks
1.4.3-mc1.20.6Prevent illegal blocks from breaking/updating when a player right-clicks on an adjacent block — KIB scans and restores blocks to avoid destroying your build
1.4.3-mc1.20.6latestAug 1, 2026 #### Overview * Addedchiseled-booshelvesinteractable block category (putting and taking books can break adjacent reactive blocks).Pull request: https://github.com/Atrimilan/KeepIllegalBlocks/pull/4
1.4.2-mc1.20.6Jul 26, 2026 #### Overview * Added the [ConfigUpdater](https://github.com/tchristofferson/Config-Updater) library to improve the auto-updating of the config.yml file when KIB is updated. Compared to the previous approach, this allows old section values to be removed and new comments to be added, while preserving all user changes.Pull request: https://github.com/Atrimilan/KeepIllegalBlocks/pull/3
1.4.1-mc1.20.6Jul 13, 2026 #### Overview * Added support for Minecraft26.2. * Addedspeleothemsreactive block category, which includesPOINTED_DRIPSTONEand the newSULFUR_SPIKE. * Removedpointed-dripstonescategory. * Updated the PacketEvents optional dependency to2.13.0+spigot. * Added FAQ section to the README.1.4.0-mc1.20.6Jun 5, 2026 #### Overview * Added support for Minecraft26.1.x(1.20.6to1.21.11are still supported). * Consolidated "fragile" and "connectable" into the new "reactive" type. "Connectable" is now a property of reactive blocks. Documentation is updated accordingly. * Reworked the restoration service to fix issues where connectable reactive blocks were not always properly restored. _Some edge cases may still (rarely) occur in very specific situations, as the restoration system implemented is still fairly lightweight. Advanced chunk management would have been overkill for what the plugin does._ * Addedleaf-littersas a reactive block. * Added propagation of material classifications to their placement materials, to prevent duplication when items and blocks have different materials. For example,Material.REDSTONEbecomesMaterial.REDSTONE_WIREonce placed. * AddedMaterial.AMETHYST_SHARDto theamethyst-clusterscategory (to prevent item duplication). * AddedMaterial.CHORUS_FRUITto thechorus-plantscategory (to prevent item duplication).Pull request: https://github.com/Atrimilan/KeepIllegalBlocks/pull/1
1.3.0-mc1.20.6May 17, 2026 #### 1. Overview Updated the restoration system to support connectable blocks*, preventing unwanted block updates forglass-panes,wallsandfences(fences, iron bars and copper bars). * Fixed blacklisted fragile blocks items not being dropped when they are broken (only blacklisted ones, not blocks being broken due to getting over the max-blocks limit). * Addedredstone-wiresas fragile blocks. * Removed support forCHORUS_FLOWERas fragile blocks because their restoration doesn't work properly. Note thatCHORUS_PLANTis still supported. * Completely reworked material loading process on server start (or plugin reload), to improve performance and allow non-block materials to be loaded (such asredstone-wires). * Split and heavily refactored the main configuration class. * Updated the PacketEvents optional dependency to2.12.1+spigot. #### 2. Connectable blocks A connectable block is a block that automatically connects to its adjacent blocks. This includes the following categories: *fences(fences, iron bars and copper bars) *glass-panes*wallsConnectable blocks behave in a similar way to fragile blocks: * Their connections can be modified illegally with a Debug Stick, or plugins like Axiom or WorldEdit. * A connectable block will revert to its normal state when a physics update is triggered on one of its adjacent blocks. This is why the restoration system has been made compatible with connectable blocks. Connectable block updates are removed from network packets when they are restored (if the PacketEvents plugin is present). However, in most cases, they are still rendered by the client before the related network packet is received, which causes flickering for a fraction of a second.1.2.0-mc1.20.6Feb 23, 2026 #### 1. Overview * Improved cancellation of item spawning events when fragile blocks are broken and restored. * Improved the second restoration triggered by buttons due to their second physical update. * Fixed interactable blocks breaking is specific cases. * Replaced interactable block categoriesswitcheswithstone-buttons,wooden-buttonsandlevers. * Addedcave-vines(CAVE_VINES+CAVE_VINES_PLANT) andsweet-berry-bushesas interactable block categories. #### 2. Overhaul of the restoration system The restoration system has been reworked to fix all known issues: * Interactable blocks no longer break when they are also fragile. For example, a lever on a trapdoor could break because a lever is also fragile. * When the interactable block is a button, a second update occurs a few ticks later (the delay is 20 ticks forstone-buttonsand 30 ticks forwooden-buttons). A second restoration is therefore automatically performed at that moment. This is why theswitchesinteractable block category had to be separated intostone-buttons,wooden-buttonsandleverscategories. * KIB no longer waits for items to spawn before deleting them. Their spawning event is now intercepted and immediately canceled. In addition, theSPAWN_ENTITYnetwork packet is no longer canceled by the [PacketEvents](https://modrinth.com/plugin/packetevents) plugin (if present), as this packet is no longer sent when fragile blocks break.1.1.2-mc1.20.6Feb 10, 2026 #### Overview * Fix someMULTI_BLOCK_CHANGEpackets that were not being sent correctly. They are now tweaked to only disable packets that replace fragile blocks with air. * This fixes redstone and rails _(and probably other fragile blocks)_ that weren't updating on client sides. * This also fixes fragile doors from flickering. * Change the Modrinth publishing system. * The [mc-publish](https://github.com/marketplace/actions/mc-publish) GitHub action has been replaced by the Modrinth's [Minotaur](https://github.com/modrinth/minotaur) Gradle task.1.1.1-mc1.20.6Feb 3, 2026 #### Overview Add support for versions 1.21 → 1.21.11* * ReplaceMaterialTags.SIGNS(deprecated since 1.21.8) withTag.ALL_SIGNS* Fixversionin plugin.yml * Fix error message aboutorg.bukkit.entity.Player.getWorld()failure whencom.github.retrooper.packetevents.event.PacketSendEvent.getPlayer()is null1.1.0-mc1.20.6Feb 2, 2026 #### 1. Overview * KIB now automatically removes items dropped from fragile blocks when they are broken. * [PacketEvents](https://modrinth.com/plugin/packetevents) is now supported to improve client-side rendering when restoring fragile blocks. It is optional but highly recommended. * Addedbamboosas fragile blocks (BAMBOOandBAMBOO_SAPLING). * Updated thecoralsfragile block category to add all implementations ofCoralWallFan. * Added bStats for plugin metrics. #### 2. Auto-removal of items dropped from fragile blocks When fragile blocks are broken, KIB automatically removes items dropped from them. Note that they may be visible for a few milliseconds before being removed, as one server tick is required to detect them. However, if you are using PacketEvents, they are not visible at all, as the packets related to fragile block item drops are canceled. #### 3. PacketEvents support If the [PacketEvents](https://modrinth.com/plugin/packetevents) plugin is detected on the server, it will be used to cancel certain packets events in order to improve client-side visuals and performance. **PacketEvents is optional but highly recommended for a smoother experience.** For any fragile block that is restored, KIB uses PacketEvents to: * Hide break particles. * Cancel break sounds. * Hide block item drops (they are automatically deleted by KIB anyway). * Cancel break animation. Note that the break animation is not canceled for doors. Interacting with a door would otherwise cause it to appear half-open if the corresponding packet event was canceled. This is also why fragile doors may flicker.Please also note that this may not always be flawless. The client appears to anticipate some packets from the server, which can occasionally cause a few fragile blocks to be displayed as broken and restored. In most cases, however, this does not occur.
1.0.0-mc1.20.6Jan 19, 2026 #### Overview: This is the first version of the plugin. It contains all the logic necessary to restore fragile blocks that may be broken when a player interacts with an interactable block (see the project description for more context). <details> <summary><b>Click to see the list of fragile block categories</b></summary> *
amethyst-clusters*banners*beds*bells*cactus*cakes*carpets*cave-vines*chorus-plants*cocoa*comparators*corals_(does not apply to waterlogged corals)_ *crops*dead-bushes*doors*dripleaves*ferns*flowers*frogspawn*fungus*glow-lichens*grass*hanging-roots*hanging-signs*ladders*lanterns*lily-pads*mangrove-propagules*mushrooms*nether-roots*nether-sprouts*nether-warts*pointed-dripstones*pressure-plates*rails*redstone-wires*repeaters*saplings*scaffolding*sculk-veins*sea-pickles*signs*snow*sugar-canes*sweet-berry-bushes*switches_(levers and buttons)_ *torches*tripwire-hooks*twisting-vines*vines*weeping-vines</details> <details> <summary><b>Click to see the list of interactable block categories</b></summary> *
campfires*candles*cauldrons*comparators*composters*copper-blocks_(non-plain copper blocks that can be waxed or scraped)_ *daylight-detectors*doors*end-portal-frames*gates*lecterns_(putting a book on them)_ *repeaters*switches_(levers and buttons)_ *trap-doors</details> #### Configuration: This version also includes the ability to blacklist blocks (fragile or interactable) by disabling their category or specifying the materials to be ignored in theconfig.ymlfile. The maximum number of blocks to restore is set to 500 by default, but it can also be changed in theconfig.ymlfile. The configuration can be reloaded with/keepillegalblocks reload(or/kib reload), which requires thekib.reloadpermission for non-op players.
Similar projects
Plugin →VeinMiner
Mine the whole vein on mining a single ore/block. Make the tedious mining experience to something satisfying and fun! FTB Ultimine alternative
99.3MSueta
Simple Voice Chat
A working voice chat in Minecraft!
76.8MSueta
Chunky
Pre-generates chunks, quickly and efficiently
18.4MSueta
VeinMiner Enchantment
Veinminer Addon - Adds vineminer enchantment to enchanting tables. Only tools with the enchantment can veinmine
18MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
WorldEdit
A Minecraft Map Editor... that runs in-game! With selections, schematics, copy and paste, brushes, and scripting. Use it in creative, or use it temporarily in survival.
11.6MSueta