use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class AbstractModItemArmour method getArmorModel.
@Override
@SideOnly(Side.CLIENT)
public ModelBiped getArmorModel(EntityLivingBase entityLiving, ItemStack stack, int armorSlot) {
if (!SkinNBTHelper.stackHasSkinData(stack)) {
return null;
}
SkinPointer skinData = SkinNBTHelper.getSkinPointerFromStack(stack);
AbstractModelSkin targetModel = null;
SkinModelRenderer emr = SkinModelRenderer.INSTANCE;
Skin data = emr.getCustomArmourItemData(skinData);
if (data == null) {
return null;
}
targetModel = emr.getModelForEquipmentType(data.getSkinType());
if (targetModel == null) {
return null;
}
targetModel.npcSkinData = data;
targetModel.npcDyeData = skinData.getSkinDye();
return targetModel;
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class SkinIOUtils method recoverSkins.
public static void recoverSkins(EntityPlayer player) {
player.addChatComponentMessage(new ChatComponentText("Starting skin recovery."));
File skinDir = getSkinDatabaseDirectory();
if (skinDir.exists() & skinDir.isDirectory()) {
File recoverDir = new File(System.getProperty("user.dir"), "recovered-skins");
if (!recoverDir.exists()) {
recoverDir.mkdirs();
}
File[] skinFiles = skinDir.listFiles();
player.addChatComponentMessage(new ChatComponentText(String.format("Found %d skins to be recovered.", skinFiles.length)));
player.addChatComponentMessage(new ChatComponentText("Working..."));
int unnamedSkinCount = 0;
int successCount = 0;
int failCount = 0;
for (int i = 0; i < skinFiles.length; i++) {
File skinFile = skinFiles[i];
Skin skin = loadSkinFromFile(skinFile);
if (skin != null) {
String fileName = skin.getProperties().getPropertyString(Skin.KEY_FILE_NAME, null);
String customName = skin.getProperties().getPropertyString(Skin.KEY_CUSTOM_NAME, null);
if (!StringUtils.isNullOrEmpty(fileName)) {
fileName = makeFileNameValid(fileName);
File newSkinFile = new File(recoverDir, fileName + SKIN_FILE_EXTENSION);
if (newSkinFile.exists()) {
int nameCount = 0;
while (true) {
nameCount++;
newSkinFile = new File(recoverDir, fileName + "-" + nameCount + SKIN_FILE_EXTENSION);
if (!newSkinFile.exists()) {
break;
}
}
}
saveSkinToFile(newSkinFile, skin);
successCount++;
continue;
}
if (!StringUtils.isNullOrEmpty(customName)) {
customName = makeFileNameValid(customName);
File newSkinFile = new File(recoverDir, customName + SKIN_FILE_EXTENSION);
if (newSkinFile.exists()) {
int nameCount = 0;
while (true) {
nameCount++;
newSkinFile = new File(recoverDir, customName + "-" + nameCount + SKIN_FILE_EXTENSION);
if (!newSkinFile.exists()) {
break;
}
}
}
saveSkinToFile(newSkinFile, skin);
successCount++;
continue;
}
unnamedSkinCount++;
saveSkinToFile(new File(recoverDir, "unnamed-skin-" + unnamedSkinCount + SKIN_FILE_EXTENSION), skin);
successCount++;
} else {
failCount++;
}
}
player.addChatComponentMessage(new ChatComponentText("Finished skin recovery."));
player.addChatComponentMessage(new ChatComponentText(String.format("%d skins were recovered and %d fail recovery.", successCount, failCount)));
} else {
player.addChatComponentMessage(new ChatComponentText("No skins found to recover."));
}
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class SkinIOUtils method loadSkinFromFile.
public static Skin loadSkinFromFile(File file) {
DataInputStream stream = null;
Skin skin = null;
try {
stream = new DataInputStream(new BufferedInputStream(new FileInputStream(file)));
skin = SkinSerializer.readSkinFromStream(stream);
} catch (FileNotFoundException e) {
ModLogger.log(Level.WARN, "Skin file not found.");
ModLogger.log(Level.WARN, file);
} catch (IOException e) {
ModLogger.log(Level.ERROR, "Skin file load failed.");
e.printStackTrace();
} catch (NewerFileVersionException e) {
ModLogger.log(Level.ERROR, "Can not load skin file it was saved in newer version.");
e.printStackTrace();
} catch (InvalidCubeTypeException e) {
ModLogger.log(Level.ERROR, "Unable to load skin. Unknown cube types found.");
e.printStackTrace();
} catch (Exception e) {
ModLogger.log(Level.ERROR, "Unable to load skin. Unknown error.");
e.printStackTrace();
} finally {
IOUtils.closeQuietly(stream);
}
return skin;
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class GuiMiniArmourerBuildingModel method renderModels.
private void renderModels(int mouseX, int mouseY) {
float scale = 0.0625F;
GL11.glPushMatrix();
GL11.glTranslatef(parent.width / 2, parent.height / 2, 500.0F);
GL11.glScalef((float) (-zoom), (float) zoom, (float) zoom);
GL11.glRotatef(180F, 0F, 1F, 0F);
GL11.glRotatef(pitch, 1.0F, 0.0F, 0.0F);
GL11.glRotatef(rotation, 0F, 1F, 0F);
GL11.glTranslated(0, 1 * scale, 0);
GL11.glScalef(-1, -1, 1);
if (hoverCubeId != 0 && renderCubes != null) {
int cubeId = (int) Math.ceil((double) hoverCubeId / 6);
int cubeFace = cubeId * 6 - hoverCubeId;
if (cubeId - 1 < renderCubes.size() & cubeId - 1 >= 0) {
MiniCube tarCube = renderCubes.get(cubeId - 1);
MiniCube newCube = new MiniCube(CubeRegistry.INSTANCE.getCubeFormId((byte) 0));
ForgeDirection dir = GuiMiniArmourerHelper.getDirectionForCubeFace(cubeFace);
newCube.setX((byte) (tarCube.getX() + dir.offsetX));
newCube.setY((byte) (tarCube.getY() + dir.offsetY));
newCube.setZ((byte) (tarCube.getZ() + dir.offsetZ));
GL11.glEnable(GL11.GL_BLEND);
GL11.glBlendFunc(GL11.GL_SRC_ALPHA, GL11.GL_ONE_MINUS_SRC_ALPHA);
GL11.glDisable(GL11.GL_TEXTURE_2D);
IRenderBuffer buff = RenderBridge.INSTANCE;
buff.startDrawingQuads();
renderArmourBlock((byte) newCube.getX(), (byte) newCube.getY(), (byte) newCube.getZ(), newCube.getColour(), scale, true);
buff.draw();
GL11.glEnable(GL11.GL_TEXTURE_2D);
GL11.glDisable(GL11.GL_BLEND);
}
}
// Gui.drawRect(0, 0, parent.width, parent.height, 0xFF000000);
drawBuildingCubes(false);
GL11.glScalef(-1, -1, 1);
RenderHelper.enableStandardItemLighting();
mc.renderEngine.bindTexture(mc.thePlayer.getLocationSkin());
if (skinPointer != null) {
Skin skin = ClientSkinCache.INSTANCE.getSkin(skinPointer);
if (skin != null) {
for (int i = 0; i < skin.getParts().size(); i++) {
SkinPart part = skin.getParts().get(i);
if (part.getPartType() == currentSkinPartType) {
SkinPartRenderer.INSTANCE.renderPart(part, scale, skinPointer.getSkinDye(), null, false);
}
}
}
}
if (currentSkinPartType != null) {
GL11.glTranslated(0, -currentSkinPartType.getBuildingSpace().getY() * scale, 0);
currentSkinPartType.renderBuildingGuide(scale, true, false);
// SkinRenderHelper.renderBuildingGrid(currentSkinPartType, scale);
}
/*
if (currentSkinType != null) {
SkinRenderHelper.renderBuildingGuide(currentSkinType, scale, true, false);
SkinRenderHelper.renderBuildingGrid(currentSkinType, scale);
}
*/
GL11.glPopMatrix();
}
use of riskyken.armourersWorkshop.common.skin.data.Skin in project Armourers-Workshop by RiskyKen.
the class GuiSkinLibrary method drawScreen.
@Override
public void drawScreen(int mouseX, int mouseY, float partialTickTime) {
int oldMouseX = mouseX;
int oldMouseY = mouseY;
if (isDialogOpen()) {
mouseX = mouseY = 0;
}
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
super.drawScreen(mouseX, mouseY, partialTickTime);
GL11.glPopAttrib();
ILibraryManager libraryManager = ArmourersWorkshop.proxy.libraryManager;
ArrayList<LibraryFile> files = libraryManager.getServerPublicFileList().getFileList();
loadSaveButton.enabled = true;
if (isLoading()) {
loadSaveButton.displayString = GuiHelper.getLocalizedControlName(armourLibrary.getInventoryName(), "load");
if (fileList.getSelectedListEntry() == null || ((GuiFileListItem) fileList.getSelectedListEntry()).getFile().directory) {
loadSaveButton.displayString = "";
loadSaveButton.enabled = false;
}
} else {
loadSaveButton.displayString = GuiHelper.getLocalizedControlName(armourLibrary.getInventoryName(), "save");
}
if (!((Slot) inventorySlots.inventorySlots.get(36)).getHasStack() & !armourLibrary.isCreativeLibrary()) {
loadSaveButton.displayString = "";
loadSaveButton.enabled = false;
}
if (fileSwitchType == LibraryFileType.LOCAL) {
files = libraryManager.getClientPublicFileList().getFileList();
if (!mc.isIntegratedServerRunning()) {
loadSaveButton.enabled = false;
if (isLoading()) {
loadSaveButton.enabled = ConfigHandler.allowClientsToUploadSkins;
} else {
loadSaveButton.enabled = ConfigHandler.allowClientsToDownloadSkins;
}
}
} else {
loadSaveButton.enabled = true;
}
if (fileSwitchType == LibraryFileType.SERVER_PRIVATE) {
files = libraryManager.getServerPrivateFileList(mc.thePlayer).getFileList();
}
String typeFilter = dropDownList.getListSelectedItem().tag;
ISkinType skinTypeFilter = SkinTypeRegistry.INSTANCE.getSkinTypeFromRegistryName(typeFilter);
lastSkinType = skinTypeFilter;
lastSearchText = searchTextbox.getText();
IGuiListItem selectedItem = fileList.getSelectedListEntry();
if (selectedItem != null) {
// deleteButton.enabled = !((GuiFileListItem)selectedItem).getFile().readOnly;
} else {
// deleteButton.enabled = false;
}
fileList.setSelectedIndex(-1);
fileList.clearList();
if (!(currentFolder.equals("/") | currentFolder.equals(getPrivateRoot(player)))) {
fileList.addListItem(new GuiFileListItem(new LibraryFile("../", "", null, true)));
if (selectedItem != null && ((GuiFileListItem) selectedItem).getFile().fileName.equals("../")) {
fileList.setSelectedIndex(0);
}
}
if (files != null) {
for (int i = 0; i < files.size(); i++) {
LibraryFile file = files.get(i);
if (skinTypeFilter == null | skinTypeFilter == file.skinType) {
if (file.filePath.equals(currentFolder)) {
if (!searchTextbox.getText().equals("")) {
if (file.fileName.toLowerCase().contains(searchTextbox.getText().toLowerCase())) {
fileList.addListItem(new GuiFileListItem(file));
if (selectedItem != null && ((GuiFileListItem) selectedItem).getFile() == file) {
fileList.setSelectedIndex(fileList.getSize() - 1);
}
}
} else {
fileList.addListItem(new GuiFileListItem(file));
if (selectedItem != null && ((GuiFileListItem) selectedItem).getFile() == file) {
fileList.setSelectedIndex(fileList.getSize() - 1);
}
}
}
}
}
}
scrollAmount = scrollbar.getValue();
fileList.setScrollPercentage(scrollbar.getPercentageValue());
for (int i = 0; i < buttonList.size(); i++) {
GuiButton button = (GuiButton) buttonList.get(i);
if (button instanceof GuiIconButton) {
((GuiIconButton) button).drawRollover(mc, mouseX, mouseY);
}
}
if (showModelPreviews()) {
GuiFileListItem item = (GuiFileListItem) fileList.getSelectedListEntry();
if (item != null && !item.getFile().isDirectory()) {
SkinIdentifier identifier = new SkinIdentifier(0, new LibraryFile(item.getFile().getFullName()), 0, null);
Skin skin = ClientSkinCache.INSTANCE.getSkin(identifier, true);
if (skin != null) {
SkinPointer skinPointer = new SkinPointer(identifier);
int listRight = this.width - INVENTORY_WIDTH - PADDING * 5;
listRight = MathHelper.clamp_int(listRight, 0, 200);
listRight += INVENTORY_WIDTH + PADDING * 2 + 10;
int listTop = TITLE_HEIGHT + 14 + PADDING * 2;
int xSize = (this.width - listRight - PADDING) / 2;
int ySize = (this.height - listTop - PADDING) / 2;
float x = listRight + xSize;
float y = listTop + ySize;
float scale = 1F;
scale = 1 * Math.min(xSize, ySize);
ScaledResolution scaledResolution = new ScaledResolution(mc, mc.displayWidth, mc.displayHeight);
int startX = listRight + PADDING;
int startY = listTop + PADDING;
int tarW = (int) (x + xSize);
int tarH = (int) (y + ySize);
drawRect(startX, startY, tarW, tarH, 0x77777777);
if (scale > 8) {
GL11.glPushMatrix();
GL11.glTranslatef((float) x, (float) y, 500.0F);
GL11.glScalef(10, 10, -10);
GL11.glRotatef(30, 1, 0, 0);
GL11.glRotatef(45, 0, 1, 0);
float rotation = (float) ((double) System.currentTimeMillis() / 10 % 360);
GL11.glRotatef(rotation, 0.0F, 1.0F, 0.0F);
RenderHelper.enableStandardItemLighting();
GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F);
GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS);
GL11.glEnable(GL11.GL_NORMALIZE);
GL11.glEnable(GL11.GL_COLOR_MATERIAL);
ModRenderHelper.enableAlphaBlend();
SkinItemRenderHelper.renderSkinAsItem(skin, skinPointer, true, false, tarW - startX, tarH - startY);
GL11.glPopAttrib();
GL11.glPopMatrix();
}
}
}
}
GL11.glColor4f(1, 1, 1, 1);
if (isDialogOpen()) {
this.dialog.draw(oldMouseX, oldMouseY, partialTickTime);
}
}
Aggregations