12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667
package net.raguraccoon.ragu_testin.item.custom;
import net.minecraft.nbt.CompoundTag;
import net.minecraft.network.chat.Component;
import net.minecraft.world.InteractionHand;
import net.minecraft.world.InteractionResultHolder;
import net.minecraft.world.entity.player.Player;
import net.minecraft.world.item.Item;
import net.minecraft.world.item.ItemStack;
import net.minecraft.world.level.Level;
import net.raguraccoon.ragu_testin.entity.ModEntities;
import net.raguraccoon.ragu_testin.entity.custom.IncinerateBall;
public class MagicWand extends Item{
public MagicWand(Properties properties) {
super(properties);
}
public static String[] spells = {"Incinerate", "Stomp", "Encourage"};
private String currentSpell;
@Override
public InteractionResultHolder<ItemStack> use(Level level, Player player, InteractionHand interactionHand) {
if (!level.isClientSide && interactionHand == InteractionHand.MAIN_HAND) {
ItemStack wand = player.getMainHandItem();
if (!wand.hasTag()) {
CompoundTag tag = new CompoundTag();
tag.putInt("ragu_testin.spell_number", 0);
wand.setTag(tag);
}
CompoundTag tag = wand.getTag();
assert tag != null;
currentSpell = spells[tag.getInt("ragu_testin.spell_number")];
switch (currentSpell) {
case "Incinerate":
incinerate(player, level);
break;
case "Stomp":
player.sendSystemMessage(Component.literal("On Stomp"));
break;
case "Encourage":
player.sendSystemMessage(Component.literal("On Encourage"));
break;
default:
player.sendSystemMessage(Component.literal("Failure"));
break;
}
}
return super.use(level, player, interactionHand);
}
private static void incinerate(Player player, Level level) {
IncinerateBall incinerateBall = new IncinerateBall(ModEntities.INCINERATE_BALL.get(), player.getX(), player.getY() + 0.8, player.getZ(), 0, 0, 0, level);
incinerateBall.shoot(player.getLookAngle().x(), player.getLookAngle().y(), player.getLookAngle().z(), 1f, 0);
level.addFreshEntity(incinerateBall);
}
private static void stomp(Player player, Level level) {
}
private static void encourage(Player player, Level level) {
}
}