
Elementelum, name born from the combination of "Element" and "Weapon"...
Of course, this project is mostly about Elemental Weapons, but there's much more.
If you want a great overview of the added content, check out the youtube review:
vred's DP Lib IS REQUIRED!!
/datapacks/vreds-dp-lib
This project adds:
- new and exciting weapons that have different tiers (pale -> stoichite -> elemental). Each tier has more abilities than the previous one;
- built-in Iron's Spells and Spellbooks compat, where each ability will now use mana.
- forging system;
- datadriven augment system;
- fully configurable stats for weapons and augments.
Technical side
Useful commands
/function elementelum:get_materials
To get all materials and augments!
/function elementelum:get_weapons
To get every weapon!
How to add custom augments
In order to make a custom augment you need:
- 3 item modifiers;
- item with specific custom data;
- 1 or 2 functions;
- 1 enchant (if you want).
Item modfiers
# data/<namespace>/item_modifier/augments/<augment>/normal.json
Will be applied when hitting the yellow part in the forging minigame.
# data/<namespace>/item_modifier/augments/<augment>/perfect.json
Will be applied when hitting the red part in the forging minigame.
# data/<namespace>/item_modifier/augments/<augment>/remove.json
Will be applied when augment is removed.
<namespace> and <augment> are defined into the item itself.
here's an example:
give @s raw_cod[custom_data={vred_lib:{augment:fish,namespace:example, item_type:augment}}]
# data/example/item_modifier/augments/fish/normal.json
# data/example/item_modifier/augments/fish/perfect.json
# data/example/item_modifier/augments/fish/remove.json
Functions
A function is needed to add custom text when the augment is put in the Esoteric Anvil. To add something similar to the text of other augments, it's better to look at the orignal code.
The function needs to be in the #elementelum:augment/desc function tag.
data modify storage elementelum:augment text.<namespace>.<augment>.normal set value '[...]'
data modify storage elementelum:augment text.<namespace>.<augment>.perfect set value '[...]'
If you want to use the same behavior to change the level based on quantity of augment in your inventory, just use function elementelum:augments/calc/base {namespace:<namespace>,augment:<augment>}
However, it will require a custom enchantment with the id "<namespace>:<augment>".
<namespace> and <augment> are the same from the item as before.
Configurable values for weapons
If you want to configure some of the abilites of the weapons, such as:
- cooldown
- damage
- duration.
You need to check the item itself and use /scoreboard to modify the values.
For example, we want to edit the base damage of Thalassurge. We need to know the internal item id (which may not always be the same as the display name)
First of all, we take a copy of said item and hold it in our main hand. Then we run this command:
data get entity @s SelectedItem.components.minecraft:custom_data.vred_lib
After that, try to find the value of "weapon_id" in the command result. In this case it's anchor (yes, I still haven't changed it 💔).
Unzip the datapack and find this function:
data/elementelum/function/<weapon_id>/config/base.mcfunction
(it will be data/elementelum/function/anchor/config/base.mcfunction)
In that function will be all the values of the config, you can tinker around with them using /scoreboard to modify them.
We wanted to edit the base damage of Thalassurge, now we know we can do it using this command:
scoreboard players set $anchor.atk.dmg elementelum.config 5
If you want to reset the values, just
/function elementelum:<weapon_id>/config/reset
(It will be /function elementelum:anchor/config/reset)
