diff --git a/src/main/java/com/minelittlepony/model/gear/ChristmasHat.java b/src/main/java/com/minelittlepony/model/gear/ChristmasHat.java new file mode 100644 index 00000000..3d579386 --- /dev/null +++ b/src/main/java/com/minelittlepony/model/gear/ChristmasHat.java @@ -0,0 +1,102 @@ +package com.minelittlepony.model.gear; + +import net.minecraft.client.renderer.GlStateManager; +import net.minecraft.entity.Entity; +import net.minecraft.util.ResourceLocation; +import net.minecraft.util.math.MathHelper; + +import com.minelittlepony.model.BodyPart; +import com.minelittlepony.model.capabilities.IModel; +import com.minelittlepony.pony.data.PonyWearable; +import com.minelittlepony.render.model.PonyRenderer; +import com.minelittlepony.util.render.Color; + +import java.util.Calendar; + +public class ChristmasHat extends AbstractGear { + + private static final ResourceLocation TEXTURE = new ResourceLocation("minelittlepony", "textures/models/antlers.png"); + + private PonyRenderer left; + private PonyRenderer right; + + private int tint; + + @Override + public void init(float yOffset, float stretch) { + this.boxList.clear(); + + left = new PonyRenderer(this, 0, 0).size(16, 8) + .around(-7, 0.5F, 0.5F) + .offset(-7, 0, 0) + .at(3, -4, 0) + .box(0, 0, 0, 7, 1, 1, stretch) + .tex(0, 2).box(0, -1, 0, 1, 1, 1, stretch) + .tex(4, 2).box(2, -1, 0, 1, 1, 1, stretch) + .tex(8, 2).box(4, -1, 0, 1, 1, 1, stretch); + + right = new PonyRenderer(this, 0, 4).size(16, 8) + .around(7, 0.5F, 0.5F) + .offset(0, 0, 0) + .at(-3, -4, 0) + .box(0, 0, 0, 7, 1, 1, stretch) + .tex(0, 6).box(6, -1, 0, 1, 1, 1, stretch) + .tex(4, 6).box(4, -1, 0, 1, 1, 1, stretch) + .tex(8, 6).box(2, -1, 0, 1, 1, 1, stretch); + } + + @Override + public boolean canRender(IModel model, Entity entity) { + return isChristmasDay() || model.isWearing(PonyWearable.ANTLERS); + } + + @Override + public void setLivingAnimations(IModel model, Entity entity) { + tint = model.getMetadata().getGlowColor(); + } + + @Override + public void setRotationAndAngles(boolean rainboom, float move, float swing, float bodySwing, float ticks) { + float pi = PI * (float) Math.pow(swing, 16); + + float mve = move * 0.6662f; + float srt = swing / 10; + + bodySwing = MathHelper.cos(mve + pi) * srt; + + bodySwing += 0.1F; + + left.rotateAngleZ = bodySwing; + right.rotateAngleZ = -bodySwing; + } + + private boolean isChristmasDay() { + Calendar cal = Calendar.getInstance(); + + return cal.get(Calendar.MONTH) == Calendar.DECEMBER && cal.get(Calendar.DAY_OF_MONTH) == 25; + } + + @Override + public BodyPart getGearLocation() { + return BodyPart.HEAD; + } + + @Override + public ResourceLocation getTexture(Entity entity) { + return TEXTURE; + } + + @Override + public void renderPart(float scale) { + GlStateManager.pushAttrib(); + if (tint != 0) { + Color.glColor(tint, 1); + } + + left.render(scale); + right.render(scale); + + GlStateManager.popAttrib(); + } + +} diff --git a/src/main/java/com/minelittlepony/model/gear/SaddleBags.java b/src/main/java/com/minelittlepony/model/gear/SaddleBags.java index 7b68af9a..b262a327 100644 --- a/src/main/java/com/minelittlepony/model/gear/SaddleBags.java +++ b/src/main/java/com/minelittlepony/model/gear/SaddleBags.java @@ -104,7 +104,6 @@ public class SaddleBags extends AbstractGear { dropAmount = hangLow ? 0.15F : 0; } - public void sethangingLow(boolean veryLow) { hangLow = veryLow; } diff --git a/src/main/java/com/minelittlepony/pony/data/PonyWearable.java b/src/main/java/com/minelittlepony/pony/data/PonyWearable.java index fe3bc9bd..f2d2a419 100644 --- a/src/main/java/com/minelittlepony/pony/data/PonyWearable.java +++ b/src/main/java/com/minelittlepony/pony/data/PonyWearable.java @@ -5,9 +5,10 @@ import java.util.List; public enum PonyWearable implements ITriggerPixelMapped { NONE(0), - SADDLE_BAGS(200), MUFFIN(50), HAT(100), + ANTLERS(150), + SADDLE_BAGS(200), STETSON(250); private int triggerValue; diff --git a/src/main/java/com/minelittlepony/render/layer/LayerGear.java b/src/main/java/com/minelittlepony/render/layer/LayerGear.java index 9d2ee580..9358c2b4 100644 --- a/src/main/java/com/minelittlepony/render/layer/LayerGear.java +++ b/src/main/java/com/minelittlepony/render/layer/LayerGear.java @@ -11,6 +11,7 @@ import com.google.common.collect.Lists; import com.minelittlepony.ducks.IRenderPony; import com.minelittlepony.model.AbstractPonyModel; import com.minelittlepony.model.BodyPart; +import com.minelittlepony.model.gear.ChristmasHat; import com.minelittlepony.model.gear.IGear; import com.minelittlepony.model.gear.IStackable; import com.minelittlepony.model.gear.Muffin; @@ -28,7 +29,8 @@ public class LayerGear extends AbstractPonyLayer new SaddleBags(), new WitchHat(), new Muffin(), - new Stetson() + new Stetson(), + new ChristmasHat() ); public & IRenderPony> LayerGear(R renderer) { diff --git a/src/main/resources/assets/minelittlepony/textures/models/antlers.png b/src/main/resources/assets/minelittlepony/textures/models/antlers.png new file mode 100644 index 00000000..b19eed85 Binary files /dev/null and b/src/main/resources/assets/minelittlepony/textures/models/antlers.png differ