Mod

Project MMO: Pufferfish Skills Compat

Quick rating

Project MMO: Pufferfish Skills Compat

No reviews yet

Adds a customizable compatibility bridge between Project MMO and Pufferfish Skills. Gaining levels in different Project MMO skills will give you Pufferfish skill points to any configured skill trees.

QoL & Tweaks
Mod Loaders
NeoForge
Minecraft

Community voices

Reviews

Versions
Loading versions…
Match includes

Click once to include, again to exclude, again to clear

Rating Any
Any 0.5 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0
Min
Max
Play Status
Reviews
Time Played
hrs+
Verified developers only
Has developer response
List view
Grid view
Compact view
Sort by
Date
Rating
Helpful
Unhelpful
Edited
Sort ascending
Delete this review?

This removes your review from the project. You can write a new review after.

Review submitted for moderation

Your review has been sent to moderators, who will check that it meets our guidelines before it appears publicly.

No reviews yet. Be the first to review this project!

Get it on

Available Platforms

About

Project Details

Type
Mod
Latest Version
pmmo_pufferfish_compat-1.0.0.jar
Authors

For authors

Embed Badge

If you're the author of this project, you can embed a live badge anywhere that supports HTML or Markdown. It updates automatically whenever ratings change.

Custom banner text
ModDex rating badge preview

Use HTML for any page that supports it, or Markdown for README files and Markdown-based descriptions.

Identifiers

Platform IDs

CurseForge ID

Resources

External Links

Source Issues Wiki Discord

About

Description

PMMO Pufferfish Compat turns Project MMO skill levels into spendable points in Pufferfish Skills trees. Mine some stone → level up Mining in PMMO → unlock nodes in whatever Mining tree your modpack ships. It's the cable between PMMO's progression loop and Pufferfish's skill-tree UI — a pure bridge, configured entirely through datapack JSON.

Features

Datapack-configurable skill mapping

Author one JSON file per PMMO skill in data/<your_pack>/pmmo_pufferfish_compat/skill_map/:

{
  "pmmo_skill": "mining",
  "awards": [
    {
      "skill_category": "your_pack:mining_tree",
      "skill_points": 1,
      "every_x_pmmo_levels": 1,
      "starting_pmmo_level": 1,
      "max_skill_points": 50,
      "reconcile": "additive"
    }
  ]
}

Each award targets one Pufferfish category. A single PMMO skill can feed many categories — point the awards array at as many trees as you want, each with its own rate, threshold, and cap. Multiple files for the same PMMO skill merge cleanly.

Tunable progression per award

Field Default Meaning
skill_points 1 Points awarded per milestone
every_x_pmmo_levels 1 PMMO levels between milestones
starting_pmmo_level 1 Don't grant anything below this level
max_skill_points unbounded Stop awarding after this total
reconcile additive What to do when expected and granted drift

Worked example: every_x_pmmo_levels: 3, starting_pmmo_level: 5, skill_points: 2 means "starting at PMMO level 5, grant 2 points; another 2 at level 8, 11, 14, and so on."

Four reconcile modes

The genuinely interesting design choice. Configs drift over time — you tweak a rate, a player's points have been spent, PMMO loses levels on death. Each award picks how the bridge handles it:

  • additive (default) — top up missing points, never claw back. Safest. Players keep what they have when you lower a rate.
  • trim_unspent — top up, and claw back unspent points if the new expected is lower. Won't refund nodes already bought.
  • strict — enforce exact alignment. If expected drops below granted, the player gets a clean respec: every node in that category refunds, and the total drops to the new expected.
  • none — only react to live level-ups, never audit. Useful when other sources feed the same category and you want this bridge to stay out of the way.

Sync at the right moments

The bridge applies the formula at three well-defined moments — never as a constant background process:

  • On level change — when a player's PMMO skill levels up (or down), the delta is granted live. Hot path: zero Pufferfish reads, just a write.
  • On player join — one tick after login, every mapping is audited against the player's current PMMO levels. Catches drift from new mappings added while they were offline.
  • On /reload — every online player is re-audited. Edit a mapping, /reload, the change applies to everyone instantly.

For when those aren't enough, /pmmopufferfish resync is the admin escape hatch.

Per-source attribution

Pufferfish tracks point grants per source. This bridge uses stable per-skill source IDs (pmmo_pufferfish_compat:pmmo/<skill>), which means:

  • This mod, FTB Quests, an admin's /puffish_skills command, and a future skill_tree-style content pack can all feed the same category without stepping on each other.
  • Changing a mapping's rate doesn't orphan old grants — the source ID is stable, only the expected total moves.
  • Strict-mode respec refunds the nodes the player chose, not their entire point balance.

Performance-aware

The XpEvent listener is the hot path on any active server. It's been built around that:

  • Source-id strings interned at config load, never rebuilt per event.
  • No Stream chains, no lambda allocation, no boxing on the event path.
  • No Pufferfish read-back for live grants — only the audit moments (login / /reload) do that work.
  • Mappings indexed in primitive-style arrays keyed by PMMO skill name.

Setup

You need two pieces in your datapack:

  1. A Pufferfish category (either authored yourself or shipped by another mod):
    data/<pack>/puffish_skills/config.json          # lists category names
    data/<pack>/puffish_skills/categories/<name>/   # category.json, skills.json, etc.
    
  2. A bridge mapping per PMMO skill you want to wire:
    data/<pack>/pmmo_pufferfish_compat/skill_map/<file>.json
    

Drop a /reload and you're live.

Commands

/pmmopufferfish resync              — resync the executing player (op-only)
/pmmopufferfish resync <player>     — resync one player
/pmmopufferfish resync @a           — resync everyone online

All variants require permission level 2 (op / cheats enabled).


Why this mod?

PMMO already has a polished skill-up loop — break blocks, kill mobs, brew potions, all of it. Pufferfish Skills already has a polished tree UI with rewards, prerequisites, and per-category point pools. Both are mature mods that hit their slot well.

What was missing was the cable between them. An opinion-free, performance-aware, datapack-configurable cable that lets a modpack author say "1 point in Mining for every level in PMMO Mining, capped at 50, additive reconcile" in one JSON file and have it work — including drift correction, multi-source coexistence, and live config edits.

This mod is that cable.

It was inspired by daedalus_dev's skill_tree, which uses Pufferfish Skills the same way but with its own custom progression system. PMMO can fit that slot just as well with a small adapter, and I wanted that adapter.

Compatibility

  • Pufferfish Skills 0.17.3+ (required)
  • Project MMO 2.7.35+ (required)
  • Coexists with skill_tree, FTB Quests, admin point grants, and any other source feeding the same Pufferfish categories.
  • NeoForge 1.21.1.

Screenshots

Gallery

This project has no gallery images yet.

Versions

Files

Relations

Project Relations

More like this

Similar Mods

Suggestions use data such as tags, dependencies, dependents, descriptions, titles, and more to rank how much they overlap with this mod.

On ModDex

Community snapshot

0
Ratings
0
Followers
0
In stacks

By the numbers

Statistics

<1,000
Downloads
Last Updated
Created
Last synced
When ModDex last fetched and imported data for this project from CurseForge or Modrinth. High-traffic and active projects are checked more often.
Next pipeline sync