8 avr. 2020, 16:13

Bonjour,
Je n’arrive pas à créer un item qui quand un zombie me tape avec une épée qui a un certain enchantement, il y ai le pseudo de la personne tapée dans le tooltip ; avec ce que j’ai trouvé, j’ai essayé de faire quelque chose mais il me give pas l’item 😞

Voici ma classe de l’item :

public class ItemPersonalGem extends Item
{
    public static String owner;

    public ItemPersonalGem()
    {
        super(new Properties().group(Group.MOD));
        setRegistryName("personal_gem");
    }

    @Override
    public void addInformation(ItemStack stack, @Nullable World world, List<ITextComponent> tooltip, ITooltipFlag flag)
    {
        tooltip.add(new StringTextComponent(ChatFormatting.GRAY + "Contains part of the soul of " + NBT(new ItemStack(this))));
    }

    public static String NBT(ItemStack stack)
    {
        if (owner == null)
        {
            owner = "No Owner";
        }

        CompoundNBT nbt = new CompoundNBT();
        nbt.putString("owner", owner);
        stack.setTag(nbt);

        return stack.getTag().getString("owner");
    }
}

et celle de mon enchant :

public class EnchantmentPersonalDamage extends Enchantment
{
    protected EnchantmentPersonalDamage()
    {
        super(Rarity.RARE, EnchantmentType.WEAPON, EquipmentSlotType.values());
        setRegistryName("personal_damage");
    }

    @Override
    public void onEntityDamaged(LivingEntity user, Entity target, int level)
    {
        ItemPersonalGem.owner = target.getDisplayName().getString();

        if (target instanceof PlayerEntity)
        {
            ((PlayerEntity) target).inventory.addItemStackToInventory(new ItemStack(Items.PERSONAL_GEM));
        }
    }
}

PS : Au fait, “contains part of the soul of”, c’est bon ou il y a une erreur ?