Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

FATEBOUND — Fractured Realms SMP

Your destiny shapes the world. The world shapes your destiny.

FATEBOUND is a full Minecraft MMO gamemode (Paper plugin + matching resource pack) where every player joins the same world, but nobody experiences the same adventure. Each player is assigned a unique fate of five evolving abilities, the weather tells a story, time itself fractures into other eras, and custom 3D bosses roam the world — all rendered through a resource pack that never touches a single vanilla texture.

It is, in one line: Destiny SMP + Chronos SMP + Dynamic World Events + MMO progression.


✨ Features

  • Destiny System — On first join, the world assigns each player 5 random Fate Abilities (out of 14), each with a level, XP, an evolution path, passive buffs, and a custom icon. Nobody gets the same hand.
  • Ability Evolution — Abilities level up from what you actually do. Explorer Soul → Caveborn → Ruinwalker → Dimensional Seer. A betrayer's path awakens dark evolutions. Each level-up is broadcast and the ability's passive grows stronger.
  • Fate Shards — A destiny currency earned from Fate Challenges, boss kills, and trades. Spend them to reroll abilities, unlock evolution paths, and buy destiny items. Merchant Soul / Ancient Knowledge abilities boost your yields.
  • Fate Challenges — Every 5 minutes each player gets a random task (explore chunks, defeat hostiles, build blocks, trade with players) tracked live via the action bar, paying Shards + Destiny XP on completion.
  • World Event Engine — The weather is a message, not decoration. Clear → Golden Age, Heat → The Ocean Awakens, Rain → Nature Rebirth, Storm → The Fracture. Each state drives ambient particles, crop growth, monster empowerment, visual lightning, and a chance to spawn a boss.
  • Chronos / Time Fractures — The Age Clock can drag a region into another era (Ancient / Medieval / Future), spawning era-specific custom mobs for ~30 minutes before time repairs itself.
  • Custom 3D BossesThe Chronos Guardian: an armored giant with floating time crystals, idle breathing, attack lunges, a Time Freeze special, and a Phase 2: Time Collapse that empowers its melee and halves cooldowns. Rendered with vanilla display entities + a custom resource-pack model — no ModelEngine, no NMS, no external dependencies.
  • Custom Items — The Chronos Blade (dash + slow-time), Fate Shards, era relics, and ability totems — all via CustomModelData so vanilla items stay completely intact.
  • Cinematic First Join — A title fade, an "ancient voice" sound, and a staggered reveal of your five fates.
  • Admin Control — A chest GUI (/fatebound) plus commands to spawn bosses, force events, set eras, give items, and reload config.

📦 What's in this repo

SMP/
├── pom.xml                      # Maven build (Paper 1.21.4, Java 21)
├── src/main/java/com/fatebound/ # The plugin
│   ├── FateboundPlugin.java     #   wiring / lifecycle
│   ├── destiny/                 #   abilities, XP, evolution, passives
│   ├── currency/                #   Fate Shards
│   ├── tasks/                   #   5-minute Fate Challenges
│   ├── world/                   #   World Event Engine + eras + fractures
│   ├── boss/                    #   display-entity bosses + animations
│   ├── items/                   #   CustomModelData item registry
│   ├── ui/                      #   admin + destiny chest GUIs
│   ├── join/                    #   first-join cinematic
│   ├── command/                 #   /destiny /fate /task /fatebound
│   ├── pack/                    #   built-in resource-pack HTTP server
│   └── data/                    #   per-player YAML persistence
├── src/main/resources/          # plugin.yml, config.yml, messages.yml
├── resource-pack/FateboundPack/ # the resource pack (source)
├── resource-pack/FateboundPack.zip  # ready-to-serve pack
└── tools/gen_resource_pack.py   # regenerates the pack (PIL + ffmpeg)

The release ships two assets: Fatebound-1.0.0.jar (the plugin) and FateboundPack.zip (the resource pack).


✅ Requirements

  • Paper 1.21.4 (or any 1.21.x with the modern item-model system; 1.21.4 is the tested target)
  • Java 21 (for the server, and for building)
  • Python 3 + Pillow + ffmpeg only if you regenerate the pack (the zip is already built for you)

