93 lines
2.7 KiB
Java
93 lines
2.7 KiB
Java
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<Block> 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();
|
|
}
|
|
}
|
|
}
|
|
}
|