Home›Java›Mods›TropicalProgression | Made with Kodari
TropicalProgression | Made with Kodari
ModsJava

TropicalProgression | Made with Kodari

Java mod listed for Minecraft 1.8–1.19. Downloads from the MC Java Mods app on Android.

⬇ Download on Spigot
⏳ TropicalProgression ⏳
This plugin was made by an Advanced Minecraft Plugin maker called kodari.ai
A powerful time-gated progression system for SMP servers!

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

✨ Features

Core Features

Progression Systems

Technical Features

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Commands

Main Commands
Code (Text):
/progression status - View your current progression status
/progression unlock <type> <name> [player] - Manually unlock a feature
/progression reload - Reload all configurations
Command Aliases
Code (Text):
/prog - Short alias for /progression
/tprog - Alternative alias
Unlock Types
Code (Text):
dimension (or dim) - Unlock Nether or End
item - Unlock Elytra, Ender Chest, Totem, or Shulker Box
enchantment (or enchant) - Unlock enchantment levels
Examples
Code (Text):
/progression unlock dimension nether - Unlock Nether for everyone
/progression unlock item elytra Notch - Unlock Elytra for Notch
/progression unlock enchant sharpness - Unlock Sharpness for everyone
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Permissions

Command Permissions
Code (Text):
tropicalprogression.command - Use progression commands (default: op)
tropicalprogression.command.unlock - Manually unlock features (default: op)
tropicalprogression.command.reload - Reload configurations (default: op)
Bypass Permissions
Code (Text):
tropicalprogression.bypass.* - Bypass all progression locks (default: op)
tropicalprogression.bypass.dimension - Bypass dimension locks (default: op)
tropicalprogression.bypass.item - Bypass item usage locks (default: op)
tropicalprogression.bypass.enchantment - Bypass enchantment caps (default: op)
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

⚙️ Configuration

config.yml
Spoiler: Click to view config.yml
Code (Text):
settings:
  cache-duration-seconds: 60
  debug-mode: false
  check-for-updates: true
  per-world-overrides: true

messages:
  prefix: '&8[&bTropical&3Progression&8]&r'
  reload-success: '&aConfiguration reloaded successfully!'
  no-permission: '&cYou do not have permission to use this command.'
  feature-unlocked: '&aFeature &e{feature}&a has been unlocked!'
  already-unlocked: '&eThis feature is already unlocked.'

notification:
  enabled: true
  type: ACTIONBAR
  show-countdown: true
  countdown-format: '&cLocked: &e{time_remaining}'

locks/dimensions.yml
Spoiler: Click to view dimensions.yml
Code (Text):
nether:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.dimension
 
  conditions:
    - type: SERVER_AGE
      value: 604800000
    - type: WORLD_AGE
      world: world
      value: 172800000
 
  require-all-conditions: false
 
  messages:
    portal-blocked: '&cThe Nether is currently locked!'
    unlock-notification: '&aThe Nether has been unlocked for all players!'
    countdown: '&eNether unlocks in: &b{time_remaining}'
 
  per-world-overrides:
    world_custom:
      locked: false

end:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.dimension
 
  conditions:
    - type: SERVER_AGE
      value: 1209600000
    - type: ADVANCEMENT
      advancement: minecraft:story/enter_the_nether
 
  require-all-conditions: true
 
  messages:
    portal-blocked: '&cThe End is currently locked!'
    teleport-blocked: '&cYou cannot teleport to The End yet!'
    unlock-notification: '&aThe End has been unlocked for all players!'
    countdown: '&eEnd unlocks in: &b{time_remaining}'

locks/items.yml
Spoiler: Click to view items.yml
Code (Text):
elytra:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.item
 
  conditions:
    - type: SERVER_AGE
      value: 2592000000
    - type: ADVANCEMENT
      advancement: minecraft:end/elytra
 
  require-all-conditions: false
 
  actions:
    prevent-equip: true
    prevent-flight: true
    remove-on-lock: false
 
  messages:
    usage-blocked: '&cElytra flight is currently locked!'
    equip-blocked: '&cYou cannot equip Elytra yet!'

ender-chest:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.item
 
  conditions:
    - type: PLAYTIME
      value: 36000000
 
  actions:
    prevent-open: true
    prevent-place: true
 
  messages:
    usage-blocked: '&cEnder Chests are currently locked!'

