Custom Cases
Java mod listed for Minecraft 1.20. Downloads from the MC Java Mods app on Android.
Add immersive Loot Cases to Minecraft - with CSGO-style animations, fully configurable via JSON files and easily insertable into any custom loot table.
I don't know my version or loader




🎰 Custom Cases Mod
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> <CaseId> or /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
- Edition: Minecraft Java
- File type: .jar
- Minecraft version listed: 1.20.1
- 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 CurseForge — 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.
- Ships as CasesMod-forge-1.1.0-1.20.1.jar — drop this file into the mods folder
- Download size: 226 KB
- Download link checked 24 Oct 2026 — working
These come from our own check of the pack file, not from the source page.