Pets - XPrison Addon v1.1.0

Pets addon for X Prison Core - Upgradable / Prestigable
  • X-Prison Pets (1).png
rsz_xprison-pets-infographic_3.png

YAML:
# ============================================================================
#  X-Prison-Pets  —  main configuration
#
#  Pets are pure items. Right-click a pet in hand to toggle it active, and use
#  the Pet Upgrade / Pet Prestige buttons in /pets (or shift-right-click a held
#  pet) to open its upgrade menu. All text is MiniMessage — gradients, hex and
#  legacy '&' codes are all supported (https://docs.advntr.dev/minimessage/format.html).
#
#  Permissions:
#    xprison.pets.use            open /pets and use pet items
#    xprison.pets.admin          /petsadmin
#    xprison.pets.active.<n>     raise a player's active-pet limit to <n>
#    xprison.pets.limit.bypass   unlimited active pets (same as xprison.pets.active.*)
# ============================================================================

# Layout version of this file. Do not edit — the addon uses it to migrate your
# settings when keys move between releases, and backs up any file it rewrites.
config-version: 2

general:
  # How many pets a player may have active (boosting) at once. Raise per-player
  # with the xprison.pets.active.<n> permission, or bypass entirely.
  max-active-pets: 1
  # Shown in place of level/cost values once a pet has reached its maximum level.
  maxed-text: "<gradient:#f7971e:#ffd200>Maxed</gradient>"

  # Hard ceiling on the COMBINED boost of all of a player's active pets, per boost
  # target. -1 disables the ceiling. A value of 2.0 means pets can at most triple a
  # gain (base + 2.0). Worth setting if you hand out xprison.pets.active.<n>.
  max-total-boost: -1
  # Falloff applied to each additional active pet after the strongest, per target.
  # 1.0 = plain addition (every pet counts fully). 0.5 = the 2nd pet counts half,
  # the 3rd a quarter, and so on. Pets are always ranked strongest-first, so a
  # player's inventory order can never change their income.
  diminishing-returns: 1.0

# Which gains pets are allowed to boost. Both lists were previously hard-coded.
boosts:
  # Currency pets boost these ReceiveCauses. Default: mining income only.
  # Valid: MINING, MINING_OTHERS, PAY, GIVE, REDEEM, LUCKY_BLOCK, REFUND, UNKNOWN
  currency-causes:
    - MINING
    - MINING_OTHERS
  # Pickaxe pets boost these exp sources. Default: mining-driven gains only, so
  # pickaxe XP granted through the API by other addons is left untouched.
  # Valid: MANUAL, AREA_ENCHANTS, AUTOMINER, API
  pickaxe-xp-sources:
    - MANUAL
    - AREA_ENCHANTS
    - AUTOMINER

pet-egg:
  # Item used for Pet Eggs. Supports vanilla materials and ItemsAdder/Nexo/Oraxen ids.
  material: GHAST_SPAWN_EGG
  # Add an enchant glint to eggs.
  glow: true

  hatching:
    # When true, opening an egg plays the animated hatching menu. When false the
    # pet is granted instantly (no menu) and dropped if the inventory is full.
    enabled: true
    # Length of the hatch animation, in ticks (20 ticks = 1 second).
    animation-ticks: 60
    # Ticks to wait after the reveal before the menu closes itself (0 = stay open).
    close-delay-ticks: 40
    # Pane colours cycled during the spin. Any stained-glass (or other) materials.
    frames:
      - WHITE_STAINED_GLASS_PANE
      - LIGHT_BLUE_STAINED_GLASS_PANE
      - YELLOW_STAINED_GLASS_PANE
      - LIME_STAINED_GLASS_PANE
      - PINK_STAINED_GLASS_PANE
    # Sound looped during the spin (or NONE).
    animation-sound: BLOCK_NOTE_BLOCK_HAT
    # Sound + particles on the final reveal (or NONE).
    reveal-sound: ENTITY_PLAYER_LEVELUP
    reveal-particles: TOTEM_OF_UNDYING

# ----------------------------------------------------------------------------
#  Pet Fusion — combine duplicates into the next rarity up
#
#  Duplicate pets are otherwise dead weight. A fusion consumes N pets of the SAME
#  type and rarity, charges a cost, and rolls a chance to produce one pet a step
#  up the rarity ladder (the order rarities are declared below).
#
#  The pets consumed are always the player's weakest copies, so a failed fusion
#  never eats their best one.
# ----------------------------------------------------------------------------
fusion:
  enabled: true
  # What the fused pet inherits: NONE | HIGHEST_LEVEL | AVERAGE_LEVEL
  carry-over: NONE
  # What happens to the inputs when the chance roll fails:
  #   CONSUME_INPUTS  all inputs are lost
  #   REFUND_ONE      all but one are lost
  #   KEEP_INPUTS     nothing is lost (the cost is still charged)
  on-fail: CONSUME_INPUTS
  default:
    # How many duplicates one fusion consumes (minimum 2).
    amount: 5
    # Success probability, 0.0–1.0.
    chance: 1.0
    cost-currency: tokens
    # exp4j formula. 'tier' is the SOURCE rarity's position in the ladder,
    # starting at 0 for the first rarity declared.
    cost-formula: "50000 * pow(2, tier)"
  # Per-rarity tuning, keyed by the rarity being consumed. Any field left out is
  # inherited from 'default'. Use this to make the top of the ladder much harder.
  overrides:
    masterful:
      amount: 8
      chance: 0.35

