Search in sources :

Example 56 with Skin

use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.

the class SkinnableEntityCreeperRenderer method renderEquipmentType.

private void renderEquipmentType(EntityLivingBase entity, RendererLivingEntity renderer, ISkinType skinType, IEntityEquipment equipmentData) {
    if (equipmentData.haveEquipment(skinType, 0)) {
        ISkinPointer skinPointer = equipmentData.getSkinPointer(skinType, 0);
        Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer);
        if (skin == null) {
            return;
        }
        GL11.glEnable(GL11.GL_NORMALIZE);
        float scale = 0.0625F;
        for (int i = 0; i < skin.getParts().size(); i++) {
            SkinPartRenderer.INSTANCE.renderPart(skin.getParts().get(i), scale, skinPointer.getSkinDye(), null, false);
        }
        GL11.glDisable(GL11.GL_NORMALIZE);
    }
}
Also used : Skin(riskyken.armourersWorkshop.common.skin.data.Skin) ISkinPointer(riskyken.armourersWorkshop.api.common.skin.data.ISkinPointer)

Example 57 with Skin

use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.

the class SkinnableEntityGhastRenderer method renderEquipmentType.

private void renderEquipmentType(EntityLivingBase entity, RendererLivingEntity renderer, ISkinType skinType, IEntityEquipment equipmentData) {
    if (equipmentData.haveEquipment(skinType, 0)) {
        ISkinPointer skinPointer = equipmentData.getSkinPointer(skinType, 0);
        Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer);
        if (skin == null) {
            return;
        }
        GL11.glEnable(GL11.GL_NORMALIZE);
        float scale = 1F / 16F;
        for (int i = 0; i < skin.getParts().size(); i++) {
            SkinPartRenderer.INSTANCE.renderPart(skin.getParts().get(i), scale, skinPointer.getSkinDye(), null, false);
        }
        GL11.glDisable(GL11.GL_NORMALIZE);
    }
}
Also used : Skin(riskyken.armourersWorkshop.common.skin.data.Skin) ISkinPointer(riskyken.armourersWorkshop.api.common.skin.data.ISkinPointer)

Example 58 with Skin

use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.

the class SkinnableEntitySkeletonRenderer method renderEquipmentType.

private void renderEquipmentType(EntityLivingBase entity, RendererLivingEntity renderer, ISkinType skinType, IEntityEquipment equipmentData) {
    float scale = 0.0625F;
    if (renderer instanceof RenderSkeleton) {
        RenderSkeleton rs = (RenderSkeleton) renderer;
        if (!equipmentData.haveEquipment(skinType, 0)) {
            return;
        }
        ISkinPointer skinPointer = equipmentData.getSkinPointer(skinType, 0);
        Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer);
        if (skin == null) {
            return;
        }
        AbstractModelSkin model = SkinModelRenderer.INSTANCE.getModelForEquipmentType(skinType);
        GL11.glPushMatrix();
        model.render(entity, rs.modelBipedMain, skin, false, skinPointer.getSkinDye(), null, false, 0, false);
        GL11.glPopMatrix();
    }
}
Also used : RenderSkeleton(net.minecraft.client.renderer.entity.RenderSkeleton) AbstractModelSkin(riskyken.armourersWorkshop.client.model.skin.AbstractModelSkin) Skin(riskyken.armourersWorkshop.common.skin.data.Skin) AbstractModelSkin(riskyken.armourersWorkshop.client.model.skin.AbstractModelSkin) ISkinPointer(riskyken.armourersWorkshop.api.common.skin.data.ISkinPointer)

Example 59 with Skin

use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.

the class ItemSkin method addTooltipToSkinItem.

