
This mod adds a new class of tools to Minecraft called crystal tools. They are meant to be a post-netherite tool that can keep getting better as you use it through skill trees!
This mod adds a new class of tools to Minecraft called crystal tools. They are meant to be a post-netherite tool that can keep getting better as you use it.
You can download the mod on Curse Forge, Modrinth, or from Github Releases.
Please report any bugs you find in the Issues tab or in the comments.
You can also suggest features or ask questions there.
Deepslate Crystal Ore Generates Below Y -44 in veins of size 5.
The ore generates very rarely, currently only about one vein per chunk.
There is a new type of Geode that spawns in the nether! Inside you can find Crystal Geodes, Netherite Infused Crystal Geodes, and rarelyAncient Debris.

Netherite Infused Crystal Geodes drop Netherite Infused Crystal Shards which are used to craft the Crystal Upgrade Smithing Template
which is then used to upgrade netherite armor into crystal armor.
Tools gain experience by using them. You can see how much exp you need to get to the next level by looking at the tooltip. You can open the skill tree by pressing k by default. Skill points can be using to get a new skill or to fully repair your tool.
The following tools/armor pieces are implemented:
There will be upgrades that are common to most tools, and tools will each get unique upgrades as well. Below is a list of all currently implemented upgrades.
m by default)ingot taggem tagQUANTITY, NAME, MOD, or ID
























