57 lines
2.2 KiB
Java
57 lines
2.2 KiB
Java
package io.github.skippyall.minions;
|
|
|
|
import eu.pb4.polymer.core.api.item.PolymerItem;
|
|
import eu.pb4.polymer.core.api.item.PolymerItemUtils;
|
|
import io.github.skippyall.minions.fakeplayer.MinionFakePlayer;
|
|
import net.fabricmc.fabric.api.item.v1.FabricItemSettings;
|
|
import net.minecraft.network.chat.ComponentContents;
|
|
import net.minecraft.network.chat.contents.PlainTextContents;
|
|
import net.minecraft.server.level.ServerLevel;
|
|
import net.minecraft.server.level.ServerPlayer;
|
|
import net.minecraft.world.InteractionResult;
|
|
import net.minecraft.world.item.Item;
|
|
import net.minecraft.world.item.ItemStack;
|
|
import net.minecraft.world.item.Items;
|
|
import net.minecraft.world.item.TooltipFlag;
|
|
import net.minecraft.world.item.context.UseOnContext;
|
|
import org.jetbrains.annotations.Nullable;
|
|
|
|
public class MinionItem extends Item implements PolymerItem {
|
|
public MinionItem() {
|
|
super(new FabricItemSettings());
|
|
}
|
|
|
|
@Override
|
|
public Item getPolymerItem(ItemStack itemStack, @Nullable ServerPlayer player) {
|
|
return Items.PLAYER_HEAD;
|
|
}
|
|
|
|
@Override
|
|
public ItemStack getPolymerItemStack(ItemStack stack, TooltipFlag flag, ServerPlayer player) {
|
|
ItemStack out = PolymerItemUtils.createItemStack(stack, flag, player);
|
|
//CompoundTag tag = out.getOrCreateTag();
|
|
//PlayerHeadItem.TAG_SKULL_OWNER;
|
|
return out;
|
|
}
|
|
|
|
/*@Override
|
|
public int getPolymerCustomModelData(ItemStack itemStack, @Nullable ServerPlayer player) {
|
|
return 10;
|
|
}*/
|
|
|
|
public InteractionResult useOn(UseOnContext context) {
|
|
System.out.println("Minion spawned "+ context.getItemInHand().getDisplayName());
|
|
ComponentContents contents = context.getItemInHand().getHoverName().getContents();
|
|
String name;
|
|
if(contents instanceof PlainTextContents plainContents) {
|
|
name = plainContents.text();
|
|
} else {
|
|
name = "Minion";
|
|
}
|
|
if(!context.getLevel().isClientSide) {
|
|
MinionFakePlayer.createMinion(name, (ServerLevel) context.getLevel(), (ServerPlayer) context.getPlayer(), context.getClickedPos().getCenter().add(0,0.5,0), 0, 0);
|
|
}
|
|
return InteractionResult.SUCCESS;
|
|
}
|
|
}
|