/Origami

(WIP) A Minecraft Paper plugin that allows for adding new blocks and items in YAML, using resource packs

Primary LanguageJavaOtherNOASSERTION

Origami Creative Commons License
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.

Build status

What makes this different from other plugins

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.

Getting Started

📖 View the official docs on GitBook for information on how to use the plugin.

The docs are also open source at btarg/origami-docs.

Supported versions

This plugin will only ever support the latest version of Minecraft (Paper) at the time of its release.

Reporting issues

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.

Current progress

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
    • 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

Credits and special thanks