totem:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.item
 
  conditions:
    - type: SERVER_AGE
      value: 1814400000
 
  actions:
    prevent-use: true
    consume-item: false
 
  messages:
    usage-blocked: '&cTotems of Undying are currently locked!'

shulker-box:
  enabled: true
  locked: true
  bypass-permission: tropicalprogression.bypass.item
 
  conditions:
    - type: ADVANCEMENT
      advancement: minecraft:end/shulker_bullet
 
  actions:
    prevent-open: true
    prevent-place: true
 
  messages:
    usage-blocked: '&cShulker Boxes are currently locked!'

locks/enchantments.yml
Spoiler: Click to view enchantments.yml
Code (Text):
global:
  enabled: true
 
  default-cap: 5
 
  time-based-progression:
    enabled: true
    intervals:
      0: 2
      86400000: 3
      604800000: 4
      1209600000: 5

per-enchantment:
  sharpness:
    enabled: true
    default-cap: 3
 
    conditions:
      - type: SERVER_AGE
        value: 604800000
        cap: 5
 
    messages:
      enchant-blocked: '&cSharpness above level {cap} is currently locked!'
      lore-warning: '&c[LOCKED]'
 
  protection:
    enabled: true
    default-cap: 2
 
    conditions:
      - type: SERVER_AGE
        value: 432000000
        cap: 4
 
  mending:
    enabled: true
    locked: true
 
    conditions:
      - type: SERVER_AGE
        value: 1209600000
 
    messages:
      enchant-blocked: '&cMending is currently completely locked!'
      grindstone-message: '&cYou cannot remove this enchantment yet!'
 
  unbreaking:
    enabled: true
    default-cap: 2
 
    conditions:
      - type: PLAYTIME
        value: 18000000
        cap: 3

messages.yml
Spoiler: Click to view messages.yml
Code (Text):
prefix: '&8[&bTropical&3Progression&8]&r'

commands:
  no-permission: '&cYou do not have permission to use this command.'
 
  status:
    header: '&8&m----------&r &bProgression Status &8&m----------'
    dimension-locked: '&c✗ &7{dimension}: &cLocked &8({time_remaining})'
    dimension-unlocked: '&a✓ &7{dimension}: &aUnlocked'
    item-locked: '&c✗ &7{item}: &cLocked'
    item-unlocked: '&a✓ &7{item}: &aUnlocked'
    enchant-capped: '&e⚠ &7{enchant}: &eCapped at {cap}'
    footer: '&8&m--------------------------------'
 
  unlock:
    success: '&aManually unlocked &e{feature}&a for &b{player}&a!'
    success-all: '&aManually unlocked &e{feature}&a for all players!'
    already-unlocked: '&e{feature} &7is already unlocked.'
    invalid-feature: '&cInvalid feature: &e{feature}'
    usage: '&cUsage: /progression unlock <dimension|item|enchant> <name> [player]'
 
  reload:
    success: '&aReloaded all configurations!'
    error: '&cError reloading configs. Check console.'

notifications:
  feature-unlocked: '&a&l✓ &aYou have unlocked: &e{feature}&a!'
  dimension-unlock: '&a&l✓ &aThe &e{dimension}&a is now accessible!'
  item-unlock: '&a&l✓ &aYou can now use &e{item}&a!'
  enchant-cap-increase: '&a&l⚠ &e{enchant}&a cap increased to &b{cap}&a!'

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

How to Use

Setting Up Dimension Locks
  1. Edit locks/dimensions.yml to configure Nether and End access
  2. Set locked: true to enable the lock
  3. Add conditions like SERVER_AGE, WORLD_AGE, or ADVANCEMENT
  4. Use require-all-conditions: true to require ALL conditions (AND logic)
  5. Use require-all-conditions: false to require ANY condition (OR logic)
  6. Players will be blocked from portals and teleports until conditions are met

Setting Up Item Locks
  1. Edit locks/items.yml to configure item restrictions
  2. Choose which actions to prevent: prevent-equip, prevent-flight, prevent-open, prevent-place, prevent-use
  3. Set time-based or advancement-based unlock conditions
  4. Customize messages for each item type
  5. Supported items: Elytra, Ender Chest, Totem of Undying, Shulker Box

Setting Up Enchantment Caps
  1. Edit locks/enchantments.yml to configure enchantment limits
  2. Set default-cap for the starting enchantment level
  3. Add time-based progression to increase caps over time
  4. Configure per-enchantment rules for specific enchantments
  5. Players cannot enchant or combine items beyond the current cap

