LevelZ is a mod which adds skillables to the player which can get skilled to unlock blocks and strengthen passive skills.
LevelZ is a mod built for the Fabric Loader. It requires Fabric API, Cloth Config API and LibZ to be installed separately; all other dependencies are installed with the mod.
LevelZ is licensed under GPLv3.
Most of the mods default settings can get changed via datapacks, Player attribute affecting settings can get changed via
the config file.
If you don't know how to create a datapack check out Data Pack Wiki
website and try to create your first one for the vanilla game.
If you know how to create one, the folder path has to be data\levelz\FOLDER\YOURFILE.json
For the skills put the file in folder skill
, for restrictions use restriction
.
Caution! Make sure you name the files differently than the existing ones.
Since version 2.0.0, skills can be created and overwritten via datapack.
A skill requires:
- id (integer): determines the location in the skill gui - starting at 0 -> 1,2,3,4
- key (string): determines the name of the skill - translated like "skill.levelz.key" - skill texture must be 16x16px at "assets/levelz/textures/gui/sprites/key.png"
- level (integer): determines the max level in this specific skill
- attributes:
- id (integer): optional id - determines the location in the skill gui - attribute texture must be 9x9px at "assets/levelz/textures/gui/sprites/type.png" (no mod id infront of the type)
- type (string): attribute type (vanilla existing ones can be found below)
- base (float): optional starting value - can be set to -1.0 if vanilla default starting value should be used
- operation (string): determines the mathematical operation how to add "value"
- value (float): value to add/multiply onto the start value
- bonus:
- level (integer): determines the level at which it will be unlocked
- key (string): determines the bonus (all bonuses can be found below)
{
"health": {
"replace": false,
"id": 0,
"key": "health",
"level": 20,
"attributes": [
{
"type": "generic.max_health",
"base": 10,
"operation": "ADD_VALUE",
"value": 1
}
],
"bonus": [
{
"level": 5,
"key": "deathGraceChance"
}
]
},
"...": {
}
}
generic.armor
generic.armor_toughness
generic.attack_damage
generic.attack_knockback
generic.attack_speed
player.block_break_speed
player.block_interaction_range
generic.burning_time
generic.explosion_knockback_resistance
player.entity_interaction_range
generic.fall_damage_multiplier
generic.flying_speed
generic.follow_range
generic.gravity
generic.jump_strength
generic.knockback_resistance
generic.luck
generic.max_absorption
generic.max_health
player.mining_efficiency
generic.movement_efficiency
generic.movement_speed
generic.oxygen_bonus
generic.safe_fall_distance
generic.scale
player.sneaking_speed
zombie.spawn_reinforcements
generic.step_height
player.submerged_mining_speed
player.sweeping_damage_ratio
generic.water_movement_efficiency
bowDamage
: Each level grants +bowDamage on arrow damagebowDoubleDamageChance
: Chance to double arrow damage with bowcrossbowDamage
: Each level grants +crossbowDamage on arrow damagecrossbowDoubleDamageChance
: Chance to double arrow damage with crossbowitemDamageChance
: Each level grants +chance to not consume item damage on item usagepotionEffectChance
: Chance to increase effect amplifier by onebreedTwinChance
: Chance to have twins on breedingfallDamageReduction
: Each level grants +fallDamageReductiondeathGraceChance
: Chance to not die on critical damage intaketntStrength
: Grants +tntStrength tnt strengthpriceDiscount
: Each level grants %priceDiscount on tradingtradeXp
: Each level grants more %tradeXpmerchantImmune
: Grants immunity to reputation decrease and attack call on damaging merchantminingDropChance
: Each level grants %chance to double ore dropplantDropChance
: Each level grants %chance to double plant dropanvilXpCap
: Grants xp cap on anvil usageanvilXpDiscount
: Each level grants %discount on anvil usageanvilXpChance
: Chance to not use xp on anvil usagehealthRegen
: Each level grants %health on regenerationhealthAbsorption
: Grants absorption on regenerationexhaustionReduction
: Each level grants %exhaust reductionmeleeKockbackAttackChance
: Each level grants %chance to knockbackmeleeCriticalAttackChance
: Each level grants %chance to critical hitmeleeCriticalAttackDamage
: Each level grants +critical melee damage on critical hitmeleeDoubleAttackDamageChance
: Chance to double melee damagefoodIncreasion
: Each level grants %food value when eating fooddamageReflection
: Each level grants %damage reflectiondamageReflectionChance
: Each level grants %chance to reflect damageevadingDamageChance
: Chance to evade incoming damage
A restriction requires:
- skills: one or multiple skills with the respective required level
A restriction can include:
- blocks: restricts usage of the blocks
- crafting: restricts recipes by item output id
- entities: restricts usage of entities
- items: restricts usage of items
- mining: restricts mining of blocks
- enchantments: restricts enchantments
{
"name_it_as_you_want": {
"replace": false,
"skills": {
"archery": 1,
"health": 5
},
"blocks": [
"minecraft:anvil"
],
"crafting": [
"minecraft:oak_planks",
"minecraft:iron_sword",
"minecraft:iron_chestplate"
],
"entities": [
"minecraft:villager"
],
"items": [
"minecraft:iron_sword"
],
"mining": [
"minecraft:pumpkin",
"minecraft:stone",
"minecraft:chiseled_polished_blackstone"
],
"enchantments": {
"minecraft:unbreaking": 1
}
},
"...": {
"skills": {
"health": 1
},
"mining": [
"minecraft:dirt"
]
}
}
To display information about a skill in the level gui, just add some lines in the lang json with the following key.
"skill.levelz.yourskillkey.0": "This is the whatever skill"
,
"skill.levelz.yourskillkey.1": "It does somethin"
,
...
Just increase the integer at the end of the json entry.
To permanently disable access to something, simply set the skill requirement higher than the maxLevel
property configured in levelz.json5
.
LevelZ provides two advancement criterions trigger called levelz:level
and levelz:skill
.
The first one triggers when the player reached the set level.
"criteria": {
"levelexample": {
"trigger": "levelz:level",
"conditions": {
"level": 100
}
}
}
The second one triggers when the player reached the set skill level.
"criteria": {
"otherlevelexample": {
"trigger": "levelz:skill",
"conditions": {
"skill_name": "health",
"skill_level": 20
}
}
}
Levelz exposes configuration settings for many attributes, such as
setting max levels, experience rates from different mobs, etc..
These configuration settings are found in ${MINECRAFTDIR}/config/levelz.json5
/level playername add skill integer
- Increase the specific skill by the integer value
/level playername remove skill integer
- Decrease the specific skill by the integer value
/level playername set skill integer
- Set the specific skill to the integer value
/level playername get skill
- Print the specific skill level
Inside the config there is a developer mode setting, when set to true, inside the creative menu, hover over an item/block with your mouse and press f8 (default key) to create or append the item/block id to the file called idlist.json inside your minecraft folder for easier datapack creation.