Tags
Creators
Details
3.0.1
Compatibility
Changes
Cobbleverse Daily Rewards
This release marks a massive architectural leap and a complete overhaul from version 1.0.0 of the original daily-rewards-fabric mod.
While this fork has been redesigned, translated, and optimized with the Cobbleverse ecosystem in mind, it is 100% standalone and can be used on any Fabric server or modpack.
š Click here to read the full CHANGELOG
⨠New Features & Improvements
- š 100% Server-Side: The mod is now fully server-side. Players do not need to install the mod to see the GUIs or interact with the rewards system.
Server: Required,Client: Optional. - š Native Localization Support (i18n): GUI texts are no longer hardcoded. Using the Server Translations API, the mod now automatically adapts to the player's client language (Currently includes native support for English and Spanish, falling back to English for other languages) without requiring any client-side resource packs.
- š ļø New Admin Commands: Added the
/rewards-setplaytime <player> <seconds>,/rewards-setstreak <player> <days>, and/rewards-reset <player>commands. This allows administrators to manually adjust a player's tracked playtime and daily login streaks, making server management and user support much easier. - āļø Generic Configurations: The mod now generates much cleaner, universal default configuration files (
daily.jsonandplaytime.json) right out of the box, ready for a "Plug & Play" experience.
š Critical Bug Fixes
Several severe bugs present in the original version have been patched:
- NPC Persistence: Fixed a critical issue where NPCs (Screen Entities) configured to open the rewards menu would lose their link and stop working after a server restart. Data is now forcefully saved to disk when adding or removing an entity.
- Broken Pagination: Fixed a mathematical logic error (
Math.ceil) inAbstractRewardScreenthat miscalculated the maximum number of pages, preventing players from accessing subsequent reward pages. - Ghost Click Console Crashes: Added a safety check to prevent the
java.lang.IndexOutOfBoundsException: Index -1server console error, which occurred when a player clicked outside the GUI inventory bounds.
š ļø Commands
Admin Commands (Permission Level 2)
/rewards-reload-<type>-config- Reloads a specific config file without restarting the server./rewards-reset <player>- Resets all playtime and daily streaks to zero for a specific player./rewards-setstreak <player> <days>- Manually adjusts a player's daily streak./rewards-setplaytime <player> <seconds>- Manually sets a player's tracked playtime./rewards-screen-entity add <entity>- Registers an entity (like an NPC) to open the rewards GUI when clicked./rewards-screen-entity remove <entity>- Unregisters a screen entity.
āļø Configuration Example & Flexibility
Curious about how customizable this is? The mod uses a clean, intuitive JSON structure that gives you total freedom over how rewards are distributed. You can mix and match two methods:
- Method 1 (Via Commands): Perfect for virtual economy (like Cobbledollars), permissions, or complex items with NBT/Lore. You run the command in the background and set
"give_item": falseso the GUI item only acts as a visual icon. - Method 2 (Direct Physical Items): You can leave the
commandsarray empty and simply set"give_item": true. The mod will directly give the player the exact physical item shown in the GUI.
Here is a quick sneak peek of how a daily reward is configured using both methods:
[
{
"day": 1,
"id": "day_1",
"commands": [
"cobbledollars give %player% 5000"
],
"items": [
{
"item": "minecraft:paper",
"name": "{\"text\":\"5,000 Cobbledollars (Command)\",\"color\":\"green\"}",
"amount": 1,
"give_item": false
},
{
"item": "cobblemon:rare_candy",
"name": "{\"text\":\"Rare Candy (Direct Item)\",\"color\":\"aqua\"}",
"amount": 3,
"give_item": true
}
]
}
]
Projects on Modrinth are automatically available through a Maven repository for use with JVM build tools such as Gradle. To learn more about the Modrinth Maven API, click here.
Note: When available, you should use the creator's maven repo instead as it will have transitive dependency information that the Modrinth Maven API does not. You may also end up with duplicate dependencies if you use a mix of Modrinth and non-Modrinth Maven repositories for your dependencies, because the group identifier will be different when served through the Modrinth Maven API.
Maven coordinates:
Version ID:
build.gradle:
repositories {
exclusiveContent {
forRepository {
maven {
name = "Modrinth"
url = "https://api.modrinth.com/maven"
}
}
// forRepositories(fg.repository) // Uncomment when using ForgeGradle
filter {
includeGroup "maven.modrinth"
}
}
}
// Standard Gradle dependency
dependencies {
implementation "maven.modrinth:tY7GF14v:D24zZdhA"
}
// Legacy Loom dependency
dependencies {
modImplementation "maven.modrinth:tY7GF14v:D24zZdhA"
}

