package com.laytonsmith.abstraction.enums.bukkit;
import com.laytonsmith.abstraction.enums.MCSound;
import com.laytonsmith.abstraction.enums.MCVersion;
import com.laytonsmith.core.CHLog;
import com.laytonsmith.core.Static;
import com.laytonsmith.core.constructs.Target;
import org.bukkit.Sound;
import java.util.ArrayList;
import java.util.HashMap;
/**
*
*
*/
public class BukkitMCSound extends MCSound<Sound> {
public BukkitMCSound(MCVanillaSound vanillaSound, Sound sound) {
super(vanillaSound, sound);
}
@Override
public String name() {
return getAbstracted() == MCVanillaSound.UNKNOWN ? concreteName() : getAbstracted().name();
}
@Override
public String concreteName() {
return getConcrete() == null ? "null" : getConcrete().name();
}
public static BukkitMCSound valueOfConcrete(Sound test) {
for (MCSound t : mappings.values()) {
if (((BukkitMCSound) t).getConcrete().equals(test)) {
return (BukkitMCSound) t;
}
}
return (BukkitMCSound) NULL;
}
public static BukkitMCSound valueOfConcrete(String test) {
try {
return valueOfConcrete(Sound.valueOf(test));
} catch (IllegalArgumentException iae) {
return (BukkitMCSound) NULL;
}
}
// This way we don't take up extra memory on non-bukkit implementations
public static void build() {
mappings = new HashMap<>();
NULL = new BukkitMCSound(MCVanillaSound.UNKNOWN, null);
ArrayList<Sound> counted = new ArrayList<>();
for (MCVanillaSound v : MCVanillaSound.values()) {
if (v.existsInCurrent()) {
Sound sound = getBukkitType(v);
if (sound == null) {
CHLog.GetLogger().e(CHLog.Tags.RUNTIME, "Could not find a matching sound for " + v.name()
+ ". This is an error, please report this to the bug tracker.", Target.UNKNOWN);
continue;
}
BukkitMCSound wrapper = new BukkitMCSound(v, sound);
mappings.put(v.name(), wrapper);
counted.add(sound);
}
}
for (Sound s : Sound.values()) {
if (!counted.contains(s)) {
mappings.put(s.name(), new BukkitMCSound(MCVanillaSound.UNKNOWN, s));
}
}
}
private static Sound getBukkitType(MCVanillaSound v) {
if(Static.getServer().getMinecraftVersion().gte(MCVersion.MC1_9)){
switch(v){
case AMBIENCE_CAVE:
return Sound.AMBIENT_CAVE;
case AMBIENCE_RAIN:
return Sound.WEATHER_RAIN;
case AMBIENCE_THUNDER:
return Sound.ENTITY_LIGHTNING_THUNDER;
case ANVIL_BREAK:
return Sound.BLOCK_ANVIL_DESTROY;
case ANVIL_LAND:
return Sound.BLOCK_ANVIL_LAND;
case ANVIL_USE:
return Sound.BLOCK_ANVIL_USE;
case ARROW_HIT:
return Sound.ENTITY_ARROW_HIT;
case BURP:
return Sound.ENTITY_PLAYER_BURP;
case CHEST_CLOSE:
return Sound.BLOCK_CHEST_CLOSE;
case CHEST_OPEN:
return Sound.BLOCK_CHEST_OPEN;
case CLICK:
return Sound.UI_BUTTON_CLICK;
case DOOR_CLOSE:
return Sound.BLOCK_WOODEN_DOOR_CLOSE;
case DOOR_OPEN:
return Sound.BLOCK_WOODEN_DOOR_OPEN;
case DRINK:
return Sound.ENTITY_GENERIC_DRINK;
case EAT:
return Sound.ENTITY_GENERIC_EAT;
case EXPLODE:
return Sound.ENTITY_GENERIC_EXPLODE;
case FALL_BIG:
return Sound.ENTITY_GENERIC_BIG_FALL;
case FALL_SMALL:
return Sound.ENTITY_GENERIC_SMALL_FALL;
case FIRE:
return Sound.BLOCK_FIRE_AMBIENT;
case FIRE_IGNITE:
return Sound.ITEM_FLINTANDSTEEL_USE;
case FIZZ:
return Sound.ENTITY_GENERIC_EXTINGUISH_FIRE;
case FUSE:
return Sound.ENTITY_TNT_PRIMED;
case GLASS:
return Sound.BLOCK_GLASS_BREAK;
case HURT_FLESH:
return Sound.ENTITY_GENERIC_HURT;
case ITEM_BREAK:
return Sound.ENTITY_ITEM_BREAK;
case ITEM_PICKUP:
return Sound.ENTITY_ITEM_PICKUP;
case LAVA:
return Sound.BLOCK_LAVA_AMBIENT;
case LAVA_POP:
return Sound.BLOCK_LAVA_POP;
case LEVEL_UP:
return Sound.ENTITY_PLAYER_LEVELUP;
case MINECART_BASE:
return Sound.ENTITY_MINECART_RIDING;
case MINECART_INSIDE:
return Sound.ENTITY_MINECART_INSIDE;
case NOTE_BASS:
return Sound.BLOCK_NOTE_BASS;
case NOTE_PIANO:
return Sound.BLOCK_NOTE_HARP;
case NOTE_BASS_DRUM:
return Sound.BLOCK_NOTE_BASEDRUM;
case NOTE_STICKS:
return Sound.BLOCK_NOTE_HAT;
case NOTE_BASS_GUITAR:
return Sound.BLOCK_NOTE_BASS;
case NOTE_SNARE_DRUM:
return Sound.BLOCK_NOTE_SNARE;
case NOTE_PLING:
return Sound.BLOCK_NOTE_PLING;
case ORB_PICKUP:
return Sound.ENTITY_EXPERIENCE_ORB_PICKUP;
case PISTON_EXTEND:
return Sound.BLOCK_PISTON_EXTEND;
case PISTON_RETRACT:
return Sound.BLOCK_PISTON_CONTRACT;
case PORTAL:
return Sound.BLOCK_PORTAL_AMBIENT;
case PORTAL_TRAVEL:
return Sound.BLOCK_PORTAL_TRAVEL;
case PORTAL_TRIGGER:
return Sound.BLOCK_PORTAL_TRIGGER;
case SHOOT_ARROW:
return Sound.ENTITY_ARROW_SHOOT;
case SPLASH:
return Sound.ENTITY_BOBBER_SPLASH;
case SPLASH2:
return Sound.ENTITY_GENERIC_SPLASH;
case STEP_GRASS:
return Sound.BLOCK_GRASS_STEP;
case STEP_GRAVEL:
return Sound.BLOCK_GRAVEL_STEP;
case STEP_LADDER:
return Sound.BLOCK_LADDER_STEP;
case STEP_SAND:
return Sound.BLOCK_SAND_STEP;
case STEP_SNOW:
return Sound.BLOCK_SNOW_STEP;
case STEP_STONE:
return Sound.BLOCK_STONE_STEP;
case STEP_WOOD:
return Sound.BLOCK_WOOD_STEP;
case STEP_WOOL:
return Sound.BLOCK_CLOTH_STEP;
case SUCCESSFUL_HIT:
return Sound.ENTITY_ARROW_HIT_PLAYER;
case SWIM:
return Sound.ENTITY_GENERIC_SWIM;
case WATER:
return Sound.BLOCK_WATER_AMBIENT;
case WOOD_CLICK:
return Sound.BLOCK_WOOD_BUTTON_CLICK_ON;
// Mob sounds
case BAT_DEATH:
return Sound.ENTITY_BAT_DEATH;
case BAT_HURT:
return Sound.ENTITY_BAT_HURT;
case BAT_IDLE:
return Sound.ENTITY_BAT_AMBIENT;
case BAT_LOOP:
return Sound.ENTITY_BAT_LOOP;
case BAT_TAKEOFF:
return Sound.ENTITY_BAT_TAKEOFF;
case BLAZE_BREATH:
return Sound.ENTITY_BLAZE_AMBIENT;
case BLAZE_DEATH:
return Sound.ENTITY_BLAZE_DEATH;
case BLAZE_HIT:
return Sound.ENTITY_BLAZE_HURT;
case CAT_HISS:
return Sound.ENTITY_CAT_HISS;
case CAT_HIT:
return Sound.ENTITY_CAT_HURT;
case CAT_MEOW:
return Sound.ENTITY_CAT_AMBIENT;
case CAT_PURR:
return Sound.ENTITY_CAT_PURR;
case CAT_PURREOW:
return Sound.ENTITY_CAT_PURREOW;
case CHICKEN_IDLE:
return Sound.ENTITY_CHICKEN_AMBIENT;
case CHICKEN_HURT:
return Sound.ENTITY_CHICKEN_HURT;
case CHICKEN_EGG_POP:
return Sound.ENTITY_CHICKEN_EGG;
case CHICKEN_WALK:
return Sound.ENTITY_CHICKEN_STEP;
case COW_IDLE:
return Sound.ENTITY_COW_AMBIENT;
case COW_HURT:
return Sound.ENTITY_COW_HURT;
case COW_WALK:
return Sound.ENTITY_COW_STEP;
case CREEPER_HISS:
return Sound.ENTITY_CREEPER_HURT;
case CREEPER_DEATH:
return Sound.ENTITY_CREEPER_DEATH;
case ENDERDRAGON_DEATH:
return Sound.ENTITY_ENDERDRAGON_DEATH;
case ENDERDRAGON_GROWL:
return Sound.ENTITY_ENDERDRAGON_GROWL;
case ENDERDRAGON_HIT:
return Sound.ENTITY_ENDERDRAGON_HURT;
case ENDERDRAGON_WINGS:
return Sound.ENTITY_ENDERDRAGON_FLAP;
case ENDERMAN_DEATH:
return Sound.ENTITY_ENDERMEN_DEATH;
case ENDERMAN_HIT:
return Sound.ENTITY_ENDERMEN_HURT;
case ENDERMAN_IDLE:
return Sound.ENTITY_ENDERMEN_AMBIENT;
case ENDERMAN_TELEPORT:
return Sound.ENTITY_ENDERMEN_TELEPORT;
case ENDERMAN_SCREAM:
return Sound.ENTITY_ENDERMEN_SCREAM;
case ENDERMAN_STARE:
return Sound.ENTITY_ENDERMEN_STARE;
case GHAST_SCREAM:
return Sound.ENTITY_GHAST_HURT;
case GHAST_SCREAM2:
return Sound.ENTITY_GHAST_SCREAM;
case GHAST_CHARGE:
return Sound.ENTITY_GHAST_WARN;
case GHAST_DEATH:
return Sound.ENTITY_GHAST_DEATH;
case GHAST_FIREBALL:
return Sound.ENTITY_GHAST_SHOOT;
case GHAST_MOAN:
return Sound.ENTITY_GHAST_AMBIENT;
case HORSE_DEATH:
return Sound.ENTITY_HORSE_DEATH;
case HORSE_SKELETON_HIT:
return Sound.ENTITY_SKELETON_HORSE_HURT;
case IRONGOLEM_DEATH:
return Sound.ENTITY_IRONGOLEM_DEATH;
case IRONGOLEM_HIT:
return Sound.ENTITY_IRONGOLEM_HURT;
case IRONGOLEM_THROW:
return Sound.ENTITY_IRONGOLEM_ATTACK;
case IRONGOLEM_WALK:
return Sound.ENTITY_IRONGOLEM_STEP;
case MAGMACUBE_WALK:
return Sound.ENTITY_SMALL_MAGMACUBE_SQUISH;
case MAGMACUBE_WALK2:
return Sound.ENTITY_MAGMACUBE_SQUISH;
case MAGMACUBE_JUMP:
return Sound.ENTITY_MAGMACUBE_JUMP;
case PIG_IDLE:
return Sound.ENTITY_PIG_AMBIENT;
case PIG_DEATH:
return Sound.ENTITY_PIG_DEATH;
case PIG_WALK:
return Sound.ENTITY_PIG_STEP;
case SHEEP_IDLE:
return Sound.ENTITY_SHEEP_AMBIENT;
case SHEEP_SHEAR:
return Sound.ENTITY_SHEEP_SHEAR;
case SHEEP_WALK:
return Sound.ENTITY_SHEEP_STEP;
case SILVERFISH_HIT:
return Sound.ENTITY_SILVERFISH_HURT;
case SILVERFISH_KILL:
return Sound.ENTITY_SILVERFISH_DEATH;
case SILVERFISH_IDLE:
return Sound.ENTITY_SILVERFISH_AMBIENT;
case SILVERFISH_WALK:
return Sound.ENTITY_SILVERFISH_STEP;
case SKELETON_IDLE:
return Sound.ENTITY_SKELETON_AMBIENT;
case SKELETON_DEATH:
return Sound.ENTITY_SKELETON_DEATH;
case SKELETON_HURT:
return Sound.ENTITY_SKELETON_HURT;
case SKELETON_WALK:
return Sound.ENTITY_SKELETON_STEP;
case SLIME_ATTACK:
return Sound.ENTITY_SLIME_ATTACK;
case SLIME_WALK:
return Sound.ENTITY_SMALL_SLIME_HURT;
case SLIME_WALK2:
return Sound.ENTITY_SLIME_SQUISH;
case SPIDER_IDLE:
return Sound.ENTITY_SPIDER_AMBIENT;
case SPIDER_DEATH:
return Sound.ENTITY_SPIDER_DEATH;
case SPIDER_WALK:
return Sound.ENTITY_SPIDER_STEP;
case WITHER_DEATH:
return Sound.ENTITY_WITHER_DEATH;
case WITHER_HURT:
return Sound.ENTITY_WITHER_HURT;
case WITHER_IDLE:
return Sound.ENTITY_WITHER_AMBIENT;
case WITHER_SHOOT:
return Sound.ENTITY_WITHER_SHOOT;
case WITHER_SPAWN:
return Sound.ENTITY_WITHER_SPAWN;
case WOLF_BARK:
return Sound.ENTITY_WOLF_AMBIENT;
case WOLF_DEATH:
return Sound.ENTITY_WOLF_DEATH;
case WOLF_GROWL:
return Sound.ENTITY_WOLF_GROWL;
case WOLF_HOWL:
return Sound.ENTITY_WOLF_HOWL;
case WOLF_HURT:
return Sound.ENTITY_WOLF_HURT;
case WOLF_PANT:
return Sound.ENTITY_WOLF_PANT;
case WOLF_SHAKE:
return Sound.ENTITY_WOLF_SHAKE;
case WOLF_WALK:
return Sound.ENTITY_WOLF_STEP;
case WOLF_WHINE:
return Sound.ENTITY_WOLF_WHINE;
case ZOMBIE_METAL:
return Sound.ENTITY_ZOMBIE_ATTACK_IRON_DOOR;
case ZOMBIE_WALK:
return Sound.ENTITY_ZOMBIE_STEP;
case ZOMBIE_WOOD:
return Sound.ENTITY_ZOMBIE_ATTACK_DOOR_WOOD;
case ZOMBIE_WOODBREAK:
return Sound.ENTITY_ZOMBIE_BREAK_DOOR_WOOD;
case ZOMBIE_IDLE:
return Sound.ENTITY_ZOMBIE_AMBIENT;
case ZOMBIE_DEATH:
return Sound.ENTITY_ZOMBIE_DEATH;
case ZOMBIE_HURT:
return Sound.ENTITY_ZOMBIE_HURT;
case ZOMBIE_INFECT:
return Sound.ENTITY_ZOMBIE_INFECT;
case ZOMBIE_UNFECT:
return Sound.ENTITY_ZOMBIE_VILLAGER_CONVERTED;
case ZOMBIE_REMEDY:
return Sound.ENTITY_ZOMBIE_VILLAGER_CURE;
case ZOMBIE_PIG_IDLE:
return Sound.ENTITY_ZOMBIE_PIG_AMBIENT;
case ZOMBIE_PIG_ANGRY:
return Sound.ENTITY_ZOMBIE_PIG_ANGRY;
case ZOMBIE_PIG_DEATH:
return Sound.ENTITY_ZOMBIE_PIG_DEATH;
case ZOMBIE_PIG_HURT:
return Sound.ENTITY_ZOMBIE_PIG_HURT;
// Dig Sounds
case DIG_WOOL:
return Sound.BLOCK_CLOTH_BREAK;
case DIG_GRASS:
return Sound.BLOCK_GRASS_BREAK;
case DIG_GRAVEL:
return Sound.BLOCK_GRAVEL_BREAK;
case DIG_SAND:
return Sound.BLOCK_SAND_BREAK;
case DIG_SNOW:
return Sound.BLOCK_SNOW_BREAK;
case DIG_STONE:
return Sound.BLOCK_STONE_BREAK;
case DIG_WOOD:
return Sound.BLOCK_WOOD_BREAK;
// Fireworks
case FIREWORK_BLAST:
return Sound.ENTITY_FIREWORK_BLAST;
case FIREWORK_BLAST2:
return Sound.ENTITY_FIREWORK_BLAST_FAR;
case FIREWORK_LARGE_BLAST:
return Sound.ENTITY_FIREWORK_LARGE_BLAST;
case FIREWORK_LARGE_BLAST2:
return Sound.ENTITY_FIREWORK_LARGE_BLAST_FAR;
case FIREWORK_TWINKLE:
return Sound.ENTITY_FIREWORK_TWINKLE;
case FIREWORK_TWINKLE2:
return Sound.ENTITY_FIREWORK_TWINKLE_FAR;
case FIREWORK_LAUNCH:
return Sound.ENTITY_FIREWORK_LAUNCH;
// Horses
case HORSE_ANGRY:
return Sound.ENTITY_HORSE_ANGRY;
case HORSE_ARMOR:
return Sound.ENTITY_HORSE_ARMOR;
case HORSE_BREATHE:
return Sound.ENTITY_HORSE_BREATHE;
case HORSE_GALLOP:
return Sound.ENTITY_HORSE_GALLOP;
case HORSE_HIT:
return Sound.ENTITY_HORSE_HURT;
case HORSE_IDLE:
return Sound.ENTITY_HORSE_AMBIENT;
case HORSE_JUMP:
return Sound.ENTITY_HORSE_JUMP;
case HORSE_LAND:
return Sound.ENTITY_HORSE_LAND;
case HORSE_SADDLE:
return Sound.ENTITY_HORSE_SADDLE;
case HORSE_SOFT:
return Sound.ENTITY_HORSE_STEP;
case HORSE_WOOD:
return Sound.ENTITY_HORSE_STEP_WOOD;
case DONKEY_ANGRY:
return Sound.ENTITY_DONKEY_ANGRY;
case DONKEY_DEATH:
return Sound.ENTITY_DONKEY_DEATH;
case DONKEY_HIT:
return Sound.ENTITY_DONKEY_HURT;
case DONKEY_IDLE:
return Sound.ENTITY_DONKEY_AMBIENT;
case HORSE_SKELETON_DEATH:
return Sound.ENTITY_SKELETON_HORSE_DEATH;
case HORSE_SKELETON_IDLE:
return Sound.ENTITY_SKELETON_HORSE_AMBIENT;
case HORSE_ZOMBIE_DEATH:
return Sound.ENTITY_ZOMBIE_HORSE_DEATH;
case HORSE_ZOMBIE_HIT:
return Sound.ENTITY_ZOMBIE_HORSE_HURT;
case HORSE_ZOMBIE_IDLE:
return Sound.ENTITY_ZOMBIE_HORSE_AMBIENT;
// Villager
case VILLAGER_DEATH:
return Sound.ENTITY_VILLAGER_DEATH;
case VILLAGER_HAGGLE:
return Sound.ENTITY_VILLAGER_TRADING;
case VILLAGER_HIT:
return Sound.ENTITY_VILLAGER_HURT;
case VILLAGER_IDLE:
return Sound.ENTITY_VILLAGER_AMBIENT;
case VILLAGER_NO:
return Sound.ENTITY_VILLAGER_NO;
case VILLAGER_YES:
return Sound.ENTITY_VILLAGER_YES;
}
}
try {
return Sound.valueOf(v.name());
} catch (IllegalArgumentException iae) {
return null;
}
}
}