// Generated by delombok at Fri Oct 24 23:16:37 UTC 2025
package net.md_5.bungee.api.chat.hover.content;

import net.md_5.bungee.api.chat.HoverEvent;
import net.md_5.bungee.api.chat.ItemTag;

public class Item extends Content {
    /**
     * Namespaced item ID. Will use 'minecraft:air' if null.
     */
    private String id;
    /**
     * Optional. Size of the item stack.
     */
    private int count = -1;
    /**
     * Optional. Item tag.
     */
    private ItemTag tag;

    @Override
    public HoverEvent.Action requiredAction() {
        return HoverEvent.Action.SHOW_ITEM;
    }

    /**
     * Namespaced item ID. Will use 'minecraft:air' if null.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public String getId() {
        return this.id;
    }

    /**
     * Optional. Size of the item stack.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public int getCount() {
        return this.count;
    }

    /**
     * Optional. Item tag.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public ItemTag getTag() {
        return this.tag;
    }

    /**
     * Namespaced item ID. Will use 'minecraft:air' if null.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public void setId(final String id) {
        this.id = id;
    }

    /**
     * Optional. Size of the item stack.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public void setCount(final int count) {
        this.count = count;
    }

    /**
     * Optional. Item tag.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public void setTag(final ItemTag tag) {
        this.tag = tag;
    }

    /**
     * Creates a new {@code Item} instance.
     *
     * @param id Namespaced item ID. Will use 'minecraft:air' if null.
     * @param count Optional. Size of the item stack.
     * @param tag Optional. Item tag.
     */
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public Item(final String id, final int count, final ItemTag tag) {
        this.id = id;
        this.count = count;
        this.tag = tag;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public java.lang.String toString() {
        return "Item(id=" + this.getId() + ", count=" + this.getCount() + ", tag=" + this.getTag() + ")";
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public boolean equals(final java.lang.Object o) {
        if (o == this) return true;
        if (!(o instanceof Item)) return false;
        final Item other = (Item) o;
        if (!other.canEqual((java.lang.Object) this)) return false;
        if (this.getCount() != other.getCount()) return false;
        final java.lang.Object this$id = this.getId();
        final java.lang.Object other$id = other.getId();
        if (this$id == null ? other$id != null : !this$id.equals(other$id)) return false;
        final java.lang.Object this$tag = this.getTag();
        final java.lang.Object other$tag = other.getTag();
        if (this$tag == null ? other$tag != null : !this$tag.equals(other$tag)) return false;
        return true;
    }

    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    protected boolean canEqual(final java.lang.Object other) {
        return other instanceof Item;
    }

    @java.lang.Override
    @java.lang.SuppressWarnings("all")
    @lombok.Generated
    public int hashCode() {
        final int PRIME = 59;
        int result = 1;
        result = result * PRIME + this.getCount();
        final java.lang.Object $id = this.getId();
        result = result * PRIME + ($id == null ? 43 : $id.hashCode());
        final java.lang.Object $tag = this.getTag();
        result = result * PRIME + ($tag == null ? 43 : $tag.hashCode());
        return result;
    }
}
