BlockDisplayCreator
1.5.4.4Plugin for creating and fully customizing custom blocks from Display Entities using bdengine
1.5.4.4latest1.5.4.4 | 26.2 support, place command for 1.21.8+, placeholders fixAug 30, 2026 Added · Added support for Minecraft 26.2. · Added /bdc custom-block place command for Minecraft 1.21.8+, without requiring CommandAPI. · Added PlaceholderAPI support to all messages displayed when an interaction with a custom block is unavailable (e.g. placing a block on someone else's island or inside a protected region). Changed · The default value of sides-count is now 360, allowing full 360° rotation by default. Fixed · Fixed an error occurring when working with items that have no ItemMeta.
1.5.4.31.5.4.3 | 26.1.2 supportMay 23, 2026 Added plugin support for Minecraft version 26.1.2 Fixed shulker sounds bug1.5.4.21.5.4.2 | 1.21.11 supportFeb 13, 2026 Added plugin support for version 1.21.11 Added /cb command for versions 1.19.4, 1.21.9, 1.21.10 and 1.21.111.5.4.11.5.4.1 | 1.21.9 and 1.21.10 supportNov 26, 2025 Added support for versions 1.21.9 and 1.21.10 Due to CommandAPI limitations, only the /bdc custom-block give, /bdc custom-block reload, and /bdc custom-block erasecbdata commands will work on versions 1.21.9, 1.21.10, and higher. Temporary or permanent basis.1.5.4.01.5.4.0 | Async Loading, Quick Select, SuperiorSkyblock2 SupportSep 7, 2025 Added Asynchronous block loading ● All custom blocks now load asynchronously from their files. This ensures smooth and invisible performance on your server. Quick Select feature (Minecraft 1.21.4+) Works just like in vanilla Minecraft — simply middle-click a custom block to get it in your hand. ● Works only with installed PasketEvents ● In Creative mode you can obtain blocks even if they are not in your inventory. ● Permission for this creative feature: bdc.quickselect.creative New Block Parameters stage-settings.place.placement-mode – Control where and how a block may be placed. There are 5 modes: · default — place on any face (top, bottom, sides). · vertical_only — only top/bottom faces; side faces are blocked. · horizontal_only — only side faces; top/bottom are blocked. · vertical_with_horizontal — prefers vertical behavior even when placed on a side; treats side placement as if vertical for visuals/logic. · horizontal_with_vertical — prefers horizontal behavior even when placed on top/bottom; treats vertical placement as if horizontal for visuals/logic. Example: Code (Text): stage-settings: place: placement-mode: vertical_with_horizontal stage-settings.break.drop-mode – Choose how the block drops its item on break. · on_ground — default; drop at the block location. · inventory — give directly to the player’s inventory; if full, drop at player location. Example: Code (Text): stage-settings: break: drop-mode: inventoryAll parameters can be configured via /bdc custom-block editfile. ️ SuperiorSkyblock2 integration Island privileges to control access to custom blocks: · place_cb — place custom blocks · break_cb — break custom blocks · interact_cb — interact with custom blocks Use them in permissions.yml → items (SSB2) to make them toggleable in the island UI. For unrestricted access use bdc.bypass.skyblock or superior.skyblock.bypass. Message settings are made in messages.yml Subfolder loading for custom blocks ● Custom blocks can now be organized in subfolders inside custom-blocks directory. Perfect for keeping things tidy and organized. New permission system ● Separate permissions for each major subcommand ● Wildcards with * Code (Text): bdc.quickselect.creative bdc.bypass.* bdc.bypass.wg bdc.bypass.skyblock bdc.command.* bdc.command.reload bdc.command.erasecbdata bdc.command.custom-block.* bdc.command.custom-block.give bdc.command.custom-block.place bdc.command.custom-block.break bdc.command.custom-block.editfile Expanded messages.yml ● The message system has been greatly expanded. ● Most messages related to commands and blocks are configurable. ● Each message supports placeholders (block names, locations, players, reasons). Improved ● Block names can now safely contain special characters (auto-quoted in commands). ● Sound handling in /bdc editfile: sounds correctly play for players. ● Improved filtering of block & sound names. ● Documentation improvements. Changed ● Command /bdc killcbentities has been renamed to: Code (Text): /bdc erasecbdata Now removes interaction entities, display entities, shulkers, and clears block data in the selected area. Fixed ● Bug with incorrect rendering of barrel.yml. ● Bug with wrong block rotation at small sides-count. ● Bug causing duplicate custom blocks. ● Bug with missing block service data at its location. ● Bug with enchantment loading. ● Bug with null interaction command.
1.5.3.01.5.3.0 | Place & Break Commands, bStats Integration, Vanilla MechanicsAug 6, 2025 Added ● New place and break commands for placing and removing custom blocks /bdc custom-block place <block> <location> [attached-face] [direction] [options...] · <block> – Name of the custom block to place · <location> – Target placement location · [attached-face] – Block face to attach to: north, south, east, west, up, down · [direction] – Direction (0–360°) for up/down face orientation · [options] – Optional flags: · replace_custom_block – Replaces existing custom block if present · load_chunk – Loads chunk before placement · break_solid_material – Breaks solid block at location · silent_place – Suppresses placement sound /bdc custom-block break <location> [options...] · <location> – Target location to break a custom block · [options] – Optional flags: · drop_item – Drops block item on break · silent_break – Suppresses breaking sound · If you're looking at a block, location auto-fills ● Added bStats integration: · Tracks basic plugin usage and number of active custom blocks · Public stats available at: bStats plugin page ● Plugin update checker: · Automatically checks for new versions · Displays update info in the console Fixes ● Fixed setter logic errors for block state ● Fixed incorrect rotation when display offset was 0 ● Fixed placement issues on unloaded chunks ● Fixed sound loading inconsistencies across Minecraft versions ● Fixed bugs with enchantment and color loading ● Fixed unremovable collisions under certain conditions Vanilla Block Mechanics ● When placing custom blocks on or in fragile blocks (like grass or leaves), the fragile blocks will be automatically replaced – improving realism1.5.2.01.5.2.0 | Version adaptation updateJul 30, 2025 Added New block parameters: ● Added display spawn-command-1_19_4: a spawn command for display entities used only in Minecraft 1.19.4. Useful for proper rendering of custom head models across versions. ● Added display spawn-command-1_20-1_20_4: a spawn command for display entities used only in Minecraft 1.20–1.20.4. Useful for proper rendering of custom head models across versions. ● Added yaw and pitch in display.translation section to apply additional rotation values to display entities. Example: Code (Text): display: translation: yaw: 180 pitch: -45 ● Added disable-below-1_20_5 for collisions. When true, the collision is skipped for versions below 1.20.5 (due to size limitation before display entity scaling). Example: Code (Text): collisions: some-collision-name: disable-below-1_20_5: true ● All new parameters are editable via /bdc custom-block editfile Improvements: ● Optimized block and command loading speed ● Introduced internal version package for cleaner version handling ● CustomBlockInteractEvent now provides access to the clicked interaction ● Custom blocks can no longer be destroyed in Adventure mode Fixes: ● Fixed sound loading issues on newer Minecraft versions ● Fixed item drop bug when in spectator mode ● Fixed command loading for single-line command strings1.5.1.01.5.1.0 | New command - /bdc custom-block editfileJul 18, 2025 New Command — /bdc custom-block editfile A new command /bdc custom-block editfile (old set command) has been added, allowing you to configure custom block files directly through in-game commands. It supports editing most block parameters. Below is the full list of available syntaxes: Code (Text): General: /bdc custom-block editfile <block> central-material <material> /bdc custom-block editfile <block> sides-count <1–360> Display settings: /bdc custom-block editfile <block> display spawn-command <command|model-id> /bdc custom-block editfile <block> display billboard <billboard-type> /bdc custom-block editfile <block> display brightness block <value> /bdc custom-block editfile <block> display brightness sky <value> /bdc custom-block editfile <block> display glow-color-override <named-color|decimal-ABGR|hexadecimal> /bdc custom-block editfile <block> display glowing <true|false> /bdc custom-block editfile <block> display shadow-radius <value> /bdc custom-block editfile <block> display shadow-strength <value> /bdc custom-block editfile <block> display view-range <value> /bdc custom-block editfile <block> display translation {x|y|z} <value> Item settings: /bdc custom-block editfile <block> item material <item-material> /bdc custom-block editfile <block> item name <name...> /bdc custom-block editfile <block> item lore <lore lines separated by "> /bdc custom-block editfile <block> item enchantments <enchantment:level...> /bdc custom-block editfile <block> item item-flags <flags...> /bdc custom-block editfile <block> item skullmeta url <skin-url> /bdc custom-block editfile <block> item skullmeta name <skin-owner-name> Interaction settings: /bdc custom-block editfile <block> interactions <interaction-name> command <command> /bdc custom-block editfile <block> interactions <interaction-name> command-source <console|player> /bdc custom-block editfile <block> interactions <interaction-name> granted-command-permission <permissions...> /bdc custom-block editfile <block> interactions <interaction-name> height <value> /bdc custom-block editfile <block> interactions <interaction-name> width <value> /bdc custom-block editfile <block> interactions <interaction-name> offset {x|y|z} <value> Collision settings: /bdc custom-block editfile <block> collisions <collision-name> size <value> /bdc custom-block editfile <block> collisions <collision-name> offset {x|y|z} <value> Sound settings: /bdc custom-block editfile <block> sound <break|place> sound-type <sound-name> /bdc custom-block editfile <block> sound <break|place> volume <value> /bdc custom-block editfile <block> sound <break|place> pitch <value> Stage settings: /bdc custom-block editfile <block> stage-settings <break|place> command <command> /bdc custom-block editfile <block> stage-settings <break|place> command-source <console|player> /bdc custom-block editfile <block> stage-settings <break|place> granted-command-permission <permissions...>
1.5.0.01.5.0.0 | Collisions, open source, tags, updating commands and moreJul 7, 2025 Collisions ● Collisions – a new type of custom block entity that allows you to make blocks solid. https://streamable.com/5zjhs2 ● Created using the same principle as interactions, inside the collisions section. ● As of release, they support two settings: - offset with parameters x, y, z — same format as in the interactions section. - size — defines the collision hitbox size. ( Note: the size attribute is only supported in Minecraft 1.20.5+) Demonstration of collisions in a block file ● Collisions are implemented using shulkers with most of their features stripped. However, due to Minecraft limitations, the shulker head cannot be made invisible without resource packs, which may be visually distracting. </> Commands ● New command: ` /custom-blockor/cb— a shortcut for giving custom blocks, works similarly to/bdc custom-block give` ● Command ` /bdc custom-block set` has been temporarily removed for rework. ● Command ` /bdc killdisplay&interactionhas been renamed to/bdc killcbentities` and now also clears Custom Block data. ● Command ` /bdc reload` now supports an additional argument to reload a specific block. Placeholders ● Added placeholder for custom block: ` %customblock_name%` ● Added placeholders for interaction entity location: ` %interaction_x%` ` %interaction_y%` ` %interaction_z%` ● When a custom block is given, placeholders in the item name and lore will be replaced using the receiver’s data. ● New placeholder: %player_skin_base64% — returns the player skin in base64 format for use in commands. ● When giving a block, the %player_skin_base64% placeholder will be applied to the display spawn command if display.use-placeholder is set totrue.Note: When a custom block is placed and then broken, placeholder-based commands and items will not retain their data. ● To preserve this information, the
save-systemsetting was added. - Default: ` yaml-file` - You can switch to ` item`, which saves data inside the item itself. Permissions ● Added 3 permissions for corresponding subcommands: ` bdc.command.custom-block` ` bdc.command.reload` ` bdc.command.killcbentities` Open Source ● The plugin is now open source and available here ️️ Tags ● Added 8 new tags for custom block entities. General Tags:custom-blockcustom-block-name: *block name*custom-block-location: *x,y,z*Display Tags:custom-block-displayInteraction Tags:custom-block-interactioncustom-block-interaction-id: *interaction ID*Collision Tags:custom-block-collisioncustom-block-collision-id: *collision ID*Other ● The right section is no longer required for defining interaction commands. All existing blocks using it will be automatically migrated. ● The interact-cb flag is now allowed by default. ● Offsets are now correctly applied to all block directions.
1.4.1.0Animations updateApr 22, 2025 To test new features and animations, you can download a custom block and datapack for it here. Added: ● Ability to use /function command in summon-command to spawn displays ● cooldown interaction parameter that adjusts the cooldown (in ticks) between sending commands on click. ● granted-command-permission interaction parameter that adjusts the temporary permissions that are granted before sending a command and are removed after sending (those that were missing) ● New section - stage-settings For now, you can set upplacement (executed AFTER the block is placed) and destruction (executed BEFORE destruction) commands ● Placeholders: - %custom block_x% - %custom block_y% - %custom block_z% With these you can specify the location of the custom block in commands in config files ● Now in the reload command you can specify which block you want to reload, if you don't want to reload everything ● Minor technical optimization1.4.0.2Bug with color parsing, WG and barrel displacementMar 13, 2025 Fixed: ● Bug with incorrect parsing of glow-color-override on different versions. ● Bug with incorrect displacement of barrel model ● Bug with the fact that if there was no WG on the server, the blocks were not placed1.4.0.1Bug with regionsMar 11, 2025 Fixed: ● Bug where the plugin did not allow placing block entities in regions1.4.0.0Custom Block files, multiple Interactions, Display settings, integration of WorldGuard and moreMar 3, 2025 Added: New Custom Block Format ● Beginning with this update, each Custom Block will require a separate .yml file located in the custom-blocks folder, named according to the block's designated name. ● During plugin startup, all existing Custom Blocks from config.yml will be automatically migrated to the new file format while maintaining their functionality. After that, their presence in config.yml will no longer be required, and they can be removed if desired. Multiple Interactions and Offset ● Starting with this update, you can create multiple Interactions by defining them as subsections within the interactions section. Interactions are highlighted in blue. ● To add a new Interaction, create a subsection within interactions and assign it any desired name. WARNING! Be cautious: if you rename an Interaction linked to a command, it may disrupt the functionality of existing Custom Blocks, as their commands are stored in association with the Interaction name. ● A new offset section has been added to Interaction settings, featuring the x, y, and z parameters. These define the displacement applied to the Interaction Entity after spawning. ● The offset will adjust according to the block’s rotation and change dynamically with it. New Display Settings ● Added the billboard parameter, which controls whether Block Display entities should face the player during rendering. It can be set to fixed (both vertical and horizontal angles remain static), vertical (orients toward the player around the vertical axis), horizontal (rotates around the horizontal axis), or center (rotates around the central point). The default setting is fixed. ● Added the brightness parameter with sky and block subsections, allowing manual override of lighting values used for rendering. ● Added the shadow-strength parameter, which controls the opacity of shadows based on the distance to the block below. The default value is 1 ● Added the shadow-radius parameter, which defines the shadow radius for Displays. The value ranges from 0 to 64. If set to 0 or lower, the entity will have no s hadow. The default value is 0. ● Added the translation section with parameters x, y, and z, which control the displacement of the Display to the specified coordinates. Unlike offset, this transformation does not take the block's rotation into account. Note: Previously, a default translation of -0.5, 0, -0.5 was automatically applied to blocks. This will no longer happen, but when migrating old models to separate files, this translation will be added automatically to preserve their positioning. ● The glow-color-override parameter can now be specified using a named format (e.g., RED, BLUE), decimal ABGR (e.g., 234543), or hexadecimal (e.g., 3134F5, c8c4c2). Permissions ● Added the ability to define permissions for accessing a block and customize messages in messages.yml. Code (Text): permission: break: - "perm1" - "perm2" place: - "perm1" - "perm2" interact: - "perm1" - "perm2" Example of permissions Integration of WorldGuard ● New WorldGuard region flags have been introduced to control access to Custom Blocks: · place-cb – Controls the right to place a custom block in a region · break-cb – Controls the right to place a custom block in a region · interact-cb – Controls the right to interact with custom block in a region ● Added the bdc.bypass.wg permission, allowing unrestricted access to Custom Blocks regardless of region flags. By default, this permission is granted to administrators. Command arguments ● It is now possible to specify the recipient and quantity after selecting the desired block to receive. Limiting the number of entities per chunk ● On some servers, due to kernel limitations, Display Entities could disappear in chunks with a high entity count. To prevent this, a new max-entities-per-chunk parameter has been added to config.yml. It restricts block placement if the number of entities in a chunk exceeds the specified limit. ● If set to a value below 0, no entity limit checks will be performed. ● Default value: -1. ● The warning message for exceeding the entity limit can be customized in messages.yml. Texture for head item ● The skullmeta.url parameter can now be specified as either a direct texture URL or a Base64-encoded string. ● Added the skullmeta.name parameter, allowing you to specify a player's name as the owner of the skull texture. This option has the lowest priority compared to skullmeta.url. Model Loading from BDEngine by ID · Added the ability to load block models directly from BDEngine using an ID. The ID should be specified in the same spawn-command field. Note: Loading models by ID may cause various issues: · Some models, including animated ones, may not support command retrieval. · The retrieved command version may not match the server version, potentially leading to errors when spawning Displays. · Fetching commands via requests can be highly resource-intensive and may even cause server crashes. To avoid these problems, it is recommended that users specify commands manually whenever possible.1.3.2.2Protection against automatic deletion of entities by the server coreSep 1, 2024 Added: ● All custom block entities will be persistent and invulnerable by default.1.3.2.1Protection against death situations of entitiesAug 24, 2024 In some situations, due to the core or other plugins, the entities of the custom block could disappear. Now, even in their absence, the custom block can be broken Due to this update, CustomBlock::getInteraction may return null1.3.2.0Big update and API changeAug 11, 2024 Huge API change. Dear Users, I have implemented an entirely new block storage system, replacing the previous version used up until version 1.2.2.9. This update ensures greater stability and paves the way for future innovations. Unfortunately, custom blocks created in older versions of the plugin (1.2.2.9 and below) must now be removed. To do this, please use the new command: /bdc killdisplay&interaction <x1> <y1> <z1> <x2> <y2> <z2> Please note: This command will remove not only the old custom blocks but also all Display Entities and Interaction Entities within the specified area. Be sure to use the command carefully, specifying the exact coordinates of the area you wish to target. Added: ● Gradient support for item name and lore ● Custom blocks cannot be moved using the piston ● Customizing the Glow of Display Entities ● Customizing the View Range for Display Entities ● Customizing the Sounds of the Custom Block ● Customizing the Sides Count of Custom Block API changes: Huge API change. From the main one: From the CustomBlock object you can get and set all the information about it; the CustomBlock itself is created using CustomBlockManipulator.placeBlock. You can also get a CustomBlock by location using CustomBlockManager::getByLocation1.2.2.9Big bug fixMay 13, 2024 Fixed: ● A bug where blocks could only be placed in the main world. Added: ● When the center-material of a custom block is destroyed, it will drop a custom block.1.2.2.8API updateMay 7, 2024 Modified: ● The java plugin version has been changed to 17 ● Explosion event tracking has become more optimized ● Using papi is no longer mandatory Added: ● For all events associated with user blocks, you can get a list of Display Entities1.2.2.7Updating interaction settings and adding placeholdersMay 6, 2024 New custom block interaction settings: Added setting the command-source when clicking on an interaction entity. Also added the ability to use placeholders in the interaction command New API settings: Now all plugin events can be canceled Renaming settings: Were renamed: Code (Text): #If set to false, players without blockdisplaycreator.blocks-destruction permission are prohibited from destroying custom blocks. By def true blocks-destruction: true #If set to false, players without blockdisplaycreator.blocks-placement permission are prohibited from placing custom blocks. By def true blocks-placement: true #If set to false, players without blockdisplaycreator.blocks-interaction permission are prohibited from interacting with custom blocks. By def true blocks-interaction: true When the central-materials of custom blocks are destroyed, custom blocks will drop out of them. When exploding, custom blocks do not break. The code has also been optimized and many abstractions have been added for future updates.1.1.2.7Fixed a bug with enchantmentsMar 1, 2024 It was impossible to create an item without enchanting, this has been fixed1.1.2.6Optimizing block initialization and adding textures for headsFeb 29, 2024 Loading blocks from the config has been optimized. New custom block item settings: Now items with the PLAYER_HEAD material can be added an additional parameter skullmeta.url, which is the texture of the head, textures must be taken from the minecraft-heads Code (Text): item: material: PLAYER_HEAD skullmeta: url: 2588e8e1408455fe05ffd46593d7605a6f5c81ab8d9424fb8f8c2fe3cce6822e1.1.1.6Fixed a bug with command output to the consoleFeb 23, 2024 Fixed a bug with command output to the console1.1.1.5Fixed a bug with loading the display entity spawn commandFeb 22, 2024 Fixed a bug with loading the display entity spawn command, shielding is now unnecessary1.1.1.4Listener optimizationFeb 19, 2024 Block destruction has been optimized, some bugs have been fixed1.1.1.3Support 1.19.4Feb 8, 2024 Fixed a bug where the plugin did not work on 1.19.41.0.1.2Fixed a bug when a block fell out in survivalFeb 8, 2024 Fixed a bug when a block is not fell out in survival1.0.1.1New interaction settingsFeb 6, 2024 New custom block settings: A command field has been added to the interaction field, this is the command that is called when the player interacts (right-clicks) with the interaction object of this block. New permission: blocks-interaction - Permission to interact (right-click) with custom blocks is only needed if blocks-interaction-for-everyone is set to false. New settings in config: Code (Text): blocks-interaction-for-everyone: true #If set to false, players without blockdisplaycreator.blocks-interaction permission are prohibited from interacting with custom blocks. By def true1.0.0.1Fixed some bugsFeb 5, 2024 Fixed some bugs1.0.0Feb 2, 2024
Similar projects
Plugin →Let Me Despawn
Improves performance by tweaking mob despawn rules. Say bye to pesky unintentional persistent mobs.
25MSueta
JourneyMap
Real-time map used for mapping in-game or your browser as you explore.
14.7MSueta
Emotecraft
Create your own emotes in Minecraft.
7.5MSueta
Simple Tpa
A simple tpa plugin which sends requests
5.4MSueta
Common Network
Forge and Fabric Unified Networking Solution
3.9MSueta
Set Home
A lightweight plugin for players to set their homes.
3.8MSueta