All Downloads are FREE. Search and download functionalities are using the official Maven repository.

cn.nukkit.item.ItemBannerPattern Maven / Gradle / Ivy

package cn.nukkit.item;

import cn.nukkit.api.PowerNukkitOnly;
import cn.nukkit.api.PowerNukkitXOnly;
import cn.nukkit.api.Since;
import cn.nukkit.utils.BannerPattern;

@Since("1.2.1.0-PN")
public class ItemBannerPattern extends Item {
    @PowerNukkitOnly
    public static final int PATTERN_CREEPER_CHARGE = 0;

    @PowerNukkitOnly
    public static final int PATTERN_SKULL_CHARGE = 1;

    @PowerNukkitOnly
    public static final int PATTERN_FLOWER_CHARGE = 2;

    @PowerNukkitOnly
    public static final int PATTERN_THING = 3;

    @PowerNukkitOnly
    public static final int PATTERN_FIELD_MASONED = 4;

    @PowerNukkitOnly
    public static final int PATTERN_BORDURE_INDENTED = 5;

    @PowerNukkitOnly
    @Since("FUTURE")
    public static final int PATTERN_SNOUT = 6;

    @PowerNukkitXOnly
    @Since("1.20.0-r2")
    public static final int PATTERN_GLOBE = 7;

    public ItemBannerPattern() {
        this(0, 1);
    }

    public ItemBannerPattern(Integer meta) {
        this(meta, 1);
    }

    public ItemBannerPattern(Integer meta, int count) {
        super(BANNER_PATTERN, meta, count, "Bone");
        updateName();
    }

    @PowerNukkitOnly
    @Since("1.4.0.0-PN")
    protected ItemBannerPattern(int id, Integer meta, int count, String name) {
        super(id, meta, count, name);
    }

    @Override
    public int getMaxStackSize() {
        return 1;
    }

    @Override
    public void setDamage(Integer meta) {
        super.setDamage(meta);
        updateName();
    }
    
    @PowerNukkitOnly
    @Since("1.4.0.0-PN")
    public BannerPattern.Type getPatternType() {
        if (getId() != BANNER_PATTERN) {
            return BannerPattern.Type.PATTERN_CREEPER;
        }
        return switch (getDamage()) {
            default -> BannerPattern.Type.PATTERN_CREEPER;
            case PATTERN_SKULL_CHARGE -> BannerPattern.Type.PATTERN_SKULL;
            case PATTERN_FLOWER_CHARGE -> BannerPattern.Type.PATTERN_FLOWER;
            case PATTERN_THING -> BannerPattern.Type.PATTERN_MOJANG;
            case PATTERN_FIELD_MASONED -> BannerPattern.Type.PATTERN_BRICK;
            case PATTERN_BORDURE_INDENTED -> BannerPattern.Type.PATTERN_CURLY_BORDER;
            case PATTERN_SNOUT -> BannerPattern.Type.PATTERN_SNOUT;
            case PATTERN_GLOBE -> BannerPattern.Type.PATTERN_GLOBE;
        };
    }

    @PowerNukkitOnly
    protected void updateName() {
        if (getId() != BANNER_PATTERN) {
            return;
        }
        switch (super.meta) {
            case PATTERN_CREEPER_CHARGE -> name = "Creeper Charge Banner Pattern";
            case PATTERN_SKULL_CHARGE -> name = "Skull Charge Banner Pattern";
            case PATTERN_FLOWER_CHARGE -> name = "Flower Charge Banner Pattern";
            case PATTERN_THING -> name = "Thing Banner Pattern";
            case PATTERN_FIELD_MASONED -> name = "Field Banner Pattern";
            case PATTERN_BORDURE_INDENTED -> name = "Bordure Indented Banner Pattern";
            case PATTERN_SNOUT -> name = "Snout Banner Pattern";
            case PATTERN_GLOBE -> name = "Globe Banner Pattern";
            default -> name = "Banner Pattern";
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy