ModsJava
⚡ IceAttributes | ❄️ The Ultimate Attribute System
Java mod listed for Minecraft 1.17–26.x. Downloads from the MC Java Mods app on Android.
GitHub: ❄️ ICE ATTRIBUTES ❄️ Attribute Shop • Player Profiles • Showcase System 1.17 – 1.21+ | Java 17 | Zero Hard Dependencies Author: Hajmehrsam WHAT…
⬇ Download on Spigot
GitHub: https://github.com/Hajmehrsam
❄️ ICE ATTRIBUTES ❄️
Attribute Shop • Player Profiles • Showcase System
1.17 – 1.21+ | Java 17 | Zero Hard Dependencies
Author: Hajmehrsam
WHAT IS ICE ATTRIBUTES?
❄️ ICE ATTRIBUTES ❄️
Attribute Shop • Player Profiles • Showcase System
1.17 – 1.21+ | Java 17 | Zero Hard Dependencies
Author: Hajmehrsam
IceAttributes is a complete RPG-style upgrade system for your server.
Players earn currency, browse a beautiful in-game shop, and purchase
permanent upgrades that apply real effects to their character:
❤️ Extra hearts. ⚡ Faster attacks. Quicker movement. A bigger body (Scale).
Permanent potion effects. ⭐ Even custom permission perks.
But unlike most "stat shop" plugins, everything in IceAttributes is
driven by plain YAML files. You never touch Java code. As a server owner you
can invent brand-new attributes, mix three different currencies, build
rank-gated premium perks, design your own GUI layouts, and rewrite every
single message — without ever recompiling anything.
[HR][/HR]
THE GAMEPLAY LOOP (How it works)
1. Players open the shop → [/attributes] or [/iceattributes shop]
A categorized, paginated menu shows every attribute you configured. Each item
live-updates its appearance based on the player's state:
- ✅ Available — clickable, shows price & next level
- Owned — glowing, shows current level, upgradeable
- Max Level — fully upgraded, nothing more to buy
- Locked — missing a requirement (shows exactly WHICH one!)
- No Funds — can't afford it right now
- ⛔ Unsupported — needs a newer MC version (e.g. Scale on 1.17)
- ❌ Disabled — admin temporarily turned it off
An optional confirmation menu opens first: current level → new level, price,
currency, everything shown before a single coin is spent.
3. Validation runs (in this exact order):
enabled → version support → permission → requirements → currency →
purchase limit → max level → cancellable AttributePurchaseEvent.
If anything fails, the player is told exactly why — and
zero currency is touched.
4. Payment is withdrawn, purchase is saved
The database write is transactional. If the save fails (disk error,
shutdown race), the money is automatically refunded — a failed
purchase can never eat a player's money.
5. The effect applies instantly
Modifier is attached (stable UUID — never duplicated on rejoin), a
configurable sound + title + action bar + particle burst plays , the GUI
refreshes, and the purchase is written into history.
6. They show off ️
Selected attributes appear on their public Profile GUI, and can be announced
in chat with hover text. Players love flexing max-level upgrades!
[HR][/HR]
⚔️ THE ATTRIBUTE SYSTEM
Supported built-in types:
- ❤️ MAX_HEALTH — bonus hearts (extra hearts render automatically)
- MOVEMENT_SPEED — permanent speed bonus
- ⚔️ ATTACK_DAMAGE — melee damage
- ️ ATTACK_SPEED — swing speed
- ️ ARMOR & ARMOR_TOUGHNESS — damage reduction
- KNOCKBACK_RESISTANCE — tank those punches
- LUCK — loot table luck
- FOLLOW_RANGE — mob aggro range
- SCALE — player size (requires MC 1.20.5+, safely skipped below)
- JUMP_STRENGTH — jump height (requires MC 1.20.5+)
- POTION_EFFECT — ANY permanent potion effect (Haste, Speed, Night Vision...)
- ⭐ PERMISSION — grants a permission node while owned
- ️ CUSTOM — register your own handler via the API!
- Unique ID, display name, description (MiniMessage)
- Attribute type + operation (ADD_NUMBER / ADD_SCALAR / MULTIPLY_SCALAR_1)
- Flat value or level progression (initial value, increment, max level)
- Price + currency (Vault / PlayerPoints / Premium Coin)
- Purchase permission + purchase limits + repeatable flag
- Required previous attribute (unlock trees! )
- Timed expiration (rent attributes for X seconds!)
- Custom GUI item: material, name, lore, glow, custom model data, item flags
- Custom purchase sound + effects (title, action bar, particles)
- Category + shop slot ordering
- Profile visibility, icon, display name, sort priority
- Hidden flag, enabled/disabled flag
Code (Text):
scale-vip:
enabled: true
type: SCALE
category: special
display:
name: "<gradient:#FFD700:#FFA500>VIP Titan Scale</gradient>"
description:
- "<gray>Each level makes you +10% larger."
progression:
enabled: true
increment: 0.1
max-level: 5
price:
currency: PREMIUM_COIN
amount: 50
requirements:
mode: ANY
vip-group:
type: luckperms-group
group: vip
vip-perm:
type: permission
permission: "iceattributes.vip"
profile:
featured: true
icon: MAGMA_CREAM
[HR][/HR]
THE CURRENCY SYSTEM (3 currencies, zero setup)
- VAULT — hooks into any economy plugin (EssentialsX, CMI, Coins...). Optional & auto-detected.
- PLAYER_POINTS — hooks into PlayerPoints if installed. Optional & auto-detected.
- PREMIUM COIN — built-in currency stored in our own database. Always available.
- Persistent SQLite-backed balances
- Start balance, max balance & negative-balance config options
- Full admin management: [/iceattributes premiumcoins give|take|set]
- Works for offline players too! (data loads on demand)
- Cancellable PremiumCoinChangeEvent for developers
- GUI balance display + PlaceholderAPI placeholder
upgrades cost money, some cost points, and the best ones cost Premium Coins!
[HR][/HR]
️ THE REQUIREMENTS ENGINE
Attribute-gating with AND / OR logic. Mix and match:
- permission — requires a permission node
- luckperms-group — requires a LuckPerms group (rank gating!)
- placeholder — PlaceholderAPI condition (equals / contains / regex)
- money — minimum Vault balance
- premium-coins — minimum coin balance
- player-points — minimum points
- ⚔️ attribute — requires another attribute at a level
- world — only purchasable in certain worlds
Code (Text):
requirements:
mode: ALL
vip:
type: luckperms-group
group: vip
experience:
type: placeholder
placeholder: "%statistic_hours_played%"
regex: "([5-9][0-9]|[1-9][0-9]{2,})" # 5+ hours played
players always know exactly what they're missing. No mystery locks. ️
[HR][/HR]
️ THE SHOP GUI (100% configurable)
Built from gui.yml — no hardcoded layout exists anywhere in the plugin.
- Custom titles (MiniMessage, live page numbers: "Shop (2/3)")
- Custom rows (1-6), custom attribute slots with ranges like [10-16, 19-25]
- Unlimited categories with configurable slots & icons
- Pagination with smart previous/next buttons (auto-hide on edges)
- Live balance displays for every available currency
- Decorative items & filler panes at any slot
- Per-state appearance overrides (material/name/lore/glow for each of the 7 states)
- Click sounds, page sounds, purchase & error sounds — all configurable
- Conditional items: hide by config path, permission, or page position
- Dynamic title refresh — page numbers update as players browse!
custom model data, item flags, enchantments — with placeholders everywhere.
[HR][/HR]
THE PROFILE SYSTEM
Every player gets a showcase-ready profile: [/profile] or [/profile <player>]
- Player head with stats: total attributes, total levels, featured picks
- Featured attributes pinned to the top with a golden glow
- Owned attributes with levels, values & categories
- Optional purchase history (last N purchases with prices & dates)
- Optional Premium Coin / money balance display
Code (Text):
profile:
show-balance: false
show-premium-coins: true
show-purchases: true
show-levels: true
show-values: true
THE SHOWCASE SYSTEM (Show off!)
Let your players flex their achievements:
- Open [/iceattributes showcase] → click owned attributes to feature them
- Featured attributes glow on the profile, locked ones show as locked
- Configurable maximum slots (default 6)
- [/iceattributes showcase <attribute>] announces in chat with
hover text showing the attribute details! - Cancellable AttributeShowcaseChangeEvent for developers
- Chat broadcast mode (configurable) — announce to the whole server!
️ STORAGE & PERFORMANCE (Built for production)
- SQLite storage, 100% async — zero SQL on the main thread
- WAL journal + single DB thread = no "database is locked" errors
- Full transactional saves (players, attributes, showcase, coins, history)
- Cached player data — instant reads, dirty-flag writes
- ⏱️ Configurable auto-save interval (default 5 min) + save on quit & shutdown
- Stable modifier UUIDs — relog never duplicates modifiers
- Memory-safe: attachments cleaned on quit, menus untracked on close
- ️ Driver auto-detection: Paper libraries loader, Spigot's internal driver,
or a manual libs/ folder — works everywhere - Repository-based storage layer — MySQL/MariaDB can be added without
touching business logic
✨ MINIMESSAGE + LANGUAGES
Every message, title, GUI name and lore supports full MiniMessage:
Code (Text):
<gradient:#5A7CFF:#A55CFF>IceAttributes</gradient>
<gold>Premium Coin</gold> <red>You do not have enough coins.</red>
<hover:show_text:'<gold>Click to open!'><yellow>Shop</yellow></hover>
- English and Persian language files included
- Both are comprehensive — 100+ message keys covering every situation
- Switch with one line: language: fa — with safe English fallback
- Persian file is written natively (proper RTL wording), not machine-translated
PLACEHOLDERAPI INTEGRATION
Built-in placeholders (PAPI optional — everything else works without it):
Code (Text):
%iceattributes_premium_coins%
%iceattributes_total_owned%
%iceattributes_total_levels%
%iceattributes_showcase%
%iceattributes_showcase_count%
%iceattributes_owned_<attribute>%
%iceattributes_level_<attribute>%
%iceattributes_value_<attribute>%
%iceattributes_name_<attribute>%
%iceattributes_currency_<attribute>%
%iceattributes_max_level_<attribute>%
use placeholders from other plugins inside our lore, requirements & messages!
[HR][/HR]
ADMIN TOOLKIT
Complete control over every player:
Code (Text):
/iceattributes give <player> <attribute> [level] # grant upgrades
/iceattributes remove <player> <attribute> # take one away
/iceattributes set <player> <attribute> <level> # exact level
/iceattributes reset <player> # full wipe
/iceattributes info <attribute> # inspect definition
/iceattributes premiumcoins give|take|set <player> <amount>
/iceattributes reload # reload ALL configs
- ✔️ Works on offline players (data loads on demand)
- ✔️ Permission-aware smart tab completion (player names, attribute IDs, categories)
- ✔️ Live effects: online targets get modifiers applied instantly
- ✔️ Safe reload — re-reads YAML & re-applies without kicking anyone
DEVELOPER API
Register your own extensions from any plugin:
Code (Text):
IceAttributesAPI api = IceAttributesAPI.get();
api.registerAttribute(myDefinition); // custom attribute
api.registerCurrency(myCurrencyProvider); // custom currency
api.registerRequirementType("my-req", provider);
api.registerAttributeHandler(myHandler); // custom effect type
api.giveAttribute(uuid, "max-health", 3); // grants & applies
api.getAttributeLevel(uuid, "scale");
api.addPremiumCoins(uuid, 100, "daily-reward");
- ⚔️ AttributePurchaseEvent — fired before payment; cancel to block
- ⬆️ AttributeUpgradeEvent — fired after success
- ️ AttributeRemoveEvent — fired before removal
- PremiumCoinChangeEvent — fired before balance changes
- ⭐ AttributeShowcaseChangeEvent — fired before showcase changes
INSTALLATION
- Drop IceAttributes.jar into the plugins/ folder (~1 MB!)
- Start the server — all config files generate automatically
- Customize attributes.yml, gui.yml, messages
- Run /iceattributes reload — done!
Optional: Vault + economy ✦ PlayerPoints ✦ LuckPerms ✦ PlaceholderAPI
[HR][/HR]
WHAT THE CONFIGS CONTAIN
config.yml — database, language, debug, all currency settings,
premium coin rules, purchase behavior (confirmation, cooldowns, broadcast),
profile privacy, showcase limits, default effects & sounds
attributes.yml — 14 complete example attributes shipped:
Max Health, Movement Speed, Attack Damage, Attack Speed, Armor, Armor
Toughness, Luck, Knockback Resistance, Scale, VIP-only Scale, permanent
Haste & Speed potions, VIP Perks, Jump Strength — covering all three
currencies and every requirement type. Copy → edit → done!
gui.yml — every menu's title, rows, slots, layouts, items, states,
navigation, balance displays, decorations, sounds
langs/en.yml + fa.yml — every player-facing message with MiniMessage
[HR][/HR]
Spoiler: FULL COMMAND LIST
/attributes [category] [page] # shop shortcut
/profile [player] # profile shortcut
/iceattributes help
/iceattributes shop [category] [page]
/iceattributes profile [player]
/iceattributes showcase [attribute]
/iceattributes balance
/iceattributes premiumcoins
/iceattributes premiumcoins give <player> <amount>
/iceattributes premiumcoins take <player> <amount>
/iceattributes premiumcoins set <player> <amount>
/iceattributes give <player> <attribute> [level]
/iceattributes remove <player> <attribute>
/iceattributes set <player> <attribute> <level>
/iceattributes reset <player>
/iceattributes info <attribute>
/iceattributes reload
/iceattributes version
Aliases:
/ia,
/iceattr,
/attribute,
/attributeshop,
/attributesprofile — plus custom runtime aliases via config!
Code (Text):
/attributes [category] [page] # shop shortcut
/profile [player] # profile shortcut
/iceattributes help
/iceattributes shop [category] [page]
/iceattributes profile [player]
/iceattributes showcase [attribute]
/iceattributes balance
/iceattributes premiumcoins
/iceattributes premiumcoins give <player> <amount>
/iceattributes premiumcoins take <player> <amount>
/iceattributes premiumcoins set <player> <amount>
/iceattributes give <player> <attribute> [level]
/iceattributes remove <player> <attribute>
/iceattributes set <player> <attribute> <level>
/iceattributes reset <player>
/iceattributes info <attribute>
/iceattributes reload
/iceattributes version
/attributesprofile — plus custom runtime aliases via config!
Spoiler: FULL PERMISSION LIST
iceattributes.* # everything
iceattributes.use # default: true
iceattributes.shop # default: true
iceattributes.profile # default: true
iceattributes.profile.others # inspect other profiles
iceattributes.showcase # default: true
iceattributes.balance # default: true
iceattributes.premiumcoins # default: true
iceattributes.reload # op
iceattributes.admin.* # all admin perms
iceattributes.admin.give # op
iceattributes.admin.remove # op
iceattributes.admin.set # op
iceattributes.admin.reset # op
iceattributes.admin.premiumcoins # op
iceattributes.admin.info # op
Per-attribute purchase permissions are set per attribute (e.g.
iceattributes.attribute.scale) — fully your choice, per attribute!
Code (Text):
iceattributes.* # everything
iceattributes.use # default: true
iceattributes.shop # default: true
iceattributes.profile # default: true
iceattributes.profile.others # inspect other profiles
iceattributes.showcase # default: true
iceattributes.balance # default: true
iceattributes.premiumcoins # default: true
iceattributes.reload # op
iceattributes.admin.* # all admin perms
iceattributes.admin.give # op
iceattributes.admin.remove # op
iceattributes.admin.set # op
iceattributes.admin.reset # op
iceattributes.admin.premiumcoins # op
iceattributes.admin.info # op
iceattributes.attribute.scale) — fully your choice, per attribute!
Spoiler: ❓ FAQ
[HR][/HR]
Q: Does Scale work on 1.17?
A: No — Minecraft itself only added player SCALE in 1.20.5. IceAttributes
detects this and safely shows it as "unsupported" (or hides it). It will
never crash or break other attributes.
Q: What if Vault/PlayerPoints/LuckPerms aren't installed?
A: Nothing breaks. Those currencies show as unavailable, LuckPerms
requirements fail gracefully, and the rest works normally.
Q: Can a failed purchase steal my players' money?
A: No. Payments are only taken after ALL checks pass, and the database
save is transactional with automatic rollback.
Q: I messed up the config — will the server crash?
A: No. Invalid entries are skipped individually and the exact broken path
is printed to console (e.g. attributes.scale.price.amount).
Q: Is there MySQL support?
A: SQLite ships built-in; the storage layer is repository-based so MySQL
is a drop-in addition planned for a future update.
A: No — Minecraft itself only added player SCALE in 1.20.5. IceAttributes
detects this and safely shows it as "unsupported" (or hides it). It will
never crash or break other attributes.
Q: What if Vault/PlayerPoints/LuckPerms aren't installed?
A: Nothing breaks. Those currencies show as unavailable, LuckPerms
requirements fail gracefully, and the rest works normally.
Q: Can a failed purchase steal my players' money?
A: No. Payments are only taken after ALL checks pass, and the database
save is transactional with automatic rollback.
Q: I messed up the config — will the server crash?
A: No. Invalid entries are skipped individually and the exact broken path
is printed to console (e.g. attributes.scale.price.amount).
Q: Is there MySQL support?
A: SQLite ships built-in; the storage layer is repository-based so MySQL
is a drop-in addition planned for a future update.
FOUND A BUG? HAVE A SUGGESTION?
Post in the Discussions tab — I read everything.
⭐ If this plugin helped your server, a rating means a lot! ⭐
Post in the Discussions tab — I read everything.
⭐ If this plugin helped your server, a rating means a lot! ⭐
Quick facts
- Edition: Minecraft Java
- File type: .jar
- Minecraft versions listed: 1.17, 1.18, 1.19
- How to install: Install the matching mod loader (Forge, Fabric or NeoForge) for your Minecraft version. → Download the .jar. → Put it in the .minecraft/mods folder and launch that loader profile.
- Where to get it: Opens on Spigot — not every file is mirrored on our own servers.
Install steps are the general flow for this file type — How to install Minecraft Java mods & modpacks walks through it step by step.
⚡ IceAttributes | ❄️ The Ultimate Attribute System is a free Minecraft Java mod. Compatible with Minecraft 1.17, 1.18, 1.19, 1.20 and newer. Downloaded 22 times (via Spigot). Download it and open it directly in the game.