# ----------------------------------------------------------------------------
#  Permission defaults
#
#  An addon has no plugin.yml, so without these every node would be unknown to
#  Bukkit and default to op-only — ordinary players would be told they lack
#  permission for /pets on a fresh install.
#
#  Accepted values: true (everyone) | op (operators only) | false (nobody)
#  An explicit grant or denial in LuckPerms always overrides these.
#
#  Set 'use' to false if you would rather sell pet access as a rank perk, then
#  grant xprison.pets.use to the ranks that should have it.
# ----------------------------------------------------------------------------
permissions:
  # xprison.pets.use — open /pets, activate pets, open Pet Eggs.
  use: true
  # xprison.pets.admin — /petsadmin.
  admin: op

# Level milestones and prestige rewards are defined per pet in pets.yml.
rewards:
  # When false (default) each level milestone pays out at most ONCE per pet, tracked
  # on the item itself. Prestiging resets a pet to level 1, so leaving this true lets
  # a player re-cross the same milestones every prestige cycle and farm the rewards.
  milestones-repeat-after-prestige: false

# Feedback played on pet upgrades / prestige. A value of NONE disables it.
effects:
  upgrade-sound: ENTITY_EXPERIENCE_ORB_PICKUP
  upgrade-particles: HAPPY_VILLAGER
  prestige-sound: UI_TOAST_CHALLENGE_COMPLETE
  prestige-particles: TOTEM_OF_UNDYING

# Interface sounds. Each has a name (or NONE), volume and pitch.
sounds:
  gui-open:
    name: BLOCK_CHEST_OPEN
    volume: 0.5
    pitch: 1.2
  gui-click:
    name: UI_BUTTON_CLICK
    volume: 0.5
    pitch: 1.0
  purchase-success:
    name: ENTITY_EXPERIENCE_ORB_PICKUP
    volume: 0.7
    pitch: 1.4
  purchase-fail:
    name: ENTITY_VILLAGER_NO
    volume: 0.7
    pitch: 1.0

# Fully configurable rarities. Add, rename or remove any entry — the id (the key)
# is what pets.yml boost bands, commands and items reference. Declaration order is
# the display order. Higher weight = more common; weight 0 = never rolled (admin-only).
rarities:
  common:    { name: "Common",    color: "<gray>",         weight: 600 }
  rare:      { name: "Rare",      color: "<aqua>",         weight: 250 }
  legendary: { name: "Legendary", color: "<gold>",         weight: 100 }
  mythical:  { name: "Mythical",  color: "<light_purple>", weight: 40 }
  masterful: { name: "Masterful", color: "<red>",          weight: 9 }
  pristine:  { name: "Pristine",  color: "<dark_red>",     weight: 1 }

commands:
  pets:
    name: pets
    aliases:
      - pet
  petsadmin:
    name: petsadmin
    aliases:
      - petadmin
YAML:
# ============================================================================
#  X-Prison-Pets  —  egg definitions
#
#  Each key under 'eggs:' is a unique egg id. The FIRST egg defined is the
#  default: it is what "/petsadmin give-egg <player>" hands out when no egg is
#  named, and what an egg created before egg types existed is treated as.
#
#  Give a specific egg with:
#    /petsadmin give-egg <player> <egg> [rarity] [amount]
#
#  Fields:
#    name              MiniMessage item name. %rarity% expands to the forced
#                      rarity's name (plus a trailing space), or nothing.
#    material          Icon. A vanilla material, PLAYER_HEAD (+ head-texture),
#                      or an ItemsAdder/Nexo/Oraxen id.
#    head-texture      Base64 skin value (used when material is PLAYER_HEAD).
#    custom-model-data Optional CMD for resource-pack icons.
#    glow              Adds an enchant glint.
#    pet-pool          Pet type ids this egg can yield. Use ["*"] (or omit) for
#                      every pet in pets.yml.
#    rarity-weights    Per-rarity roll weights that OVERRIDE the global table in
#                      config.yml. Omit to inherit the global weights. Weight 0
#                      means this egg can never roll that rarity.
#    show-odds         List each possible rarity's exact chance in the tooltip.
#    animation-ticks   Hatch spin length for this egg, in ticks. -1 inherits
#                      pet-egg.hatching.animation-ticks from config.yml.
# ============================================================================

