package com.atsuishio.superbwarfare.item; import com.atsuishio.superbwarfare.init.ModItems; import net.minecraft.tags.BlockTags; import net.minecraft.tags.TagKey; import net.minecraft.world.item.ItemStack; import net.minecraft.world.item.Items; import net.minecraft.world.item.SwordItem; import net.minecraft.world.item.Tier; import net.minecraft.world.item.crafting.Ingredient; import net.minecraft.world.level.block.Block; import net.neoforged.bus.api.SubscribeEvent; import net.neoforged.fml.common.EventBusSubscriber; import net.neoforged.neoforge.event.entity.player.PlayerEvent; import org.jetbrains.annotations.NotNull; @EventBusSubscriber(bus = EventBusSubscriber.Bus.GAME) public class Hammer extends SwordItem { public static final Tier TIER = new Tier() { public int getUses() { return 400; } public float getSpeed() { return 4f; } public float getAttackDamageBonus() { return 8f; } @Override public @NotNull TagKey getIncorrectBlocksForDrops() { return BlockTags.INCORRECT_FOR_IRON_TOOL; } public int getLevel() { return 1; } public int getEnchantmentValue() { return 9; } public @NotNull Ingredient getRepairIngredient() { return Ingredient.of(new ItemStack(Items.IRON_INGOT)); } }; public Hammer() { super(TIER, new Properties().attributes(SwordItem.createAttributes(TIER, 3, -3.2f)).stacksTo(1)); } @Override public boolean hasCraftingRemainingItem(@NotNull ItemStack stack) { return true; } @Override public @NotNull ItemStack getCraftingRemainingItem(ItemStack itemstack) { ItemStack stack = new ItemStack(this); stack.setDamageValue(itemstack.getDamageValue() + 1); if (stack.getDamageValue() >= stack.getMaxDamage()) { return ItemStack.EMPTY; } return stack; } @Override public boolean isRepairable(@NotNull ItemStack itemstack) { return true; } @SubscribeEvent public static void onItemCrafted(PlayerEvent.ItemCraftedEvent event) { var item = event.getCrafting(); var container = event.getInventory(); var player = event.getEntity(); if (player.level().isClientSide) return; if (item.is(ModItems.HAMMER.get())) { int count = 0; for (int i = 0; i < container.getContainerSize(); i++) { if (container.getItem(i).is(ModItems.HAMMER.get())) count++; } if (count == 2) { container.clearContent(); } } } }