Skip to content

Commit

Permalink
add armor and tool item tags
Browse files Browse the repository at this point in the history
  • Loading branch information
Cheaterpaul committed Feb 6, 2025
1 parent 2f93084 commit 075c1bd
Show file tree
Hide file tree
Showing 15 changed files with 88 additions and 5 deletions.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"values": [
"vampirism:vampire_slayer",
"vampirism:arrow_frugality"
]
}
7 changes: 7 additions & 0 deletions src/generated/resources/data/minecraft/tags/item/axes.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
{
"values": [
"vampirism:hunter_axe_normal",
"vampirism:hunter_axe_enhanced",
"vampirism:hunter_axe_ultimate"
]
}
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,8 @@
"vampirism:armor_of_swiftness_head_enhanced",
"vampirism:armor_of_swiftness_head_ultimate",
"vampirism:vampire_clothing_crown",
"vampirism:vampire_clothing_hat"
"vampirism:vampire_clothing_hat",
"vampirism:hunter_hat_head_0",
"vampirism:hunter_hat_head_1"
]
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,12 @@
{
"values": [
"minecraft:punch",
"minecraft:power",
"minecraft:infinity",
"minecraft:punch",
"minecraft:power",
"minecraft:infinity",
"minecraft:punch",
"minecraft:power"
]
}
4 changes: 4 additions & 0 deletions src/main/java/de/teamlapen/vampirism/core/ModTags.java
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,10 @@ public static class Effects {
public static class Enchantments {
public static final TagKey<Enchantment> CROSSBOW_INCOMPATIBLE = tag("crossbow_incompatible");

public static final TagKey<Enchantment> TECH_CROSSBOW = tag("tech_crossbow");
public static final TagKey<Enchantment> SINGLE_CROSSBOW = tag("tech_crossbow");
public static final TagKey<Enchantment> DOUBLE_CROSSBOW = tag("tech_crossbow");

private static @NotNull TagKey<Enchantment> tag(@NotNull String name) {
return TagKey.create(Registries.ENCHANTMENT, mod(name));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -274,6 +274,7 @@ protected void addTags(HolderLookup.@NotNull Provider holderProvider) {
tag(ItemTags.SWORDS).addTags(ModTags.Items.HEART_STRIKER, ModTags.Items.HEART_SEEKER);
tag(ModTags.Items.VAMPIRE_SLAYER_ITEMS).addTag(ItemTags.SWORDS).add(ModItems.PITCHFORK.get());
tag(ItemTags.SHARP_WEAPON_ENCHANTABLE).add(ModItems.PITCHFORK.get());
tag(ItemTags.AXES).add(ModItems.HUNTER_AXE_NORMAL.get(), ModItems.HUNTER_AXE_ENHANCED.get(), ModItems.HUNTER_AXE_ULTIMATE.get());
tag(ModTags.Items.CROSSBOW_ENCHANTABLE).addTag(ModTags.Items.CROSSBOWS);
tag(ModTags.Items.CROSSBOWS).addTags(ModTags.Items.BASIC_CROSSBOWS, ModTags.Items.ENHANCED_CROSSBOWS, ModTags.Items.SINGLE_CROSSBOWS, ModTags.Items.DOUBLE_CROSSBOWS, ModTags.Items.TECH_CROSSBOWS);
tag(ModTags.Items.BASIC_CROSSBOWS).add(ModItems.BASIC_CROSSBOW.get(), ModItems.BASIC_DOUBLE_CROSSBOW.get(), ModItems.BASIC_TECH_CROSSBOW.get());
Expand All @@ -290,7 +291,7 @@ protected void addTags(HolderLookup.@NotNull Provider holderProvider) {
tag(ModTags.Items.HUNTER_COAT_NORMAL).add(ModItems.HUNTER_COAT_HEAD_NORMAL.get(), ModItems.HUNTER_COAT_CHEST_NORMAL.get(), ModItems.HUNTER_COAT_LEGS_NORMAL.get(), ModItems.HUNTER_COAT_FEET_NORMAL.get());
tag(ModTags.Items.HUNTER_COAT_ENHANCED).add(ModItems.HUNTER_COAT_HEAD_ENHANCED.get(), ModItems.HUNTER_COAT_CHEST_ENHANCED.get(), ModItems.HUNTER_COAT_LEGS_ENHANCED.get(), ModItems.HUNTER_COAT_FEET_ENHANCED.get());
tag(ModTags.Items.HUNTER_COAT_ULTIMATE).add(ModItems.HUNTER_COAT_HEAD_ULTIMATE.get(), ModItems.HUNTER_COAT_CHEST_ULTIMATE.get(), ModItems.HUNTER_COAT_LEGS_ULTIMATE.get(), ModItems.HUNTER_COAT_FEET_ULTIMATE.get());
tag(ItemTags.HEAD_ARMOR).add(ModItems.HUNTER_COAT_HEAD_NORMAL.get(), ModItems.HUNTER_COAT_HEAD_ENHANCED.get(), ModItems.HUNTER_COAT_HEAD_ULTIMATE.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_NORMAL.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_ENHANCED.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_ULTIMATE.get(), ModItems.VAMPIRE_CLOTHING_CROWN.get(), ModItems.VAMPIRE_CLOTHING_HAT.get());
tag(ItemTags.HEAD_ARMOR).add(ModItems.HUNTER_COAT_HEAD_NORMAL.get(), ModItems.HUNTER_COAT_HEAD_ENHANCED.get(), ModItems.HUNTER_COAT_HEAD_ULTIMATE.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_NORMAL.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_ENHANCED.get(), ModItems.ARMOR_OF_SWIFTNESS_HEAD_ULTIMATE.get(), ModItems.VAMPIRE_CLOTHING_CROWN.get(), ModItems.VAMPIRE_CLOTHING_HAT.get(), ModItems.HUNTER_HAT_HEAD_0.get(), ModItems.HUNTER_HAT_HEAD_1.get());
tag(ItemTags.CHEST_ARMOR).add(ModItems.HUNTER_COAT_CHEST_NORMAL.get(), ModItems.HUNTER_COAT_CHEST_ENHANCED.get(), ModItems.HUNTER_COAT_CHEST_ULTIMATE.get(), ModItems.ARMOR_OF_SWIFTNESS_CHEST_NORMAL.get(), ModItems.ARMOR_OF_SWIFTNESS_CHEST_ENHANCED.get(), ModItems.ARMOR_OF_SWIFTNESS_CHEST_ULTIMATE.get()).addTag(ModTags.Items.VAMPIRE_CLOAK);
tag(ItemTags.LEG_ARMOR).add(ModItems.HUNTER_COAT_LEGS_NORMAL.get(), ModItems.HUNTER_COAT_LEGS_ENHANCED.get(), ModItems.HUNTER_COAT_LEGS_ULTIMATE.get(), ModItems.ARMOR_OF_SWIFTNESS_LEGS_NORMAL.get(), ModItems.ARMOR_OF_SWIFTNESS_LEGS_ENHANCED.get(), ModItems.ARMOR_OF_SWIFTNESS_LEGS_ULTIMATE.get(), ModItems.VAMPIRE_CLOTHING_LEGS.get());
tag(ItemTags.FOOT_ARMOR).add(ModItems.HUNTER_COAT_FEET_NORMAL.get(), ModItems.HUNTER_COAT_FEET_ENHANCED.get(), ModItems.HUNTER_COAT_FEET_ULTIMATE.get(), ModItems.ARMOR_OF_SWIFTNESS_FEET_NORMAL.get(), ModItems.ARMOR_OF_SWIFTNESS_FEET_ENHANCED.get(), ModItems.ARMOR_OF_SWIFTNESS_FEET_ULTIMATE.get(), ModItems.VAMPIRE_CLOTHING_BOOTS.get());
Expand Down Expand Up @@ -539,6 +540,11 @@ public ModEnchantmentProvider(PackOutput output, CompletableFuture<HolderLookup.
protected void addTags(HolderLookup.@NotNull Provider pProvider) {
this.tag(Tags.Enchantments.WEAPON_DAMAGE_ENHANCEMENTS).add(ModEnchantments.VAMPIRE_SLAYER);
this.tag(ModTags.Enchantments.CROSSBOW_INCOMPATIBLE).add(Enchantments.INFINITY);
this.tag(EnchantmentTags.NON_TREASURE).add(ModEnchantments.VAMPIRE_SLAYER, ModEnchantments.ARROW_FRUGALITY);
this.tag(ModTags.Enchantments.SINGLE_CROSSBOW).add(Enchantments.PUNCH, Enchantments.POWER, Enchantments.INFINITY);
this.tag(ModTags.Enchantments.DOUBLE_CROSSBOW).add(Enchantments.PUNCH, Enchantments.POWER, Enchantments.INFINITY);
this.tag(ModTags.Enchantments.TECH_CROSSBOW).add(Enchantments.PUNCH, Enchantments.POWER);

}
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -40,7 +40,11 @@ private static float getSpeedReduction(TIER tier) {
}

public ArmorOfSwiftnessItem(@NotNull Holder<net.minecraft.world.item.ArmorMaterial> material, @NotNull ArmorItem.Type type, @NotNull TIER tier) {
super(material, type, new Item.Properties());
super(material, type, new Item.Properties().durability(type.getDurability(switch (tier) {
case NORMAL -> 5;
case ENHANCED -> 6;
case ULTIMATE -> 7;
})));
this.tier = tier;
Supplier<ItemAttributeModifiers> defaultModifiers = ((ArmorItemAccessor) this).getDefaultModifiers();
defaultModifiers = Suppliers.compose( (ItemAttributeModifiers modifiers) -> modifiers.withModifierAdded(Attributes.MOVEMENT_SPEED, new AttributeModifier(VResourceLocation.mod("armor_modifier_" + type.getSerializedName()), getSpeedReduction(tier), AttributeModifier.Operation.ADD_MULTIPLIED_TOTAL), EquipmentSlotGroup.bySlot(type.getSlot())), defaultModifiers::get);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@
import net.minecraft.network.chat.Component;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ArmorItem;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.TooltipFlag;
import org.jetbrains.annotations.NotNull;
Expand Down Expand Up @@ -37,7 +38,11 @@ public static TIER isFullyEquipped(@NotNull Player player) {
private final @NotNull TIER tier;

public HunterCoatItem(@NotNull Holder<net.minecraft.world.item.ArmorMaterial> material, @NotNull ArmorItem.Type type, @NotNull TIER tier) {
super(material, type, new Properties());
super(material, type, new Item.Properties().durability(type.getDurability(switch (tier) {
case NORMAL -> 15;
case ENHANCED -> 20;
case ULTIMATE -> 25;
})));
this.tier = tier;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@
import net.minecraft.world.entity.Entity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.ArmorMaterial;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import org.jetbrains.annotations.NotNull;
Expand All @@ -21,7 +22,7 @@ public class HunterHatItem extends HunterArmorItem {
private final HatType type;

public HunterHatItem(HatType type, Holder<ArmorMaterial> armorMaterial) {
super(armorMaterial, Type.HELMET, new Properties());
super(armorMaterial, Type.HELMET, new Item.Properties().durability(15));
this.type = type;
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,10 @@ public RefinementItem(@NotNull Properties properties, AccessorySlotType type) {
this.type = type;
}

@Override
public int getEnchantmentValue(@NotNull ItemStack stack) {
return 10;
}

@Override
public void appendHoverText(@NotNull ItemStack stack, TooltipContext context, @NotNull List<Component> tooltip, @NotNull TooltipFlag flagIn) {
Expand Down
5 changes: 5 additions & 0 deletions src/main/java/de/teamlapen/vampirism/items/StakeItem.java
Original file line number Diff line number Diff line change
Expand Up @@ -79,4 +79,9 @@ public boolean hurtEnemy(@NotNull ItemStack stack, @NotNull LivingEntity target,

return super.hurtEnemy(stack, target, attacker);
}

@Override
public boolean isEnchantable(ItemStack pStack) {
return false;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,11 +3,15 @@
import de.teamlapen.vampirism.api.entity.player.hunter.IHunterPlayer;
import de.teamlapen.vampirism.api.entity.player.skills.ISkill;
import de.teamlapen.vampirism.api.items.IVampirismCrossbowArrow;
import de.teamlapen.vampirism.core.ModTags;
import de.teamlapen.vampirism.entity.player.hunter.skills.HunterSkills;
import net.minecraft.core.Holder;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.enchantment.Enchantment;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -37,4 +41,9 @@ protected boolean tryLoadProjectiles(LivingEntity pShooter, ItemStack pCrossbowS
var second = super.tryLoadProjectiles(pShooter, pCrossbowStack);
return first || second;
}

@Override
public boolean isPrimaryItemFor(@NotNull ItemStack stack, Holder<Enchantment> enchantment) {
return enchantment.is(ModTags.Enchantments.DOUBLE_CROSSBOW) || super.isPrimaryItemFor(stack, enchantment);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,12 @@
import de.teamlapen.vampirism.api.entity.player.hunter.IHunterPlayer;
import de.teamlapen.vampirism.api.entity.player.skills.ISkill;
import de.teamlapen.vampirism.api.items.IVampirismCrossbowArrow;
import de.teamlapen.vampirism.core.ModTags;
import net.minecraft.core.Holder;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.enchantment.Enchantment;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
Expand All @@ -28,4 +31,9 @@ public SingleCrossbowItem(Item.Properties properties, float arrowVelocity, int c
public ISkill<IHunterPlayer> getRequiredSkill(@Nonnull ItemStack stack) {
return null;
}

@Override
public boolean isPrimaryItemFor(@NotNull ItemStack stack, Holder<Enchantment> enchantment) {
return enchantment.is(ModTags.Enchantments.SINGLE_CROSSBOW) || super.isPrimaryItemFor(stack, enchantment);
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -4,17 +4,21 @@
import de.teamlapen.vampirism.api.entity.player.skills.ISkill;
import de.teamlapen.vampirism.api.items.IArrowContainer;
import de.teamlapen.vampirism.core.ModDataComponents;
import de.teamlapen.vampirism.core.ModTags;
import de.teamlapen.vampirism.entity.player.hunter.skills.HunterSkills;
import de.teamlapen.vampirism.util.ModEnchantmentHelper;
import net.minecraft.core.Holder;
import net.minecraft.server.level.ServerLevel;
import net.minecraft.util.Unit;
import net.minecraft.world.entity.LivingEntity;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.item.Tier;
import net.minecraft.world.item.enchantment.Enchantment;
import net.minecraft.world.level.Level;
import net.neoforged.neoforge.common.Tags;
import org.jetbrains.annotations.NotNull;

import javax.annotation.Nonnull;
import javax.annotation.Nullable;
Expand Down Expand Up @@ -78,4 +82,9 @@ public Optional<Item> getAmmunition(ItemStack crossbow) {
return Optional.empty();
}

@Override
public boolean isPrimaryItemFor(@NotNull ItemStack stack, Holder<Enchantment> enchantment) {
return enchantment.is(ModTags.Enchantments.TECH_CROSSBOW) || super.isPrimaryItemFor(stack, enchantment);
}

}
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import de.teamlapen.vampirism.util.ModEnchantmentHelper;
import net.minecraft.ChatFormatting;
import net.minecraft.advancements.CriteriaTriggers;
import net.minecraft.core.Holder;
import net.minecraft.core.Registry;
import net.minecraft.core.component.DataComponents;
import net.minecraft.core.registries.Registries;
Expand Down

0 comments on commit 075c1bd

Please sign in to comment.