Cleveland's Custom Blocks

A simple, lightweight, clean and robust custom block plugin

ClevelandCustomBlocks

A simple, lightweight, clean and robust custom block plugin

For Normal Users

Introduction

  • Compatible with Paper 1.21.4 and later.
  • Built with Kotlin/JDK 21

How to Install

  • Download the plugin JAR (named ClevelandCustomBlocks-[version].jar).
  • Drop it into your server’s plugins/ folder.
  • Start the server once. The plugin will create its data folder and copy a default define.yml into: plugins/ClevelandCustomBlocks/define.yml
  • (Optional but recommended) Prepare a resource pack (see "How to build resourcepack" below) so your custom blocks render as intended.
  • Make sure your server is running Paper 1.21.4+ and clients use the same resource pack. (or just use force server-resourcepack)

How to Configure

See wikipage: How-to-Configure-Resourcepack-and-define.

How to Use

Commands & Permissions

Permissions:

  • clevelandcustomblocks.use: All Commands (default: OP)

Commands

  • /ccbs give [player|@selector] [pack:id] [amount] Give item

  • /ccbs reload: Reloads define.yml and reports changes/warnings.

  • /ccbs chunk GET: Summarize all registered custom blocks in the current chunk.

  • /ccbs chunk CLEANUP Forcibly clean all registered custom blocks in the current chunk. ```

Play

Place Just place it like a normal block. The plugin:

1. Replaces the target block with an invisible **collision** block (`BARRIER`).
2. Spawns an `ItemDisplay` at the block center showing your model.

Interact

- Right-click** the block to run configured **actions** (as player/server).
- Left-click** the block to **remove** it. In **Creative**, it removes without dropping. In **Survival**, it drops the corresponding item.

Links

Troubleshooting

  • Placed block shows as barrier / no model: Ensure the client has your resource pack and the selector model exists under the correct path for your originalBlock.
  • Right-click does nothing: Make sure the block definition has an action: section and your commands are valid for your server/plugins. $clicker becomes the player name.
  • Items don’t stack as expected: The plugin respects the base item’s maxStackSize and splits large grants into multiple stacks.

The Cleveland's Custom Blocks Team

profile avatar
  • 1
    Projects
  • 125
    Downloads
Donate