public void setBoundsOnBlock(Block block) {
    if (haveBlockBounds) {
      block.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
      return;
    }
    if (hasSkin()) {
      Skin skin = null;
      if (worldObj.isRemote) {
        skin = getSkinClient(skinPointer);
      } else {
        skin = getSkinServer(skinPointer);
      }

      if (skin != null) {
        float scale = 0.0625F;
        SkinPart skinPart = skin.getParts().get(0);
        Rectangle3D rec = skinPart.getPartBounds();
        IRectangle3D buildSpace = skinPart.getPartType().getBuildingSpace();

        int x = buildSpace.getX() + buildSpace.getWidth() + rec.getX();
        int y = buildSpace.getY() + buildSpace.getHeight() - rec.getY() - rec.getHeight();
        int z = buildSpace.getZ() + buildSpace.getDepth() - rec.getZ() - rec.getDepth();
        minX = x * scale;
        minY = y * scale;
        minZ = z * scale;
        maxX = (x + rec.getWidth()) * scale;
        maxY = (y + rec.getHeight()) * scale;
        maxZ = (z + rec.getDepth()) * scale;
        rotateBlockBounds();
        haveBlockBounds = true;
        block.setBlockBounds(minX, minY, minZ, maxX, maxY, maxZ);
        return;
      }
    }
    block.setBlockBounds(0F, 0F, 0F, 1F, 1F, 1F);
  }
  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 (EquipmentNBTHelper.stackHasSkinData(stack)) {
      SkinPointer skinData = EquipmentNBTHelper.getSkinPointerFromStack(stack);

      if (!isEquipmentSkin & !skinData.lockSkin & !isEquipmentContainer) {
        return;
      }

      if (!isEquipmentSkin) {
        tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.hasSkin"));
      }

      if (ClientModelCache.INSTANCE.isEquipmentInCache(skinData.skinId)) {
        Skin data = ClientModelCache.INSTANCE.getEquipmentItemData(skinData.skinId);
        if (!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 (ConfigHandler.showSkinTooltipDebugInfo) {
          if (GuiScreen.isShiftKeyDown()) {
            if (skinData.skinType != null) {
              String localSkinName =
                  SkinTypeRegistry.INSTANCE.getLocalizedSkinTypeName(skinData.skinType);
              tooltip.add(
                  TranslateUtils.translate(
                      "item.armourersworkshop:rollover.skinType", localSkinName));
            }
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinId", skinData.skinId));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinTotalCubes", data.getTotalCubes()));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinNumCubes",
                    data.getTotalOfCubeType(Cube.class)));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinNumCubesGlowing",
                    data.getTotalOfCubeType(CubeGlowing.class)));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinNumCubesGlass",
                    data.getTotalOfCubeType(CubeGlass.class)));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinNumCubesGlassGlowing",
                    data.getTotalOfCubeType(CubeGlassGlowing.class)));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinPaintData", data.hasPaintData()));
            tooltip.add(
                TranslateUtils.translate(
                    "item.armourersworkshop:rollover.skinMarkerCount", data.getMarkerCount()));
          } else {
            tooltip.add(
                TranslateUtils.translate("item.armourersworkshop:rollover.skinHoldShiftForInfo"));
          }
        }

        if (skinData.skinId != 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", skinData.skinId));
      }
      String keyName = Keyboard.getKeyName(Keybindings.openCustomArmourGui.getKeyCode());
      if (isEquipmentSkin) {
        tooltip.add(
            TranslateUtils.translate("item.armourersworkshop:rollover.skinOpenWardrobe", keyName));
      }
    } else {
      if (EquipmentNBTHelper.stackHasLegacySkinData(stack)) {
        tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinOldType"));
      } else {
        if (isEquipmentSkin) {
          tooltip.add(TranslateUtils.translate("item.armourersworkshop:rollover.skinInvalidItem"));
        }
      }
    }
  }