diff --git a/src/main/java/noppes/npcs/CustomNpcs.java b/src/main/java/noppes/npcs/CustomNpcs.java index 84382b862..a2fec13a1 100644 --- a/src/main/java/noppes/npcs/CustomNpcs.java +++ b/src/main/java/noppes/npcs/CustomNpcs.java @@ -201,8 +201,9 @@ public class CustomNpcs { registerNpc(EntityNpcDragon.class, "NpcDragon"); registerNpc(EntityNPCEnderman.class, "npcEnderman"); registerNpc(EntityNPCGolem.class, "npcGolem"); - registerNpc(EntityCustomNpc.class, "CustomNpc"); registerNpc(EntityNPC64x64.class, "CustomNpc64"); + registerNpc(EntityCustomNpc.class, "CustomNpc"); + registerNewEntity(EntityChairMount.class, "CustomNpcChairMount", 64, 10, false); diff --git a/src/main/java/noppes/npcs/DataDisplay.java b/src/main/java/noppes/npcs/DataDisplay.java index 97a52f765..6bbe4962b 100644 --- a/src/main/java/noppes/npcs/DataDisplay.java +++ b/src/main/java/noppes/npcs/DataDisplay.java @@ -58,7 +58,7 @@ public class DataDisplay { "Embrera", "Eldamore", "Faolan", "Chim", "Nasu", "Kathrine", "Ariel", "Arei", "Demytrix", "Kora", "Ava", "Larson", "Leonardo", "Wyrl", "Sakiama", "Lambton", "Kederath", "Malus", "Riplette", "Andern", "Ezall", "Lucien", "Droco", "Cray", "Tymen", "Zenix", "Entranger", - "Saenorath", "Chris", "Christine", "Marble", "Mable", "Ross", "Rose", "Xalgan ", "Kennet" + "Saenorath", "Chris", "Christine", "Marble", "Mable", "Ross", "Rose", "Xalgan ", "Kennet", "Kamkeel" }; name = names[new Random().nextInt(names.length)]; } diff --git a/src/main/java/noppes/npcs/client/ClientProxy.java b/src/main/java/noppes/npcs/client/ClientProxy.java index 2a93f03e8..fa48df938 100644 --- a/src/main/java/noppes/npcs/client/ClientProxy.java +++ b/src/main/java/noppes/npcs/client/ClientProxy.java @@ -183,7 +183,7 @@ public class ClientProxy extends CommonProxy { // Changes Made Here: RenderingRegistry.registerEntityRenderingHandler(EntityCustomNpc.class, new RenderCustomNpc()); - RenderingRegistry.registerEntityRenderingHandler(EntityNPC64x64.class, new RenderCustomNpc(1)); + RenderingRegistry.registerEntityRenderingHandler(EntityNPC64x64.class, new RenderCustomNpc(false)); // False for Steve RenderingRegistry.registerEntityRenderingHandler(EntityNPCGolem.class, new RenderNPCHumanMale( diff --git a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java index 21097d35f..c12892c6f 100644 --- a/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java +++ b/src/main/java/noppes/npcs/client/gui/model/GuiCreationScreen.java @@ -63,7 +63,7 @@ public class GuiCreationScreen extends GuiModelInterface implements ICustomScrol } catch (NoSuchMethodException e) { } } - data.put("NPC64", EntityNPC64x64.class); + data.put("CustomNPC64x64", EntityNPC64x64.class); list = new ArrayList(data.keySet()); Collections.sort(list,String.CASE_INSENSITIVE_ORDER); } diff --git a/src/main/java/noppes/npcs/client/model/ModelMPM.java b/src/main/java/noppes/npcs/client/model/ModelMPM.java index 3c1770a60..cf52183cf 100644 --- a/src/main/java/noppes/npcs/client/model/ModelMPM.java +++ b/src/main/java/noppes/npcs/client/model/ModelMPM.java @@ -121,49 +121,43 @@ public class ModelMPM extends ModelNPCMale{ public ModelMPM(float par1, boolean arms) { - super(par1); + super(par1, true); isArmor = par1 > 0; float par2 = 0; - // Changed Texture Size - int short1 = 64; - int short2 = 64; - this.bipedCloak = new ModelRenderer(this, 0, 0); this.bipedCloak.addBox(-5.0F, 0.0F, -1.0F, 10, 16, 1, par1); this.bipedEars = new ModelRenderer(this, 24, 0); this.bipedEars.addBox(-3.0F, -6.0F, -1.0F, 6, 6, 1, par1); - this.bipedHead = (new ModelScaleRenderer(this, 0, 0)).setTextureSize(short1, short2); + this.bipedHead = (new ModelScaleRenderer(this, 0, 0)); this.bipedHead.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, par1); this.bipedHead.setRotationPoint(0.0F, 0.0F + par2, 0.0F); - this.bipedHeadwear = (new ModelScaleRenderer(this, 32, 0)).setTextureSize(short1, short2); + this.bipedHeadwear = (new ModelScaleRenderer(this, 32, 0)); this.bipedHeadwear.addBox(-4.0F, -8.0F, -4.0F, 8, 8, 8, par1 + 0.5F); this.bipedHeadwear.setRotationPoint(0.0F, 0.0F + par2, 0.0F); - this.bipedBody = (new ModelScaleRenderer(this, 16, 16)).setTextureSize(short1, short2); + this.bipedBody = (new ModelScaleRenderer(this, 16, 16)); this.bipedBody.addBox(-4.0F, 0.0F, -2.0F, 8, 12, 4, par1); this.bipedBody.setRotationPoint(0.0F, 0.0F + par2, 0.0F); - this.bipedRightArm = (new ModelScaleRenderer(this, 40, 16)).setTextureSize(short1, short2); + this.bipedRightArm = (new ModelScaleRenderer(this, 40, 16)); this.bipedRightArm.addBox(-3.0F, -2.0F, -2.0F, 4, 12, 4, par1); this.bipedRightArm.setRotationPoint(-5.0F, 2.0F + par2, 0.0F); - // Changed Texture Size - this.bipedLeftArm = (new ModelScaleRenderer(this, 32, 48)).setTextureSize(short1, short2); - this.bipedLeftArm.mirror = true; + // Changed for 64x64 Texture + this.bipedLeftArm = new ModelScaleRenderer(this, 32, 48); this.bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, par1); this.bipedLeftArm.setRotationPoint(5.0F, 2.0F + par2, 0.0F); - this.bipedRightLeg = (new ModelScaleRenderer(this, 0, 16)).setTextureSize(short1, short2); + this.bipedRightLeg = (new ModelScaleRenderer(this, 0, 16)); this.bipedRightLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, par1); this.bipedRightLeg.setRotationPoint(-1.9F, 12.0F + par2, 0.0F); - // Changed Texture Size - this.bipedLeftLeg = (new ModelScaleRenderer(this, 16, 48)).setTextureSize(short1, short2); - this.bipedLeftLeg.mirror = true; + // Changed for 64x64 Texture + this.bipedLeftLeg = new ModelScaleRenderer(this, 16, 48); this.bipedLeftLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, par1); this.bipedLeftLeg.setRotationPoint(1.9F, 12.0F + par2, 0.0F); diff --git a/src/main/java/noppes/npcs/client/model/ModelNPCMale.java b/src/main/java/noppes/npcs/client/model/ModelNPCMale.java index f26676198..05b80fa6b 100644 --- a/src/main/java/noppes/npcs/client/model/ModelNPCMale.java +++ b/src/main/java/noppes/npcs/client/model/ModelNPCMale.java @@ -25,17 +25,85 @@ public class ModelNPCMale extends ModelBiped { init(f, 0.0F); } + + public ModelNPCMale(float f, boolean newSteve) + { + super(f, 0.0F, 64, 64); + init(f, 0.0F, true); + } + @Override public void setLivingAnimations(EntityLivingBase par1EntityLiving, float f6, float f5, float par9){ animationTick += par9; dancingTicks = CustomNpcs.ticks / 3.978873F; } + + + // 64x64 Skin + public void init(float f, float f1, boolean NewSteve) + { + + heldItemLeft = 0; + heldItemRight = 0; + isSneak = false; + aimedBow = false; + + // Changed + bipedCloak = new ModelRenderer(this, 0, 0); + bipedCloak.setTextureSize(64, 32); + bipedCloak.addBox(-5.0F, 0.0F, -1.0F, 10, 16, 1, f); + + // Same + bipedEars = new ModelRenderer(this, 24, 0); + bipedEars.setTextureSize(64, 32); // NEW LINE + bipedEars.addBox(-3F, -6F, -1F, 6, 6, 1, f); + + bipedHead = new ModelRenderer(this, 0, 0); + bipedHead.addBox(-4F, -8F, -4F, 8, 8, 8, f); + bipedHead.setRotationPoint(0.0F, 0.0F + f1, 0.0F); + + bipedHeadwear = new ModelRenderer(this, 32, 0); + bipedHeadwear.addBox(-4F, -8F, -4F, 8, 8, 8, f + 0.5F); + bipedHeadwear.setRotationPoint(0.0F, 0.0F + f1, 0.0F); + + bipedBody = new ModelRenderer(this, 16, 16); + bipedBody.addBox(-4F, 0.0F, -2F, 8, 12, 4, f); + bipedBody.setRotationPoint(0.0F, 0.0F + f1, 0.0F); + + + bipedRightArm = new ModelRenderer(this, 40, 16); + bipedRightArm.addBox(-3F, -2F, -2F, 4, 12, 4, f); + bipedRightArm.setRotationPoint(-5F, 2.0F + f1, 0.0F); + + // Changed + bipedLeftArm = new ModelRenderer(this, 32, 48); + bipedLeftArm.addBox(-1.0F, -2.0F, -2.0F, 4, 12, 4, f); + bipedLeftArm.setRotationPoint(5.0F, 2.0F + f1, 0.0F); + + bipedRightLeg = new ModelRenderer(this, 0, 16); + bipedRightLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, f); + bipedRightLeg.setRotationPoint(-2F, 12F + f1, 0.0F); + + // Changed + bipedLeftLeg = new ModelRenderer(this, 16, 48); + bipedLeftLeg.addBox(-2.0F, 0.0F, -2.0F, 4, 12, 4, f); + bipedLeftLeg.setRotationPoint(1.9F, 12.0F + f1, 0.0F); + + bipedLeftLeg = new ModelRenderer(this, 0, 16); + bipedLeftLeg.mirror = true; + bipedLeftLeg.addBox(-2F, 0.0F, -2F, 4, 12, 4, f); + bipedLeftLeg.setRotationPoint(2.0F, 12F + f1, 0.0F); + + } + + // 64x32 public void init(float f, float f1) { heldItemLeft = 0; heldItemRight = 0; isSneak = false; aimedBow = false; + bipedCloak = new ModelRenderer(this, 0, 0); bipedCloak.textureHeight = 32; bipedCloak.addBox(-5F, 0.0F, -1F, 10, 16, 1, f); @@ -70,6 +138,9 @@ public class ModelNPCMale extends ModelBiped } + + + @Override public void render(Entity par1Entity, float par2, float par3, float par4, float par5, float par6, float par7){ setRotationAngles(par2, par3, par4, par5, par6, par7, par1Entity); diff --git a/src/main/java/noppes/npcs/client/model/ModelPlayer.java b/src/main/java/noppes/npcs/client/model/ModelPlayer.java new file mode 100644 index 000000000..7bf86e002 --- /dev/null +++ b/src/main/java/noppes/npcs/client/model/ModelPlayer.java @@ -0,0 +1,18 @@ +package api.player.model; + +import net.minecraft.client.model.ModelBiped; + +public class ModelPlayer extends ModelBiped { + + public ModelPlayer() { + this(0.0F); + } + + public ModelPlayer(float var1) { + this(var1, 0.0F, 64, 32); + } + + public ModelPlayer(float var1, float var2, int var3, int var4) { + super(var1, var2, var3, var4); + } +} diff --git a/src/main/java/noppes/npcs/client/renderer/ImageBufferDownloadAlt.java b/src/main/java/noppes/npcs/client/renderer/ImageBufferDownloadAlt.java index 9c4091dd8..63374eb02 100644 --- a/src/main/java/noppes/npcs/client/renderer/ImageBufferDownloadAlt.java +++ b/src/main/java/noppes/npcs/client/renderer/ImageBufferDownloadAlt.java @@ -3,6 +3,7 @@ package noppes.npcs.client.renderer; import java.awt.Graphics; import java.awt.image.BufferedImage; import java.awt.image.DataBufferInt; +import java.awt.image.ImageObserver; import net.minecraft.client.renderer.ImageBufferDownload; @@ -11,21 +12,41 @@ public class ImageBufferDownloadAlt extends ImageBufferDownload private int imageData[]; private int imageWidth; private int imageHeight; + private boolean NPC64; + + public ImageBufferDownloadAlt(){ + NPC64 = false; + } + + public ImageBufferDownloadAlt(boolean type){ + NPC64 = type; + } + @Override public BufferedImage parseUserSkin(BufferedImage bufferedimage) - { - imageWidth = bufferedimage.getWidth(null); - imageHeight = imageWidth / 2; - + { + + imageWidth = bufferedimage.getWidth(null); + + if(NPC64){ + imageHeight = bufferedimage.getHeight(null); + } + else{ + imageHeight = imageWidth / 2; + } + BufferedImage bufferedimage1 = new BufferedImage(imageWidth, imageHeight, 2); Graphics g = bufferedimage1.getGraphics(); g.drawImage(bufferedimage, 0, 0, null); g.dispose(); imageData = ((DataBufferInt)bufferedimage1.getRaster().getDataBuffer()).getData(); + setAreaTransparent(imageWidth / 2, 0, imageWidth, imageHeight / 2); + return bufferedimage1; } + /** * Makes the given area of the image transparent if it was previously completely opaque (used to remove the outer * layer of a skin around the head if it was saved all opaque; this would be redundant so it's assumed that the skin diff --git a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java index f45ff421a..9f8aff146 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderCustomNpc.java @@ -24,12 +24,16 @@ public class RenderCustomNpc extends RenderNPCHumanMale{ private ModelRenderPassHelper renderpass = new ModelRenderPassHelper(); + // Default Renderer public RenderCustomNpc() { super(new ModelMPM(0), new ModelMPM(1), new ModelMPM(0.5f)); } - public RenderCustomNpc(int i) { - super(new ModelMPM(0, true), new ModelMPM(1, true), new ModelMPM(0.5f, true)); + // 64x64 Version + // True = Alex Arms + // False = Steve Arms + public RenderCustomNpc(boolean arms) { + super(new ModelMPM(0, arms), new ModelMPM(1, arms), new ModelMPM(0.5f, arms)); } @Override diff --git a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java index 0f1071f57..eed473fef 100644 --- a/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java +++ b/src/main/java/noppes/npcs/client/renderer/RenderNPCInterface.java @@ -306,7 +306,7 @@ public class RenderNPCInterface extends RenderLiving{ sb.append(String.format("%02x", b&0xff)); } npc.textureLocation = new ResourceLocation("skins/" + sb.toString()); - func_110301_a(null, npc.textureLocation, npc.display.url); + loadSkin(null, npc.textureLocation, npc.display.url); LastTextureTick = 0; } catch(Exception ex){ @@ -319,9 +319,10 @@ public class RenderNPCInterface extends RenderLiving{ return npc.textureLocation; } - private void func_110301_a(File file, ResourceLocation resource, String par1Str){ + private void loadSkin(File file, ResourceLocation resource, String par1Str){ TextureManager texturemanager = Minecraft.getMinecraft().getTextureManager(); ITextureObject object = new ImageDownloadAlt(file, par1Str, SkinManager.field_152793_a, new ImageBufferDownloadAlt()); texturemanager.loadTexture(resource, object); } + } diff --git a/src/main/java/noppes/npcs/entity/EntityNPC64x64.java b/src/main/java/noppes/npcs/entity/EntityNPC64x64.java index c53069224..678478056 100644 --- a/src/main/java/noppes/npcs/entity/EntityNPC64x64.java +++ b/src/main/java/noppes/npcs/entity/EntityNPC64x64.java @@ -13,6 +13,7 @@ public class EntityNPC64x64 extends EntityCustomNpc{ public EntityNPC64x64(World world) { super(world); - display.setSkinTexture("customnpcs:textures/entity/humanmale/Steve64.png"); + display.texture = "customnpcs:textures/entity/humanmale/Steve64.png"; } + } diff --git a/src/main/resources/assets/customnpcs/textures/entity/humanmale/64test.png b/src/main/resources/assets/customnpcs/textures/entity/humanmale/64test.png new file mode 100644 index 000000000..be4566757 Binary files /dev/null and b/src/main/resources/assets/customnpcs/textures/entity/humanmale/64test.png differ