Package mods.railcraft.common.carts

Source Code of mods.railcraft.common.carts.ItemLocomotive

/*
* 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.carts;

import com.mojang.authlib.GameProfile;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import java.util.List;
import mods.railcraft.api.carts.locomotive.LocomotiveModelRenderer;
import mods.railcraft.api.carts.locomotive.LocomotiveRenderType;
import mods.railcraft.client.emblems.Emblem;
import mods.railcraft.client.emblems.EmblemToolsClient;
import mods.railcraft.client.render.RenderTools;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.IIcon;
import mods.railcraft.common.plugins.forge.LocalizationPlugin;
import mods.railcraft.common.plugins.forge.PlayerPlugin;
import mods.railcraft.common.util.inventory.InvTools;
import mods.railcraft.common.util.misc.EnumColor;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.item.Item;

/**
*
* @author CovertJaguar <http://www.railcraft.info>
*/
public class ItemLocomotive extends ItemCart {

    private final LocomotiveRenderType renderType;
    private IIcon blankIcon;

    public ItemLocomotive(EnumCart cart, LocomotiveRenderType renderType) {
        super(cart);
        this.renderType = renderType;
        setMaxStackSize(1);
    }

    @SideOnly(Side.CLIENT)
    @Override
    public void getSubItems(Item item, CreativeTabs tab, List list) {
        for (String skin : renderType.getRendererTags()) {
            list.add(renderType.getItemWithRenderer(skin));
        }
    }

    @Override
    public void registerIcons(IIconRegister iconRegister) {
        renderType.registerIcons(iconRegister);
        blankIcon = iconRegister.registerIcon("railcraft:locomotives/blank");
    }

    @Override
    public boolean requiresMultipleRenderPasses() {
        return true;
    }

    @Override
    public int getRenderPasses(int metadata) {
        return 3;
    }

    @Override
    public int getColorFromItemStack(ItemStack stack, int pass) {
        switch (pass) {
            case 0:
                return getPrimaryColor(stack).getHexColor();
            case 1:
                return getSecondaryColor(stack).getHexColor();
            default:
                return super.getColorFromItemStack(stack, pass);
        }
    }

    @Override
    @SideOnly(Side.CLIENT)
    public IIcon getIcon(ItemStack stack, int pass) {
        String rendererTag = getModel(stack);
        LocomotiveModelRenderer renderer = renderType.getRenderer(rendererTag);
        if (renderer == null)
            return RenderTools.getMissingIcon();
        IIcon[] icons = renderer.getItemIcons();
        if (pass >= icons.length || icons[pass] == null)
            return blankIcon;
        return renderer.getItemIcons()[pass];
    }

    @Override
    public void addInformation(ItemStack stack, EntityPlayer player, List info, boolean adv) {
        GameProfile owner = getOwner(stack);
        if (owner.getName() != null && !owner.getName().equals("[Unknown]")) {
            String format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.owner");
            info.add(String.format(format, owner.getName()));
        }

        String model = getModel(stack);
        LocomotiveModelRenderer renderer = renderType.getRenderer(model);
        String modelName;
        if (renderer != null)
            modelName = renderer.getDisplayName();
        else
            modelName = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.model.default");
        String format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.model");
        info.add(String.format(format, modelName));

        EnumColor primary = getPrimaryColor(stack);
        format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.primary");
        info.add(String.format(format, primary.getTranslatedName()));

        EnumColor secondary = getSecondaryColor(stack);
        format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.secondary");
        info.add(String.format(format, secondary.getTranslatedName()));

        float whistle = getWhistlePitch(stack);
        format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.whistle");
        info.add(String.format(format, whistle < 0 ? "???" : String.format("%.2f", whistle)));

        String emblemIdent = getEmblem(stack);
        if (emblemIdent != null && !emblemIdent.isEmpty() && EmblemToolsClient.packageManager != null) {
            Emblem emblem = EmblemToolsClient.packageManager.getEmblem(emblemIdent);
            if (emblem != null) {
                format = LocalizationPlugin.translate("railcraft.gui.locomotive.tip.item.emblem");
                info.add(String.format(format, emblem.displayName));
            }
        }
    }

    public static void setItemColorData(ItemStack stack, EnumColor primaryColor, EnumColor secondaryColor) {
        setItemColorData(stack, primaryColor.ordinal(), secondaryColor.ordinal());
    }

    public static void setItemColorData(ItemStack stack, int primaryColor, int secondaryColor) {
        if (primaryColor < 0 || secondaryColor < 0)
            return;
        NBTTagCompound nbt = InvTools.getItemData(stack);
        nbt.setByte("primaryColor", (byte) primaryColor);
        nbt.setByte("secondaryColor", (byte) secondaryColor);

    }

    public static void setItemWhistleData(ItemStack stack, float whistlePitch) {
        NBTTagCompound nbt = InvTools.getItemData(stack);
        nbt.setFloat("whistlePitch", whistlePitch);
    }

    public static float getWhistlePitch(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null || !nbt.hasKey("whistlePitch"))
            return -1;
        return nbt.getFloat("whistlePitch");
    }

    public static void setOwnerData(ItemStack stack, GameProfile owner) {
        NBTTagCompound nbt = InvTools.getItemData(stack);
        PlayerPlugin.writeOwnerToNBT(nbt, owner);
    }

    public static GameProfile getOwner(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null)
            return new GameProfile(null, "[Unknown]");
        return PlayerPlugin.readOwnerFromNBT(nbt);
    }

    public static void setEmblem(ItemStack stack, String emblemIdentifier) {
        NBTTagCompound nbt = InvTools.getItemData(stack);
        nbt.setString("emblem", emblemIdentifier);
    }

    public static String getEmblem(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null || !nbt.hasKey("emblem"))
            return "";
        return nbt.getString("emblem");
    }

    public static void setModel(ItemStack stack, String modelTag) {
        NBTTagCompound nbt = InvTools.getItemData(stack);
        nbt.setString("model", modelTag);
    }

    public static String getModel(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null || !nbt.hasKey("model"))
            return "default";
        return nbt.getString("model");
    }

    public static EnumColor getPrimaryColor(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null || !nbt.hasKey("primaryColor")) {
            ItemLocomotive item = (ItemLocomotive) stack.getItem();
            if (item.renderType == LocomotiveRenderType.ELECTRIC)
                return EnumColor.YELLOW;
            return EnumColor.LIGHT_GRAY;
        }
        return EnumColor.fromId(nbt.getByte("primaryColor"));
    }

    public static EnumColor getSecondaryColor(ItemStack stack) {
        NBTTagCompound nbt = stack.getTagCompound();
        if (nbt == null || !nbt.hasKey("secondaryColor")) {
            ItemLocomotive item = (ItemLocomotive) stack.getItem();
            if (item.renderType == LocomotiveRenderType.ELECTRIC)
                return EnumColor.BLACK;
            return EnumColor.GRAY;
        }
        return EnumColor.fromId(nbt.getByte("secondaryColor"));
    }

}
TOP

Related Classes of mods.railcraft.common.carts.ItemLocomotive

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.