eggs:

  # The everyday egg — inherits the global rarity table and can roll any pet.
  basic:
    name: "<gradient:#f7971e:#ffd200><bold>%rarity%Pet Egg</bold></gradient>"
    material: GHAST_SPAWN_EGG
    head-texture: ""
    custom-model-data: 0
    glow: true
    pet-pool: ["*"]
    rarity-weights: {}
    show-odds: true
    animation-ticks: -1

  # A premium egg: Common and Rare are impossible, and the top tiers are far
  # more likely than on the basic egg.
  legendary_egg:
    name: "<gradient:#c471ed:#f64f59><bold>%rarity%Legendary Egg</bold></gradient>"
    material: DRAGON_EGG
    head-texture: ""
    custom-model-data: 0
    glow: true
    pet-pool: ["*"]
    rarity-weights:
      common: 0
      rare: 0
      legendary: 600
      mythical: 300
      masterful: 90
      pristine: 10
    show-odds: true
    animation-ticks: 80

  # A themed egg that only ever yields the Pickaxe Pet, on the global odds.
  pickaxe_egg:
    name: "<gradient:#f85032:#e73827><bold>%rarity%Pickaxe Egg</bold></gradient>"
    material: NETHERITE_PICKAXE
    head-texture: ""
    custom-model-data: 0
    glow: true
    pet-pool:
      - pickaxe_pet
    rarity-weights: {}
    show-odds: true
    animation-ticks: -1
YAML:
# ============================================================================
#  X-Prison-Pets  —  GUI layouts   (MiniMessage)
#
#  Every menu is fully configurable: slots, materials (vanilla or
#  ItemsAdder/Nexo/Oraxen ids), names, lore, glow and custom_model_data.
#  Item names and lore are rendered without the default italic — add <italic>
#  yourself if you want it.
# ============================================================================

# The tooltip rendered on every pet item.
# Placeholders: %pet% %active% %description% %boost_display% %rarity_color%
#               %rarity% %prestige% %prestige_boost% %level% %maxlevel% %boost% %progress%
pet-item:
  name: "%pet% <dark_gray>(%active%<dark_gray>)"
  lore:
    - "<gray>Once equipped, %description%."
    - ""
    - "<aqua>Information:"
    - "<gray>▸ Rarity: %rarity_color%%rarity%"
    - "<gray>▸ Prestige: <white>%prestige% <gray>(%prestige_boost% Boost)"
    - "<gray>▸ Level: <white>%level%<dark_gray>/<white>%maxlevel%"
    - "<gray>▸ Boost: <green>%boost%x %boost_display%"
    - "<gray>▸ Progress: <yellow>%progress%"
    - ""
    - "<yellow>Right-Click <gray>to toggle active."
    - "<yellow>Shift-Right-Click <gray>to upgrade."

# /pets — informational catalog of every pet type, plus the Upgrade / Prestige buttons.
# Per pet the boost table is built from 'header' + a 'rarity-format' block per rarity.
# Placeholders: %pet% %description% %boost_display% %rarity_color% %rarity% %min% %max%
catalog:
  title: "<dark_gray>Pets"
  rows: 6
  filler: BLACK_STAINED_GLASS_PANE
  pet-slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25]
  name: "%pet%"
  header:
    - "<gray>Once equipped, %description%."
    - ""
    - "<aqua>Boosts:"
  rarity-format:
    - "%rarity_color%%rarity%"
    - "<gray>▸ %boost_display%s: <green>%min%x <gray>- <green>%max%x"
  upgrades-item:
    slot: 48
    material: ANVIL
    name: "<gradient:#f7971e:#ffd200><bold>Pet Upgrades</bold></gradient>"
    lore:
      - "<gray>Spend currency to raise a pet's"
      - "<gray>level and boost power."
      - ""
      - "<yellow>Click <gray>to pick a pet to upgrade."
  prestige-item:
    slot: 50
    material: NETHER_STAR
    name: "<gradient:#c471ed:#f64f59><bold>Pet Prestiges</bold></gradient>"
    lore:
      - "<gray>Reset a maxed pet for a permanent"
      - "<gray>boost multiplier that stacks forever."
      - ""
      - "<yellow>Click <gray>to pick a pet to prestige."
  # Paging controls. The arrows are only drawn when there is a page to go to, so
  # a server with few pets sees no change. Placeholders: %page% %pages%
  previous-page:
    slot: 45
    material: ARROW
    name: "<gray>« Previous Page"
  next-page:
    slot: 53
    material: ARROW
    name: "<gray>Next Page »"
  page-info:
    slot: 49
    material: PAPER
    name: "<gray>Page <white>%page%<dark_gray>/<white>%pages%"
  # Only shown when fusion.enabled is true in config.yml.
  fusion-item:
    slot: 46
    material: CRAFTING_TABLE
    name: "<gradient:#00c6ff:#0072ff><bold>Pet Fusion</bold></gradient>"
    lore:
      - "<gray>Combine duplicate pets into"
      - "<gray>a higher rarity."
      - ""
      - "<yellow>Click <gray>to open fusion."

