This work is licensed under a Creative Commons Attribution-NonCommercial 4.0 International License.
Custom blocks and items for Paper
Origami is a Minecraft server plugin which allows a server admin to easily add configurable custom blocks, items and crafting recipes using YAML configuration files.
The plugin generates and hosts resource packs to allow vanilla clients to connect and play with your custom content.
Origami is designed to be as simple as possible for a Minecraft server owner to create custom content quickly. It is NOT an advanced custom block/item API for other developers to use, and it does not require any coding knowledge to use by design. Other plugins tend to be more developer-focused rather than being as human-friendly as possible for the average user.
📖 View the official docs on GitBook for information on how to use the plugin.
The docs are also open source at btarg/origami-docs.
This plugin will only ever support the latest version of Minecraft (Paper) at the time of its release.
You can report issues with the plugin or the docs on this GitHub repository's issues page. When reporting a bug, send a full log file and walk through the steps needed to replicate the bug.
This is not a comprehensive list of features, but serves instead as a developer to-do list.
- Reload commands for all content
- "Content Packs": content can be organised into folders under the
custom
folder - Example content generation for first-time users
- Example crafting recipe
- Example block
- Example item
- Example models
- Custom blocks via YAML
- Custom models via Minecraft JSON model format
- Custom block break speed (needs more work)
- Loot tables
- Sounds for breaking and placing blocks
- Blocks can be pushable
- Custom stairs and slabs
- Custom breaking particles
- World awareness (e.g. detecting when another block is near it, when a player steps on it)
- Custom containers
- Custom items via YAML
- Custom models via Minecraft JSON model format
- Custom name, lore and flags
- Translated strings support
- Legacy formatting and MiniMessage support
- PlaceholderAPI support
- Custom durability (tools, armour etc.)
- Editable enchantments
- Configurable allowed enchantments
- Editable attributes (e.g. attack power, armour defense stat)
- NBT override via NBT string
- Custom food items (function on consume)
- Custom tool levels and blocks that can only be broken with custom tools
- Custom sounds for breaking
- Custom crafting recipes via YAML
- Cooking recipes (Furnaces, Campfires etc.)
- Smithing recipes (still very janky)
- Potion recipes
- Villager trades
- Custom item repair recipes (defined in the item's YAML rather than as a separate "recipe")
- Custom enchantments
- YAML event system: events can be subscribed to such as when a block is broken, when an item is used or consumed
etc. via a string in a YAML file
- TODO: add more events
- Resource pack generation
- Resource pack hosting
- Resource pack merging / multiple pack support
- In-game UI for obtaining items (AKA "creative mode")
- Web UI for visual editing (see preliminary work here)
- Backend API with Javalin
- Vue.js frontend
- The PaperMC Discord for being incredibly helpful and quick to respond to any questions
- Unnamed Team for creating the Creative API and yusshu for helping me with implementing it
- Dannegm on GitHub for providing an initial implementation of custom blocks using Item Display entities