Special support on Discord
ModelFrameWork
Spigot

ModelFrameWork

An Object-Based Framework for Advanced Minecraft Models

๐ŸŽฎ ModelFramework

A lightweight and extensible Paper plugin framework for connecting BetterModel models to interactive world objects.

Transform any BetterModel model into a fully interactive object โ€” crates, furniture, machines, doors, decorations, or anything you can imagine.


โš ๏ธ Premium Plugin

This repository contains a LIMITED public version of ModelFramework.
The complete version with full source code, all features, and future updates is available exclusively on Minecraft-Market.
๐Ÿ”— Get the Premium version: ModelFramework on MineCraft-Market
What's different in Premium?
- Complete source code and all core classes
- Full feature set
- Priority support and updates
- Commercial server usage license

โœจ What ModelFramework Does

  • YAML-Based Object Definitions โ€” Define objects entirely through configuration files
  • BetterModel Integration โ€” Seamless connection to BetterModel 3.3.0+ API
  • Animation System โ€” Trigger animations on interaction with full control
  • Smart Interaction โ€” RIGHT_CLICK, LEFT_CLICK, SHIFT variants with item requirements
  • Item Provider System โ€” Oraxen, ItemsAdder, and Vanilla item support
  • Hand/Inventory Check โ€” Configure whether required items must be held or just in inventory
  • State Machine โ€” Simple but powerful state system for objects
  • Smart Rotation โ€” Models automatically face the player direction
  • Scale & Offset โ€” Configure model scale and position per object
  • Category GUI โ€” Two-level GUI for browsing and selecting objects
  • Instance Persistence โ€” Placed objects survive server restarts
  • Security โ€” OP-only placement with automatic item cleanup
  • Action System โ€” Sounds, messages, and commands on triggers
  • Cooldown System โ€” Per-player, per-instance cooldowns
  • Performance โ€” Fully event-driven, no tick loops
ModelFramework is not a crate plugin.
It's a generic framework. Crates are just one example.

๐Ÿ“‹ Requirements

DependencyVersionRequired
Paper1.21.1+โœ… Yes
Java25+โœ… Yes
BetterModel3.3.0+โœ… Yes
Oraxen1.207.0+โŒ Optional
ItemsAdderโ€”โŒ Optional
PlaceholderAPI2.11.6+โŒ Optional

๐Ÿ“ File Structure

plugins/

โ””โ”€โ”€ ModelFramework/

โ”œโ”€โ”€ config.yml

โ”œโ”€โ”€ objects/

โ”‚ โ”œโ”€โ”€ crates.yml

โ”‚ โ”œโ”€โ”€ furniture.yml

โ”‚ โ””โ”€โ”€ machines.yml

โ””โ”€โ”€ data/

โ””โ”€โ”€ instances.yml

Example configuration
# ========================================
# ModelFramework Configuration
# ========================================

# Debug mode - shows detailed info in console
debug: false

# GUI Settings
gui:
  title: "&8โฌ› Model Selector"
  size: 54

# Cooldown defaults (seconds)
defaults:
  cooldown: 3

# Data storage
storage:
  # AUTO_SAVE interval in minutes (0 = disabled)
  auto-save: 5

# Messages
messages:
  prefix: "&7[&bModelFW&7] "
  no-permission: "&cYou don't have permission!"
  object-not-found: "&cObject not found: &e%object%"
  placed: "&aObject &e%object% &aplaced successfully!"
  removed: "&cObject removed!"
  cooldown: "&cPlease wait &e%time% &cseconds!"
  reload: "&aConfiguration reloaded! &7(%time%ms)"
  item-given: "&aYou received &e%object%&a!"
  missing-item: "&cYou need &e%item% &cto do this!"
  no-console: "&cThis command can only be used by players!"
  inspect-header: "&7&m----------&r &bInstance Info &7&m----------"
  inspect-none: "&cNo instance found at target location."
  debug-enabled: "&aDebug mode enabled!"
  debug-disabled: "&cDebug mode disabled!"