RPG Core
Overview
RPG Core is the progression layer of a BTC server. It is one large extension (built under the name RPGBundle) that groups the stat system, a custom item catalogue with sets and gems, professions with levels, a global level, backpacks and wardrobe, an auction house, secure player trade, custom crafting stations, custom fishing, movement abilities (crawl, vault, climb) and Ether corruption zones.
Almost everything is configured in one entry, RPG Core Configuration, which has one section per system. The other entries are small building blocks: actions to give items or change stats, facts to read them, menus to open, and artifacts to store player data.
The core idea is the stat model described below: every player has numeric stats (strength, health, crit chance, speed...), equipment adds to them, and the result drives combat, gathering and vanilla attributes.
Features
- Stat model — 77 stats with a base value per player, bonuses from equipped items and named constraints.
- Item catalogue — categories of custom items with stats, rarity, level requirements and equipment sets with set bonuses.
- Professions — levels, XP curves, level rewards (permanent stats and triggers), boosts, competitions and a profession menu.
- Global level — a weighted level computed from professions and quests, used to gate movement abilities and more.
- Storage — personal backpacks and a wardrobe (accessories and elytras) saved in artifacts.
- Economy — an auction house and a secure player-to-player trade with a rolling 24-hour currency limit.
- Crafting — custom recipes, anvil, grindstone, loom, alchemy, composter, cartography and workstations with level gates.
- Movement — crawl with a double sneak, automatic vault and wall climb, with optional BetterModel animations.
- Corruption — zones of Ether corruption that spread, can be purified and spawn corrupted mobs.
- Commands — admin tools for stats, professions, items, boosts and inventories, plus player commands for auction, trade, recycling and unstick.
Installation
- Install the GUI extension: menus (professions, backpack, wardrobe, auction, trade) are rendered with it.
- Install a Vault-compatible economy plugin (Vault) if you use the auction house or trade with the default economy.
- Optionally install UiCore (menus and progression HUD), BTCMobs (corrupted mobs, mob groups), Profiles, Party and BTC Sky for the integrations that read them.
- Put the RPG Core JAR in
plugins/Typewriter/extensions/and restart the server.
Getting started
- In the TypeWriter web panel, open a static page and add a Player State artifact: it stores each player's base stats and effects.
- Add a Profession Data artifact if you use professions.
- Add the RPG Core Configuration entry. In
stats, setartifactto the Player State artifact. Leavestats.statsempty to load the built-in defaults, or add items to override the display name, default,minValue,maxValueordisplayFormatof a stat. Inprofessions, setartifactto the Profession Data artifact and add a profession. - In
items, add a category and a catalogue item withstatssuch asSTRENGTHandHEALTHand ararity. - Publish. Give yourself the item with
/rpgitem give, wear it, and check the value with/rpgstat info <player> STRENGTH. - Trigger actions such as Give BTC Item, Add Stat or Profession Grant XP from quests and NPCs.
Create a single RPG Core Configuration entry and keep one source of truth for all sections.
How it works
The stat model has four layers.
- Definition. Every stat is a fixed identifier (
STRENGTH,HEALTH,CRIT_CHANCE,SPEED,MINING_EFFICIENCY...). Each has a scope (PLAYER: only the player's base stat can hold it;ITEM: only equipment bonuses;BOTH) and a unit that says how it is stored: absolute vanilla units (health points, armor), a percent of the vanilla base (speed,100= vanilla), a fraction from 0 to 1 (crit chance, resistances), a multiplier where 1 is neutral, additive percentage points, or plain points. The unit is intrinsic to the stat; the configuration cannot change it. - Base value. Each player has a persistent base value per stat, starting at the stat's
defaultValue, saved in the Player State artifact. It changes through Add Stat, Remove Stat, profession level rewards (stats) and/rpgstat. It is rounded to 2 decimals (integers forINTEGERstats) and clamped betweenminValueandmaxValue. - Equipment bonuses. Whenever the equipment changes, the extension recomputes the bonuses of the helmet, chestplate, leggings, boots, main hand, off hand and the active wardrobe page. For each worn item it adds the stats from its catalogue definition, the stat component stored on the item, and vanilla enchantments mapped to stats. Items whose profession-level requirements are not met give nothing. Stats with scope
PLAYERignore equipment. These bonuses are temporary and never saved. - Constraints. Constrain Stat holds a stat between a
minand amaxunder a namedsourceuntil Release Stat Constraint lifts it: a duel arena that caps attack, a cursed hall that lowers defence. Several constraints tighten each other (highest floor, lowest ceiling; the ceiling wins on conflict).
The total value is base + equipment, clamped, then constrained. Stats that match a vanilla attribute (health, armor, speed, attack damage, jump strength, reach...) are pushed to that attribute with the unit conversion; the others are read by the code that needs them: crit chance and damage, lifesteal, dodge, block, double drops, mining and woodcutting efficiency, fishing strength, profession XP boost and so on.
Temporary Stat adds a stat for a duration (potions, buffs). Read a stat in a condition with Player Stat, which returns the value multiplied by scale and rounded.
Configuration
Everything below is a section of RPG Core Configuration.
| Section | What it configures |
|---|---|
items | Item catalogue (categories, items, rarity, requirements), equipment sets and gems. |
stats | The Player State artifact, per-stat overrides, global options (regeneration, crit, lifesteal, efficiency, mob groups, bonus loot) and command messages. |
professions | The profession list, levels, XP curve and rewards, the profession menu and messages. |
inventory | Backpack and wardrobe layouts and storage. |
auction | Auction house taxes, durations, economy and menus. |
trade | Secure trade: distance, request lifetime, stack limit, 24-hour currency limit, ledger artifact, economy and menu. |
movement | Crawl, vault and climb tiers, global level gates, BetterModel animations. |
crafting, specialRecipes, anvil, enchantment, alchemy, grindstone, loom, cartography, cartographyCrafting, composter, workstations, industrial | Recipes and custom workstations, each gated by levels or delays. |
fishing, gathering, mobTrap | Custom fishing (including lava and void), unified resource gathering (XP, loot, gating) and mob capture. |
boosts, globalLevel, respawn, recycling, divers, beacon | Temporary boosts, the global level formula, conditional respawn, recycling, resin and the island beacon. |
etherCorruption | Ether corruption zones. |
combatFeedback, vanillaTooltip | Damage numbers, health bars and hidden vanilla tooltips. |
Commands
All commands are registered at startup with their aliases. Admin commands need borntocraft.rpg.admin.
| Command (aliases) | Permission | Description |
|---|---|---|
/rpgstat (statadmin, btcstat) | borntocraft.rpg.admin | list, info <player> <stat>, set, add, remove <player> <stat> <value>, reset <player> <stat>. Stats with scope ITEM cannot be changed directly. |
/rpgadmin (rpgadm) | borntocraft.rpg.admin | stat <player> <stat> <get|set|reset> [value], profession <player> <profession> <get|setlevel|reset> [value], boost <player> <stat> <amount> <seconds>, corruption <create|remove|list>, mana <player> <set|give|get>, reload (reapplies stats of online players), debug <player>. |
/rpgprofession (profes, prof) | borntocraft.rpg.admin | addxp, removexp, setxp, addlevel, setlevel, reset, info, list, menu. |
/rpgitem (btcitem, customitem) | borntocraft.rpg.admin | give, remove, list, info, menu. |
/rpgcraft (craftadmin, btccraft) | borntocraft.rpg.admin | list, inspect, preview, menu for recipes. |
/rpginventory (btcinv, inventoryadmin) | borntocraft.rpg.admin | backpack <list|open|reset>, wardrobe <open|info>, list. |
/rpgboost (boost, xpboost) | borntocraft.rpg.admin | give, clear, list profession XP boosts. |
/questrewardreset (qrr, resetquestreward) | btc.admin.questrewardreset | <menuId> <player|all>: resets claims of a Quest Reward Menu. |
/rpgauction (ah, auction) | none | browse, management, sellmenu, collection, list <price> <minutes> [buyout], bid <id> <amount>, buy <id>, cancel <id>, claim, finalize (admin). |
/rpgtrade (trade, p2ptrade) | none | <player> opens a request; accept <id>, deny <id>, money <amount>, confirm, cancel. |
/rpgrecycling (recycling, recycle) | none | Opens the recycling menu. |
/unstick (rollback) | none | Triggers the entry whose id is action:system_unstick; it answers with an error if that entry does not exist. |
Permissions
| Permission | Grants |
|---|---|
borntocraft.rpg.admin | All admin commands above. |
btc.admin.questrewardreset | /questrewardreset. |
Placeholders
RPG Core registers the MiniPlaceholders expansion btc. See Placeholders for the full list.
Entries
42 entries, generated from the extension source.
Actions24
- BTC Backpack MenuBTC Backpack Menu
- BTC Effect ImmunityRend immunisé à des effets vanilla pendant une durée
- BTC Give Item ActionGive a BTC custom item to the player
- BTC Keep ExperienceConserve une part de l'expérience à la mort
- BTC Movement ActionTrigger an RPG Core movement action
- BTC Profession Grant XPGrant experience to a profession
- BTC Profession XP PotionAccélère l'expérience d'un métier pendant une durée
- BTC Remove Item ActionRemove a BTC custom item from the player
- BTC Reveal CreaturesFait luire les créatures proches d'une nature donnée
- BTC Slow RegenerationRend de la vie lentement pendant une durée
- BTC Stat Add ActionIncrease a player's BTC stat by the configured amount
- BTC Stat Remove ActionDecrease a player's BTC stat by the configured amount
- BTC Temporary StatApplique une statistique RPGCore pendant une durée, puis la retire
- BTC Wardrobe MenuBTC Wardrobe Menu
- Constrain Player StatHold a player statistic between bounds while they are somewhere
- Create Corruption ZoneCreate Corruption Zone
- Purify Corruption ZonePurify Corruption Zone
- Quest Reward MenuPersistent reward menu where players can claim items once
- Release Player Stat ConstraintLift a constraint held on a player statistic
- RPG Profession MenuRPG Core Profession Menu
- Spawn Corrupted MobSpawn Corrupted Mob
- Start Profession CompetitionDémarrer un concours de métier
- Stop Profession CompetitionArrêter un concours de métier
- Unlock RecipeUnlocks a specific crafting recipe for the player by its NamespacedKey
Events4
- On Corrupted Mob SpawnOn Corrupted Mob Spawn
- On Corruption PurifiedOn Corruption Purified
- On Corruption SpreadOn Corruption Spread
- On Player Corruption ExposureOn Player Corruption Exposure
Facts6
- BTC Item Count FactCount custom BTC items in a player's inventory
- BTC Player Stat FactThe value of an RPGCore statistic for the player
- Corruption Level FactCorruption Level
- Corruption Zone Count FactCorruption Zone Count
- Profession Currency FactRevenus d'un métier
- Purification Progress FactPurification Progress
Audiences1
- BTC Quest Item AudienceForces players to keep an item in their inventory with full control
Artifacts6
- Backpack Storage ArtifactEtat persistant des backpacks BornToCraft
- BTC Auction House ArtifactBTC Auction House
- BTC Player State ArtifactArtefact pour stocker l'état complet des joueurs (stats + effets)
- BTC Player Trade ArtifactBTC Player Trade Ledger
- Profession Data ArtifactArtifact unifié stockant les données de TOUTES les professions d'un joueur (niveaux, XP, boosts, etc.)
- Wardrobe Storage ArtifactEtat persistant de la wardrobe BornToCraft
Manifests1
- BTC Rpgcore ConfigurationConfigure BornToCraft RPG core systems (Items, Stats, Professions, Inventory, Crafting, Commands, Fishing, Auction, Movement, Trade)
Troubleshooting
No btc_rpgcore_configuration entry found! Create one in TypeWriter UI. Nothing is loaded without the configuration entry. Add one and publish.
Stats reset or are not saved. stats.artifact is empty or points to a missing artifact: base stats are then only held in memory. Link a Player State artifact. The same applies to professions.artifact for profession progress.
An item gives no stats. Check the stat id (aliases such as ATTACK_DAMAGE or MAX_HEALTH are accepted), that the item is worn in an armor, hand or active wardrobe slot, that the player meets its profession requirements, and that the stat scope is not PLAYER. A stat listed in the configuration with a displayFormat must contain {value}, and a minValue must not exceed maxValue, or the configuration fails to load.
percentageMultiplier must be ... at load. For stats whose unit is fixed (for example fractions and multipliers use 100, percent-of-vanilla stats use 1), the display multiplier is checked. Remove the override or use the value in the error.
/rpgstat set refuses a stat. It says the stat is item-only: its scope is ITEM, so only equipment can hold it. Use an item or a temporary stat.
/unstick says the action is not configured. Create a triggerable entry with the id action:system_unstick.
The auction house or trade cannot move money. The default economy is Vault: install Vault and an economy provider, or configure the economy adapter of the section.