Search in sources :

Example 1 with EnumColor

use of mekanism.api.text.EnumColor in project Mekanism by mekanism.

the class GuiGauge method renderToolTip.

@Override
public void renderToolTip(@Nonnull MatrixStack matrix, int mouseX, int mouseY) {
    super.renderToolTip(matrix, mouseX, mouseY);
    ItemStack stack = minecraft.player.inventory.getCarried();
    EnumColor color = getGaugeColor().getColor();
    if (!stack.isEmpty() && stack.getItem() instanceof ItemConfigurator && color != null) {
        if (gui() instanceof GuiMekanismTile) {
            TileEntityMekanism tile = ((GuiMekanismTile<?, ?>) gui()).getTileEntity();
            if (tile instanceof ISideConfiguration && getTransmission() != null) {
                DataType dataType = null;
                ConfigInfo config = ((ISideConfiguration) tile).getConfig().getConfig(getTransmission());
                if (config != null) {
                    Set<DataType> supportedDataTypes = config.getSupportedDataTypes();
                    for (DataType type : supportedDataTypes) {
                        if (type.getColor() == color) {
                            dataType = type;
                            break;
                        }
                    }
                }
                if (dataType == null) {
                    displayTooltip(matrix, MekanismLang.GENERIC_PARENTHESIS.translateColored(color, color.getName()), mouseX, mouseY);
                } else {
                    displayTooltip(matrix, MekanismLang.GENERIC_WITH_PARENTHESIS.translateColored(color, dataType, color.getName()), mouseX, mouseY);
                }
            }
        }
    } else {
        List<ITextComponent> list = new ArrayList<>();
        if (getLabel() != null) {
            list.add(getLabel());
        }
        list.addAll(getTooltipText());
        displayTooltips(matrix, list, mouseX, mouseY);
    }
}
Also used : TileEntityMekanism(mekanism.common.tile.base.TileEntityMekanism) EnumColor(mekanism.api.text.EnumColor) ITextComponent(net.minecraft.util.text.ITextComponent) ArrayList(java.util.ArrayList) ItemConfigurator(mekanism.common.item.ItemConfigurator) DataType(mekanism.common.tile.component.config.DataType) ItemStack(net.minecraft.item.ItemStack) ConfigInfo(mekanism.common.tile.component.config.ConfigInfo) GuiMekanismTile(mekanism.client.gui.GuiMekanismTile) ISideConfiguration(mekanism.common.tile.interfaces.ISideConfiguration)

Example 2 with EnumColor

use of mekanism.api.text.EnumColor in project Mekanism by mekanism.

the class MovableFilterButton method drawBackground.

@Override
public void drawBackground(@Nonnull MatrixStack matrix, int mouseX, int mouseY, float partialTicks) {
    super.drawBackground(matrix, mouseX, mouseY, partialTicks);
    IFilter<?> filter = getFilter(filters, filterIndex, index);
    EnumColor color;
    if (filter instanceof IItemStackFilter) {
        color = EnumColor.INDIGO;
    } else if (filter instanceof ITagFilter) {
        color = EnumColor.BRIGHT_GREEN;
    } else if (filter instanceof IMaterialFilter) {
        color = EnumColor.PINK;
    } else if (filter instanceof IModIDFilter) {
        color = EnumColor.RED;
    } else {
        color = null;
    }
    if (color != null) {
        GuiUtils.fill(matrix, x, y, width, height, MekanismRenderer.getColorARGB(color, 0.5F));
        MekanismRenderer.resetColor();
    }
    updateButtonVisibility();
    // Render our sub buttons and our slot
    upButton.onDrawBackground(matrix, mouseX, mouseY, partialTicks);
    downButton.onDrawBackground(matrix, mouseX, mouseY, partialTicks);
}
Also used : EnumColor(mekanism.api.text.EnumColor) IItemStackFilter(mekanism.common.content.filter.IItemStackFilter) IMaterialFilter(mekanism.common.content.filter.IMaterialFilter) IModIDFilter(mekanism.common.content.filter.IModIDFilter) ITagFilter(mekanism.common.content.filter.ITagFilter)

Example 3 with EnumColor

use of mekanism.api.text.EnumColor in project Mekanism by mekanism.

the class MekanismLangProvider method addMisc.