# Pet picker opened by the Upgrade / Prestige buttons. Lists the pets you own; click
# one to open its upgrade or prestige menu. The click hint is appended to each pet's lore.
select:
  title-upgrade: "<dark_gray>Select a Pet to Upgrade"
  title-prestige: "<dark_gray>Select a Pet to Prestige"
  rows: 6
  filler: BLACK_STAINED_GLASS_PANE
  pet-slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34]
  click-hint-upgrade:
    - ""
    - "<yellow>Click <gray>to upgrade this pet."
    - "<yellow>Shift-Click <gray>to toggle active."
  click-hint-prestige:
    - ""
    - "<yellow>Click <gray>to prestige this pet."
    - "<yellow>Shift-Click <gray>to toggle active."
  # Paging controls — see the notes in the catalog section above.
  previous-page:
    slot: 45
    material: ARROW
    name: "<gray>« Previous Page"
  next-page:
    slot: 53
    material: ARROW
    name: "<gray>Next Page »"
  page-info:
    slot: 4
    material: PAPER
    name: "<gray>Page <white>%page%<dark_gray>/<white>%pages%"
  empty:
    slot: 22
    material: BARRIER
    name: "<red>No Pets Found"
    lore:
      - "<gray>You don't own any pets yet."
      - "<gray>Open a Pet Egg to get started!"
  back:
    slot: 49
    material: ARROW
    name: "<gray>« Back"

# Upgrade menu for a single pet (levels only).
upgrade:
  title: "<dark_gray>Pet Upgrade"
  rows: 3
  filler: BLACK_STAINED_GLASS_PANE
  pet-slot: 4
  buttons:
    back:
      slot: 18
      material: ARROW
      name: "<gray>« Back"
    upgrade:
      slot: 22
      material: ANVIL
      name: "<gradient:#f7971e:#ffd200><bold>Upgrade Pet</bold></gradient>"
      lore:
        - "<gray>Level: <white>%level%<dark_gray>/<white>%maxlevel%"
        - "<gray>Boost: <green>%boost%x %boost_display%"
        - "<gray>Next level cost: <white>%next_cost% %currency%"
        - ""
        - "<gray>Bulk Upgrade <dark_gray>(Right-Click)<gray>:"
        - "<gray>▸ Levels: <white>%bulk_levels%"
        - "<gray>▸ Cost: <white>%bulk_cost% %currency%"
        - ""
        - "<yellow>Left-Click: <gray>buy one level"
        - "<yellow>Right-Click: <gray>buy as many as you can"

# Prestige menu for a single pet (max-out + prestige).
prestige:
  title: "<dark_gray>Pet Prestige"
  rows: 3
  filler: BLACK_STAINED_GLASS_PANE
  pet-slot: 4
  buttons:
    back:
      slot: 18
      material: ARROW
      name: "<gray>« Back"
    prestige:
      slot: 22
      material: NETHER_STAR
      name: "<gradient:#c471ed:#f64f59><bold>Max Level & Prestige</bold></gradient>"
      lore:
        - "<gray>Prestige: <white>%prestige%<dark_gray>/<white>%max_prestige%"
        - "<gray>Prestige boost: <light_purple>%prestige_boost%"
        - ""
        - "<gray>Buys all levels to max and prestiges,"
        - "<gray>repeating until you run out of currency"
        - "<gray>or reach max prestige."
        - ""
        - "<gray>Next max-out cost: <white>%max_cost% %currency%"
        - ""
        - "<yellow>Click <gray>to max level & prestige!"

