diff --git a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java index eeb40aee..0c567290 100644 --- a/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java +++ b/src/main/java/com/minelittlepony/unicopia/ability/magic/spell/ThrowableSpell.java @@ -65,7 +65,7 @@ public final class ThrowableSpell extends AbstractDelegatingSpell { projectile.setPosition(entity.getX(), entity.getEyeY() - 0.1F, entity.getZ()); projectile.setOwner(entity); projectile.setItem(GemstoneItem.enchant(UItems.GEMSTONE.getDefaultStack(), spell.getType())); - projectile.getSpellSlot().put(this); + projectile.getSpellSlot().put(spell); projectile.setVelocity(entity, entity.getPitch(), entity.getYaw(), 0, 1.5F, divergance); projectile.setNoGravity(true); configureProjectile(projectile, caster); diff --git a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java index e87eca3f..6defe95d 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java +++ b/src/main/java/com/minelittlepony/unicopia/client/particle/SphereParticle.java @@ -129,7 +129,7 @@ public class SphereParticle extends Particle implements Attachment { RenderSystem.setShaderColor(color[0], color[1], color[2], colorAlpha / 3F); VertexConsumerProvider.Immediate immediate = MinecraftClient.getInstance().getBufferBuilders().getEntityVertexConsumers(); - VertexConsumer buffer = immediate.getBuffer(RenderLayers.getMagicGlow()); + VertexConsumer buffer = immediate.getBuffer(RenderLayers.getMagicNoColor()); MatrixStack matrices = new MatrixStack(); diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java b/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java index 21effd81..b2584611 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java @@ -1,37 +1,48 @@ package com.minelittlepony.unicopia.client.render; +import java.util.function.Function; + +import com.minelittlepony.common.util.Color; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.render.RenderLayer; import net.minecraft.client.render.VertexFormat; import net.minecraft.client.render.VertexFormats; +import net.minecraft.util.Util; public final class RenderLayers extends RenderLayer { private RenderLayers() { super(null, null, null, 0, false, false, null, null); } - private static final RenderLayer MAGIC_GLOW = of("uni_shield", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, + private static final RenderLayer MAGIC_NO_COLOR = of("magic_no_color", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, VertexFormat.DrawMode.QUADS, 256, true, true, MultiPhaseParameters.builder() .shader(COLOR_SHADER) .transparency(TRANSLUCENT_TRANSPARENCY) .target(TRANSLUCENT_TARGET) .build(false)); - private static final RenderLayer FAIRY = of("fairy", VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, - VertexFormat.DrawMode.QUADS, 256, true, true, MultiPhaseParameters.builder() - .shader(COLOR_SHADER) - .transparency(TRANSLUCENT_TRANSPARENCY) - .target(TRANSLUCENT_TARGET) - .texturing(solid(0.8F, 0.9F, 1, 0.6F)) - .build(false)); + private static final Function MAGIC_COLORIN_FUNC = Util.memoize(color -> { + return of("magic_colored_" + color, VertexFormats.POSITION_COLOR_TEXTURE_OVERLAY_LIGHT_NORMAL, + VertexFormat.DrawMode.QUADS, 256, true, true, MultiPhaseParameters.builder() + .shader(COLOR_SHADER) + .transparency(TRANSLUCENT_TRANSPARENCY) + .target(TRANSLUCENT_TARGET) + .texturing(solid(Color.r(color), Color.g(color), Color.b(color), 0.6F)) + .build(false)); + }); + private static final RenderLayer MAGIC_COLORED = getMagicColored(Color.argbToHex(1, 0.8F, 0.9F, 1)); - public static RenderLayer getMagicGlow() { - return MAGIC_GLOW; + public static RenderLayer getMagicNoColor() { + return MAGIC_NO_COLOR; } - public static RenderLayer getFairy() { - return FAIRY; + public static RenderLayer getMagicColored() { + return MAGIC_COLORED; + } + + public static RenderLayer getMagicColored(int color) { + return MAGIC_COLORIN_FUNC.apply(color); } private static Texturing solid(float r, float g, float b, float a) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/FairyEntityRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/entity/FairyEntityRenderer.java index cd8c7808..e9ac0940 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/FairyEntityRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/entity/FairyEntityRenderer.java @@ -27,7 +27,7 @@ public class FairyEntityRenderer extends MobEntityRenderer RenderLayers.getFairy()); + super(texture -> RenderLayers.getMagicColored()); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/entity/MagicBeamEntityRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/entity/MagicBeamEntityRenderer.java index 79587eef..7bede625 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/entity/MagicBeamEntityRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/entity/MagicBeamEntityRenderer.java @@ -47,14 +47,20 @@ public class MagicBeamEntityRenderer extends EntityRenderer spell.getType().getColor()) + .map(RenderLayers::getMagicColored) + .orElseGet(RenderLayers::getMagicColored); model.render(matrices, vertexConsumers.getBuffer(layer), light, OverlayTexture.DEFAULT_UV, 1, 1, 1, 1); @@ -67,7 +73,7 @@ public class MagicBeamEntityRenderer extends EntityRenderer RenderLayers.getFairy()); + super(texture -> RenderLayers.getMagicColored()); this.part = part; }