Condition Types

Time Conversion
Code (Text):
1 hour = 3,600,000 ms
1 day = 86,400,000 ms
1 week = 604,800,000 ms
2 weeks = 1,209,600,000 ms
30 days = 2,592,000,000 ms
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Use Cases

For Fresh SMP Servers

For Competitive Servers

For Roleplay Servers

For Hardcore Servers

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Placeholders

Available in messages:
Code (Text):
{player} - Player name
{world} - World name
{feature} - Feature name (dimension/item/enchant)
{dimension} - Dimension name
{item} - Item name
{enchant} - Enchantment name
{cap} - Current enchantment cap
{time_remaining} - Time until unlock (formatted)
Time Format Examples:
Code (Text):
7d 12h - 7 days, 12 hours
3h 45m - 3 hours, 45 minutes
30m 15s - 30 minutes, 15 seconds
45s - 45 seconds
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Requirements


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

❓ FAQ

Q: How does server age work?
A: Server age starts counting from when the plugin is first enabled. It tracks real-world time, not in-game time.

Q: What's the difference between server age and world age?
A: Server age is real-world time since plugin startup. World age is in-game time (affected by sleep, time commands, etc.).

Q: Can I unlock features early for specific players?
A: Yes! Use /progression unlock <type> <name> <player> to manually unlock for individuals.

Q: Do unlocks persist after restart?
A: Yes! Manual unlocks are saved in unlocks.yml and persist across restarts.

Q: Can I have different rules for different worlds?
A: Yes! Use per-world-overrides in dimension configs to customize per-world.

Q: What happens if I change time values after server start?
A: The plugin will recalculate based on the new values. Locks may unlock immediately if conditions are now met.

Q: Can players bypass locks with commands?
A: Only if they have bypass permissions. Teleport commands are blocked for locked dimensions.

Q: How does the cache system work?
A: Lock states are cached for 60 seconds (configurable) to reduce performance impact. Cache auto-invalidates when advancements are earned.

Q: Can I add custom items or enchantments?
A: Currently supports Elytra, Ender Chest, Totem, and Shulker Box. Enchantments support all vanilla enchants.

Q: Does this work with custom enchantment plugins?
A: Only vanilla enchantments are supported. Custom enchantments from other plugins are not affected.

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

⚡ Performance


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

️ Advanced Features

Hybrid Conditions

Per-World Overrides

Notification System

Manual Unlock System

━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Example Configurations

Example 1: Week-Long Nether Lock
Code (Text):
nether:
  enabled: true
  locked: true
  conditions:
    - type: SERVER_AGE
      value: 604800000
  require-all-conditions: true
  messages:
    portal-blocked: '&cNether unlocks in 7 days!'
Example 2: Advancement-Based End Access
Code (Text):
end:
  enabled: true
  locked: true
  conditions:
    - type: ADVANCEMENT
      advancement: minecraft:story/enter_the_nether
    - type: SERVER_AGE
      value: 1209600000
  require-all-conditions: true
  messages:
    portal-blocked: '&cDefeat the Nether first!'
Example 3: Playtime-Based Elytra
Code (Text):
elytra:
  enabled: true
  locked: true
  conditions:
    - type: PLAYTIME
      value: 36000000
  actions:
    prevent-equip: true
    prevent-flight: true
  messages:
    usage-blocked: '&cPlay for 10 hours to unlock Elytra!'
Example 4: Progressive Sharpness Cap
Code (Text):
sharpness:
  enabled: true
  default-cap: 1
  conditions:
    - type: SERVER_AGE
      value: 604800000
      cap: 3
    - type: SERVER_AGE
      value: 1209600000
      cap: 5
  messages:
    enchant-blocked: '&cSharpness capped at {cap}!'
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━​

Support

Need help? Found a bug? Have a suggestion?


━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━

Made with ❤️ by TropicalStudios

If you enjoy this plugin, please leave a ⭐⭐⭐⭐⭐ review!​

Commands

Plugin details

Read from the plugin's own plugin.yml.

Quick facts

Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.

TropicalProgression | Made with Kodari is a free Minecraft Java mod. Compatible with Minecraft 1.8, 1.9, 1.10, 1.11 and newer. Downloaded 29 times (via Spigot). Download it and open it directly in the game.

Explore more