From 153d32af3f32fc3e3a4a0e918a5a04ef6a12e85e Mon Sep 17 00:00:00 2001 From: Sollace Date: Wed, 22 Aug 2018 20:06:03 +0200 Subject: [PATCH] Move saddlebags away from pure white and do ABSOLUTELY NOTHING ELSE --- .../model/components/Muffin.java | 49 ++++++++++++++++++ .../model/ponies/ModelVillagerPony.java | 21 ++++++-- .../pony/data/PonyWearable.java | 3 +- .../render/AbstractPonyRenderer.java | 7 ++- .../minelittlepony/textures/models/muffin.png | Bin 0 -> 549 bytes 5 files changed, 73 insertions(+), 7 deletions(-) create mode 100644 src/main/java/com/minelittlepony/model/components/Muffin.java create mode 100644 src/main/resources/assets/minelittlepony/textures/models/muffin.png diff --git a/src/main/java/com/minelittlepony/model/components/Muffin.java b/src/main/java/com/minelittlepony/model/components/Muffin.java new file mode 100644 index 00000000..8e8de345 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/components/Muffin.java @@ -0,0 +1,49 @@ +package com.minelittlepony.model.components; + +import net.minecraft.client.Minecraft; +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.client.renderer.texture.TextureManager; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; + +import com.minelittlepony.model.AbstractPonyModel; +import com.minelittlepony.model.capabilities.IModelPart; +import com.minelittlepony.render.PonyRenderer; + +public class Muffin implements IModelPart { + + private static final ResourceLocation TEXTURE = new ResourceLocation("minelittlepony", "textures/models/muffin.png"); + + private PonyRenderer crown; + + AbstractPonyModel model; + + public Muffin(AbstractPonyModel model) { + this.model = model; + } + + @Override + public void init(float yOffset, float stretch) { + crown = new PonyRenderer(model, 0, 0).size(64, 44) + .around(-4, -12, -6) + .box(0, 0, 0, 8, 4, 8, stretch) + .box(3, -1.5F, 3, 2, 2, 2, stretch) + .tex(0, 12).box(1.5F, -1, 1.5F, 5, 1, 5, stretch) + .tex(0, 18).box(2, 1, 1, 4, 7, 6, stretch) + .tex(0, 18).box(1, 1, 2, 6, 7, 4, stretch); + } + + @Override + public void renderPart(float scale) { + GL11.glPushAttrib(GL11.GL_ALL_ATTRIB_BITS); + + TextureManager tex = Minecraft.getMinecraft().getRenderManager().renderEngine; + tex.bindTexture(TEXTURE); + + crown.render(scale); + + GlStateManager.popAttrib(); + } + +} diff --git a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java index 62a8f126..4e417d5b 100644 --- a/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java +++ b/src/main/java/com/minelittlepony/model/ponies/ModelVillagerPony.java @@ -5,7 +5,8 @@ import net.minecraft.entity.EntityLivingBase; import net.minecraft.entity.monster.EntityZombieVillager; import net.minecraft.entity.passive.EntityVillager; -import com.minelittlepony.model.components.SaddleBags; +import com.minelittlepony.model.capabilities.IModelPart; +import com.minelittlepony.model.components.Muffin; import com.minelittlepony.model.player.ModelAlicorn; import com.minelittlepony.pony.data.PonyWearable; import com.minelittlepony.render.plane.PlaneRenderer; @@ -14,9 +15,11 @@ public class ModelVillagerPony extends ModelAlicorn { public PlaneRenderer apron, trinket; + public IModelPart muffin; + private int profession; - private boolean special; + public boolean special; public ModelVillagerPony() { super(false); @@ -48,6 +51,15 @@ public class ModelVillagerPony extends ModelAlicorn { } } + @Override + protected void renderHead(Entity entity, float move, float swing, float ticks, float headYaw, float headPitch, float scale) { + super.renderHead(entity, move, swing, ticks, headYaw, headPitch, scale); + + if (special && entity.getUniqueID().getLeastSignificantBits() % 20 == 0) { + muffin.renderPart(scale); + } + } + @Override public boolean isWearing(PonyWearable wearable) { if (wearable == PonyWearable.SADDLE_BAGS) { @@ -70,8 +82,9 @@ public class ModelVillagerPony extends ModelAlicorn { @Override public void init(float yOffset, float stretch) { super.init(yOffset, stretch); - saddlebags = new SaddleBags(this); - saddlebags.init(yOffset, stretch); + + muffin = new Muffin(this); + muffin.init(yOffset, stretch); apron = new PlaneRenderer(this, 56, 16) .offset(BODY_CENTRE_X, BODY_CENTRE_Y, BODY_CENTRE_Z) diff --git a/src/main/java/com/minelittlepony/pony/data/PonyWearable.java b/src/main/java/com/minelittlepony/pony/data/PonyWearable.java index 941d9682..885871b2 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonyWearable.java +++ b/src/main/java/com/minelittlepony/pony/data/PonyWearable.java @@ -5,7 +5,8 @@ import java.util.List; public enum PonyWearable implements ITriggerPixelMapped { NONE(0), - SADDLE_BAGS(255), + SADDLE_BAGS(200), + MUFFIN(50), HAT(100); private int triggerValue; diff --git a/src/main/java/com/minelittlepony/render/AbstractPonyRenderer.java b/src/main/java/com/minelittlepony/render/AbstractPonyRenderer.java index 3097fef9..169df1d4 100644 --- a/src/main/java/com/minelittlepony/render/AbstractPonyRenderer.java +++ b/src/main/java/com/minelittlepony/render/AbstractPonyRenderer.java @@ -59,8 +59,11 @@ public abstract class AbstractPonyRenderer> ex return setTextureOffset(x, y); } - public T size(int x, int y) { - return (T) setTextureSize(x, y); + /** + * Sets the texture size for this renderer. + */ + public T size(int w, int h) { + return (T) setTextureSize(w, h); } /** diff --git a/src/main/resources/assets/minelittlepony/textures/models/muffin.png b/src/main/resources/assets/minelittlepony/textures/models/muffin.png new file mode 100644 index 0000000000000000000000000000000000000000..d041e79ee5bce1e9a7f812eab07d19712444a27c GIT binary patch literal 549 zcmV+=0^0qFP)7X!s>y8x6BiSSz`*9@ri-5e6DQ>ZfUA59H~9cMh{VA`j3*n3tj>*z zfus&lQ|{X1Vg#?p`%FDrxV*pjZ(&kO06_opc(Rx(e}2sXpxZ7=0N~uyw;{v;akPK< z$dF)V;~Y}PE2BC0z_~XA;r>p{e5X?7a6#;?c_gC_jCOM&kL%GO#2{q64k76gkim*8 zt8$$&CIO(+=>Pyqr4j>xm)nz{8la*;h(V|(xGIW(py$iwGN#WG0GQ@&o7XE7k#AJ2C!y3M5sFP64Lw0=l~Gq6|)Z0Py+#1prvzT61E~ z|MeWexfjYuWxN8RKhq%O@*rf}*eK*z0zf8irB`{c6nu77OX&hhE|$hF007O??MN^? zo0IJ64aWe0i>p_bniSAgZ~3UVe53Kfb?N}>%lsZ zsyV;}L8&(!r^0vuV2xTq>c;%_`rz!D{uL$w1b_e#fJAqJMZO^EcLeKYh*E$65C8%| n00;m9AOHk_01yBIkY;@YJ%{L_&wy`v00000NkvXXu0mjfmv;EA literal 0 HcmV?d00001