From e0ccd00a1ea63d4bb517c8dc96f00c9513c05c66 Mon Sep 17 00:00:00 2001 From: SammySemicolon <69329424+SammySemicolon@users.noreply.github.com> Date: Tue, 6 Feb 2024 02:10:34 +0100 Subject: [PATCH] I wish boyfriend wasw here I wanna cuddleeeee again --- .../blockstates/block_of_malignant_alloy.json | 7 + .../resources/assets/malum/lang/en_us.json | 15 ++ .../block/block_of_malignant_alloy.json | 6 + .../models/item/block_of_malignant_alloy.json | 3 + .../models/item/malignant_alloy_ingot.json | 6 + .../models/item/malignant_alloy_nugget.json | 6 + .../models/item/malignant_alloy_plating.json | 6 + .../malum/models/item/malignant_scepter.json | 6 + .../item/malignant_stronghold_boots.json | 6 + .../item/malignant_stronghold_chestplate.json | 6 + .../item/malignant_stronghold_helmet.json | 6 + .../item/malignant_stronghold_leggings.json | 6 + .../forge/tags/blocks/storage_blocks.json | 1 + .../data/forge/tags/items/storage_blocks.json | 1 + .../misc/block_of_malignant_alloy.json | 35 +++ .../misc/malignant_alloy_from_block.json | 35 +++ .../misc/malignant_alloy_from_nuggets.json | 35 +++ .../recipes/misc/malignant_alloy_nugget.json | 35 +++ .../recipes/misc/malignant_alloy_plating.json | 35 +++ .../blocks/block_of_malignant_alloy.json | 21 ++ .../recipes/block_of_malignant_alloy.json | 18 ++ .../recipes/malignant_alloy_from_block.json | 13 ++ .../recipes/malignant_alloy_from_nuggets.json | 18 ++ .../malum/recipes/malignant_alloy_nugget.json | 13 ++ .../recipes/malignant_alloy_plating.json | 22 ++ .../malignant_alloy_ingot.json | 30 +++ .../spirit_infusion/malignant_scepter.json | 34 +++ .../malignant_stronghold_boots.json | 34 +++ .../malignant_stronghold_chestplate.json | 34 +++ .../malignant_stronghold_helmet.json | 34 +++ .../malignant_stronghold_leggings.json | 34 +++ .../spirit_infusion/weight_of_worlds.json | 30 +++ .../malum/tags/items/soul_hunter_weapon.json | 2 + .../data/malum/tags/items/staff.json | 3 +- .../tags/blocks/beacon_base_blocks.json | 1 + .../tags/blocks/mineable/pickaxe.json | 1 + src/main/java/com/sammy/malum/MalumMod.java | 2 + .../client/model/MalignantLeadArmorModel.java | 220 +++++++++++++----- .../model/bbmodels/malignant_lead.bbmodel | 2 +- .../bolt/AbstractBoltEntityRenderer.java | 18 +- .../bolt/DrainingBoltEntityRenderer.java | 27 +++ .../screen/codex/VoidProgressionScreen.java | 46 +++- .../codex/pages/VoidTransmutationPage.java | 67 ++++++ .../common/effect/DeaconsFortuneEffect.java | 15 ++ .../malum/common/effect/SilencedEffect.java | 36 +++ .../bolt/AbstractBoltProjectileEntity.java | 5 + .../entity/bolt/AuricFlameBoltEntity.java | 2 +- .../entity/bolt/DrainingBoltEntity.java | 101 ++++++++ .../armor/MalignantStrongholdArmorItem.java | 51 ++++ .../armor/SoulHunterArmorItem.java | 5 - .../armor/SoulStainedSteelArmorItem.java | 4 +- .../weapons/WeightOfWorldsItem.java | 36 ++- .../weapons/scythe/MalumScytheItem.java | 2 +- .../weapons/staff/AbstractStaffItem.java | 16 +- .../weapons/staff/AuricFlameStaffItem.java | 47 ++-- .../weapons/staff/MalignantScepterItem.java | 112 +++++++++ .../common/sound/RareEarthSoundType.java | 35 ++- .../malum/data/block/MalumBlockStates.java | 3 +- .../sammy/malum/data/item/MalumItemTags.java | 6 +- .../recipe/MalumSpiritInfusionRecipes.java | 54 +++++ .../data/recipe/MalumVanillaRecipes.java | 65 +++--- .../registry/common/MobEffectRegistry.java | 3 + .../common/ParticleEffectTypeRegistry.java | 1 + .../malum/registry/common/SoundRegistry.java | 4 + .../registry/common/block/BlockRegistry.java | 3 +- .../common/block/MalumBlockProperties.java | 16 +- .../common/entity/EntityRegistry.java | 6 + .../registry/common/item/ArmorTiers.java | 14 +- .../registry/common/item/ItemRegistry.java | 22 +- .../malum/registry/common/item/ItemTiers.java | 4 +- .../WeepingWellParticleEffects.java | 5 +- .../DrainingBoltImpactParticleEffect.java | 104 +++++++++ src/main/resources/assets/malum/sounds.json | 3 + .../curiosities/staff/draining_motif1.ogg | Bin 0 -> 27390 bytes .../curiosities/staff/draining_motif2.ogg | Bin 0 -> 28606 bytes .../curiosities/staff/draining_motif3.ogg | Bin 0 -> 30179 bytes .../textures/armor/malignant_stronghold.png | Bin 4922 -> 5438 bytes .../block_of_malignant_alloy.png | Bin 0 -> 414 bytes .../block_of_soul_stained_steel.png | Bin 399 -> 396 bytes .../gui/book/pages/weeping_well_page.png | Bin 11199 -> 10824 bytes .../textures/item/malignant_alloy_ingot.png | Bin 0 -> 375 bytes .../textures/item/malignant_alloy_nugget.png | Bin 0 -> 288 bytes .../textures/item/malignant_alloy_plating.png | Bin 0 -> 447 bytes .../malum/textures/item/malignant_scepter.png | Bin 0 -> 441 bytes .../item/malignant_stronghold_boots.png | Bin 0 -> 396 bytes .../item/malignant_stronghold_chestplate.png | Bin 0 -> 522 bytes .../item/malignant_stronghold_helmet.png | Bin 0 -> 447 bytes .../item/malignant_stronghold_leggings.png | Bin 0 -> 387 bytes .../malum/textures/item/weight_of_worlds.png | Bin 477 -> 477 bytes .../textures/item/weight_of_worlds_huge.png | Bin 1023 -> 1026 bytes .../textures/mob_effect/deacons_fortune.png | Bin 0 -> 531 bytes .../malum/textures/mob_effect/silenced.png | Bin 0 -> 498 bytes 92 files changed, 1568 insertions(+), 192 deletions(-) create mode 100644 src/generated/resources/assets/malum/blockstates/block_of_malignant_alloy.json create mode 100644 src/generated/resources/assets/malum/models/block/block_of_malignant_alloy.json create mode 100644 src/generated/resources/assets/malum/models/item/block_of_malignant_alloy.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_alloy_ingot.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_alloy_nugget.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_alloy_plating.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_scepter.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_stronghold_boots.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_stronghold_chestplate.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_stronghold_helmet.json create mode 100644 src/generated/resources/assets/malum/models/item/malignant_stronghold_leggings.json create mode 100644 src/generated/resources/data/malum/advancements/recipes/misc/block_of_malignant_alloy.json create mode 100644 src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_block.json create mode 100644 src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_nuggets.json create mode 100644 src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_nugget.json create mode 100644 src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_plating.json create mode 100644 src/generated/resources/data/malum/loot_tables/blocks/block_of_malignant_alloy.json create mode 100644 src/generated/resources/data/malum/recipes/block_of_malignant_alloy.json create mode 100644 src/generated/resources/data/malum/recipes/malignant_alloy_from_block.json create mode 100644 src/generated/resources/data/malum/recipes/malignant_alloy_from_nuggets.json create mode 100644 src/generated/resources/data/malum/recipes/malignant_alloy_nugget.json create mode 100644 src/generated/resources/data/malum/recipes/malignant_alloy_plating.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_alloy_ingot.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_scepter.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_boots.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_chestplate.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_helmet.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_leggings.json create mode 100644 src/generated/resources/data/malum/recipes/spirit_infusion/weight_of_worlds.json create mode 100644 src/main/java/com/sammy/malum/client/renderer/entity/bolt/DrainingBoltEntityRenderer.java create mode 100644 src/main/java/com/sammy/malum/client/screen/codex/pages/VoidTransmutationPage.java create mode 100644 src/main/java/com/sammy/malum/common/effect/DeaconsFortuneEffect.java create mode 100644 src/main/java/com/sammy/malum/common/effect/SilencedEffect.java create mode 100644 src/main/java/com/sammy/malum/common/entity/bolt/DrainingBoltEntity.java create mode 100644 src/main/java/com/sammy/malum/common/item/curiosities/armor/MalignantStrongholdArmorItem.java create mode 100644 src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/MalignantScepterItem.java create mode 100644 src/main/java/com/sammy/malum/visual_effects/networked/staff/DrainingBoltImpactParticleEffect.java create mode 100644 src/main/resources/assets/malum/sounds/curiosities/staff/draining_motif1.ogg create mode 100644 src/main/resources/assets/malum/sounds/curiosities/staff/draining_motif2.ogg create mode 100644 src/main/resources/assets/malum/sounds/curiosities/staff/draining_motif3.ogg create mode 100644 src/main/resources/assets/malum/textures/block/storage_blocks/block_of_malignant_alloy.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_alloy_ingot.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_alloy_nugget.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_alloy_plating.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_scepter.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_stronghold_boots.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_stronghold_chestplate.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_stronghold_helmet.png create mode 100644 src/main/resources/assets/malum/textures/item/malignant_stronghold_leggings.png create mode 100644 src/main/resources/assets/malum/textures/mob_effect/deacons_fortune.png create mode 100644 src/main/resources/assets/malum/textures/mob_effect/silenced.png diff --git a/src/generated/resources/assets/malum/blockstates/block_of_malignant_alloy.json b/src/generated/resources/assets/malum/blockstates/block_of_malignant_alloy.json new file mode 100644 index 000000000..5d6fd8260 --- /dev/null +++ b/src/generated/resources/assets/malum/blockstates/block_of_malignant_alloy.json @@ -0,0 +1,7 @@ +{ + "variants": { + "": { + "model": "malum:block/block_of_malignant_alloy" + } + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/lang/en_us.json b/src/generated/resources/assets/malum/lang/en_us.json index 643458b7f..dbae58892 100644 --- a/src/generated/resources/assets/malum/lang/en_us.json +++ b/src/generated/resources/assets/malum/lang/en_us.json @@ -21,6 +21,7 @@ "block.malum.block_of_grim_talc": "Block of Grim Talc", "block.malum.block_of_hallowed_gold": "Block of Hallowed Gold", "block.malum.block_of_hex_ash": "Block of Hex Ash", + "block.malum.block_of_malignant_alloy": "Block of Malignant Alloy", "block.malum.block_of_mnemonic_fragment": "Block of Mnemonic Fragment", "block.malum.block_of_null_slate": "Block of Null Slate", "block.malum.block_of_raw_soulstone": "Block of Raw Soulstone", @@ -244,6 +245,7 @@ "effect.malum.anglers_lure": "Angler's Lure", "effect.malum.anglers_lure.description": "Let any fish who meets my gaze learn the true meaning of fear; for I am the harbinger of death. The bane of creatures sub-aqueous, my rod is true and unwavering as I cast into the aquatic abyss. A man, scorned by this uncaring Earth, finds solace in the sea. My only friend, the worm upon my hook. Wriggling, writhing, struggling to surmount the mortal pointlessness that permeates this barren world. I am alone. I am empty. And yet, I fish.", "effect.malum.cancerous_growth": "Cancerous Growth", + "effect.malum.deacons_fortune": "Deacon's Fortune", "effect.malum.earthen_might": "Earthen Might", "effect.malum.earthen_might.description": "Your fists and tools are reinforced with earth, increasing your overall damage.", "effect.malum.gaian_bulwark": "Gaian Bulwark", @@ -257,6 +259,7 @@ "effect.malum.poseidons_grasp": "Poseidon's Grasp", "effect.malum.poseidons_grasp.description": "You reach out for further power, increasing your reach and item pickup distance.", "effect.malum.rejected": "Rejected", + "effect.malum.silenced": "Silenced", "effect.malum.wicked_intent": "Wicked Intent", "effect.malum.zephyrs_courage": "Zephyr's Courage", "effect.malum.zephyrs_courage.description": "The zephyr propels you forward, increasing your movement speed.", @@ -268,6 +271,7 @@ "enchantment.malum.spirit_plunder": "Spirit Plunder", "enchantment.malum.spirit_plunder.desc": "Increases the amount of spirits created when shattering a soul.", "entity.malum.auric_flame_bolt": "Auric Flame Bolt", + "entity.malum.draining_bolt": "Draining Bolt", "entity.malum.etheric_nitrate": "Etheric Nitrate", "entity.malum.hex_bolt": "Hex Bolt", "entity.malum.natural_spirit": "Natural Spirit", @@ -366,7 +370,15 @@ "item.malum.lead_node": "Lead Node", "item.malum.lesbian_prideweave": "Lesbian Prideweave", "item.malum.living_flesh": "Living Flesh", + "item.malum.malignant_alloy_ingot": "Malignant Alloy Ingot", + "item.malum.malignant_alloy_nugget": "Malignant Alloy Nugget", + "item.malum.malignant_alloy_plating": "Malignant Alloy Plating", "item.malum.malignant_lead": "Malignant Lead", + "item.malum.malignant_scepter": "Malignant Scepter", + "item.malum.malignant_stronghold_boots": "Malignant Stronghold Boots", + "item.malum.malignant_stronghold_chestplate": "Malignant Stronghold Chestplate", + "item.malum.malignant_stronghold_helmet": "Malignant Stronghold Helmet", + "item.malum.malignant_stronghold_leggings": "Malignant Stronghold Leggings", "item.malum.mechanical_weave_v1": "Mechanical Weave V1", "item.malum.mechanical_weave_v2": "Mechanical Weave V2", "item.malum.mending_diffuser": "Mending Diffuser", @@ -1096,6 +1108,7 @@ "malum.subtitle.deepslate_soulstone_hit": "Block breaking", "malum.subtitle.deepslate_soulstone_place": "Block placed", "malum.subtitle.deepslate_soulstone_step": "Footsteps", + "malum.subtitle.draining_motif": "Draining motif", "malum.subtitle.ether_break": "Block broken", "malum.subtitle.ether_place": "Block placed", "malum.subtitle.flesh_ring_absorbs": "Flesh ring absorbs", @@ -1107,6 +1120,7 @@ "malum.subtitle.hidden_blade_strikes": "Hidden blade strikes", "malum.subtitle.hungry_belt_feeds": "Hungry belt feeds", "malum.subtitle.impetus_takes_damage": "Impetus takes damage", + "malum.subtitle.malignant_metal_resonates": "Malignant metal resonates", "malum.subtitle.metallic_trinket_equipped": "Metallic trinket equipped", "malum.subtitle.nitrate_thrown": "Nitrate thrown", "malum.subtitle.ornate_trinket_equipped": "Ornate trinket equipped", @@ -1178,6 +1192,7 @@ "malum.subtitle.void_transmutation": "Void transmutation", "malum.subtitle.void_trinket_equipped": "Void trinket equipped", "malum.subtitle.warping_engine_reverberates": "Warping engine reverberates", + "malum.subtitle.weight_of_worlds_slashes": "Weight of worlds slashes", "tetra.improvement.malum.soul_strike.description": "Allows your item to shatter souls.", "tetra.improvement.malum.soul_strike.name": "Soul Strike", "tetra.material.hallowed_gold": "Hallowed Gold", diff --git a/src/generated/resources/assets/malum/models/block/block_of_malignant_alloy.json b/src/generated/resources/assets/malum/models/block/block_of_malignant_alloy.json new file mode 100644 index 000000000..e35e56e4c --- /dev/null +++ b/src/generated/resources/assets/malum/models/block/block_of_malignant_alloy.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:block/cube_all", + "textures": { + "all": "malum:block/storage_blocks/block_of_malignant_alloy" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/block_of_malignant_alloy.json b/src/generated/resources/assets/malum/models/item/block_of_malignant_alloy.json new file mode 100644 index 000000000..df74a53c5 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/block_of_malignant_alloy.json @@ -0,0 +1,3 @@ +{ + "parent": "malum:block/block_of_malignant_alloy" +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_alloy_ingot.json b/src/generated/resources/assets/malum/models/item/malignant_alloy_ingot.json new file mode 100644 index 000000000..cb41b97ed --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_alloy_ingot.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_alloy_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_alloy_nugget.json b/src/generated/resources/assets/malum/models/item/malignant_alloy_nugget.json new file mode 100644 index 000000000..1ef06a101 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_alloy_nugget.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_alloy_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_alloy_plating.json b/src/generated/resources/assets/malum/models/item/malignant_alloy_plating.json new file mode 100644 index 000000000..f535ddd66 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_alloy_plating.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_alloy_plating" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_scepter.json b/src/generated/resources/assets/malum/models/item/malignant_scepter.json new file mode 100644 index 000000000..6a10b85b8 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_scepter.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/handheld", + "textures": { + "layer0": "malum:item/malignant_scepter" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_stronghold_boots.json b/src/generated/resources/assets/malum/models/item/malignant_stronghold_boots.json new file mode 100644 index 000000000..7f3870b98 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_stronghold_boots.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_stronghold_boots" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_stronghold_chestplate.json b/src/generated/resources/assets/malum/models/item/malignant_stronghold_chestplate.json new file mode 100644 index 000000000..a517369d7 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_stronghold_chestplate.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_stronghold_chestplate" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_stronghold_helmet.json b/src/generated/resources/assets/malum/models/item/malignant_stronghold_helmet.json new file mode 100644 index 000000000..58d3d3869 --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_stronghold_helmet.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_stronghold_helmet" + } +} \ No newline at end of file diff --git a/src/generated/resources/assets/malum/models/item/malignant_stronghold_leggings.json b/src/generated/resources/assets/malum/models/item/malignant_stronghold_leggings.json new file mode 100644 index 000000000..0087e1f4b --- /dev/null +++ b/src/generated/resources/assets/malum/models/item/malignant_stronghold_leggings.json @@ -0,0 +1,6 @@ +{ + "parent": "minecraft:item/generated", + "textures": { + "layer0": "malum:item/malignant_stronghold_leggings" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json index 48640675d..749d5e437 100644 --- a/src/generated/resources/data/forge/tags/blocks/storage_blocks.json +++ b/src/generated/resources/data/forge/tags/blocks/storage_blocks.json @@ -1,5 +1,6 @@ { "values": [ + "malum:block_of_malignant_alloy", "malum:block_of_grim_talc", "malum:block_of_astral_weave", "malum:block_of_mnemonic_fragment", diff --git a/src/generated/resources/data/forge/tags/items/storage_blocks.json b/src/generated/resources/data/forge/tags/items/storage_blocks.json index 48640675d..749d5e437 100644 --- a/src/generated/resources/data/forge/tags/items/storage_blocks.json +++ b/src/generated/resources/data/forge/tags/items/storage_blocks.json @@ -1,5 +1,6 @@ { "values": [ + "malum:block_of_malignant_alloy", "malum:block_of_grim_talc", "malum:block_of_astral_weave", "malum:block_of_mnemonic_fragment", diff --git a/src/generated/resources/data/malum/advancements/recipes/misc/block_of_malignant_alloy.json b/src/generated/resources/data/malum/advancements/recipes/misc/block_of_malignant_alloy.json new file mode 100644 index 000000000..7063278c5 --- /dev/null +++ b/src/generated/resources/data/malum/advancements/recipes/misc/block_of_malignant_alloy.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_malignant_alloy": { + "conditions": { + "items": [ + { + "items": [ + "malum:malignant_alloy_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "malum:block_of_malignant_alloy" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_malignant_alloy", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "malum:block_of_malignant_alloy" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_block.json b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_block.json new file mode 100644 index 000000000..4fcf7a38a --- /dev/null +++ b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_block.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_malignant_alloy": { + "conditions": { + "items": [ + { + "items": [ + "malum:malignant_alloy_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "malum:malignant_alloy_from_block" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_malignant_alloy", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "malum:malignant_alloy_from_block" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_nuggets.json b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_nuggets.json new file mode 100644 index 000000000..7c0ee033a --- /dev/null +++ b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_from_nuggets.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_malignant_alloy": { + "conditions": { + "items": [ + { + "items": [ + "malum:malignant_alloy_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "malum:malignant_alloy_from_nuggets" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_malignant_alloy", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "malum:malignant_alloy_from_nuggets" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_nugget.json b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_nugget.json new file mode 100644 index 000000000..97ecf3142 --- /dev/null +++ b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_nugget.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_malignant_alloy": { + "conditions": { + "items": [ + { + "items": [ + "malum:malignant_alloy_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "malum:malignant_alloy_nugget" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_malignant_alloy", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "malum:malignant_alloy_nugget" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_plating.json b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_plating.json new file mode 100644 index 000000000..45c8e2f67 --- /dev/null +++ b/src/generated/resources/data/malum/advancements/recipes/misc/malignant_alloy_plating.json @@ -0,0 +1,35 @@ +{ + "parent": "minecraft:recipes/root", + "criteria": { + "has_malignant_alloy": { + "conditions": { + "items": [ + { + "items": [ + "malum:malignant_alloy_ingot" + ] + } + ] + }, + "trigger": "minecraft:inventory_changed" + }, + "has_the_recipe": { + "conditions": { + "recipe": "malum:malignant_alloy_plating" + }, + "trigger": "minecraft:recipe_unlocked" + } + }, + "requirements": [ + [ + "has_malignant_alloy", + "has_the_recipe" + ] + ], + "rewards": { + "recipes": [ + "malum:malignant_alloy_plating" + ] + }, + "sends_telemetry_event": false +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/loot_tables/blocks/block_of_malignant_alloy.json b/src/generated/resources/data/malum/loot_tables/blocks/block_of_malignant_alloy.json new file mode 100644 index 000000000..16485d3a3 --- /dev/null +++ b/src/generated/resources/data/malum/loot_tables/blocks/block_of_malignant_alloy.json @@ -0,0 +1,21 @@ +{ + "type": "minecraft:block", + "pools": [ + { + "bonus_rolls": 0.0, + "conditions": [ + { + "condition": "minecraft:survives_explosion" + } + ], + "entries": [ + { + "type": "minecraft:item", + "name": "malum:block_of_malignant_alloy" + } + ], + "rolls": 1.0 + } + ], + "random_sequence": "malum:blocks/block_of_malignant_alloy" +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/block_of_malignant_alloy.json b/src/generated/resources/data/malum/recipes/block_of_malignant_alloy.json new file mode 100644 index 000000000..cce3901a5 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/block_of_malignant_alloy.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": { + "item": "malum:malignant_alloy_ingot" + } + }, + "pattern": [ + "###", + "###", + "###" + ], + "result": { + "item": "malum:block_of_malignant_alloy" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/malignant_alloy_from_block.json b/src/generated/resources/data/malum/recipes/malignant_alloy_from_block.json new file mode 100644 index 000000000..32102f675 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/malignant_alloy_from_block.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "malum:block_of_malignant_alloy" + } + ], + "result": { + "count": 9, + "item": "malum:malignant_alloy_ingot" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/malignant_alloy_from_nuggets.json b/src/generated/resources/data/malum/recipes/malignant_alloy_from_nuggets.json new file mode 100644 index 000000000..c85c33fe2 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/malignant_alloy_from_nuggets.json @@ -0,0 +1,18 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "#": { + "item": "malum:malignant_alloy_nugget" + } + }, + "pattern": [ + "###", + "###", + "###" + ], + "result": { + "item": "malum:malignant_alloy_ingot" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/malignant_alloy_nugget.json b/src/generated/resources/data/malum/recipes/malignant_alloy_nugget.json new file mode 100644 index 000000000..e62725db5 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/malignant_alloy_nugget.json @@ -0,0 +1,13 @@ +{ + "type": "minecraft:crafting_shapeless", + "category": "misc", + "ingredients": [ + { + "item": "malum:malignant_alloy_ingot" + } + ], + "result": { + "count": 9, + "item": "malum:malignant_alloy_nugget" + } +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/malignant_alloy_plating.json b/src/generated/resources/data/malum/recipes/malignant_alloy_plating.json new file mode 100644 index 000000000..69e71a545 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/malignant_alloy_plating.json @@ -0,0 +1,22 @@ +{ + "type": "minecraft:crafting_shaped", + "category": "misc", + "key": { + "X": { + "item": "malum:malignant_alloy_ingot" + }, + "Y": { + "item": "malum:malignant_alloy_nugget" + } + }, + "pattern": [ + " Y ", + "YXY", + " Y " + ], + "result": { + "count": 2, + "item": "malum:malignant_alloy_plating" + }, + "show_notification": true +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_alloy_ingot.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_alloy_ingot.json new file mode 100644 index 000000000..7362d7283 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_alloy_ingot.json @@ -0,0 +1,30 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 2, + "item": "malum:malignant_lead" + }, + { + "count": 3, + "item": "minecraft:netherite_scrap" + } + ], + "input": { + "count": 4, + "tag": "forge:ingots/iron" + }, + "output": { + "item": "malum:malignant_alloy_ingot" + }, + "spirits": [ + { + "type": "earthen", + "count": 16 + }, + { + "type": "eldritch", + "count": 4 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_scepter.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_scepter.json new file mode 100644 index 000000000..a110a6eda --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_scepter.json @@ -0,0 +1,34 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 2, + "item": "malum:malignant_alloy_ingot" + }, + { + "count": 8, + "item": "malum:void_salts" + } + ], + "input": { + "count": 1, + "item": "malum:mnemonic_hex_staff" + }, + "output": { + "item": "malum:malignant_scepter" + }, + "spirits": [ + { + "type": "aqueous", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_boots.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_boots.json new file mode 100644 index 000000000..9f703d943 --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_boots.json @@ -0,0 +1,34 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 3, + "item": "malum:malignant_alloy_plating" + }, + { + "count": 8, + "item": "malum:mnemonic_fragment" + } + ], + "input": { + "count": 1, + "item": "minecraft:iron_boots" + }, + "output": { + "item": "malum:malignant_stronghold_boots" + }, + "spirits": [ + { + "type": "earthen", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_chestplate.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_chestplate.json new file mode 100644 index 000000000..749497f1b --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_chestplate.json @@ -0,0 +1,34 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 3, + "item": "malum:malignant_alloy_plating" + }, + { + "count": 8, + "item": "malum:mnemonic_fragment" + } + ], + "input": { + "count": 1, + "item": "minecraft:iron_chestplate" + }, + "output": { + "item": "malum:malignant_stronghold_chestplate" + }, + "spirits": [ + { + "type": "earthen", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_helmet.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_helmet.json new file mode 100644 index 000000000..8dee1e7ab --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_helmet.json @@ -0,0 +1,34 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 3, + "item": "malum:malignant_alloy_plating" + }, + { + "count": 8, + "item": "malum:mnemonic_fragment" + } + ], + "input": { + "count": 1, + "item": "minecraft:iron_helmet" + }, + "output": { + "item": "malum:malignant_stronghold_helmet" + }, + "spirits": [ + { + "type": "earthen", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_leggings.json b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_leggings.json new file mode 100644 index 000000000..691721b4f --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/malignant_stronghold_leggings.json @@ -0,0 +1,34 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 3, + "item": "malum:malignant_alloy_plating" + }, + { + "count": 8, + "item": "malum:mnemonic_fragment" + } + ], + "input": { + "count": 1, + "item": "minecraft:iron_leggings" + }, + "output": { + "item": "malum:malignant_stronghold_leggings" + }, + "spirits": [ + { + "type": "earthen", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/recipes/spirit_infusion/weight_of_worlds.json b/src/generated/resources/data/malum/recipes/spirit_infusion/weight_of_worlds.json new file mode 100644 index 000000000..0f18e43df --- /dev/null +++ b/src/generated/resources/data/malum/recipes/spirit_infusion/weight_of_worlds.json @@ -0,0 +1,30 @@ +{ + "type": "malum:spirit_infusion", + "extra_items": [ + { + "count": 2, + "item": "malum:malignant_alloy_ingot" + } + ], + "input": { + "count": 1, + "item": "minecraft:iron_axe" + }, + "output": { + "item": "malum:weight_of_worlds" + }, + "spirits": [ + { + "type": "earthen", + "count": 32 + }, + { + "type": "wicked", + "count": 32 + }, + { + "type": "eldritch", + "count": 16 + } + ] +} \ No newline at end of file diff --git a/src/generated/resources/data/malum/tags/items/soul_hunter_weapon.json b/src/generated/resources/data/malum/tags/items/soul_hunter_weapon.json index 8422bd7c8..b55d34570 100644 --- a/src/generated/resources/data/malum/tags/items/soul_hunter_weapon.json +++ b/src/generated/resources/data/malum/tags/items/soul_hunter_weapon.json @@ -2,10 +2,12 @@ "values": [ "malum:mnemonic_hex_staff", "malum:staff_of_the_auric_flame", + "malum:malignant_scepter", "malum:tyrving", "malum:crude_scythe", "malum:soul_stained_steel_scythe", "malum:creative_scythe", + "malum:weight_of_worlds", "malum:soul_stained_steel_axe", "malum:soul_stained_steel_pickaxe", "malum:soul_stained_steel_shovel", diff --git a/src/generated/resources/data/malum/tags/items/staff.json b/src/generated/resources/data/malum/tags/items/staff.json index a9293852d..4e3c47c0b 100644 --- a/src/generated/resources/data/malum/tags/items/staff.json +++ b/src/generated/resources/data/malum/tags/items/staff.json @@ -1,6 +1,7 @@ { "values": [ "malum:mnemonic_hex_staff", - "malum:staff_of_the_auric_flame" + "malum:staff_of_the_auric_flame", + "malum:malignant_scepter" ] } \ No newline at end of file diff --git a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json index b6b3b443e..c823986c3 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json +++ b/src/generated/resources/data/minecraft/tags/blocks/beacon_base_blocks.json @@ -1,5 +1,6 @@ { "values": [ + "malum:block_of_malignant_alloy", "malum:block_of_mnemonic_fragment", "malum:block_of_cthonic_gold", "malum:block_of_blazing_quartz", diff --git a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json index 70727e673..1d41246ff 100644 --- a/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json +++ b/src/generated/resources/data/minecraft/tags/blocks/mineable/pickaxe.json @@ -6,6 +6,7 @@ "malum:tainted_rock_tiles_wall", "malum:twisted_rock_pressure_plate", "malum:small_tainted_rock_bricks_stairs", + "malum:block_of_malignant_alloy", "malum:twisted_rock_bricks_stairs", "malum:block_of_grim_talc", "malum:spirit_crucible_component", diff --git a/src/main/java/com/sammy/malum/MalumMod.java b/src/main/java/com/sammy/malum/MalumMod.java index 56a203f8a..3bed9ee89 100644 --- a/src/main/java/com/sammy/malum/MalumMod.java +++ b/src/main/java/com/sammy/malum/MalumMod.java @@ -68,4 +68,6 @@ public MalumMod() { public static ResourceLocation malumPath(String path) { return new ResourceLocation(MALUM, path); } + + } \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/client/model/MalignantLeadArmorModel.java b/src/main/java/com/sammy/malum/client/model/MalignantLeadArmorModel.java index 6e8a0c992..9828446c6 100644 --- a/src/main/java/com/sammy/malum/client/model/MalignantLeadArmorModel.java +++ b/src/main/java/com/sammy/malum/client/model/MalignantLeadArmorModel.java @@ -4,6 +4,7 @@ // Paste this class into your mod and generate all required imports +import com.google.common.collect.*; import com.mojang.blaze3d.vertex.*; import com.sammy.malum.*; import com.sammy.malum.registry.client.*; @@ -13,53 +14,90 @@ import net.minecraft.client.model.geom.builders.*; import net.minecraft.resources.*; import net.minecraft.world.entity.*; +import net.minecraft.world.phys.*; import team.lodestar.lodestone.handlers.*; import team.lodestar.lodestone.helpers.*; import team.lodestar.lodestone.registry.client.*; import team.lodestar.lodestone.systems.model.*; +import java.util.*; + public class MalignantLeadArmorModel extends LodestoneArmorModel { public static ModelLayerLocation LAYER = new ModelLayerLocation(MalumMod.malumPath("malignant_lead_armor"), "main"); + private final ModelPart right_arm_glow; private final ModelPart left_arm_glow; + private final ModelPart right_boot_glow; + private final ModelPart left_boot_glow; + private final ModelPart helmet_glow; + private final ModelPart torso_glow; public MalignantLeadArmorModel(ModelPart root) { super(root); this.right_arm_glow = root.getChild("right_arm_glow"); this.left_arm_glow = root.getChild("left_arm_glow"); + this.right_boot_glow = root.getChild("right_boot_glow"); + this.left_boot_glow = root.getChild("left_boot_glow"); + this.helmet_glow = root.getChild("helmet_glow"); + this.torso_glow = root.getChild("torso_glow"); + } + + protected List getGlowingParts() { + if (this.slot == EquipmentSlot.CHEST) { + return ImmutableList.of(torso_glow, left_arm_glow, right_arm_glow); + } else if (this.slot == EquipmentSlot.HEAD) { + return ImmutableList.of(helmet_glow); + } else { + return this.slot == EquipmentSlot.FEET ? ImmutableList.of(left_boot_glow, right_boot_glow) : ImmutableList.of(); + } } + private final ResourceLocation texture = MalumMod.malumPath("textures/armor/malignant_stronghold.png"); + @Override public void renderToBuffer(PoseStack pPoseStack, VertexConsumer pBuffer, int pPackedLight, int pPackedOverlay, float pRed, float pGreen, float pBlue, float pAlpha) { super.renderToBuffer(pPoseStack, pBuffer, pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, pAlpha); if (!this.young) { - if (slot == EquipmentSlot.CHEST) { - pPoseStack.pushPose(); - final ResourceLocation texture = MalumMod.malumPath("textures/armor/malignant_stronghold.png"); - final VertexConsumer additive = RenderHandler.DELAYED_RENDER.getBuffer(RenderTypeRegistry.MALIGNANT_GLOW.applyAndCache(texture)); - final VertexConsumer transparent = RenderHandler.DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.TRANSPARENT_TEXTURE.applyAndCache(texture)); - - right_arm_glow.render(pPoseStack, transparent, RenderHelper.FULL_BRIGHT, pPackedOverlay, pRed, pGreen, pBlue, 0.25f); - left_arm_glow.render(pPoseStack, transparent, RenderHelper.FULL_BRIGHT, pPackedOverlay, pRed, pGreen, pBlue, 0.25f); - - float gameTime = Minecraft.getInstance().level.getGameTime()+Minecraft.getInstance().getPartialTick(); - int time = 160; - float distance = 0.01f; - float alpha = 0.15f; - for (int i = 0; i < 4; i++) { - double angle = i / 4f * (Math.PI * 2); - angle += ((gameTime % time) / time) * (Math.PI * 2); - double xOffset = (distance * Math.cos(angle)); - double zOffset = (distance * Math.sin(angle)); - pPoseStack.translate(xOffset, zOffset / 2f, zOffset); - right_arm_glow.render(pPoseStack, additive, RenderHelper.FULL_BRIGHT, pPackedOverlay, pRed, pGreen, pBlue, alpha); - left_arm_glow.render(pPoseStack, additive, RenderHelper.FULL_BRIGHT, pPackedOverlay, pRed, pGreen, pBlue, alpha); - pPoseStack.translate(-xOffset, -zOffset/2f, -zOffset); - distance+=0.0125f; + final List glowingParts = getGlowingParts(); + if (glowingParts.isEmpty()) { + return; + } + pPoseStack.pushPose(); + final VertexConsumer transparent = RenderHandler.DELAYED_RENDER.getBuffer(LodestoneRenderTypeRegistry.TRANSPARENT_TEXTURE.applyAndCache(texture)); + for (ModelPart glowingPart : glowingParts) { + glowingPart.render(pPoseStack, transparent, pPackedLight, pPackedOverlay, pRed, pGreen, pBlue, 0.5f); + } + final VertexConsumer additive = RenderHandler.DELAYED_RENDER.getBuffer(RenderTypeRegistry.MALIGNANT_GLOW.applyAndCache(texture)); + float gameTime = Minecraft.getInstance().level.getGameTime() + Minecraft.getInstance().getPartialTick(); + int time = 320; + float distance = 0.08f; + float alpha = 0.2f; + for (int i = 0; i < 8; i++) { + double angle = i / 4f * (Math.PI * 2); + angle += ((gameTime % time) / time) * (Math.PI * 2); + for (ModelPart glowingPart : glowingParts) { + float yaw = glowingPart.yRot; + float pitch = -glowingPart.xRot; + if (glowingPart.equals(helmet_glow)) { + yaw += 1.57f; + } + Vec3 forward = new Vec3(-Math.cos(yaw), 0, Math.sin(yaw)); + if (!glowingPart.equals(helmet_glow)) { + Vec3 direction = new Vec3(Math.cos(yaw) * Math.cos(pitch), Math.sin(yaw) * Math.cos(pitch), Math.sin(pitch)); + forward = forward.cross(direction).add(0, 1, 0); + } + Vec3 offset = forward.xRot(pitch).normalize().scale(distance * Math.sin(angle)); + pPoseStack.translate(offset.x, offset.y, offset.z); + glowingPart.render(pPoseStack, additive, RenderHelper.FULL_BRIGHT, pPackedOverlay, pRed, pGreen, pBlue, alpha); + pPoseStack.translate(-offset.x, -offset.y, -offset.z); + } + if (i == 3) { + distance *= 2.5f; + alpha *= 0.35f; } - pPoseStack.popPose(); } + pPoseStack.popPose(); } } @@ -67,8 +105,12 @@ public void renderToBuffer(PoseStack pPoseStack, VertexConsumer pBuffer, int pPa @Override public void copyFromDefault(HumanoidModel model) { super.copyFromDefault(model); - right_arm_glow.copyFrom(model.rightArm); left_arm_glow.copyFrom(model.leftArm); + right_arm_glow.copyFrom(model.rightArm); + left_boot_glow.copyFrom(model.leftLeg); + right_boot_glow.copyFrom(model.rightLeg); + helmet_glow.copyFrom(model.head); + torso_glow.copyFrom(model.body); } @@ -77,61 +119,115 @@ public static LayerDefinition createBodyLayer() { PartDefinition root = createHumanoidAlias(mesh); PartDefinition right_arm_glow = root.addOrReplaceChild("right_arm_glow", new CubeListBuilder(), PartPose.ZERO); PartDefinition left_arm_glow = root.addOrReplaceChild("left_arm_glow", new CubeListBuilder(), PartPose.ZERO); + PartDefinition right_foot_glow = root.addOrReplaceChild("right_boot_glow", new CubeListBuilder(), PartPose.ZERO); + PartDefinition left_foot_glow = root.addOrReplaceChild("left_boot_glow", new CubeListBuilder(), PartPose.ZERO); + PartDefinition helmet_glow = root.addOrReplaceChild("helmet_glow", new CubeListBuilder(), PartPose.ZERO); + PartDefinition torso_glow = root.addOrReplaceChild("torso_glow", new CubeListBuilder(), PartPose.ZERO); PartDefinition body = root.getChild("body"); - PartDefinition torso = body.addOrReplaceChild("torso", CubeListBuilder.create().texOffs(6, 37).addBox(-5.0F, 2.0F, -3.0F, 10.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)) - .texOffs(6, 49).addBox(-4.5F, 6.5F, -2.5F, 9.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); - PartDefinition thing = torso.addOrReplaceChild("thing", CubeListBuilder.create().texOffs(60, 40).addBox(-6.0F, -1.0F, -5.0F, 12.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2618F, 0.0F, 0.0F)); + PartDefinition torso = body.addOrReplaceChild("torso", CubeListBuilder.create().texOffs(0, 69).addBox(-5.0F, 2.0F, -3.0F, 10.0F, 5.0F, 6.0F, new CubeDeformation(0.0F)) + .texOffs(0, 80).addBox(-4.5F, 6.5F, -2.5F, 9.0F, 4.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition thing = torso.addOrReplaceChild("thing", CubeListBuilder.create().texOffs(0, 56).addBox(-6.0F, -1.0F, -5.0F, 12.0F, 4.0F, 9.0F, new CubeDeformation(0.0F)) + .texOffs(42, 56).addBox(-6.0F, -1.0F, -5.0F, 12.0F, 4.0F, 9.0F, new CubeDeformation(0.25F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2618F, 0.0F, 0.0F)); + + PartDefinition back_glow = torso_glow.addOrReplaceChild("back_glow", CubeListBuilder.create().texOffs(95, 4).addBox(-1.5F, 3.5F, 2.0F, 3.0F, 3.0F, 2.0F, new CubeDeformation(-0.25F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + + PartDefinition front_glow = torso_glow.addOrReplaceChild("front_glow", CubeListBuilder.create().texOffs(105, 4).addBox(-1.5F, 1.5F, -5.75F, 3.0F, 3.0F, 2.0F, new CubeDeformation(-0.25F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.2618F, 0.0F, 0.0F)); PartDefinition leggings = root.getChild("leggings"); - PartDefinition codpiece = leggings.addOrReplaceChild("codpiece", CubeListBuilder.create().texOffs(6, 61).addBox(-4.0F, -14.5F, -3.0F, 8.0F, 2.0F, 6.0F, new CubeDeformation(0.01F)) - .texOffs(42, 58).addBox(-2.0F, -12.5F, -3.0F, 4.0F, 3.0F, 6.0F, new CubeDeformation(0.01F)), PartPose.offset(0.0F, 24.0F, 0.0F)); + PartDefinition codpiece = leggings.addOrReplaceChild("codpiece", CubeListBuilder.create().texOffs(32, 72).addBox(-4.0F, -14.5F, -3.0F, 8.0F, 2.0F, 6.0F, new CubeDeformation(0.04F)) + .texOffs(60, 72).addBox(-4.0F, -14.5F, -3.0F, 8.0F, 2.0F, 6.0F, new CubeDeformation(0.29F)) + .texOffs(28, 80).addBox(-2.0F, -12.5F, -3.0F, 4.0F, 3.0F, 6.0F, new CubeDeformation(0.04F)) + .texOffs(48, 80).addBox(-2.0F, -12.5F, -3.0F, 4.0F, 3.0F, 6.0F, new CubeDeformation(0.29F)), PartPose.offset(0.0F, 24.0F, 0.0F)); PartDefinition right_legging = root.getChild("right_legging"); - PartDefinition right_leg = right_legging.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(53, 88).addBox(-2.5F, -0.5F, -2.5F, 5.0F, 7.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(-2.0F, 12.0F, 0.0F)); - PartDefinition right_thigh_guard = right_leg.addOrReplaceChild("right_thigh_guard", CubeListBuilder.create().texOffs(19, 108).addBox(-4.0F, -2.0F, -3.0F, 3.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, 0.0F, 0.0F, 1.1345F)); - PartDefinition right_thigh_guard2 = right_leg.addOrReplaceChild("right_thigh_guard2", CubeListBuilder.create().texOffs(40, 109).addBox(-3.0F, -3.0F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)), PartPose.offsetAndRotation(-1.0F, 4.0F, 0.0F, 0.0F, 0.0F, 1.1345F)); + PartDefinition right_leg = right_legging.addOrReplaceChild("right_leg", CubeListBuilder.create().texOffs(84, 116).addBox(-2.6F, -0.5F, -2.5F, 5.0F, 7.0F, 5.0F, new CubeDeformation(0.0F)), PartPose.offset(0f, 0f, 0.0F)); + + PartDefinition right_thigh_guard1 = right_leg.addOrReplaceChild("right_thigh_guard1", CubeListBuilder.create().texOffs(48, 117).addBox(-4.3934F, -1.1278F, -3.0F, 3.0F, 5.0F, 6.0F, new CubeDeformation(0.03F)) + .texOffs(48, 106).addBox(-4.3934F, -1.1278F, -3.0F, 3.0F, 5.0F, 6.0F, new CubeDeformation(0.28F)), PartPose.offsetAndRotation(-0.1F, 2.0F, 0.0F, 0.0F, 0.0F, 1.1345F)); + + PartDefinition right_thigh_guard2 = right_leg.addOrReplaceChild("right_thigh_guard2", CubeListBuilder.create().texOffs(66, 115).addBox(-2.7734F, -2.8943F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.02F)) + .texOffs(66, 102).addBox(-2.7734F, -2.8943F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.27F)), PartPose.offsetAndRotation(-1.1F, 4.0F, 0.0F, 0.0F, 0.0F, 1.1345F)); + + PartDefinition left_legging = root.getChild("left_legging"); + PartDefinition left_leg = left_legging.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(84, 116).mirror().addBox(-2.4F, -0.5F, -2.5F, 5.0F, 7.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0f, 0f, 0.0F)); + + PartDefinition left_thigh_guard1 = left_leg.addOrReplaceChild("left_thigh_guard1", CubeListBuilder.create().texOffs(48, 117).mirror().addBox(1.3934F, -1.1278F, -3.0F, 3.0F, 5.0F, 6.0F, new CubeDeformation(0.03F)).mirror(false) + .texOffs(48, 106).mirror().addBox(1.3934F, -1.1278F, -3.0F, 3.0F, 5.0F, 6.0F, new CubeDeformation(0.28F)).mirror(false), PartPose.offsetAndRotation(0.1F, 2.0F, 0.0F, 0.0F, 0.0F, -1.1345F)); + + PartDefinition left_thigh_guard2 = left_leg.addOrReplaceChild("left_thigh_guard2", CubeListBuilder.create().texOffs(66, 115).mirror().addBox(-0.2266F, -2.8943F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.02F)).mirror(false) + .texOffs(66, 102).mirror().addBox(-0.2266F, -2.8943F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.27F)).mirror(false), PartPose.offsetAndRotation(1.1F, 4.0F, 0.0F, 0.0F, 0.0F, -1.1345F)); PartDefinition right_foot = root.getChild("right_foot"); - PartDefinition right_boot = right_foot.addOrReplaceChild("right_boot", CubeListBuilder.create().texOffs(63, 107).mirror().addBox(-3.0F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition right_boot = right_foot.addOrReplaceChild("right_boot", CubeListBuilder.create().texOffs(104, 115).mirror().addBox(-3.1F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(104, 102).mirror().addBox(-3.1F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.25F)).mirror(false), PartPose.offset(0f, 0f, 0.0F)); + + PartDefinition right_boot_glow = right_foot_glow.addOrReplaceChild("right_boot_glow", CubeListBuilder.create().texOffs(106, 14).mirror().addBox(-4.6F, 6.5F, -1.5F, 2.0F, 4.0F, 3.0F, new CubeDeformation(-0.25F)).mirror(false), PartPose.offset(0f, 0f, 0.0F)); + + PartDefinition left_foot = root.getChild("left_foot"); + PartDefinition left_boot = left_foot.addOrReplaceChild("left_boot", CubeListBuilder.create().texOffs(104, 115).addBox(-2.9F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.01F)) + .texOffs(104, 102).addBox(-2.9F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.26F)), PartPose.offset(0f, 0f, 0.0F)); + + PartDefinition left_boot_glow = left_foot_glow.addOrReplaceChild("left_boot_glow", CubeListBuilder.create().texOffs(106, 14).addBox(2.6F, 6.5F, -1.5F, 2.0F, 4.0F, 3.0F, new CubeDeformation(-0.24F)), PartPose.offset(0f, 0f, 0.0F)); PartDefinition right_arm = root.getChild("right_arm"); - PartDefinition right_shoulder = right_arm.addOrReplaceChild("right_shoulder", CubeListBuilder.create().texOffs(36, 75).mirror().addBox(-7.0F, -4.0F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.01F)).mirror(false) - .texOffs(7, 88).mirror().addBox(-5.5F, 5.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.02F)).mirror(false), PartPose.offset(-3.0F, 2.0F, 0.0F)); - PartDefinition right_shoulder_pad = right_shoulder.addOrReplaceChild("right_shoulder_pad", CubeListBuilder.create().texOffs(4, 73).mirror().addBox(-8.0F, 0.0F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.01F)).mirror(false), PartPose.offsetAndRotation(0.0F, -1.5F, 0.0F, 0.0F, 0.0F, -0.2182F)); + PartDefinition right_shoulder = right_arm.addOrReplaceChild("right_shoulder", CubeListBuilder.create().texOffs(0, 89).mirror().addBox(-5.0F, -2.5F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.01F)).mirror(false) + .texOffs(22, 89).mirror().addBox(-5.0F, -2.5F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.26F)).mirror(false) + .texOffs(0, 111).mirror().addBox(-3.5F, 7.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.01F)).mirror(false) + .texOffs(22, 111).mirror().addBox(-3.5F, 7.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.26F)).mirror(false), PartPose.offset(0, 0.0F, 0.0F)); - PartDefinition glow_right_arm = right_arm_glow.addOrReplaceChild("glow_right_arm", CubeListBuilder.create().texOffs(100, 88).mirror().addBox(-9.0F, -6.0F, -1.0F, 3.0F, 8.0F, 2.0F, new CubeDeformation(0.01F)).mirror(false) - .texOffs(89, 88).mirror().addBox(-9.0F, -6.0F, -1.0F, 3.0F, 8.0F, 2.0F, new CubeDeformation(0.26F)).mirror(false), PartPose.offsetAndRotation(0.0F, 1.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); - PartDefinition lower_glow_right_arm = right_arm_glow.addOrReplaceChild("lower_glow_right_arm", CubeListBuilder.create().texOffs(89, 77).mirror().addBox(-6.5F, 4.0F, -1.0F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.27F)).mirror(false) - .texOffs(100, 77).mirror().addBox(-6.5F, 4.0F, -1.0F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.02F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition right_shoulder_pad = right_shoulder.addOrReplaceChild("right_shoulder_pad", CubeListBuilder.create().texOffs(0, 100).mirror().addBox(-7.6753F, -1.4644F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.01F)).mirror(false) + .texOffs(28, 100).mirror().addBox(-7.6753F, -1.4644F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.26F)).mirror(false), PartPose.offsetAndRotation(2.0F, 2.0F, 0.0F, 0.0F, 0.0F, -0.2182F)); - PartDefinition left_legging = root.getChild("left_legging"); - PartDefinition left_leg = left_legging.addOrReplaceChild("left_leg", CubeListBuilder.create().texOffs(53, 88).mirror().addBox(-2.5F, -0.5F, -2.5F, 5.0F, 7.0F, 5.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(2.0F, 12.0F, 0.0F)); - PartDefinition thigh_guard_l = left_leg.addOrReplaceChild("left_thigh_guard1", CubeListBuilder.create().texOffs(19, 108).mirror().addBox(1.0F, -2.0F, -3.0F, 3.0F, 6.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(0.0F, 2.0F, 0.0F, 0.0F, 0.0F, -1.1345F)); - PartDefinition thigh_guard_l2 = left_leg.addOrReplaceChild("left_thigh_guard2", CubeListBuilder.create().texOffs(40, 109).mirror().addBox(0.0F, -3.0F, -3.0F, 3.0F, 7.0F, 6.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offsetAndRotation(1.0F, 4.0F, 0.0F, 0.0F, 0.0F, -1.1345F)); + PartDefinition right_shoulder_glow = right_arm_glow.addOrReplaceChild("right_shoulder_glow", CubeListBuilder.create(), PartPose.offset(0, 0.0F, 0.0F)); - PartDefinition left_foot = root.getChild("left_foot"); - PartDefinition left_boot = left_foot.addOrReplaceChild("left_boot", CubeListBuilder.create().texOffs(63, 107).addBox(-3.0F, 6.0F, -3.0F, 6.0F, 7.0F, 6.0F, new CubeDeformation(0.01F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition right_shoulder_upper_glow = right_shoulder_glow.addOrReplaceChild("right_shoulder_upper_glow", CubeListBuilder.create().texOffs(116, 22).mirror().addBox(-9.0F, -5.75F, -1.5F, 3.0F, 8.0F, 3.0F, new CubeDeformation(-0.24F)).mirror(false) + .texOffs(89, 5).mirror().addBox(-6.0F, -3.25F, -3.75F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)).mirror(false) + .texOffs(89, 5).mirror().addBox(-6.0F, -3.25F, 2.75F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)).mirror(false), PartPose.offsetAndRotation(2.0F, 3.0F, 0.0F, 0.0F, 0.0F, 0.1309F)); + + PartDefinition right_shoulder_lower_glow = right_shoulder_glow.addOrReplaceChild("right_shoulder_lower_glow", CubeListBuilder.create().texOffs(116, 14).mirror().addBox(-6.5F, 4.0F, -1.5F, 3.0F, 5.0F, 3.0F, new CubeDeformation(-0.23F)).mirror(false), PartPose.offset(2.0F, 2.0F, 0.0F)); PartDefinition left_arm = root.getChild("left_arm"); - PartDefinition left_shoulder = left_arm.addOrReplaceChild("left_shoulder", CubeListBuilder.create().texOffs(36, 75).addBox(2.0F, -4.0F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.01F)) - .texOffs(7, 88).addBox(0.5F, 5.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.02F)), PartPose.offset(3.0F, 2.0F, 0.0F)); - PartDefinition left_shoulder_pad = left_shoulder.addOrReplaceChild("left_shoulder_pad", CubeListBuilder.create().texOffs(4, 73).addBox(2.0F, -1.0F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(0.0F, -0.5F, 0.0F, 0.0F, 0.0F, 0.2182F)); + PartDefinition left_shoulder = left_arm.addOrReplaceChild("left_shoulder", CubeListBuilder.create().texOffs(0, 89).addBox(0.0F, -2.5F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.01F)) + .texOffs(22, 89).addBox(0.0F, -2.5F, -3.0F, 5.0F, 5.0F, 6.0F, new CubeDeformation(0.26F)) + .texOffs(0, 111).addBox(-1.5F, 7.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.01F)) + .texOffs(22, 111).addBox(-1.5F, 7.0F, -3.0F, 5.0F, 6.0F, 6.0F, new CubeDeformation(0.26F)), PartPose.offset(0f, 0.0F, 0.0F)); + + PartDefinition left_shoulder_pad = left_shoulder.addOrReplaceChild("left_shoulder_pad", CubeListBuilder.create().texOffs(0, 100).addBox(1.8918F, -1.4881F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.01F)) + .texOffs(28, 100).addBox(1.8918F, -1.4881F, -4.0F, 6.0F, 3.0F, 8.0F, new CubeDeformation(0.26F)), PartPose.offsetAndRotation(-2.0F, 2.0F, 0.0F, 0.0F, 0.0F, 0.2182F)); - PartDefinition glow_left_arm = left_arm_glow.addOrReplaceChild("glow_left_arm", CubeListBuilder.create().texOffs(100, 88).addBox(6.0F, -5.0F, -1.0F, 3.0F, 8.0F, 2.0F, new CubeDeformation(0.01F)) - .texOffs(89, 88).addBox(6.0F, -5.0F, -1.0F, 3.0F, 8.0F, 2.0F, new CubeDeformation(0.26F)), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0F, -0.1309F)); - PartDefinition lower_glow_left_arm = left_arm_glow.addOrReplaceChild("lower_glow_left_arm", CubeListBuilder.create().texOffs(100, 77).addBox(3.5F, 4.0F, -1.0F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.02F)) - .texOffs(89, 77).addBox(3.5F, 4.0F, -1.0F, 3.0F, 5.0F, 2.0F, new CubeDeformation(0.27F)), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition left_shoulder_glow = left_arm_glow.addOrReplaceChild("left_shoulder_glow", CubeListBuilder.create(), PartPose.offset(0f, 0.0F, 0.0F)); + + PartDefinition left_shoulder_upper_glow = left_shoulder_glow.addOrReplaceChild("left_shoulder_upper_glow", CubeListBuilder.create().texOffs(116, 22).addBox(6.0F, -4.75F, -1.5F, 3.0F, 8.0F, 3.0F, new CubeDeformation(-0.24F)) + .texOffs(89, 5).addBox(4.0F, -2.25F, -3.75F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)) + .texOffs(89, 5).addBox(4.0F, -2.25F, 2.75F, 2.0F, 3.0F, 1.0F, new CubeDeformation(0.01F)), PartPose.offsetAndRotation(-2.0F, 2.0F, 0.0F, 0.0F, 0.0F, -0.1309F)); + + PartDefinition left_shoulder_lower_glow = left_shoulder_glow.addOrReplaceChild("left_shoulder_lower_glow", CubeListBuilder.create().texOffs(116, 14).addBox(3.5F, 4.0F, -1.5F, 3.0F, 5.0F, 3.0F, new CubeDeformation(-0.23F)), PartPose.offset(-2.0F, 2.0F, 0.0F)); PartDefinition head = root.getChild("head"); - PartDefinition helmet = head.addOrReplaceChild("helmet", CubeListBuilder.create().texOffs(59, 3).addBox(-4.5F, -9.0F, -5.0F, 3.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)) - .texOffs(8, 0).addBox(-4.5F, -5.0F, 1.0F, 9.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(59, 3).mirror().addBox(1.5F, -9.0F, -5.0F, 3.0F, 4.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false) - .texOffs(0, 16).addBox(-1.5F, -11.0F, -6.0F, 3.0F, 7.0F, 12.0F, new CubeDeformation(0.0F)) - .texOffs(40, 25).addBox(-5.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.0F)) - .texOffs(40, 25).addBox(3.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.0F)) - .texOffs(40, 16).addBox(-5.0F, -5.0F, -5.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)) - .texOffs(40, 16).mirror().addBox(2.0F, -5.0F, -5.0F, 3.0F, 4.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false), PartPose.offset(0.0F, 0.0F, 0.0F)); + PartDefinition helmet = head.addOrReplaceChild("helmet", CubeListBuilder.create().texOffs(0, 34).addBox(-4.5F, -9.0F, -5.0F, 3.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)) + .texOffs(26, 34).addBox(-4.5F, -9.0F, -5.0F, 3.0F, 3.0F, 10.0F, new CubeDeformation(0.25F)) + .texOffs(0, 47).addBox(-4.5F, -6.0F, 1.0F, 9.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(26, 47).addBox(-4.5F, -6.0F, 1.0F, 9.0F, 5.0F, 4.0F, new CubeDeformation(0.25F)) + .texOffs(0, 34).mirror().addBox(1.5F, -9.0F, -5.0F, 3.0F, 3.0F, 10.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(26, 34).mirror().addBox(1.5F, -9.0F, -5.0F, 3.0F, 3.0F, 10.0F, new CubeDeformation(0.25F)).mirror(false) + .texOffs(0, 0).addBox(-1.5F, -11.0F, -6.0F, 3.0F, 6.0F, 12.0F, new CubeDeformation(0.0F)) + .texOffs(30, 0).addBox(-1.5F, -11.0F, -6.0F, 3.0F, 6.0F, 12.0F, new CubeDeformation(0.25F)) + .texOffs(0, 18).addBox(-5.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.0F)) + .texOffs(0, 18).mirror().addBox(3.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(22, 18).addBox(-5.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.25F)) + .texOffs(22, 18).mirror().addBox(3.5F, -12.0F, -3.0F, 2.0F, 7.0F, 9.0F, new CubeDeformation(0.25F)).mirror(false) + .texOffs(18, 3).addBox(-5.0F, -6.0F, -5.0F, 2.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)) + .texOffs(18, 3).mirror().addBox(3.0F, -6.0F, -5.0F, 2.0F, 5.0F, 4.0F, new CubeDeformation(0.0F)).mirror(false) + .texOffs(30, 3).mirror().addBox(3.0F, -6.0F, -5.0F, 2.0F, 5.0F, 4.0F, new CubeDeformation(0.25F)).mirror(false) + .texOffs(30, 3).addBox(-5.0F, -6.0F, -5.0F, 2.0F, 5.0F, 4.0F, new CubeDeformation(0.25F)), PartPose.offset(0.0F, 1.0F, 0.0F)); + + PartDefinition left_glow = helmet_glow.addOrReplaceChild("left_glow", CubeListBuilder.create().texOffs(106, 0).mirror().addBox(4.6846F, -10.0F, -1.2529F, 2.0F, 5.0F, 9.0F, new CubeDeformation(-0.5F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, 0.0873F, 0.0F)); + + PartDefinition right_glow = helmet_glow.addOrReplaceChild("right_glow", CubeListBuilder.create().texOffs(106, 0).mirror().addBox(-6.6846F, -10.0F, -1.2529F, 2.0F, 5.0F, 9.0F, new CubeDeformation(-0.5F)).mirror(false), PartPose.offsetAndRotation(0.0F, 0.0F, 0.0F, 0.0F, -0.0873F, 0.0F)); + + return LayerDefinition.create(mesh, 128, 128); } diff --git a/src/main/java/com/sammy/malum/client/model/bbmodels/malignant_lead.bbmodel b/src/main/java/com/sammy/malum/client/model/bbmodels/malignant_lead.bbmodel index e954c4d8f..35181e940 100644 --- a/src/main/java/com/sammy/malum/client/model/bbmodels/malignant_lead.bbmodel +++ b/src/main/java/com/sammy/malum/client/model/bbmodels/malignant_lead.bbmodel @@ -1 +1 @@ -{"meta":{"format_version":"4.9","model_format":"modded_entity","box_uv":true},"name":"malignant_lead","model_identifier":"custom_model","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":128,"height":128},"elements":[{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1.5,29,-5],"to":[4.5,32,5],"autouv":0,"color":0,"origin":[0,-1,0],"uv_offset":[59,3],"faces":{"north":{"uv":[69,13,72,16],"texture":0},"east":{"uv":[59,13,69,16],"texture":0},"south":{"uv":[82,13,85,16],"texture":0},"west":{"uv":[72,13,82,16],"texture":0},"up":{"uv":[72,13,69,3],"texture":0},"down":{"uv":[75,3,72,13],"texture":0}},"type":"cube","uuid":"3089125a-f5e3-7877-fc43-b85e186ce70b"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,24,-5],"to":[-3,29,-1],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[40,16],"faces":{"north":{"uv":[46,20,44,25],"texture":0},"east":{"uv":[50,20,46,25],"texture":0},"south":{"uv":[52,20,50,25],"texture":0},"west":{"uv":[44,20,40,25],"texture":0},"up":{"uv":[44,20,46,16],"texture":0},"down":{"uv":[46,16,48,20],"texture":0}},"type":"cube","uuid":"a7821e2a-e474-6b75-3fb8-e1e5c2d97f78"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5,21.5,-3],"to":[10,26.5,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,0,0],"uv_offset":[36,75],"faces":{"north":{"uv":[47,81,42,86],"texture":0},"east":{"uv":[53,81,47,86],"texture":0},"south":{"uv":[58,81,53,86],"texture":0},"west":{"uv":[42,81,36,86],"texture":0},"up":{"uv":[42,81,47,75],"texture":0},"down":{"uv":[47,75,52,81],"texture":0}},"type":"cube","uuid":"e63c28ce-b6bb-8689-ffb2-b426bb3f9fdf"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,11,-3],"to":[8.5,17,3],"autouv":0,"color":4,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[5,0,0],"uv_offset":[7,88],"faces":{"north":{"uv":[18,94,13,100],"texture":0},"east":{"uv":[24,94,18,100],"texture":0},"south":{"uv":[29,94,24,100],"texture":0},"west":{"uv":[13,94,7,100],"texture":0},"up":{"uv":[13,94,18,88],"texture":0},"down":{"uv":[18,88,23,94],"texture":0}},"type":"cube","uuid":"6fd2ef76-94e2-9233-9acf-41cd99cd3141"},{"name":"boot_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,-1,-3],"to":[5,6,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"origin":[0,0,0],"uv_offset":[63,107],"faces":{"north":{"uv":[75,113,69,120],"texture":0},"east":{"uv":[81,113,75,120],"texture":0},"south":{"uv":[87,113,81,120],"texture":0},"west":{"uv":[69,113,63,120],"texture":0},"up":{"uv":[69,113,75,107],"texture":0},"down":{"uv":[75,107,81,113],"texture":0}},"type":"cube","uuid":"4f9d7976-eeec-ccaa-b7a4-2a5aaa0c3b0f"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.3934333473546525,6.127801352928617,-3],"to":[6.393433347354654,12.127801352928616,3],"autouv":0,"color":5,"inflate":0.03,"origin":[0.020002535079508665,-1.9915440816362118,-0.009999990463256834],"uv_offset":[19,108],"faces":{"north":{"uv":[25,114,28,120],"texture":0},"east":{"uv":[19,114,25,120],"texture":0},"south":{"uv":[34,114,37,120],"texture":0},"west":{"uv":[28,114,34,120],"texture":0},"up":{"uv":[28,114,25,108],"texture":0},"down":{"uv":[31.000000000000004,108,28,114],"texture":0}},"type":"cube","uuid":"7db7922f-957c-5c15-3766-2f5c47a7baa0"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.393418210755766,6.1278013529286115,-3],"to":[-3.393418210755768,12.12780135292861,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.03,"origin":[-0.6200029165492349,-1.7415440816362135,-0.009999990463256834],"uv_offset":[19,108],"faces":{"north":{"uv":[28,114,25,120],"texture":0},"east":{"uv":[34,114,28,120],"texture":0},"south":{"uv":[37,114,34,120],"texture":0},"west":{"uv":[25,114,19,120],"texture":0},"up":{"uv":[25,114,28,108],"texture":0},"down":{"uv":[28,108,30.999999999999996,114],"texture":0}},"type":"cube","uuid":"79b356fd-95c0-cdee-dadb-e079c06849af"},{"name":"boot_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,-1,-3],"to":[1,6,3],"autouv":0,"color":7,"inflate":0.01,"origin":[0,0,0],"uv_offset":[63,107],"faces":{"north":{"uv":[69,113,75,120],"texture":0},"east":{"uv":[63,113,69,120],"texture":0},"south":{"uv":[81,113,87,120],"texture":0},"west":{"uv":[75,113,81,120],"texture":0},"up":{"uv":[75,113,69,107],"texture":0},"down":{"uv":[81,107,75,113],"texture":0}},"type":"cube","uuid":"bcb251f9-0b90-a858-cbc2-eee3435b4ecc"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4,12.5,-3],"to":[4,14.5,3],"autouv":0,"color":0,"inflate":0.04,"origin":[0,0,0],"uv_offset":[6,61],"faces":{"north":{"uv":[12,67,20,69],"texture":0},"east":{"uv":[6,67,12,69],"texture":0},"south":{"uv":[26,67,34,69],"texture":0},"west":{"uv":[20,67,26,69],"texture":0},"up":{"uv":[20,67,12,61],"texture":0},"down":{"uv":[28,61,20,67],"texture":0}},"type":"cube","uuid":"7903b96c-fb44-1e65-67e4-7f1d6d4f2fe7"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,29,-5],"to":[-1.5,32,5],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[59,3],"faces":{"north":{"uv":[72,13,69,16],"texture":0},"east":{"uv":[82,13,72,16],"texture":0},"south":{"uv":[85,13,82,16],"texture":0},"west":{"uv":[69,13,59,16],"texture":0},"up":{"uv":[69,13,72,3],"texture":0},"down":{"uv":[72,3,75,13],"texture":0}},"type":"cube","uuid":"e8386980-5d48-2ea5-3dd1-a648e2a0ff4a"},{"name":"leg_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,5.5,-2.5],"to":[0.5,12.5,2.5],"autouv":0,"color":3,"shade":false,"mirror_uv":true,"origin":[0,0,0],"uv_offset":[53,88],"faces":{"north":{"uv":[63,93,58,100],"texture":0},"east":{"uv":[68,93,63,100],"texture":0},"south":{"uv":[73,93,68,100],"texture":0},"west":{"uv":[58,93,53,100],"texture":0},"up":{"uv":[58,93,63,88],"texture":0},"down":{"uv":[63,88,68,93],"texture":0}},"type":"cube","uuid":"421781ab-9df5-6443-6f2a-4385c92db364"},{"name":"leg_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,5.5,-2.5],"to":[4.5,12.5,2.5],"autouv":0,"color":1,"origin":[0,0,0],"uv_offset":[53,88],"faces":{"north":{"uv":[58,93,63,100],"texture":0},"east":{"uv":[53,93,58,100],"texture":0},"south":{"uv":[68,93,73,100],"texture":0},"west":{"uv":[63,93,68,100],"texture":0},"up":{"uv":[63,93,58,88],"texture":0},"down":{"uv":[68,88,63,93],"texture":0}},"type":"cube","uuid":"b884bf21-499a-58ef-5da1-cce9f8200d0a"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3,24,-5],"to":[5,29,-1],"autouv":0,"color":4,"origin":[0,-1,0],"uv_offset":[40,16],"faces":{"north":{"uv":[44,20,46,25],"texture":0},"east":{"uv":[40,20,44,25],"texture":0},"south":{"uv":[50,20,52,25],"texture":0},"west":{"uv":[46,20,50,25],"texture":0},"up":{"uv":[46,20,44,16],"texture":0},"down":{"uv":[48,16,46,20],"texture":0}},"type":"cube","uuid":"ef697b9b-6d23-00c0-c6b5-c67926376a59"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,28,-6],"to":[1.5,34,6],"autouv":0,"color":3,"origin":[0,-1,0],"uv_offset":[0,16],"faces":{"north":{"uv":[12,28,15,34],"texture":0},"east":{"uv":[0,28,12,34],"texture":0},"south":{"uv":[27,28,30,34],"texture":0},"west":{"uv":[15,28,27,34],"texture":0},"up":{"uv":[15,28,12,16],"texture":0},"down":{"uv":[18,16,15,28],"texture":0}},"type":"cube","uuid":"3bd9da5c-7989-1f80-5e63-635b80c88c6d"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,17,-3],"to":[5,22,3],"autouv":0,"color":5,"origin":[0,0,0],"uv_offset":[6,37],"faces":{"north":{"uv":[12,43,22,48],"texture":0},"east":{"uv":[6,43,12,48],"texture":0},"south":{"uv":[28,43,38,48],"texture":0},"west":{"uv":[22,43,28,48],"texture":0},"up":{"uv":[22,43,12,37],"texture":0},"down":{"uv":[32,37,22,43],"texture":0}},"type":"cube","uuid":"a6bebbdd-0fce-dc40-cd93-354ec465c1f8"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,13.5,-2.5],"to":[4.5,17.5,2.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[6,49],"faces":{"north":{"uv":[11,54,20,58],"texture":0},"east":{"uv":[6,54,11,58],"texture":0},"south":{"uv":[25,54,34,58],"texture":0},"west":{"uv":[20,54,25,58],"texture":0},"up":{"uv":[20,54,11,49],"texture":0},"down":{"uv":[29,49,20,54],"texture":0}},"type":"cube","uuid":"5d40581d-109e-2e60-bd61-ffb41b6c3932"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6,21,-5],"to":[6,25,4],"autouv":0,"color":3,"origin":[0,0,0],"uv_offset":[60,40],"faces":{"north":{"uv":[69,49,81,53],"texture":0},"east":{"uv":[60,49,69,53],"texture":0},"south":{"uv":[90,49,102,53],"texture":0},"west":{"uv":[81,49,90,53],"texture":0},"up":{"uv":[81,49,69,40],"texture":0},"down":{"uv":[93,40,81,49],"texture":0}},"type":"cube","uuid":"afe4cb3b-6a8e-d24a-d20e-0b69d6adba2b"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.675340579092845,20.46444401067989,-4],"to":[10.67534057909285,23.46444401067989,4],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[-0.32465942090715433,1.4644440106799004,0],"uv_offset":[4,73],"faces":{"north":{"uv":[18.000000000000007,81,12,84],"texture":0},"east":{"uv":[26.000000000000007,81,18.000000000000007,84],"texture":0},"south":{"uv":[32.000000000000014,81,26.000000000000007,84],"texture":0},"west":{"uv":[12,81,4,84],"texture":0},"up":{"uv":[12,81,18.000000000000007,73],"texture":0},"down":{"uv":[18.000000000000007,73,24.00000000000001,81],"texture":0}},"type":"cube","uuid":"00e631ff-f900-631a-a662-8a2fb41ffcf7"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,24,1],"to":[4.5,29,5],"autouv":0,"color":0,"origin":[0,-1,0],"uv_offset":[80,1],"faces":{"north":{"uv":[84,5,93,10],"texture":0},"east":{"uv":[80,5,84,10],"texture":0},"south":{"uv":[97,5,106,10],"texture":0},"west":{"uv":[93,5,97,10],"texture":0},"up":{"uv":[93,5,84,1],"texture":0},"down":{"uv":[102,1,93,5],"texture":0}},"type":"cube","uuid":"b7860950-bc1e-89a6-14ea-307736ad4ae7"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[2.7734308122751443,3.8943454345648254,-3],"to":[5.773430812275144,10.894345434564825,3],"autouv":0,"color":5,"inflate":0.02,"origin":[1,-2,0],"uv_offset":[40,109],"faces":{"north":{"uv":[46,115,49,122],"texture":0},"east":{"uv":[40,115,46,122],"texture":0},"south":{"uv":[55,115,58,122],"texture":0},"west":{"uv":[49,115,55,122],"texture":0},"up":{"uv":[49,115,46,109],"texture":0},"down":{"uv":[52,109,49,115],"texture":0}},"type":"cube","uuid":"dcb809c5-045e-4fab-9262-897659bf1be5"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.773415294206531,3.8943454345648254,-3],"to":[-2.773415294206533,10.894345434564825,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.02,"origin":[-1,-2,0],"uv_offset":[40,109],"faces":{"north":{"uv":[49,115,46,122],"texture":0},"east":{"uv":[55,115,49,122],"texture":0},"south":{"uv":[58,115,55,122],"texture":0},"west":{"uv":[46,115,40,122],"texture":0},"up":{"uv":[46,115,49,109],"texture":0},"down":{"uv":[49,109,52,115],"texture":0}},"type":"cube","uuid":"97bdbb97-b84a-3531-0165-d37539e4cd75"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,9.5,-3],"to":[2,12.5,3],"autouv":0,"color":0,"inflate":0.04,"origin":[0,0,0],"uv_offset":[42,58],"faces":{"north":{"uv":[48,64,52,67],"texture":0},"east":{"uv":[42,64,48,67],"texture":0},"south":{"uv":[58,64,62,67],"texture":0},"west":{"uv":[52,64,58,67],"texture":0},"up":{"uv":[52,64,48,58],"texture":0},"down":{"uv":[56,58,52,64],"texture":0}},"type":"cube","uuid":"d8ceb7eb-b81d-3fbc-27ee-0c75012d2c31"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,28,-3],"to":[5.5,35,6],"autouv":0,"color":3,"origin":[0,-1,0],"uv_offset":[40,25],"faces":{"north":{"uv":[49,34,51,41],"texture":0},"east":{"uv":[40,34,49,41],"texture":0},"south":{"uv":[60,34,62,41],"texture":0},"west":{"uv":[51,34,60,41],"texture":0},"up":{"uv":[51,34,49,25],"texture":0},"down":{"uv":[53,25,51,34],"texture":0}},"type":"cube","uuid":"913e020d-1da4-292d-1425-6f05876e2cd9"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.5,28,-3],"to":[-3.5,35,6],"autouv":0,"color":3,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[40,25],"faces":{"north":{"uv":[51,34,49,41],"texture":0},"east":{"uv":[60,34,51,41],"texture":0},"south":{"uv":[62,34,60,41],"texture":0},"west":{"uv":[49,34,40,41],"texture":0},"up":{"uv":[49,34,51,25],"texture":0},"down":{"uv":[51,25,53,34],"texture":0}},"type":"cube","uuid":"33331ec9-2f34-a439-f264-dd9a996eb003"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-12,19,-1],"to":[-9,27,1],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[100,88],"faces":{"north":{"uv":[102,90,105,98],"texture":0},"east":{"uv":[100,90,102,98],"texture":0},"south":{"uv":[107,90,110,98],"texture":0},"west":{"uv":[105,90,107,98],"texture":0},"up":{"uv":[105,90,102,88],"texture":0},"down":{"uv":[108,88,105,90],"texture":0}},"type":"cube","uuid":"f85f775b-3c23-508e-2b92-f1339e9435d2"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9.5,13,-1],"to":[-6.5,18,1],"autouv":0,"color":6,"inflate":0.02,"origin":[0,0,0],"uv_offset":[100,77],"faces":{"north":{"uv":[102,79,105,84],"texture":0},"east":{"uv":[100,79,102,84],"texture":0},"south":{"uv":[107,79,110,84],"texture":0},"west":{"uv":[105,79,107,84],"texture":0},"up":{"uv":[105,79,102,77],"texture":0},"down":{"uv":[108,77,105,79],"texture":0}},"type":"cube","uuid":"3e478bdb-889d-1afa-cef5-5603cc523608"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10,21.5,-3],"to":[-5,26.5,3],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[36,75],"faces":{"north":{"uv":[42,81,47,86],"texture":0},"east":{"uv":[36,81,42,86],"texture":0},"south":{"uv":[53,81,58,86],"texture":0},"west":{"uv":[47,81,53,86],"texture":0},"up":{"uv":[47,81,42,75],"texture":0},"down":{"uv":[52,75,47,81],"texture":0}},"type":"cube","uuid":"a46bfb6e-39b7-05d8-3a76-67ab9a07b8f3"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-8.5,11,-3],"to":[-3.5,17,3],"autouv":0,"color":6,"inflate":0.01,"origin":[0,0,0],"uv_offset":[7,88],"faces":{"north":{"uv":[13,94,18,100],"texture":0},"east":{"uv":[7,94,13,100],"texture":0},"south":{"uv":[24,94,29,100],"texture":0},"west":{"uv":[18,94,24,100],"texture":0},"up":{"uv":[18,94,13,88],"texture":0},"down":{"uv":[23,88,18,94],"texture":0}},"type":"cube","uuid":"614705f2-bcdb-a571-d28e-3beee15b32c4"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10.89178019303095,20.488148003559964,-4],"to":[-4.891780193030948,23.488148003559964,4],"autouv":0,"color":5,"inflate":0.01,"origin":[0.10821980696905145,0.4881480035599667,0],"uv_offset":[4,73],"faces":{"north":{"uv":[12,81,18,84],"texture":0},"east":{"uv":[4,81,12,84],"texture":0},"south":{"uv":[26,81,32,84],"texture":0},"west":{"uv":[18,81,26,84],"texture":0},"up":{"uv":[18,81,12,73],"texture":0},"down":{"uv":[24.000000000000004,73,18,81],"texture":0}},"type":"cube","uuid":"d0262a70-c09f-b202-04d5-3c86e07aea07"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9,19,-1],"to":[12,27,1],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,-1,0],"uv_offset":[100,88],"faces":{"north":{"uv":[105,90,102,98],"texture":0},"east":{"uv":[107,90,105,98],"texture":0},"south":{"uv":[110,90,107,98],"texture":0},"west":{"uv":[102,90,100,98],"texture":0},"up":{"uv":[102,90,105,88],"texture":0},"down":{"uv":[105,88,108,90],"texture":0}},"type":"cube","uuid":"70315f47-6aad-8c8c-d7ae-4e0bc9b67da7"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[6.5,13,-1],"to":[9.5,18,1],"autouv":0,"color":4,"shade":false,"mirror_uv":true,"inflate":0.020000000000000018,"origin":[5,0,0],"uv_offset":[100,77],"faces":{"north":{"uv":[105,79,102,84],"texture":0},"east":{"uv":[107,79,105,84],"texture":0},"south":{"uv":[110,79,107,84],"texture":0},"west":{"uv":[102,79,100,84],"texture":0},"up":{"uv":[102,79,105,77],"texture":0},"down":{"uv":[105,77,108,79],"texture":0}},"type":"cube","uuid":"9075aad1-4a34-3807-7fad-4d01a9bb31a7"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[7,21,-3.75],"to":[9,23,-2.75],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,-1,0],"uv_offset":[93,88],"faces":{"north":{"uv":[96,89,94,91],"texture":0},"east":{"uv":[97,89,96,91],"texture":0},"south":{"uv":[99,89,97,91],"texture":0},"west":{"uv":[94,89,93,91],"texture":0},"up":{"uv":[94,89,96,88],"texture":0},"down":{"uv":[96,88,98,89],"texture":0}},"type":"cube","uuid":"75779268-a82d-12ea-3eb3-44fcc74905e6"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[7,21,2.75],"to":[9,23,3.75],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,-1,0],"uv_offset":[93,88],"faces":{"north":{"uv":[96,89,94,91],"texture":0},"east":{"uv":[97,89,96,91],"texture":0},"south":{"uv":[99,89,97,91],"texture":0},"west":{"uv":[94,89,93,91],"texture":0},"up":{"uv":[94,89,96,88],"texture":0},"down":{"uv":[96,88,98,89],"texture":0}},"type":"cube","uuid":"d2140963-b7db-a7c6-196d-2cfe6fa43c1c"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9,21,-3.75],"to":[-7,23,-2.75],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[93,88],"faces":{"north":{"uv":[94,89,96,91],"texture":0},"east":{"uv":[93,89,94,91],"texture":0},"south":{"uv":[97,89,99,91],"texture":0},"west":{"uv":[96,89,97,91],"texture":0},"up":{"uv":[96,89,94,88],"texture":0},"down":{"uv":[98,88,96,89],"texture":0}},"type":"cube","uuid":"cff2a354-ba99-43ac-da5c-9ffe04600a54"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9,21,2.75],"to":[-7,23,3.75],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[93,88],"faces":{"north":{"uv":[94,89,96,91],"texture":0},"east":{"uv":[93,89,94,91],"texture":0},"south":{"uv":[97,89,99,91],"texture":0},"west":{"uv":[96,89,97,91],"texture":0},"up":{"uv":[96,89,94,88],"texture":0},"down":{"uv":[98,88,96,89],"texture":0}},"type":"cube","uuid":"072c91c3-4361-a39e-9ca6-b38d61f10fcc"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,18,3],"to":[1,20,4],"autouv":0,"color":5,"origin":[0,0,0],"uv_offset":[93,88],"faces":{"north":{"uv":[94,89,96,91],"texture":0},"east":{"uv":[93,89,94,91],"texture":0},"south":{"uv":[97,89,99,91],"texture":0},"west":{"uv":[96,89,97,91],"texture":0},"up":{"uv":[96,89,94,88],"texture":0},"down":{"uv":[98,88,96,89],"texture":0}},"type":"cube","uuid":"4a14dcf3-2118-adff-1195-2eb2738082c2"},{"name":"boot_r_glow","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5,2,-1],"to":[6,5,1],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"origin":[0,0,0],"uv_offset":[91,82],"faces":{"north":{"uv":[94,84,93,87],"texture":0},"east":{"uv":[96,84,94,87],"texture":0},"south":{"uv":[97,84,96,87],"texture":0},"west":{"uv":[93,84,91,87],"texture":0},"up":{"uv":[93,84,94,82],"texture":0},"down":{"uv":[94,82,95,84],"texture":0}},"type":"cube","uuid":"7099eabf-6cee-ce2d-a29b-76662ec479b9"},{"name":"boot_l_glow","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6,2,-1],"to":[-5,5,1],"autouv":0,"color":7,"inflate":0.01,"origin":[0,0,0],"uv_offset":[91,82],"faces":{"north":{"uv":[93,84,94,87],"texture":0},"east":{"uv":[91,84,93,87],"texture":0},"south":{"uv":[96,84,97,87],"texture":0},"west":{"uv":[94,84,96,87],"texture":0},"up":{"uv":[94,84,93,82],"texture":0},"down":{"uv":[95,82,94,84],"texture":0}},"type":"cube","uuid":"1dee734b-2b9b-03b8-09ff-31caa0a16e0d"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.5,29.5,-0.25],"to":[-4.5,33.5,7.75],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"origin":[0,-1,0.75],"uv_offset":[88,63],"faces":{"north":{"uv":[98,71,96,75],"texture":0},"east":{"uv":[106,71,98,75],"texture":0},"south":{"uv":[108,71,106,75],"texture":0},"west":{"uv":[96,71,88,75],"texture":0},"up":{"uv":[96,71,98,63],"texture":0},"down":{"uv":[98,63,100,71],"texture":0}},"type":"cube","uuid":"d1dbedac-ec2c-1971-dca4-f8d078f3b897"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.5,29.5,-0.25],"to":[6.5,33.5,7.75],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"origin":[0,-1,0.75],"uv_offset":[88,63],"faces":{"north":{"uv":[98,71,96,75],"texture":0},"east":{"uv":[106,71,98,75],"texture":0},"south":{"uv":[108,71,106,75],"texture":0},"west":{"uv":[96,71,88,75],"texture":0},"up":{"uv":[96,71,98,63],"texture":0},"down":{"uv":[98,63,100,71],"texture":0}},"type":"cube","uuid":"32362d84-7165-641f-a708-bf91894fb836"}],"outliner":[{"name":"torso","origin":[0,24,0],"color":0,"uuid":"6d53fc4b-9733-f2b2-1b43-3a0c90df5db4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["a6bebbdd-0fce-dc40-cd93-354ec465c1f8","5d40581d-109e-2e60-bd61-ffb41b6c3932",{"name":"thing","origin":[0,24,0],"rotation":[-15,0,0],"color":0,"uuid":"c5d1a2ab-3172-b48c-9bd1-2d8b75211bd3","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["afe4cb3b-6a8e-d24a-d20e-0b69d6adba2b"]}]},{"name":"torso_glow","origin":[0,24,0],"color":0,"uuid":"e3291511-3989-cd44-6738-c23158206ed1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["4a14dcf3-2118-adff-1195-2eb2738082c2"]},{"name":"head","origin":[0,23,0],"color":0,"uuid":"e5eccdcb-78b6-781e-816b-94ff2349ad73","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["3089125a-f5e3-7877-fc43-b85e186ce70b","b7860950-bc1e-89a6-14ea-307736ad4ae7","e8386980-5d48-2ea5-3dd1-a648e2a0ff4a","3bd9da5c-7989-1f80-5e63-635b80c88c6d","913e020d-1da4-292d-1425-6f05876e2cd9","33331ec9-2f34-a439-f264-dd9a996eb003","ef697b9b-6d23-00c0-c6b5-c67926376a59","a7821e2a-e474-6b75-3fb8-e1e5c2d97f78"]},{"name":"head_glow","origin":[0,23,0],"color":0,"uuid":"b3719fb6-3110-f2e7-aba5-0593b7e92089","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"left_glow","origin":[0,23,0.75],"rotation":[0,-5,0],"color":0,"uuid":"965007ac-d2a1-b4e8-4ff7-8a58a555e9f9","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["d1dbedac-ec2c-1971-dca4-f8d078f3b897"]},{"name":"right_glow","origin":[0,23,0.75],"rotation":[0,5,0],"color":0,"uuid":"eeebc104-52ca-01bf-7ccb-01e2174e07ac","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["32362d84-7165-641f-a708-bf91894fb836"]}]},{"name":"arm_r","origin":[3,22,0],"color":0,"uuid":"0f385a6c-562e-d849-c500-db03f340fe63","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["e63c28ce-b6bb-8689-ffb2-b426bb3f9fdf","6fd2ef76-94e2-9233-9acf-41cd99cd3141",{"name":"shoulder_pad_r","origin":[3,22,0],"rotation":[0,0,-12.5],"color":0,"uuid":"c2a7b5c4-d5b1-d886-7717-a02b4d5db9d1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["00e631ff-f900-631a-a662-8a2fb41ffcf7"]}]},{"name":"arm_r_glow","origin":[3,22,0],"color":0,"uuid":"41982a8d-da4d-6469-8ea1-95182973cd97","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"glow_r2","origin":[3,21,0],"rotation":[0,0,7.5],"color":0,"uuid":"b77268d2-9dba-6c8b-39dc-36a7cdb811da","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["70315f47-6aad-8c8c-d7ae-4e0bc9b67da7","75779268-a82d-12ea-3eb3-44fcc74905e6","d2140963-b7db-a7c6-196d-2cfe6fa43c1c"]},{"name":"lower_glow_r2","origin":[3,22,0],"color":0,"uuid":"e3bb18be-f8b6-1d4d-3c74-b087a68cf775","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["9075aad1-4a34-3807-7fad-4d01a9bb31a7"]}]},{"name":"arm_l","origin":[-3,22,0],"color":0,"uuid":"fb36ebbd-25ee-84af-2f7c-2207ab626898","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["a46bfb6e-39b7-05d8-3a76-67ab9a07b8f3","614705f2-bcdb-a571-d28e-3beee15b32c4",{"name":"shoulder_pad_l2","origin":[-3,22,0],"rotation":[0,0,12.5],"color":0,"uuid":"f22da9a2-86be-f982-22eb-0755f4cc42db","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["d0262a70-c09f-b202-04d5-3c86e07aea07"]}]},{"name":"arm_l_glow","origin":[-3,22,0],"color":0,"uuid":"c2b22c51-5995-3f10-f066-6f8bd20fa3d4","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"glow_l","origin":[-3,22,0],"rotation":[0,0,-7.5],"color":0,"uuid":"39b89b16-5965-1305-f126-355b76d91d1c","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["f85f775b-3c23-508e-2b92-f1339e9435d2","cff2a354-ba99-43ac-da5c-9ffe04600a54","072c91c3-4361-a39e-9ca6-b38d61f10fcc"]},{"name":"lower_glow_l","origin":[-3,22,0],"color":0,"uuid":"232ea6f6-402a-c750-d6f0-8d5ce89e3665","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["3e478bdb-889d-1afa-cef5-5603cc523608"]}]},{"name":"leg_r","origin":[2,12,0],"color":0,"uuid":"7be60e45-0384-3825-0285-c9861bcd56ae","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["b884bf21-499a-58ef-5da1-cce9f8200d0a",{"name":"thigh_guard_r","origin":[2,10,0],"rotation":[0,0,65],"color":0,"uuid":"9d8032aa-9dd9-a803-7cb0-2d97f3b51f78","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["7db7922f-957c-5c15-3766-2f5c47a7baa0"]},{"name":"thigh_guard_r2","origin":[3,8,0],"rotation":[0,0,65],"color":0,"uuid":"16121f9e-6f81-d257-33b9-ecb8a5933447","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["dcb809c5-045e-4fab-9262-897659bf1be5"]}]},{"name":"leg_l","origin":[-2,12,0],"color":0,"uuid":"71425f29-453c-ffed-e113-94521e5b6edd","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["421781ab-9df5-6443-6f2a-4385c92db364",{"name":"thigh_guard_l","origin":[-2,10,0],"rotation":[0,0,-65],"color":0,"uuid":"36fd541b-fef9-30dc-6c06-8f0f78a28d9a","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["79b356fd-95c0-cdee-dadb-e079c06849af"]},{"name":"thigh_guard_l2","origin":[-3,8,0],"rotation":[0,0,-65],"color":0,"uuid":"d278ab93-4ab9-cffe-8258-7ca2008b3b12","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["97bdbb97-b84a-3531-0165-d37539e4cd75"]}]},{"name":"boot_r","origin":[2,12,0],"color":0,"uuid":"1f0dd7f0-6db3-a61f-7f67-40146c30987c","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["4f9d7976-eeec-ccaa-b7a4-2a5aaa0c3b0f"]},{"name":"boot_r_glow","origin":[-2,12,0],"color":0,"uuid":"c60cf9c3-83dc-f649-8df0-fdf25062a1d5","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["7099eabf-6cee-ce2d-a29b-76662ec479b9"]},{"name":"boot_l","origin":[-2,12,0],"color":0,"uuid":"31588fad-8410-af54-9d76-b841f0e91238","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["bcb251f9-0b90-a858-cbc2-eee3435b4ecc"]},{"name":"boot_l_glow","origin":[0,0,0],"color":0,"uuid":"97967112-9898-7aa7-db44-d332da690a53","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["1dee734b-2b9b-03b8-09ff-31caa0a16e0d"]},{"name":"codpiece","origin":[0,0,0],"color":0,"uuid":"22d6c7ca-a2a8-10b3-4475-e9960f789cc1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["7903b96c-fb44-1e65-67e4-7f1d6d4f2fe7","d8ceb7eb-b81d-3fbc-27ee-0c75012d2c31"]}],"textures":[{"path":"C:\\Users\\Hanna\\Desktop\\Mod-Stuff\\Malum-Mod\\src\\main\\resources\\assets\\malum\\textures\\armor\\malignant_stronghold.png","name":"malignant_stronghold.png","folder":"block","namespace":"","id":"0","width":128,"height":128,"uv_width":128,"uv_height":128,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"ff3ddc60-dd7c-0330-39dc-17c0c305532d","relative_path":"../../../../../../../../resources/assets/malum/textures/armor/malignant_stronghold.png","source":"data:image/png;base64,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"}]} \ No newline at end of file +{"meta":{"format_version":"4.9","model_format":"modded_entity","box_uv":true},"name":"pain","model_identifier":"custom_model","modded_entity_version":"1.17","modded_entity_flip_y":true,"visible_box":[1,1,0],"variable_placeholders":"","variable_placeholder_buttons":[],"timeline_setups":[],"unhandled_root_fields":{},"resolution":{"width":128,"height":128},"elements":[{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1.5,29,-5],"to":[4.5,32,5],"autouv":0,"color":0,"origin":[0,-1,0],"uv_offset":[0,34],"faces":{"north":{"uv":[10,44,13,47],"texture":0},"east":{"uv":[0,44,10,47],"texture":0},"south":{"uv":[23,44,26,47],"texture":0},"west":{"uv":[13,44,23,47],"texture":0},"up":{"uv":[13,44,10,34],"texture":0},"down":{"uv":[16,34,13,44],"texture":0}},"type":"cube","uuid":"3089125a-f5e3-7877-fc43-b85e186ce70b"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,24,-5],"to":[-3,29,-1],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[18,3],"faces":{"north":{"uv":[24,7,22,12],"texture":0},"east":{"uv":[28,7,24,12],"texture":0},"south":{"uv":[30,7,28,12],"texture":0},"west":{"uv":[22,7,18,12],"texture":0},"up":{"uv":[22,7,24,3],"texture":0},"down":{"uv":[24,3,26,7],"texture":0}},"type":"cube","uuid":"a7821e2a-e474-6b75-3fb8-e1e5c2d97f78"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5,21.5,-3],"to":[10,26.5,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,0,0],"uv_offset":[0,89],"faces":{"north":{"uv":[11,95,6,100],"texture":0},"east":{"uv":[17,95,11,100],"texture":0},"south":{"uv":[22,95,17,100],"texture":0},"west":{"uv":[6,95,0,100],"texture":0},"up":{"uv":[6,95,11,89],"texture":0},"down":{"uv":[11,89,16,95],"texture":0}},"type":"cube","uuid":"e63c28ce-b6bb-8689-ffb2-b426bb3f9fdf"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,11,-3],"to":[8.5,17,3],"autouv":0,"color":4,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[5,0,0],"uv_offset":[0,111],"faces":{"north":{"uv":[11,117,6,123],"texture":0},"east":{"uv":[17,117,11,123],"texture":0},"south":{"uv":[22,117,17,123],"texture":0},"west":{"uv":[6,117,0,123],"texture":0},"up":{"uv":[6,117,11,111],"texture":0},"down":{"uv":[11,111,16,117],"texture":0}},"type":"cube","uuid":"6fd2ef76-94e2-9233-9acf-41cd99cd3141"},{"name":"boot_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,-1,-3],"to":[5,6,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"origin":[0,0,0],"uv_offset":[104,115],"faces":{"north":{"uv":[116,121,110,128],"texture":0},"east":{"uv":[122,121,116,128],"texture":0},"south":{"uv":[128,121,122,128],"texture":0},"west":{"uv":[110,121,104,128],"texture":0},"up":{"uv":[110,121,116,115],"texture":0},"down":{"uv":[116,115,122,121],"texture":0}},"type":"cube","uuid":"4f9d7976-eeec-ccaa-b7a4-2a5aaa0c3b0f"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.3934333473546525,6.127801352928617,-3],"to":[6.393433347354654,11.127801352928618,3],"autouv":0,"color":5,"inflate":0.03,"origin":[0.020002535079508665,-1.9915440816362118,-0.009999990463256834],"uv_offset":[48,117],"faces":{"north":{"uv":[54,123,57,128],"texture":0},"east":{"uv":[48,123,54,128],"texture":0},"south":{"uv":[63,123,66,128],"texture":0},"west":{"uv":[57,123,63,128],"texture":0},"up":{"uv":[57,123,54,117],"texture":0},"down":{"uv":[60,117,57,123],"texture":0}},"type":"cube","uuid":"7db7922f-957c-5c15-3766-2f5c47a7baa0"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.393418210755766,6.1278013529286115,-3],"to":[-3.393418210755768,11.12780135292861,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.03,"origin":[-0.6200029165492349,-1.7415440816362135,-0.009999990463256834],"uv_offset":[48,117],"faces":{"north":{"uv":[57,123,54,128],"texture":0},"east":{"uv":[63,123,57,128],"texture":0},"south":{"uv":[66,123,63,128],"texture":0},"west":{"uv":[54,123,48,128],"texture":0},"up":{"uv":[54,123,57,117],"texture":0},"down":{"uv":[57,117,60,123],"texture":0}},"type":"cube","uuid":"79b356fd-95c0-cdee-dadb-e079c06849af"},{"name":"boot_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,-1,-3],"to":[1,6,3],"autouv":0,"color":7,"inflate":0.01,"origin":[0,0,0],"uv_offset":[104,115],"faces":{"north":{"uv":[110,121,116,128],"texture":0},"east":{"uv":[104,121,110,128],"texture":0},"south":{"uv":[122,121,128,128],"texture":0},"west":{"uv":[116,121,122,128],"texture":0},"up":{"uv":[116,121,110,115],"texture":0},"down":{"uv":[122,115,116,121],"texture":0}},"type":"cube","uuid":"bcb251f9-0b90-a858-cbc2-eee3435b4ecc"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4,12.5,-3],"to":[4,14.5,3],"autouv":0,"color":0,"inflate":0.04,"origin":[0,0,0],"uv_offset":[32,72],"faces":{"north":{"uv":[38,78,46,80],"texture":0},"east":{"uv":[32,78,38,80],"texture":0},"south":{"uv":[52,78,60,80],"texture":0},"west":{"uv":[46,78,52,80],"texture":0},"up":{"uv":[46,78,38,72],"texture":0},"down":{"uv":[54,72,46,78],"texture":0}},"type":"cube","uuid":"7903b96c-fb44-1e65-67e4-7f1d6d4f2fe7"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,29,-5],"to":[-1.5,32,5],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[0,34],"faces":{"north":{"uv":[13,44,10,47],"texture":0},"east":{"uv":[23,44,13,47],"texture":0},"south":{"uv":[26,44,23,47],"texture":0},"west":{"uv":[10,44,0,47],"texture":0},"up":{"uv":[10,44,13,34],"texture":0},"down":{"uv":[13,34,16,44],"texture":0}},"type":"cube","uuid":"e8386980-5d48-2ea5-3dd1-a648e2a0ff4a"},{"name":"leg_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,5.5,-2.5],"to":[0.5,12.5,2.5],"autouv":0,"color":3,"shade":false,"mirror_uv":true,"origin":[0,0,0],"uv_offset":[84,116],"faces":{"north":{"uv":[94,121,89,128],"texture":0},"east":{"uv":[99,121,94,128],"texture":0},"south":{"uv":[104,121,99,128],"texture":0},"west":{"uv":[89,121,84,128],"texture":0},"up":{"uv":[89,121,94,116],"texture":0},"down":{"uv":[94,116,99,121],"texture":0}},"type":"cube","uuid":"421781ab-9df5-6443-6f2a-4385c92db364"},{"name":"leg_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-0.5,5.5,-2.5],"to":[4.5,12.5,2.5],"autouv":0,"color":1,"origin":[0,0,0],"uv_offset":[84,116],"faces":{"north":{"uv":[89,121,94,128],"texture":0},"east":{"uv":[84,121,89,128],"texture":0},"south":{"uv":[99,121,104,128],"texture":0},"west":{"uv":[94,121,99,128],"texture":0},"up":{"uv":[94,121,89,116],"texture":0},"down":{"uv":[99,116,94,121],"texture":0}},"type":"cube","uuid":"b884bf21-499a-58ef-5da1-cce9f8200d0a"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3,24,-5],"to":[5,29,-1],"autouv":0,"color":4,"origin":[0,-1,0],"uv_offset":[18,3],"faces":{"north":{"uv":[22,7,24,12],"texture":0},"east":{"uv":[18,7,22,12],"texture":0},"south":{"uv":[28,7,30,12],"texture":0},"west":{"uv":[24,7,28,12],"texture":0},"up":{"uv":[24,7,22,3],"texture":0},"down":{"uv":[26,3,24,7],"texture":0}},"type":"cube","uuid":"ef697b9b-6d23-00c0-c6b5-c67926376a59"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,28,-6],"to":[1.5,34,6],"autouv":0,"color":3,"origin":[0,-1,0],"faces":{"north":{"uv":[12,12,15,18],"texture":0},"east":{"uv":[0,12,12,18],"texture":0},"south":{"uv":[27,12,30,18],"texture":0},"west":{"uv":[15,12,27,18],"texture":0},"up":{"uv":[15,12,12,0],"texture":0},"down":{"uv":[18,0,15,12],"texture":0}},"type":"cube","uuid":"3bd9da5c-7989-1f80-5e63-635b80c88c6d"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,17,-3],"to":[5,22,3],"autouv":0,"color":5,"origin":[0,0,0],"uv_offset":[0,69],"faces":{"north":{"uv":[6,75,16,80],"texture":0},"east":{"uv":[0,75,6,80],"texture":0},"south":{"uv":[22,75,32,80],"texture":0},"west":{"uv":[16,75,22,80],"texture":0},"up":{"uv":[16,75,6,69],"texture":0},"down":{"uv":[26,69,16,75],"texture":0}},"type":"cube","uuid":"a6bebbdd-0fce-dc40-cd93-354ec465c1f8"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,13.5,-2.5],"to":[4.5,17.5,2.5],"autouv":0,"color":0,"origin":[0,0,0],"uv_offset":[0,80],"faces":{"north":{"uv":[5,85,14,89],"texture":0},"east":{"uv":[0,85,5,89],"texture":0},"south":{"uv":[19,85,28,89],"texture":0},"west":{"uv":[14,85,19,89],"texture":0},"up":{"uv":[14,85,5,80],"texture":0},"down":{"uv":[23,80,14,85],"texture":0}},"type":"cube","uuid":"5d40581d-109e-2e60-bd61-ffb41b6c3932"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6,21,-5],"to":[6,25,4],"autouv":0,"color":3,"origin":[0,0,0],"uv_offset":[0,56],"faces":{"north":{"uv":[9,65,21,69],"texture":0},"east":{"uv":[0,65,9,69],"texture":0},"south":{"uv":[30,65,42,69],"texture":0},"west":{"uv":[21,65,30,69],"texture":0},"up":{"uv":[21,65,9,56],"texture":0},"down":{"uv":[33,56,21,65],"texture":0}},"type":"cube","uuid":"afe4cb3b-6a8e-d24a-d20e-0b69d6adba2b"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.675340579092845,20.46444401067989,-4],"to":[10.67534057909285,23.46444401067989,4],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[-0.32465942090715433,1.4644440106799004,0],"uv_offset":[0,100],"faces":{"north":{"uv":[14.000000000000005,108,8,111],"texture":0},"east":{"uv":[22.000000000000007,108,14.000000000000007,111],"texture":0},"south":{"uv":[28.000000000000014,108,22.000000000000007,111],"texture":0},"west":{"uv":[8,108,0,111],"texture":0},"up":{"uv":[8,108,14.000000000000005,100],"texture":0},"down":{"uv":[14.000000000000005,100,20.00000000000001,108],"texture":0}},"type":"cube","uuid":"00e631ff-f900-631a-a662-8a2fb41ffcf7"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,24,1],"to":[4.5,29,5],"autouv":0,"color":0,"origin":[0,-1,0],"uv_offset":[0,47],"faces":{"north":{"uv":[4,51,13,56],"texture":0},"east":{"uv":[0,51,4,56],"texture":0},"south":{"uv":[17,51,26,56],"texture":0},"west":{"uv":[13,51,17,56],"texture":0},"up":{"uv":[13,51,4,47],"texture":0},"down":{"uv":[22,47,13,51],"texture":0}},"type":"cube","uuid":"b7860950-bc1e-89a6-14ea-307736ad4ae7"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[2.7734308122751443,3.8943454345648254,-3],"to":[5.773430812275144,10.894345434564825,3],"autouv":0,"color":5,"inflate":0.02,"origin":[1,-2,0],"uv_offset":[66,115],"faces":{"north":{"uv":[72,121,75,128],"texture":0},"east":{"uv":[66,121,72,128],"texture":0},"south":{"uv":[81,121,84,128],"texture":0},"west":{"uv":[75,121,81,128],"texture":0},"up":{"uv":[75,121,72,115],"texture":0},"down":{"uv":[78,115,75,121],"texture":0}},"type":"cube","uuid":"dcb809c5-045e-4fab-9262-897659bf1be5"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.773415294206531,3.8943454345648254,-3],"to":[-2.773415294206533,10.894345434564825,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.02,"origin":[-1,-2,0],"uv_offset":[66,115],"faces":{"north":{"uv":[75,121,72,128],"texture":0},"east":{"uv":[81,121,75,128],"texture":0},"south":{"uv":[84,121,81,128],"texture":0},"west":{"uv":[72,121,66,128],"texture":0},"up":{"uv":[72,121,75,115],"texture":0},"down":{"uv":[75,115,78,121],"texture":0}},"type":"cube","uuid":"97bdbb97-b84a-3531-0165-d37539e4cd75"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,9.5,-3],"to":[2,12.5,3],"autouv":0,"color":0,"inflate":0.04,"origin":[0,0,0],"uv_offset":[28,80],"faces":{"north":{"uv":[34,86,38,89],"texture":0},"east":{"uv":[28,86,34,89],"texture":0},"south":{"uv":[44,86,48,89],"texture":0},"west":{"uv":[38,86,44,89],"texture":0},"up":{"uv":[38,86,34,80],"texture":0},"down":{"uv":[42,80,38,86],"texture":0}},"type":"cube","uuid":"d8ceb7eb-b81d-3fbc-27ee-0c75012d2c31"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,28,-3],"to":[5.5,35,6],"autouv":0,"color":3,"origin":[0,-1,0],"uv_offset":[0,18],"faces":{"north":{"uv":[9,27,11,34],"texture":0},"east":{"uv":[0,27,9,34],"texture":0},"south":{"uv":[20,27,22,34],"texture":0},"west":{"uv":[11,27,20,34],"texture":0},"up":{"uv":[11,27,9,18],"texture":0},"down":{"uv":[13,18,11,27],"texture":0}},"type":"cube","uuid":"913e020d-1da4-292d-1425-6f05876e2cd9"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.5,28,-3],"to":[-3.5,35,6],"autouv":0,"color":3,"mirror_uv":true,"origin":[0,-1,0],"uv_offset":[0,18],"faces":{"north":{"uv":[11,27,9,34],"texture":0},"east":{"uv":[20,27,11,34],"texture":0},"south":{"uv":[22,27,20,34],"texture":0},"west":{"uv":[9,27,0,34],"texture":0},"up":{"uv":[9,27,11,18],"texture":0},"down":{"uv":[11,18,13,27],"texture":0}},"type":"cube","uuid":"33331ec9-2f34-a439-f264-dd9a996eb003"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-12,18.75,-1.5],"to":[-9,26.75,1.5],"autouv":0,"color":5,"inflate":-0.24,"origin":[0,0,0],"uv_offset":[116,22],"faces":{"north":{"uv":[119,25,122,33],"texture":0},"east":{"uv":[116,25,119,33],"texture":0},"south":{"uv":[125,25,128,33],"texture":0},"west":{"uv":[122,25,125,33],"texture":0},"up":{"uv":[122,25,119,22],"texture":0},"down":{"uv":[125,22,122,25],"texture":0}},"type":"cube","uuid":"f85f775b-3c23-508e-2b92-f1339e9435d2"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9.5,13,-1.5],"to":[-6.5,18,1.5],"autouv":0,"color":6,"inflate":-0.23,"origin":[0,0,0],"uv_offset":[116,14],"faces":{"north":{"uv":[119,17,122,22],"texture":0},"east":{"uv":[116,17,119,22],"texture":0},"south":{"uv":[125,17,128,22],"texture":0},"west":{"uv":[122,17,125,22],"texture":0},"up":{"uv":[122,17,119,14],"texture":0},"down":{"uv":[125,14,122,17],"texture":0}},"type":"cube","uuid":"3e478bdb-889d-1afa-cef5-5603cc523608"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10,21.5,-3],"to":[-5,26.5,3],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[0,89],"faces":{"north":{"uv":[6,95,11,100],"texture":0},"east":{"uv":[0,95,6,100],"texture":0},"south":{"uv":[17,95,22,100],"texture":0},"west":{"uv":[11,95,17,100],"texture":0},"up":{"uv":[11,95,6,89],"texture":0},"down":{"uv":[16,89,11,95],"texture":0}},"type":"cube","uuid":"a46bfb6e-39b7-05d8-3a76-67ab9a07b8f3"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-8.5,11,-3],"to":[-3.5,17,3],"autouv":0,"color":6,"inflate":0.01,"origin":[0,0,0],"uv_offset":[0,111],"faces":{"north":{"uv":[6,117,11,123],"texture":0},"east":{"uv":[0,117,6,123],"texture":0},"south":{"uv":[17,117,22,123],"texture":0},"west":{"uv":[11,117,17,123],"texture":0},"up":{"uv":[11,117,6,111],"texture":0},"down":{"uv":[16,111,11,117],"texture":0}},"type":"cube","uuid":"614705f2-bcdb-a571-d28e-3beee15b32c4"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10.89178019303095,20.488148003559964,-4],"to":[-4.891780193030948,23.488148003559964,4],"autouv":0,"color":5,"inflate":0.01,"origin":[0.10821980696905145,0.4881480035599667,0],"uv_offset":[0,100],"faces":{"north":{"uv":[8,108,14.000000000000002,111],"texture":0},"east":{"uv":[0,108,8,111],"texture":0},"south":{"uv":[22,108,28,111],"texture":0},"west":{"uv":[14.000000000000002,108,22,111],"texture":0},"up":{"uv":[14.000000000000002,108,8,100],"texture":0},"down":{"uv":[20.000000000000004,100,14.000000000000002,108],"texture":0}},"type":"cube","uuid":"d0262a70-c09f-b202-04d5-3c86e07aea07"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[9,18.75,-1.5],"to":[12,26.75,1.5],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":-0.24,"origin":[0,-1,0],"uv_offset":[116,22],"faces":{"north":{"uv":[122,25,119,33],"texture":0},"east":{"uv":[125,25,122,33],"texture":0},"south":{"uv":[128,25,125,33],"texture":0},"west":{"uv":[119,25,116,33],"texture":0},"up":{"uv":[119,25,122,22],"texture":0},"down":{"uv":[122,22,125,25],"texture":0}},"type":"cube","uuid":"70315f47-6aad-8c8c-d7ae-4e0bc9b67da7"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[6.5,13,-1.5],"to":[9.5,18,1.5],"autouv":0,"color":4,"shade":false,"mirror_uv":true,"inflate":-0.22999999999999998,"origin":[5,0,0],"uv_offset":[116,14],"faces":{"north":{"uv":[122,17,119,22],"texture":0},"east":{"uv":[125,17,122,22],"texture":0},"south":{"uv":[128,17,125,22],"texture":0},"west":{"uv":[119,17,116,22],"texture":0},"up":{"uv":[119,17,122,14],"texture":0},"down":{"uv":[122,14,125,17],"texture":0}},"type":"cube","uuid":"9075aad1-4a34-3807-7fad-4d01a9bb31a7"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[7,21.25,-3.75],"to":[9,24.25,-2.75],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,-1,0],"uv_offset":[89,5],"faces":{"north":{"uv":[92,6,90,9],"texture":0},"east":{"uv":[93,6,92,9],"texture":0},"south":{"uv":[95,6,93,9],"texture":0},"west":{"uv":[90,6,89,9],"texture":0},"up":{"uv":[90,6,92,5],"texture":0},"down":{"uv":[92,5,94,6],"texture":0}},"type":"cube","uuid":"75779268-a82d-12ea-3eb3-44fcc74905e6"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[7,21.25,2.75],"to":[9,24.25,3.75],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.01,"origin":[0,-1,0],"uv_offset":[89,5],"faces":{"north":{"uv":[92,6,90,9],"texture":0},"east":{"uv":[93,6,92,9],"texture":0},"south":{"uv":[95,6,93,9],"texture":0},"west":{"uv":[90,6,89,9],"texture":0},"up":{"uv":[90,6,92,5],"texture":0},"down":{"uv":[92,5,94,6],"texture":0}},"type":"cube","uuid":"d2140963-b7db-a7c6-196d-2cfe6fa43c1c"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9,21.25,-3.75],"to":[-7,24.25,-2.75],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[89,5],"faces":{"north":{"uv":[90,6,92,9],"texture":0},"east":{"uv":[89,6,90,9],"texture":0},"south":{"uv":[93,6,95,9],"texture":0},"west":{"uv":[92,6,93,9],"texture":0},"up":{"uv":[92,6,90,5],"texture":0},"down":{"uv":[94,5,92,6],"texture":0}},"type":"cube","uuid":"cff2a354-ba99-43ac-da5c-9ffe04600a54"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-9,21.25,2.75],"to":[-7,24.25,3.75],"autouv":0,"color":5,"inflate":0.01,"origin":[0,0,0],"uv_offset":[89,5],"faces":{"north":{"uv":[90,6,92,9],"texture":0},"east":{"uv":[89,6,90,9],"texture":0},"south":{"uv":[93,6,95,9],"texture":0},"west":{"uv":[92,6,93,9],"texture":0},"up":{"uv":[92,6,90,5],"texture":0},"down":{"uv":[94,5,92,6],"texture":0}},"type":"cube","uuid":"072c91c3-4361-a39e-9ca6-b38d61f10fcc"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,17.5,2],"to":[1.5,20.5,4],"autouv":0,"color":5,"inflate":-0.25,"origin":[0,0,0],"uv_offset":[95,4],"faces":{"north":{"uv":[97,6,100,9],"texture":0},"east":{"uv":[95,6,97,9],"texture":0},"south":{"uv":[102,6,105,9],"texture":0},"west":{"uv":[100,6,102,9],"texture":0},"up":{"uv":[100,6,97,4],"texture":0},"down":{"uv":[103,4,100,6],"texture":0}},"type":"cube","uuid":"4a14dcf3-2118-adff-1195-2eb2738082c2"},{"name":"boot_l_glow","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.5,1.5,-1.5],"to":[-4.5,5.5,1.5],"autouv":0,"color":7,"inflate":-0.24,"origin":[0,0,0],"uv_offset":[106,14],"faces":{"north":{"uv":[109,17,111,21],"texture":0},"east":{"uv":[106,17,109,21],"texture":0},"south":{"uv":[114,17,116,21],"texture":0},"west":{"uv":[111,17,114,21],"texture":0},"up":{"uv":[111,17,109,14],"texture":0},"down":{"uv":[113,14,111,17],"texture":0}},"type":"cube","uuid":"1dee734b-2b9b-03b8-09ff-31caa0a16e0d"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.6846331929392555,29,-1.252853976431191],"to":[-4.6846331929392555,34,7.747146023568809],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"inflate":-0.4999999999999998,"origin":[0.06536680706074365,0,-0.0028539764311909443],"uv_offset":[106,0],"faces":{"north":{"uv":[117,9,115,14],"texture":0},"east":{"uv":[126,9,117,14],"texture":0},"south":{"uv":[128,9,126,14],"texture":0},"west":{"uv":[115,9,106,14],"texture":0},"up":{"uv":[115,9,117,0],"texture":0},"down":{"uv":[117,0,119,9],"texture":0}},"type":"cube","uuid":"d1dbedac-ec2c-1971-dca4-f8d078f3b897"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.684633192939256,29,-1.252853976431191],"to":[6.684633192939256,34,7.747146023568809],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"inflate":-0.5,"origin":[-0.06536680706074365,0,-0.0028539764311909443],"uv_offset":[106,0],"faces":{"north":{"uv":[117,9,115,14],"texture":0},"east":{"uv":[126,9,117,14],"texture":0},"south":{"uv":[128,9,126,14],"texture":0},"west":{"uv":[115,9,106,14],"texture":0},"up":{"uv":[115,9,117,0],"texture":0},"down":{"uv":[117,0,119,9],"texture":0}},"type":"cube","uuid":"32362d84-7165-641f-a708-bf91894fb836"},{"name":"boot_r_glow","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.5,1.5,-1.5],"to":[6.5,5.5,1.5],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":-0.25,"origin":[0,0,0],"uv_offset":[106,14],"faces":{"north":{"uv":[111,17,109,21],"texture":0},"east":{"uv":[114,17,111,21],"texture":0},"south":{"uv":[116,17,114,21],"texture":0},"west":{"uv":[109,17,106,21],"texture":0},"up":{"uv":[109,17,111,14],"texture":0},"down":{"uv":[111,14,113,17],"texture":0}},"type":"cube","uuid":"7099eabf-6cee-ce2d-a29b-76662ec479b9"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,19.5,-5.75],"to":[1.5,22.5,-3.75],"autouv":0,"color":5,"inflate":-0.25,"origin":[0,0,0],"uv_offset":[105,4],"faces":{"north":{"uv":[107,6,110,9],"texture":0},"east":{"uv":[105,6,107,9],"texture":0},"south":{"uv":[112,6,115,9],"texture":0},"west":{"uv":[110,6,112,9],"texture":0},"up":{"uv":[110,6,107,4],"texture":0},"down":{"uv":[113,4,110,6],"texture":0}},"type":"cube","uuid":"c4733bfb-7a7b-d9b2-e218-a8b5d5a19711"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[2.7734308122751443,3.8943454345648254,-3],"to":[5.773430812275144,10.894345434564825,3],"autouv":0,"color":5,"inflate":0.27,"origin":[1,-2,0],"uv_offset":[66,102],"faces":{"north":{"uv":[72,108,75,115],"texture":0},"east":{"uv":[66,108,72,115],"texture":0},"south":{"uv":[81,108,84,115],"texture":0},"west":{"uv":[75,108,81,115],"texture":0},"up":{"uv":[75,108,72,102],"texture":0},"down":{"uv":[78,102,75,108],"texture":0}},"type":"cube","uuid":"bf3bed52-8425-17a0-a0c4-6234570f74e3"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.773415294206531,3.8943454345648254,-3],"to":[-2.773415294206533,10.894345434564825,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.27,"origin":[-1,-2,0],"uv_offset":[66,102],"faces":{"north":{"uv":[75,108,72,115],"texture":0},"east":{"uv":[81,108,75,115],"texture":0},"south":{"uv":[84,108,81,115],"texture":0},"west":{"uv":[72,108,66,115],"texture":0},"up":{"uv":[72,108,75,102],"texture":0},"down":{"uv":[75,102,78,108],"texture":0}},"type":"cube","uuid":"71ca4e60-d252-6c66-07f0-7b9f56c6cd22"},{"name":"boot_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1,-1,-3],"to":[5,6,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.25,"origin":[0,0,0],"uv_offset":[104,102],"faces":{"north":{"uv":[116,108,110,115],"texture":0},"east":{"uv":[122,108,116,115],"texture":0},"south":{"uv":[128,108,122,115],"texture":0},"west":{"uv":[110,108,104,115],"texture":0},"up":{"uv":[110,108,116,102],"texture":0},"down":{"uv":[116,102,122,108],"texture":0}},"type":"cube","uuid":"8eadbf53-666c-76c6-e26d-198ff1216db5"},{"name":"boot_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,-1,-3],"to":[1,6,3],"autouv":0,"color":7,"inflate":0.26,"origin":[0,0,0],"uv_offset":[104,102],"faces":{"north":{"uv":[110,108,116,115],"texture":0},"east":{"uv":[104,108,110,115],"texture":0},"south":{"uv":[122,108,128,115],"texture":0},"west":{"uv":[116,108,122,115],"texture":0},"up":{"uv":[116,108,110,102],"texture":0},"down":{"uv":[122,102,116,108],"texture":0}},"type":"cube","uuid":"6e8036e6-6e9f-cd79-7b25-ed5dd15f1d19"},{"name":"thigh_guard_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6.393418210755766,6.1278013529286115,-3],"to":[-3.393418210755768,11.12780135292861,3],"autouv":0,"color":6,"shade":false,"mirror_uv":true,"inflate":0.28,"origin":[-0.6200029165492349,-1.7415440816362135,-0.009999990463256834],"uv_offset":[48,106],"faces":{"north":{"uv":[57,112,54,117],"texture":0},"east":{"uv":[63,112,57,117],"texture":0},"south":{"uv":[66,112,63,117],"texture":0},"west":{"uv":[54,112,48,117],"texture":0},"up":{"uv":[54,112,57,106],"texture":0},"down":{"uv":[57,106,60,112],"texture":0}},"type":"cube","uuid":"5a908876-c46c-c04a-a3be-b203a597e5b9"},{"name":"thigh_guard_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.3934333473546525,6.127801352928617,-3],"to":[6.393433347354654,11.127801352928618,3],"autouv":0,"color":5,"inflate":0.28,"origin":[0.020002535079508665,-1.9915440816362118,-0.009999990463256834],"uv_offset":[48,106],"faces":{"north":{"uv":[54,112,57,117],"texture":0},"east":{"uv":[48,112,54,117],"texture":0},"south":{"uv":[63,112,66,117],"texture":0},"west":{"uv":[57,112,63,117],"texture":0},"up":{"uv":[57,112,54,106],"texture":0},"down":{"uv":[60,106,57,112],"texture":0}},"type":"cube","uuid":"1d4b8391-7c2e-f80a-ffad-da36d5cfccf8"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-2,9.5,-3],"to":[2,12.5,3],"autouv":0,"color":0,"inflate":0.29,"origin":[0,0,0],"uv_offset":[48,80],"faces":{"north":{"uv":[54,86,58,89],"texture":0},"east":{"uv":[48,86,54,89],"texture":0},"south":{"uv":[64,86,68,89],"texture":0},"west":{"uv":[58,86,64,89],"texture":0},"up":{"uv":[58,86,54,80],"texture":0},"down":{"uv":[62,80,58,86],"texture":0}},"type":"cube","uuid":"1ac0d074-190a-dfb1-9e4b-4df7f1a7a9db"},{"name":"codpiece","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4,12.5,-3],"to":[4,14.5,3],"autouv":0,"color":0,"inflate":0.29,"origin":[0,0,0],"uv_offset":[60,72],"faces":{"north":{"uv":[66,78,74,80],"texture":0},"east":{"uv":[60,78,66,80],"texture":0},"south":{"uv":[80,78,88,80],"texture":0},"west":{"uv":[74,78,80,80],"texture":0},"up":{"uv":[74,78,66,72],"texture":0},"down":{"uv":[82,72,74,78],"texture":0}},"type":"cube","uuid":"8eab74a7-b7a1-0913-a8bb-27cc9beea861"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-8.5,11,-3],"to":[-3.5,17,3],"autouv":0,"color":6,"inflate":0.26,"origin":[0,0,0],"uv_offset":[22,111],"faces":{"north":{"uv":[28,117,33,123],"texture":0},"east":{"uv":[22,117,28,123],"texture":0},"south":{"uv":[39,117,44,123],"texture":0},"west":{"uv":[33,117,39,123],"texture":0},"up":{"uv":[33,117,28,111],"texture":0},"down":{"uv":[38,111,33,117],"texture":0}},"type":"cube","uuid":"599ccb01-295b-cd0b-48e9-40be49f0ae5f"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,11,-3],"to":[8.5,17,3],"autouv":0,"color":4,"shade":false,"mirror_uv":true,"inflate":0.26,"origin":[5,0,0],"uv_offset":[22,111],"faces":{"north":{"uv":[33,117,28,123],"texture":0},"east":{"uv":[39,117,33,123],"texture":0},"south":{"uv":[44,117,39,123],"texture":0},"west":{"uv":[28,117,22,123],"texture":0},"up":{"uv":[28,117,33,111],"texture":0},"down":{"uv":[33,111,38,117],"texture":0}},"type":"cube","uuid":"8d88365f-0acb-d65c-2fab-b8b7f5fe1cb2"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10.89178019303095,20.488148003559964,-4],"to":[-4.891780193030948,23.488148003559964,4],"autouv":0,"color":5,"inflate":0.26,"origin":[0.10821980696905145,0.4881480035599667,0],"uv_offset":[28,100],"faces":{"north":{"uv":[36,108,42,111],"texture":0},"east":{"uv":[28,108,36,111],"texture":0},"south":{"uv":[50,108,56,111],"texture":0},"west":{"uv":[42,108,50,111],"texture":0},"up":{"uv":[42,108,36,100],"texture":0},"down":{"uv":[48,100,42,108],"texture":0}},"type":"cube","uuid":"c18bcc22-b2b9-9533-1866-c09d827ca95a"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[4.675340579092845,20.46444401067989,-4],"to":[10.67534057909285,23.46444401067989,4],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.26,"origin":[-0.32465942090715433,1.4644440106799004,0],"uv_offset":[28,100],"faces":{"north":{"uv":[42.00000000000001,108,36,111],"texture":0},"east":{"uv":[50.00000000000001,108,42.00000000000001,111],"texture":0},"south":{"uv":[56.000000000000014,108,50.00000000000001,111],"texture":0},"west":{"uv":[36,108,28,111],"texture":0},"up":{"uv":[36,108,42.00000000000001,100],"texture":0},"down":{"uv":[42.00000000000001,100,48.000000000000014,108],"texture":0}},"type":"cube","uuid":"826389ae-d829-501d-908d-17bfb8235b00"},{"name":"arm_l","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-10,21.5,-3],"to":[-5,26.5,3],"autouv":0,"color":5,"inflate":0.26,"origin":[0,0,0],"uv_offset":[22,89],"faces":{"north":{"uv":[28,95,33,100],"texture":0},"east":{"uv":[22,95,28,100],"texture":0},"south":{"uv":[39,95,44,100],"texture":0},"west":{"uv":[33,95,39,100],"texture":0},"up":{"uv":[33,95,28,89],"texture":0},"down":{"uv":[38,89,33,95],"texture":0}},"type":"cube","uuid":"77a4464a-5808-5702-9698-eefd6cc304a4"},{"name":"arm_r","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[5,21.5,-3],"to":[10,26.5,3],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.26,"origin":[0,0,0],"uv_offset":[22,89],"faces":{"north":{"uv":[33,95,28,100],"texture":0},"east":{"uv":[39,95,33,100],"texture":0},"south":{"uv":[44,95,39,100],"texture":0},"west":{"uv":[28,95,22,100],"texture":0},"up":{"uv":[28,95,33,89],"texture":0},"down":{"uv":[33,89,38,95],"texture":0}},"type":"cube","uuid":"29b307a4-f1da-ef81-43d4-85d1180b47bd"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-1.5,28,-6],"to":[1.5,34,6],"autouv":0,"color":3,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[30,0],"faces":{"north":{"uv":[42,12,45,18],"texture":0},"east":{"uv":[30,12,42,18],"texture":0},"south":{"uv":[57,12,60,18],"texture":0},"west":{"uv":[45,12,57,18],"texture":0},"up":{"uv":[45,12,42,0],"texture":0},"down":{"uv":[48,0,45,12],"texture":0}},"type":"cube","uuid":"47d543d3-b052-0790-1011-51d2638c9a85"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3,24,-5],"to":[5,29,-1],"autouv":0,"color":4,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[30,3],"faces":{"north":{"uv":[34,7,36,12],"texture":0},"east":{"uv":[30,7,34,12],"texture":0},"south":{"uv":[40,7,42,12],"texture":0},"west":{"uv":[36,7,40,12],"texture":0},"up":{"uv":[36,7,34,3],"texture":0},"down":{"uv":[38,3,36,7],"texture":0}},"type":"cube","uuid":"f9a86fb5-83ed-45ed-af17-4f7492604dc3"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5,24,-5],"to":[-3,29,-1],"autouv":0,"color":1,"shade":false,"mirror_uv":true,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[30,3],"faces":{"north":{"uv":[36,7,34,12],"texture":0},"east":{"uv":[40,7,36,12],"texture":0},"south":{"uv":[42,7,40,12],"texture":0},"west":{"uv":[34,7,30,12],"texture":0},"up":{"uv":[34,7,36,3],"texture":0},"down":{"uv":[36,3,38,7],"texture":0}},"type":"cube","uuid":"2531a963-4c99-6346-b455-4fbd39465b48"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,29,-5],"to":[-1.5,32,5],"autouv":0,"color":0,"shade":false,"mirror_uv":true,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[26,34],"faces":{"north":{"uv":[39,44,36,47],"texture":0},"east":{"uv":[49,44,39,47],"texture":0},"south":{"uv":[52,44,49,47],"texture":0},"west":{"uv":[36,44,26,47],"texture":0},"up":{"uv":[36,44,39,34],"texture":0},"down":{"uv":[39,34,42,44],"texture":0}},"type":"cube","uuid":"fd6c61b9-9caa-e6b5-3985-28ee04620a1e"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-4.5,24,1],"to":[4.5,29,5],"autouv":0,"color":0,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[26,47],"faces":{"north":{"uv":[30,51,39,56],"texture":0},"east":{"uv":[26,51,30,56],"texture":0},"south":{"uv":[43,51,52,56],"texture":0},"west":{"uv":[39,51,43,56],"texture":0},"up":{"uv":[39,51,30,47],"texture":0},"down":{"uv":[48,47,39,51],"texture":0}},"type":"cube","uuid":"08b7cbd0-6023-d93e-da2b-9850bbaad011"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[1.5,29,-5],"to":[4.5,32,5],"autouv":0,"color":0,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[26,34],"faces":{"north":{"uv":[36,44,39,47],"texture":0},"east":{"uv":[26,44,36,47],"texture":0},"south":{"uv":[49,44,52,47],"texture":0},"west":{"uv":[39,44,49,47],"texture":0},"up":{"uv":[39,44,36,34],"texture":0},"down":{"uv":[42,34,39,44],"texture":0}},"type":"cube","uuid":"a6615daa-cab5-ef47-8b79-b01dcd06eeb7"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-5.5,28,-3],"to":[-3.5,35,6],"autouv":0,"color":3,"mirror_uv":true,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[22,18],"faces":{"north":{"uv":[33,27,31,34],"texture":0},"east":{"uv":[42,27,33,34],"texture":0},"south":{"uv":[44,27,42,34],"texture":0},"west":{"uv":[31,27,22,34],"texture":0},"up":{"uv":[31,27,33,18],"texture":0},"down":{"uv":[33,18,35,27],"texture":0}},"type":"cube","uuid":"e2469891-be68-c92b-16ef-965643c99f72"},{"name":"head","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[3.5,28,-3],"to":[5.5,35,6],"autouv":0,"color":3,"inflate":0.25,"origin":[0,-1,0],"uv_offset":[22,18],"faces":{"north":{"uv":[31,27,33,34],"texture":0},"east":{"uv":[22,27,31,34],"texture":0},"south":{"uv":[42,27,44,34],"texture":0},"west":{"uv":[33,27,42,34],"texture":0},"up":{"uv":[33,27,31,18],"texture":0},"down":{"uv":[35,18,33,27],"texture":0}},"type":"cube","uuid":"61b6c855-69d4-2e4a-331b-1feb6712f87f"},{"name":"torso","box_uv":true,"rescale":false,"locked":false,"render_order":"default","allow_mirror_modeling":true,"from":[-6,21,-5],"to":[6,25,4],"autouv":0,"color":3,"inflate":0.25,"origin":[0,0,0],"uv_offset":[42,56],"faces":{"north":{"uv":[51,65,63,69],"texture":0},"east":{"uv":[42,65,51,69],"texture":0},"south":{"uv":[72,65,84,69],"texture":0},"west":{"uv":[63,65,72,69],"texture":0},"up":{"uv":[63,65,51,56],"texture":0},"down":{"uv":[75,56,63,65],"texture":0}},"type":"cube","uuid":"fc38f7ef-0f82-7dc8-66b2-8b99714b2306"}],"outliner":[{"name":"torso","origin":[0,24,0],"color":0,"uuid":"6d53fc4b-9733-f2b2-1b43-3a0c90df5db4","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["a6bebbdd-0fce-dc40-cd93-354ec465c1f8","5d40581d-109e-2e60-bd61-ffb41b6c3932",{"name":"thing","origin":[0,24,0],"rotation":[-15,0,0],"color":0,"uuid":"c5d1a2ab-3172-b48c-9bd1-2d8b75211bd3","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["afe4cb3b-6a8e-d24a-d20e-0b69d6adba2b","fc38f7ef-0f82-7dc8-66b2-8b99714b2306"]}]},{"name":"torso_glow","origin":[0,24,0],"color":0,"uuid":"e3291511-3989-cd44-6738-c23158206ed1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"front_glow","origin":[0,24,0],"rotation":[-15,0,0],"color":0,"uuid":"e0ced102-77e8-5c30-afda-a692100e9040","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["c4733bfb-7a7b-d9b2-e218-a8b5d5a19711"]},{"name":"back_glow","origin":[0,24,0],"color":0,"uuid":"99a43f7b-7891-795f-a89f-d270c8f88049","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["4a14dcf3-2118-adff-1195-2eb2738082c2"]}]},{"name":"helmet","origin":[0,23,0],"color":0,"uuid":"e5eccdcb-78b6-781e-816b-94ff2349ad73","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["3089125a-f5e3-7877-fc43-b85e186ce70b","a6615daa-cab5-ef47-8b79-b01dcd06eeb7","b7860950-bc1e-89a6-14ea-307736ad4ae7","08b7cbd0-6023-d93e-da2b-9850bbaad011","e8386980-5d48-2ea5-3dd1-a648e2a0ff4a","fd6c61b9-9caa-e6b5-3985-28ee04620a1e","3bd9da5c-7989-1f80-5e63-635b80c88c6d","47d543d3-b052-0790-1011-51d2638c9a85","913e020d-1da4-292d-1425-6f05876e2cd9","33331ec9-2f34-a439-f264-dd9a996eb003","61b6c855-69d4-2e4a-331b-1feb6712f87f","e2469891-be68-c92b-16ef-965643c99f72","ef697b9b-6d23-00c0-c6b5-c67926376a59","a7821e2a-e474-6b75-3fb8-e1e5c2d97f78","2531a963-4c99-6346-b455-4fbd39465b48","f9a86fb5-83ed-45ed-af17-4f7492604dc3"]},{"name":"helmet_glow","origin":[0,24,0],"color":0,"uuid":"b3719fb6-3110-f2e7-aba5-0593b7e92089","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"left_glow","origin":[0,24,0],"rotation":[0,-5,0],"color":0,"uuid":"965007ac-d2a1-b4e8-4ff7-8a58a555e9f9","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["d1dbedac-ec2c-1971-dca4-f8d078f3b897"]},{"name":"right_glow","origin":[0,24,0],"rotation":[0,5,0],"color":0,"uuid":"eeebc104-52ca-01bf-7ccb-01e2174e07ac","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["32362d84-7165-641f-a708-bf91894fb836"]}]},{"name":"right_shoulder","origin":[5,24,0],"color":0,"uuid":"0f385a6c-562e-d849-c500-db03f340fe63","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["e63c28ce-b6bb-8689-ffb2-b426bb3f9fdf","29b307a4-f1da-ef81-43d4-85d1180b47bd","6fd2ef76-94e2-9233-9acf-41cd99cd3141","8d88365f-0acb-d65c-2fab-b8b7f5fe1cb2",{"name":"right_shoulder_pad","origin":[3,22,0],"rotation":[0,0,-12.5],"color":0,"uuid":"c2a7b5c4-d5b1-d886-7717-a02b4d5db9d1","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["00e631ff-f900-631a-a662-8a2fb41ffcf7","826389ae-d829-501d-908d-17bfb8235b00"]}]},{"name":"right_shoulder_glow","origin":[5,24,0],"color":0,"uuid":"41982a8d-da4d-6469-8ea1-95182973cd97","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"right_shoulder_upper_glow","origin":[3,21,0],"rotation":[0,0,7.5],"color":0,"uuid":"b77268d2-9dba-6c8b-39dc-36a7cdb811da","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["70315f47-6aad-8c8c-d7ae-4e0bc9b67da7","75779268-a82d-12ea-3eb3-44fcc74905e6","d2140963-b7db-a7c6-196d-2cfe6fa43c1c"]},{"name":"right_shoulder_lower_glow","origin":[3,22,0],"color":0,"uuid":"e3bb18be-f8b6-1d4d-3c74-b087a68cf775","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["9075aad1-4a34-3807-7fad-4d01a9bb31a7"]}]},{"name":"left_shoulder","origin":[-5,24,0],"color":0,"uuid":"fb36ebbd-25ee-84af-2f7c-2207ab626898","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["a46bfb6e-39b7-05d8-3a76-67ab9a07b8f3","77a4464a-5808-5702-9698-eefd6cc304a4","614705f2-bcdb-a571-d28e-3beee15b32c4","599ccb01-295b-cd0b-48e9-40be49f0ae5f",{"name":"left_shoulder_pad","origin":[-3,22,0],"rotation":[0,0,12.5],"color":0,"uuid":"f22da9a2-86be-f982-22eb-0755f4cc42db","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["d0262a70-c09f-b202-04d5-3c86e07aea07","c18bcc22-b2b9-9533-1866-c09d827ca95a"]}]},{"name":"left_shoulder_glow","origin":[-5,24,0],"color":0,"uuid":"c2b22c51-5995-3f10-f066-6f8bd20fa3d4","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":[{"name":"left_shoulder_upper_glow","origin":[-3,22,0],"rotation":[0,0,-7.5],"color":0,"uuid":"39b89b16-5965-1305-f126-355b76d91d1c","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["f85f775b-3c23-508e-2b92-f1339e9435d2","cff2a354-ba99-43ac-da5c-9ffe04600a54","072c91c3-4361-a39e-9ca6-b38d61f10fcc"]},{"name":"left_shoulder_lower_glow","origin":[-3,22,0],"color":0,"uuid":"232ea6f6-402a-c750-d6f0-8d5ce89e3665","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["3e478bdb-889d-1afa-cef5-5603cc523608"]}]},{"name":"right_leg","origin":[1.9,12,0],"color":0,"uuid":"7be60e45-0384-3825-0285-c9861bcd56ae","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["b884bf21-499a-58ef-5da1-cce9f8200d0a",{"name":"right_thigh_guard1","origin":[2,10,0],"rotation":[0,0,65],"color":0,"uuid":"9d8032aa-9dd9-a803-7cb0-2d97f3b51f78","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["7db7922f-957c-5c15-3766-2f5c47a7baa0","1d4b8391-7c2e-f80a-ffad-da36d5cfccf8"]},{"name":"right_thigh_guard2","origin":[3,8,0],"rotation":[0,0,65],"color":0,"uuid":"16121f9e-6f81-d257-33b9-ecb8a5933447","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["dcb809c5-045e-4fab-9262-897659bf1be5","bf3bed52-8425-17a0-a0c4-6234570f74e3"]}]},{"name":"left_leg","origin":[-1.9,12,0],"color":0,"uuid":"71425f29-453c-ffed-e113-94521e5b6edd","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["421781ab-9df5-6443-6f2a-4385c92db364",{"name":"left_thigh_guard1","origin":[-2,10,0],"rotation":[0,0,-65],"color":0,"uuid":"36fd541b-fef9-30dc-6c06-8f0f78a28d9a","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["79b356fd-95c0-cdee-dadb-e079c06849af","5a908876-c46c-c04a-a3be-b203a597e5b9"]},{"name":"left_thigh_guard2","origin":[-3,8,0],"rotation":[0,0,-65],"color":0,"uuid":"d278ab93-4ab9-cffe-8258-7ca2008b3b12","export":true,"mirror_uv":false,"isOpen":true,"locked":false,"visibility":true,"autouv":0,"children":["97bdbb97-b84a-3531-0165-d37539e4cd75","71ca4e60-d252-6c66-07f0-7b9f56c6cd22"]}]},{"name":"right_boot","origin":[1.9,12,0],"color":0,"uuid":"1f0dd7f0-6db3-a61f-7f67-40146c30987c","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["4f9d7976-eeec-ccaa-b7a4-2a5aaa0c3b0f","8eadbf53-666c-76c6-e26d-198ff1216db5"]},{"name":"right_boot_glow","origin":[1.9,12,0],"color":0,"uuid":"c60cf9c3-83dc-f649-8df0-fdf25062a1d5","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["7099eabf-6cee-ce2d-a29b-76662ec479b9"]},{"name":"left_boot","origin":[-1.9,12,0],"color":0,"uuid":"31588fad-8410-af54-9d76-b841f0e91238","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["bcb251f9-0b90-a858-cbc2-eee3435b4ecc","6e8036e6-6e9f-cd79-7b25-ed5dd15f1d19"]},{"name":"left_boot_glow","origin":[-1.9,12,0],"color":0,"uuid":"97967112-9898-7aa7-db44-d332da690a53","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["1dee734b-2b9b-03b8-09ff-31caa0a16e0d"]},{"name":"codpiece","origin":[0,0,0],"color":0,"uuid":"22d6c7ca-a2a8-10b3-4475-e9960f789cc1","export":true,"mirror_uv":false,"isOpen":false,"locked":false,"visibility":true,"autouv":0,"children":["7903b96c-fb44-1e65-67e4-7f1d6d4f2fe7","8eab74a7-b7a1-0913-a8bb-27cc9beea861","d8ceb7eb-b81d-3fbc-27ee-0c75012d2c31","1ac0d074-190a-dfb1-9e4b-4df7f1a7a9db"]}],"textures":[{"path":"C:\\Users\\Hanna\\Desktop\\Mod-Stuff\\Malum-Mod\\src\\main\\resources\\assets\\malum\\textures\\armor\\malignant_stronghold.png","name":"malignant_stronghold.png","folder":"block","namespace":"","id":"0","width":128,"height":128,"uv_width":128,"uv_height":128,"particle":false,"layers_enabled":false,"sync_to_project":"","render_mode":"default","render_sides":"auto","frame_time":1,"frame_order_type":"loop","frame_order":"","frame_interpolate":false,"visible":true,"internal":true,"saved":true,"uuid":"ff3ddc60-dd7c-0330-39dc-17c0c305532d","relative_path":"../../../../../../../../resources/assets/malum/textures/armor/malignant_stronghold.png","source":"data:image/png;base64,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"}]} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/client/renderer/entity/bolt/AbstractBoltEntityRenderer.java b/src/main/java/com/sammy/malum/client/renderer/entity/bolt/AbstractBoltEntityRenderer.java index 21e1411e0..521ac38f9 100644 --- a/src/main/java/com/sammy/malum/client/renderer/entity/bolt/AbstractBoltEntityRenderer.java +++ b/src/main/java/com/sammy/malum/client/renderer/entity/bolt/AbstractBoltEntityRenderer.java @@ -31,8 +31,16 @@ public AbstractBoltEntityRenderer(EntityRendererProvider.Context context, Color this.shadowStrength = 0; } - private static final ResourceLocation LIGHT_TRAIL = malumPath("textures/vfx/concentrated_trail.png"); - private static final RenderType TRAIL_TYPE = LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE_TRIANGLE.applyAndCache(LIGHT_TRAIL); + protected static final ResourceLocation LIGHT_TRAIL = malumPath("textures/vfx/concentrated_trail.png"); + private static final RenderType TRAIL_TYPE = LodestoneRenderTypeRegistry.ADDITIVE_TEXTURE_TRIANGLE.apply(LIGHT_TRAIL); + + public RenderType getTrailRenderType() { + return TRAIL_TYPE; + } + + public float getAlphaMultiplier() { + return 1f; + } @Override public void render(T entity, float entityYaw, float partialTicks, PoseStack poseStack, MultiBufferSource bufferIn, int packedLightIn) { @@ -43,7 +51,7 @@ public void render(T entity, float entityYaw, float partialTicks, PoseStack pose List spinningTrailPoints = entity.spinningTrailPointBuilder.getTrailPoints(); List trailPoints = entity.trailPointBuilder.getTrailPoints(); poseStack.pushPose(); - VertexConsumer lightBuffer = DELAYED_RENDER.getBuffer(TRAIL_TYPE); + VertexConsumer lightBuffer = DELAYED_RENDER.getBuffer(getTrailRenderType()); float x = (float) Mth.lerp(partialTicks, entity.xOld, entity.getX()); float y = (float) Mth.lerp(partialTicks, entity.yOld, entity.getY()); float z = (float) Mth.lerp(partialTicks, entity.zOld, entity.getZ()); @@ -52,7 +60,7 @@ public void render(T entity, float entityYaw, float partialTicks, PoseStack pose VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld().setPosColorTexLightmapDefaultFormat(); for (int i = 0; i < 2; i++) { float size = (0.2f + i * 0.2f) * effectScalar; - float alpha = (0.7f - i * 0.35f) * effectScalar; + float alpha = Mth.clamp((0.7f - i * 0.35f) * effectScalar * getAlphaMultiplier(), 0, 1); builder.setAlpha(alpha) .renderTrail(lightBuffer, poseStack, spinningTrailPoints, f -> size, f -> builder.setAlpha(alpha * f).setColor(ColorHelper.colorLerp(Easing.SINE_IN, f * 2f, secondaryColor, primaryColor))) .renderTrail(lightBuffer, poseStack, spinningTrailPoints, f -> 1.5f * size, f -> builder.setAlpha(alpha * f / 2f).setColor(ColorHelper.colorLerp(Easing.SINE_IN, f * 1.5f, secondaryColor, primaryColor))) @@ -65,7 +73,7 @@ public void render(T entity, float entityYaw, float partialTicks, PoseStack pose VFXBuilders.WorldVFXBuilder builder = VFXBuilders.createWorld().setPosColorTexLightmapDefaultFormat(); for (int i = 0; i < 2; i++) { float size = (0.3f + i * 0.3f) * effectScalar; - float alpha = (0.7f - i * 0.35f) * effectScalar; + float alpha = Mth.clamp((0.7f - i * 0.35f) * effectScalar * getAlphaMultiplier(), 0, 1); builder.setAlpha(alpha) .renderTrail(lightBuffer, poseStack, trailPoints, f -> size, f -> builder.setAlpha(alpha * f).setColor(ColorHelper.colorLerp(Easing.SINE_IN, f * 2f, secondaryColor, primaryColor))) .renderTrail(lightBuffer, poseStack, trailPoints, f -> 1.5f * size, f -> builder.setAlpha(alpha * f / 2f).setColor(ColorHelper.colorLerp(Easing.SINE_IN, f * 1.5f, secondaryColor, primaryColor))) diff --git a/src/main/java/com/sammy/malum/client/renderer/entity/bolt/DrainingBoltEntityRenderer.java b/src/main/java/com/sammy/malum/client/renderer/entity/bolt/DrainingBoltEntityRenderer.java new file mode 100644 index 000000000..480372cef --- /dev/null +++ b/src/main/java/com/sammy/malum/client/renderer/entity/bolt/DrainingBoltEntityRenderer.java @@ -0,0 +1,27 @@ +package com.sammy.malum.client.renderer.entity.bolt; + +import com.sammy.malum.common.entity.bolt.*; +import com.sammy.malum.common.item.curiosities.weapons.staff.*; +import net.minecraft.client.renderer.*; +import net.minecraft.client.renderer.entity.*; +import team.lodestar.lodestone.registry.client.*; +import team.lodestar.lodestone.systems.rendering.rendeertype.*; + +public class DrainingBoltEntityRenderer extends AbstractBoltEntityRenderer { + + private static final RenderType TRAIL_TYPE = LodestoneRenderTypeRegistry.TRANSPARENT_TEXTURE_TRIANGLE.apply(LIGHT_TRAIL, ShaderUniformHandler.LUMITRANSPARENT); + + public DrainingBoltEntityRenderer(EntityRendererProvider.Context context) { + super(context, MalignantScepterItem.MALIGNANT_PURPLE, MalignantScepterItem.MALIGNANT_BLACK); + } + + @Override + public RenderType getTrailRenderType() { + return TRAIL_TYPE; + } + + @Override + public float getAlphaMultiplier() { + return 1.5f; + } +} diff --git a/src/main/java/com/sammy/malum/client/screen/codex/VoidProgressionScreen.java b/src/main/java/com/sammy/malum/client/screen/codex/VoidProgressionScreen.java index e025b3668..cef7a564f 100644 --- a/src/main/java/com/sammy/malum/client/screen/codex/VoidProgressionScreen.java +++ b/src/main/java/com/sammy/malum/client/screen/codex/VoidProgressionScreen.java @@ -93,27 +93,35 @@ public static void setupEntries() { VOID_ENTRIES.add(new BookEntry<>( "void.null_slate", -2, 3) .setWidgetConfig(w -> w.setIcon(NULL_SLATE).setStyle(BookWidgetStyle.SOULWOOD)) - .addPage(new HeadlineTextItemPage("void.null_slate", "void.null_slate.1", NULL_SLATE.get())) + .addPage(VoidTransmutationPage.fromOutput("void.null_slate", NULL_SLATE.get())) + .addPage(new TextPage("void.null_slate.1")) ); VOID_ENTRIES.add(new BookEntry<>( "void.void_salts", -1, 4) .setWidgetConfig(w -> w.setIcon(VOID_SALTS).setStyle(BookWidgetStyle.SOULWOOD)) - .addPage(new HeadlineTextItemPage("void.void_salts", "void.void_salts.1", VOID_SALTS.get())) + .addPage(VoidTransmutationPage.fromOutput("void.void_salts", VOID_SALTS.get())) + .addPage(new TextPage("void.void_salts.1")) ); VOID_ENTRIES.add(new BookEntry<>( "void.auric_embers", 1, 4) .setWidgetConfig(w -> w.setIcon(AURIC_EMBERS).setStyle(BookWidgetStyle.SOULWOOD)) - .addPage(new HeadlineTextItemPage("void.auric_embers", "void.auric_embers.1", AURIC_EMBERS.get())) + .addPage(VoidTransmutationPage.fromOutput("void.auric_embers", AURIC_EMBERS.get())) + .addPage(new TextPage("void.auric_embers.1")) ); VOID_ENTRIES.add(new BookEntry<>( "void.mnemonic_fragment", 2, 3) .setWidgetConfig(w -> w.setIcon(MNEMONIC_FRAGMENT).setStyle(BookWidgetStyle.SOULWOOD)) - .addPage(new HeadlineTextItemPage("void.mnemonic_fragment", "void.mnemonic_fragment.1", MNEMONIC_FRAGMENT.get())) + .addPage(new CyclingPage( + VoidTransmutationPage.fromInput("void.mnemonic_fragment", CLUSTER_OF_BRILLIANCE.get()), + VoidTransmutationPage.fromInput("void.mnemonic_fragment", CHUNK_OF_BRILLIANCE.get()) + )) + .addPage(new TextPage("void.mnemonic_fragment.1")) ); VOID_ENTRIES.add(new BookEntry<>( - "void.malignant_lead", 3, 3) + "void.malignant_lead", 6, 4) .setWidgetConfig(w -> w.setIcon(MALIGNANT_LEAD).setStyle(BookWidgetStyle.SOULWOOD)) - .addPage(new HeadlineTextItemPage("void.malignant_lead", "void.malignant_lead.1", MALIGNANT_LEAD.get())) + .addPage(VoidTransmutationPage.fromOutput("void.malignant_lead", MALIGNANT_LEAD.get())) + .addPage(new TextPage("void.malignant_lead.1")) ); VOID_ENTRIES.add(new BookEntry<>( @@ -146,8 +154,8 @@ public static void setupEntries() { .addPage(SpiritInfusionPage.fromOutput(RING_OF_THE_PLENTIFUL.get())) ); VOID_ENTRIES.add(new BookEntry<>( - "void.weight_of_worlds", 4, 6) - .setWidgetConfig(w -> w.setIcon(WEIGHT_OF_WORLDS).setStyle(BookWidgetStyle.SOULWOOD)) + "void.something2", 4, 6) + .setWidgetConfig(w -> w.setIcon(BARRIER).setStyle(BookWidgetStyle.SOULWOOD)) ); VOID_ENTRIES.add(new BookEntry<>( "void.something3", 2, 6) @@ -158,6 +166,28 @@ public static void setupEntries() { .setWidgetConfig(w -> w.setIcon(BARRIER).setStyle(BookWidgetStyle.SOULWOOD)) ); + VOID_ENTRIES.add(new BookEntry<>( + "void.malignant_alloy", 6, 7) + .setWidgetConfig(w -> w.setIcon(MALIGNANT_ALLOY_INGOT).setStyle(BookWidgetStyle.SOULWOOD)) + ); + + VOID_ENTRIES.add(new BookEntry<>( + "void.malignant_scepter", 5, 8) + .setWidgetConfig(w -> w.setIcon(MALIGNANT_SCEPTER).setStyle(BookWidgetStyle.SOULWOOD)) + ); + + VOID_ENTRIES.add(new BookEntry<>( + "void.weight_of_worlds", 7, 8) + .setWidgetConfig(w -> w.setIcon(WEIGHT_OF_WORLDS).setStyle(BookWidgetStyle.SOULWOOD)) + ); + + VOID_ENTRIES.add(new BookEntry<>( + "void.malignant_stronghold_armor", 6, 9) + .setWidgetConfig(w -> w.setIcon(MALIGNANT_STRONGHOLD_HELMET).setStyle(BookWidgetStyle.SOULWOOD)) + ); + + + VOID_ENTRIES.add(new BookEntry<>( "void.anomalous_design", 0, 7) .setWidgetConfig(w -> w.setIcon(ANOMALOUS_DESIGN).setStyle(BookWidgetStyle.SOULWOOD)) diff --git a/src/main/java/com/sammy/malum/client/screen/codex/pages/VoidTransmutationPage.java b/src/main/java/com/sammy/malum/client/screen/codex/pages/VoidTransmutationPage.java new file mode 100644 index 000000000..cba555f17 --- /dev/null +++ b/src/main/java/com/sammy/malum/client/screen/codex/pages/VoidTransmutationPage.java @@ -0,0 +1,67 @@ +package com.sammy.malum.client.screen.codex.pages; + +import com.sammy.malum.*; +import com.sammy.malum.client.screen.codex.*; +import com.sammy.malum.common.recipe.*; +import net.minecraft.client.*; +import net.minecraft.client.gui.*; +import net.minecraft.network.chat.*; +import net.minecraft.world.item.*; +import net.minecraftforge.data.loading.*; + +import java.util.function.*; + +import static com.sammy.malum.client.screen.codex.ArcanaCodexHelper.*; + +@SuppressWarnings("all") +public class VoidTransmutationPage extends BookPage { + private final String headlineTranslationKey; + private final FavorOfTheVoidRecipe recipe; + + public VoidTransmutationPage(String headlineTranslationKey, Predicate predicate) { + this(headlineTranslationKey, DatagenModLoader.isRunningDataGen() ? null : FavorOfTheVoidRecipe.getRecipe(Minecraft.getInstance().level, predicate)); + } + + public VoidTransmutationPage(String headlineTranslationKey, FavorOfTheVoidRecipe recipe) { + super(MalumMod.malumPath("textures/gui/book/pages/weeping_well_page.png")); + this.headlineTranslationKey = headlineTranslationKey; + this.recipe = recipe; + } + + public static VoidTransmutationPage fromInput(String headlineTranslationKey, Item inputItem) { + return new VoidTransmutationPage(headlineTranslationKey, s -> s.doesInputMatch(inputItem.getDefaultInstance())); + } + + public static VoidTransmutationPage fromOutput(String headlineTranslationKey, Item outputItem) { + return new VoidTransmutationPage(headlineTranslationKey, s -> s.doesOutputMatch(outputItem.getDefaultInstance())); + } + + public String headlineTranslationKey() { + return "malum.gui.book.entry.page.headline." + headlineTranslationKey; + } + + @Override + public boolean isValid() { + return recipe != null; + } + + @Override + public void renderLeft(Minecraft minecraft, GuiGraphics guiGraphics, EntryScreen screen, int mouseX, int mouseY, float partialTicks) { + int guiLeft = guiLeft(); + int guiTop = guiTop(); + Component component = Component.translatable(headlineTranslationKey()); + renderText(guiGraphics, component, guiLeft + 75 - minecraft.font.width(component.getString()) / 2, guiTop + 10); + renderItem(screen, guiGraphics, recipe.input, guiLeft + 67, guiTop + 44, mouseX, mouseY); + renderItem(screen, guiGraphics, recipe.output, guiLeft + 67, guiTop + 110, mouseX, mouseY); + } + + @Override + public void renderRight(Minecraft minecraft, GuiGraphics guiGraphics, EntryScreen screen, int mouseX, int mouseY, float partialTicks) { + int guiLeft = guiLeft(); + int guiTop = guiTop(); + Component component = Component.translatable(headlineTranslationKey()); + renderText(guiGraphics, component, guiLeft + 75 - minecraft.font.width(component.getString()) / 2, guiTop + 10); + renderItem(screen, guiGraphics, recipe.input, guiLeft + 209, guiTop + 44, mouseX, mouseY); + renderItem(screen, guiGraphics, recipe.output, guiLeft + 209, guiTop + 110, mouseX, mouseY); + } +} diff --git a/src/main/java/com/sammy/malum/common/effect/DeaconsFortuneEffect.java b/src/main/java/com/sammy/malum/common/effect/DeaconsFortuneEffect.java new file mode 100644 index 000000000..9c14c2930 --- /dev/null +++ b/src/main/java/com/sammy/malum/common/effect/DeaconsFortuneEffect.java @@ -0,0 +1,15 @@ +package com.sammy.malum.common.effect; + +import net.minecraft.world.effect.*; +import team.lodestar.lodestone.helpers.*; + +public class DeaconsFortuneEffect extends MobEffect { + public DeaconsFortuneEffect() { + super(MobEffectCategory.BENEFICIAL, ColorHelper.getColor(235, 207, 249)); + } + + @Override + public boolean isDurationEffectTick(int pDuration, int pAmplifier) { + return false; + } +} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/effect/SilencedEffect.java b/src/main/java/com/sammy/malum/common/effect/SilencedEffect.java new file mode 100644 index 000000000..3cbe3d9f0 --- /dev/null +++ b/src/main/java/com/sammy/malum/common/effect/SilencedEffect.java @@ -0,0 +1,36 @@ +package com.sammy.malum.common.effect; + +import com.sammy.malum.common.capability.*; +import com.sammy.malum.core.handlers.*; +import com.sammy.malum.registry.common.*; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.ai.attributes.*; +import team.lodestar.lodestone.helpers.*; +import team.lodestar.lodestone.registry.common.*; + +public class SilencedEffect extends MobEffect { + public SilencedEffect() { + super(MobEffectCategory.HARMFUL, ColorHelper.getColor(20, 14, 22)); + addAttributeModifier(LodestoneAttributeRegistry.MAGIC_DAMAGE.get(), "16886dd3-5b79-4191-88a5-4597125b90be", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier(LodestoneAttributeRegistry.MAGIC_PROFICIENCY.get(), "c7a4eea8-38ee-4b56-8623-02c9f4a8b363", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier(LodestoneAttributeRegistry.MAGIC_RESISTANCE.get(), "90d9ba7f-4023-4b6a-88f0-d50ec5ee1040", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + + addAttributeModifier(AttributeRegistry.SOUL_WARD_STRENGTH.get(), "c804e494-0f03-49e3-b9e1-c382ddd98927", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier(AttributeRegistry.SOUL_WARD_CAP.get(), "e0e391f4-ca5c-4237-a261-fbcb85d2a491", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + addAttributeModifier(AttributeRegistry.SOUL_WARD_RECOVERY_SPEED.get(), "c460be81-7c50-499d-b66f-ec7b78f917e4", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + + addAttributeModifier(AttributeRegistry.ARCANE_RESONANCE.get(), "3c0373c4-179d-4c38-b54b-442e69c1fb1c", -0.1f, AttributeModifier.Operation.MULTIPLY_TOTAL); + } + + @Override + public void applyEffectTick(LivingEntity pLivingEntity, int pAmplifier) { + TouchOfDarknessHandler handler = MalumLivingEntityDataCapability.getCapability(pLivingEntity).touchOfDarknessHandler; + handler.afflict(10); + } + + @Override + public boolean isDurationEffectTick(int pDuration, int pAmplifier) { + return true; + } +} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/entity/bolt/AbstractBoltProjectileEntity.java b/src/main/java/com/sammy/malum/common/entity/bolt/AbstractBoltProjectileEntity.java index b818ddc2e..9ac26cf03 100644 --- a/src/main/java/com/sammy/malum/common/entity/bolt/AbstractBoltProjectileEntity.java +++ b/src/main/java/com/sammy/malum/common/entity/bolt/AbstractBoltProjectileEntity.java @@ -55,6 +55,10 @@ public void setData(Entity owner, float magicDamage, int spawnDelay) { public abstract ParticleEffectType getImpactParticleEffect(); + public void onDealDamage(LivingEntity target) { + + } + @Override protected void defineSynchedData() { this.getEntityData().define(DATA_FADING_AWAY, false); @@ -140,6 +144,7 @@ protected void onHitEntity(EntityHitResult result) { DamageSource source = DamageTypeRegistry.create(level(), DamageTypeRegistry.VOODOO, this, staffOwner); boolean success = target.hurt(source, magicDamage); if (success && target instanceof LivingEntity livingentity) { + onDealDamage(livingentity); ItemStack staff = getItem(); ItemHelper.applyEnchantments(staffOwner, livingentity, staff); int i = staff.getEnchantmentLevel(Enchantments.FIRE_ASPECT); diff --git a/src/main/java/com/sammy/malum/common/entity/bolt/AuricFlameBoltEntity.java b/src/main/java/com/sammy/malum/common/entity/bolt/AuricFlameBoltEntity.java index 9d5fe6daf..cb2e247f6 100644 --- a/src/main/java/com/sammy/malum/common/entity/bolt/AuricFlameBoltEntity.java +++ b/src/main/java/com/sammy/malum/common/entity/bolt/AuricFlameBoltEntity.java @@ -97,7 +97,7 @@ public void tick() { @Override public void playSound(SoundEvent pSound, float pVolume, float pPitch) { super.playSound(pSound, pVolume, pPitch); - super.playSound(SoundRegistry.AURIC_FLAME_MOTIF.get(), pVolume+0.2f, pPitch+0.6f); + super.playSound(SoundRegistry.AURIC_FLAME_MOTIF.get(), pVolume+0.1f, pPitch+0.6f); } @Override diff --git a/src/main/java/com/sammy/malum/common/entity/bolt/DrainingBoltEntity.java b/src/main/java/com/sammy/malum/common/entity/bolt/DrainingBoltEntity.java new file mode 100644 index 000000000..63f0be963 --- /dev/null +++ b/src/main/java/com/sammy/malum/common/entity/bolt/DrainingBoltEntity.java @@ -0,0 +1,101 @@ +package com.sammy.malum.common.entity.bolt; + +import com.sammy.malum.common.item.curiosities.weapons.staff.*; +import com.sammy.malum.registry.client.*; +import com.sammy.malum.registry.common.*; +import com.sammy.malum.registry.common.entity.*; +import com.sammy.malum.registry.common.item.*; +import com.sammy.malum.visual_effects.*; +import com.sammy.malum.visual_effects.networked.*; +import net.minecraft.sounds.*; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; +import net.minecraftforge.api.distmarker.*; +import team.lodestar.lodestone.helpers.*; +import team.lodestar.lodestone.systems.easing.*; +import team.lodestar.lodestone.systems.particle.*; +import team.lodestar.lodestone.systems.particle.builder.*; +import team.lodestar.lodestone.systems.particle.data.*; +import team.lodestar.lodestone.systems.particle.data.spin.*; +import team.lodestar.lodestone.systems.particle.render_types.*; + +import java.util.function.*; + +public class DrainingBoltEntity extends AbstractBoltProjectileEntity { + + public DrainingBoltEntity(Level level) { + super(EntityRegistry.DRAINING_BOLT.get(), level); + noPhysics = false; + } + + public DrainingBoltEntity(Level level, double pX, double pY, double pZ) { + this(level); + setPos(pX, pY, pZ); + noPhysics = false; + } + + @Override + public void onDealDamage(LivingEntity target) { + MobEffect silenced = MobEffectRegistry.SILENCED.get(); + MobEffectInstance effect = target.getEffect(silenced); + if (effect == null) { + target.addEffect(new MobEffectInstance(silenced, 300, 0, true, true, true)); + } else { + EntityHelper.amplifyEffect(effect, target, 1, 9); + EntityHelper.extendEffect(effect, target, 60, 600); + } + } + + @Override + public void playSound(SoundEvent pSound, float pVolume, float pPitch) { + super.playSound(pSound, pVolume, pPitch-0.2f); + super.playSound(SoundRegistry.DRAINING_MOTIF.get(), pVolume, pPitch-0.1f); + } + + @Override + public int getMaxAge() { + return 20; + } + + @Override + public ParticleEffectType getImpactParticleEffect() { + return ParticleEffectTypeRegistry.DRAINING_BOLT_IMPACT; + } + + @Override + protected Item getDefaultItem() { + return ItemRegistry.MALIGNANT_SCEPTER.get(); + } + + @OnlyIn(Dist.CLIENT) + @Override + public void spawnParticles() { + Level level = level(); + Vec3 position = position(); + float scalar = getVisualEffectScalar(); + Vec3 norm = getDeltaMovement().normalize().scale(0.05f); + var lightSpecs = SpiritLightSpecs.spiritLightSpecs(level, position, MalignantScepterItem.MALIGNANT_COLOR_DATA); + lightSpecs.getBuilder().multiplyLifetime(1.5f).setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT).setMotion(norm); + lightSpecs.getBloomBuilder().multiplyLifetime(1.5f).setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT).setMotion(norm); + lightSpecs.spawnParticles(); + final SpinParticleData spinData = SpinParticleData.createRandomDirection(random, RandomHelper.randomBetween(random, 0.25f, 0.5f)).randomSpinOffset(random).build(); + final Consumer behavior = p -> p.setParticleMotion(p.getParticleSpeed().scale(0.95f)); + DirectionalParticleBuilder.create(ParticleRegistry.SAW) + .setTransparencyData(GenericParticleData.create(0.4f * scalar, 0.2f * scalar, 0f).setEasing(Easing.SINE_IN_OUT, Easing.SINE_IN).build()) + .setSpinData(spinData) + .setScaleData(GenericParticleData.create(0.3f * scalar, 0).setEasing(Easing.SINE_IN_OUT).build()) + .setColorData(MalignantScepterItem.MALIGNANT_COLOR_DATA) + .setLifetime(Math.min(6 + age * 3, 24)) + .setDirection(getDeltaMovement().normalize()) + .enableNoClip() + .enableForcedSpawn() + .addTickActor(behavior) + .spawn(level, position.x, position.y, position.z) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .setTransparencyData(GenericParticleData.create(0.9f * scalar, 0.4f * scalar, 0f).setEasing(Easing.SINE_IN_OUT, Easing.SINE_IN).build()) + .spawn(level, position.x, position.y, position.z); + } +} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/armor/MalignantStrongholdArmorItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/armor/MalignantStrongholdArmorItem.java new file mode 100644 index 000000000..6937dea5a --- /dev/null +++ b/src/main/java/com/sammy/malum/common/item/curiosities/armor/MalignantStrongholdArmorItem.java @@ -0,0 +1,51 @@ +package com.sammy.malum.common.item.curiosities.armor; + +import com.sammy.malum.client.cosmetic.*; +import com.sammy.malum.common.item.cosmetic.skins.*; +import com.sammy.malum.registry.client.*; +import net.minecraft.client.*; +import net.minecraft.client.model.*; +import net.minecraft.util.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import net.minecraftforge.api.distmarker.*; +import net.minecraftforge.client.extensions.common.*; +import team.lodestar.lodestone.systems.model.*; + +import java.util.function.*; + +import static com.sammy.malum.registry.common.item.ArmorTiers.ArmorTierEnum.*; + +public class MalignantStrongholdArmorItem extends MalumArmorItem { + public MalignantStrongholdArmorItem(Type slot, Properties builder) { + super(MALIGNANT_ALLOY, slot, builder); + } + + public String getTexture() { + return "malignant_stronghold"; + } + + @OnlyIn(Dist.CLIENT) + @Override + public void initializeClient(Consumer consumer) { + consumer.accept(new IClientItemExtensions() { + @Override + public LodestoneArmorModel getHumanoidArmorModel(LivingEntity entity, ItemStack itemStack, EquipmentSlot armorSlot, HumanoidModel _default) { + float pticks = Minecraft.getInstance().getFrameTime(); + float f = Mth.rotLerp(pticks, entity.yBodyRotO, entity.yBodyRot); + float f1 = Mth.rotLerp(pticks, entity.yHeadRotO, entity.yHeadRot); + float netHeadYaw = f1 - f; + float netHeadPitch = Mth.lerp(pticks, entity.xRotO, entity.getXRot()); + ArmorSkin skin = ArmorSkin.getAppliedItemSkin(itemStack); + LodestoneArmorModel model = ModelRegistry.MALIGNANT_LEAD_ARMOR; + if (skin != null) { + model = ArmorSkinRenderingData.RENDERING_DATA.apply(skin).getModel(entity); + } + model.slot = armorSlot; + model.copyFromDefault(_default); + model.setupAnim(entity, entity.walkAnimation.position(), entity.walkAnimation.speed(), entity.tickCount + pticks, netHeadYaw, netHeadPitch); + return model; + } + }); + } +} \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulHunterArmorItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulHunterArmorItem.java index e42bde177..99cc7ac2f 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulHunterArmorItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulHunterArmorItem.java @@ -37,11 +37,6 @@ public ImmutableMultimap.Builder createExtraAttrib return builder; } - @Override - public String getTextureLocation() { - return "malum:textures/armor/"; - } - public String getTexture() { return "spirit_hunter_reforged"; } diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulStainedSteelArmorItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulStainedSteelArmorItem.java index 90ab2901d..4038f94d5 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulStainedSteelArmorItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/armor/SoulStainedSteelArmorItem.java @@ -38,7 +38,7 @@ public ImmutableMultimap.Builder createExtraAttrib } public String getTexture() { - return "malignant_stronghold"; + return "soul_stained_steel_reforged"; } @OnlyIn(Dist.CLIENT) @@ -53,7 +53,7 @@ public LodestoneArmorModel getHumanoidArmorModel(LivingEntity entity, ItemStack float netHeadYaw = f1 - f; float netHeadPitch = Mth.lerp(pticks, entity.xRotO, entity.getXRot()); ArmorSkin skin = ArmorSkin.getAppliedItemSkin(itemStack); - LodestoneArmorModel model = ModelRegistry.MALIGNANT_LEAD_ARMOR; + LodestoneArmorModel model = ModelRegistry.SOUL_STAINED_ARMOR; if (skin != null) { model = ArmorSkinRenderingData.RENDERING_DATA.apply(skin).getModel(entity); } diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/WeightOfWorldsItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/WeightOfWorldsItem.java index ff0580e86..a5b68bcc7 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/WeightOfWorldsItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/WeightOfWorldsItem.java @@ -1,10 +1,44 @@ package com.sammy.malum.common.item.curiosities.weapons; +import com.sammy.malum.common.item.curiosities.weapons.scythe.*; +import com.sammy.malum.registry.client.*; +import com.sammy.malum.registry.common.*; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.entity.player.*; import net.minecraft.world.item.*; +import net.minecraft.world.level.*; +import net.minecraftforge.event.entity.living.*; +import team.lodestar.lodestone.systems.item.*; import team.lodestar.lodestone.systems.item.tools.*; -public class WeightOfWorldsItem extends LodestoneAxeItem { +public class WeightOfWorldsItem extends LodestoneAxeItem implements IEventResponderItem { public WeightOfWorldsItem(Tier material, int attackDamage, float attackSpeed, Properties properties) { super(material, attackDamage, attackSpeed, properties); } + + + @Override + public void killEvent(LivingDeathEvent event, LivingEntity attacker, LivingEntity target, ItemStack stack) { + attacker.addEffect(new MobEffectInstance(MobEffectRegistry.DEACONS_FORTUNE.get(), 200)); + } + + @Override + public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity target, ItemStack stack) { + if (attacker != null) { + if (attacker instanceof Player player) { + MalumScytheItem.spawnSweepParticles(player, ParticleRegistry.SCYTHE_CUT_PARTICLE.get()); + } + final Level level = attacker.level(); + level.playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.WEIGHT_OF_WORLDS_SLASH.get(), attacker.getSoundSource(), 1, 0.5f); + final MobEffect effect = MobEffectRegistry.DEACONS_FORTUNE.get(); + if (attacker.hasEffect(effect) || level.random.nextFloat() < 0.25f) { + event.setAmount(event.getAmount()*3); + level.playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.MALIGNANT_METAL_RESONATES.get(), attacker.getSoundSource(), 2, 0.5f); + level.playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.MALIGNANT_METAL_RESONATES.get(), attacker.getSoundSource(), 2, 1.5f); + level.playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.DRAINING_MOTIF.get(), attacker.getSoundSource(), 2, 0.5f); + attacker.removeEffect(effect); + } + } + } } \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/scythe/MalumScytheItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/scythe/MalumScytheItem.java index 216350852..4331a0899 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/scythe/MalumScytheItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/scythe/MalumScytheItem.java @@ -59,7 +59,7 @@ public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity }); } - public void spawnSweepParticles(Player player, SimpleParticleType type) { + public static void spawnSweepParticles(Player player, SimpleParticleType type) { double d0 = (-Mth.sin(player.getYRot() * ((float) Math.PI / 180F))); double d1 = Mth.cos(player.getYRot() * ((float) Math.PI / 180F)); if (player.level() instanceof ServerLevel serverLevel) { diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AbstractStaffItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AbstractStaffItem.java index b9b9d61a5..60619b0c3 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AbstractStaffItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AbstractStaffItem.java @@ -4,12 +4,10 @@ import com.sammy.malum.common.capability.*; import com.sammy.malum.common.enchantment.*; import com.sammy.malum.common.entity.bolt.*; +import com.sammy.malum.common.item.curiosities.weapons.scythe.*; import com.sammy.malum.core.systems.item.*; import com.sammy.malum.registry.client.*; import com.sammy.malum.registry.common.*; -import com.sammy.malum.registry.common.item.*; -import net.minecraft.core.particles.*; -import net.minecraft.server.level.*; import net.minecraft.sounds.*; import net.minecraft.stats.*; import net.minecraft.util.*; @@ -56,7 +54,7 @@ public ImmutableMultimap.Builder createExtraAttrib public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity target, ItemStack stack) { if (attacker instanceof Player player && !(event.getSource().getDirectEntity() instanceof AbstractBoltProjectileEntity)) { Level level = player.level(); - spawnSweepParticles(player, ParticleRegistry.STAFF_SLAM_PARTICLE.get()); + MalumScytheItem.spawnSweepParticles(player, ParticleRegistry.STAFF_SLAM_PARTICLE.get()); level.playSound(null, target.blockPosition(), SoundRegistry.STAFF_STRIKES.get(), attacker.getSoundSource(), 0.75f, Mth.nextFloat(level.random, 0.5F, 1F)); if (event.getSource().is(LodestoneDamageTypeTags.IS_MAGIC)) { ReplenishingEnchantment.replenishStaffCooldown(attacker, stack); @@ -77,7 +75,7 @@ public void releaseUsing(ItemStack pStack, Level pLevel, LivingEntity pLivingEnt if (pLivingEntity instanceof Player player) { player.awardStat(Stats.ITEM_USED.get(this)); if (!player.getAbilities().instabuild) { - pStack.hurtAndBreak(1, player, (p_220009_1_) -> { + pStack.hurtAndBreak(2, player, (p_220009_1_) -> { p_220009_1_.broadcastBreakEvent(hand); }); final MalumPlayerDataCapability capability = MalumPlayerDataCapability.getCapability(player); @@ -144,14 +142,6 @@ public UseAnim getUseAnimation(ItemStack pStack) { return UseAnim.BOW; } - public void spawnSweepParticles(Player player, SimpleParticleType type) { - double d0 = (-Mth.sin(player.getYRot() * ((float) Math.PI / 180F))); - double d1 = Mth.cos(player.getYRot() * ((float) Math.PI / 180F)); - if (player.level() instanceof ServerLevel serverLevel) { - serverLevel.sendParticles(type, player.getX() + d0, player.getY(0.5D), player.getZ() + d1, 0, d0, 0.0D, d1, 0.0D); - } - } - public Vec3 getProjectileSpawnPos(LivingEntity player, InteractionHand hand, float distance, float spread) { int angle = hand == InteractionHand.MAIN_HAND ? 225 : 90; double radians = Math.toRadians(angle - player.yHeadRot); diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AuricFlameStaffItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AuricFlameStaffItem.java index 861539383..498ad2d13 100644 --- a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AuricFlameStaffItem.java +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/AuricFlameStaffItem.java @@ -3,6 +3,7 @@ import com.sammy.malum.common.entity.bolt.*; import com.sammy.malum.common.entity.nitrate.*; import com.sammy.malum.registry.client.*; +import com.sammy.malum.registry.common.*; import net.minecraft.util.*; import net.minecraft.world.*; import net.minecraft.world.entity.*; @@ -10,6 +11,7 @@ import net.minecraft.world.level.*; import net.minecraft.world.phys.*; import net.minecraftforge.api.distmarker.*; +import net.minecraftforge.event.entity.living.*; import team.lodestar.lodestone.helpers.*; import team.lodestar.lodestone.registry.common.*; import team.lodestar.lodestone.systems.easing.*; @@ -27,25 +29,13 @@ public AuricFlameStaffItem(Tier tier, float magicDamage, Properties builderIn) { super(tier, 20, magicDamage, builderIn); } - @OnlyIn(Dist.CLIENT) @Override - public void spawnChargeParticles(Level pLevel, LivingEntity pLivingEntity, Vec3 pos, ItemStack pStack, float pct) { - RandomSource random = pLevel.random; - final SpinParticleData spinData = SpinParticleData.createRandomDirection(random, 0.25f, 0.5f).setSpinOffset(RandomHelper.randomBetween(random, 0f, 6.28f)).build(); - DirectionalParticleBuilder.create(ParticleRegistry.HEXAGON) - .setTransparencyData(GenericParticleData.create(0.5f * pct, 0f).setEasing(Easing.SINE_IN_OUT, Easing.SINE_IN).build()) - .setScaleData(GenericParticleData.create(0.35f * pct, 0).setEasing(Easing.SINE_IN_OUT).build()) - .setSpinData(spinData) - .setColorData(AURIC_COLOR_DATA) - .setLifetime(5) - .setDirection(pLivingEntity.getLookAngle().normalize()) - .setMotion(pLivingEntity.getLookAngle().normalize().scale(0.05f)) - .enableNoClip() - .enableForcedSpawn() - .setLifeDelay(2) - .spawn(pLevel, pos.x, pos.y, pos.z) - .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) - .spawn(pLevel, pos.x, pos.y, pos.z);; + public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity target, ItemStack stack) { + if (!(event.getSource().getDirectEntity() instanceof AbstractBoltProjectileEntity)) { + target.setSecondsOnFire(4); + attacker.level().playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.AURIC_FLAME_MOTIF.get(), attacker.getSoundSource(), 1, 1.25f); + } + super.hurtEvent(event, attacker, target, stack); } @Override @@ -79,4 +69,25 @@ public void fireProjectile(LivingEntity player, ItemStack stack, Level level, In entity.setDeltaMovement(entity.getDeltaMovement().add(left.scale(spread))); level.addFreshEntity(entity); } + + @OnlyIn(Dist.CLIENT) + @Override + public void spawnChargeParticles(Level pLevel, LivingEntity pLivingEntity, Vec3 pos, ItemStack pStack, float pct) { + RandomSource random = pLevel.random; + final SpinParticleData spinData = SpinParticleData.createRandomDirection(random, 0.25f, 0.5f).setSpinOffset(RandomHelper.randomBetween(random, 0f, 6.28f)).build(); + DirectionalParticleBuilder.create(ParticleRegistry.HEXAGON) + .setTransparencyData(GenericParticleData.create(0.5f * pct, 0f).setEasing(Easing.SINE_IN_OUT, Easing.SINE_IN).build()) + .setScaleData(GenericParticleData.create(0.35f * pct, 0).setEasing(Easing.SINE_IN_OUT).build()) + .setSpinData(spinData) + .setColorData(AURIC_COLOR_DATA) + .setLifetime(5) + .setDirection(pLivingEntity.getLookAngle().normalize()) + .setMotion(pLivingEntity.getLookAngle().normalize().scale(0.05f)) + .enableNoClip() + .enableForcedSpawn() + .setLifeDelay(2) + .spawn(pLevel, pos.x, pos.y, pos.z) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .spawn(pLevel, pos.x, pos.y, pos.z);; + } } diff --git a/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/MalignantScepterItem.java b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/MalignantScepterItem.java new file mode 100644 index 000000000..77ef4fd0d --- /dev/null +++ b/src/main/java/com/sammy/malum/common/item/curiosities/weapons/staff/MalignantScepterItem.java @@ -0,0 +1,112 @@ +package com.sammy.malum.common.item.curiosities.weapons.staff; + +import com.sammy.malum.common.entity.bolt.*; +import com.sammy.malum.registry.client.*; +import com.sammy.malum.registry.common.*; +import net.minecraft.util.*; +import net.minecraft.world.*; +import net.minecraft.world.effect.*; +import net.minecraft.world.entity.*; +import net.minecraft.world.item.*; +import net.minecraft.world.level.*; +import net.minecraft.world.phys.*; +import net.minecraftforge.api.distmarker.*; +import net.minecraftforge.event.entity.living.*; +import team.lodestar.lodestone.helpers.*; +import team.lodestar.lodestone.registry.common.*; +import team.lodestar.lodestone.systems.easing.*; +import team.lodestar.lodestone.systems.particle.builder.*; +import team.lodestar.lodestone.systems.particle.data.*; +import team.lodestar.lodestone.systems.particle.data.color.*; +import team.lodestar.lodestone.systems.particle.data.spin.*; +import team.lodestar.lodestone.systems.particle.render_types.*; + +import java.awt.*; + +public class MalignantScepterItem extends AbstractStaffItem { + + + public static final Color MALIGNANT_PURPLE = new Color(97, 19, 88); + public static final Color MALIGNANT_BLACK = new Color(26, 14, 22); + public static final ColorParticleData MALIGNANT_COLOR_DATA = ColorParticleData.create(MALIGNANT_PURPLE, MALIGNANT_BLACK).setEasing(Easing.BOUNCE_IN_OUT).setCoefficient(1.2f).build(); + + public MalignantScepterItem(Tier tier, float magicDamage, Properties builderIn) { + super(tier, 15, magicDamage, builderIn); + } + + @Override + public void hurtEvent(LivingHurtEvent event, LivingEntity attacker, LivingEntity target, ItemStack stack) { + if (!(event.getSource().getDirectEntity() instanceof AbstractBoltProjectileEntity)) { + MobEffect silenced = MobEffectRegistry.SILENCED.get(); + MobEffectInstance effect = target.getEffect(silenced); + if (effect == null) { + target.addEffect(new MobEffectInstance(silenced, 300, 1, true, true, true)); + } else { + EntityHelper.amplifyEffect(effect, target, 2, 9); + EntityHelper.extendEffect(effect, target, 60, 600); + } + attacker.level().playSound(null, target.getX(), target.getY(), target.getZ(), SoundRegistry.DRAINING_MOTIF.get(), attacker.getSoundSource(), 1, 1.25f); + } + super.hurtEvent(event, attacker, target, stack); + } + + @Override + public int getCooldownDuration(Level level, LivingEntity livingEntity) { + return 60; + } + + @Override + public int getProjectileCount(Level level, LivingEntity livingEntity, float pct) { + return pct == 1f ? 2 : 0; + } + + @Override + public void fireProjectile(LivingEntity player, ItemStack stack, Level level, InteractionHand hand, float chargePercentage, int count) { + int spawnDelay = count * 5; + float velocity = 4f; + float magicDamage = (float) player.getAttributes().getValue(LodestoneAttributeRegistry.MAGIC_DAMAGE.get()) / 2f; + Vec3 pos = getProjectileSpawnPos(player, hand, 0.5f, 0.5f); + for (int i = 0; i < 8; i++) { + float xSpread = RandomHelper.randomBetween(level.random, -0.25f, 0.25f); + float ySpread = RandomHelper.randomBetween(level.random, -0.05f, 0.05f); + DrainingBoltEntity entity = new DrainingBoltEntity(level, pos.x, pos.y, pos.z); + if (i > 1) { + entity.setSilent(true); + } + entity.setData(player, magicDamage, spawnDelay); + entity.setItem(stack); + + entity.shootFromRotation(player, player.getXRot(), player.getYRot(), 0, velocity, 0F); + + Vec3 projectileDirection = entity.getDeltaMovement(); + float yRot = ((float) (Mth.atan2(projectileDirection.x, projectileDirection.z) * (double) (180F / (float) Math.PI))); + float yaw = (float) Math.toRadians(yRot); + Vec3 left = new Vec3(-Math.cos(yaw), 0, Math.sin(yaw)); + Vec3 up = left.cross(projectileDirection); + entity.setDeltaMovement(entity.getDeltaMovement().add(left.scale(xSpread)).add(up.scale(ySpread))); + + + level.addFreshEntity(entity); + } + } + + @OnlyIn(Dist.CLIENT) + @Override + public void spawnChargeParticles(Level pLevel, LivingEntity pLivingEntity, Vec3 pos, ItemStack pStack, float pct) { + RandomSource random = pLevel.random; + final SpinParticleData spinData = SpinParticleData.createRandomDirection(random, 0.25f, 0.5f).setSpinOffset(RandomHelper.randomBetween(random, 0f, 6.28f)).build(); + DirectionalParticleBuilder.create(ParticleRegistry.CIRCLE) + .setTransparencyData(GenericParticleData.create(0.8f * pct, 0f).setEasing(Easing.SINE_IN_OUT, Easing.SINE_IN).build()) + .setSpinData(spinData) + .setScaleData(GenericParticleData.create(0.3f * pct, 0).setEasing(Easing.SINE_IN_OUT).build()) + .setColorData(ColorParticleData.create(MALIGNANT_BLACK, MALIGNANT_BLACK).build()) + .setLifetime(5) + .setLifeDelay(2) + .setDirection(pLivingEntity.getLookAngle().normalize()) + .setMotion(pLivingEntity.getLookAngle().normalize().scale(0.05f)) + .enableNoClip() + .enableForcedSpawn() + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .spawn(pLevel, pos.x, pos.y, pos.z); + } +} diff --git a/src/main/java/com/sammy/malum/common/sound/RareEarthSoundType.java b/src/main/java/com/sammy/malum/common/sound/RareEarthSoundType.java index 72d32f170..ef93cdb23 100644 --- a/src/main/java/com/sammy/malum/common/sound/RareEarthSoundType.java +++ b/src/main/java/com/sammy/malum/common/sound/RareEarthSoundType.java @@ -1,21 +1,18 @@ package com.sammy.malum.common.sound; -import com.sammy.malum.MalumMod; -import com.sammy.malum.registry.common.SoundRegistry; -import net.minecraft.client.Minecraft; -import net.minecraft.client.multiplayer.MultiPlayerGameMode; -import net.minecraft.client.resources.sounds.SimpleSoundInstance; -import net.minecraft.core.BlockPos; -import net.minecraft.sounds.SoundEvent; -import net.minecraft.sounds.SoundEvents; -import net.minecraft.sounds.SoundSource; -import net.minecraft.world.entity.player.Player; -import net.minecraft.world.level.Level; -import net.minecraftforge.api.distmarker.Dist; -import net.minecraftforge.api.distmarker.OnlyIn; -import team.lodestar.lodestone.systems.sound.ExtendedSoundType; +import com.sammy.malum.*; +import com.sammy.malum.registry.common.*; +import net.minecraft.client.*; +import net.minecraft.client.multiplayer.*; +import net.minecraft.client.resources.sounds.*; +import net.minecraft.core.*; +import net.minecraft.sounds.*; +import net.minecraft.world.entity.player.*; +import net.minecraft.world.level.*; +import net.minecraftforge.api.distmarker.*; +import team.lodestar.lodestone.systems.sound.*; -import java.util.function.Supplier; +import java.util.function.*; public class RareEarthSoundType extends ExtendedSoundType { public RareEarthSoundType(float volumeIn, float pitchIn, Supplier breakSoundIn, Supplier stepSoundIn, Supplier placeSoundIn, Supplier hitSoundIn, Supplier fallSoundIn) { @@ -24,12 +21,12 @@ public RareEarthSoundType(float volumeIn, float pitchIn, Supplier br @Override public void onPlayBreakSound(Level level, BlockPos pos) { - level.playLocalSound(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, SoundRegistry.CTHONIC_GOLD_BREAK.get(), SoundSource.BLOCKS, (getVolume() + 1.0F) / 4.0F, 0.95F - level.random.nextFloat() * 0.4f, false); + level.playLocalSound(pos.getX() + 0.5, pos.getY() + 0.5, pos.getZ() + 0.5, SoundRegistry.CTHONIC_GOLD_BREAK.get(), SoundSource.BLOCKS, (getVolume() + 1.0F) / 2.0F, 0.95F - level.random.nextFloat() * 0.4f, false); } @Override public void onPlayPlaceSound(Level level, BlockPos pos, Player player) { - level.playSound(player, pos, SoundRegistry.CTHONIC_GOLD_PLACE.get(), SoundSource.BLOCKS, (getVolume() + 2.0F) / 4.0F, 1.05f - level.random.nextFloat() * 0.4f); + level.playSound(player, pos, SoundRegistry.CTHONIC_GOLD_PLACE.get(), SoundSource.BLOCKS, (getVolume() + 2.0F) / 2.0F, 1.05f - level.random.nextFloat() * 0.4f); } @Override @@ -38,9 +35,9 @@ public void onPlayHitSound(BlockPos pos) { MultiPlayerGameMode gameMode = Minecraft.getInstance().gameMode; if (gameMode != null) { float progress = gameMode.destroyProgress; - float volume = (getVolume() + progress * progress * 4f) / 12f; + float volume = (getVolume() + progress * progress * 4f) / 8f; float pitch = getPitch() * (0.5f + 0.15f * progress); - Minecraft.getInstance().getSoundManager().play(new SimpleSoundInstance(SoundEvents.NETHER_GOLD_ORE_HIT, SoundSource.BLOCKS, volume, pitch, MalumMod.RANDOM, pos)); + Minecraft.getInstance().getSoundManager().play(new SimpleSoundInstance(SoundRegistry.QUARTZ_CLUSTER_BLOCK_HIT.get(), SoundSource.BLOCKS, volume, pitch, MalumMod.RANDOM, pos)); } } } \ No newline at end of file diff --git a/src/main/java/com/sammy/malum/data/block/MalumBlockStates.java b/src/main/java/com/sammy/malum/data/block/MalumBlockStates.java index a2aa9d5a4..e3f676f27 100644 --- a/src/main/java/com/sammy/malum/data/block/MalumBlockStates.java +++ b/src/main/java/com/sammy/malum/data/block/MalumBlockStates.java @@ -164,7 +164,8 @@ protected void registerStatesAndModels() { BLOCK_OF_RAW_SOULSTONE, BLOCK_OF_SOULSTONE, BLOCK_OF_CTHONIC_GOLD, BLOCK_OF_ARCANE_CHARCOAL, BLOCK_OF_HALLOWED_GOLD, BLOCK_OF_ASTRAL_WEAVE, BLOCK_OF_HEX_ASH, MASS_OF_BLIGHTED_GUNK, BLOCK_OF_CURSED_GRIT, RUNIC_SAP_BLOCK, CURSED_SAP_BLOCK, BLOCK_OF_BLAZING_QUARTZ, - BLOCK_OF_BRILLIANCE, BLOCK_OF_NULL_SLATE, BLOCK_OF_VOID_SALTS, BLOCK_OF_MNEMONIC_FRAGMENT); + BLOCK_OF_BRILLIANCE, BLOCK_OF_NULL_SLATE, BLOCK_OF_VOID_SALTS, BLOCK_OF_MNEMONIC_FRAGMENT, + BLOCK_OF_MALIGNANT_ALLOY); setTexturePath("blight/"); MalumBlockStateSmithTypes.BLIGHTED_BLOCK.act(data, BLIGHTED_SOIL); diff --git a/src/main/java/com/sammy/malum/data/item/MalumItemTags.java b/src/main/java/com/sammy/malum/data/item/MalumItemTags.java index 49abc6e55..0bcd4e1d1 100644 --- a/src/main/java/com/sammy/malum/data/item/MalumItemTags.java +++ b/src/main/java/com/sammy/malum/data/item/MalumItemTags.java @@ -94,10 +94,10 @@ protected void addTags(HolderLookup.Provider pProvider) { tag(SOULWOOD_LOGS).add(SOULWOOD_LOG.get(), STRIPPED_SOULWOOD_LOG.get(), SOULWOOD.get(), STRIPPED_SOULWOOD.get(), EXPOSED_SOULWOOD_LOG.get(), REVEALED_SOULWOOD_LOG.get(), BLIGHTED_SOULWOOD.get()); tag(SCYTHE).add(CRUDE_SCYTHE.get(), SOUL_STAINED_STEEL_SCYTHE.get(), CREATIVE_SCYTHE.get()); - tag(STAFF).add(MNEMONIC_HEX_STAFF.get(), STAFF_OF_THE_AURIC_FLAME.get()); + tag(STAFF).add(MNEMONIC_HEX_STAFF.get(), STAFF_OF_THE_AURIC_FLAME.get(), MALIGNANT_SCEPTER.get()); - tag(SOUL_HUNTER_WEAPON).add(MNEMONIC_HEX_STAFF.get(), STAFF_OF_THE_AURIC_FLAME.get()); - tag(SOUL_HUNTER_WEAPON).add(TYRVING.get(), CRUDE_SCYTHE.get(), SOUL_STAINED_STEEL_SCYTHE.get(), CREATIVE_SCYTHE.get()); + tag(SOUL_HUNTER_WEAPON).add(MNEMONIC_HEX_STAFF.get(), STAFF_OF_THE_AURIC_FLAME.get(), MALIGNANT_SCEPTER.get()); + tag(SOUL_HUNTER_WEAPON).add(TYRVING.get(), CRUDE_SCYTHE.get(), SOUL_STAINED_STEEL_SCYTHE.get(), CREATIVE_SCYTHE.get(), WEIGHT_OF_WORLDS.get()); tag(SOUL_HUNTER_WEAPON).add(SOUL_STAINED_STEEL_AXE.get(), SOUL_STAINED_STEEL_PICKAXE.get(), SOUL_STAINED_STEEL_SHOVEL.get(), SOUL_STAINED_STEEL_SWORD.get(), SOUL_STAINED_STEEL_HOE.get(), SOUL_STAINED_STEEL_KNIFE.get()); tag(Tags.Items.NUGGETS).add(COPPER_NUGGET.get(), HALLOWED_GOLD_NUGGET.get(), SOUL_STAINED_STEEL_NUGGET.get()); diff --git a/src/main/java/com/sammy/malum/data/recipe/MalumSpiritInfusionRecipes.java b/src/main/java/com/sammy/malum/data/recipe/MalumSpiritInfusionRecipes.java index c8b5814ba..f609759f5 100644 --- a/src/main/java/com/sammy/malum/data/recipe/MalumSpiritInfusionRecipes.java +++ b/src/main/java/com/sammy/malum/data/recipe/MalumSpiritInfusionRecipes.java @@ -484,6 +484,60 @@ protected static void buildRecipes(Consumer consumer) { .addSpirit(INFERNAL_SPIRIT, 4) .build(consumer); + new SpiritInfusionRecipeBuilder(Ingredient.of(Tags.Items.INGOTS_IRON), 4, ItemRegistry.MALIGNANT_ALLOY_INGOT.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_LEAD.get(), 2) + .addExtraItem(Items.NETHERITE_SCRAP, 3) + .addSpirit(EARTHEN_SPIRIT, 16) + .addSpirit(ELDRITCH_SPIRIT, 4) + .build(consumer); + + new SpiritInfusionRecipeBuilder(ItemRegistry.MNEMONIC_HEX_STAFF.get(), 1, ItemRegistry.MALIGNANT_SCEPTER.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_INGOT.get(), 2) + .addExtraItem(ItemRegistry.VOID_SALTS.get(), 8) + .addSpirit(AQUEOUS_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + + new SpiritInfusionRecipeBuilder(Items.IRON_AXE, 1, ItemRegistry.WEIGHT_OF_WORLDS.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_INGOT.get(), 2) + .addSpirit(EARTHEN_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + + new SpiritInfusionRecipeBuilder(Items.IRON_HELMET, 1, ItemRegistry.MALIGNANT_STRONGHOLD_HELMET.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_PLATING.get(), 3) + .addExtraItem(ItemRegistry.MNEMONIC_FRAGMENT.get(), 8) + .addSpirit(EARTHEN_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + + new SpiritInfusionRecipeBuilder(Items.IRON_CHESTPLATE, 1, ItemRegistry.MALIGNANT_STRONGHOLD_CHESTPLATE.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_PLATING.get(), 3) + .addExtraItem(ItemRegistry.MNEMONIC_FRAGMENT.get(), 8) + .addSpirit(EARTHEN_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + + new SpiritInfusionRecipeBuilder(Items.IRON_LEGGINGS, 1, ItemRegistry.MALIGNANT_STRONGHOLD_LEGGINGS.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_PLATING.get(), 3) + .addExtraItem(ItemRegistry.MNEMONIC_FRAGMENT.get(), 8) + .addSpirit(EARTHEN_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + + new SpiritInfusionRecipeBuilder(Items.IRON_BOOTS, 1, ItemRegistry.MALIGNANT_STRONGHOLD_BOOTS.get(), 1) + .addExtraItem(ItemRegistry.MALIGNANT_ALLOY_PLATING.get(), 3) + .addExtraItem(ItemRegistry.MNEMONIC_FRAGMENT.get(), 8) + .addSpirit(EARTHEN_SPIRIT, 32) + .addSpirit(WICKED_SPIRIT, 32) + .addSpirit(ELDRITCH_SPIRIT, 16) + .build(consumer); + new SpiritInfusionRecipeBuilder(ItemRegistry.SOULWOOD_PLANKS.get(), 2, ItemRegistry.MNEMONIC_HEX_STAFF.get(), 1) .addExtraItem(ItemRegistry.MNEMONIC_FRAGMENT.get(), 8) .addExtraItem(ItemRegistry.SOUL_STAINED_STEEL_INGOT.get(), 4) diff --git a/src/main/java/com/sammy/malum/data/recipe/MalumVanillaRecipes.java b/src/main/java/com/sammy/malum/data/recipe/MalumVanillaRecipes.java index b13fd3084..8af563cfc 100644 --- a/src/main/java/com/sammy/malum/data/recipe/MalumVanillaRecipes.java +++ b/src/main/java/com/sammy/malum/data/recipe/MalumVanillaRecipes.java @@ -1,41 +1,32 @@ package com.sammy.malum.data.recipe; -import com.sammy.malum.MalumMod; -import com.sammy.malum.common.item.impetus.ImpetusItem; -import com.sammy.malum.data.recipe.builder.vanilla.TheDeviceRecipeBuilder; -import com.sammy.malum.registry.common.item.ItemRegistry; -import com.sammy.malum.registry.common.item.ItemTagRegistry; +import com.sammy.malum.*; +import com.sammy.malum.common.item.impetus.*; +import com.sammy.malum.data.recipe.builder.vanilla.*; +import com.sammy.malum.registry.common.item.*; import net.minecraft.advancements.critereon.*; -import net.minecraft.data.recipes.FinishedRecipe; -import net.minecraft.data.recipes.RecipeCategory; -import net.minecraft.tags.ItemTags; -import net.minecraft.tags.TagKey; -import net.minecraft.world.item.Item; -import net.minecraft.world.item.Items; -import net.minecraft.world.item.crafting.Ingredient; -import net.minecraft.world.level.ItemLike; -import net.minecraft.world.level.block.Block; -import net.minecraft.world.level.block.Blocks; -import net.minecraftforge.common.Tags; -import net.minecraftforge.common.crafting.ConditionalRecipe; +import net.minecraft.data.recipes.*; +import net.minecraft.tags.*; +import net.minecraft.world.item.*; +import net.minecraft.world.item.crafting.*; +import net.minecraft.world.level.*; +import net.minecraft.world.level.block.*; +import net.minecraftforge.common.*; +import net.minecraftforge.common.crafting.*; import net.minecraftforge.common.crafting.conditions.*; -import net.minecraftforge.registries.ForgeRegistries; -import net.minecraftforge.registries.RegistryObject; -import team.lodestar.lodestone.data.builder.NBTCarryRecipeBuilder; -import team.lodestar.lodestone.systems.recipe.IngredientWithCount; - -import java.util.function.Consumer; -import java.util.function.Supplier; - -import static com.sammy.malum.MalumMod.malumPath; -import static com.sammy.malum.data.recipe.builder.vanilla.MetalNodeCookingRecipeBuilder.blastingWithTag; -import static com.sammy.malum.data.recipe.builder.vanilla.MetalNodeCookingRecipeBuilder.smeltingWithTag; -import static com.sammy.malum.data.recipe.builder.vanilla.StackedMalumCookingRecipeBuilder.blastingWithCount; -import static com.sammy.malum.data.recipe.builder.vanilla.StackedMalumCookingRecipeBuilder.smeltingWithCount; -import static net.minecraft.data.recipes.ShapedRecipeBuilder.shaped; -import static net.minecraft.data.recipes.ShapelessRecipeBuilder.shapeless; +import net.minecraftforge.registries.*; +import team.lodestar.lodestone.data.builder.*; +import team.lodestar.lodestone.systems.recipe.*; + +import java.util.function.*; + +import static com.sammy.malum.MalumMod.*; +import static com.sammy.malum.data.recipe.builder.vanilla.MetalNodeCookingRecipeBuilder.*; +import static com.sammy.malum.data.recipe.builder.vanilla.StackedMalumCookingRecipeBuilder.*; +import static net.minecraft.data.recipes.ShapedRecipeBuilder.*; +import static net.minecraft.data.recipes.ShapelessRecipeBuilder.*; import static net.minecraft.data.recipes.SimpleCookingRecipeBuilder.*; -import static net.minecraft.data.recipes.SingleItemRecipeBuilder.stonecutting; +import static net.minecraft.data.recipes.SingleItemRecipeBuilder.*; import static team.lodestar.lodestone.registry.common.tag.LodestoneItemTags.*; public class MalumVanillaRecipes implements IConditionBuilder { @@ -65,6 +56,14 @@ protected static void buildRecipes(Consumer consumer) { shapeless(RecipeCategory.MISC, ItemRegistry.HALLOWED_GOLD_NUGGET.get(), 9).requires(ItemRegistry.HALLOWED_GOLD_INGOT.get()).unlockedBy("has_hallowed_gold", has(ItemRegistry.HALLOWED_GOLD_INGOT.get())).save(consumer); shapeless(RecipeCategory.MISC, ItemRegistry.HALLOWED_GOLD_INGOT.get(), 9).requires(ItemRegistry.BLOCK_OF_HALLOWED_GOLD.get()).unlockedBy("has_hallowed_gold", has(ItemRegistry.HALLOWED_GOLD_INGOT.get())).save(consumer, malumPath("hallowed_gold_from_block")); + + shaped(RecipeCategory.MISC, ItemRegistry.BLOCK_OF_MALIGNANT_ALLOY.get()).define('#', ItemRegistry.MALIGNANT_ALLOY_INGOT.get()).pattern("###").pattern("###").pattern("###").unlockedBy("has_malignant_alloy", has(ItemRegistry.MALIGNANT_ALLOY_INGOT.get())).save(consumer); + shaped(RecipeCategory.MISC, ItemRegistry.MALIGNANT_ALLOY_INGOT.get()).define('#', ItemRegistry.MALIGNANT_ALLOY_NUGGET.get()).pattern("###").pattern("###").pattern("###").unlockedBy("has_malignant_alloy", has(ItemRegistry.MALIGNANT_ALLOY_INGOT.get())).save(consumer, malumPath("malignant_alloy_from_nuggets")); + shapeless(RecipeCategory.MISC, ItemRegistry.MALIGNANT_ALLOY_NUGGET.get(), 9).requires(ItemRegistry.MALIGNANT_ALLOY_INGOT.get()).unlockedBy("has_malignant_alloy", has(ItemRegistry.MALIGNANT_ALLOY_INGOT.get())).save(consumer); + shapeless(RecipeCategory.MISC, ItemRegistry.MALIGNANT_ALLOY_INGOT.get(), 9).requires(ItemRegistry.BLOCK_OF_MALIGNANT_ALLOY.get()).unlockedBy("has_malignant_alloy", has(ItemRegistry.MALIGNANT_ALLOY_INGOT.get())).save(consumer, malumPath("malignant_alloy_from_block")); + shaped(RecipeCategory.MISC, ItemRegistry.MALIGNANT_ALLOY_PLATING.get(), 2).define('X', ItemRegistry.MALIGNANT_ALLOY_INGOT.get()).define('Y', ItemRegistry.MALIGNANT_ALLOY_NUGGET.get()).pattern(" Y ").pattern("YXY").pattern(" Y ").unlockedBy("has_malignant_alloy", has(ItemRegistry.MALIGNANT_ALLOY_INGOT.get())).save(consumer); + + //NODES smeltingWithCount(Ingredient.of(ItemRegistry.IRON_NODE.get()), RecipeCategory.MISC, Items.IRON_NUGGET, 6, 0.25f, 200).unlockedBy("has_impetus", has(ItemRegistry.IRON_IMPETUS.get())).save(consumer, malumPath("iron_from_node_smelting")); blastingWithCount(Ingredient.of(ItemRegistry.IRON_NODE.get()), RecipeCategory.MISC, Items.IRON_NUGGET, 6, 0.25f, 100).unlockedBy("has_impetus", has(ItemRegistry.IRON_IMPETUS.get())).save(consumer, malumPath("iron_from_node_blasting")); diff --git a/src/main/java/com/sammy/malum/registry/common/MobEffectRegistry.java b/src/main/java/com/sammy/malum/registry/common/MobEffectRegistry.java index f41b2d616..ebdbf3f7c 100644 --- a/src/main/java/com/sammy/malum/registry/common/MobEffectRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/MobEffectRegistry.java @@ -37,6 +37,9 @@ public class MobEffectRegistry { public static final RegistryObject GLUTTONY = attachAlchemicalProficiency(EFFECTS.register("gluttony", GluttonyEffect::new), 0.5f); public static final RegistryObject CANCEROUS_GROWTH = EFFECTS.register("cancerous_growth", GrowingFleshEffect::new); public static final RegistryObject WICKED_INTENT = attachAlchemicalProficiency(EFFECTS.register("wicked_intent", WickedIntentEffect::new), 0.2f); + public static final RegistryObject SILENCED = EFFECTS.register("silenced", SilencedEffect::new); + public static final RegistryObject DEACONS_FORTUNE = EFFECTS.register("deacons_fortune", DeaconsFortuneEffect::new); + public static final RegistryObject REJECTED = EFFECTS.register("rejected", RejectedEffect::new); public static RegistryObject attachAlchemicalProficiency(RegistryObject effect, float proficiency) { diff --git a/src/main/java/com/sammy/malum/registry/common/ParticleEffectTypeRegistry.java b/src/main/java/com/sammy/malum/registry/common/ParticleEffectTypeRegistry.java index 94d811ccf..323cbed40 100644 --- a/src/main/java/com/sammy/malum/registry/common/ParticleEffectTypeRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/ParticleEffectTypeRegistry.java @@ -42,6 +42,7 @@ public class ParticleEffectTypeRegistry { //Wand public static final ParticleEffectType HEX_BOLT_IMPACT = new HexBoltImpactParticleEffect("hex_bolt_impact"); + public static final ParticleEffectType DRAINING_BOLT_IMPACT = new DrainingBoltImpactParticleEffect("draining_bolt_impact"); public static final ParticleEffectType AURIC_BOLT_IMPACT = new AuricBoltImpactParticleEffect("auric_bolt_impact"); //Nitrate diff --git a/src/main/java/com/sammy/malum/registry/common/SoundRegistry.java b/src/main/java/com/sammy/malum/registry/common/SoundRegistry.java index 45b331985..f9cd5ba3c 100644 --- a/src/main/java/com/sammy/malum/registry/common/SoundRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/SoundRegistry.java @@ -52,6 +52,7 @@ public class SoundRegistry { public static final RegistryObject SOUL_SHATTER = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("a_soul_shatters"))); public static final RegistryObject SCYTHE_CUT = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("scythe_cuts"))); + public static final RegistryObject WEIGHT_OF_WORLDS_SLASH = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("weight_of_worlds_slashes"))); public static final RegistryObject STAFF_FIRES = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("staff_fires"))); public static final RegistryObject STAFF_POWERS_UP = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("staff_powers_up"))); @@ -60,6 +61,7 @@ public class SoundRegistry { public static final RegistryObject STAFF_STRIKES = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("staff_strikes"))); public static final RegistryObject AURIC_FLAME_MOTIF = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("auric_flame_motif"))); + public static final RegistryObject DRAINING_MOTIF = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("draining_motif"))); public static final RegistryObject ALTAR_CRAFT = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("spirit_altar_completes_infusion"))); public static final RegistryObject ALTAR_LOOP = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("spirit_altar_infuses"))); @@ -98,6 +100,7 @@ public class SoundRegistry { public static final RegistryObject VOID_SLASH = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("void_slash_swooshes"))); public static final RegistryObject HIDDEN_BLADE_STRIKES = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("hidden_blade_strikes"))); + public static final RegistryObject MALIGNANT_METAL_RESONATES = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("malignant_metal_resonates"))); public static final RegistryObject HUNGRY_BELT_FEEDS = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("hungry_belt_feeds"))); public static final RegistryObject FLESH_RING_ABSORBS = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("flesh_ring_absorbs"))); public static final RegistryObject NITRATE_THROWN = register(SoundEvent.createVariableRangeEvent(MalumMod.malumPath("nitrate_thrown"))); @@ -201,6 +204,7 @@ public class SoundRegistry { public static final SoundType QUARTZ_CLUSTER = new QuartzClusterSoundType(0.3F, 1.5f, QUARTZ_CLUSTER_BLOCK_BREAK, QUARTZ_CLUSTER_BLOCK_STEP, QUARTZ_CLUSTER_BLOCK_PLACE, QUARTZ_CLUSTER_BLOCK_HIT, () -> SoundEvents.AMETHYST_CLUSTER_FALL); public static final SoundType HALLOWED_GOLD = new ForgeSoundType(1.0F, 1.0F, HALLOWED_GOLD_BREAK, HALLOWED_GOLD_STEP, HALLOWED_GOLD_PLACE, HALLOWED_GOLD_HIT, () -> SoundEvents.METAL_FALL); public static final SoundType SOUL_STAINED_STEEL = new ForgeSoundType(1.0F, 1.0F, SOUL_STAINED_STEEL_BREAK, SOUL_STAINED_STEEL_STEP, SOUL_STAINED_STEEL_PLACE, SOUL_STAINED_STEEL_HIT, () -> SoundEvents.METAL_FALL); + public static final SoundType MALIGNANT_ALLOY = new RareEarthSoundType(1.0F, 1.0F, SOUL_STAINED_STEEL_BREAK, SOUL_STAINED_STEEL_STEP, SOUL_STAINED_STEEL_PLACE, SOUL_STAINED_STEEL_HIT, () -> SoundEvents.METAL_FALL); public static final SoundType TAINTED_ROCK = new ForgeSoundType(1.0F, 1.1F, ARCANE_ROCK_BREAK, ARCANE_ROCK_STEP, ARCANE_ROCK_PLACE, ARCANE_ROCK_HIT, () -> SoundEvents.BASALT_FALL); public static final SoundType TAINTED_ROCK_BRICKS = new ForgeSoundType(1.0F, 1.1F, ARCANE_ROCK_BRICKS_BREAK, ARCANE_ROCK_BRICKS_STEP, ARCANE_ROCK_BRICKS_PLACE, ARCANE_ROCK_BRICKS_HIT, () -> SoundEvents.BASALT_FALL); diff --git a/src/main/java/com/sammy/malum/registry/common/block/BlockRegistry.java b/src/main/java/com/sammy/malum/registry/common/block/BlockRegistry.java index 6344c108a..05f2e59c2 100644 --- a/src/main/java/com/sammy/malum/registry/common/block/BlockRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/block/BlockRegistry.java @@ -348,8 +348,9 @@ public class BlockRegistry { public static final RegistryObject BLOCK_OF_RAW_SOULSTONE = BLOCKS.register("block_of_raw_soulstone", () -> new Block(MalumBlockProperties.SOULSTONE_BLOCK())); public static final RegistryObject BLOCK_OF_SOULSTONE = BLOCKS.register("block_of_soulstone", () -> new SoulstoneBlock(MalumBlockProperties.SOULSTONE_BLOCK())); - public static final RegistryObject BLOCK_OF_HALLOWED_GOLD = BLOCKS.register("block_of_hallowed_gold", () -> new Block(MalumBlockProperties.HALLOWED_GOLD())); public static final RegistryObject BLOCK_OF_SOUL_STAINED_STEEL = BLOCKS.register("block_of_soul_stained_steel", () -> new Block(MalumBlockProperties.SOUL_STAINED_STEEL_BLOCK())); + public static final RegistryObject BLOCK_OF_HALLOWED_GOLD = BLOCKS.register("block_of_hallowed_gold", () -> new Block(MalumBlockProperties.HALLOWED_GOLD())); + public static final RegistryObject BLOCK_OF_MALIGNANT_ALLOY = BLOCKS.register("block_of_malignant_alloy", () -> new Block(MalumBlockProperties.MALIGNANT_ALLOY_BLOCK())); public static final RegistryObject BLOCK_OF_ROTTING_ESSENCE = BLOCKS.register("block_of_rotting_essence", () -> new Block(new LodestoneBlockProperties().needsPickaxe().addTags(STORAGE_BLOCKS).strength(1F, 6.0F).sound(SoundType.CORAL_BLOCK))); public static final RegistryObject BLOCK_OF_GRIM_TALC = BLOCKS.register("block_of_grim_talc", () -> new Block(LodestoneBlockProperties.copy(Blocks.BONE_BLOCK).needsPickaxe().addTags(STORAGE_BLOCKS))); diff --git a/src/main/java/com/sammy/malum/registry/common/block/MalumBlockProperties.java b/src/main/java/com/sammy/malum/registry/common/block/MalumBlockProperties.java index 40fd34a54..bfac33928 100644 --- a/src/main/java/com/sammy/malum/registry/common/block/MalumBlockProperties.java +++ b/src/main/java/com/sammy/malum/registry/common/block/MalumBlockProperties.java @@ -256,6 +256,16 @@ public static LodestoneBlockProperties ARCANE_CHARCOAL_BLOCK() { .sound(SoundRegistry.ARCANE_CHARCOAL_BLOCK); } + public static LodestoneBlockProperties SOUL_STAINED_STEEL_BLOCK() { + return new LodestoneBlockProperties() + .addTag(Tags.Blocks.STORAGE_BLOCKS) + .addTag(BlockTags.BEACON_BASE_BLOCKS) + .requiresCorrectToolForDrops() + .needsPickaxe() + .sound(SoundRegistry.SOUL_STAINED_STEEL) + .strength(5f, 64.0f); + } + public static LodestoneBlockProperties HALLOWED_GOLD() { return new LodestoneBlockProperties() .addTag(Tags.Blocks.STORAGE_BLOCKS) @@ -267,14 +277,14 @@ public static LodestoneBlockProperties HALLOWED_GOLD() { .strength(2F, 16.0F); } - public static LodestoneBlockProperties SOUL_STAINED_STEEL_BLOCK() { + public static LodestoneBlockProperties MALIGNANT_ALLOY_BLOCK() { return new LodestoneBlockProperties() .addTag(Tags.Blocks.STORAGE_BLOCKS) .addTag(BlockTags.BEACON_BASE_BLOCKS) .requiresCorrectToolForDrops() .needsPickaxe() - .sound(SoundRegistry.SOUL_STAINED_STEEL) - .strength(5f, 64.0f); + .sound(SoundRegistry.MALIGNANT_ALLOY) + .strength(10f, 9999f); } public static LodestoneBlockProperties SPIRIT_JAR() { diff --git a/src/main/java/com/sammy/malum/registry/common/entity/EntityRegistry.java b/src/main/java/com/sammy/malum/registry/common/entity/EntityRegistry.java index 58c16a594..208cf4858 100644 --- a/src/main/java/com/sammy/malum/registry/common/entity/EntityRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/entity/EntityRegistry.java @@ -53,6 +53,10 @@ public class EntityRegistry { () -> EntityType.Builder.of((e, w) -> new HexBoltEntity(w), MobCategory.MISC).sized(1F, 1.2F).clientTrackingRange(10) .build(MalumMod.malumPath("hex_bolt").toString())); + public static final RegistryObject> DRAINING_BOLT = ENTITY_TYPES.register("draining_bolt", + () -> EntityType.Builder.of((e, w) -> new DrainingBoltEntity(w), MobCategory.MISC).sized(1F, 1f).clientTrackingRange(10) + .build(MalumMod.malumPath("draining_bolt").toString())); + public static final RegistryObject> AURIC_FLAME_BOLT = ENTITY_TYPES.register("auric_flame_bolt", () -> EntityType.Builder.of((e, w) -> new AuricFlameBoltEntity(w), MobCategory.MISC).sized(2F, 2F).clientTrackingRange(10) .build(MalumMod.malumPath("auric_flame_bolt").toString())); @@ -68,7 +72,9 @@ public static void bindEntityRenderers(EntityRenderersEvent.RegisterRenderers ev EntityRenderers.register(EntityRegistry.ETHERIC_NITRATE.get(), EthericNitrateEntityRenderer::new); EntityRenderers.register(EntityRegistry.VIVID_NITRATE.get(), VividNitrateEntityRenderer::new); + EntityRenderers.register(EntityRegistry.HEX_BOLT.get(), HexBoltEntityRenderer::new); + EntityRenderers.register(EntityRegistry.DRAINING_BOLT.get(), DrainingBoltEntityRenderer::new); EntityRenderers.register(EntityRegistry.AURIC_FLAME_BOLT.get(), AuricFlameBoltEntityRenderer::new); } } diff --git a/src/main/java/com/sammy/malum/registry/common/item/ArmorTiers.java b/src/main/java/com/sammy/malum/registry/common/item/ArmorTiers.java index f532f82c7..b78dcc5c3 100644 --- a/src/main/java/com/sammy/malum/registry/common/item/ArmorTiers.java +++ b/src/main/java/com/sammy/malum/registry/common/item/ArmorTiers.java @@ -12,8 +12,10 @@ public class ArmorTiers { public enum ArmorTierEnum implements ArmorMaterial { - SPIRIT_HUNTER("malum:spirit_hunter", 16, new int[]{1, 3, 4, 2}, 15, () -> SoundEvents.ARMOR_EQUIP_LEATHER, ItemRegistry.SPIRIT_FABRIC, 0), - SOUL_STAINED_STEEL("malum:soul_stained_steel", 22, new int[]{2, 6, 7, 3}, 11, () -> SoundEvents.ARMOR_EQUIP_IRON, ItemRegistry.SOUL_STAINED_STEEL_PLATING, 2); + SPIRIT_HUNTER("malum:spirit_hunter", 18, new int[]{1, 3, 4, 2}, 16, () -> SoundEvents.ARMOR_EQUIP_LEATHER, ItemRegistry.SPIRIT_FABRIC, 0), + SOUL_STAINED_STEEL("malum:soul_stained_steel", 22, new int[]{2, 6, 7, 3}, 16, () -> SoundEvents.ARMOR_EQUIP_IRON, ItemRegistry.SOUL_STAINED_STEEL_PLATING, 2), + MALIGNANT_ALLOY("malum:malignant_alloy", 32, new int[]{3, 6, 8, 3}, 24, () -> SoundEvents.ARMOR_EQUIP_NETHERITE, ItemRegistry.MALIGNANT_ALLOY_PLATING, 2); + private static final int[] MAX_DAMAGE_ARRAY = new int[]{13, 15, 16, 11}; private final String name; private final int durabilityMultiplier; private final int[] damageReduction; @@ -21,9 +23,12 @@ public enum ArmorTierEnum implements ArmorMaterial { private final Supplier equipSound; private final Supplier repairItem; private final float toughness; - private static final int[] MAX_DAMAGE_ARRAY = new int[]{13, 15, 16, 11}; + private final float knockbackResistance; ArmorTierEnum(String name, int durabilityMultiplier, int[] damageReduction, int enchantability, Supplier equipSound, Supplier repairItem, float toughness) { + this(name, durabilityMultiplier, damageReduction, enchantability, equipSound, repairItem, toughness, 0); + } + ArmorTierEnum(String name, int durabilityMultiplier, int[] damageReduction, int enchantability, Supplier equipSound, Supplier repairItem, float toughness, float knockbackResistance) { this.name = name; this.durabilityMultiplier = durabilityMultiplier; this.damageReduction = damageReduction; @@ -31,6 +36,7 @@ public enum ArmorTierEnum implements ArmorMaterial { this.equipSound = equipSound; this.repairItem = repairItem; this.toughness = toughness; + this.knockbackResistance = knockbackResistance; } @Override @@ -74,7 +80,7 @@ public float getToughness() { @Override public float getKnockbackResistance() { - return 0; + return knockbackResistance; } } } diff --git a/src/main/java/com/sammy/malum/registry/common/item/ItemRegistry.java b/src/main/java/com/sammy/malum/registry/common/item/ItemRegistry.java index de3b964da..c3bff2efd 100644 --- a/src/main/java/com/sammy/malum/registry/common/item/ItemRegistry.java +++ b/src/main/java/com/sammy/malum/registry/common/item/ItemRegistry.java @@ -434,15 +434,20 @@ public static RegistryObject register(String name, Item.Prop public static final RegistryObject COMPLETE_DESIGN = register("complete_design", DEFAULT_PROPERTIES(), SimpleFoiledItem::new); public static final RegistryObject FUSED_CONSCIOUSNESS = register("fused_consciousness", DEFAULT_PROPERTIES(), (p) -> new FusedConsciousnessItem(p.rarity(RARE))); - public static final RegistryObject HALLOWED_GOLD_INGOT = register("hallowed_gold_ingot", DEFAULT_PROPERTIES(), Item::new); - public static final RegistryObject HALLOWED_GOLD_NUGGET = register("hallowed_gold_nugget", DEFAULT_PROPERTIES(), Item::new); - public static final RegistryObject BLOCK_OF_HALLOWED_GOLD = register("block_of_hallowed_gold", DEFAULT_PROPERTIES(), (p) -> new BlockItem(BlockRegistry.BLOCK_OF_HALLOWED_GOLD.get(), p)); - public static final RegistryObject SOUL_STAINED_STEEL_INGOT = register("soul_stained_steel_ingot", DEFAULT_PROPERTIES(), Item::new); public static final RegistryObject SOUL_STAINED_STEEL_PLATING = register("soul_stained_steel_plating", DEFAULT_PROPERTIES(), Item::new); public static final RegistryObject SOUL_STAINED_STEEL_NUGGET = register("soul_stained_steel_nugget", DEFAULT_PROPERTIES(), Item::new); public static final RegistryObject BLOCK_OF_SOUL_STAINED_STEEL = register("block_of_soul_stained_steel", DEFAULT_PROPERTIES(), (p) -> new BlockItem(BlockRegistry.BLOCK_OF_SOUL_STAINED_STEEL.get(), p)); + public static final RegistryObject HALLOWED_GOLD_INGOT = register("hallowed_gold_ingot", DEFAULT_PROPERTIES(), Item::new); + public static final RegistryObject HALLOWED_GOLD_NUGGET = register("hallowed_gold_nugget", DEFAULT_PROPERTIES(), Item::new); + public static final RegistryObject BLOCK_OF_HALLOWED_GOLD = register("block_of_hallowed_gold", DEFAULT_PROPERTIES(), (p) -> new BlockItem(BlockRegistry.BLOCK_OF_HALLOWED_GOLD.get(), p)); + + public static final RegistryObject MALIGNANT_ALLOY_INGOT = register("malignant_alloy_ingot", DEFAULT_PROPERTIES(), Item::new); + public static final RegistryObject MALIGNANT_ALLOY_PLATING = register("malignant_alloy_plating", DEFAULT_PROPERTIES(), Item::new); + public static final RegistryObject MALIGNANT_ALLOY_NUGGET = register("malignant_alloy_nugget", DEFAULT_PROPERTIES(), Item::new); + public static final RegistryObject BLOCK_OF_MALIGNANT_ALLOY = register("block_of_malignant_alloy", DEFAULT_PROPERTIES(), (p) -> new BlockItem(BlockRegistry.BLOCK_OF_MALIGNANT_ALLOY.get(), p)); + //region ether public static final RegistryObject ETHER = register("ether", DEFAULT_PROPERTIES(), (p) -> new EtherItem(BlockRegistry.ETHER.get(), p, false)); public static final RegistryObject ETHER_TORCH = register("ether_torch", DEFAULT_PROPERTIES(), (p) -> new EtherTorchItem(BlockRegistry.ETHER_TORCH.get(), BlockRegistry.WALL_ETHER_TORCH.get(), p, false)); @@ -527,7 +532,14 @@ public static RegistryObject register(String name, Item.Prop public static final RegistryObject SOUL_HUNTER_BOOTS = register("soul_hunter_boots", GEAR_PROPERTIES(), (p) -> new SoulHunterArmorItem(ArmorItem.Type.BOOTS, p)); public static final RegistryObject TYRVING = register("tyrving", GEAR_PROPERTIES(), (p) -> new TyrvingItem(ItemTiers.ItemTierEnum.TYRVING, 0, -0.3f, p)); - public static final RegistryObject WEIGHT_OF_WORLDS = register("weight_of_worlds", GEAR_PROPERTIES(), (p) -> new WeightOfWorldsItem(ItemTiers.ItemTierEnum.MALIGNANT_LEAD, 1, -0.1f, p)); + + public static final RegistryObject MALIGNANT_STRONGHOLD_HELMET = register("malignant_stronghold_helmet", GEAR_PROPERTIES(), (p) -> new MalignantStrongholdArmorItem(ArmorItem.Type.HELMET, p)); + public static final RegistryObject MALIGNANT_STRONGHOLD_CHESTPLATE = register("malignant_stronghold_chestplate", GEAR_PROPERTIES(), (p) -> new MalignantStrongholdArmorItem(ArmorItem.Type.CHESTPLATE, p)); + public static final RegistryObject MALIGNANT_STRONGHOLD_LEGGINGS = register("malignant_stronghold_leggings", GEAR_PROPERTIES(), (p) -> new MalignantStrongholdArmorItem(ArmorItem.Type.LEGGINGS, p)); + public static final RegistryObject MALIGNANT_STRONGHOLD_BOOTS = register("malignant_stronghold_boots", GEAR_PROPERTIES(), (p) -> new MalignantStrongholdArmorItem(ArmorItem.Type.BOOTS, p)); + + public static final RegistryObject WEIGHT_OF_WORLDS = register("weight_of_worlds", GEAR_PROPERTIES(), (p) -> new WeightOfWorldsItem(ItemTiers.ItemTierEnum.MALIGNANT_ALLOY, 1, -0.1f, p)); + public static final RegistryObject MALIGNANT_SCEPTER = register("malignant_scepter", GEAR_PROPERTIES(), (p) -> new MalignantScepterItem(MALIGNANT_ALLOY, 4, p)); public static final RegistryObject MNEMONIC_HEX_STAFF = register("mnemonic_hex_staff", GEAR_PROPERTIES(), (p) -> new HexStaffItem(HEX_STAFF, 4, p)); public static final RegistryObject STAFF_OF_THE_AURIC_FLAME = register("staff_of_the_auric_flame", GEAR_PROPERTIES(), (p) -> new AuricFlameStaffItem(AURIC_STAFF, 6, p)); diff --git a/src/main/java/com/sammy/malum/registry/common/item/ItemTiers.java b/src/main/java/com/sammy/malum/registry/common/item/ItemTiers.java index a52ebd85f..4f6303230 100644 --- a/src/main/java/com/sammy/malum/registry/common/item/ItemTiers.java +++ b/src/main/java/com/sammy/malum/registry/common/item/ItemTiers.java @@ -9,8 +9,8 @@ public class ItemTiers { public enum ItemTierEnum implements Tier { SOUL_STAINED_STEEL(1250, 7.5f, 2.5f, 3, 16, ItemRegistry.SOUL_STAINED_STEEL_INGOT), - MALIGNANT_LEAD(2500, 8f, 4f, 3, 24, ItemRegistry.MALIGNANT_LEAD), - TYRVING(850, 8f, 1f, 3, 12, ItemRegistry.TWISTED_ROCK), + MALIGNANT_ALLOY(2500, 8f, 4f, 3, 24, ItemRegistry.MALIGNANT_ALLOY_INGOT), + TYRVING(850, 8f, 1f, 3, 16, ItemRegistry.TWISTED_ROCK), HEX_STAFF(1250, 8f, 2.5f, 3, 16, ItemRegistry.MNEMONIC_FRAGMENT), AURIC_STAFF(2500, 8f, 2.5f, 3, 16, ItemRegistry.AURIC_EMBERS); private final int maxUses; diff --git a/src/main/java/com/sammy/malum/visual_effects/WeepingWellParticleEffects.java b/src/main/java/com/sammy/malum/visual_effects/WeepingWellParticleEffects.java index dfcb0d440..6696c37d1 100644 --- a/src/main/java/com/sammy/malum/visual_effects/WeepingWellParticleEffects.java +++ b/src/main/java/com/sammy/malum/visual_effects/WeepingWellParticleEffects.java @@ -4,7 +4,7 @@ import com.sammy.malum.registry.client.*; import com.sammy.malum.visual_effects.networked.data.*; import net.minecraft.core.*; -import net.minecraft.util.RandomSource; +import net.minecraft.util.*; import net.minecraft.world.level.*; import net.minecraft.world.level.block.*; import net.minecraft.world.phys.*; @@ -20,10 +20,9 @@ import team.lodestar.lodestone.systems.particle.render_types.*; import java.awt.*; -import java.util.*; import java.util.function.*; -import static com.sammy.malum.visual_effects.SpiritLightSpecs.spiritLightSpecs; +import static com.sammy.malum.visual_effects.SpiritLightSpecs.*; public class WeepingWellParticleEffects { diff --git a/src/main/java/com/sammy/malum/visual_effects/networked/staff/DrainingBoltImpactParticleEffect.java b/src/main/java/com/sammy/malum/visual_effects/networked/staff/DrainingBoltImpactParticleEffect.java new file mode 100644 index 000000000..ee6b2785d --- /dev/null +++ b/src/main/java/com/sammy/malum/visual_effects/networked/staff/DrainingBoltImpactParticleEffect.java @@ -0,0 +1,104 @@ +package com.sammy.malum.visual_effects.networked.staff; + +import com.sammy.malum.common.item.curiosities.weapons.staff.*; +import com.sammy.malum.visual_effects.*; +import com.sammy.malum.visual_effects.networked.*; +import com.sammy.malum.visual_effects.networked.data.*; +import net.minecraft.nbt.*; +import net.minecraft.util.*; +import net.minecraft.world.phys.*; +import net.minecraftforge.api.distmarker.*; +import team.lodestar.lodestone.helpers.*; +import team.lodestar.lodestone.systems.particle.builder.*; +import team.lodestar.lodestone.systems.particle.render_types.*; + +import java.util.function.*; + +import static com.sammy.malum.visual_effects.SpiritLightSpecs.*; + +public class DrainingBoltImpactParticleEffect extends ParticleEffectType { + + public DrainingBoltImpactParticleEffect(String id) { + super(id); + } + + public static NBTEffectData createData(Vec3 direction) { + CompoundTag tag = new CompoundTag(); + CompoundTag directionTag = new CompoundTag(); + directionTag.putDouble("x", direction.x); + directionTag.putDouble("y", direction.y); + directionTag.putDouble("z", direction.z); + tag.put("direction", directionTag); + return new NBTEffectData(tag); + } + + @OnlyIn(Dist.CLIENT) + @Override + public Supplier get() { + return () -> (level, random, positionData, colorData, nbtData) -> { + if (!nbtData.compoundTag.contains("direction")) { + return; + } + final CompoundTag directionData = nbtData.compoundTag.getCompound("direction"); + double dirX = directionData.getDouble("x"); + double dirY = directionData.getDouble("y"); + double dirZ = directionData.getDouble("z"); + Vec3 projectileDirection = new Vec3(dirX, dirY, dirZ); + float yRot = ((float) (Mth.atan2(projectileDirection.x, projectileDirection.z) * (double) (180F / (float) Math.PI))); + float yaw = (float) Math.toRadians(yRot); + Vec3 left = new Vec3(-Math.cos(yaw), 0, Math.sin(yaw)); + Vec3 up = left.cross(projectileDirection); + + double posX = positionData.posX; + double posY = positionData.posY; + double posZ = positionData.posZ; + Vec3 pos = new Vec3(posX, posY, posZ); + + for (int i = 0; i < 32; i++) { + float spread = RandomHelper.randomBetween(random, 0.1f, 0.5f); + float speed = RandomHelper.randomBetween(random, 0.3f, 0.4f); + float distance = RandomHelper.randomBetween(random, 3f, 6f); + float angle = i / 32f * (float) Math.PI * 2f; + + Vec3 direction = projectileDirection + .add(left.scale(Math.sin(angle) * spread)) + .add(up.scale(Math.cos(angle) * spread)) + .normalize().scale(speed); + Vec3 spawnPosition = pos.add(direction.scale(distance)); + direction = direction.reverse(); + float lifetimeMultiplier = 0.7f; + if (random.nextFloat() < 0.8f) { + var lightSpecs = spiritLightSpecs(level, spawnPosition, MalignantScepterItem.MALIGNANT_COLOR_DATA); + lightSpecs.getBuilder() + .multiplyLifetime(lifetimeMultiplier) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .enableForcedSpawn() + .modifyData(WorldParticleBuilder::getScaleData, d -> d.multiplyValue(1.75f)) + .setMotion(direction); + lightSpecs.getBloomBuilder() + .multiplyLifetime(lifetimeMultiplier) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .modifyData(WorldParticleBuilder::getScaleData, d -> d.multiplyValue(1.75f)) + .setMotion(direction); + lightSpecs.spawnParticles(); + } + if (random.nextFloat() < 0.8f) { + var sparks = SparkParticleEffects.spiritMotionSparks(level, spawnPosition, MalignantScepterItem.MALIGNANT_COLOR_DATA); + sparks.getBuilder() + .multiplyLifetime(lifetimeMultiplier) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .enableForcedSpawn() + .modifyData(SparkParticleBuilder::getScaleData, d -> d.multiplyValue(1.75f)) + .modifyData(SparkParticleBuilder::getLengthData, d -> d.multiplyValue(3f)) + .setMotion(direction.scale(1.5f)); + sparks.getBloomBuilder() + .multiplyLifetime(lifetimeMultiplier) + .setRenderType(LodestoneWorldParticleRenderType.LUMITRANSPARENT) + .modifyData(WorldParticleBuilder::getScaleData, d -> d.multiplyValue(1.75f)) + .setMotion(direction.scale(1.5f)); + sparks.spawnParticles(); + } + } + }; + } +} \ No newline at end of file diff --git a/src/main/resources/assets/malum/sounds.json b/src/main/resources/assets/malum/sounds.json index cab5e5bd4..76d34c952 100644 --- a/src/main/resources/assets/malum/sounds.json +++ b/src/main/resources/assets/malum/sounds.json @@ -33,6 +33,7 @@ "a_soul_shatters": { "sounds":["malum:curiosities/soul_shatter1","malum:curiosities/soul_shatter2","malum:curiosities/soul_shatter3"], "subtitle": "malum.subtitle.a_soul_shatters" }, "scythe_cuts": { "sounds":["malum:curiosities/scythe/cut1","malum:curiosities/scythe/cut2","malum:curiosities/scythe/cut3"], "subtitle": "malum.subtitle.scythe_cuts" }, + "weight_of_worlds_slashes": { "sounds":["malum:curiosities/scythe/cut1","malum:curiosities/scythe/cut2","malum:curiosities/scythe/cut3"], "subtitle": "malum.subtitle.weight_of_worlds_slashes" }, "staff_fires": { "sounds":["malum:curiosities/staff/fire1","malum:curiosities/staff/fire2"], "subtitle": "malum.subtitle.staff_fires" }, "staff_powers_up": { "sounds":["malum:curiosities/staff/charge1","malum:curiosities/staff/charge2"], "subtitle": "malum.subtitle.staff_powers_up" }, @@ -41,6 +42,7 @@ "staff_strikes": { "sounds":["malum:curiosities/staff/hit1","malum:curiosities/staff/hit2","malum:curiosities/staff/hit3","malum:curiosities/staff/hit4"], "subtitle": "malum.subtitle.staff_strikes" }, "auric_flame_motif": { "sounds":["malum:curiosities/staff/auric_flame_motif1","malum:curiosities/staff/auric_flame_motif2","malum:curiosities/staff/auric_flame_motif3"]}, + "draining_motif": { "sounds":["malum:curiosities/staff/draining_motif1","malum:curiosities/staff/draining_motif2","malum:curiosities/staff/draining_motif3"]}, "the_unknown_weeps": { "sounds":["malum:weeping_well/uncanny_valley0","malum:weeping_well/uncanny_valley1"], "subtitle": "malum.subtitle.the_unknown_weeps" }, "the_void_heart_beats": { "sounds":["malum:weeping_well/void_heartbeat"], "subtitle": "malum.subtitle.the_void_heart_beats" }, @@ -80,6 +82,7 @@ "hungry_belt_feeds": { "sounds":["malum:curiosities/starved_belt/nom1", "malum:curiosities/starved_belt/nom2", "malum:curiosities/starved_belt/nom3", "malum:curiosities/starved_belt/nom4"], "subtitle": "malum.subtitle.hungry_belt_feeds" }, "flesh_ring_absorbs": { "sounds":["malum:curiosities/cancer_ring/grow1", "malum:curiosities/cancer_ring/grow2", "malum:curiosities/cancer_ring/grow3"], "subtitle": "malum.subtitle.flesh_ring_absorbs" }, "hidden_blade_strikes": { "sounds":["malum:curiosities/hidden_blade/strike1", "malum:curiosities/hidden_blade/strike2", "malum:curiosities/hidden_blade/strike3"], "subtitle": "malum.subtitle.hidden_blade_strikes" }, + "malignant_metal_resonates": { "sounds":["malum:curiosities/hidden_blade/strike1", "malum:curiosities/hidden_blade/strike2", "malum:curiosities/hidden_blade/strike3"], "subtitle": "malum.subtitle.malignant_metal_resonates" }, "nitrate_thrown": { "sounds":["minecraft:random/bow"], "subtitle": "malum.subtitle.nitrate_thrown" }, "spirit_mote_created": { "sounds":["malum:curiosities/spirit_mote/created1", "malum:curiosities/spirit_mote/created2", "malum:curiosities/spirit_mote/created3"], "subtitle": "malum.subtitle.spirit_mote_created" }, diff --git a/src/main/resources/assets/malum/sounds/curiosities/staff/draining_motif1.ogg b/src/main/resources/assets/malum/sounds/curiosities/staff/draining_motif1.ogg new file mode 100644 index 0000000000000000000000000000000000000000..360de3d139c295c253b6ffc036a704913188b32b GIT binary patch literal 27390 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/armor/malignant_stronghold.png b/src/main/resources/assets/malum/textures/armor/malignant_stronghold.png index 71126aed69995d1937e62512eeada7057e689191..84d649c04345ba74814bde97844d2f0878065424 100644 GIT binary patch literal 5438 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 literal 4922 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 b!FAU~>urUlopbP?7@)2GPz|eM^YZ@ykj!rf diff --git a/src/main/resources/assets/malum/textures/block/storage_blocks/block_of_malignant_alloy.png b/src/main/resources/assets/malum/textures/block/storage_blocks/block_of_malignant_alloy.png new file mode 100644 index 0000000000000000000000000000000000000000..8124da7f504559c0d0960c920658a8f4998a22b8 GIT binary patch literal 414 zcmV;P0b%}$P)H(BPnl4RyMN<4n6Idz$pB)Xx_lYTzw_`W z!>zjyAO3<7Wi8uClPPHgRI zW~eTy1xvzQgw0D+7A`FR>{C>t zk-Y#n0OSRbZJU^w6%@K413*!V43HBUNZi{m6)gSu*%gEV;OIJcmZ7)36R&1ax&XNVZU87VnHd>_ z{SQlFSVIvih@7FoE&v%IB+NsyW)v47n~Kf$cOPHkbQAy8CZUq~PVgN|s^xczi7l3R6DOTlEhlc?u z;6UK~-E;U2*nR&5SOKzTm_I;bMZ0ntK+$;R#aV_nyZ{1k-@apD1i2vAIu-1HkO8HRMR+xXG@=*)N(WvV!EghR0}VOzU`wK4 u7l3jjEZ|_Sz?GiS4TKyUK#Wbe3}Jrjxa3`7}L1FBr|33_MQ`9%y*KfGZ8g$XzeGA(i# zToo-CKrVfk^m+5nL0AeVtO!T`ts5Wi?wE(0hUue>;m@B+wWP{<;C0X^P9-T;5e<1_%|H$!D3 z26+KV44XHc-3oR{sbdkU0lLbb|7*PK;C@3k06F1+!UqH}TmUlwqyQ8(AR9nHL0Aw> zqbIQUr=%HzmdAkQ-oAauzz8xR);bmJf0zOIG=q{gC=B2RfYO1NMljp};h131o;~TV6MQG6wx0Igd0GNO}GpN0Bhy^Sh{S;qyPW_07*qoM6N<$f&i(Ochmp? diff --git a/src/main/resources/assets/malum/textures/gui/book/pages/weeping_well_page.png b/src/main/resources/assets/malum/textures/gui/book/pages/weeping_well_page.png index 470377147fef7cd59882f458ee8c421297c8f377..7f590e85f46c3f5645e56d4a1efd0fb903c8fb41 100644 GIT binary patch literal 10824 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 VqiaQm@E@YU{R;S#|8|NzVq1*=xA0EAw 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 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/item/malignant_alloy_plating.png b/src/main/resources/assets/malum/textures/item/malignant_alloy_plating.png new file mode 100644 index 0000000000000000000000000000000000000000..7cdd3c0ee020a12b9b1b3ecb8bc9f2573b481e8b GIT binary patch literal 447 zcmV;w0YLtVP)?&41w{hOKQRF_{?NX1H3F^{x{^8fE9pT0MiuZ69Q&0+p-31n3=9F*ah!CzGOIY zeK#ZA1t0^woZR6~hlL)<3oBQzf{TL;n6hvI!>xx`5e6XJj%*VsAVGcxiM@OKg#i>k zAk9L;JPaq!okTTY;q37ukQ@^e>`LO^z|cHFJ1#IG+qB+dvuCH zk58FF^_LpMtN(Wy&i{GHz`?@K@aE?yupt-*cv-}No%-(MONN-hIEL9X+Zbg2^DsPN z{KD|$_X~#KfB!Lvu=C+JVBz$+VCUYyah)MGCz4^$o(o{UvW*y+=3!=Mc=P=&!>`|e zvAdulzl1?iLldl6MEW0?KE3xQgJ-%U13LpNTrdEn+zw;on$z1eK+oC1Zh5ga1+Cur%Vj3J jetiw*ld2h{2LK>-wGsOFj5h!P002ovPDHLkV1fVuyL!Oi literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/item/malignant_stronghold_boots.png b/src/main/resources/assets/malum/textures/item/malignant_stronghold_boots.png new file mode 100644 index 0000000000000000000000000000000000000000..bd2bebffad0ba2317203af267c656f2b05cf3eb4 GIT binary patch literal 396 zcmV;70dxL|P);?dy^rrsg&Ww z_1$0#EHqvJPpa!?Fm+aEU`YMU(6m#Oq5cOWSPt$2NBQ;t_jR9RDBK7Mf)nRXq8MOd zWDXYZ_h)2qDm7x*|1c1X0cSrj6z1P$P?1+>n7O2v;qs#kU`4ue2LIDziW%-ayvfi% zQJKNXSOC)iP)IlAmw;_Kb@?(@1I%=F!SW3gd*I;%k0zLAkOD;wO$H}_a}*cs+jx@U z{*CMKbO$p8ZU88hMWp|M6@UUUxjX^IfVrIuAc4rh!0_fN6FipSq5SphYm`(C^FK@w q6b{G=xVc5aflU3ROlsz$*aZMqyPy#Vop|&B0000igP)F)|v7iO6GXq(Mr`qtM8D^0>u9GG!zS>UuP5nTGNxDPfXX47c=iGC?^L_vM{(B|-^O3}ST}6i~@=dQRRM+xrF;piU1F2DG zGNa6BWPFc(0N(SRFp`SAYIVjo!To)o51Sr$kYFTMW#!trlTdU2=n($fv#{k1x_p!s zmxM&Nx(d0^1UBWZ3V`LXV~2--vmw@u+R-T zZU%}ngup{ga4`LoqxM~v$Dn-l0PVA|TkMc3b!)2U@D1=>!*OhYwXcbX4t6h4T9q4- zJEm4)E%F1VY?w+CAPEBrDNGd0lUaY&$w-OZ?P#>%^7aC+FCV-s9eHVG8P+p16FBnS zXl-ucmB^dKq&Vd0a^YHYg0G55I2M<)2RtN>O1Wk=^1yqv#~8Zmh`XlKklNVfD3obE z1LfW;4D}E5sYq4(jYJS6#;5X-L7#=T`k{eN-EjW;{`5P6F|$a`NGo8FAQFa( z+Wq4xe0Rqo;fQZukO(!3g6!uo^`ibXL?V>6QL8NKQ3;|A|5p0~b^FXVHmla)00000 MNkvXXu0mjf06A*+vH$=8 literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/item/malignant_stronghold_helmet.png b/src/main/resources/assets/malum/textures/item/malignant_stronghold_helmet.png new file mode 100644 index 0000000000000000000000000000000000000000..37a7a037c77f998641d62b0d5425fb8f313de71d GIT binary patch literal 447 zcmV;w0YLtVP)Wzc0mY)pZb}hX{RU-0~XaWyiu)T zxPRk1!?G=F7@~Y2nqX{24NV4-+bs-DaZQ*8ILfd8zwhh^hSR$Z8BSfk%n%+LhT?*i zt5-3Y>FP3=x}IlnG8SOi|1c2M3n0}XLso6@Vt^}lRtFn$dhboRpxCNt zvVGz7xnN03?AUo2N{0F%UmKGa2p*tOkHIp5A*CYzWLiQ)hLsL3j<=x@k7t zMv#-=z5N2_3kmapy##ZSw_hrD7c}ITfNfp5dKFmXlJ$$gbWC6zm<|sO1AC=mVh^SP z7MiaAEsV^;0R;jxm-I4ReslrsMO`_A|LHNsU~y0YpE!4t;l%absDTKQ1Q{a4FAi4t z_}LW{17xLiz~b*dzJzN=i3MZ>K#IP8eT`xOH@7GQ$Z(XW` h{mcZjkysi4ngyp3Dg(i800000NkvXXu0mjf005R%p{f7? literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/item/weight_of_worlds.png b/src/main/resources/assets/malum/textures/item/weight_of_worlds.png index 844c2309a0c015296e120a37922603db3a5960c5..05adf973cee92bd461b92ceeacab3a285b419d7c 100644 GIT binary patch delta 440 zcmV;p0Z0Db1Kk6VFMqr&V*aB`Z#%Js5m^j{gDe5kym0zlu#kxKKQL`+@5gZB`fkDo zz%<{#ah<``Ssko->V!26cOKqk*n4;j!{tX8;D%th0Hk^Arr8Xq_ugbs)X)TLZtZDi zP?1+>ICbtU!})6ma2o*A46-deGz_eHGN2d$3N%=N#m7}L2nq9mZAK0UkRi*qtN|N%;@nA8 z13-QU0gz@G02xwUQVTY?u&|Zk*4+nSshbZ@Gu(Y~6VnTNCYE3YvQjz>YRU?5gFr3; z0g&y;F@fR*kbeSLLeZ5o`0s4%1J(qy)yv5p%tww+tO*IE8RPgY+u;JaO(15xFHxW0BPQ|aVEp=t4|rUEp3=eN#XFxFk6lkyjOGvI_P|&gf+l(9zAVZGsI14uL;Kuo= z27vqy0wB#W05T*s-3@GTL+>VrbBDHqrS4xm&T!@7WlS%a>)C-7h%0I`7}YTX5bYRgFD;U z*#{gpFjt@$;9wg7PP+1{nha<6ZUOsIM_%{8qP``=%lp^C(FWp!3<1ReC{@A@0BHtk z1ev~eat&BBEC4_*LQZ`!i{J);1QJWz!0|k}stF##@G%g?!vNa?GXPs!Cu9iN0FV=5 i3Xz>kNHa(t070eDsi5^wvj6}907*qoM6N<$f&c)~uD(71 diff --git a/src/main/resources/assets/malum/textures/item/weight_of_worlds_huge.png b/src/main/resources/assets/malum/textures/item/weight_of_worlds_huge.png index 971304dc7b0028190c08185d732a967187d738a4..8cd93e434e4a5f620eb8e9abeab9a7de06321c56 100644 GIT binary patch delta 1004 zcmVB9dML|Bwk*wvwbpQM8FczGnPJ&t-P^-n+Xk z+j+UWckayh&3C?YW;`l}D9A6F3H^NX*Y}`Ty(7;&F)XQ~{(l(oM-Og>tsVF>&w96~ zxKKeLKYOPpn!I?q9(&x|;fNCz0Rb1VlvRK9!Y25snrao83MdrG&)KThrh8|>d!EKe zK)?r{`}KmkJG`p0vR+O8{2inQ;6%apT`JG#Q&-z=snLnIS`oLDxDEo|cD+@7d_NKf zo|m)5TDO1j)qkuaQvt>I^-UKv!MF&xfgdX?5871!@URjR%?*v3Fz=Ax3_CB_D&Pdp zV#S3;dQBvj5H%o?ylj#6&6;)DmU?xUn{2%hM!*dmV@ZA`=R(5FJtT;hmRcp=F$qXH zqeu_|0hdK_JBA~~)n>jaODX}$0T2?M-CbG*3@g=Ac7LQoR|rwEuhgmzTLMyM0`5cr z!1J_(sU^ z>>ccjo`Bg@0AT00@7}Rop0XrGlaTl@;SVw^o`4j=JlQ?}Z51G|vI7CX(b23{uiU65 zW(T8V+Wa2wc0=r56Q!_|uTp<9SD)2Nb7EAUT9d z2Z1LbK|o4mwdBThrM!+P&jrD)zUPuJ>0hC~XQcQI2 ag}`4kai2f-wJ4kb0000%C=B!9+9L_t(oN4=I?NK{c2hWEUMlvqj;LZ)FbmIOsnlwB#J@bb`$ zSdnxQsW1v(G(@C)i6Su(yI@ozL4=ozFzjYG3WKm5NYH$cD6*m=dNaNy>#%3$oVhgE zdO0)a?7jbg|Lb3CZ=Z=H@(T`3gbx4t?Q_tphkYHsIF>Xq4}S){tFt9+?Xh2foOe67 z6&nbw&npt5GiJ_~Z{1zzJ#k_ppx_FYK7E=jY=c)<)S0he#tn+BD=alx3$ta+jf-a! zBcR~--i^tEn-`^<+S6U;!{Cb`H2^1e>^oxSW+j`pGfif6C?JYNN=d|zfH$`_n8DG> z#clA7MZ27J?|*k(mEVwH{DqbtA(#+>NZ=($4+d@O)9AjyIHRnpg&OIcE+G7Pqy<-#5 zaz>FL0t&8+;&u#2sH^RKQyxALPBHs{ZNou@dTs@=IQSF@2UWK)g35!Q+1h{lj#?U z*}?0_w}0g~LH?Jn-R^h=0(`fPseOW{U5=h6gus>VfGi65%Yid%dV(i8#{=wK0|JDq;z=Mh&t7>4oLzq!35Yq>6QqQ41Ki#K zq*XD#{}TaSM9XR9&2#g1bihd=->aI>iRs+bQ_nEp(*s@#tjNuqpa-aw{k^w>!0oDt zbbtL)5^)hwa1Ij6E_CP7(&m;%-sw##;*H4OIsHFTa5u7H1oTGx`}?@@FJB|2hT*0H zJgf{CXXH*KC8wC1&wAvHr{_~@fmcr)x5q1awDC@V*BvuKn+9irS1XRTaID{b)gyB&DQAz1t^3Lr^XP)5lSbuQ79TL z?L}|JNQoM%RoXJniF3IR&CYV~cfa%fzW;e$6%?@S`&U-(qN*xZDZc&1LCBzUM&WW0 z*aA6BLFQ8o+1=cxPnz0qdRlv(5IG9`4>KR$rjt|!RGx*wA1IE0TwaD5h$z!ZuY zg7RbGI5f7j62!B*47vtAL@&Qe0c;zx&>kxj zK>3tlXlT)!8+vvc3?Xv96{Knwzu&5S5{!8hPauAarC^ z2(t zNL&&25f3W=6(pU_prAJd*nrdXQ;Jy9ha< literal 0 HcmV?d00001 diff --git a/src/main/resources/assets/malum/textures/mob_effect/silenced.png b/src/main/resources/assets/malum/textures/mob_effect/silenced.png new file mode 100644 index 0000000000000000000000000000000000000000..abdb821e0f2bd5fc68b8cba0e43844785a63b2b3 GIT binary patch literal 498 zcmVvW@=xu zayB=;z4P5UXQtKYpF&IH6!Rs26@ThX5_yRYK&*^Ohx!g}Yfa|8_>a6!%q2ZJeX^H| z;;;w^kS()F9ja27hBWsS0~EQuy2~#*C^l)JM)azt5m*2cNX@M9L98W}2^69l#BA|N zh3t9)#vqZio3B&X=}{-&Ulf%{Kc2NqdVnow?^!(k&`z7E2LXVK^$hwI7loND*JIyl3vt z!uw#zzSUwNq>4;DCn|!p_#r&wMnqQMAQ=l81zdXJTt_Qv^GLDyvH zupb{vkramDT;vlG7$o%O12QsetkNWdSNMmEFo;r#*pT>W0YhTg^sr}WNF0)=ND=^Z o)X!9>1tvMZpZY)gld$5&H{F9BB9IR)od5s;07*qoM6N<$f~_9f2mk;8 literal 0 HcmV?d00001