# Pet Fusion menu — one entry per group of duplicates you own. Groups that are
# not yet fusable are still listed, showing how many more you need.
# Placeholders: %pet% %rarity% %rarity_color% %next_rarity% %next_rarity_color%
#               %owned% %required% %missing% %chance% %cost% %currency%
fusion:
  title: "<dark_gray>Pet Fusion"
  rows: 6
  filler: BLACK_STAINED_GLASS_PANE
  pet-slots: [10, 11, 12, 13, 14, 15, 16, 19, 20, 21, 22, 23, 24, 25, 28, 29, 30, 31, 32, 33, 34]
  name: "%rarity_color%%rarity% <reset>%pet%"
  # Shown when you have enough duplicates and can pay.
  lore-ready:
    - "<gray>Combine <white>%required%x <gray>into <white>1x %next_rarity_color%%next_rarity%<gray>."
    - ""
    - "<gray>▸ Owned: <white>%owned%<dark_gray>/<white>%required%"
    - "<gray>▸ Success chance: <yellow>%chance%"
    - "<gray>▸ Cost: <white>%cost% %currency%"
    - ""
    - "<yellow>Click <gray>to fuse!"
  # Shown when you do not yet own enough duplicates.
  lore-not-enough:
    - "<gray>Combine <white>%required%x <gray>into <white>1x %next_rarity_color%%next_rarity%<gray>."
    - ""
    - "<gray>▸ Owned: <white>%owned%<dark_gray>/<white>%required%"
    - "<gray>▸ Cost: <white>%cost% %currency%"
    - ""
    - "<red>Need <white>%missing%<red> more."
  # Shown for a group already at the top of the rarity ladder (it is listed but not
  # clickable, so a player holding only max-rarity duplicates knows why).
  lore-max-rarity:
    - "<gray>Owned: <white>%owned%"
    - ""
    - "<yellow>Already at the highest rarity."
  # Shown when you have the duplicates but not the currency.
  lore-cannot-afford:
    - "<gray>Combine <white>%required%x <gray>into <white>1x %next_rarity_color%%next_rarity%<gray>."
    - ""
    - "<gray>▸ Owned: <white>%owned%<dark_gray>/<white>%required%"
    - "<gray>▸ Success chance: <yellow>%chance%"
    - "<gray>▸ Cost: <red>%cost% %currency%"
    - ""
    - "<red>You cannot afford this."
  empty:
    slot: 22
    material: BARRIER
    name: "<red>Nothing to Fuse"
    lore:
      - "<gray>You need duplicate pets of the"
      - "<gray>same type and rarity to fuse."
  previous-page:
    slot: 45
    material: ARROW
    name: "<gray>« Previous Page"
  next-page:
    slot: 53
    material: ARROW
    name: "<gray>Next Page »"
  page-info:
    slot: 4
    material: PAPER
    name: "<gray>Page <white>%page%<dark_gray>/<white>%pages%"
  back:
    slot: 49
    material: ARROW
    name: "<gray>« Back"

# The hatching animation menu (used when pet-egg.hatching.enabled is true).
hatching:
  title: "<gradient:#f7971e:#ffd200>Hatching...</gradient>"
  filler: BLACK_STAINED_GLASS_PANE
  pet-slot: 13
  # The centre item's name while the egg spins.
  spinner-name: "<yellow>Hatching..."

# The Pet Egg item. Each egg's NAME and icon come from eggs.yml; this section
# styles the shared tooltip body. The reward and rarity lists are auto-filled
# from the egg's own pet pool and rarity weights.
egg-item:
  rewards-header: "<green>Possible Rewards:"
  reward-line: "<gray>▸ %pet%"
  rarities-header: "<green>Possible Rarities:"
  # Used when the egg has show-odds: false, or for a forced-rarity egg.
  rarity-line: "<gray>▸ %rarity_color%%rarity%"
  # Used when the egg has show-odds: true. %chance% is that rarity's real
  # probability for THIS egg, e.g. "60%", "9.0%", "0.10%".
  rarity-odds-line: "<gray>▸ %rarity_color%%rarity% <dark_gray>(<white>%chance%<dark_gray>)"
  footer:
    - ""
    - "<yellow>Right-click to open!"
YAML:
# ============================================================================
#  X-Prison-Pets  —  messages   (MiniMessage; legacy '&' codes also supported)
# ============================================================================

prefix: "<dark_gray>[<gradient:#f7971e:#ffd200>Pets</gradient><dark_gray>] <reset>"

