premium banner
Progressive weapon & armor upgrading system for Hytale servers

Description

โš”๏ธ EcoTaleReforging

Progressive weapon & armor upgrading system for Hytale servers

Place a Reforge Station block, press F โ€” and upgrade your gear through 10 enhancement levels with rising risk, material costs, and powerful stat bonuses.

Version Java License Discord


๐ŸŒ EcoTale Ecosystem

EcoTaleReforging is part of the EcoTale plugin suite โ€” interconnected mods that together build a rich player-driven economy:

Plugin Description Synergy with Reforging
Ecotale Core economy โ€” wallets, currency, transfers ๐Ÿ’ฐ Coin cost for each upgrade level
EcoTaleIncome Earn money from mobs, mining, woodcutting, farming ๐Ÿ’ต Players earn โ†’ spend on reforging
EcoTaleBanking Deposits, loans, credit rating ๐Ÿฆ Save up for expensive high-level reforges
EcoTaleQuests Daily & weekly quests ๐ŸŽฏ Quest rewards fund reforging materials
EcoTaleRewards Login calendar & streak bonuses ๐ŸŽ Daily rewards include reforging materials

Tip: With all EcoTale plugins installed, players follow a natural loop: earn (Income) โ†’ save (Banking) โ†’ upgrade gear (Reforging) โ†’ complete harder quests (Quests).


โœจ Features

Feature Description
โš’๏ธ Progressive Reforging 10 enhancement levels with configurable success chances (90% โ†’ 5%)
โš”๏ธ Damage & Defense Bonuses Weapons gain flat DMG bonus, armor gains flat DEF reduction โ€” applied in combat via ECS damage system
๐Ÿช™ Material & Coin Costs Each level requires specific ingot types and coin amounts
๐Ÿ’ฅ Failure Penalty Item is destroyed on failure โ€” configurable % of crafting materials returned
๐Ÿ›ก๏ธ Protection Mode Pay extra coins to save your item on failure (level resets to 0 instead of destruction)
๐Ÿ”„ Reverse Recipes 32 built-in item-to-material mappings for failure refunds
๐Ÿชจ Reforge Station Block Placeable anvil-style block with custom 3D model โ€” press F to open the reforging GUI
๐Ÿ–ฅ๏ธ Player GUI Insert item โ†’ see chance/cost โ†’ reforge โ€” clean native Hytale UI
๐Ÿ› ๏ธ Admin Panel Full settings editor โ€” levels, allowed items, recipes, general config
โœ๏ธ Character-by-Character Editor Edit item patterns directly in the admin panel using arrow keys
๐ŸŽฏ Wildcard Patterns Weapon_*, Armor_* โ€” supports custom mod items
๏ฟฝ Exclusion List Block specific item types from reforging via wildcard patterns (arrows, staffs, shields, etc.)
๐Ÿงฉ Custom Items Register any modded item with a display name โ€” works in GUI and admin material cycle
๐Ÿ“ฆ Multiple Materials per Level Each reforge level can require more than one material type
๏ฟฝ๐Ÿ”ง Hot Reload Save/Reload from admin panel โ€” no server restart needed
๐ŸŒ 6 Languages Full localization: English, ะ ัƒััะบะธะน, Deutsch, Franรงais, Espaรฑol, Portuguรชs (BR)
๐Ÿ” LuckPerms Permission-based access: ecotalereforging.use, ecotalereforging.admin
๐Ÿ“‹ DynamicTooltipsLib Reforge level and stat bonuses displayed in item tooltips
๐Ÿ–ผ๏ธ Material Icons Ingot icons shown in reforge GUI and admin panel

Admin Panel Sections

Section Description
General Settings Debug mode, language, max level, failure return rate, protection toggle
Level Editor Success chance, coin cost, DMG/DEF bonus, material type & count โ€” with multi-material navigation
Allowed Items Weapon & armor patterns with add/remove/character-level editing
Reverse Recipes Browse, edit, add, remove crafting material return recipes
Plugin Stats Plugin version, number of configured levels

โš”๏ธ How Bonuses Work

Damage Bonus (DMG) โ€” flat additive damage added to every weapon attack.

  • Each reforge level adds its configured weaponDamageBonus to the total
  • The bonus is cumulative across all levels: a +3 weapon adds levels 1 + 2 + 3
  • Formula: finalDamage = baseDamage + totalDmgBonus
  • Example: Iron Sword base 10 dmg, reforged to +3 (bonus +7.5) โ†’ deals 17.5 per hit

