MaterialDataOption.java

package it.fulminazzo.yagl.particles;

import it.fulminazzo.fulmicollection.structures.tuples.Tuple;
import org.jetbrains.annotations.NotNull;

/**
 * An option used by {@link LegacyParticleType#TILE_BREAK} and {@link LegacyParticleType#TILE_DUST}.
 */
public class MaterialDataOption extends ParticleOption<Tuple<String, Integer>> {
    private static final String REGEX = "^([^\\[]+)(?:\\[(\\d+)])?$";
    private final @NotNull String material;
    private final Integer data;

    /**
     * Instantiates a new Material data option.
     *
     * @param materialData the material data
     */
    public MaterialDataOption(final @NotNull String materialData) {
        String[] parsed = BlockDataOption.parseRaw(materialData, REGEX);
        this.material = parsed[0];
        String rawData = parsed[1];
        if (rawData.trim().isEmpty()) this.data = 0;
        else this.data = Integer.valueOf(rawData);
    }

    /**
     * Instantiates a new Material data option.
     *
     * @param material the material
     * @param data     the data
     */
    public MaterialDataOption(final @NotNull String material, final int data) {
        this.material = BlockDataOption.parseMaterial(material);
        this.data = data;
    }

    @Override
    public Tuple<String, Integer> getOption() {
        return new Tuple<>(this.material, this.data);
    }
}