package be.isach.ultracosmetics.cosmetics.type;
import be.isach.ultracosmetics.UltraCosmeticsData;
import be.isach.ultracosmetics.config.MessageManager;
import be.isach.ultracosmetics.cosmetics.Category;
import be.isach.ultracosmetics.cosmetics.morphs.*;
import me.libraryaddict.disguise.disguisetypes.DisguiseType;
import org.bukkit.Material;
import java.util.ArrayList;
import java.util.List;
import java.util.stream.Collectors;
/**
* Morph types.
*
* @author iSach
* @since 12-19-2015
*/
public class MorphType extends CosmeticMatType<Morph> {
private final static List<MorphType> ENABLED = new ArrayList<>();
private final static List<MorphType> VALUES = new ArrayList<>();
public static List<MorphType> enabled() {
return ENABLED;
}
public static List<MorphType> values() {
return VALUES;
}
public static MorphType valueOf(String s) {
for (MorphType morphType : VALUES) {
if (morphType.getConfigName().equalsIgnoreCase(s)) return morphType;
}
return null;
}
public static void checkEnabled() {
ENABLED.addAll(values().stream().filter(CosmeticType::isEnabled).collect(Collectors.toList()));
}
public static final MorphType BAT = new MorphType("ultracosmetics.morphs.bat", "Bat", Material.COAL, (byte) 0, DisguiseType.BAT, "&7&oBecome a bat!", MorphBat.class);
public static final MorphType BLAZE = new MorphType("ultracosmetics.morphs.blaze", "Blaze", Material.BLAZE_POWDER, (byte) 0, DisguiseType.BLAZE, "&7&oIt might be hot on there..", MorphBlaze.class);
public static final MorphType CHICKEN = new MorphType("ultracosmetics.morphs.chicken", "Chicken", Material.EGG, (byte) 0, DisguiseType.CHICKEN, "&7&oBecome a chicken!", MorphChicken.class);
public static final MorphType PIG = new MorphType("ultracosmetics.morphs.pig", "Pig", Material.PORK, (byte) 0, DisguiseType.PIG, "&7&oMust hold your carrot!", MorphPig.class);
public static final MorphType ENDERMAN = new MorphType("ultracosmetics.morphs.enderman", "Enderman", Material.ENDER_PEARL, (byte) 0, DisguiseType.ENDERMAN, "&7&oI go from there to\n" + "&7&othere, then you lost me..", MorphEnderman.class);
public static final MorphType SLIME = new MorphType("ultracosmetics.morphs.slime", "Slime", Material.SLIME_BALL, (byte) 0, DisguiseType.SLIME, "&7&oSplat splat!", MorphSlime.class);
public static final MorphType CREEPER = new MorphType("ultracosmetics.morphs.creeper", "Creeper", Material.SULPHUR, (byte) 0, DisguiseType.CREEPER, "&7&oHey What'sssssss up?", MorphCreeper.class);
public static final MorphType WITHERSKELETON = new MorphType("ultracosmetics.morphs.witherskeleton", "WitherSkeleton", Material.SKULL_ITEM, (byte) 1, DisguiseType.WITHER_SKELETON, "&7&oJust a regular skeleton..\n&7&obut from the Nether!", MorphWitherSkeleton.class);
public static final MorphType SNOWNMAN = new MorphType("ultracosmetics.morphs.snowman", "Snowman", Material.SNOW_BALL, (byte) 0, DisguiseType.SNOWMAN, "&7&oBecome Olaf!", MorphSnowman.class);
public static final MorphType ELDERGUARDIAN = new MorphType("ultracosmetics.morphs.elderguardian", "ElderGuardian", Material.PRISMARINE_CRYSTALS, (byte) 0, DisguiseType.valueOf("ELDER_GUARDIAN"), "&7&oBecome an Elder Guardian!!", UltraCosmeticsData.get().getVersionManager().getMorphs().getElderGuardianClass());
/**
* Disguise Type of the morph.
*/
private DisguiseType disguiseType;
private MorphType(String permission, String configName, Material material, byte data, DisguiseType disguiseType, String defaultDesc, Class<? extends Morph> clazz) {
super(Category.MORPHS, configName, permission, defaultDesc, material, data, clazz);
this.disguiseType = disguiseType;
VALUES.add(this);
}
/**
* Get the skill message.
*
* @return The skill message of the morph.
*/
public String getSkill() {
return MessageManager.getMessage("Morphs." + getConfigName() + ".skill");
}
/**
* Get the morph Disguise Type.
*
* @return
*/
public DisguiseType getDisguiseType() {
return disguiseType;
}
}