messages:

  # ── General ────────────────────────────────────────────────────────────────
  no_permission: "<red>You don't have permission to do that."
  player_not_found: "<red>Player '<white>%player%<red>' is not online."
  unknown_pet_type: "<red>Unknown pet type '<white>%type%<red>'. See pets.yml for valid ids."
  unknown_rarity: "<red>Unknown rarity '<white>%rarity%<red>'."
  # %value% — a give-egg token that matched neither an egg id, a rarity nor a number.
  unknown_egg_or_rarity: "<red>'<white>%value%<red>' is not a known egg, rarity or amount."
  no_eggs_defined: "<red>No eggs are defined in eggs.yml."
  reloaded: "<green>Pets configuration reloaded."
  usage: "<gray>Usage: <white>%usage%"
  random_rarity: "Random"

  # ── Eggs ───────────────────────────────────────────────────────────────────
  # %color%, %rarity%, %pet%
  egg_hatched: "<green>Your egg hatched into a %color%%rarity% <reset>%pet%<green>!"

  # ── Activating pets ────────────────────────────────────────────────────────
  # %pet%
  pet_activated: "<green>Activated <reset>%pet%<green>."
  pet_deactivated: "<gray>Deactivated <reset>%pet%<gray>."
  # %limit%
  active_limit_reached: "<red>You can only have <white>%limit%<red> active pet(s). Deactivate one first."

  # ── Upgrades ───────────────────────────────────────────────────────────────
  # %pet%, %level%
  upgrade_success: "<green>Upgraded <reset>%pet%<green> to level <white>%level%<green>."
  # %pet%, %levels%, %level%
  upgrade_bulk_success: "<green>Bought <white>%levels%<green> levels — <reset>%pet%<green> is now level <white>%level%<green>."
  # %currency%
  upgrade_insufficient: "<red>You can't afford that upgrade (need more <white>%currency%<red>)."
  upgrade_max_level: "<yellow>That pet is already at max level. Prestige it to grow further!"
  # %pet%, %levels%, %prestiges%
  max_out_done: "<green>Maxed <reset>%pet%<green>: bought <white>%levels%<green> levels and <white>%prestiges%<green> prestige(s)."
  max_out_none: "<yellow>Not enough currency to buy any levels."

  # ── Pet XP (pets that level themselves while you mine) ─────────────────────
  # %pet%, %levels%, %level%, %maxlevel% — set to "" to silence.
  pet_xp_level_up: "<green>Your <reset>%pet%<green> reached level <white>%level%<dark_gray>/<white>%maxlevel%<green>!"

  # ── Fusion ─────────────────────────────────────────────────────────────────
  # %pet%, %color%, %rarity%
  fusion_success: "<green>Fusion succeeded! You received a %color%%rarity% <reset>%pet%<green>."
  # %pet%, %consumed%
  fusion_failed: "<red>The fusion failed — <white>%consumed%<red> pet(s) were consumed."
  # %required%
  fusion_not_enough: "<red>You need <white>%required%<red> matching pets to fuse."
  # %currency%
  fusion_insufficient: "<red>You can't afford that fusion (need more <white>%currency%<red>)."
  fusion_no_next_rarity: "<yellow>That pet is already at the highest rarity."
  fusion_disabled: "<red>Pet fusion is disabled on this server."

  # ── Admin ──────────────────────────────────────────────────────────────────
  # %amount%, %player%, %pet%, %color%, %rarity%
  admin_gave_pet: "<green>Gave <white>%amount%x <green>%color%%rarity% <reset>%pet%<green> to <white>%player%<green>."
  # %amount%, %player%, %egg%, %color%, %rarity%
  admin_gave_egg: "<green>Gave <white>%amount%x <green>%color%%rarity% <green>%egg% to <white>%player%<green>."
  # %amount%, %color%, %rarity%, %pet%
  received_pet: "<gray>You received <white>%amount%x <gray>%color%%rarity% <reset>%pet%<gray> from an administrator!"

  # Admin help (shown with no prefix).
  admin_help_title: "<gradient:#f7971e:#ffd200><bold>Pets Admin</bold></gradient>"
  admin_help_give: "<gray>/petsadmin give <white><player> <type> <rarity> [amount]"
  admin_help_give_egg: "<gray>/petsadmin give-egg <white><player> [egg] [rarity] [amount]"
  admin_help_reload: "<gray>/petsadmin reload"
YAML:
# ============================================================================
#  X-Prison-Pets  —  pet definitions
#
#  Each key under 'pets:' is a unique pet type id (lowercase, digits, underscore).
#
#  A pet has ONE boost target and, per rarity, a min->max boost band. The live
#  boost scales from `min` (level 1) to `max` (max level), then a permanent
#  prestige multiplier is applied on top:
#
#     levelValue     = min + (max - min) * (level - 1) / (maxLevel - 1)
#     effectiveBoost = levelValue * (1 + prestige * per-prestige-percent)
#
#  Currency pets boost the currency you earn WHILE MINING (the pickaxe pet grants
#  bonus pickaxe XP per block). Keep the description wording in step with that.
#
#  Fields:
#    display-name          MiniMessage pet name (gradients / hex / '&' supported).
#    description           One-line MiniMessage phrase, slotted into "Once equipped, ...".
#    boost-target          "pickaxe_xp", or a currency name (e.g. tokens/gems/money).
#    boost-display         What the boost is called in tooltips (e.g. "Token").
#    material              Icon. PLAYER_HEAD (+ head-texture), a vanilla material,
#                          or an ItemsAdder/Nexo/Oraxen id.
#    head-texture          Base64 skin value (used when material is PLAYER_HEAD).
#    custom-model-data     Optional CMD for resource-pack icons.
#    max-level             Level cap before the pet can prestige.
#    max-prestige          How many times the pet can prestige.
#    per-prestige-percent  Permanent boost added per prestige (0.25 = +25%).
#    cost-currency         Currency spent to upgrade this pet's level.
#    cost-formula          exp4j formula (variable: level) = cost to buy the NEXT level.
#    weight                Relative chance of this pet being picked once an egg has rolled a
#                          rarity. All pets default to 100, i.e. an even split. Halve it to make
#                          a pet twice as rare as its siblings; set 0 to keep it out of eggs
#                          entirely (admin-give only).
#    rarities              Per-rarity { min, max } boost band, keyed by rarity id.
#    xp                    Optional. Lets the pet earn levels by MINING as well as by
#                          purchase. Omit (or enabled: false) to keep it purchase-only.
#                            enabled           turn mined XP on for this pet
#                            level-source      PURCHASE | XP | BOTH (default BOTH)
#                            per-block         XP granted per block mined
#                            rarity-multiplier scale per-block by the pet's rarity rank
#                            formula           exp4j (variable: level) = XP for the NEXT level
#    milestones            Optional. <level>: { commands, messages, sound } paid out the
#                          first time the pet reaches that level. Placeholders: %player%
#                          %pet% %rarity% %level% %prestige% %threshold%.
#    prestige-rewards      Optional. Same shape, keyed by prestige number.
# ============================================================================

