mirror of
https://github.com/Sollace/Unicopia.git
synced 2025-02-01 03:26:44 +01:00
Change the color of the beam to match the spell it contains
This commit is contained in:
parent
f18ed7eed6
commit
1cfc01d1e6
5 changed files with 34 additions and 17 deletions
|
@ -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);
|
||||
|
|
|
@ -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();
|
||||
|
||||
|
|
|
@ -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<Integer, RenderLayer> 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) {
|
||||
|
|
|
@ -27,7 +27,7 @@ public class FairyEntityRenderer extends MobEntityRenderer<FairyEntity, FairyEnt
|
|||
private float radius;
|
||||
|
||||
public Model() {
|
||||
super(texture -> RenderLayers.getFairy());
|
||||
super(texture -> RenderLayers.getMagicColored());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -47,14 +47,20 @@ public class MagicBeamEntityRenderer extends EntityRenderer<MagicProjectileEntit
|
|||
return;
|
||||
}
|
||||
|
||||
float scale = 1 - tickDelta/30F;
|
||||
|
||||
matrices.push();
|
||||
matrices.scale(scale, scale, scale);
|
||||
|
||||
model.setAngles(entity, 0, 0, tickDelta,
|
||||
entity.getYaw(tickDelta) * MathHelper.RADIANS_PER_DEGREE,
|
||||
-entity.getPitch(tickDelta) * MathHelper.RADIANS_PER_DEGREE
|
||||
);
|
||||
|
||||
RenderLayer layer = model.getLayer(getTexture(entity));
|
||||
RenderLayer layer = entity.getSpellSlot().get(true)
|
||||
.map(spell -> 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<MagicProjectileEntit
|
|||
private final ModelPart part;
|
||||
|
||||
public Model(ModelPart part) {
|
||||
super(texture -> RenderLayers.getFairy());
|
||||
super(texture -> RenderLayers.getMagicColored());
|
||||
this.part = part;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue