- This mod adds all from Avaritia.
- This mod is unofficial!
Sneak + use cycles through four modes. Existing shields without mode data default to Normal.
- Normal: the original shield appearance and active blocking.
- Defending: reflects blocked damage while raised and deflects projectiles while held.
- Ultimate Defense: grants passive protection while held, except against Infinity damage and damage that bypasses invulnerability.
- Floating: prevents sinking in water/lava, hovers while sneaking, slows falling, and prevents fall damage. Creative flight and swimming movement are left unchanged.
Active blocking is immediate and omnidirectional, does not slow movement, and permits sprinting. Piercing arrows and shield-bypassing damage still bypass active blocking. Raising and lowering the shield do not emit item-interaction vibrations.
- Programmer:
cnlimiterIAFEnvoyFrostbite-timecu6MikhailTapioAsek3 - Artist:
MHanHanBingNeo-Tix
- Code: MIT
- Assets: CC BY-NC-SA 4.0
- You DEFINITELY CAN add the mod to your modpack.
- Recipe viewing is supported via JEI.
- You can add singularity by using CraftTweaker and KubeJs!
- You can add recipes by CraftTweaker!
- You can add recipes by KubeJs!
Datapack definitions live at data/<namespace>/singularities/<path>.json. The JSON name must equal <namespace>:<path>, and both count and timeCost must be greater than zero.
{
"name": "example:iron",
"displayName": "singularity.example.iron",
"overlayColor": "e1e1e1",
"underlayColor": "6c6c6c",
"count": 1000,
"timeCost": 240,
"ingredient": { "item": "minecraft:iron_ingot" },
"enabled": true,
"recipeEnabled": true
}The historical timeRequired and recipeDisabled aliases are still read with a deprecation warning. To preserve old 1.20 data, the stored recipeDisabled boolean keeps its historical recipeEnabled meaning and is not inverted. Datapack and script changes take effect on /reload.
mods.avaritia.CraftingTable.addShaped("name", tier, output, ingredients);
mods.avaritia.CraftingTable.addShapeless("name", tier, output, ingredients);
mods.avaritia.CraftingTable.remove(output);
mods.avaritia.Compressor.addRecipe("name", input, output, inputCount, timeCost);
mods.avaritia.Compressor.remove(output);
mods.avaritia.Singularity.register("key", "displayName", overlayColor, underlayColor, count, timeCost, ingredient, enabled, recipeEnable);
mods.avaritia.Singularity.remove("key");
mods.avaritia.Singularity.removeAll();
mods.avaritia.Singularity.removeRecipe("key");
mods.avaritia.Singularity.removeAllRecipe();
mods.avaritia.CraftingTable.addCatalyst("name", ingredients, catalystCount)
mods.avaritia.CraftingTable.addEternal("name", ingredients)
mods.avaritia.Singularity.register is a static call. Invalid IDs and non-positive count or timeCost values are logged and only that definition is skipped; unrelated script errors are still reported by the script engine. Singularity operations are staged until the current resource reload finishes its script phase and then committed once. Conflicts resolve as datapack < Java API < CraftTweaker < KubeJS, while later operations from the same source win. Script changes take effect only after /reload.
AvaritiaEvents.singularity(event => {
event.removeRecipe("avaritia:coal")//remove recipe
event.remove("avaritia:coal")//remove singularity
event.removeAllRecipe()//remove all singularity recipe
event.removeAll()//remove all singularity
event.register("avaritia:example", s => {
s
.setDisplayName("singularity.avaritia.example")
.setColors(0xC0C0C0, 0x808080) // [overlay color, underlay color]
.setCount(1000)
.setTimeCost(200)
.setIngredient(Ingredient.of("minecraft:iron_ingot"))
.setEnabled(true)
.setRecipeEnabled(true)
})
})
ServerEvents.recipes(
event => {
const { avaritia } = event.recipes;
avaritia.shaped_table(
// shapeless is avaritia.shapeless_table
4,
"avaritia:infinity_sword",
[
" I ",
" III",
" III ",
" III ",
" C III ",
" CII ",
" NC ",
" N C ",
"X ",
],
{
C: "avaritia:crystal_matrix_ingot",
I: "avaritia:infinity_ingot",
N: "avaritia:neutron_ingot",
X: "avaritia:infinity_catalyst",
}
);
//compressor
avaritia
.compressor("#forge:ingots/copper", Item.of("avaritia:singularity", '{Id:"avaritia:copper"}'))
.timeCost(240)
.inputCount(2000);
avaritia.compressor(Item.of("minecraft:coal"), Item.of("avaritia:singularity", '{Id:"avaritia:coal"}'))
.inputCount(10000)
.timeCost(100)
;//remove singularity recipe first
//infinity catalyst
avaritia.infinity_catalyst(
"default1",
[
"minecraft:emerald_block",
"avaritia:crystal_matrix_ingot",
"avaritia:neutron_ingot",
"avaritia:cosmic_meatballs",
"avaritia:ultimate_stew",
"avaritia:endest_pearl",
"avaritia:record_fragment"
],
2//custom infinity catalyst count
);
avaritia.eternal_singularity(
[
"minecraft:emerald_block",
"avaritia:crystal_matrix_ingot",
"avaritia:neutron_ingot",
"avaritia:cosmic_meatballs",
"avaritia:ultimate_stew",
"avaritia:endest_pearl",
"avaritia:record_fragment"
],
);
console.log('Hello! The avaritia recipe event has fired!')
}
)avaritia_version see this here
repositories {
maven {
url "https://maven.nova-committee.cn/releases"
}
}
dependencies {
implementation fg.deobf("committee.nova.mods:avaritia-forge:${avaritia_version}")
}