🚀 Installation (server owners)

  1. Drop Fatebound-1.0.0.jar into your server's plugins/ folder.
  2. Start the server once so the Fatebound/ config folder is generated, then stop it.
  3. Place FateboundPack.zip into plugins/Fatebound/ (the plugin serves it for you).
  4. In server.properties, point the server at the built-in pack server:
    resource-pack=http://<your-server-ip>:8770/FateboundPack.zip
    (The port is configurable in plugins/Fatebound/config.yml under resource-pack.port.)
  5. Restart. Players will be prompted to accept the pack — accepting is what makes bosses, the destiny UI, and custom items render correctly.
  6. Join and read "THE WORLD HAS AWAKENED — Your destiny is waiting..."

Prefer to host the pack yourself? Upload FateboundPack.zip to any public URL and put that URL in server.properties instead. The plugin works either way.


🔨 Building from source

# requires JDK 21 + Maven
mvn clean package
# -> target/Fatebound-1.0.0.jar

Regenerate the resource pack (optional — the zip is committed):

pip install pillow
python tools/gen_resource_pack.py
# -> resource-pack/FateboundPack/ and resource-pack/FateboundPack.zip

🎮 Commands & permissions

Command Description Permission
/destiny Open your destiny panel (view abilities, click to reroll for Shards) everyone
/fate Show your Fate Shard balance everyone
/fate pay <player> <amount> Transfer Fate Shards to another player everyone
/task Show your current Fate Challenge + progress everyone
/fatebound reload Reload config.yml + messages.yml fatebound.admin
/fatebound spawnboss <chronos_guardian> [x y z] Spawn a boss fatebound.admin
/fatebound setera <ANCIENT|MEDIEVAL|FUTURE> Set the global era fatebound.admin
/fatebound forceevent <CLEAR|HEAT|RAIN|STORM> Force a world event fatebound.admin
/fatebound give <player> <item> [amount] Give a custom item fatebound.admin

fatebound.admin defaults to OP. Opening /fatebound with no args shows the FATEBOUND CONTROL GUI.


🧱 How the resource pack works (and why it won't break vanilla)

The pack uses Minecraft 1.21.4's item-model system. For each vanilla item we touch, we provide an assets/minecraft/items/<item>.json that is a range_dispatch on custom_model_data with the vanilla model as the fallback. Unrecognised data renders as the normal item; only our reserved IDs get a custom model.

CustomModelData map (matches com.fatebound.items.CustomItems + boss IDs):

ID range Material Used for
5001 netherite_sword Chronos Blade
60016014 paper 14 ability icons (destiny menu)
7001 nether_star Fate Shard
70027005 paper Era relics + Chronos Core
80018004 paper Boss / era-mob 3D models (Guardian, Titan Beast, Royal Knight, Time Drone)
8005 paper Orbiting time crystal

Bosses are item_display entities holding a paper with the boss CustomModelData, animated every tick via interpolated transformations (idle breathing, attack lunge, cast pulse) with orbiting crystal sub-displays. The hitbox/health/aggro come from a silent, invisible zombie "engine" whose damage is intercepted and counted in a plugin-owned health pool — so boss HP is independent of vanilla attribute limits, and the engine can never die from the environment. No vanilla entity files are replaced.

The pack's pack.mcmeta uses a wide supported_formats range so nearby versions accept it without an "incompatible" warning; content targets 1.21.4's item-model schema.


⚙️ Configuration

config.yml covers destiny XP curves, reroll cost, task interval/rewards, weather weights, fracture chance/duration, boss health/damage/Time-Freeze tuning, the resource-pack server port, and persistence. messages.yml holds every player-facing string in MiniMessage format.


🗺️ Roadmap

This release is the Phase 1 core plus the boss system that proves the pack renders custom 3D bosses correctly.

  • Phase 2 — more bosses, full era-mob rosters, ability questlines, world-memory events.
  • Phase 3 — civilization evolution, the full Chronos timeline, persistent world history ("100 days later, a player finds the ruined village").

📜 License

MIT — see LICENSE. Built for the FATEBOUND community. Every player has a destiny; every action changes the world.

About

FATEBOUND: Fractured Realms SMP — a Paper 1.21.4 MMO gamemode where every player gets a unique evolving destiny, the weather tells a story, time fractures into other eras, and custom 3D bosses roam the world. Plugin + resource pack; no vanilla textures replaced.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages