Skip to content

Commit

Permalink
added battle mage armor
Browse files Browse the repository at this point in the history
  • Loading branch information
CammiePone committed Jan 2, 2024
1 parent c93c36a commit f68889a
Show file tree
Hide file tree
Showing 16 changed files with 185 additions and 18 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -4,13 +4,14 @@
import com.google.common.collect.ImmutableMultimap;
import com.google.common.collect.Multimap;
import dev.cammiescorner.arcanuscontinuum.api.entities.ArcanusEntityAttributes;
import dev.cammiescorner.arcanuscontinuum.common.registry.ArcanusComponents;
import net.minecraft.block.cauldron.CauldronBehavior;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EquipmentSlot;
import net.minecraft.entity.LivingEntity;
import net.minecraft.entity.attribute.EntityAttribute;
import net.minecraft.entity.attribute.EntityAttributeModifier;
import net.minecraft.entity.attribute.EntityAttributes;
import net.minecraft.entity.player.PlayerEntity;
import net.minecraft.item.ArmorMaterial;
import net.minecraft.item.DyeableArmorItem;
import net.minecraft.item.ItemStack;
Expand All @@ -33,6 +34,7 @@ public class WizardArmorItem extends DyeableArmorItem {

public WizardArmorItem(ArmorMaterial armorMaterial, ArmorSlot equipmentSlot, double manaRegen, double magicResist, double spellPotency) {
super(armorMaterial, equipmentSlot, new QuiltItemSettings().maxCount(1));

this.attributeModifiers = Suppliers.memoize(() -> {
UUID modifierID = MODIFIER_IDS.get(equipmentSlot);
return ImmutableMultimap.<EntityAttribute, EntityAttributeModifier>builder()
Expand All @@ -50,10 +52,9 @@ public WizardArmorItem(ArmorMaterial armorMaterial, ArmorSlot equipmentSlot, dou
@Override
public void inventoryTick(ItemStack stack, World world, Entity entity, int slot, boolean selected) {
super.inventoryTick(stack, world, entity, slot, selected);
NbtCompound tag = stack.getOrCreateSubNbt("display");

if (!world.isClient() && entity instanceof PlayerEntity player && player.getUuidAsString().equals("1b44461a-f605-4b29-a7a9-04e649d1981c") && !tag.contains("color", 99))
tag.putInt("color", 0xff005a);
if(!world.isClient() && stack.isDamaged() && entity instanceof LivingEntity livingEntity && ArcanusComponents.drainMana(livingEntity, 1, false))
stack.setDamage(stack.getDamage() - 1);
}

@Override
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,13 @@ public enum ArcanusArmourMaterials implements StringIdentifiable, ArmorMaterial
map.put(ArmorItem.ArmorSlot.LEGGINGS, 2);
map.put(ArmorItem.ArmorSlot.CHESTPLATE, 3);
map.put(ArmorItem.ArmorSlot.HELMET, 1);
}), 25, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0.0F, 0.0F, () -> Ingredient.ofItems(Items.LEATHER));
}), 25, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0f, 0f, () -> Ingredient.ofItems(Items.LEATHER)),
BATTLE_MAGE("battle_mage", 35, Util.make(new EnumMap<>(ArmorItem.ArmorSlot.class), (map) -> {
map.put(ArmorItem.ArmorSlot.BOOTS, 2);
map.put(ArmorItem.ArmorSlot.LEGGINGS, 5);
map.put(ArmorItem.ArmorSlot.CHESTPLATE, 6);
map.put(ArmorItem.ArmorSlot.HELMET, 3);
}), 25, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0f, 0f, () -> Ingredient.ofItems(Items.AMETHYST_SHARD));