public static void addTooltipToSkinItem(ItemStack stack, EntityPlayer player, List tooltip, boolean showAdvancedItemTooltips) {
    String cRed = EnumChatFormatting.RED.toString();
    boolean isEquipmentSkin = stack.getItem() == ModItems.equipmentSkin;
    boolean isEquipmentContainer = stack.getItem() instanceof AbstractModItemArmour;
    if (SkinNBTHelper.stackHasSkinData(stack)) {
        SkinPointer skinData = SkinNBTHelper.getSkinPointerFromStack(stack);
        SkinIdentifier identifier = skinData.getIdentifier();
        if (!isEquipmentSkin & !skinData.lockSkin & !isEquipmentContainer) {
            return;
        }
        if (!isEquipmentSkin) {
            tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.hasSkin"));
        }
        if (ClientSkinCache.INSTANCE.isSkinInCache(skinData)) {
            Skin data = ClientSkinCache.INSTANCE.getSkin(skinData);
            if (stack.getItem() != ModItems.equipmentSkin & !data.getCustomName().trim().isEmpty()) {
                tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinName", data.getCustomName()));
            }
            if (!data.getAuthorName().trim().isEmpty()) {
                tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinAuthor", data.getAuthorName()));
            }
            if (skinData.getIdentifier().getSkinType() != null) {
                String localSkinName = SkinTypeRegistry.INSTANCE.getLocalizedSkinTypeName(skinData.getIdentifier().getSkinType());
                tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinType", localSkinName));
            }
            if (ConfigHandlerClient.showSkinTooltipDebugInfo) {
                if (GuiScreen.isShiftKeyDown()) {
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinIdentifier"));
                    if (identifier.hasLocalId()) {
                        tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinId", identifier.getSkinLocalId()));
                    }
                    if (identifier.hasLibraryFile()) {
                        tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinLibraryFile", identifier.getSkinLibraryFile().getFullName()));
                    }
                    if (identifier.hasGlobalId()) {
                        tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinGlobalId", identifier.getSkinGlobalId()));
                    }
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinTotalCubes", data.getTotalCubes()));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinNumCubes", data.getTotalOfCubeType(CubeRegistry.INSTANCE.getCubeFormId((byte) 0))));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinNumCubesGlowing", data.getTotalOfCubeType(CubeRegistry.INSTANCE.getCubeFormId((byte) 1))));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinNumCubesGlass", data.getTotalOfCubeType(CubeRegistry.INSTANCE.getCubeFormId((byte) 2))));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinNumCubesGlassGlowing", data.getTotalOfCubeType(CubeRegistry.INSTANCE.getCubeFormId((byte) 3))));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinPaintData", data.hasPaintData()));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinMarkerCount", data.getMarkerCount()));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinDyeCount", skinData.getSkinDye().getNumberOfDyes()));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinProperties"));
                    ArrayList<String> props = data.getProperties().getPropertiesList();
                    for (int i = 0; i < props.size(); i++) {
                        tooltip.add("  " + props.get(i));
                    }
                } else {
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinHoldShiftForInfo"));
                }
            }
            if (identifier.hasLocalId()) {
                if (identifier.getSkinLocalId() != data.lightHash()) {
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinIdError1"));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinIdError2"));
                    tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinIdError3", data.requestId, data.lightHash()));
                }
            }
        } else {
            tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skindownloading", identifier.toString()));
            if (identifier.hasLocalId()) {
                tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinId", identifier.getSkinLocalId()));
            }
            if (identifier.hasLibraryFile()) {
                tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinLibraryFile", identifier.getSkinLibraryFile().getFullName()));
            }
            if (identifier.hasGlobalId()) {
                tooltip.add("  " + TranslateUtils.translate("item.armourersworkshop:rollover.skinGlobalId", identifier.getSkinGlobalId()));
            }
        }
        String keyName = Keyboard.getKeyName(Keybindings.openCustomArmourGui.getKeyCode());
        if (isEquipmentSkin) {
            tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinOpenWardrobe", keyName));
        }
    } else {
        if (SkinNBTHelper.stackHasLegacySkinData(stack)) {
            tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinOldType"));
        } else {
            if (isEquipmentSkin) {
                tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinInvalidItem"));
            }
        }
    }
}
Also used : SkinPointer(riskyken.armourersWorkshop.common.skin.data.SkinPointer) Skin(riskyken.armourersWorkshop.common.skin.data.Skin) SkinIdentifier(riskyken.armourersWorkshop.common.skin.data.SkinIdentifier)

Example 60 with Skin

use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.

the class ItemSkin method placeSkinAtLocation.

