diff --git a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java index 09e26699..950410ad 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java +++ b/src/main/java/com/minelittlepony/unicopia/client/gui/spellbook/IngredientTree.java @@ -5,23 +5,23 @@ import java.util.Arrays; import java.util.List; import java.util.Optional; +import com.minelittlepony.client.util.render.RenderLayerUtil; import com.minelittlepony.common.client.gui.*; import com.minelittlepony.common.client.gui.element.Button; import com.minelittlepony.unicopia.ability.magic.spell.crafting.SpellbookRecipe; import com.minelittlepony.unicopia.ability.magic.spell.trait.Trait; import com.minelittlepony.unicopia.client.gui.ItemTraitsTooltipRenderer; -import com.minelittlepony.unicopia.client.render.PassThroughVertexConsumer; import com.mojang.blaze3d.systems.RenderSystem; import net.minecraft.client.MinecraftClient; import net.minecraft.client.gui.DrawContext; import net.minecraft.client.item.TooltipContext; import net.minecraft.client.render.*; +import com.minelittlepony.unicopia.client.render.RenderLayers; import net.minecraft.client.render.item.ItemRenderer; import net.minecraft.client.render.model.json.ModelTransformationMode; import net.minecraft.client.util.math.MatrixStack; import net.minecraft.item.ItemStack; -import net.minecraft.screen.PlayerScreenHandler; class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { private final List entries = new ArrayList<>(); @@ -261,9 +261,6 @@ class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { } static class HiddenStacks extends Stacks { - private static final PassThroughVertexConsumer.Parameters FIXTURE = new PassThroughVertexConsumer.Parameters() - .color((parent, r, g, b, a) -> parent.color(0, 0, 0, 0.6F)); - HiddenStacks(ItemStack stack) { super(stack); } @@ -272,8 +269,6 @@ class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { protected void drawItem(DrawContext context, int x, int y) { var model = itemRenderer.getModel(stack, null, null, 0); - MinecraftClient.getInstance().getTextureManager().getTexture(PlayerScreenHandler.BLOCK_ATLAS_TEXTURE).setFilter(false, false); - RenderSystem.setShaderTexture(0, PlayerScreenHandler.BLOCK_ATLAS_TEXTURE); MatrixStack matrices = context.getMatrices(); matrices.push(); matrices.translate(x, y, 100); @@ -286,12 +281,12 @@ class IngredientTree implements SpellbookRecipe.CraftingTreeBuilder { DiffuseLighting.disableGuiDepthLighting(); } RenderSystem.disableDepthTest(); - try { - itemRenderer.renderItem(stack, ModelTransformationMode.GUI, false, matrices, layer -> FIXTURE.build(immediate.getBuffer(layer)), 0, OverlayTexture.DEFAULT_UV, model); - immediate.draw(); - } catch (Exception e) { - // Sodium - } + itemRenderer.renderItem(stack, ModelTransformationMode.GUI, false, matrices, layer -> { + return immediate.getBuffer(RenderLayerUtil.getTexture(layer).map(texture -> { + return RenderLayers.getMagicColored(texture, 0x09000000); + }).orElse(RenderLayers.getMagicColored(0x09000000))); + }, 0, OverlayTexture.DEFAULT_UV, model); + immediate.draw(); RenderSystem.enableDepthTest(); if (bl) { diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/HornFeatureRenderer.java b/src/main/java/com/minelittlepony/unicopia/client/render/HornFeatureRenderer.java index 4e1214ec..068263e5 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/HornFeatureRenderer.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/HornFeatureRenderer.java @@ -58,7 +58,7 @@ public class HornFeatureRenderer implements AccessoryFea .filter(i -> i != -1).or(() -> pony.getSpellSlot().get(SpellPredicate.IS_NOT_PLACED, false).map(spell -> spell.getType().getColor())); }).ifPresent(color -> { model.setState(true); - model.render(stack, ItemRenderer.getArmorGlintConsumer(renderContext, RenderLayers.getMagicColored(color), false, false), lightUv, OverlayTexture.DEFAULT_UV, 1, 1, 1, 1); + model.render(stack, ItemRenderer.getArmorGlintConsumer(renderContext, RenderLayers.getMagicColored((0x99 << 24) | color), false, false), lightUv, OverlayTexture.DEFAULT_UV, 1, 1, 1, 1); }); } } diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/PassThroughVertexConsumer.java b/src/main/java/com/minelittlepony/unicopia/client/render/PassThroughVertexConsumer.java deleted file mode 100644 index b78ae93a..00000000 --- a/src/main/java/com/minelittlepony/unicopia/client/render/PassThroughVertexConsumer.java +++ /dev/null @@ -1,157 +0,0 @@ -package com.minelittlepony.unicopia.client.render; - -import org.jetbrains.annotations.Nullable; - -import net.minecraft.client.render.VertexConsumer; -import net.minecraft.client.render.VertexConsumers; - -public class PassThroughVertexConsumer extends VertexConsumers.Union implements VertexConsumer { - private final float[] buffer = new float[8]; - - private final Applicate colorFix; - private final Applicate textureFix; - private final Applicate overlayFix; - - private PassThroughVertexConsumer(VertexConsumer parent, Parameters parameters) { - super(new VertexConsumer[] {parent}); - colorFix = Applicate.of(parameters.colorFix, ColorFix.NULL, super::color, (newR, newG, newB, newA) -> { - buffer[0] = newR / 255F; - buffer[1] = newG / 255F; - buffer[2] = newB / 255F; - buffer[3] = newA / 255F; - }); - textureFix = Applicate.of(parameters.textureFix, FUvFix.NULL, super::texture, (u, v) -> { - buffer[4] = u; - buffer[5] = v; - }); - overlayFix = Applicate.of(parameters.overlayFix, IUvFix.NULL, super::overlay, (u, v) -> { - buffer[6] = u; - buffer[7] = v; - }); - } - - @Override - public VertexConsumer color(int r, int g, int b, int a) { - colorFix.getFix().apply(colorFix.setter, r, g, b, a); - colorFix.nested = false; - return this; - } - - @Override - public VertexConsumer texture(float u, float v) { - textureFix.getFix().apply(textureFix.setter, u, v); - textureFix.nested = false; - return this; - } - - @Override - public VertexConsumer overlay(int u, int v) { - overlayFix.getFix().apply(overlayFix.setter, u, v); - overlayFix.nested = false; - return this; - } - - @Override - public void vertex(float x, float y, float z, float red, float green, float blue, float alpha, float u, float v, int overlay, int light, float normalX, float normalY, float normalZ) { - colorFix.getFix().apply(colorFix.collector, (int)(red * 255), (int)(green * 255F), (int)(blue * 255), (int)(alpha * 255)); - colorFix.nested = false; - textureFix.getFix().apply(textureFix.collector, u, v); - textureFix.nested = false; - overlayFix.getFix().apply(overlayFix.collector, overlay & 0xFFFF, overlay >> 16 & 0xFFFF); - overlayFix.nested = false; - super.vertex(x, y, z, buffer[0], buffer[1], buffer[2], buffer[3], buffer[4], buffer[5], (int)buffer[6] | (int)buffer[7] << 16, light, normalX, normalY, normalZ); - } - - public static class Parameters { - private @Nullable ColorFix colorFix; - private @Nullable FUvFix textureFix; - private @Nullable IUvFix overlayFix; - - public Parameters color(ColorFix fix) { - colorFix = fix; - return this; - } - - public Parameters texture(FUvFix fix) { - textureFix = fix; - return this; - } - - public Parameters overlay(IUvFix fix) { - overlayFix = fix; - return this; - } - - public VertexConsumer build(VertexConsumer parent) { - return new PassThroughVertexConsumer(parent, this); - } - } - - private static class Applicate, V> { - public final T fix; - public final T fallback; - public final V setter; - public final V collector; - - public boolean nested; - - public Applicate(T fix, T fallback, V setter, V collector) { - this.fix = fix; - this.fallback = fallback; - this.setter = setter; - this.collector = collector; - } - - public T getFix() { - try { - return nested ? fallback : fix; - } finally { - nested = true; - } - } - - static , V> Applicate of(@Nullable T fix, T fallback, V setter, V collector) { - return new Applicate<>(fix == null ? fallback : fix, fallback, setter, collector); - } - - interface Applicatable { - - } - } - - public interface PosFix extends Applicate.Applicatable { - void apply(VertexConsumer consumer, float x, float y, float z); - - public interface VertexConsumer { - void vertex(float x, float y, float z); - } - } - public interface ColorFix extends Applicate.Applicatable { - ColorFix NULL = (self, r, g, b, a) -> self.color(r, g, b, a); - void apply(VertexConsumer consumer, int r, int g, int b, int a); - - public interface VertexConsumer { - void color(int r, int g, int b, int a); - - default void color(float r, float g, float b, float a) { - color((int)(r * 255), (int)(g * 255), (int)(b * 255), (int)(a * 255)); - } - } - } - public interface FUvFix extends Applicate.Applicatable { - FUvFix NULL = (self, u, v) -> self.uv(u, v); - void apply(VertexConsumer consumer, float u, float v); - - public interface VertexConsumer { - void uv(float u, float v); - } - } - public interface IUvFix extends Applicate.Applicatable { - IUvFix NULL = (self, u, v) -> self.uv(u, v); - void apply(VertexConsumer consumer, int u, int v); - - public interface VertexConsumer { - void uv(int u, int v); - } - } -} 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 9ce707ae..fb9d6cd0 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/RenderLayers.java @@ -33,11 +33,10 @@ public final class RenderLayers extends RenderLayer { .transparency(TRANSLUCENT_TRANSPARENCY) .layering(VIEW_OFFSET_Z_LAYERING) // .target(TRANSLUCENT_TARGET) - .texturing(solid(Color.r(color), Color.g(color), Color.b(color), 0.6F)) + .texturing(solid(color)) .build(false)); }); - private static final RenderLayer MAGIC_COLORED = getMagicColored(Color.argbToHex(1, 0.8F, 0.9F, 1)); - + private static final RenderLayer MAGIC_COLORED = getMagicColored(Color.argbToHex(0.6F, 0.8F, 0.9F, 1)); private static final BiFunction MAGIC_TINT_FUNC = Util.memoize((texture, color) -> { return of("magic_tint_" + color, @@ -69,7 +68,11 @@ public final class RenderLayers extends RenderLayer { return MAGIC_TINT_FUNC.apply(texture, color); } - private static Texturing solid(float r, float g, float b, float a) { + private static Texturing solid(int color) { + final float r = Color.r(color); + final float g = Color.g(color); + final float b = Color.b(color); + final float a = Color.a(color); return new Texturing("solid", () -> { RenderSystem.setShaderColor(r, g, b, a); }, () -> { @@ -77,7 +80,6 @@ public final class RenderLayers extends RenderLayer { }); } - private static class Colored extends Texture { private final float red; @@ -90,7 +92,7 @@ public final class RenderLayers extends RenderLayer { this.red = Color.r(color); this.green = Color.g(color); this.blue = Color.b(color); - this.alpha = 0.8F; + this.alpha = Color.a(color); } @Override diff --git a/src/main/java/com/minelittlepony/unicopia/client/render/WorldRenderDelegate.java b/src/main/java/com/minelittlepony/unicopia/client/render/WorldRenderDelegate.java index 3d82d336..4d2b5328 100644 --- a/src/main/java/com/minelittlepony/unicopia/client/render/WorldRenderDelegate.java +++ b/src/main/java/com/minelittlepony/unicopia/client/render/WorldRenderDelegate.java @@ -76,7 +76,7 @@ public class WorldRenderDelegate { var buffer = vertices.getBuffer(layer); return RenderLayerUtil.getTexture(layer).map(texture -> { return VertexConsumers.union( - vertices.getBuffer(RenderLayers.getMagicColored(texture, creature.isDiscorded() ? 0xFF0000 : 0x0000FF)), + vertices.getBuffer(RenderLayers.getMagicColored(texture, creature.isDiscorded() ? 0xCCFF0000 : 0xCC0000FF)), vertices.getBuffer(layer) ); }).orElse(buffer); 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 7bede625..baf37053 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 @@ -58,7 +58,7 @@ public class MagicBeamEntityRenderer extends EntityRenderer spell.getType().getColor()) + .map(spell -> (0x99 << 24) | spell.getType().getColor()) .map(RenderLayers::getMagicColored) .orElseGet(RenderLayers::getMagicColored);