/* * Copyright (c) CovertJaguar, 2014 http://railcraft.info * * This code is the property of CovertJaguar * and may only be used with explicit written * permission unless otherwise specified on the * license page at http://railcraft.info/wiki/info:license. */ package mods.railcraft.common.blocks.detector; import java.util.Locale; import mods.railcraft.common.blocks.detector.types.*; import mods.railcraft.common.modules.ModuleManager; import mods.railcraft.common.modules.ModuleManager.Module; import net.minecraft.item.ItemStack; import net.minecraft.util.IIcon; /** * * @author CovertJaguar <http://www.railcraft.info/> */ public enum EnumDetector { ITEM(Module.AUTOMATION, DetectorItem.class), ANY(Module.AUTOMATION, Detector.class), EMPTY(Module.AUTOMATION, DetectorEmpty.class), MOB(Module.AUTOMATION, DetectorMob.class), POWERED(Module.AUTOMATION, DetectorPowered.class), PLAYER(Module.AUTOMATION, DetectorPlayer.class), EXPLOSIVE(Module.AUTOMATION, DetectorExplosive.class), ANIMAL(Module.AUTOMATION, DetectorAnimal.class), TANK(Module.AUTOMATION, DetectorTank.class), ADVANCED(Module.AUTOMATION, DetectorAdvanced.class), ENERGY(Module.IC2, DetectorEnergy.class), AGE(Module.AUTOMATION, DetectorAge.class), TRAIN(Module.TRAIN, DetectorTrain.class), SHEEP(Module.AUTOMATION, DetectorSheep.class), VILLAGER(Module.AUTOMATION, DetectorVillager.class), LOCOMOTIVE(Module.AUTOMATION, DetectorLocomotive.class), ROUTING(Module.ROUTING, DetectorRouting.class); public static final EnumDetector[] VALUES = values(); public IIcon[] textures; private final Class<? extends Detector> handler; private final Module module; private EnumDetector(Module module, Class<? extends Detector> handler) { this.handler = handler; this.module = module; } public static EnumDetector fromOrdinal(int meta) { if (meta >= EnumDetector.VALUES.length) { meta = 0; } return VALUES[meta]; } public Detector buildHandler() { try { return handler.newInstance(); } catch (Exception ex) { } throw new RuntimeException("Failed to create Detector!"); } public String getTag() { return "tile.railcraft.detector." + name().toLowerCase(Locale.ENGLISH); } public ItemStack getItem() { return getItem(1); } public ItemStack getItem(int qty) { if (BlockDetector.getBlock() == null) { return null; } return new ItemStack(BlockDetector.getBlock(), qty, ordinal()); } public boolean isEnabled(){ return BlockDetector.getBlock() != null && ModuleManager.isModuleLoaded(module); } }