From 65cf88e50acac1ba96cac00646959f25f577fa04 Mon Sep 17 00:00:00 2001 From: Sollace Date: Mon, 10 Dec 2018 00:05:33 +0200 Subject: [PATCH] Added a particle effect when switching from pony to seapony and back --- .../render/player/RenderSeaponyPlayer.java | 14 +++++++++++++- .../com/minelittlepony/util/math/MathUtil.java | 4 ++++ 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/src/main/java/com/minelittlepony/render/player/RenderSeaponyPlayer.java b/src/main/java/com/minelittlepony/render/player/RenderSeaponyPlayer.java index 37a80554..4d6a4f8b 100644 --- a/src/main/java/com/minelittlepony/render/player/RenderSeaponyPlayer.java +++ b/src/main/java/com/minelittlepony/render/player/RenderSeaponyPlayer.java @@ -2,9 +2,11 @@ package com.minelittlepony.render.player; import com.minelittlepony.model.ModelWrapper; import com.minelittlepony.pony.data.IPony; +import com.minelittlepony.util.math.MathUtil; import net.minecraft.client.entity.AbstractClientPlayer; import net.minecraft.client.renderer.entity.RenderManager; +import net.minecraft.util.EnumParticleTypes; public class RenderSeaponyPlayer extends RenderPonyPlayer { @@ -26,7 +28,17 @@ public class RenderSeaponyPlayer extends RenderPonyPlayer { mainModel = renderPony.setPonyModel(wet ? seapony : normalPony); + float state = wet ? 100 : 0; + float interpolated = pony.getMetadata().getInterpolator().interpolate("seapony_state", state, 5); + + if (!MathUtil.compareFloats(interpolated, state)) { + double x = player.posX + (player.getEntityWorld().rand.nextFloat() * 2) - 1; + double y = player.posY + (player.getEntityWorld().rand.nextFloat() * 2); + double z = player.posZ + (player.getEntityWorld().rand.nextFloat() * 2) - 1; + + player.getEntityWorld().spawnParticle(EnumParticleTypes.END_ROD, x, y, z, 0, 0, 0); + } + return pony; } - } diff --git a/src/main/java/com/minelittlepony/util/math/MathUtil.java b/src/main/java/com/minelittlepony/util/math/MathUtil.java index dd34b543..ba8f8d92 100644 --- a/src/main/java/com/minelittlepony/util/math/MathUtil.java +++ b/src/main/java/com/minelittlepony/util/math/MathUtil.java @@ -37,4 +37,8 @@ public class MathUtil { public static float interpolateRadians(float prev, float current, float partialTicks) { return (float)Math.toRadians(interpolateDegress(prev, current, partialTicks)); } + + public static boolean compareFloats(float a, float b) { + return Math.abs(a - b) <= 0.001F; + } }