pets:

  token_pet:
    display-name: "<gradient:#f7971e:#ffd200>Token Pet</gradient>"
    description: "increases the <yellow>Tokens</yellow><gray> you earn while mining"
    boost-target: tokens
    boost-display: "Token"
    material: PLAYER_HEAD
    head-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvMjA4OGYyZWI4NjI4YzRjOWE5MTM1MDYzNjc2NmRlYTIyY2Q2ZmRlODI0MGM2NGI0M2EyY2NmZmJiYjM2OTI4ZCJ9fX0="
    custom-model-data: 0
    max-level: 40
    max-prestige: 10
    per-prestige-percent: 0.25
    cost-currency: tokens
    cost-formula: "5000 * pow(1.18, level)"
    weight: 100
    # This pet also levels itself while you mine, alongside paid upgrades.
    xp:
      enabled: true
      level-source: BOTH
      per-block: 1.0
      rarity-multiplier: true
      formula: "250 * pow(1.14, level)"
    # Paid out the first time this pet reaches each level.
    milestones:
      10:
        messages:
          - "<green>Your <reset>%pet%<green> reached level <white>%level%<green>!"
        sound: ENTITY_PLAYER_LEVELUP
      25:
        commands:
          - "tokens give %player% 25000"
        messages:
          - "<gold>Milestone! <gray>+25,000 Tokens for reaching level <white>%threshold%<gray>."
        sound: UI_TOAST_CHALLENGE_COMPLETE
    prestige-rewards:
      1:
        messages:
          - "<light_purple>First prestige on your <reset>%pet%<light_purple>!"
        sound: UI_TOAST_CHALLENGE_COMPLETE
    rarities:
      common:    { min: 0.045, max: 0.19 }
      rare:      { min: 0.085, max: 0.255 }
      legendary: { min: 0.145, max: 0.34 }
      mythical:  { min: 0.205, max: 0.425 }
      masterful: { min: 0.265, max: 0.56 }
      pristine:  { min: 0.405, max: 0.9 }

  money_pet:
    display-name: "<gradient:#56ab2f:#a8e063>Money Pet</gradient>"
    description: "increases the <green>Money</green><gray> you earn while mining"
    boost-target: money
    boost-display: "Money"
    material: PLAYER_HEAD
    head-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNjdmOGQ4YzM5Zjk5MjFhNjRkN2I3NTVkZTMyMmU0NDFmZGVkNGI3NzVhNzY1N2UwYjMxOTZiNmZkYTg2MzY0NiJ9fX0="
    custom-model-data: 0
    max-level: 40
    max-prestige: 10
    per-prestige-percent: 0.25
    cost-currency: money
    cost-formula: "10000 * pow(1.18, level)"
    rarities:
      common:    { min: 0.05, max: 0.20 }
      rare:      { min: 0.09, max: 0.27 }
      legendary: { min: 0.15, max: 0.36 }
      mythical:  { min: 0.21, max: 0.45 }
      masterful: { min: 0.28, max: 0.60 }
      pristine:  { min: 0.42, max: 0.95 }

  gem_pet:
    display-name: "<gradient:#00c6ff:#0072ff>Gem Pet</gradient>"
    description: "increases the <aqua>Gems</aqua><gray> you earn while mining"
    boost-target: gems
    boost-display: "Gem"
    material: PLAYER_HEAD
    head-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNTBkZDIwZDI5ZDc3NmI3OWU0ODUyMDBhYmVkY2M2ZDk0YzExYmQ0Y2E1YjE0OWM2MGE0MDQxYzQ2NjhiYjZhOCJ9fX0="
    custom-model-data: 0
    max-level: 40
    max-prestige: 10
    per-prestige-percent: 0.25
    cost-currency: gems
    cost-formula: "1000 * pow(1.18, level)"
    rarities:
      common:    { min: 0.31, max: 0.6 }
      rare:      { min: 0.36, max: 0.7 }
      legendary: { min: 0.41, max: 0.8 }
      mythical:  { min: 0.46, max: 0.9 }
      masterful: { min: 0.51, max: 1.1 }
      pristine:  { min: 0.71, max: 1.7 }

  pickaxe_pet:
    display-name: "<gradient:#f85032:#e73827>Pickaxe Pet</gradient>"
    description: "boosts all <red>Pickaxe XP</red><gray> you gain while mining"
    boost-target: pickaxe_xp
    boost-display: "Pickaxe XP"
    material: PLAYER_HEAD
    head-texture: "eyJ0ZXh0dXJlcyI6eyJTS0lOIjp7InVybCI6Imh0dHA6Ly90ZXh0dXJlcy5taW5lY3JhZnQubmV0L3RleHR1cmUvNGQzMTZhNjQwOTlkODk2ZjY2OWQwZjA4ODUyMDIxN2E4M2RlY2Q0YTNiNjdlNTdhZjg5YjMzZDIwYzMyMWYzNCJ9fX0="
    custom-model-data: 0
    max-level: 100
    max-prestige: 15
    per-prestige-percent: 0.25
    cost-currency: tokens
    cost-formula: "25000 * pow(1.16, level)"
    rarities:
      common:    { min: 0.10, max: 0.50 }
      rare:      { min: 0.20, max: 0.75 }
      legendary: { min: 0.35, max: 1.00 }
      mythical:  { min: 0.55, max: 1.25 }
      masterful: { min: 0.80, max: 1.50 }
      pristine:  { min: 1.10, max: 1.80 }
