From 5f018144415f44a743e54fe444394f7264ec878e Mon Sep 17 00:00:00 2001 From: Sollace Date: Sun, 9 Dec 2018 18:27:40 +0200 Subject: [PATCH] Added a very festive surprise --- .../model/gear/ChristmasHat.java | 102 ++++++++++++++++++ .../minelittlepony/model/gear/SaddleBags.java | 1 - .../pony/data/PonyWearable.java | 3 +- .../render/layer/LayerGear.java | 4 +- .../textures/models/antlers.png | Bin 0 -> 462 bytes 5 files changed, 107 insertions(+), 3 deletions(-) create mode 100644 src/main/java/com/minelittlepony/model/gear/ChristmasHat.java create mode 100644 src/main/resources/assets/minelittlepony/textures/models/antlers.png 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 0000000000000000000000000000000000000000..b19eed85b07e714c01c9ad31aaabf22b8eb97351 GIT binary patch literal 462 zcmV;<0WtoGP) zW|EI4#ZFm?zhEI7imhzq2UyryC|UV2#DDOyqef$4W0pouD5(+8yE!@MU7TxoZSJ}+ z0Wcnq<#xNpG);sMSeC_dxx_FGq?9}!4}=hyrb#p!#rJ&_MPad62+?Y_-8cW4wKL4na}5Bvspr+5T54|i^VVu0|46Xwyf1^l0P&W4OuRizuxQh zWV6})`oD;Nzb|jM8<9u^$8oSM3)gkY<#M>Li>7I)s!B4MQYlQ+WHy@#F&GS_ZQCe{!s&D(olfKX zKE+~@AP7(tg&+v9ZJR_Qfu?DEJ|8ZZ%ijj0(MVP*mG8&NWFo88>eq+E;r|~=fW>-Db&KVkKjCUPg3k^lez07*qoM6N<$ Ef}+sMYXATM literal 0 HcmV?d00001