Custom Cases
Add immersive Loot Cases to Minecraft - with CSGO-style animations, fully configurable via JSON files and easily insertable into any custom loot table.
截图
介绍

Animated Loot Cases for Minecraft!
Open a case. Watch the CS:GO-style roulette spin. Claim your reward.
- Loot cases are 100% configurable.

Features
Gameplay
- CS:GO-style roulette — smooth two-phase easing (cubic in → exponential out)
- Open ×5 — open five cases simultaneously in a side-by-side view
- Case preview — left-click any case to inspect its full loot table with exact drop rates
- Legendary broadcast — server-wide chat message and sound when a legendary item is won, synced with the exact moment the roulette stops
Technical
- 100% customizable cases — defined as JSON files in
\config\CasesMod\cases\, no code required - Live reload —
/casesmod reloadinstantly applies changes without restarting - Reward escrow — unclaimed rewards are safely stored server-side, even after disconnects
- Server-authoritative system — all rolls happen server-side; clients only receive animation data
Customization
## \config\CasesMod\cases\
- 5 rarity tiers, each with configurable particle effects (type, count, enabled/disabled)
- Configurable spin duration, legendary sound ID, and broadcast scope (winner-only or global)
- Per-item customization :
- Name,
- Rarity,
- Drop chance (%),
- Enchantments,
- Attributes,
- CustomModelData,
- Stack size ranges,
- NBT – (CasesMod 1.1.0 and above)
Textures
You can add, modify, or remove textures for cases and GUIs by opening the
.jarfile (for example with WinRAR) and navigating to:\resources\assets\casesmod\You can modify or add:
case_<CaseID>.pngcase_gui_<CaseID>.pngmulti_case_gui_<CaseID>.pngspin_overlay_<CaseID>.png⚠️ All players must use the same modified mod version ⚠️
- Resource pack support: planned, not yet tested

Rarity Tiers
| Rarity | Color | Default Particles |
|---|---|---|
| ⬜ Common | White | None |
| 🟩 Uncommon | Green | None |
| 🟦 Rare | Blue | ✨ Enchantment sparks ×15 |
| 🟪 Epic | Purple | 💜 Hearts ×20 |
| 🟨 Legendary | Gold | 🌟 Totem particles ×50 |

Adding a Case
Drop a .json file into \config\CasesMod\cases\ and run /casesmod reload (does not requires restart to apply).
{
"caseName": "Weapon Case",
"caseId": 3,
"XP_price": false,
"XP": 1,
"Item_price": false,
"Item": "minecraft:chest,
"Item_count": 1,
"Command_price": false,
"Command": "/give %player% minecraft:chest",
"loot": [
{
"item": "minecraft:iron_sword",
"min": 1,
"max": 1,
"chance": 40,
"rarity": "common"
},
{ "item": "minecraft:diamond_sword",
"chance": 20,
"rarity": "rare",
"enchantments": [{ "id": "minecraft:sharpness", "level": 3 }]
},
{
"item": "minecraft:diamond_sword",
"min": 1,
"max": 1,
"chance": 4.76,
"rarity": "epic",
"displayName": "§6★ Diamond Sword ★",
"customModelData": 1,
"attributes": [
{ "name":"minecraft:generic.attack_damage","value": 10.0,"slot":"mainhand"},
{ "name":"minecraft:generic.armor","value": 5.0,"slot":"chest"}],
"enchantments": [
{ "id": "minecraft:sharpness", "level": 5 },
{ "id": "minecraft:unbreaking", "level": 3 },
{ "id": "minecraft:looting", "level": 3 }]
},
{
"item": "minecraft:chest",
"min": 1,
"max": 2,
"chance": 60.76,
"rarity": "epic",
"NBT": "BlockEntityTag:{Items:[{Slot:0,id:acacia_fence,Count:1},{Slot:15,id:acacia_slab,Count:1}]},Enchantments:[{lvl:1,id:depth_strider}]"
}
]
}
Chances do not need to total 100 — they are automatically normalized. Both
"chance"and"weight"are supported.
Adding a Case in Loot Table
Drop a .json file into data/<your_mod>/loot_tables/ or use a Global Loot Modifier.
The function casesmod:set_case_id adds the NBT tags CaseID and CustomModelData to the item casesmod:case_item. The Case_ID must match a file in /config/CasesMod/cases/<Case>.json on the server.
Here: 30% chance to get Case #1, 10% chance to get Case #2.
{
"type": "minecraft:chest",
"pools": [
{
"rolls": 1,
"entries": [
{
"type": "minecraft:item",
"name": "casesmod:case_item",
"weight": 3,
"functions": [
{
"function": "casesmod:set_case_id",
"case_id": 1
}
]
},
{
"type": "minecraft:item",
"name": "casesmod:case_item",
"weight": 1,
"functions": [
{
"function": "casesmod:set_case_id",
"case_id": 2
}
]
},
{
"type": "minecraft:empty",
"weight": 6
}
]
}
]
}

Configuration
\config\CasesMod\CasesMod.yml (requires restart to apply):
| Option | Default | Description |
|---|---|---|
spinDurationTicks |
100 (5 s) |
Duration of the roulette animation |
multiOpenEnabled |
true |
Enables the Open ×5 feature |
particles rarity enabled |
varies | Enable or disable particles per rarity |
particles rarity type |
varies | Particle type (ResourceLocation) |
particles rarity count |
varies | Number of particles spawned |

Legendary Events
Configure in /config/CasesMod/CasesMod.yml:
legendary:
message: "§6[CasesMod] §r{player} §6obtained §r{item} §6(Legendary)!"
sound_enabled: true
sound_broadcast: true # false = only the winner hears it
sound_id: "minecraft:entity.wither.spawn"
The message and sound trigger when the roulette stops, ensuring perfect visual synchronization.

Commands
Requires operator permission (level 2).
| Command | Description |
|---|---|
/casesmod give <player> casesmod:case_item{CaseID:CaseId} |
🎁 Give a specific case |
/casesmod list |
📋 List all loaded cases |
/casesmod reload |
🔄 Reload all JSON files |

Fabric Version
- Thanks to m43ctp0 for the Fabric 1.20.1 version of the mod : https://www.curseforge.com/minecraft/mc-mods/lootcasesbags

FAQ
Q: Can I use this on my modpack?
A: Yes, for sure !
Q: Can I use this on my server?
A: Yes, for sure !
Q: Can I create an addon for this mod?
A: Yes, for sure !
Q: Where can I report bugs?
A: Use the Issues tab on CurseForge or contact me via Discord (link in profile).

License
The mod’s source code will be uploaded to GitHub soon.
This project is All Rights Reserved.
You may:
- Modify and use privately
- Use in modpacks (downloaded directly from CurseForge/Modrinth)
Forks:
Forks are only permitted for submitting pull requests to the upstream repository.
Restrictions:
- Any public publication/upload requires my prior written authorization
- Redistribution of builds or rehosting is strictly prohibited
常见问题
Custom Cases 支持哪些 Minecraft 版本?
Custom Cases 支持 Minecraft Java 版 1.20.1,可用的加载器:Forge / NeoForge。下载时注意选择和你游戏版本一致的文件。
Custom Cases 怎么安装?
先用 PCL2 或 HMCL 启动器安装对应版本的 Forge / NeoForge,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。
评论
登录后评论和评分