private void addMisc() {
    // Upgrades
    add(APILang.UPGRADE_SPEED, "Speed");
    add(APILang.UPGRADE_SPEED_DESCRIPTION, "Increases speed of machinery.");
    add(APILang.UPGRADE_ENERGY, "Energy");
    add(APILang.UPGRADE_ENERGY_DESCRIPTION, "Increases energy efficiency and capacity of machinery.");
    add(APILang.UPGRADE_FILTER, "Filter");
    add(APILang.UPGRADE_FILTER_DESCRIPTION, "A filter that separates heavy water from regular water.");
    add(APILang.UPGRADE_GAS, "Gas");
    add(APILang.UPGRADE_GAS_DESCRIPTION, "Increases the efficiency of gas-using machinery.");
    add(APILang.UPGRADE_MUFFLING, "Muffling");
    add(APILang.UPGRADE_MUFFLING_DESCRIPTION, "Reduces noise generated by machinery.");
    add(APILang.UPGRADE_ANCHOR, "Anchor");
    add(APILang.UPGRADE_ANCHOR_DESCRIPTION, "Keeps a machine's chunk loaded.");
    add(APILang.UPGRADE_STONE_GENERATOR, "Stone Generator");
    add(APILang.UPGRADE_STONE_GENERATOR_DESCRIPTION, "Generates stone or cobblestone as needed.");
    // Transmission types
    add(MekanismLang.TRANSMISSION_TYPE_ENERGY, "Energy");
    add(MekanismLang.TRANSMISSION_TYPE_FLUID, "Fluids");
    add(MekanismLang.TRANSMISSION_TYPE_GAS, "Gases");
    add(MekanismLang.TRANSMISSION_TYPE_INFUSION, "Infuse Types");
    add(MekanismLang.TRANSMISSION_TYPE_PIGMENT, "Pigments");
    add(MekanismLang.TRANSMISSION_TYPE_SLURRY, "Slurries");
    add(MekanismLang.TRANSMISSION_TYPE_ITEM, "Items");
    add(MekanismLang.TRANSMISSION_TYPE_HEAT, "Heat");
    // Chemical Attributes
    add(APILang.CHEMICAL_ATTRIBUTE_RADIATION, " - Radioactivity: %s");
    add(APILang.CHEMICAL_ATTRIBUTE_COOLANT_EFFICIENCY, " - Coolant Efficiency: %s");
    add(APILang.CHEMICAL_ATTRIBUTE_COOLANT_ENTHALPY, " - Thermal Enthalpy: %s");
    add(APILang.CHEMICAL_ATTRIBUTE_FUEL_BURN_TICKS, " - Burn Time: %s t");
    add(APILang.CHEMICAL_ATTRIBUTE_FUEL_ENERGY_DENSITY, " - Energy Density: %s");
    // Colors
    for (EnumColor color : EnumUtils.COLORS) {
        add(color.getLangEntry(), color.getEnglishName());
    }
    add(MekanismLang.MEKANISM, Mekanism.MOD_NAME);
    add(MekanismLang.DEBUG_TITLE, Mekanism.MOD_NAME + " Debug");
    add(MekanismLang.LOG_FORMAT, "[%s] %s");
    add(MekanismLang.FORGE, "MinecraftForge");
    add(MekanismLang.IC2, "IndustrialCraft");
    add(MekanismLang.ERROR, "Error");
    add(MekanismLang.ALPHA_WARNING, "Warning: Mekanism is currently in alpha, and is not recommended for widespread use in modpacks. There are likely to be game breaking bugs, and various other issues that you can read more about %s.");
    add(MekanismLang.ALPHA_WARNING_HERE, "here");
    // Equipment
    add(MekanismLang.HEAD, "Head");
    add(MekanismLang.BODY, "Body");
    add(MekanismLang.LEGS, "Legs");
    add(MekanismLang.FEET, "Feet");
    add(MekanismLang.MAINHAND, "Hand 1");
    add(MekanismLang.OFFHAND, "Hand 2");
    // Multiblock
    add(MekanismLang.MULTIBLOCK_INVALID_FRAME, "Couldn't create frame, invalid block at %s.");
    add(MekanismLang.MULTIBLOCK_INVALID_INNER, "Couldn't validate center, found invalid block at %s.");
    add(MekanismLang.MULTIBLOCK_INVALID_CONTROLLER_CONFLICT, "Controller conflict: found extra controller at %s.");
    add(MekanismLang.MULTIBLOCK_INVALID_NO_CONTROLLER, "Couldn't form, no controller found.");
    // SPS
    add(MekanismLang.SPS, "Supercritical Phase Shifter");
    add(MekanismLang.SPS_INVALID_DISCONNECTED_COIL, "Couldn't form, found a coil without a connection to an SPS Port.");
    add(MekanismLang.SPS_PORT_MODE, "Toggled SPS Port mode to: %s.");
    add(MekanismLang.SPS_ENERGY_INPUT, "Energy Input: %s/t");
    // Boiler
    add(MekanismLang.BOILER_INVALID_AIR_POCKETS, "Couldn't form, found disconnected interior air pockets.");
    add(MekanismLang.BOILER_INVALID_EXTRA_DISPERSER, "Couldn't form, found invalid Pressure Dispersers.");
    add(MekanismLang.BOILER_INVALID_MISSING_DISPERSER, "Couldn't form, expected but didn't find Pressure Disperser at %s.");
    add(MekanismLang.BOILER_INVALID_NO_DISPERSER, "Couldn't form, no Pressure Disperser layer found.");
    add(MekanismLang.BOILER_INVALID_SUPERHEATING, "Couldn't form, invalid Superheating Element arrangement.");
    // Conversion
    add(MekanismLang.CONVERSION_ENERGY, "Item to Energy");
    add(MekanismLang.CONVERSION_GAS, "Item to Gas");
    add(MekanismLang.CONVERSION_INFUSION, "Item to Infuse Type");
    // QIO stuff
    add(MekanismLang.SET_FREQUENCY, "Set Frequency");
    add(MekanismLang.QIO_FREQUENCY_SELECT, "QIO Frequency Select");
    add(MekanismLang.QIO_ITEMS_DETAIL, "Items: %s / %s");
    add(MekanismLang.QIO_TYPES_DETAIL, "Types: %s / %s");
    add(MekanismLang.QIO_ITEMS, "Items");
    add(MekanismLang.QIO_TYPES, "Types");
    add(MekanismLang.QIO_TRIGGER_COUNT, "Trigger count: %s");
    add(MekanismLang.QIO_STORED_COUNT, "Stored count: %s");
    add(MekanismLang.QIO_ITEM_TYPE_UNDEFINED, "Item type undefined");
    add(MekanismLang.QIO_IMPORT_WITHOUT_FILTER, "Import Without Filter:");
    add(MekanismLang.QIO_EXPORT_WITHOUT_FILTER, "Export Without Filter:");
    add(MekanismLang.QIO_COMPENSATE_TOOLTIP, "What are you trying to compensate for?");
    add(MekanismLang.LIST_SORT_COUNT, "Count");
    add(MekanismLang.LIST_SORT_NAME, "Name");
    add(MekanismLang.LIST_SORT_MOD, "Mod");
    add(MekanismLang.LIST_SORT_NAME_DESC, "Sort items by name.");
    add(MekanismLang.LIST_SORT_COUNT_DESC, "Sort items by count.");
    add(MekanismLang.LIST_SORT_MOD_DESC, "Sort items by mod.");
    add(MekanismLang.LIST_SORT_ASCENDING_DESC, "Sort items in ascending order.");
    add(MekanismLang.LIST_SORT_DESCENDING_DESC, "Sort items in descending order.");
    add(MekanismLang.LIST_SEARCH, "Search:");
    add(MekanismLang.LIST_SORT, "Sort:");
    // JEI
    add(MekanismLang.JEI_AMOUNT_WITH_CAPACITY, "%s / %s mB");
    add(MekanismLang.JEI_INFO_HEAVY_WATER, "%s mB of Heavy Water can be extracted from a water source block via an electric pump with a filter upgrade installed.");
    add(MekanismLang.JEI_INFO_MODULE_INSTALLATION, "Using a Modification Station, modules can be installed on the various MekaSuit pieces and on the Meka-Tool.");
    // Key
    add(MekanismLang.KEY_HAND_MODE, "Item Mode Switch");
    add(MekanismLang.KEY_HEAD_MODE, "Head Mode Switch");
    add(MekanismLang.KEY_CHEST_MODE, "Chest Mode Switch");
    add(MekanismLang.KEY_LEGS_MODE, "Legs Mode Switch");
    add(MekanismLang.KEY_FEET_MODE, "Feet Mode Switch");
    add(MekanismLang.KEY_DETAILS_MODE, "Show Details");
    add(MekanismLang.KEY_DESCRIPTION_MODE, "Show Description");
    add(MekanismLang.KEY_BOOST, "Boost");
    add(MekanismLang.KEY_MODULE_TWEAKER, "Module Tweaker");
    add(MekanismLang.KEY_HUD, "Show HUD");
    // Holiday
    add(MekanismLang.HOLIDAY_BORDER, "%s%s%1$s");
    add(MekanismLang.HOLIDAY_SIGNATURE, "-aidancbrady");
    add(MekanismLang.CHRISTMAS_LINE_ONE, "Merry Christmas, %s!");
    add(MekanismLang.CHRISTMAS_LINE_TWO, "May you have plenty of Christmas cheer");
    add(MekanismLang.CHRISTMAS_LINE_THREE, "and have a relaxing holiday with your");
    add(MekanismLang.CHRISTMAS_LINE_FOUR, "family :)");
    add(MekanismLang.NEW_YEAR_LINE_ONE, "Happy New Year, %s!");
    add(MekanismLang.NEW_YEAR_LINE_TWO, "Best wishes to you as we enter this");
    add(MekanismLang.NEW_YEAR_LINE_THREE, "new and exciting year of %s! :)");
    add(MekanismLang.MAY_4_LINE_ONE, "May the 4th be with you, %s!");
    // Generic
    add(APILang.GENERIC, "%s");
    // Note: How translation text component is implemented requires a double percent sign to make it show up as a single percent sign
    add(MekanismLang.GENERIC_PERCENT, "%s%%");
    add(MekanismLang.GENERIC_WITH_COMMA, "%s, %s");
    add(MekanismLang.GENERIC_STORED, "%s: %s");
    add(MekanismLang.GENERIC_STORED_MB, "%s: %s mB");
    add(MekanismLang.GENERIC_MB, "%s mB");
    add(MekanismLang.GENERIC_PRE_COLON, "%s:");
    add(MekanismLang.GENERIC_SQUARE_BRACKET, "[%s]");
    add(MekanismLang.GENERIC_PARENTHESIS, "(%s)");
    add(MekanismLang.GENERIC_WITH_PARENTHESIS, "%s (%s)");
    add(MekanismLang.GENERIC_WITH_TWO_PARENTHESIS, "%s (%s) (%s)");
    add(MekanismLang.GENERIC_FRACTION, "%s/%s");
    add(MekanismLang.GENERIC_TRANSFER, "- %s (%s)");
    add(MekanismLang.GENERIC_PER_TICK, "%s/t");
    add(MekanismLang.GENERIC_PER_MB, "%s/mB");
    add(MekanismLang.GENERIC_PRE_STORED, "%s %s: %s");
    add(MekanismLang.GENERIC_BLOCK_POS, "%s, %s, %s");
    add(MekanismLang.GENERIC_HEX, "#%s");
    // Directions
    add(APILang.DOWN, "Down");
    add(APILang.UP, "Up");
    add(APILang.NORTH, "North");
    add(APILang.SOUTH, "South");
    add(APILang.WEST, "West");
    add(APILang.EAST, "East");
    add(MekanismLang.NORTH_SHORT, "N");
    add(MekanismLang.SOUTH_SHORT, "S");
    add(MekanismLang.WEST_SHORT, "W");
    add(MekanismLang.EAST_SHORT, "E");
    // Relative sides
    add(APILang.FRONT, "Front");
    add(APILang.LEFT, "Left");
    add(APILang.RIGHT, "Right");
    add(APILang.BACK, "Back");
    add(APILang.TOP, "Top");
    add(APILang.BOTTOM, "Bottom");
    // Hold for
    add(MekanismLang.HOLD_FOR_DETAILS, "Hold %s for details.");
    add(MekanismLang.HOLD_FOR_DESCRIPTION, "Hold %s for a description.");
    add(MekanismLang.HOLD_FOR_MODULES, "Hold %s for installed modules.");
    add(MekanismLang.HOLD_FOR_SUPPORTED_ITEMS, "Hold %s for supporting items.");
    // Commands
    add(MekanismLang.COMMAND_CHUNK_WATCH, "Chunk (%s) added to watch list.");
    add(MekanismLang.COMMAND_CHUNK_UNWATCH, "Chunk (%s) removed from watch list.");
    add(MekanismLang.COMMAND_CHUNK_CLEAR, "%s chunks removed from watch list.");
    add(MekanismLang.COMMAND_CHUNK_FLUSH, "%s chunks unloaded.");
    add(MekanismLang.COMMAND_CHUNK_LOADED, "Loaded chunk (%s).");
    add(MekanismLang.COMMAND_CHUNK_UNLOADED, "Unloaded chunk (%s).");
    add(MekanismLang.COMMAND_DEBUG, "Toggled debug mode: %s.");
    add(MekanismLang.COMMAND_TEST_RULES, "Enabled keepInventory, and disabled doMobSpawning, doDaylightCycle, doWeatherCycle and mobGriefing!");
    add(MekanismLang.COMMAND_TP, "Teleported to (%s) - saved last position on stack.");
    add(MekanismLang.COMMAND_TPOP, "Returned to (%s); %s positions on stack.");
    add(MekanismLang.COMMAND_ERROR_TPOP_EMPTY, "No positions on stack.");
    add(MekanismLang.COMMAND_BUILD_REMOVED, "Build successfully removed.");
    add(MekanismLang.COMMAND_BUILD_BUILT, "Finished building: %s.");
    add(MekanismLang.COMMAND_ERROR_BUILD_MISS, "No valid target found.");
    add(MekanismLang.COMMAND_RADIATION_ADD, "Added %s radiation at (%s) in %s.");
    add(MekanismLang.COMMAND_RADIATION_GET, "Current radiation at (%s) in %s: %s");
    add(MekanismLang.COMMAND_RADIATION_CLEAR, "Cleared player radiation.");
    add(MekanismLang.COMMAND_RADIATION_CLEAR_ENTITY, "Cleared entity radiation for: %s.");
    add(MekanismLang.COMMAND_RADIATION_REMOVE_ALL, "Removed all radiation sources.");
    add(MekanismLang.COMMAND_RETROGEN_CHUNK_QUEUED, "Queued chunk (%s) in %s for retrogen.");
    add(MekanismLang.COMMAND_ERROR_RETROGEN_DISABLED, "Retrogen is disabled, please enable it in the config.");
    add(MekanismLang.COMMAND_ERROR_RETROGEN_FAILURE, "Failed to queue any chunks for retrogen.");
    // Tooltip stuff
    add(MekanismLang.MODE, "Mode: %s");
    add(MekanismLang.FIRE_MODE, "Fire Mode: %s");
    add(MekanismLang.BUCKET_MODE, "Bucket Mode: %s");
    add(MekanismLang.STORED_ENERGY, "Stored energy: %s");
    add(MekanismLang.STORED, "Stored %s: %s");
    add(MekanismLang.STORED_MB_PERCENTAGE, "Stored %s: %s mB (%s)");
    add(MekanismLang.ITEM_AMOUNT, "Item amount: %s");
    add(MekanismLang.FLOWING, "Flowing: %s");
    add(MekanismLang.INVALID, "(Invalid)");
    add(MekanismLang.HAS_INVENTORY, "Inventory: %s");
    add(MekanismLang.NO_GAS, "No gas stored.");
    add(MekanismLang.FREE_RUNNERS_MODE, "Runners Mode: %s");
    add(MekanismLang.JETPACK_MODE, "Jetpack Mode: %s");
    add(MekanismLang.SCUBA_TANK_MODE, "Scuba Tank: %s");
    add(MekanismLang.FREE_RUNNERS_STORED, "Runners Energy: %s");
    add(MekanismLang.FLAMETHROWER_STORED, "Flamethrower: %s");
    add(MekanismLang.JETPACK_STORED, "Jetpack Fuel: %s");
    add(MekanismLang.PROGRESS, "Progress: %s");
    add(MekanismLang.PROCESS_RATE, "Process Rate: %s");
    add(MekanismLang.PROCESS_RATE_MB, "Process Rate: %s mB/t");
    add(MekanismLang.TICKS_REQUIRED, "Ticks Required: %s");
    add(MekanismLang.DECAY_IMMUNE, "Will not decay inside a Radioactive Waste Barrel");
    // Gui stuff
    add(MekanismLang.WIDTH, "Width");
    add(MekanismLang.HEIGHT, "Height");
    add(MekanismLang.CRAFTING_TAB, "Crafting (%s/%s)");
    add(MekanismLang.CRAFTING_WINDOW, "Crafting Window %s");
    add(MekanismLang.MIN, "Min: %s");
    add(MekanismLang.MAX, "Max: %s");
    add(MekanismLang.INFINITE, "Infinite");
    add(MekanismLang.NONE, "None");
    add(MekanismLang.EMPTY, "Empty");
    add(MekanismLang.MAX_OUTPUT, "Max Output: %s/t");
    add(MekanismLang.STORING, "Storing: %s");
    add(MekanismLang.DISSIPATED_RATE, "Dissipated: %s/t");
    add(MekanismLang.TRANSFERRED_RATE, "Transferred: %s/t");
    add(MekanismLang.FUEL, "Fuel: %s");
    add(MekanismLang.VOLUME, "Volume: %s");
    add(MekanismLang.NO_FLUID, "No fluid");
    add(MekanismLang.CHEMICAL, "Chemical: %s");
    add(MekanismLang.GAS, "Gas: %s");
    add(MekanismLang.INFUSE_TYPE, "Infuse Type: %s");
    add(MekanismLang.PIGMENT, "Pigment: %s");
    add(MekanismLang.SLURRY, "Slurry: %s");
    add(MekanismLang.LIQUID, "Liquid: %s");
    add(MekanismLang.UNIT, "Unit: %s");
    add(MekanismLang.USING, "Using: %s/t");
    add(MekanismLang.NEEDED, "Needed: %s");
    add(MekanismLang.NEEDED_PER_TICK, "Needed: %s/t");
    add(MekanismLang.FINISHED, "Finished: %s");
    add(MekanismLang.NO_RECIPE, "(No recipe)");
    add(MekanismLang.EJECT, "Eject: %s");
    add(MekanismLang.NO_DELAY, "No Delay");
    add(MekanismLang.DELAY, "Delay: %st");
    add(MekanismLang.ENERGY, "Energy: %s");
    add(MekanismLang.RESISTIVE_HEATER_USAGE, "Usage: %s/t");
    add(MekanismLang.DYNAMIC_TANK, "Dynamic Tank");
    add(MekanismLang.CHEMICAL_DISSOLUTION_CHAMBER_SHORT, "C. Dissolution Chamber");
    add(MekanismLang.CHEMICAL_INFUSER_SHORT, "C. Infuser");
    add(MekanismLang.MOVE_UP, "Move Up");
    add(MekanismLang.MOVE_DOWN, "Move Down");
    add(MekanismLang.SET, "Set:");
    add(MekanismLang.TRUE, "True");
    add(MekanismLang.FALSE, "False");
    add(MekanismLang.CLOSE, "Close");
    add(MekanismLang.RADIATION_DOSE, "Radiation Dose: %s");
    add(MekanismLang.RADIATION_EXPOSURE, "Radiation Exposure: %s");
    add(MekanismLang.RGB, "RGB:");
    add(MekanismLang.COLOR_PICKER, "Color Picker");
    add(MekanismLang.HELMET_OPTIONS, "Helmet Options");
    add(MekanismLang.HUD_OVERLAY, "HUD Overlay:");
    add(MekanismLang.OPACITY, "Opacity");
    add(MekanismLang.DEFAULT, "Default");
    add(MekanismLang.WARNING, "Warning");
    add(MekanismLang.DANGER, "Danger");
    add(MekanismLang.COMPASS, "Compass");
    add(MekanismLang.RADIAL_SCREEN, "Radial Selector Screen");
    // GUI Issues
    add(MekanismLang.ISSUES, "Issues:");
    add(MekanismLang.ISSUE_NOT_ENOUGH_ENERGY, " - Not enough energy to operate");
    add(MekanismLang.ISSUE_NOT_ENOUGH_ENERGY_REDUCED_RATE, " - Not enough energy to run at maximum speed");
    add(MekanismLang.ISSUE_NO_SPACE_IN_OUTPUT, " - Not enough room in output");
    add(MekanismLang.ISSUE_NO_MATCHING_RECIPE, " - No matching recipe or not enough input");
    add(MekanismLang.ISSUE_INPUT_DOESNT_PRODUCE_OUTPUT, " - Input does not produce output");
    add(MekanismLang.ISSUE_INVALID_OREDICTIONIFICATOR_FILTER, " - Filter is no longer valid or supported");
    add(MekanismLang.ISSUE_FILTER_HAS_BLACKLISTED_ELEMENT, " - Filter contains at least one element that is blacklisted");
    // Laser Amplifier
    add(MekanismLang.ENTITY_DETECTION, "Entity Detection");
    add(MekanismLang.ENERGY_CONTENTS, "Energy Contents");
    add(MekanismLang.REDSTONE_OUTPUT, "Redstone Output: %s");
    // Frequency
    add(MekanismLang.FREQUENCY, "Frequency: %s");
    add(MekanismLang.NO_FREQUENCY, "No frequency");
    add(MekanismLang.FREQUENCY_DELETE_CONFIRM, "Are you sure you want to delete this frequency? This can't be undone.");
    // Owner
    add(MekanismLang.NOW_OWN, "You now own this item.");
    add(MekanismLang.OWNER, "Owner: %s");
    add(MekanismLang.NO_OWNER, "No Owner");
    // Tab
    add(MekanismLang.MAIN_TAB, "Main");
    // Evaporation
    add(MekanismLang.EVAPORATION_HEIGHT, "Height: %s");
    add(MekanismLang.FLUID_PRODUCTION, "Production: %s mB/t");
    add(MekanismLang.EVAPORATION_PLANT, "Thermal Evaporation Plant");
    // Configuration
    add(MekanismLang.TRANSPORTER_CONFIG, "Transporter Config");
    add(MekanismLang.SIDE_CONFIG, "Side Config");
    add(MekanismLang.SIDE_CONFIG_CLEAR, "Clear Side Config (sets all sides to none)");
    add(MekanismLang.STRICT_INPUT, "Strict Input");
    add(MekanismLang.STRICT_INPUT_ENABLED, "Strict Input (%s)");
    add(MekanismLang.CONFIG_TYPE, "%s Config");
    add(MekanismLang.NO_EJECT, "Can't Eject");
    add(MekanismLang.CANT_EJECT_TOOLTIP, "Auto-eject is not supported, manual extraction may still be possible.");
    add(MekanismLang.SLOTS, "Slots");
    // Auto
    add(MekanismLang.AUTO_PULL, "Auto-pull");
    add(MekanismLang.AUTO_EJECT, "Auto-eject");
    add(MekanismLang.AUTO_SORT, "Auto-sort");
    // Gas mode
    add(MekanismLang.IDLE, "Idle");
    add(MekanismLang.DUMPING_EXCESS, "Dumping Excess");
    add(MekanismLang.DUMPING, "Dumping");
    // Dictionary
    add(MekanismLang.DICTIONARY_KEY, " - %s");
    add(MekanismLang.DICTIONARY_NO_KEY, "No key.");
    add(MekanismLang.DICTIONARY_BLOCK_TAGS_FOUND, "Block Tag(s) found:");
    add(MekanismLang.DICTIONARY_FLUID_TAGS_FOUND, "Fluid Tag(s) found:");
    add(MekanismLang.DICTIONARY_ENTITY_TYPE_TAGS_FOUND, "Entity Type Tag(s) found:");
    add(MekanismLang.DICTIONARY_TILE_ENTITY_TYPE_TAGS_FOUND, "Tile Entity Type Tag(s) found:");
    add(MekanismLang.DICTIONARY_TAG_TYPE, "Tag Type:");
    add(MekanismLang.DICTIONARY_ITEM, "Item");
    add(MekanismLang.DICTIONARY_ITEM_DESC, "Display Item Tags");
    add(MekanismLang.DICTIONARY_BLOCK, "Block");
    add(MekanismLang.DICTIONARY_BLOCK_DESC, "Display Block Tags");
    add(MekanismLang.DICTIONARY_FLUID, "Fluid");
    add(MekanismLang.DICTIONARY_FLUID_DESC, "Display Fluid Tags");
    add(MekanismLang.DICTIONARY_ENTITY_TYPE, "Entity Type");
    add(MekanismLang.DICTIONARY_ENTITY_TYPE_DESC, "Display Entity Type Tags");
    add(MekanismLang.DICTIONARY_POTION, "Potion");
    add(MekanismLang.DICTIONARY_POTION_DESC, "Display Potion Tags");
    add(MekanismLang.DICTIONARY_ENCHANTMENT, "Enchantment");
    add(MekanismLang.DICTIONARY_ENCHANTMENT_DESC, "Display Enchantment Tags");
    add(MekanismLang.DICTIONARY_TILE_ENTITY_TYPE, "Tile Entity Type");
    add(MekanismLang.DICTIONARY_TILE_ENTITY_TYPE_DESC, "Display Tile Entity Type Tags");
    add(MekanismLang.DICTIONARY_GAS, "Gas");
    add(MekanismLang.DICTIONARY_GAS_DESC, "Display Gas Tags");
    add(MekanismLang.DICTIONARY_INFUSE_TYPE, "Infuse Type");
    add(MekanismLang.DICTIONARY_INFUSE_TYPE_DESC, "Display Infuse Type Tags");
    add(MekanismLang.DICTIONARY_PIGMENT, "Pigment");
    add(MekanismLang.DICTIONARY_PIGMENT_DESC, "Display Pigment Tags");
    add(MekanismLang.DICTIONARY_SLURRY, "Slurry");
    add(MekanismLang.DICTIONARY_SLURRY_DESC, "Display Slurry Tags");
    // Oredictionificator
    add(MekanismLang.LAST_ITEM, "Last Item");
    add(MekanismLang.NEXT_ITEM, "Next Item");
    // Status
    add(MekanismLang.STATUS, "Status: %s");
    add(MekanismLang.STATUS_OK, "All OK");
    // Fluid container
    add(MekanismLang.FLUID_CONTAINER_BOTH, "Both");
    add(MekanismLang.FLUID_CONTAINER_FILL, "Fill");
    add(MekanismLang.FLUID_CONTAINER_EMPTY, "Empty");
    // Boolean values
    add(MekanismLang.YES, "yes");
    add(MekanismLang.NO, "no");
    add(MekanismLang.ON, "on");
    add(MekanismLang.OFF, "off");
    add(MekanismLang.INPUT, "Input");
    add(MekanismLang.OUTPUT, "Output");
    add(MekanismLang.ACTIVE, "Active");
    add(MekanismLang.DISABLED, "Disabled");
    add(MekanismLang.ON_CAPS, "ON");
    add(MekanismLang.OFF_CAPS, "OFF");
    // Capacity
    add(MekanismLang.CAPACITY, "Capacity: %s");
    add(MekanismLang.CAPACITY_ITEMS, "Capacity: %s Items");
    add(MekanismLang.CAPACITY_MB, "Capacity: %s mB");
    add(MekanismLang.CAPACITY_PER_TICK, "Capacity: %s/t");
    add(MekanismLang.CAPACITY_MB_PER_TICK, "Capacity: %s mB/t");
    // Cardboard box
    add(MekanismLang.BLOCK_DATA, "Block data: %s");
    add(MekanismLang.BLOCK, "Block: %s");
    add(MekanismLang.TILE, "Tile: %s");
    // Crafting Formula
    add(MekanismLang.INGREDIENTS, "Ingredients:");
    add(MekanismLang.ENCODED, "(Encoded)");
    // Multiblock
    add(MekanismLang.MULTIBLOCK_INCOMPLETE, "Incomplete");
    add(MekanismLang.MULTIBLOCK_FORMED, "Formed");
    add(MekanismLang.MULTIBLOCK_CONFLICT, "Conflict");
    add(MekanismLang.MULTIBLOCK_FORMED_CHAT, "Multiblock Formed");
    // Transmitter tooltips
    add(MekanismLang.UNIVERSAL, "universal");
    add(MekanismLang.ITEMS, "- Items (%s)");
    add(MekanismLang.BLOCKS, "- Blocks (%s)");
    add(MekanismLang.FLUIDS, "- Fluids (%s)");
    add(MekanismLang.GASES, "- Gases (%s)");
    add(MekanismLang.HEAT, "- Heat (%s)");
    add(MekanismLang.CONDUCTION, "Conduction: %s");
    add(MekanismLang.INSULATION, "Insulation: %s");
    add(MekanismLang.HEAT_CAPACITY, "Heat Capacity: %s");
    add(MekanismLang.CAPABLE_OF_TRANSFERRING, "Capable of transferring:");
    add(MekanismLang.DIVERSION_CONTROL_DISABLED, "Always active");
    add(MekanismLang.DIVERSION_CONTROL_HIGH, "Active with signal");
    add(MekanismLang.DIVERSION_CONTROL_LOW, "Active without signal");
    add(MekanismLang.TOGGLE_DIVERTER, "Diverter mode changed to: %s");
    add(MekanismLang.PUMP_RATE, "Pump Rate: %s/s");
    add(MekanismLang.PUMP_RATE_MB, "Pump Rate: %s mB/t");
    add(MekanismLang.SPEED, "Speed: %s m/s");
    // Condensentrator
    add(MekanismLang.CONDENSENTRATOR_TOGGLE, "Toggle operation");
    add(MekanismLang.CONDENSENTRATING, "Condensentrating");
    add(MekanismLang.DECONDENSENTRATING, "Decondensentrating");
    // Upgrades
    add(MekanismLang.UPGRADE_DISPLAY, "- %s");
    add(MekanismLang.UPGRADE_DISPLAY_LEVEL, "- %s: x%s");
    add(MekanismLang.UPGRADES_EFFECT, "Effect: %sx");
    add(MekanismLang.UPGRADES, "Upgrades");
    add(MekanismLang.UPGRADE_NO_SELECTION, "No selection.");
    add(MekanismLang.UPGRADES_SUPPORTED, "Supported:");
    add(MekanismLang.UPGRADE_COUNT, "Amount: %s/%s");
    add(MekanismLang.UPGRADE_TYPE, "%s Upgrade");
    add(MekanismLang.UPGRADE_NOT_SUPPORTED, "%s (Not Supported)");
    add(MekanismLang.UPGRADE_UNINSTALL, "Uninstall");
    add(MekanismLang.UPGRADE_UNINSTALL_TOOLTIP, "Uninstalls a single upgrade, hold shift to uninstall all.");
    // Filter
    add(MekanismLang.CREATE_FILTER_TITLE, "Create New Filter");
    add(MekanismLang.FILTERS, "Filters:");
    add(MekanismLang.FILTER_COUNT, "T: %s");
    add(MekanismLang.FILTER_ALLOW_DEFAULT, "Allow Default");
    add(MekanismLang.FILTER, "Filter");
    add(MekanismLang.FILTER_NEW, "New: %s");
    add(MekanismLang.FILTER_EDIT, "Edit: %s");
    add(MekanismLang.SORTER_SIZE_MODE, "Size Mode");
    add(MekanismLang.SORTER_SIZE_MODE_CONFLICT, "Size Mode - has no effect currently, because single item mode is turned on.");
    add(MekanismLang.FUZZY_MODE, "Fuzzy Mode");
    add(MekanismLang.MATERIAL_FILTER, "Material Filter");
    add(MekanismLang.MATERIAL_FILTER_DETAILS, "Using material of:");
    add(MekanismLang.TAG_FILTER, "Tag Filter");
    add(MekanismLang.TAG_FILTER_NO_TAG, "No tag");
    add(MekanismLang.TAG_FILTER_SAME_TAG, "Same tag");
    add(MekanismLang.TAG_FILTER_TAG, "Tag: %s");
    add(MekanismLang.MODID_FILTER, "Mod ID Filter");
    add(MekanismLang.MODID_FILTER_NO_ID, "No ID");
    add(MekanismLang.MODID_FILTER_SAME_ID, "Same ID");
    add(MekanismLang.MODID_FILTER_ID, "ID: %s");
    add(MekanismLang.ITEM_FILTER, "Item Filter");
    add(MekanismLang.ITEM_FILTER_NO_ITEM, "No item");
    add(MekanismLang.SORTER_FILTER_SIZE_MODE, "%s!");
    add(MekanismLang.SORTER_FILTER_MAX_LESS_THAN_MIN, "Max < min");
    add(MekanismLang.SORTER_FILTER_OVER_SIZED, "Max > 64");
    add(MekanismLang.SORTER_FILTER_SIZE_MISSING, "Max/min");
    add(MekanismLang.OREDICTIONIFICATOR_FILTER, "Oredictionificator Filter");
    add(MekanismLang.OREDICTIONIFICATOR_FILTER_INVALID_NAMESPACE, "Invalid tag namespace");
    add(MekanismLang.OREDICTIONIFICATOR_FILTER_INVALID_PATH, "Invalid tag path");
    add(MekanismLang.OREDICTIONIFICATOR_FILTER_UNSUPPORTED_TAG, "Unsupported tag");
    // Radioactive Waste Barrel
    add(MekanismLang.WASTE_BARREL_DECAY_RATE, "Decay Rate: %s mB/t");
    add(MekanismLang.WASTE_BARREL_DECAY_RATE_ACTUAL, "Actual Decay Rate: %s mB / %s ticks");
    // Seismic Vibrator
    add(MekanismLang.CHUNK, "Chunk: %s, %s");
    add(MekanismLang.VIBRATING, "Vibrating");
    // Seismic Reader
    add(MekanismLang.NEEDS_ENERGY, "Not enough energy to interpret vibration");
    add(MekanismLang.NO_VIBRATIONS, "Unable to discover any vibrations");
    add(MekanismLang.ABUNDANCY, "Abundancy: %s");
    // Redstone Control
    add(MekanismLang.REDSTONE_CONTROL_DISABLED, "Redstone Detection: IGNORED");
    add(MekanismLang.REDSTONE_CONTROL_HIGH, "Redstone Detection: NORMAL");
    add(MekanismLang.REDSTONE_CONTROL_LOW, "Redstone Detection: INVERTED");
    add(MekanismLang.REDSTONE_CONTROL_PULSE, "Redstone Detection: PULSE");
    // Security
    add(MekanismLang.SECURITY, "Security: %s");
    add(MekanismLang.SECURITY_OVERRIDDEN, "(Overridden)");
    add(MekanismLang.SECURITY_OFFLINE, "Security Offline");
    add(MekanismLang.SECURITY_ADD, "Add:");
    add(MekanismLang.SECURITY_OVERRIDE, "Security Override: %s");
    add(MekanismLang.NO_ACCESS, "You don't have access.");
    add(MekanismLang.TRUSTED_PLAYERS, "Trusted Players");
    add(MekanismLang.PUBLIC, "Public");
    add(MekanismLang.TRUSTED, "Trusted");
    add(MekanismLang.PRIVATE, "Private");
    add(MekanismLang.PUBLIC_MODE, "Public Mode");
    add(MekanismLang.TRUSTED_MODE, "Trusted Mode");
    add(MekanismLang.PRIVATE_MODE, "Private Mode");
    // Formulaic Assemblicator
    add(MekanismLang.ENCODE_FORMULA, "Encode Formula");
    add(MekanismLang.CRAFT_SINGLE, "Craft Single Item");
    add(MekanismLang.CRAFT_AVAILABLE, "Craft Available Items");
    add(MekanismLang.FILL_EMPTY, "Fill/Empty Grid");
    add(MekanismLang.STOCK_CONTROL, "Stock Control: %s");
    add(MekanismLang.AUTO_MODE, "Auto-Mode: %s");
    // Factory Type
    add(MekanismLang.FACTORY_TYPE, "Recipe type: %s");
    add(MekanismLang.SMELTING, "Smelting");
    add(MekanismLang.ENRICHING, "Enriching");
    add(MekanismLang.CRUSHING, "Crushing");
    add(MekanismLang.COMPRESSING, "Compressing");
    add(MekanismLang.COMBINING, "Combining");
    add(MekanismLang.PURIFYING, "Purifying");
    add(MekanismLang.INJECTING, "Injecting");
    add(MekanismLang.INFUSING, "Infusing");
    add(MekanismLang.SAWING, "Sawing");
    // Transmitter Networks
    add(MekanismLang.NETWORK_DESCRIPTION, "[%s] %s transmitters, %s acceptors.");
    add(MekanismLang.INVENTORY_NETWORK, "InventoryNetwork");
    add(MekanismLang.FLUID_NETWORK, "FluidNetwork");
    add(MekanismLang.CHEMICAL_NETWORK, "ChemicalNetwork");
    add(MekanismLang.HEAT_NETWORK, "HeatNetwork");
    add(MekanismLang.ENERGY_NETWORK, "EnergyNetwork");
    add(MekanismLang.NO_NETWORK, "No Network");
    add(MekanismLang.HEAT_NETWORK_STORED, "%s above ambient");
    add(MekanismLang.HEAT_NETWORK_FLOW, "%s transferred to acceptors, %s lost to environment.");
    add(MekanismLang.HEAT_NETWORK_FLOW_EFFICIENCY, "%s transferred to acceptors, %s lost to environment, %s efficiency.");
    add(MekanismLang.FLUID_NETWORK_NEEDED, "%s buckets");
    add(MekanismLang.NETWORK_MB_PER_TICK, "%s mB/t");
    add(MekanismLang.NETWORK_MB_STORED, "%s (%s mB)");
    // Button
    add(MekanismLang.BUTTON_CONFIRM, "Confirm");
    add(MekanismLang.BUTTON_START, "Start");
    add(MekanismLang.BUTTON_STOP, "Stop");
    add(MekanismLang.BUTTON_CONFIG, "Config");
    add(MekanismLang.BUTTON_REMOVE, "Remove");
    add(MekanismLang.BUTTON_CANCEL, "Cancel");
    add(MekanismLang.BUTTON_SAVE, "Save");
    add(MekanismLang.BUTTON_SET, "Set");
    add(MekanismLang.BUTTON_DELETE, "Delete");
    add(MekanismLang.BUTTON_OPTIONS, "Options");
    add(MekanismLang.BUTTON_TELEPORT, "Teleport");
    add(MekanismLang.BUTTON_NEW_FILTER, "New Filter");
    add(MekanismLang.BUTTON_ITEMSTACK_FILTER, "ItemStack");
    add(MekanismLang.BUTTON_TAG_FILTER, "Tag");
    add(MekanismLang.BUTTON_MATERIAL_FILTER, "Material");
    add(MekanismLang.BUTTON_MODID_FILTER, "Mod ID");
    // Configuration Card
    add(MekanismLang.CONFIG_CARD_GOT, "Retrieved configuration data from %s");
    add(MekanismLang.CONFIG_CARD_SET, "Injected configuration data of type %s");
    add(MekanismLang.CONFIG_CARD_UNEQUAL, "Unequal configuration data formats.");
    add(MekanismLang.CONFIG_CARD_HAS_DATA, "Data: %s");
    // Connection Type
    add(MekanismLang.CONNECTION_NORMAL, "Normal");
    add(MekanismLang.CONNECTION_PUSH, "Push");
    add(MekanismLang.CONNECTION_PULL, "Pull");
    add(MekanismLang.CONNECTION_NONE, "None");
    // Teleporter
    add(MekanismLang.TELEPORTER_READY, "Ready");
    add(MekanismLang.TELEPORTER_NO_FRAME, "No frame");
    add(MekanismLang.TELEPORTER_NO_LINK, "No link");
    add(MekanismLang.TELEPORTER_NEEDS_ENERGY, "Needs energy");
    // Matrix
    add(MekanismLang.MATRIX, "Induction Matrix");
    add(MekanismLang.MATRIX_RECEIVING_RATE, "Receiving: %s/t");
    add(MekanismLang.MATRIX_OUTPUT_AMOUNT, "Output: %s");
    add(MekanismLang.MATRIX_OUTPUT_RATE, "Output: %s/t");
    add(MekanismLang.MATRIX_OUTPUTTING_RATE, "Outputting: %s/t");
    add(MekanismLang.MATRIX_INPUT_AMOUNT, "Input: %s");
    add(MekanismLang.MATRIX_INPUT_RATE, "Input: %s/t");
    add(MekanismLang.MATRIX_CONSTITUENTS, "Constituents:");
    add(MekanismLang.MATRIX_DIMENSIONS, "Dimensions:");
    add(MekanismLang.MATRIX_DIMENSION_REPRESENTATION, "%s x %s x %s");
    add(MekanismLang.MATRIX_STATS, "Matrix Statistics");
    add(MekanismLang.MATRIX_CELLS, "%s cells");
    add(MekanismLang.MATRIX_PROVIDERS, "%s providers");
    add(MekanismLang.INDUCTION_PORT_MODE, "Toggled Induction Port transfer mode to %s.");
    add(MekanismLang.INDUCTION_PORT_OUTPUT_RATE, "Output Rate: %s");
    // Miner
    add(MekanismLang.MINER_INSUFFICIENT_BUFFER, "Insufficient energy buffer!");
    add(MekanismLang.MINER_BUFFER_FREE, "Free Buffer: %s");
    add(MekanismLang.MINER_TO_MINE, "To mine: %s");
    add(MekanismLang.MINER_SILK_ENABLED, "Silk: %s");
    add(MekanismLang.MINER_AUTO_PULL, "Pull: %s");
    add(MekanismLang.MINER_RUNNING, "Running");
    add(MekanismLang.MINER_LOW_POWER, "Low Power");
    add(MekanismLang.MINER_ENERGY_CAPACITY, "Energy Capacity: %s");
    add(MekanismLang.MINER_MISSING_BLOCK, "Missing block");
    add(MekanismLang.MINER_WELL, "All is well!");
    add(MekanismLang.MINER_CONFIG, "Digital Miner Config");
    add(MekanismLang.MINER_SILK, "Silk touch");
    add(MekanismLang.MINER_RESET, "Reset");
    add(MekanismLang.MINER_INVERSE, "Inverse mode");
    add(MekanismLang.MINER_VISUALS, "Visuals: %s");
    add(MekanismLang.MINER_VISUALS_TOO_BIG, "Radius too big to display visuals");
    add(MekanismLang.MINER_REQUIRE_REPLACE, "Require replace: %s");
    add(MekanismLang.MINER_REQUIRE_REPLACE_INVERSE, "Inverse mode requires replacement: %s");
    add(MekanismLang.MINER_RADIUS, "Radi: %s");
    add(MekanismLang.MINER_IDLE, "Not ready");
    add(MekanismLang.MINER_SEARCHING, "Searching");
    add(MekanismLang.MINER_PAUSED, "Paused");
    add(MekanismLang.MINER_READY, "Ready");
    // Boiler
    add(MekanismLang.BOILER, "Thermoelectric Boiler");
    add(MekanismLang.BOILER_STATS, "Boiler Statistics");
    add(MekanismLang.BOILER_MAX_WATER, "Max Water: %s mB");
    add(MekanismLang.BOILER_MAX_STEAM, "Max Steam: %s mB");
    add(MekanismLang.BOILER_HEAT_TRANSFER, "Heat Transfer");
    add(MekanismLang.BOILER_HEATERS, "Superheaters: %s");
    add(MekanismLang.BOILER_CAPACITY, "Boil Capacity: %s mB/t");
    add(MekanismLang.BOIL_RATE, "Boil Rate: %s mB/t");
    add(MekanismLang.MAX_BOIL_RATE, "Max Boil: %s mB/t");
    add(MekanismLang.BOILER_VALVE_MODE_CHANGE, "Valve mode changed to: %s");
    add(MekanismLang.BOILER_VALVE_MODE_INPUT, "input only");
    add(MekanismLang.BOILER_VALVE_MODE_OUTPUT_COOLANT, "output coolant");
    add(MekanismLang.BOILER_VALVE_MODE_OUTPUT_STEAM, "output steam");
    add(MekanismLang.BOILER_WATER_TANK, "Water Tank");
    add(MekanismLang.BOILER_STEAM_TANK, "Steam Tank");
    add(MekanismLang.BOILER_HEATED_COOLANT_TANK, "Heated Coolant Tank");
    add(MekanismLang.BOILER_COOLANT_TANK, "Coolant Tank");
    // Temperature
    add(MekanismLang.TEMPERATURE, "Temp: %s");
    add(MekanismLang.TEMPERATURE_LONG, "Temperature: %s");
    add(MekanismLang.TEMPERATURE_KELVIN, "Kelvin");
    add(MekanismLang.TEMPERATURE_KELVIN_SHORT, "K");
    add(MekanismLang.TEMPERATURE_CELSIUS, "Celsius");
    add(MekanismLang.TEMPERATURE_CELSIUS_SHORT, "C");
    add(MekanismLang.TEMPERATURE_RANKINE, "Rankine");
    add(MekanismLang.TEMPERATURE_RANKINE_SHORT, "R");
    add(MekanismLang.TEMPERATURE_FAHRENHEIT, "Fahrenheit");
    add(MekanismLang.TEMPERATURE_FAHRENHEIT_SHORT, "F");
    add(MekanismLang.TEMPERATURE_AMBIENT, "Ambient");
    add(MekanismLang.TEMPERATURE_AMBIENT_SHORT, "STP");
    // Energy
    add(MekanismLang.ENERGY_JOULES, "Joule");
    add(MekanismLang.ENERGY_JOULES_PLURAL, "Joules");
    add(MekanismLang.ENERGY_JOULES_SHORT, "J");
    add(MekanismLang.ENERGY_FORGE, "Forge Energy");
    add(MekanismLang.ENERGY_FORGE_SHORT, "FE");
    add(MekanismLang.ENERGY_EU, "Electrical Unit");
    add(MekanismLang.ENERGY_EU_PLURAL, "Electrical Units");
    add(MekanismLang.ENERGY_EU_SHORT, "EU");
    // Network Reader
    add(MekanismLang.NETWORK_READER_BORDER, "%s %s %1$s");
    add(MekanismLang.NETWORK_READER_TEMPERATURE, " *Temperature: %s");
    add(MekanismLang.NETWORK_READER_TRANSMITTERS, " *Transmitters: %s");
    add(MekanismLang.NETWORK_READER_ACCEPTORS, " *Acceptors: %s");
    add(MekanismLang.NETWORK_READER_NEEDED, " *Needed: %s");
    add(MekanismLang.NETWORK_READER_BUFFER, " *Buffer: %s");
    add(MekanismLang.NETWORK_READER_THROUGHPUT, " *Throughput: %s");
    add(MekanismLang.NETWORK_READER_CAPACITY, " *Capacity: %s");
    add(MekanismLang.NETWORK_READER_CONNECTED_SIDES, " *Connected sides: %s");
    // Sorter
    add(MekanismLang.SORTER_DEFAULT, "Default:");
    add(MekanismLang.SORTER_SINGLE_ITEM, "Single:");
    add(MekanismLang.SORTER_ROUND_ROBIN, "RR:");
    add(MekanismLang.SORTER_AUTO_EJECT, "Auto:");
    add(MekanismLang.SORTER_SINGLE_ITEM_DESCRIPTION, "Sends a single item instead of a whole stack each time (overrides min and max set in ItemStack filters).");
    add(MekanismLang.SORTER_ROUND_ROBIN_DESCRIPTION, "Cycles between all connected inventories when sending items.");
    add(MekanismLang.SORTER_AUTO_EJECT_DESCRIPTION, "Ejects unfiltered items automatically to connected inventories, using the default configuration.");
    // Side data/config
    add(MekanismLang.SIDE_DATA_NONE, "None");
    add(MekanismLang.SIDE_DATA_INPUT, "Input");
    add(MekanismLang.SIDE_DATA_INPUT_1, "Input (1)");
    add(MekanismLang.SIDE_DATA_INPUT_2, "Input (2)");
    add(MekanismLang.SIDE_DATA_OUTPUT, "Output");
    add(MekanismLang.SIDE_DATA_OUTPUT_1, "Output (1)");
    add(MekanismLang.SIDE_DATA_OUTPUT_2, "Output (2)");
    add(MekanismLang.SIDE_DATA_INPUT_OUTPUT, "Input/Output");
    add(MekanismLang.SIDE_DATA_ENERGY, "Energy");
    add(MekanismLang.SIDE_DATA_EXTRA, "Extra");
    // Free runner modes
    add(MekanismLang.FREE_RUNNER_MODE_CHANGE, "Free runner mode changed to: %s");
    add(MekanismLang.FREE_RUNNER_NORMAL, "Regular");
    add(MekanismLang.FREE_RUNNER_DISABLED, "Disabled");
    // Jetpack Modes
    add(MekanismLang.JETPACK_MODE_CHANGE, "Jetpack mode changed to: %s");
    add(MekanismLang.JETPACK_NORMAL, "Regular");
    add(MekanismLang.JETPACK_HOVER, "Hover");
    add(MekanismLang.JETPACK_DISABLED, "Disabled");
    // Disassembler Mode
    add(MekanismLang.DISASSEMBLER_MODE_CHANGE, "Mode toggled to: %s (%s)");
    add(MekanismLang.DISASSEMBLER_EFFICIENCY, "Efficiency: %s");
    add(MekanismLang.DISASSEMBLER_NORMAL, "normal");
    add(MekanismLang.DISASSEMBLER_SLOW, "slow");
    add(MekanismLang.DISASSEMBLER_FAST, "fast");
    add(MekanismLang.DISASSEMBLER_VEIN, "vein");
    add(MekanismLang.DISASSEMBLER_OFF, "off");
    // Flamethrower Modes
    add(MekanismLang.FLAMETHROWER_MODE_CHANGE, "Flamethrower mode changed to: %s");
    add(MekanismLang.FLAMETHROWER_COMBAT, "Combat");
    add(MekanismLang.FLAMETHROWER_HEAT, "Heat");
    add(MekanismLang.FLAMETHROWER_INFERNO, "Inferno");
    // Configurator
    add(MekanismLang.CONFIGURE_STATE, "Configure State: %s");
    add(MekanismLang.STATE, "State: %s");
    add(MekanismLang.TOGGLE_COLOR, "Color bumped to: %s");
    add(MekanismLang.CURRENT_COLOR, "Current color: %s");
    add(MekanismLang.PUMP_RESET, "Reset Electric Pump calculation");
    add(MekanismLang.PLENISHER_RESET, "Reset Fluidic Plenisher calculation");
    add(MekanismLang.REDSTONE_SENSITIVITY, "Redstone sensitivity turned: %s");
    add(MekanismLang.CONNECTION_TYPE, "Connection type changed to: %s");
    // Configurator Modes
    add(MekanismLang.CONFIGURATOR_VIEW_MODE, "Current %s behavior: %s (%s)");
    add(MekanismLang.CONFIGURATOR_TOGGLE_MODE, "%s behavior bumped to: %s (%s)");
    add(MekanismLang.CONFIGURATOR_CONFIGURATE, "Configurate (%s)");
    add(MekanismLang.CONFIGURATOR_EMPTY, "Empty");
    add(MekanismLang.CONFIGURATOR_ROTATE, "Rotate");
    add(MekanismLang.CONFIGURATOR_WRENCH, "Wrench");
    // Robit
    add(MekanismLang.ROBIT, "Robit");
    add(MekanismLang.ROBIT_NAME, "Name: %s");
    add(MekanismLang.ROBIT_SMELTING, "Robit Smelting");
    add(MekanismLang.ROBIT_CRAFTING, "Robit Crafting");
    add(MekanismLang.ROBIT_INVENTORY, "Robit Inventory");
    add(MekanismLang.ROBIT_REPAIR, "Robit Repair");
    add(MekanismLang.ROBIT_TELEPORT, "Teleport back home");
    add(MekanismLang.ROBIT_TOGGLE_PICKUP, "Toggle 'drop pickup' mode");
    add(MekanismLang.ROBIT_RENAME, "Rename this Robit");
    add(MekanismLang.ROBIT_SKIN, "Skin: %s");
    add(MekanismLang.ROBIT_SKIN_SELECT, "Change this Robit's appearance");
    add(MekanismLang.ROBIT_TOGGLE_FOLLOW, "Toggle 'follow' mode");
    add(MekanismLang.ROBIT_GREETING, "Hi, I'm %s!");
    add(MekanismLang.ROBIT_OWNER, "Owner: %s");
    add(MekanismLang.ROBIT_FOLLOWING, "Following: %s");
    add(MekanismLang.ROBIT_DROP_PICKUP, "Drop pickup: %s");
    // Descriptions
    add(MekanismLang.DESCRIPTION_QIO_DRIVE_ARRAY, "The foundation of any Quantum Item Orchestration system. QIO Drives are stored here.");
    add(MekanismLang.DESCRIPTION_QIO_DASHBOARD, "A placeable monitor used to access an Quantum Item Orchestration system's contents.");
    add(MekanismLang.DESCRIPTION_QIO_IMPORTER, "A QIO-linked item import unit. Place on a block and import its contents to your QIO system.");
    add(MekanismLang.DESCRIPTION_QIO_EXPORTER, "A QIO-linked item export unit. Place on a block and export contents from your QIO system to the block.");
    add(MekanismLang.DESCRIPTION_QIO_REDSTONE_ADAPTER, "A QIO-linked redstone adapter. Use to monitor your QIO system's contents.");
    add(MekanismLang.DESCRIPTION_DICTIONARY, "A tool used for viewing the tags of various components such as: items, blocks, and fluids.");
    add(MekanismLang.DESCRIPTION_SEISMIC_READER, "A portable machine that uses seismic vibrations to provide information on differing layers of the world.");
    add(MekanismLang.DESCRIPTION_BIN, "A block used to store large quantities of a single type of item.");
    add(MekanismLang.DESCRIPTION_TELEPORTER_FRAME, "The frame used to construct the Teleporter multiblock, allowing a portal to be generated within the structure.");
    add(MekanismLang.DESCRIPTION_STEEL_CASING, "A sturdy, steel-based casing used as a foundation for machinery.");
    add(MekanismLang.DESCRIPTION_DYNAMIC_TANK, "The casing used in the Dynamic Tank multiblock, a structure capable of storing great amounts of fluid and chemicals.");
    add(MekanismLang.DESCRIPTION_STRUCTURAL_GLASS, "An advanced, reinforced material of glass that drops when broken and can be used in the structure of any applicable multiblock.");
    add(MekanismLang.DESCRIPTION_DYNAMIC_VALVE, "A valve that can be placed on a Dynamic Tank multiblock, allowing for fluids and chemicals to be inserted and extracted via external piping.");
    add(MekanismLang.DESCRIPTION_THERMAL_EVAPORATION_CONTROLLER, "The controller for a Thermal Evaporation Plant, acting as the master block of the structure. Only one of these should be placed on a multiblock.");
    add(MekanismLang.DESCRIPTION_THERMAL_EVAPORATION_VALVE, "A valve that can be placed on a Thermal Evaporation Plant multiblock, allowing for fluids to be inserted and extracted via external piping.");
    add(MekanismLang.DESCRIPTION_THERMAL_EVAPORATION_BLOCK, "A copper-alloyed casing used in the structure of a Thermal Evaporation Plant, using its advanced material to conduct the great amounts of heat necessary for processing.");
    add(MekanismLang.DESCRIPTION_INDUCTION_CASING, "A type of energy-resistant casing used in the creation of an Energized Induction Matrix multiblock.");
    add(MekanismLang.DESCRIPTION_INDUCTION_PORT, "A port that can be placed on an Energized Induction Matrix multiblock, allowing for energy to be inserted from and output to external cabling.");
    add(MekanismLang.DESCRIPTION_INDUCTION_CELL, "A highly conductive energy capacitor capable of storing massive amounts of energy in a single block. Housed in an Energized Induction Matrix to expand the multiblock's energy storage.");
    add(MekanismLang.DESCRIPTION_INDUCTION_PROVIDER, "An advanced complex of coolant systems, conductors and transformers capable of expanding the Energized Induction Matrix's maximum rate of energy transfer.");
    add(MekanismLang.DESCRIPTION_SUPERHEATING_ELEMENT, "A modular, somewhat dangerous radiator that is capable of emitting massive amounts of heat to its surroundings.");
    add(MekanismLang.DESCRIPTION_PRESSURE_DISPERSER, "A block used to disperse steam throughout a multiblock structure. These should form a gapless, horizontal plane in order to properly control steam flow.");
    add(MekanismLang.DESCRIPTION_BOILER_CASING, "A pressure-resistant, dense casing used in the creation of a Thermoelectric Boiler multiblock.");
    add(MekanismLang.DESCRIPTION_BOILER_VALVE, "A valve that can be placed on a Thermoelectric Boiler multiblock, allowing for the insertion of energy and water along with the extraction of produced steam.");
    add(MekanismLang.DESCRIPTION_SECURITY_DESK, "A central control hub for managing the security of all your owned machinery.");
    add(MekanismLang.DESCRIPTION_ENRICHMENT_CHAMBER, "A simple machine used to enrich ores into two of their dust counterparts, as well as perform many other operations.");
    add(MekanismLang.DESCRIPTION_OSMIUM_COMPRESSOR, "A fairly advanced machine used to compress osmium into various dusts in order to create their ingot counterparts.");
    add(MekanismLang.DESCRIPTION_COMBINER, "A machine used to combine items together. For example, dusts and cobblestone to form their ore counterparts.");
    add(MekanismLang.DESCRIPTION_CRUSHER, "A machine used to crush ingots into their dust counterparts, as well as perform many other operations.");
    add(MekanismLang.DESCRIPTION_DIGITAL_MINER, "A highly-advanced, filter-based, auto-miner that can mine whatever block you tell it to within a 32 block (max) radius.");
    add(MekanismLang.DESCRIPTION_METALLURGIC_INFUSER, "A machine used to infuse various materials into (generally) metals to create metal alloys and other compounds.");
    add(MekanismLang.DESCRIPTION_PURIFICATION_CHAMBER, "An advanced machine capable of processing ores into three clumps, serving as the initial stage of 300% ore processing.");
    add(MekanismLang.DESCRIPTION_ENERGIZED_SMELTER, "A simple machine that serves as a Mekanism-based furnace that runs off of energy.");
    add(MekanismLang.DESCRIPTION_TELEPORTER, "A machine capable of teleporting players to various locations defined by another teleporter.");
    add(MekanismLang.DESCRIPTION_ELECTRIC_PUMP, "An advanced, upgradeable pump, capable of extracting any type of fluid.");
    add(MekanismLang.DESCRIPTION_PERSONAL_CHEST, "A 54-slot chest that can be opened anywhere- even from your own inventory.");
    add(MekanismLang.DESCRIPTION_CHARGEPAD, "A universal chargepad that can charge any energized item from any mod.");
    add(MekanismLang.DESCRIPTION_LOGISTICAL_SORTER, "A filter-based, advanced sorting machine that can auto-eject specified items out of and into adjacent inventories and Logistical Transporters.");
    add(MekanismLang.DESCRIPTION_ROTARY_CONDENSENTRATOR, "A machine capable of converting gases into their fluid form and vice versa.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_INJECTION_CHAMBER, "An elite machine capable of processing ores into four shards, serving as the initial stage of 400% ore processing.");
    add(MekanismLang.DESCRIPTION_ELECTROLYTIC_SEPARATOR, "A machine that uses the process of electrolysis to split apart a certain gas into two different gases.");
    add(MekanismLang.DESCRIPTION_PRECISION_SAWMILL, "A machine used to process logs and other wood-based items more efficiently, as well as to obtain sawdust.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_DISSOLUTION_CHAMBER, "An ultimate machine used to chemically dissolve all impurities of an ore, leaving an unprocessed slurry behind.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_WASHER, "An ultimate machine that cleans unprocessed slurry and prepares it for crystallization.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_CRYSTALLIZER, "An ultimate machine used to crystallize purified ore slurry into ore crystals.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_OXIDIZER, "A machine capable of oxidizing solid materials into gas phase.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_INFUSER, "A machine that produces a new gas by infusing two others.");
    add(MekanismLang.DESCRIPTION_SEISMIC_VIBRATOR, "A machine that uses seismic vibrations to provide information on differing layers of the world.");
    add(MekanismLang.DESCRIPTION_PRESSURIZED_REACTION_CHAMBER, "An advanced machine that processes a solid, liquid and gaseous mixture and creates both a gaseous and solid product.");
    add(MekanismLang.DESCRIPTION_FLUID_TANK, "A handy, sturdy, portable tank that lets you carry multiple buckets of fluid wherever you please. Also doubles as a bucket!");
    add(MekanismLang.DESCRIPTION_FLUIDIC_PLENISHER, "A machine that is capable of creating entire lakes by filling ravines with fluids.");
    add(MekanismLang.DESCRIPTION_LASER, "An advanced form of linear energy transfer that utilizes an extremely collimated beam of light.");
    add(MekanismLang.DESCRIPTION_LASER_AMPLIFIER, "A block that can be used to merge, redirect and amplify laser beams, with fine controls over when to fire.");
    add(MekanismLang.DESCRIPTION_LASER_TRACTOR_BEAM, "A block used to merge and redirect laser beams. Collects drops from blocks it has broken.");
    add(MekanismLang.DESCRIPTION_SOLAR_NEUTRON_ACTIVATOR, "A machine that directs the neutron radiation of the sun into its internal reservoir, allowing for the slow creation of various isotopes.");
    add(MekanismLang.DESCRIPTION_OREDICTIONIFICATOR, "A machine used to unify and translate between various items and blocks using the Ore Dictionary.");
    add(MekanismLang.DESCRIPTION_FACTORY, "A machine that serves as an upgrade to regular machinery, allowing for multiple processing operations to occur at once.");
    add(MekanismLang.DESCRIPTION_RESISTIVE_HEATER, "A condensed, coiled resistor capable of converting electrical energy directly into heat energy.");
    add(MekanismLang.DESCRIPTION_FORMULAIC_ASSEMBLICATOR, "A machine that uses energy to rapidly craft items and blocks from Crafting Formulas. Doubles as an advanced crafting bench.");
    add(MekanismLang.DESCRIPTION_FUELWOOD_HEATER, "A machine that is capable of producing large quantities of heat energy by burning combustible items.");
    add(MekanismLang.DESCRIPTION_MODIFICATION_STATION, "An advanced workbench capable of installing and removing modules from modular equipment (i.e. MekaSuit!)");
    add(MekanismLang.DESCRIPTION_ISOTOPIC_CENTRIFUGE, "A machine with one single purpose: to spin its contents really, REALLY fast.");
    add(MekanismLang.DESCRIPTION_QUANTUM_ENTANGLOPORTER, "A highly-advanced block capable of transmitting any practical resource across long distances and dimensions.");
    add(MekanismLang.DESCRIPTION_NUTRITIONAL_LIQUIFIER, "A machine that is capable of processing any foods into non-dangerous, easily-digestible Nutritional Paste.");
    add(MekanismLang.DESCRIPTION_ANTIPROTONIC_NUCLEOSYNTHESIZER, "A machine which uses bits of antimatter and mass amounts of energy to atomically transmute various resources.");
    add(MekanismLang.DESCRIPTION_PIGMENT_EXTRACTOR, "A machine used to extract pigments from blocks and items.");
    add(MekanismLang.DESCRIPTION_PIGMENT_MIXER, "A sturdy machine capable of mixing two pigments together to produce a new pigment.");
    add(MekanismLang.DESCRIPTION_PAINTING_MACHINE, "A machine used to color blocks and items via a careful application of a stored pigment.");
    add(MekanismLang.DESCRIPTION_RADIOACTIVE_WASTE_BARREL, "A barrel that can be used to 'safely' store radioactive waste. WARNING: breaking this barrel will release its contents into the atmosphere.");
    add(MekanismLang.DESCRIPTION_INDUSTRIAL_ALARM, "Not just your everyday alarm... this is an 'industrial' alarm!");
    add(MekanismLang.DESCRIPTION_ENERGY_CUBE, "An advanced device for storing and distributing energy.");
    add(MekanismLang.DESCRIPTION_CHEMICAL_TANK, "A portable tank that lets you carry chemicals wherever you please.");
    add(MekanismLang.DESCRIPTION_DIVERSION, "- Controllable by redstone");
    add(MekanismLang.DESCRIPTION_RESTRICTIVE, "- Only used if no other paths available");
    add(MekanismLang.DESCRIPTION_SPS_CASING, "Reinforced casing capable of resisting intense chemical and thermal effects from phase-shifting reactions.");
    add(MekanismLang.DESCRIPTION_SPS_PORT, "A port used for the transfer of energy and substances in the Supercritical Phase Shifter.");
    add(MekanismLang.DESCRIPTION_SUPERCHARGED_COIL, "Used in Supercritical Phase Shifter multiblock to supply large quantities of energy. Must be attached to a SPS Port.");
    // Modules
    add(MekanismLang.MODULE_ENABLED, "Enabled");
    add(MekanismLang.MODULE_ENABLED_LOWER, "enabled");
    add(MekanismLang.MODULE_DISABLED_LOWER, "disabled");
    add(MekanismLang.MODULE_DAMAGE, "Damage: %s");
    add(MekanismLang.MODULE_TWEAKER, "Module Tweaker");
    add(MekanismLang.MODULE_INSTALLED, "Installed: %s");
    add(MekanismLang.MODULE_STACKABLE, "Stackable: %s");
    add(MekanismLang.MODULE_EXCLUSIVE, "(Exclusive Module)");
    add(MekanismLang.MODULE_HANDLE_MODE_CHANGE, "Handle Mode Key");
    add(MekanismLang.MODULE_RENDER_HUD, "Show in HUD");
    add(MekanismLang.MODULE_MODE, "Mode");
    add(MekanismLang.MODULE_ATTACK_DAMAGE, "Attack Damage");
    add(MekanismLang.MODULE_FARMING_RADIUS, "Farming Radius");
    add(MekanismLang.MODULE_JUMP_BOOST, "Jump Boost");
    add(MekanismLang.MODULE_STEP_ASSIST, "Step Assist");
    add(MekanismLang.MODULE_RANGE, "Range");
    add(MekanismLang.MODULE_SPRINT_BOOST, "Sprint Boost");
    add(MekanismLang.MODULE_EXTENDED_MODE, "Extended Mode");
    add(MekanismLang.MODULE_EXTENDED_ENABLED, "Extended Vein Mining: %s");
    add(MekanismLang.MODULE_EXCAVATION_RANGE, "Excavation Range");
    add(MekanismLang.MODULE_EFFICIENCY, "Efficiency");
    add(MekanismLang.MODULE_MODE_CHANGE, "%s bumped to: %s");
    add(MekanismLang.MODULE_JETPACK_MODE, "Jetpack Mode");
    add(MekanismLang.MODULE_GRAVITATIONAL_MODULATION, "Gravitational Modulation");
    add(MekanismLang.MODULE_MAGNETIC_ATTRACTION, "Magnetic Attraction");
    add(MekanismLang.MODULE_CHARGE_SUIT, "Charge Suit");
    add(MekanismLang.MODULE_CHARGE_INVENTORY, "Charge Inventory");
    add(MekanismLang.MODULE_SPEED_BOOST, "Speed Boost");
    add(MekanismLang.MODULE_VISION_ENHANCEMENT, "Vision Enhancement");
    add(MekanismLang.MODULE_BREATHING_HELD, "Fill Held");
    add(MekanismLang.MODULE_PURIFICATION_BENEFICIAL, "Remove Beneficial");
    add(MekanismLang.MODULE_PURIFICATION_NEUTRAL, "Remove Neutral");
    add(MekanismLang.MODULE_PURIFICATION_HARMFUL, "Remove Harmful");
    add(MekanismLang.MODULE_TELEPORT_REQUIRES_BLOCK, "Requires Block Target");
    add(MekanismModules.ENERGY_UNIT, "Energy Unit", "Increases maximum energy capacity.");
    add(MekanismModules.LASER_DISSIPATION_UNIT, "Laser Dissipation Unit", "Refracts and safely dissipates lasers that hit any MekaSuit armor piece.");
    add(MekanismModules.RADIATION_SHIELDING_UNIT, "Radiation Shielding Unit", "Provides thick, radiation-proof metal plating to any MekaSuit armor piece.");
    add(MekanismModules.EXCAVATION_ESCALATION_UNIT, "Excavation Escalation Unit", "Increases digging speed on any block.");
    add(MekanismModules.ATTACK_AMPLIFICATION_UNIT, "Attack Amplification Unit", "Amplifies melee attacks on players or mobs.");
    add(MekanismModules.SILK_TOUCH_UNIT, "Silk Touch Unit", "Allows all mined blocks to drop as themselves.");
    add(MekanismModules.VEIN_MINING_UNIT, "Vein Mining Unit", "Allows for quick mining of ore deposits and rapid felling of trees.");
    add(MekanismModules.FARMING_UNIT, "Farming Unit", "Allows for soil tilling, log stripping, and soil flattening.");
    add(MekanismModules.SHEARING_UNIT, "Shearing Unit", "Allows the creation of energy blades for precise cutting jobs. Does not add laser swords.");
    add(MekanismModules.TELEPORTATION_UNIT, "Teleportation Unit", "Provides for quick travel to nearby blocks.");
    add(MekanismModules.ELECTROLYTIC_BREATHING_UNIT, "Electrolytic Breathing Unit", "Uses electrolysis to create breathable oxygen from water. Will also fill a jetpack module with hydrogen when necessary.");
    add(MekanismModules.INHALATION_PURIFICATION_UNIT, "Inhalation Purification Unit", "Applies a miniature electromagnetic field around the breathing apparatus, preventing selected potion effect types.");
    add(MekanismModules.VISION_ENHANCEMENT_UNIT, "Vision Enhancement Unit", "Brightens the surrounding environment, allowing the user to see through darkness. Install multiple for more effective night vision.");
    add(MekanismModules.SOLAR_RECHARGING_UNIT, "Solar Recharging Unit", "Harnesses the power of the sun to charge your MekaSuit. Install multiple for faster charging. Requires Mekanism: Generators.");
    add(MekanismModules.NUTRITIONAL_INJECTION_UNIT, "Nutritional Injection Unit", "Automatically feeds the player Nutritional Paste when hungry.");
    add(MekanismModules.JETPACK_UNIT, "Jetpack Unit", "Applies a hydrogen-fueled jetpack to the MekaSuit.");
    add(MekanismModules.GRAVITATIONAL_MODULATING_UNIT, "Gravitational Modulating Unit", "Using experimental technologies and the tremendous energy of antimatter, allows the user to defy gravity.");
    add(MekanismModules.ELYTRA_UNIT, "Elytra Unit", "Applies an HDPE Reinforced Elytra to the MekaSuit.");
    add(MekanismModules.CHARGE_DISTRIBUTION_UNIT, "Charge Distribution Unit", "Evenly distributes charge throughout all worn MekaSuit armor.");
    add(MekanismModules.DOSIMETER_UNIT, "Dosimeter Unit", "Displays the user's current radiation dose in the HUD.");
    add(MekanismModules.GEIGER_UNIT, "Geiger Unit", "Displays the ambient radiation level in the HUD.");
    add(MekanismModules.LOCOMOTIVE_BOOSTING_UNIT, "Locomotive Boosting Unit", "Increases the user's sprinting speed (and jumping distance).");
    add(MekanismModules.HYDRAULIC_PROPULSION_UNIT, "Hydraulic Propulsion Unit", "Allows the user to both step and jump higher.");
    add(MekanismModules.MAGNETIC_ATTRACTION_UNIT, "Magnetic Attraction Unit", "Uses powerful magnets to draw distant items towards the player. Install multiple for a greater range.");
    add(MekanismModules.FROST_WALKER_UNIT, "Frost Walker Unit", "Uses liquid hydrogen to freeze any water the player walks on. Install multiple for a greater range.");
}
Also used : EnumColor(mekanism.api.text.EnumColor)

Example 4 with EnumColor

use of mekanism.api.text.EnumColor in project Mekanism by mekanism.

the class ModelEnergyCube method render.

public void render(@Nonnull MatrixStack matrix, @Nonnull IRenderTypeBuffer renderer, int light, int overlayLight, EnergyCubeTier tier, boolean renderMain, boolean hasEffect) {
    if (renderMain) {
        renderToBuffer(matrix, getVertexBuilder(renderer, RENDER_TYPE, hasEffect), light, overlayLight, 1, 1, 1, 1);
    }
    EnumColor color = tier.getBaseTier().getColor();
    renderCorners(matrix, getVertexBuilder(renderer, RENDER_TYPE_BASE, hasEffect), MekanismRenderer.FULL_LIGHT, overlayLight, color.getColor(0), color.getColor(1), color.getColor(2), 1);
}
Also used : EnumColor(mekanism.api.text.EnumColor)

Example 5 with EnumColor

use of mekanism.api.text.EnumColor in project Mekanism by mekanism.

the class ILikeWoodRecipeProvider method addBedRecipe.

private static void addBedRecipe(Consumer<IFinishedRecipe> consumer, ICondition condition, IItemProvider planks, IWoodType woodType, EnumColor color, String basePath) {
    DyeColor dye = color.getDyeColor();
    if (dye != null) {
        WoodenBlockType bedType = getBedType(dye);
        Block bed = ILikeWood.getBlock(woodType, bedType);
        RecipeProviderUtil.addPrecisionSawmillBedRecipe(consumer, basePath, bed, planks, dye, condition);
        ItemStackChemicalToItemStackRecipeBuilder.painting(ItemStackIngredient.from(Ingredient.of(WoodenBlockType.getBeds().filter(b -> !b.equals(bedType)).map(b -> new ItemStack(ILikeWood.getBlock(woodType, b))))), PigmentStackIngredient.from(MekanismPigments.PIGMENT_COLOR_LOOKUP.get(color), PigmentExtractingRecipeProvider.DYE_RATE), new ItemStack(bed)).addCondition(condition).build(consumer, Mekanism.rl(basePath + "painting/" + color.getRegistryPrefix()));
    }
}
Also used : EnumColor(mekanism.api.text.EnumColor) RecipeProviderUtil(mekanism.common.recipe.RecipeProviderUtil) Ingredient(net.minecraft.item.crafting.Ingredient) Item(net.minecraft.item.Item) ItemStackIngredient(mekanism.api.recipes.inputs.ItemStackIngredient) ICondition(net.minecraftforge.common.crafting.conditions.ICondition) ParametersAreNonnullByDefault(javax.annotation.ParametersAreNonnullByDefault) DyeColor(net.minecraft.item.DyeColor) ItemStack(net.minecraft.item.ItemStack) Block(net.minecraft.block.Block) WoodenItemType(yamahari.ilikewood.registry.objecttype.WoodenItemType) PigmentExtractingRecipeProvider(mekanism.common.recipe.impl.PigmentExtractingRecipeProvider) IFinishedRecipe(net.minecraft.data.IFinishedRecipe) WoodenBlockType(yamahari.ilikewood.registry.objecttype.WoodenBlockType) MekanismItems(mekanism.common.registries.MekanismItems) VanillaWoodTypes(yamahari.ilikewood.plugin.vanilla.VanillaWoodTypes) Mekanism(mekanism.common.Mekanism) EnumUtils(mekanism.common.util.EnumUtils) IWoodType(yamahari.ilikewood.registry.woodtype.IWoodType) PigmentStackIngredient(mekanism.api.recipes.inputs.chemical.PigmentStackIngredient) Items(net.minecraft.item.Items) ItemStackChemicalToItemStackRecipeBuilder(mekanism.api.datagen.recipe.builder.ItemStackChemicalToItemStackRecipeBuilder) ModVersionLoadedCondition(mekanism.common.recipe.condition.ModVersionLoadedCondition) Blocks(net.minecraft.block.Blocks) Consumer(java.util.function.Consumer) IItemProvider(net.minecraft.util.IItemProvider) ILikeWood(yamahari.ilikewood.ILikeWood) SawmillRecipeBuilder(mekanism.api.datagen.recipe.builder.SawmillRecipeBuilder) MekanismPigments(mekanism.common.registries.MekanismPigments) Block(net.minecraft.block.Block) WoodenBlockType(yamahari.ilikewood.registry.objecttype.WoodenBlockType) DyeColor(net.minecraft.item.DyeColor) ItemStack(net.minecraft.item.ItemStack)

Aggregations

EnumColor (mekanism.api.text.EnumColor)33 Map (java.util.Map)6 DyeColor (net.minecraft.item.DyeColor)6 ItemStack (net.minecraft.item.ItemStack)5 ISideConfiguration (mekanism.common.tile.interfaces.ISideConfiguration)4 DataType (mekanism.common.tile.component.config.DataType)3 ArrayList (java.util.ArrayList)2 IPigmentProvider (mekanism.api.providers.IPigmentProvider)2 ItemConfigurator (mekanism.common.item.ItemConfigurator)2 PigmentRegistryObject (mekanism.common.registration.impl.PigmentRegistryObject)2 ITextComponent (net.minecraft.util.text.ITextComponent)2 ImmutableMap (com.google.common.collect.ImmutableMap)1 MatrixStack (com.mojang.blaze3d.matrix.MatrixStack)1 IVertexBuilder (com.mojang.blaze3d.vertex.IVertexBuilder)1 Long2ObjectMap (it.unimi.dsi.fastutil.longs.Long2ObjectMap)1 Object2ObjectOpenHashMap (it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap)1 EnumMap (java.util.EnumMap)1 HashMap (java.util.HashMap)1 ConcurrentHashMap (java.util.concurrent.ConcurrentHashMap)1 Consumer (java.util.function.Consumer)1