public static final Codec<ArmorMaterials> CODEC = StringIdentifiable.createCodec(ArmorMaterials::values);
private static final EnumMap<ArmorItem.ArmorSlot, Integer> BASE_DURABILITY_VALUES = Util.make(new EnumMap<>(ArmorItem.ArmorSlot.class), (map) -> {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,18 +1,21 @@
package dev.cammiescorner.arcanuscontinuum.common.registry;

import dev.cammiescorner.arcanuscontinuum.Arcanus;
import dev.cammiescorner.arcanuscontinuum.common.items.ScrollOfKnowledgeItem;
import dev.cammiescorner.arcanuscontinuum.common.items.SpellBookItem;
import dev.cammiescorner.arcanuscontinuum.common.items.StaffItem;
import dev.cammiescorner.arcanuscontinuum.common.items.WizardArmorItem;
import dev.cammiescorner.arcanuscontinuum.common.items.*;
import dev.cammiescorner.arcanuscontinuum.common.util.StaffType;
import dev.upcraft.sparkweave.api.registry.RegistryHandler;
import dev.upcraft.sparkweave.api.registry.RegistrySupplier;
import net.fabricmc.fabric.api.itemgroup.v1.FabricItemGroup;
import net.minecraft.item.*;
import net.minecraft.registry.RegistryKeys;
import net.minecraft.text.MutableText;
import net.minecraft.text.Text;
import net.minecraft.text.component.TranslatableComponent;
import net.minecraft.util.Formatting;
import org.quiltmc.qsl.item.setting.api.QuiltItemSettings;

import java.util.List;

public class ArcanusItems {

public static final RegistryHandler<ItemGroup> ITEM_GROUPS = RegistryHandler.create(RegistryKeys.ITEM_GROUP, Arcanus.MOD_ID);
Expand All @@ -28,10 +31,17 @@ public class ArcanusItems {
public static final RegistrySupplier<Item> MIND_STAFF = ITEMS.register("mind_staff", () -> new StaffItem(StaffType.STAFF, 0xffffff, 0xffffff, true));
public static final RegistrySupplier<Item> MAGIC_TOME = ITEMS.register("magic_tome", () -> new StaffItem(StaffType.BOOK, 0x8b4513, 0x1e1b1b, true));
public static final RegistrySupplier<Item> MAGE_PISTOL = ITEMS.register("mage_pistol", () -> new StaffItem(StaffType.GUN, 0xffffff, 0xffffff, true));
public static final RegistrySupplier<Item> WIZARD_HAT = ITEMS.register("wizard_hat", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.HELMET, 1, 0.15, 0.1));
public static final RegistrySupplier<Item> WIZARD_ROBES = ITEMS.register("wizard_robes", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.CHESTPLATE, 2, 0.2, 0.18));
public static final RegistrySupplier<Item> WIZARD_PANTS = ITEMS.register("wizard_pants", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.LEGGINGS, 2, 0.18, 0.14));
public static final RegistrySupplier<Item> WIZARD_BOOTS = ITEMS.register("wizard_boots", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.BOOTS, 1, 0.12, 0.08));

public static final RegistrySupplier<Item> WIZARD_HAT = ITEMS.register("wizard_hat", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.HELMET, 1.5, 0.15, 0.2));
public static final RegistrySupplier<Item> WIZARD_ROBES = ITEMS.register("wizard_robes", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.CHESTPLATE, 1.5, 0.15, 0.4));
public static final RegistrySupplier<Item> WIZARD_PANTS = ITEMS.register("wizard_pants", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.LEGGINGS, 1.5, 0.15, 0.3));
public static final RegistrySupplier<Item> WIZARD_BOOTS = ITEMS.register("wizard_boots", () -> new WizardArmorItem(ArcanusArmourMaterials.WIZARD, ArmorItem.ArmorSlot.BOOTS, 1.5, 0.15, 0.1));
public static final RegistrySupplier<Item> BATTLE_MAGE_HELMET = ITEMS.register("battle_mage_helmet", () -> new WizardArmorItem(ArcanusArmourMaterials.BATTLE_MAGE, ArmorItem.ArmorSlot.HELMET, 0.5, 0.1, 0.1));
public static final RegistrySupplier<Item> BATTLE_MAGE_CHESTPLATE = ITEMS.register("battle_mage_chestplate", () -> new WizardArmorItem(ArcanusArmourMaterials.BATTLE_MAGE, ArmorItem.ArmorSlot.CHESTPLATE, 0.5, 0.1, 0.2));
public static final RegistrySupplier<Item> BATTLE_MAGE_LEGGINGS = ITEMS.register("battle_mage_leggings", () -> new WizardArmorItem(ArcanusArmourMaterials.BATTLE_MAGE, ArmorItem.ArmorSlot.LEGGINGS, 0.5, 0.1, 0.15));
public static final RegistrySupplier<Item> BATTLE_MAGE_BOOTS = ITEMS.register("battle_mage_boots", () -> new WizardArmorItem(ArcanusArmourMaterials.BATTLE_MAGE, ArmorItem.ArmorSlot.BOOTS, 0.5, 0.1, 0.05));