pets1.png

pets2.png

pets3.png

pets4.png

pets5.png
pets6.png

pets7.png

pets8.png
Buy a license now
$9.99
EULA
Standard EULA
Use on any projects you own with attribution
Support
Standard
Includes:
Download the resource
Access new updates
Support from the creator
Support duration
1 year
Share and earn
Refer this resource and earn a 5% commission.
81 Views
1 Purchases
2 Downloads
Jul 21, 2026 Published
Jul 21, 2026 Updated
Not yet rated
187.4 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
AI Content Disclosure
Cover Image and resource description was co-assisted by AI.
AI Content Disclosure
AI performed code cleanup and ensured compatibility and extensibility for the future in codebase.
Type
  1. Gameplay
  1. Economy
  1. Monetization
Game mode
  1. Prison
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.17
  1. 1.16
  1. 1.15
  1. 1.14
  1. 1.13
Supported languages
  1. English
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
Flagship all-in-one core every top prison server runs on.
5.00 star(s) 13 ratings
265 purchases
Flagship Private Mines system for your server with a feature-rich, performance-optimized features.
5.00 star(s) 3 ratings
88 purchases
Boost your server with customizable robots that generate currencies automatically!
4.00 star(s) 3 ratings
66 purchases
Backpack system for your server
Not yet rated
64 purchases
Lucky Block enchant for X-Prison Core
Not yet rated
54 purchases
Share and earn
Refer this resource and earn a 5% commission.
81 Views
1 Purchases
2 Downloads
Jul 21, 2026 Published
Jul 21, 2026 Updated
Not yet rated
187.4 KB File size
Open source
  1. No
DRM-free
  1. Yes
Unobfuscated
  1. Yes
AI Content Disclosure
Cover Image and resource description was co-assisted by AI.
AI Content Disclosure
AI performed code cleanup and ensured compatibility and extensibility for the future in codebase.
Type
  1. Gameplay
  1. Economy
  1. Monetization
Game mode
  1. Prison
Supported software
  1. Bukkit
  1. Spigot
  1. Paper
  1. Purpur
Supported versions
  1. 26.1
  1. 1.21.11
  1. 1.21.8
  1. 1.21.5
  1. 1.21.4
  1. 1.21.2
  1. 1.21
  1. 1.20
  1. 1.19
  1. 1.18
  1. 1.17
  1. 1.16
  1. 1.15
  1. 1.14
  1. 1.13
Supported languages
  1. English
Creator
Struggling to cover the costs of your server? Set up your own webstore with Tebex in under 30 seconds.
Host a lag-free Minecraft or Hytale server in minutes.
Get 25% off your first order with our link.
Recommended for you
Flagship all-in-one core every top prison server runs on.
5.00 star(s) 13 ratings
265 purchases
Flagship Private Mines system for your server with a feature-rich, performance-optimized features.
5.00 star(s) 3 ratings
88 purchases
Boost your server with customizable robots that generate currencies automatically!
4.00 star(s) 3 ratings
66 purchases
Backpack system for your server
Not yet rated
64 purchases
Lucky Block enchant for X-Prison Core
Not yet rated
54 purchases
Top