private boolean placeSkinAtLocation(World world, EntityPlayer player, int side, ItemStack stack, int x, int y, int z, SkinPointer skinPointer) {
    if (!canPlaceSkinAtLocation(world, player, side, stack, x, y, z, skinPointer)) {
        return false;
    }
    ForgeDirection dir = UtilPlayer.getDirectionSide(player).getOpposite();
    Skin skin = SkinUtils.getSkinDetectSide(stack, false, true);
    if (skin == null) {
        return false;
    }
    BlockSkinnable targetBlock = (BlockSkinnable) ModBlocks.skinnable;
    if (SkinProperties.PROP_BLOCK_GLOWING.getValue(skin.getProperties())) {
        targetBlock = (BlockSkinnable) ModBlocks.skinnableGlowing;
    }
    int meta = targetBlock.convertDirectionToMetadata(dir);
    boolean multiblock = SkinProperties.PROP_BLOCK_MULTIBLOCK.getValue(skin.getProperties());
    ArrayList<BlockLocation> relatedBlocks = new ArrayList<BlockLocation>();
    if (multiblock) {
        if (!canPlaceChildren(world, player, side, stack, x, y, z, skin, skinPointer, relatedBlocks)) {
            return false;
        }
        placeChildren(world, player, side, x, y, z, skin, skinPointer, relatedBlocks);
    }
    world.setBlock(x, y, z, targetBlock, meta, 2);
    world.setTileEntity(x, y, z, ((ITileEntityProvider) targetBlock).createNewTileEntity(world, 0));
    TileEntitySkinnable te = (TileEntitySkinnable) world.getTileEntity(x, y, z);
    te.setSkinPointer(skin, skinPointer);
    targetBlock.onBlockPlacedBy(world, x, y, z, player, stack);
    targetBlock.onPostBlockPlaced(world, x, y, z, meta);
    te.setRelatedBlocks(relatedBlocks);
    // targetBlock.setFacingDirection(world, x, y, z, dir);
    stack.stackSize--;
    world.playSoundEffect((float) x + 0.5F, (float) y + 0.5F, (float) z + 0.5F, "dig.stone", 1, 1);
    return true;
}
Also used : BlockSkinnable(riskyken.armourersWorkshop.common.blocks.BlockSkinnable) ForgeDirection(net.minecraftforge.common.util.ForgeDirection) ArrayList(java.util.ArrayList) Skin(riskyken.armourersWorkshop.common.skin.data.Skin) BlockLocation(riskyken.armourersWorkshop.common.blocks.BlockLocation) TileEntitySkinnable(riskyken.armourersWorkshop.common.tileentities.TileEntitySkinnable)

Aggregations

Skin (riskyken.armourersWorkshop.common.skin.data.Skin)69 SkinPointer (riskyken.armourersWorkshop.common.skin.data.SkinPointer)19 ItemStack (net.minecraft.item.ItemStack)11 ISkinPointer (riskyken.armourersWorkshop.api.common.skin.data.ISkinPointer)11 LibraryFile (riskyken.armourersWorkshop.common.library.LibraryFile)10 SkinIdentifier (riskyken.armourersWorkshop.common.skin.data.SkinIdentifier)10 SkinPart (riskyken.armourersWorkshop.common.skin.data.SkinPart)10 ForgeDirection (net.minecraftforge.common.util.ForgeDirection)9 IOException (java.io.IOException)6 ISkinIdentifier (riskyken.armourersWorkshop.api.common.skin.data.ISkinIdentifier)6 AbstractModelSkin (riskyken.armourersWorkshop.client.model.skin.AbstractModelSkin)6 ItemSkin (riskyken.armourersWorkshop.common.items.ItemSkin)6 Color (java.awt.Color)4 ByteArrayInputStream (java.io.ByteArrayInputStream)4 DataInputStream (java.io.DataInputStream)4 AbstractClientPlayer (net.minecraft.client.entity.AbstractClientPlayer)4 BakedSkin (riskyken.armourersWorkshop.client.model.bake.ModelBakery.BakedSkin)4 SideOnly (cpw.mods.fml.relauncher.SideOnly)3 BufferedInputStream (java.io.BufferedInputStream)3 ArrayList (java.util.ArrayList)3