The following config options are available. The default values are in parentheses.
You can change these values in config/crystal_tools.toml or in the in-game UI.
base_experience_cap (75): Starting EXP requirements for Tools and Armor. Range: 1 - 10000.max_exp (1000): The maximum amount of exp that can be required for the next level. Range 1 - 100000.experience_multiplier (1.1): Multiplier for max experience to the next level. Range: 1.0 - 100.0.furnace_experience_boost (1): Multiplies how much experience Furnaces get, experience is calculated by EXP_GAINED = RECIPE_EXP * 10 * FURNACE_EXPERIENCE_BOOST. Range: 0.1 - 1000.0.fishing_rod_exp (10): Determines how much experience you get for fish caught. Range 1 - 1000.experience_leveling_scaling (10): Number of levels in a tool before the experience level costs increases. Set to 0 to disable scaling. Range: 0 - 100.experience_per_skill_level (10): Determines the number of experience levels you need to gain a level on a tool. Set to 0 to disable. Range: 0 - 100.tool_repair_cooldown (50): Determines the cooldown between durability repairs for tools with the auto repair upgrade in ticks (20 ticks per second). Range: 1 - 10000.repair_in_hand (false): If true, tools will auto repair while you are holding themrocket_repair_modifier (10): Multiplied by TOOL_REPAIR_COOLDOWN to get the cooldown of the auto repair on the rocket. Range: 1 - 10000.apple_repair_modifier (10): Multiplied by TOOL_REPAIR_COOLDOWN to get the cooldown of the auto repair on the apple. Range: 1 - 10000.vein_miner_range (4): Determines the range of the vein miner upgrade on the shovel, pickaxe, and AIOT. It will mine blocks upo to this range away from the ore broken. Range 1 - 100.tree_chopper_range (10): Determines the range of the tree chopper and tree stripper upgrade on the axe. It will mine logs up to this range away from the log broken. Range 1 - 100.always_channel (true): If true, channeling Crystal Tridents will summon lightning even if they don't hit an entity.fuel_efficiency_added_ticks (100): Number of ticks that are added to each fuel piece per level of fuel efficiency.speed_upgrade_subtract_ticks (10): Number of ticks subtracted from every recipe's duration per level of furnace speed.experience_boost_percentage (0.1): Percentage increase of experience gained per level of experience boost.base_fe_generation (40): Base FE generation per tick. Range: 1 - 1000000.base_fe_storage (10000): Base FE the crystal generator can store. Range: 1 - 1000000.base_fe_transfer (80): Base FE transfer per tick. Range: 1 - 1000000.fe_generation_per_level (10): FE generation gained per level of FE Generation. Range: 1 - 1000000.fe_storage_per_level (2000): FE storage gained per level of FE capacity. Range: 1 - 1000000.food_burn_time_multiplier (20): The food burntime formula is: (food_nutrition + food saturation) * food_burn_time_multiplier. Range: 0.01 - 10000.skill_points_per_burn_time (0.00625): Determines how much skill experience you get from burning items. skill_exp = fuel_burn_time * skill_points_per_burn_time. Range: 0 - 1.generator_base_experience_cap (50): Starting EXP Cap for the generator. Range 1 - 100000.backpack_sort_type (QUANTITY): Sort method that the backpack uses. Can be one of: QUANTITY, NAME, MOD, or IDbackpack_base_experience_cap (200): Starting EXP requirements for the Backpack. Range: 1 - 10000.max_compression_slot_rows (6): Maximum number of rows of compression slots. These slots will not scroll, so don't set it to larger than your gui scale can render. Range: 1 - 20.quarry_base_energy_cost (40): Quarry base RF/tick. Range: 0 - 100000.quarry_speed_cost_increase (10): How much RF/tick is added to the quarry per speed upgrade. Range: 0 - 100000.quarry_silk_touch_cost_increase (40): How much RF/tick is added to the quarry when silk touch is active. Range: 0 - 100000.quarry_fortune_cost_increase (40): How much RF/tick is added to the quarry when fortune is active. Range: 0 - 100000.quarry_initial_point_multiplier (0.1): What percentage of the points from an AIOT the quarry gets when crafted. Range: 0 - 1.quarry_base_experience_cap (500): Starting EXP Cap for the quarry. Range: 1 - 100000.quarry_speed_upgrade_multiplier (50): Multiplier for the speed upgrade of the quarry. Range: 1 - 100000.quarry_max_size (64): Max size of the quarry. Range: 1 - 256.magnet_base_range (5): Magnet Base Range (in blocks). Range: 0 - 100.level_items_in_pedestal (true): If true, Items will gain experience when used in pedestalsenable_item_requirements (true): Set to false to disable certain nodes from requiring items to upgrade.require_crystal_for_reset (true): Require a crystal item in your inventory for resetting skill points.enchant_tools (false): If true, tools will be enchantable. This could cause weird interactions and issues.upgrade_screen_background ("cracked_deepslate_tiles"): Determines the block texture to use for the background of the upgrade screen. Must be a vanilla block's resource location. Here is a list of options from the wiki.background_opacity (1.0): Controls the background opacity of the skill tree screen. Range: 0 - 1.0.disable_block_target_rendering (false): Disables the block highlighting for 3x3 mining and vein mining.shift_point_spend (10): Number of points to spend while you are holding shift. Range: 1 - 10000.control_point_spend (100): Number of points to spend while you are holding control. Range: 1 - 10000.creative_flight_points (100): The number of points you need to have in the creative flight node for it to enable. Range: 1 - 1000000.vanilla_skill_trees (NONE): Sets the vanilla skill trees that are enabled.NONE will set none,ALL will allow all vanilla toolsNETHERITE will only allow netherite toolsDIAMOND_NETHERITE will allow diamond and netherite tools to be leveledThere are a couple of features that can be customized using datapacks.
entity_type/entity_blacklist: Entities that have this tag will not level up the sword, bow, or AIOT when attacked.[minecraft:armor_stand]block/auto_output_blacklist: The Crystal Furnace and Crystal Quarry will not auto output to blocks with this tag.[minecraft:hopper]More information on tags and datapacks can be found here.
Add a file entity_blacklist.json in a datapack in the location crystal_tools/tags/entity_type that looks like:
{
"values": [
"minecraft:armor_stand"
]
}
generator_gems: Controls the gems that can be burned with the gem generator upgrade in the crystal generator.generator_metals: Controls the gems that can be burned with the gem generator upgrade in the crystal generator.mob_heads: Controls which heads which mobs drop with the beheading upgrade.pedestal_actions: Controls which items have effects in the Crystal PedestalMore information on datamaps can be found here.
Add a file generator_gems.json in a datapack in the location crystal_tools/data_maps/item that looks like:
{
"values": {
"ae2:certus_quartz_crystal": {
"bonusGeneration": 5,
"burnTime": 1600
}
}
}
Where bonusGeneration is the generator added on top of the base from the generator and burnTime is the total burn time in ticks.
{
"values": {
"replace": true,
"minecraft:diamond": {
"bonusGeneration": 1000,
"burnTime": 16000
}
}
}
If you wanted to add another item that would work like a magnet in the pedestal you can add it like this:
{
"values": {
"minecraft:netherite_pickaxe": {
"type": "magnet",
"params": {
"durabilityModifier": 3.0,
"maxTickCounter": 1,
"range": 2
}
}
}
}
durabilityModifier changes how much durability the item uses when the action is usedmaxTickCounter determines how often the action should tick (1 means it will run every tick)range determines the base range of the magnet
There are 2 parts to adding a skill tree: the actual skill tree and the datamap to associate it to an item.
The skill trees are defined in json in a datapack registry.
Built in examples can be found here: https://github.com/will-y/crystal-tools/tree/1.22/src/generated/resources/data/crystal_tools/crystal_tools/skill_trees
The built-in datapack has a skill tree defined for every crystal tool, along with
a basic mining tool tree and a basic sword tree.
To build custom trees, place custom json files in the directory data/<datapack-namespace>/crystal_tools/skill_trees/items.
To actually associate the tree with an item, you will need an entry in the skill tree datapack.
This will go in the file data/crystal_tools/data_maps/item/skill_trees.json.
An example skill tree object looks like:
{
"values": {
"minecraft:netherite_pickaxe": {
"allowRepair": false,
"allowReset": false,
"allowXpLevels": false,
"treeLocation": "crystal_tools:simple_pickaxe"
}
}
}
Fields:
treeLocation (required): The location of the skill tree. Either a built-in tree, or one provided in a datapack.baseExperienceModifier (default 0): Increases the amount of base experience the tool starts with.experienceScaling (default 1.0): Determines how fast tools will gain experience.allowRepair (default true): Will allow you to spend skill points to repair your tool.allowReset (default true): Will allow you to reset the skill points on a tool.allowXpLevels (default true): Will allow you to convert xp to skill points for this tool.allowMiningXp (default true): Will allow the tool to get experience from mining blocks.allowDamageXp (default true): Will allow the tool to get experience from attacking entities.To remove existing items, you can add this to your datapack:
{
"remove": [
"crystal_tools:crystal_pickaxe"
]
}