public static final RegistrySupplier<Item> BATTLE_MAGE_UPGRADE_SMITHING_TEMPLATE = ITEMS.register("battle_mage_upgrade_smithing_template", ArcanusItems::getBattleMageUpgrade);
public static final RegistrySupplier<Item> SPELL_BOOK = ITEMS.register("spell_book", SpellBookItem::new);
public static final RegistrySupplier<Item> SCROLL_OF_KNOWLEDGE = ITEMS.register("scroll_of_knowledge", ScrollOfKnowledgeItem::new);
public static final RegistrySupplier<Item> WIZARD_SPAWN_EGG = ITEMS.register("wizard_spawn_egg", () -> new SpawnEggItem(ArcanusEntities.WIZARD.get(), 0x52392a, 0xffd87c, new QuiltItemSettings()));
Expand All @@ -51,7 +61,7 @@ public class ArcanusItems {
entries.addItem(CRESCENT_STAFF.get());
entries.addItem(ANCIENT_STAFF.get());

if (Arcanus.isCurrentPlayerSupporter()) {
if(Arcanus.isCurrentPlayerSupporter()) {
entries.addItem(WAND.get());
entries.addItem(THAUMATURGES_GAUNTLET.get());
entries.addItem(MIND_STAFF.get());
Expand All @@ -63,7 +73,29 @@ public class ArcanusItems {
entries.addItem(WIZARD_ROBES.get());
entries.addItem(WIZARD_PANTS.get());
entries.addItem(WIZARD_BOOTS.get());
entries.addItem(BATTLE_MAGE_HELMET.get());
entries.addItem(BATTLE_MAGE_CHESTPLATE.get());
entries.addItem(BATTLE_MAGE_LEGGINGS.get());
entries.addItem(BATTLE_MAGE_BOOTS.get());
entries.addItem(BATTLE_MAGE_UPGRADE_SMITHING_TEMPLATE.get());

entries.addItem(WIZARD_SPAWN_EGG.get());
entries.addItem(OPOSSUM_SPAWN_EGG.get());
}).build());

private static MutableText smithingTemplateText(String upgradeType, String desc) {
return Arcanus.translate("item", "smithing_template", upgradeType, desc);
}

private static SmithingTemplateItem getBattleMageUpgrade() {
return new SmithingTemplateItem(
smithingTemplateText("battle_mage_upgrade", "applies_to").formatted(Formatting.BLUE),
smithingTemplateText("battle_mage_upgrade", "ingredients").formatted(Formatting.BLUE),
Arcanus.translate("upgrade", "battle_mage_upgrade").formatted(Formatting.GRAY),
smithingTemplateText("battle_mage_upgrade", "base_slot_description"),
smithingTemplateText("battle_mage_upgrade", "additions_slot_description"),
SmithingTemplateItem.getArmorIcons(),
List.of(SmithingTemplateItem.AMETHYST_ICON)
);
}
}
10 changes: 6 additions & 4 deletions src/main/resources/arcanuscontinuum.accesswidener
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,9 @@ accessible class net/minecraft/client/render/RenderLayer$MultiPhasePar
accessible class net/minecraft/client/render/RenderPhase$Texture
accessible class net/minecraft/client/render/RenderPhase$OffsetTexturing
accessible class net/minecraft/client/world/ClientChunkManager$ClientChunkMap
accessible field net/minecraft/entity/mob/CreeperEntity CHARGED Lnet/minecraft/entity/data/TrackedData;
accessible field net/minecraft/client/world/ClientChunkManager chunks Lnet/minecraft/client/world/ClientChunkManager$ClientChunkMap;
accessible field net/minecraft/client/world/ClientChunkManager$ClientChunkMap chunks Ljava/util/concurrent/atomic/AtomicReferenceArray;
extendable method net/minecraft/entity/mob/AbstractSkeletonEntity getStepSound ()Lnet/minecraft/sound/SoundEvent;
accessible field net/minecraft/item/SmithingTemplateItem AMETHYST_ICON Lnet/minecraft/util/Identifier;
accessible field net/minecraft/entity/mob/CreeperEntity CHARGED Lnet/minecraft/entity/data/TrackedData;
accessible field net/minecraft/client/world/ClientChunkManager chunks Lnet/minecraft/client/world/ClientChunkManager$ClientChunkMap;
accessible field net/minecraft/client/world/ClientChunkManager$ClientChunkMap chunks Ljava/util/concurrent/atomic/AtomicReferenceArray;
extendable method net/minecraft/entity/mob/AbstractSkeletonEntity getStepSound ()Lnet/minecraft/sound/SoundEvent;
accessible method net/minecraft/item/SmithingTemplateItem getArmorIcons ()Ljava/util/List;
10 changes: 10 additions & 0 deletions src/main/resources/assets/arcanuscontinuum/lang/en_us.json
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,16 @@
"item.arcanuscontinuum.wizard_robes": "Wizard Robes",
"item.arcanuscontinuum.wizard_pants": "Wizard Pants",
"item.arcanuscontinuum.wizard_boots": "Wizard Boots",
"item.arcanuscontinuum.battle_mage_helmet": "Battle Mage Helmet",
"item.arcanuscontinuum.battle_mage_chestplate": "Battle Mage Chestplate",
"item.arcanuscontinuum.battle_mage_leggings": "Battle Mage Leggings",
"item.arcanuscontinuum.battle_mage_boots": "Battle Mage Boots",
"item.arcanuscontinuum.battle_mage_upgrade_smithing_template": "Smithing Template",
"upgrade.arcanuscontinuum.battle_mage_upgrade": "Battle Mage Upgrade",
"item.arcanuscontinuum.smithing_template.battle_mage_upgrade.applies_to": "Iron Armor",
"item.arcanuscontinuum.smithing_template.battle_mage_upgrade.ingredients": "Amethyst Shard",
"item.arcanuscontinuum.smithing_template.battle_mage_upgrade.base_slot_description": "Add iron armor",
"item.arcanuscontinuum.smithing_template.battle_mage_upgrade.additions_slot_description": "Add Amethyst Shard",
"item.arcanuscontinuum.spell_book": "Spell Book",
"item.arcanuscontinuum.scroll_of_knowledge": "Scroll of Knowledge",
"item.arcanuscontinuum.wizard_spawn_egg": "Wizard Spawn Egg",
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"parent": "minecraft:item/generated",
"textures": {
"layer0": "arcanuscontinuum:item/battle_mage_upgrade_smithing_template"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
{
"exhaustion": 0.0,
"message_id": "arcanuscontinuum.magic",
"scaling": "when_caused_by_living_non_player"
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
{
"type": "minecraft:crafting_shaped",
"category": "misc",
"key": {
"#": {
"item": "minecraft:amethyst_shard"
},
"C": {
"item": "minecraft:smooth_basalt"
},
"S": {
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
}
},
"pattern": [
"#S#",
"#C#",
"###"
],
"result": {
"count": 2,
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
},
"show_notification": true
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "minecraft:amethyst_shard"
},
"base": {
"item": "minecraft:iron_boots"
},
"result": {
"item": "arcanuscontinuum:battle_mage_boots"
},
"template": {
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "minecraft:amethyst_shard"
},
"base": {
"item": "minecraft:iron_chestplate"
},
"result": {
"item": "arcanuscontinuum:battle_mage_chestplate"
},
"template": {
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "minecraft:amethyst_shard"
},
"base": {
"item": "minecraft:iron_helmet"
},
"result": {
"item": "arcanuscontinuum:battle_mage_helmet"
},
"template": {
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,15 @@
{
"type": "minecraft:smithing_transform",
"addition": {
"item": "minecraft:amethyst_shard"
},
"base": {
"item": "minecraft:iron_leggings"
},
"result": {
"item": "arcanuscontinuum:battle_mage_leggings"
},
"template": {
"item": "arcanuscontinuum:battle_mage_upgrade_smithing_template"
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"arcanuscontinuum:magic",
"arcanuscontinuum:magic_projectile"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"replace": false,
"values": [
"arcanuscontinuum:magic_projectile"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"replace": false,
"values": [
"arcanuscontinuum:magic",
"arcanuscontinuum:magic_projectile"
]
}

0 comments on commit f68889a

Please sign in to comment.