Defense Bonus (DEF) โ€” flat damage reduction applied to every incoming hit.

  • Each reforged armor piece contributes its cumulative armorDefenseBonus
  • All equipped reforged armor pieces stack together
  • Minimum damage after reduction is always 1 (can't reduce to zero)
  • Formula: finalDamage = max(1, incomingDamage - totalDefBonus)
  • Example: Player wearing +2 helmet (DEF +3.5) and +1 chestplate (DEF +1.5) โ†’ total DEF reduction is 5.0. A hit of 20 dmg โ†’ takes 15.0 damage

[!NOTE] Reforge bonuses are flat values, not percentages. The "Defense 10%" shown in the vanilla Hytale HUD comes from the base armor item stats, not from reforging. Reforge DEF is an additional flat reduction applied on top of the base armor defense.


๐Ÿ“ฆ Requirements

Dependency Version Required Description
Ecotale โ‰ฅ 1.0.0 โœ… Economy โ€” coin costs for reforging
LuckPerms any โœ… Permission-based access control
DynamicTooltipsLib any โœ… Reforge stats in item tooltips

All dependencies are mandatory!!!

Added support | EconomyAPI |โ‰ฅ 1.4.5 |โœ… |Economy โ€” coin costs for reforging |


๐Ÿš€ Getting Started

# 1. Download the latest release
# 2. Drop into your server's mods/ folder
cp EcoTaleReforging-1.0.2.jar /server/mods/

# 3. Start the server โ€” config and assets are extracted automatically
# 4. Place a Reforge Station block and press F to open the GUI

That's it. All 10 reforge levels are pre-configured with balanced costs and success rates.


๐ŸŽฎ Commands

Command Description Permission
/reforge info Show reforge info for the held item ecotalereforging.use
/reforge help Show available commands ecotalereforging.use
/reforgeadmin Open the admin settings panel ecotalereforging.admin
/reforgeadmin reload Reload configuration from file ecotalereforging.admin

Note: The reforge GUI opens exclusively by pressing F on the Reforge Station block โ€” there is no command to open it.


๐Ÿ” Permissions

Permission Description Default
ecotalereforging.use Use the Reforge Station block and view item info All players
ecotalereforging.admin Admin panel and reload command OP

๐ŸŒ Supported Languages

Language Code File
๐Ÿ‡ฌ๐Ÿ‡ง English en lang/en.json
๐Ÿ‡ท๐Ÿ‡บ ะ ัƒััะบะธะน ru lang/ru.json
๐Ÿ‡ฉ๐Ÿ‡ช Deutsch de lang/de.json
๐Ÿ‡ซ๐Ÿ‡ท Franรงais fr lang/fr.json
๐Ÿ‡ช๐Ÿ‡ธ Espaรฑol es lang/es.json
๐Ÿ‡ง๐Ÿ‡ท Portuguรชs (BR) pt_br lang/pt_br.json

Set the language in config: "language": "ru". Each file contains ~140 translation keys covering all GUI text, messages, and admin panel labels.


โš™๏ธ Configuration

Config file: mods/com.crystalrealm_EcoTaleReforging/EcoTaleReforging.json

Each reforge level is defined as a key ("1" through "10") under the levels object. You can add, remove, or modify levels freely.

Field Type Description
successChance double Probability of success (0.0โ€“1.0). 0.90 = 90%
weaponDamageBonus double Flat DMG bonus added at this level. Cumulative with all prior levels
armorDefenseBonus double Flat DEF bonus added at this level. Cumulative with all prior levels
coinCost double Ecotale currency cost. Set to 0.0 for free (or if Ecotale is not installed)
materials array One or more materials required. Each entry has itemId (string) and count (int)

Default Level Table

Level Success DMG (+this) DMG (total) DEF (+this) DEF (total) Coins Materials
+1 90% +2.0 2.0 +1.5 1.5 100 Iron ร—2
+2 85% +2.5 4.5 +2.0 3.5 200 Iron ร—4
+3 75% +3.0 7.5 +2.5 6.0 350 Iron ร—6
+4 65% +3.5 11.0 +3.0 9.0 500 Cobalt ร—4
+5 55% +4.0 15.0 +3.5 12.5 750 Cobalt ร—6
+6 45% +5.0 20.0 +4.0 16.5 1,000 Cobalt ร—8
+7 35% +6.0 26.0 +5.0 21.5 1,500 Mithril ร—4
+8 25% +7.0 33.0 +6.0 27.5 2,000 Mithril ร—6
+9 15% +9.0 42.0 +7.5 35.0 3,000 Adamantite ร—4
+10 5% +12.0 54.0 +10.0 45.0 5,000 Onyxium ร—4

Multiple Materials per Level

Each level supports multiple material requirements. The player must have all listed materials simultaneously. This allows for complex crafting demands at higher levels.

"7": {
    "successChance": 0.35,
    "weaponDamageBonus": 6.0,
    "armorDefenseBonus": 5.0,
    "coinCost": 1500.0,
    "materials": [
        { "itemId": "Ingredient_Bar_Mithril", "count": 4 },
        { "itemId": "Skull_Skeleton_Epic_Bar", "count": 2 }
    ]
}

The admin panel provides full navigation for multi-material levels โ€” cycle through materials with < > arrows, add new materials with +, or remove with ร—.

Adding More Levels

Simply add new keys beyond "10" and increase maxReforgeLevel:

"general": { "maxReforgeLevel": 12 },
"levels": {
    "11": { "successChance": 0.03, "weaponDamageBonus": 15.0, "armorDefenseBonus": 12.0, "coinCost": 8000.0, "materials": [{ "itemId": "Ingredient_Bar_Onyxium", "count": 8 }] },
    "12": { "successChance": 0.01, "weaponDamageBonus": 20.0, "armorDefenseBonus": 15.0, "coinCost": 15000.0, "materials": [{ "itemId": "Ingredient_Bar_Onyxium", "count": 12 }] }
}

Allowed Items

Controls which items can be placed into the reforge station. Uses wildcard pattern matching with prefix globs.

Field Type Description
weapons string[] Patterns for items treated as weapons (receive DMG bonus)
armor string[] Patterns for items treated as armor (receive DEF bonus)
excluded string[] Patterns for items that should never be reforgeable, even if they match weapon/armor patterns

Pattern syntax:

  • "Weapon_*" โ€” matches any item starting with Weapon_ (prefix glob)
  • "*" โ€” matches everything
  • "Weapon_Sword_Iron" โ€” exact match only

Evaluation order: An item is reforgeable if it matches any weapons or armor pattern AND does not match any excluded pattern. Exclusion always wins.

"allowedItems": {
    "weapons": [
        "Weapon_*"
    ],
    "armor": [
        "Armor_*"
    ],
    "excluded": [
        "Weapon_Arrow_*",
        "Weapon_Bolt_*",
        "Weapon_Shield_*",
        "Weapon_Staff_*",
        "Weapon_Crossbow_*",
        "Weapon_Shortbow_*"
    ]
}

Adding Custom Mod Items

To allow items from other mods:

"weapons": ["Weapon_*", "CoolMod_Blade_*", "ExoticWeapons_*"],
"armor": ["Armor_*", "CoolMod_Armor_*"]

Fine-Tuning Exclusions

The excluded list is evaluated after weapons/armor matching. This lets you use broad wildcards like Weapon_* while surgically blocking specific item types:

"excluded": [
    "Weapon_Arrow_*",
    "Weapon_Bolt_*",
    "Weapon_Shield_*",
    "Weapon_Staff_*",
    "Weapon_Crossbow_*",
    "Weapon_Shortbow_*",
    "Weapon_Bomb_*",
    "Weapon_Fishing_*",
    "Armor_Cosmetic_*"
]

[!NOTE] Exclusions are configured only via the JSON config file. The admin panel does not expose an exclusion editor โ€” this is intentional to prevent accidental mass-exclusion of items during live gameplay.

Custom Items

The customItems section lets you register any item ID with a human-readable display name. This serves two purposes:

  1. Display Name Override โ€” the registered name is shown in the player reforge GUI, admin panel, and anywhere the item name appears (instead of the raw ID or auto-generated Title Case)
  2. Admin Material Cycle โ€” custom item IDs are automatically added to the material dropdown in the admin Level Editor, so you can select them with < > arrows without losing them
Key Value Description
Item ID (string) Display name (string) Maps the exact item ID to a human-readable name
"customItems": {
    "Skull_Skeleton_Epic_Bar": "Skeleton Skull Bar",
    "MyMod_Crystal_Flame": "Flame Crystal",
    "Rare_Essence_Shadow": "Shadow Essence"
}

How Item Name Resolution Works

When the plugin needs to display an item name (in GUI, chat, tooltips), it checks in this order:

  1. Lang key item.name.<ItemId> โ€” checked first in the active language file (e.g., item.name.Skull_Skeleton_Epic_Bar)
  2. customItems map โ€” checked second in the config file
  3. Structured parsing โ€” Weapon_<Type>_<Material> and Armor_<Material>_<Slot> are parsed and localized via item.type.* and item.material.* lang keys
  4. Ingredient parsing โ€” Ingredient_Bar_<Material> โ†’ localized material name + "Ingot"
  5. Title Case fallback โ€” underscores replaced with spaces, each word capitalized: Skull_Skeleton_Epic โ†’ "Skull Skeleton Epic"

To add a translation for a custom item in a specific language, add the lang key to the appropriate language file:

// lang/es.json
"item.name.Skull_Skeleton_Epic_Bar": "Barra de Calavera Esqueleto"

If the lang key exists, it takes priority over customItems. This lets you provide per-language names while using customItems as the universal fallback.

Reverse Recipes

When reforging fails, the player's item is destroyed but a percentage of crafting materials is returned. The reverseRecipes map defines what materials each item type yields.

Key Value Description
Item ID (string) MaterialEntry[] Array of { "itemId": string, "count": int } โ€” what gets returned

The actual amount returned is count ร— failureReturnRate (rounded down, minimum 1 if any materials are defined).

"reverseRecipes": {
    "Weapon_Sword_Iron":       [{ "itemId": "Ingredient_Bar_Iron", "count": 12 }],
    "Weapon_Sword_Cobalt":     [{ "itemId": "Ingredient_Bar_Cobalt", "count": 12 }],
    "Armor_Iron_Chest":        [{ "itemId": "Ingredient_Bar_Iron", "count": 28 }],
    "Armor_Adamantite_Head":   [{ "itemId": "Ingredient_Bar_Adamantite", "count": 14 }]
}

Example: A player reforges Weapon_Sword_Iron and fails with failureReturnRate: 0.30:

  • Recipe defines 12 Iron Bars
  • 12 ร— 0.30 = 3.6 โ†’ 3 Iron Bars returned to inventory

Auto-Generated Recipes

If an item has no explicit reverse recipe, the plugin attempts to auto-generate one based on its naming pattern:

  • Weapon_<Type>_<Material> โ†’ looks up Ingredient_Bar_<Material>, count varies by weapon type:
    • Battleaxe: 24, Longsword: 20, Daggers: 20, Mace: 18, Axe: 16, Spear: 14, Sword: 12
  • Armor_<Material>_<Slot> โ†’ looks up Ingredient_Bar_<Material>, count varies by slot:
    • Chest: 28, Legs: 20, Head: 14, Hands: 10, Feet: 10

Auto-generation only applies when no matching key exists in reverseRecipes. To disable material return for a specific item, add it with an empty array: "Weapon_Sword_Gold": [].

Adding Custom Reverse Recipes

For modded items or items with non-standard naming, add explicit entries:

"reverseRecipes": {
    "MyMod_Blade_Phoenix": [
        { "itemId": "Rare_Essence_Shadow", "count": 5 },
        { "itemId": "Ingredient_Bar_Adamantite", "count": 8 }
    ]
}

Full Config Example

Click to expand complete default configuration

{
  "general": {
    "language": "en",
    "messagePrefix": "<dark_gray>[<gold>Reforge<dark_gray>]",
    "maxReforgeLevel": 10,
    "debugMode": false,
    "failureReturnRate": 0.30,
    "protectionEnabled": true,
    "protectionCostMultiplier": 2.0
  },
  "levels": {
    "1":  { "successChance": 0.90, "weaponDamageBonus": 2.0,  "armorDefenseBonus": 1.5,  "coinCost": 100.0,  "materials": [{ "itemId": "Ingredient_Bar_Iron", "count": 2 }] },
    "2":  { "successChance": 0.85, "weaponDamageBonus": 2.5,  "armorDefenseBonus": 2.0,  "coinCost": 200.0,  "materials": [{ "itemId": "Ingredient_Bar_Iron", "count": 4 }] },
    "3":  { "successChance": 0.75, "weaponDamageBonus": 3.0,  "armorDefenseBonus": 2.5,  "coinCost": 350.0,  "materials": [{ "itemId": "Ingredient_Bar_Iron", "count": 6 }] },
    "4":  { "successChance": 0.65, "weaponDamageBonus": 3.5,  "armorDefenseBonus": 3.0,  "coinCost": 500.0,  "materials": [{ "itemId": "Ingredient_Bar_Cobalt", "count": 4 }] },
    "5":  { "successChance": 0.55, "weaponDamageBonus": 4.0,  "armorDefenseBonus": 3.5,  "coinCost": 750.0,  "materials": [{ "itemId": "Ingredient_Bar_Cobalt", "count": 6 }] },
    "6":  { "successChance": 0.45, "weaponDamageBonus": 5.0,  "armorDefenseBonus": 4.0,  "coinCost": 1000.0, "materials": [{ "itemId": "Ingredient_Bar_Cobalt", "count": 8 }] },
    "7":  { "successChance": 0.35, "weaponDamageBonus": 6.0,  "armorDefenseBonus": 5.0,  "coinCost": 1500.0, "materials": [{ "itemId": "Ingredient_Bar_Mithril", "count": 4 }] },
    "8":  { "successChance": 0.25, "weaponDamageBonus": 7.0,  "armorDefenseBonus": 6.0,  "coinCost": 2000.0, "materials": [{ "itemId": "Ingredient_Bar_Mithril", "count": 6 }] },
    "9":  { "successChance": 0.15, "weaponDamageBonus": 9.0,  "armorDefenseBonus": 7.5,  "coinCost": 3000.0, "materials": [{ "itemId": "Ingredient_Bar_Adamantite", "count": 4 }] },
    "10": { "successChance": 0.05, "weaponDamageBonus": 12.0, "armorDefenseBonus": 10.0, "coinCost": 5000.0, "materials": [{ "itemId": "Ingredient_Bar_Onyxium", "count": 4 }] }
  },
  "allowedItems": {
    "weapons": ["Weapon_*"],
    "armor": ["Armor_*"],
    "excluded": [
      "Weapon_Arrow_*",
      "Weapon_Bolt_*",
      "Weapon_Shield_*",
      "Weapon_Staff_*",
      "Weapon_Crossbow_*",
      "Weapon_Shortbow_*"
    ]
  },
  "reverseRecipes": {
    "Weapon_Sword_Iron":        [{ "itemId": "Ingredient_Bar_Iron", "count": 12 }],
    "Weapon_Sword_Cobalt":      [{ "itemId": "Ingredient_Bar_Cobalt", "count": 12 }],
    "Weapon_Sword_Mithril":     [{ "itemId": "Ingredient_Bar_Mithril", "count": 12 }],
    "Weapon_Sword_Adamantite":  [{ "itemId": "Ingredient_Bar_Adamantite", "count": 12 }],
    "Weapon_Axe_Iron":          [{ "itemId": "Ingredient_Bar_Iron", "count": 16 }],
    "Weapon_Axe_Cobalt":        [{ "itemId": "Ingredient_Bar_Cobalt", "count": 16 }],
    "Weapon_Axe_Mithril":       [{ "itemId": "Ingredient_Bar_Mithril", "count": 16 }],
    "Weapon_Axe_Adamantite":    [{ "itemId": "Ingredient_Bar_Adamantite", "count": 16 }],
    "Weapon_Daggers_Iron":      [{ "itemId": "Ingredient_Bar_Iron", "count": 20 }],
    "Weapon_Daggers_Cobalt":    [{ "itemId": "Ingredient_Bar_Cobalt", "count": 20 }],
    "Weapon_Daggers_Mithril":   [{ "itemId": "Ingredient_Bar_Mithril", "count": 20 }],
    "Weapon_Daggers_Adamantite":[{ "itemId": "Ingredient_Bar_Adamantite", "count": 20 }],
    "Armor_Iron_Head":          [{ "itemId": "Ingredient_Bar_Iron", "count": 14 }],
    "Armor_Iron_Chest":         [{ "itemId": "Ingredient_Bar_Iron", "count": 28 }],
    "Armor_Iron_Legs":          [{ "itemId": "Ingredient_Bar_Iron", "count": 20 }],
    "Armor_Iron_Hands":         [{ "itemId": "Ingredient_Bar_Iron", "count": 10 }],
    "Armor_Iron_Feet":          [{ "itemId": "Ingredient_Bar_Iron", "count": 10 }],
    "Armor_Cobalt_Head":        [{ "itemId": "Ingredient_Bar_Cobalt", "count": 14 }],
    "Armor_Cobalt_Chest":       [{ "itemId": "Ingredient_Bar_Cobalt", "count": 28 }],
    "Armor_Cobalt_Legs":        [{ "itemId": "Ingredient_Bar_Cobalt", "count": 20 }],
    "Armor_Cobalt_Hands":       [{ "itemId": "Ingredient_Bar_Cobalt", "count": 10 }],
    "Armor_Cobalt_Feet":        [{ "itemId": "Ingredient_Bar_Cobalt", "count": 10 }],
    "Armor_Mithril_Head":       [{ "itemId": "Ingredient_Bar_Mithril", "count": 14 }],
    "Armor_Mithril_Chest":      [{ "itemId": "Ingredient_Bar_Mithril", "count": 28 }],
    "Armor_Mithril_Legs":       [{ "itemId": "Ingredient_Bar_Mithril", "count": 20 }],
    "Armor_Mithril_Hands":      [{ "itemId": "Ingredient_Bar_Mithril", "count": 10 }],
    "Armor_Mithril_Feet":       [{ "itemId": "Ingredient_Bar_Mithril", "count": 10 }],
    "Armor_Adamantite_Head":    [{ "itemId": "Ingredient_Bar_Adamantite", "count": 14 }],
    "Armor_Adamantite_Chest":   [{ "itemId": "Ingredient_Bar_Adamantite", "count": 28 }],
    "Armor_Adamantite_Legs":    [{ "itemId": "Ingredient_Bar_Adamantite", "count": 20 }],
    "Armor_Adamantite_Hands":   [{ "itemId": "Ingredient_Bar_Adamantite", "count": 10 }],
    "Armor_Adamantite_Feet":    [{ "itemId": "Ingredient_Bar_Adamantite", "count": 10 }]
  },
  "customItems": {}
}

๐Ÿงฉ Advanced Customization Recipes

Scenario: Custom Modded Materials for Reforging

You want reforging to consume a special drop item from a boss mob โ€” Skull_Skeleton_Epic_Bar โ€” alongside standard ingots.

1. Register the custom item for display naming and admin support:

"customItems": {
    "Skull_Skeleton_Epic_Bar": "Skeleton Skull Bar"
}

2. Add it as a material requirement for high-level reforging:

"levels": {
    "9": {
        "successChance": 0.15,
        "weaponDamageBonus": 9.0,
        "armorDefenseBonus": 7.5,
        "coinCost": 3000.0,
        "materials": [
            { "itemId": "Ingredient_Bar_Adamantite", "count": 4 },
            { "itemId": "Skull_Skeleton_Epic_Bar", "count": 2 }
        ]
    }
}

3. (Optional) Add a reverse recipe so materials are refunded on failure:

"reverseRecipes": {
    "Weapon_Sword_Adamantite": [
        { "itemId": "Ingredient_Bar_Adamantite", "count": 12 },
        { "itemId": "Skull_Skeleton_Epic_Bar", "count": 1 }
    ]
}

Result: The player GUI shows "Skeleton Skull Bar ร—2" with the item's icon, and the admin panel includes "Skeleton Skull Bar" in the material cycle dropdown.

Scenario: Restricting Reforging to Specific Tiers

Only allow Iron and Cobalt weapons/armor to be reforged โ€” block higher tiers:

"allowedItems": {
    "weapons": ["Weapon_Sword_Iron", "Weapon_Sword_Cobalt", "Weapon_Axe_Iron", "Weapon_Axe_Cobalt"],
    "armor": ["Armor_Iron_*", "Armor_Cobalt_*"],
    "excluded": []
}

Scenario: Easy-Mode Server (No Failures)

"general": {
    "failureReturnRate": 1.0,
    "protectionEnabled": true,
    "protectionCostMultiplier": 1.0
},
"levels": {
    "1": { "successChance": 1.0, ... },
    "2": { "successChance": 0.95, ... }
}

Scenario: Hardcore Server (Severe Penalties)

"general": {
    "failureReturnRate": 0.0,
    "protectionEnabled": false
},
"levels": {
    "1": { "successChance": 0.50, ... }
}