mirror of
https://github.com/Creators-of-Create/Create.git
synced 2024-12-15 04:03:42 +01:00
color me surprised
- move functionality of ColorHelper into a new Color class - replace usage of java.awt.Color with our own color in most cases
This commit is contained in:
parent
05d581c779
commit
0fe3230640
53 changed files with 582 additions and 411 deletions
|
@ -5,7 +5,7 @@ import com.simibubi.create.content.contraptions.base.IRotate;
|
|||
import com.simibubi.create.content.contraptions.base.KineticTileEntity;
|
||||
import com.simibubi.create.content.contraptions.base.KineticTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -47,7 +47,7 @@ public class KineticDebugger {
|
|||
CreateClient.OUTLINER.chaseAABB("kineticSource", shape.bounds()
|
||||
.move(toOutline))
|
||||
.lineWidth(1 / 16f)
|
||||
.colored(te.hasSource() ? ColorHelper.colorFromLong(te.network) : 0xffcc00);
|
||||
.colored(te.hasSource() ? Color.generateFromLong(te.network).getRGB() : 0xffcc00);
|
||||
|
||||
if (state.getBlock() instanceof IRotate) {
|
||||
Axis axis = ((IRotate) state.getBlock()).getRotationAxis(state);
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.base;
|
|||
import com.jozufozu.flywheel.backend.gl.buffer.MappedBuffer;
|
||||
import com.jozufozu.flywheel.backend.instancing.Instancer;
|
||||
import com.jozufozu.flywheel.core.materials.BasicData;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.util.math.vector.Vector3f;
|
||||
|
@ -44,31 +44,17 @@ public class KineticData extends BasicData {
|
|||
}
|
||||
|
||||
public KineticData setColor(KineticTileEntity te) {
|
||||
if (te.hasSource()) {
|
||||
setColor(te.network);
|
||||
if (te.hasNetwork()) {
|
||||
setColor(Color.generateFromLong(te.network));
|
||||
}else {
|
||||
setColor(0xFF, 0xFF, 0x00);
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
public KineticData setColor(Long l) {
|
||||
if (l != null)
|
||||
return setColor(l.longValue());
|
||||
else {
|
||||
setColor(0xFF, 0xFF, 0xFF);
|
||||
return this;
|
||||
}
|
||||
return this;
|
||||
}
|
||||
|
||||
private KineticData setColor(long l) {
|
||||
int color = ColorHelper.colorFromLong(l);
|
||||
byte r = (byte) ((color >> 16) & 0xFF);
|
||||
byte g = (byte) ((color >> 8) & 0xFF);
|
||||
byte b = (byte) (color & 0xFF);
|
||||
setColor(r, g, b);
|
||||
|
||||
return this;
|
||||
public KineticData setColor(Color c) {
|
||||
setColor(c.getRed(), c.getGreen(), c.getBlue());
|
||||
return this;
|
||||
}
|
||||
|
||||
public KineticData setRotationalSpeed(float rotationalSpeed) {
|
||||
|
|
|
@ -11,7 +11,7 @@ import com.simibubi.create.foundation.render.Compartment;
|
|||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
|
@ -77,19 +77,18 @@ public class KineticTileEntityRenderer extends SafeTileEntityRenderer<KineticTil
|
|||
buffer.light(light);
|
||||
buffer.rotateCentered(Direction.get(AxisDirection.POSITIVE, axis), angle);
|
||||
|
||||
int white = 0xFFFFFF;
|
||||
if (KineticDebugger.isActive()) {
|
||||
rainbowMode = true;
|
||||
buffer.color(te.hasNetwork() ? ColorHelper.colorFromLong(te.network) : white);
|
||||
buffer.color(te.hasNetwork() ? Color.generateFromLong(te.network) : Color.WHITE);
|
||||
} else {
|
||||
float overStressedEffect = te.effects.overStressedEffect;
|
||||
if (overStressedEffect != 0)
|
||||
if (overStressedEffect > 0)
|
||||
buffer.color(ColorHelper.mixColors(white, 0xFF0000, overStressedEffect));
|
||||
buffer.color(Color.WHITE.mixWith(Color.RED, overStressedEffect));
|
||||
else
|
||||
buffer.color(ColorHelper.mixColors(white, 0x00FFBB, -overStressedEffect));
|
||||
buffer.color(Color.WHITE.mixWith(Color.SPRING_GREEN, -overStressedEffect));
|
||||
else
|
||||
buffer.color(white);
|
||||
buffer.color(Color.WHITE);
|
||||
}
|
||||
|
||||
return buffer;
|
||||
|
|
|
@ -12,7 +12,7 @@ import com.simibubi.create.content.contraptions.components.structureMovement.tra
|
|||
import com.simibubi.create.foundation.render.PartialBufferer;
|
||||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
|
@ -225,7 +225,7 @@ public class CouplingRenderer {
|
|||
.position()
|
||||
.add(0, yOffset, 0);
|
||||
|
||||
int color = ColorHelper.mixColors(0xabf0e9, 0xee8572, (float) MathHelper
|
||||
int color = Color.mixColors(0xabf0e9, 0xee8572, (float) MathHelper
|
||||
.clamp(Math.abs(first.getCouplingLength(true) - connectedCenter.distanceTo(mainCenter)) * 8, 0, 1));
|
||||
|
||||
CreateClient.OUTLINER.showLine(mainCart.getId() + "", mainCenter, connectedCenter)
|
||||
|
|
|
@ -2,7 +2,7 @@ package com.simibubi.create.content.contraptions.fluids.particle;
|
|||
|
||||
import com.simibubi.create.AllParticleTypes;
|
||||
import com.simibubi.create.content.contraptions.fluids.potion.PotionFluid;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.particle.IParticleRenderType;
|
||||
|
@ -43,7 +43,7 @@ public class FluidStackParticle extends SpriteTexturedParticle {
|
|||
this.multiplyColor(fluid.getFluid()
|
||||
.getAttributes()
|
||||
.getColor(fluid));
|
||||
|
||||
|
||||
this.xd = vx;
|
||||
this.yd = vy;
|
||||
this.zd = vz;
|
||||
|
@ -98,12 +98,12 @@ public class FluidStackParticle extends SpriteTexturedParticle {
|
|||
if (!onGround && level.random.nextFloat() < 1 / 8f)
|
||||
return;
|
||||
|
||||
Vector3d rgb = ColorHelper.getRGB(fluid.getFluid()
|
||||
Vector3d rgb = Color.vectorFromRGB(fluid.getFluid()
|
||||
.getAttributes()
|
||||
.getColor(fluid));
|
||||
level.addParticle(ParticleTypes.ENTITY_EFFECT, x, y, z, rgb.x, rgb.y, rgb.z);
|
||||
}
|
||||
|
||||
|
||||
protected boolean canEvaporate() {
|
||||
return fluid.getFluid() instanceof PotionFluid;
|
||||
}
|
||||
|
|
|
@ -18,7 +18,7 @@ import com.simibubi.create.foundation.config.CClient;
|
|||
import com.simibubi.create.foundation.gui.GuiGameElement;
|
||||
import com.simibubi.create.foundation.gui.Theme;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBox;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.outliner.Outline;
|
||||
|
@ -46,7 +46,7 @@ public class GoggleOverlayRenderer {
|
|||
|
||||
private static final List<Supplier<Boolean>> customGogglePredicates = new LinkedList<>();
|
||||
private static final Map<Object, OutlineEntry> outlines = CreateClient.OUTLINER.getOutlines();
|
||||
|
||||
|
||||
public static int hoverTicks = 0;
|
||||
public static BlockPos lastHovered = null;
|
||||
|
||||
|
@ -74,15 +74,15 @@ public class GoggleOverlayRenderer {
|
|||
BlockPos pos = result.getBlockPos();
|
||||
ItemStack headSlot = mc.player.getItemBySlot(EquipmentSlotType.HEAD);
|
||||
TileEntity te = world.getBlockEntity(pos);
|
||||
|
||||
if (lastHovered == null || lastHovered.equals(pos))
|
||||
|
||||
if (lastHovered == null || lastHovered.equals(pos))
|
||||
hoverTicks++;
|
||||
else
|
||||
else
|
||||
hoverTicks = 0;
|
||||
lastHovered = pos;
|
||||
|
||||
boolean wearingGoggles = AllItems.GOGGLES.isIn(headSlot);
|
||||
for (Supplier<Boolean> supplier : customGogglePredicates)
|
||||
for (Supplier<Boolean> supplier : customGogglePredicates)
|
||||
wearingGoggles |= supplier.get();
|
||||
|
||||
boolean hasGoggleInformation = te instanceof IHaveGoggleInformation;
|
||||
|
@ -179,26 +179,25 @@ public class GoggleOverlayRenderer {
|
|||
|
||||
float fade = MathHelper.clamp((hoverTicks + partialTicks) / 12f, 0, 1);
|
||||
Boolean useCustom = cfg.overlayCustomColor.get();
|
||||
int colorBackground = useCustom ? cfg.overlayBackgroundColor.get()
|
||||
: ColorHelper.applyAlpha(Theme.i(Theme.Key.VANILLA_TOOLTIP_BACKGROUND), .75f);
|
||||
int colorBorderTop =
|
||||
useCustom ? cfg.overlayBorderColorTop.get() : Theme.i(Theme.Key.VANILLA_TOOLTIP_BORDER, true);
|
||||
int colorBorderBot =
|
||||
useCustom ? cfg.overlayBorderColorBot.get() : Theme.i(Theme.Key.VANILLA_TOOLTIP_BORDER, false);
|
||||
Color colorBackground = useCustom ?
|
||||
new Color(cfg.overlayBackgroundColor.get()) :
|
||||
Theme.c(Theme.Key.VANILLA_TOOLTIP_BACKGROUND).scaleAlpha(.75f);
|
||||
Color colorBorderTop = useCustom ?
|
||||
new Color(cfg.overlayBorderColorTop.get()) :
|
||||
Theme.c(Theme.Key.VANILLA_TOOLTIP_BORDER, true).copy();
|
||||
Color colorBorderBot = useCustom ?
|
||||
new Color(cfg.overlayBorderColorBot.get()) :
|
||||
Theme.c(Theme.Key.VANILLA_TOOLTIP_BORDER, false).copy();
|
||||
|
||||
if (fade < 1) {
|
||||
ms.translate((1 - fade) * Math.signum(cfg.overlayOffsetX.get() + .5f) * 4, 0, 0);
|
||||
int alphaMask = 0xFF000000;
|
||||
if ((alphaMask & colorBackground) != 0)
|
||||
colorBackground = ColorHelper.applyAlpha(colorBackground, fade);
|
||||
if ((alphaMask & colorBorderTop) != 0)
|
||||
colorBorderTop = ColorHelper.applyAlpha(colorBorderTop, fade);
|
||||
if ((alphaMask & colorBorderBot) != 0)
|
||||
colorBorderBot = ColorHelper.applyAlpha(colorBorderBot, fade);
|
||||
colorBackground.scaleAlpha(fade);
|
||||
colorBorderTop.scaleAlpha(fade);
|
||||
colorBorderBot.scaleAlpha(fade);
|
||||
}
|
||||
|
||||
|
||||
GuiUtils.drawHoveringText(ms, tooltip, posX, posY, tooltipScreen.width, tooltipScreen.height, -1,
|
||||
colorBackground, colorBorderTop, colorBorderBot, mc.font);
|
||||
colorBackground.getRGB(), colorBorderTop.getRGB(), colorBorderBot.getRGB(), mc.font);
|
||||
|
||||
ItemStack item = AllItems.GOGGLES.asStack();
|
||||
GuiGameElement.of(item)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
package com.simibubi.create.content.contraptions.itemAssembly;
|
||||
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.item.Item;
|
||||
import net.minecraft.item.ItemGroup;
|
||||
|
@ -36,7 +36,7 @@ public class SequencedAssemblyItem extends Item {
|
|||
|
||||
@Override
|
||||
public int getRGBDurabilityForDisplay(ItemStack stack) {
|
||||
return ColorHelper.mixColors(0xFF_46FFE0, 0xFF_FFC074, (float) getDurabilityForDisplay(stack));
|
||||
return Color.mixColors(0xFF_46FFE0, 0xFF_FFC074, (float) getDurabilityForDisplay(stack));
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import javax.annotation.Nonnull;
|
|||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.content.contraptions.components.fan.IAirCurrentSource;
|
||||
import com.simibubi.create.content.contraptions.processing.InWorldProcessing;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.Blocks;
|
||||
|
@ -102,7 +102,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
InWorldProcessing.Type type = source.getAirCurrent().getSegmentAt((float) distance);
|
||||
|
||||
if (type == InWorldProcessing.Type.SPLASHING) {
|
||||
setColor(ColorHelper.mixColors(0x4499FF, 0x2277FF, level.random.nextFloat()));
|
||||
setColor(Color.mixColors(0x4499FF, 0x2277FF, level.random.nextFloat()));
|
||||
setAlpha(1f);
|
||||
selectSprite(level.random.nextInt(3));
|
||||
if (level.random.nextFloat() < 1 / 32f)
|
||||
|
@ -114,7 +114,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
}
|
||||
|
||||
if (type == InWorldProcessing.Type.SMOKING) {
|
||||
setColor(ColorHelper.mixColors(0x0, 0x555555, level.random.nextFloat()));
|
||||
setColor(Color.mixColors(0x0, 0x555555, level.random.nextFloat()));
|
||||
setAlpha(1f);
|
||||
selectSprite(level.random.nextInt(3));
|
||||
if (level.random.nextFloat() < 1 / 32f)
|
||||
|
@ -126,7 +126,7 @@ public class AirFlowParticle extends SimpleAnimatedParticle {
|
|||
}
|
||||
|
||||
if (type == InWorldProcessing.Type.BLASTING) {
|
||||
setColor(ColorHelper.mixColors(0xFF4400, 0xFF8855, level.random.nextFloat()));
|
||||
setColor(Color.mixColors(0xFF4400, 0xFF8855, level.random.nextFloat()));
|
||||
setAlpha(.5f);
|
||||
selectSprite(level.random.nextInt(3));
|
||||
if (level.random.nextFloat() < 1 / 32f)
|
||||
|
|
|
@ -3,7 +3,7 @@ package com.simibubi.create.content.contraptions.particle;
|
|||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.content.contraptions.goggles.GogglesItem;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -38,7 +38,7 @@ public class RotationIndicatorParticle extends SimpleAnimatedParticle {
|
|||
this.quadSize *= 0.75F;
|
||||
this.lifetime = lifeSpan + this.random.nextInt(32);
|
||||
this.setFadeColor(color);
|
||||
this.setColor(ColorHelper.mixColors(color, 0xFFFFFF, .5f));
|
||||
this.setColor(Color.mixColors(color, 0xFFFFFF, .5f));
|
||||
this.setSpriteFromAge(sprite);
|
||||
this.radius1 = radius1;
|
||||
this.radius = radius1;
|
||||
|
|
|
@ -17,7 +17,7 @@ import com.simibubi.create.content.contraptions.relays.belt.transport.Transporte
|
|||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.item.ItemHelper;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.block.Block;
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -307,7 +307,7 @@ public class InWorldProcessing {
|
|||
world.addParticle(ParticleTypes.POOF, vec.x, vec.y + .25f, vec.z, 0, 1 / 16f, 0);
|
||||
break;
|
||||
case SPLASHING:
|
||||
Vector3d color = ColorHelper.getRGB(0x0055FF);
|
||||
Vector3d color = Color.vectorFromRGB(0x0055FF);
|
||||
world.addParticle(new RedstoneParticleData((float) color.x, (float) color.y, (float) color.z, 1),
|
||||
vec.x + (world.random.nextFloat() - .5f) * .5f, vec.y + .5f, vec.z + (world.random.nextFloat() - .5f) * .5f,
|
||||
0, 1 / 8f, 0);
|
||||
|
|
|
@ -9,7 +9,7 @@ import com.simibubi.create.content.contraptions.processing.burner.BlazeBurnerBlo
|
|||
import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
||||
import com.simibubi.create.foundation.tileEntity.TileEntityBehaviour;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat.Chaser;
|
||||
|
||||
|
@ -22,34 +22,25 @@ import net.minecraft.tileentity.TileEntityType;
|
|||
import net.minecraft.util.SoundCategory;
|
||||
import net.minecraft.util.SoundEvents;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
import net.minecraftforge.common.ForgeHooks;
|
||||
|
||||
public class BlazeBurnerTileEntity extends SmartTileEntity {
|
||||
|
||||
public static final int MAX_HEAT_CAPACITY = 10000;
|
||||
|
||||
private static final Vector3d EMPTY_COLOR = new Vector3d(0, 0, 0);
|
||||
private final static Vector3d[][] PARTICLE_COLORS;
|
||||
private final static Vector3d[] CREATIVE_PARTICLE_COLORS;
|
||||
static {
|
||||
int[][] colors = {
|
||||
private final static Color[][] PARTICLE_COLORS = {
|
||||
{ },
|
||||
{ 0x3B141A, 0x47141A, 0x7A3B24, 0x854D26 },
|
||||
{ 0x2A0103, 0x741B0A, 0xC38246, 0xCCBD78 },
|
||||
{ 0x630B03, 0x8B3503, 0xBC8200, 0xCCC849 },
|
||||
{ 0x1C6378, 0x4798B5, 0x4DA6C0, 0xBAC8CE }
|
||||
};
|
||||
|
||||
int[] creativeColors = { 0x54295D, 0x6E3C76, 0xA5479F, 0x85157C };
|
||||
|
||||
PARTICLE_COLORS = new Vector3d[colors.length][];
|
||||
for (int i = 0; i < colors.length; i++) {
|
||||
PARTICLE_COLORS[i] = ColorHelper.toVectors(colors[i]);
|
||||
}
|
||||
|
||||
CREATIVE_PARTICLE_COLORS = ColorHelper.toVectors(creativeColors);
|
||||
}
|
||||
{ new Color(0x3B141A), new Color(0x47141A), new Color(0x7A3B24), new Color(0x854D26) },
|
||||
{ new Color(0x2A0103), new Color(0x741B0A), new Color(0xC38246), new Color(0xCCBD78) },
|
||||
{ new Color(0x630B03), new Color(0x8B3503), new Color(0xBC8200), new Color(0xCCC849) },
|
||||
{ new Color(0x1C6378), new Color(0x4798B5), new Color(0x4DA6C0), new Color(0xBAC8CE) }
|
||||
};
|
||||
private final static Color[] CREATIVE_PARTICLE_COLORS = {
|
||||
new Color(0x54295D),
|
||||
new Color(0x6E3C76),
|
||||
new Color(0xA5479F),
|
||||
new Color(0x85157C)
|
||||
};
|
||||
|
||||
protected FuelType activeFuel;
|
||||
protected int remainingBurnTime;
|
||||
|
@ -296,23 +287,20 @@ public class BlazeBurnerTileEntity extends SmartTileEntity {
|
|||
}
|
||||
}
|
||||
|
||||
protected void spawnParticle(Vector3d color, float scale, int avgAge, boolean hot, double speed, double spread) {
|
||||
protected void spawnParticle(Color color, float scale, int avgAge, boolean hot, double speed, double spread) {
|
||||
Random random = level.getRandom();
|
||||
level.addAlwaysVisibleParticle(
|
||||
new CubeParticleData((float) color.x, (float) color.y, (float) color.z, scale, avgAge, hot),
|
||||
new CubeParticleData(color.getRedAsFloat(), color.getGreenAsFloat(), color.getBlueAsFloat(), scale, avgAge, hot),
|
||||
(double) worldPosition.getX() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread,
|
||||
(double) worldPosition.getY() + 0.6D + (random.nextDouble() / 4.0),
|
||||
(double) worldPosition.getZ() + 0.5D + (random.nextDouble() * 2.0 - 1D) * spread, 0.0D, speed, 0.0D);
|
||||
}
|
||||
|
||||
protected void spawnParticle(Vector3d[] colors, float scale, int avgAge, boolean hot, double speed, double spread) {
|
||||
Vector3d color;
|
||||
if (colors.length == 0) {
|
||||
color = EMPTY_COLOR;
|
||||
} else {
|
||||
color = colors[(int) (Math.random() * colors.length)];
|
||||
}
|
||||
spawnParticle(color, scale, avgAge, hot, speed, spread);
|
||||
protected void spawnParticle(Color[] colors, float scale, int avgAge, boolean hot, double speed, double spread) {
|
||||
if (colors.length == 0)
|
||||
return;
|
||||
|
||||
spawnParticle(colors[(int) (Math.random() * colors.length)], scale, avgAge, hot, speed, spread);
|
||||
}
|
||||
|
||||
protected void spawnParticle(HeatLevel heatLevel, float scale, int avgAge, boolean hot, double speed, double spread) {
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Random;
|
|||
import com.simibubi.create.AllTileEntities;
|
||||
import com.simibubi.create.content.contraptions.base.DirectionalAxisKineticBlock;
|
||||
import com.simibubi.create.content.contraptions.base.IRotate;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
@ -70,9 +70,9 @@ public class GaugeBlock extends DirectionalAxisKineticBlock {
|
|||
|
||||
/*
|
||||
* FIXME: Is there a new way of doing this in 1.16? Or cn we just delete it?
|
||||
*
|
||||
*
|
||||
* @SuppressWarnings("deprecation")
|
||||
*
|
||||
*
|
||||
* @Override
|
||||
* public MaterialColor getMaterialColor(BlockState state, IBlockReader worldIn, BlockPos pos) {
|
||||
* return Blocks.SPRUCE_PLANKS.getMaterialColor(state, worldIn, pos);
|
||||
|
@ -152,7 +152,7 @@ public class GaugeBlock extends DirectionalAxisKineticBlock {
|
|||
if (!shouldRenderHeadOnFace(worldIn, pos, stateIn, face))
|
||||
continue;
|
||||
|
||||
Vector3d rgb = ColorHelper.getRGB(color);
|
||||
Vector3d rgb = Color.vectorFromRGB(color);
|
||||
Vector3d faceVec = Vector3d.atLowerCornerOf(face.getNormal());
|
||||
Direction positiveFacing = Direction.get(AxisDirection.POSITIVE, face.getAxis());
|
||||
Vector3d positiveFaceVec = Vector3d.atLowerCornerOf(positiveFacing.getNormal());
|
||||
|
|
|
@ -6,7 +6,7 @@ import com.simibubi.create.content.contraptions.base.IRotate.SpeedLevel;
|
|||
import com.simibubi.create.content.contraptions.goggles.GogglesItem;
|
||||
import com.simibubi.create.foundation.advancement.AllTriggers;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
|
@ -26,7 +26,7 @@ public class SpeedGaugeTileEntity extends GaugeTileEntity {
|
|||
float speed = Math.abs(getSpeed());
|
||||
|
||||
color = speed == 0 ? 0x333333
|
||||
: ColorHelper.mixColors(SpeedLevel.of(speed)
|
||||
: Color.mixColors(SpeedLevel.of(speed)
|
||||
.getColor(), 0xffffff, .25f);
|
||||
if (speed == 69)
|
||||
AllTriggers.triggerForNearbyPlayers(AllTriggers.SPEED_READ, level, worldPosition, 6, GogglesItem::canSeeParticles);
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.List;
|
|||
import com.simibubi.create.content.contraptions.base.IRotate.StressImpact;
|
||||
import com.simibubi.create.content.contraptions.goggles.IHaveGoggleInformation;
|
||||
import com.simibubi.create.foundation.item.ItemDescription;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
import net.minecraft.tileentity.TileEntityType;
|
||||
|
@ -35,9 +35,9 @@ public class StressGaugeTileEntity extends GaugeTileEntity {
|
|||
|
||||
if (dialTarget > 0) {
|
||||
if (dialTarget < .5f)
|
||||
color = ColorHelper.mixColors(0x00FF00, 0xFFFF00, dialTarget * 2);
|
||||
color = Color.mixColors(0x00FF00, 0xFFFF00, dialTarget * 2);
|
||||
else if (dialTarget < 1)
|
||||
color = ColorHelper.mixColors(0xFFFF00, 0xFF0000, (dialTarget) * 2 - 1);
|
||||
color = Color.mixColors(0xFFFF00, 0xFF0000, (dialTarget) * 2 - 1);
|
||||
else
|
||||
color = 0xFF0000;
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.simibubi.create.content.curiosities;
|
||||
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.renderer.color.IItemColor;
|
||||
|
@ -9,20 +9,20 @@ import net.minecraft.item.ItemStack;
|
|||
import net.minecraft.util.math.MathHelper;
|
||||
|
||||
public class ChromaticCompoundColor implements IItemColor {
|
||||
|
||||
|
||||
@Override
|
||||
public int getColor(ItemStack stack, int layer) {
|
||||
Minecraft mc = Minecraft.getInstance();
|
||||
float pt = AnimationTickHolder.getPartialTicks();
|
||||
float progress = (float) ((mc.player.getViewYRot(pt)) / 180 * Math.PI) + (AnimationTickHolder.getRenderTime() / 10f);
|
||||
if (layer == 0)
|
||||
return ColorHelper.mixColors(0x6e5773, 0x6B3074, ((float) MathHelper.sin(progress) + 1) / 2);
|
||||
return Color.mixColors(0x6e5773, 0x6B3074, ((float) MathHelper.sin(progress) + 1) / 2);
|
||||
if (layer == 1)
|
||||
return ColorHelper.mixColors(0xd45d79, 0x6e5773,
|
||||
return Color.mixColors(0xd45d79, 0x6e5773,
|
||||
((float) MathHelper.sin((float) (progress + Math.PI)) + 1) / 2);
|
||||
if (layer == 2)
|
||||
return ColorHelper.mixColors(0xea9085, 0xd45d79,
|
||||
return Color.mixColors(0xea9085, 0xd45d79,
|
||||
((float) MathHelper.sin((float) (progress * 1.5f + Math.PI)) + 1) / 2);
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -5,7 +5,7 @@ import java.util.Random;
|
|||
import com.simibubi.create.AllItems;
|
||||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.config.CRecipes;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -54,7 +54,7 @@ public class ChromaticCompoundItem extends Item {
|
|||
|
||||
@Override
|
||||
public int getRGBDurabilityForDisplay(ItemStack stack) {
|
||||
return ColorHelper.mixColors(0x413c69, 0xFFFFFF, (float) (1 - getDurabilityForDisplay(stack)));
|
||||
return Color.mixColors(0x413c69, 0xFFFFFF, (float) (1 - getDurabilityForDisplay(stack)));
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -9,7 +9,7 @@ import com.simibubi.create.foundation.gui.GuiGameElement;
|
|||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.MainWindow;
|
||||
|
@ -132,7 +132,7 @@ public class CopperBacktankArmorLayer<T extends LivingEntity, M extends EntityMo
|
|||
.render(ms);
|
||||
int color = 0xFF_FFFFFF;
|
||||
if (timeLeft < 60 && timeLeft % 2 == 0) {
|
||||
color = ColorHelper.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f));
|
||||
color = Color.mixColors(0xFF_FF0000, color, Math.max(timeLeft / 60f, .25f));
|
||||
}
|
||||
Minecraft.getInstance().font.drawShadow(ms, text, 16, 5, color);
|
||||
buffers.endBatch();
|
||||
|
|
|
@ -6,7 +6,7 @@ import com.simibubi.create.CreateClient;
|
|||
import com.simibubi.create.foundation.config.AllConfigs;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
|
@ -205,7 +205,7 @@ public class EjectorTargetHandler {
|
|||
double tickOffset = totalFlyingTicks / segments;
|
||||
boolean valid = xDiff == validX && zDiff == validZ;
|
||||
int intColor = valid ? 0x9ede73 : 0xff7171;
|
||||
Vector3d color = ColorHelper.getRGB(intColor);
|
||||
Vector3d color = Color.vectorFromRGB(intColor);
|
||||
RedstoneParticleData data = new RedstoneParticleData((float) color.x, (float) color.y, (float) color.z, 1);
|
||||
ClientWorld world = mc.level;
|
||||
|
||||
|
|
|
@ -1,14 +1,14 @@
|
|||
package com.simibubi.create.content.logistics.block.diodes;
|
||||
|
||||
import com.jozufozu.flywheel.backend.instancing.ITickableInstance;
|
||||
import com.jozufozu.flywheel.backend.material.MaterialManager;
|
||||
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
|
||||
import com.jozufozu.flywheel.backend.material.MaterialManager;
|
||||
import com.jozufozu.flywheel.core.Materials;
|
||||
import com.jozufozu.flywheel.core.materials.ModelData;
|
||||
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
public class AdjustableRepeaterInstance extends TileEntityInstance<AdjustableRepeaterTileEntity> implements ITickableInstance {
|
||||
|
||||
|
@ -53,6 +53,6 @@ public class AdjustableRepeaterInstance extends TileEntityInstance<AdjustableRep
|
|||
}
|
||||
|
||||
protected int getColor() {
|
||||
return ColorHelper.mixColors(0x2C0300, 0xCD0000, tile.state / (float) tile.maxState.getValue());
|
||||
return Color.mixColors(0x2c0300, 0xcd0000, tile.state / (float) tile.maxState.getValue());
|
||||
}
|
||||
}
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.simibubi.create.AllBlockPartials;
|
|||
import com.simibubi.create.foundation.render.PartialBufferer;
|
||||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.ColoredOverlayTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.renderer.tileentity.TileEntityRendererDispatcher;
|
||||
|
||||
|
@ -16,7 +16,7 @@ public class AdjustableRepeaterRenderer extends ColoredOverlayTileEntityRenderer
|
|||
|
||||
@Override
|
||||
protected int getColor(AdjustableRepeaterTileEntity te, float partialTicks) {
|
||||
return ColorHelper.mixColors(0x2C0300, 0xCD0000, te.state / (float) te.maxState.getValue());
|
||||
return Color.mixColors(0x2C0300, 0xCD0000, te.state / (float) te.maxState.getValue());
|
||||
}
|
||||
|
||||
@Override
|
||||
|
|
|
@ -5,8 +5,8 @@ import java.util.ArrayList;
|
|||
import com.google.common.collect.Lists;
|
||||
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
|
||||
import com.jozufozu.flywheel.backend.instancing.InstanceData;
|
||||
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
|
||||
import com.jozufozu.flywheel.backend.instancing.Instancer;
|
||||
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
|
||||
import com.jozufozu.flywheel.backend.material.MaterialManager;
|
||||
import com.jozufozu.flywheel.core.materials.ModelData;
|
||||
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||
|
@ -15,7 +15,7 @@ import com.simibubi.create.AllBlockPartials;
|
|||
import com.simibubi.create.content.contraptions.base.RotatingData;
|
||||
import com.simibubi.create.content.contraptions.base.SingleRotatingInstance;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -112,7 +112,7 @@ public class ArmInstance extends SingleRotatingInstance implements IDynamicInsta
|
|||
lowerArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 4) + 1) / 2, -45, 15);
|
||||
upperArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 8) + 1) / 4, -45, 95);
|
||||
headAngle = -lowerArmAngle;
|
||||
color = ColorHelper.rainbowColor(AnimationTickHolder.getTicks() * 100);
|
||||
color = Color.rainbowColor(AnimationTickHolder.getTicks() * 100).getRGB();
|
||||
} else {
|
||||
baseAngle = this.baseAngle;
|
||||
lowerArmAngle = this.lowerArmAngle - 135;
|
||||
|
|
|
@ -11,7 +11,7 @@ import com.simibubi.create.content.logistics.block.mechanicalArm.ArmTileEntity.P
|
|||
import com.simibubi.create.foundation.render.PartialBufferer;
|
||||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -74,7 +74,7 @@ public class ArmRenderer extends KineticTileEntityRenderer {
|
|||
lowerArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 4) + 1) / 2, -45, 15);
|
||||
upperArmAngle = MathHelper.lerp((MathHelper.sin(renderTick / 8) + 1) / 4, -45, 95);
|
||||
headAngle = -lowerArmAngle;
|
||||
color = ColorHelper.rainbowColor(AnimationTickHolder.getTicks() * 100);
|
||||
color = Color.rainbowColor(AnimationTickHolder.getTicks() * 100).getRGB();
|
||||
} else {
|
||||
baseAngle = arm.baseAngle.get(pt);
|
||||
lowerArmAngle = arm.lowerArmAngle.get(pt) - 135;
|
||||
|
|
|
@ -1,16 +1,16 @@
|
|||
package com.simibubi.create.content.logistics.block.redstone;
|
||||
|
||||
import com.jozufozu.flywheel.backend.instancing.IDynamicInstance;
|
||||
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
|
||||
import com.jozufozu.flywheel.backend.material.InstanceMaterial;
|
||||
import com.jozufozu.flywheel.backend.material.MaterialManager;
|
||||
import com.jozufozu.flywheel.backend.instancing.tile.TileEntityInstance;
|
||||
import com.jozufozu.flywheel.core.materials.ModelData;
|
||||
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.AllBlockPartials;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.state.properties.AttachFace;
|
||||
import net.minecraft.util.Direction;
|
||||
|
@ -53,7 +53,7 @@ public class AnalogLeverInstance extends TileEntityInstance<AnalogLeverTileEntit
|
|||
|
||||
float state = tile.clientState.get(AnimationTickHolder.getPartialTicks());
|
||||
|
||||
int color = ColorHelper.mixColors(0x2C0300, 0xCD0000, state / 15f);
|
||||
int color = Color.mixColors(0x2C0300, 0xCD0000, state / 15f);
|
||||
indicator.setTransform(ms)
|
||||
.setColor(color);
|
||||
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.simibubi.create.foundation.render.PartialBufferer;
|
|||
import com.simibubi.create.foundation.render.SuperByteBuffer;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
import net.minecraft.client.renderer.IRenderTypeBuffer;
|
||||
|
@ -46,7 +46,7 @@ public class AnalogLeverRenderer extends SafeTileEntityRenderer<AnalogLeverTileE
|
|||
.renderInto(ms, vb);
|
||||
|
||||
// Indicator
|
||||
int color = ColorHelper.mixColors(0x2C0300, 0xCD0000, state / 15f);
|
||||
int color = Color.mixColors(0x2C0300, 0xCD0000, state / 15f);
|
||||
SuperByteBuffer indicator = transform(PartialBufferer.get(AllBlockPartials.ANALOG_LEVER_INDICATOR, leverState), leverState);
|
||||
indicator.light(lightCoords)
|
||||
.color(color)
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
|||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.foundation.tileEntity.renderer.SafeTileEntityRenderer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -92,7 +92,7 @@ public class NixieTubeRenderer extends SafeTileEntityRenderer<NixieTubeTileEntit
|
|||
Couple<Integer> couple = DYE_TABLE.get(color);
|
||||
int brightColor = couple.getFirst();
|
||||
int darkColor = couple.getSecond();
|
||||
int flickeringBrightColor = ColorHelper.mixColors(brightColor, darkColor, flicker / 4);
|
||||
int flickeringBrightColor = Color.mixColors(brightColor, darkColor, flicker / 4);
|
||||
|
||||
ms.pushPose();
|
||||
ms.translate((charWidth - shadowOffset) / -2f, -height, 0);
|
||||
|
@ -109,7 +109,7 @@ public class NixieTubeRenderer extends SafeTileEntityRenderer<NixieTubeTileEntit
|
|||
drawChar(ms, buffer, c, darkColor);
|
||||
ms.pushPose();
|
||||
ms.translate(-shadowOffset, shadowOffset, -1 / 16f);
|
||||
drawChar(ms, buffer, c, ColorHelper.mixColors(darkColor, 0, .35f));
|
||||
drawChar(ms, buffer, c, Color.mixColors(darkColor, 0, .35f));
|
||||
ms.popPose();
|
||||
ms.popPose();
|
||||
}
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package com.simibubi.create.content.palettes;
|
||||
|
||||
import com.simibubi.create.foundation.block.render.IBlockVertexColor;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
public class ScoriaVertexColor implements IBlockVertexColor {
|
||||
|
||||
|
@ -11,15 +11,18 @@ public class ScoriaVertexColor implements IBlockVertexColor {
|
|||
float y2 = (float) Math.floor(y * 1.5 + x * .5 - z);
|
||||
float z2 = (float) Math.floor(y - z * .5 - x);
|
||||
|
||||
int color = 0x448888;
|
||||
Color color = new Color(0x448888);
|
||||
if (x2 % 2 == 0)
|
||||
color |= 0x0011ff;
|
||||
color.modifyValue(v -> v | 0x0011ff);
|
||||
if (z2 % 2 == 0)
|
||||
color |= 0x888888;
|
||||
color = ColorHelper.mixColors(ColorHelper.rainbowColor((int) (x + y + z) * 170), color, .6f);
|
||||
color.modifyValue(v -> v | 0x888888);
|
||||
|
||||
color.mixWith(Color.rainbowColor((int) (x + y + z) * 170), .4f);
|
||||
|
||||
if ((x2 % 4 == 0) || (y2 % 4 == 0))
|
||||
color = ColorHelper.mixColors(0xffffff, color, .2f);
|
||||
return color;
|
||||
color.mixWith(Color.WHITE, .8f);
|
||||
|
||||
return color.getRGB() & 0x00_ffffff;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -26,7 +26,7 @@ import net.minecraftforge.fml.config.ModConfig;
|
|||
|
||||
public class BaseConfigScreen extends ConfigScreen {
|
||||
|
||||
private static final DelegatedStencilElement.ElementRenderer DISABLED_RENDERER = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.i(Theme.Key.BUTTON_DISABLE, true), Theme.i(Theme.Key.BUTTON_DISABLE, false) | 0x40_000000);
|
||||
private static final DelegatedStencilElement.ElementRenderer DISABLED_RENDERER = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, 0, height / 2, height, width, Theme.p(Theme.Key.BUTTON_DISABLE));
|
||||
|
||||
public static BaseConfigScreen forCreate(Screen parent) {
|
||||
return new BaseConfigScreen(parent)
|
||||
|
|
|
@ -23,7 +23,7 @@ import net.minecraftforge.fml.config.ModConfig;
|
|||
|
||||
public class ConfigHelper {
|
||||
|
||||
private static final LoadingCache<String, EnumMap<ModConfig.Type, ModConfig>> configCache = CacheBuilder.newBuilder().expireAfterAccess(15, TimeUnit.SECONDS).build(
|
||||
private static final LoadingCache<String, EnumMap<ModConfig.Type, ModConfig>> configCache = CacheBuilder.newBuilder().expireAfterAccess(5, TimeUnit.MINUTES).build(
|
||||
new CacheLoader<String, EnumMap<ModConfig.Type, ModConfig>>() {
|
||||
@Override
|
||||
public EnumMap<ModConfig.Type, ModConfig> load(@Nonnull String key) {
|
||||
|
|
|
@ -11,6 +11,7 @@ import com.simibubi.create.foundation.config.ui.entries.NumberEntry;
|
|||
import com.simibubi.create.foundation.gui.TextStencilElement;
|
||||
import com.simibubi.create.foundation.gui.Theme;
|
||||
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.MainWindow;
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -40,10 +41,11 @@ public class ConfigScreenList extends ExtendedList<ConfigScreenList.Entry> {
|
|||
|
||||
@Override
|
||||
public void render(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
|
||||
UIRenderHelper.angledGradient(ms, 90, x0 + width / 2, y0, width, 5, 0x60_000000, 0x0);
|
||||
UIRenderHelper.angledGradient(ms, -90, x0 + width / 2, y1, width, 5, 0x60_000000, 0x0);
|
||||
UIRenderHelper.angledGradient(ms, 0, x0, y0 + height / 2, height, 5, 0x60_000000, 0x0);
|
||||
UIRenderHelper.angledGradient(ms, 180, x1, y0 + height / 2, height, 5, 0x60_000000, 0x0);
|
||||
Color c = new Color(0x60_000000);
|
||||
UIRenderHelper.angledGradient(ms, 90, x0 + width / 2, y0, width, 5, c, Color.TRANSPARENT_BLACK);
|
||||
UIRenderHelper.angledGradient(ms, -90, x0 + width / 2, y1, width, 5, c, Color.TRANSPARENT_BLACK);
|
||||
UIRenderHelper.angledGradient(ms, 0, x0, y0 + height / 2, height, 5, c, Color.TRANSPARENT_BLACK);
|
||||
UIRenderHelper.angledGradient(ms, 180, x1, y0 + height / 2, height, 5, c, Color.TRANSPARENT_BLACK);
|
||||
|
||||
super.render(ms, mouseX, mouseY, partialTicks);
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.simibubi.create.foundation.config.ui;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
import java.util.Locale;
|
||||
|
@ -32,6 +31,7 @@ import com.simibubi.create.foundation.gui.UIRenderHelper;
|
|||
import com.simibubi.create.foundation.gui.widgets.BoxWidget;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.networking.AllPackets;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
|
|
@ -8,7 +8,7 @@ import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
|||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -131,7 +131,7 @@ public class FluidRenderer {
|
|||
.translateBack(center);
|
||||
|
||||
boolean X = side.getAxis() == Axis.X;
|
||||
int darkColor = ColorHelper.mixColors(color, 0xff000011, 1 / 4f);
|
||||
int darkColor = Color.mixColors(color, 0xff000011, 1 / 4f);
|
||||
renderTiledHorizontalFace(X ? xMax : zMax, side, X ? zMin : xMin, yMin, X ? zMax : xMax, yMax, builder,
|
||||
ms, light, darkColor, fluidTexture);
|
||||
|
||||
|
|
|
@ -1,9 +1,8 @@
|
|||
package com.simibubi.create.foundation.gui;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
|
|
|
@ -4,7 +4,7 @@ import com.mojang.blaze3d.matrix.MatrixStack;
|
|||
import com.mojang.blaze3d.matrix.MatrixStack.Entry;
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.Create;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
import net.minecraft.client.gui.AbstractGui;
|
||||
|
@ -181,7 +181,7 @@ public class AllIcons implements IScreenRenderable {
|
|||
int j = i >> 16 & '\uffff';
|
||||
int k = i & '\uffff';
|
||||
Entry peek = ms.last();
|
||||
Vector3d rgb = ColorHelper.getRGB(color);
|
||||
Vector3d rgb = Color.vectorFromRGB(color);
|
||||
|
||||
Vector3d vec4 = new Vector3d(1, 1, 0);
|
||||
Vector3d vec3 = new Vector3d(0, 1, 0);
|
||||
|
|
|
@ -1,12 +1,10 @@
|
|||
package com.simibubi.create.foundation.gui;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.client.renderer.BufferBuilder;
|
||||
|
@ -96,9 +94,9 @@ public class BoxElement extends RenderElement {
|
|||
RenderSystem.shadeModel(GL11.GL_SMOOTH);
|
||||
|
||||
int f = borderOffset;
|
||||
Color c1 = ColorHelper.applyAlpha(background, alpha);
|
||||
Color c2 = ColorHelper.applyAlpha(borderTop, alpha);
|
||||
Color c3 = ColorHelper.applyAlpha(borderBot, alpha);
|
||||
Color c1 = background.copy().scaleAlpha(alpha);
|
||||
Color c2 = borderTop.copy().scaleAlpha(alpha);
|
||||
Color c3 = borderBot.copy().scaleAlpha(alpha);
|
||||
Tessellator tessellator = Tessellator.getInstance();
|
||||
BufferBuilder b = tessellator.getBuilder();
|
||||
Matrix4f model = ms.last().pose();
|
||||
|
|
|
@ -1,12 +1,12 @@
|
|||
package com.simibubi.create.foundation.gui;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
public class DelegatedStencilElement extends StencilElement {
|
||||
|
||||
protected static final ElementRenderer EMPTY_RENDERER = (ms, width, height, alpha) -> {};
|
||||
protected static final ElementRenderer DEFAULT_ELEMENT = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, -3, 5, height+4, width+6, ColorHelper.applyAlpha(0xff_10dd10, alpha), ColorHelper.applyAlpha(0xff_1010dd, alpha));
|
||||
protected static final ElementRenderer DEFAULT_ELEMENT = (ms, width, height, alpha) -> UIRenderHelper.angledGradient(ms, 0, -3, 5, height+4, width+6, new Color(0xff_10dd10).scaleAlpha(alpha), new Color(0xff_1010dd).scaleAlpha(alpha));
|
||||
|
||||
protected ElementRenderer stencil;
|
||||
protected ElementRenderer element;
|
||||
|
|
|
@ -11,7 +11,7 @@ import com.mojang.blaze3d.platform.GlStateManager.SourceFactor;
|
|||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.foundation.fluid.FluidRenderer;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.block.BlockState;
|
||||
|
@ -192,7 +192,7 @@ public class GuiGameElement {
|
|||
int color = Minecraft.getInstance()
|
||||
.getBlockColors()
|
||||
.getColor(blockState, null, null, 0);
|
||||
Vector3d rgb = ColorHelper.getRGB(color == -1 ? this.color : color);
|
||||
Vector3d rgb = Color.vectorFromRGB(color == -1 ? this.color : color);
|
||||
blockRenderer.getModelRenderer()
|
||||
.renderModel(ms.last(), vb, blockState, blockModel, (float) rgb.x, (float) rgb.y, (float) rgb.z,
|
||||
0xF000F0, OverlayTexture.NO_OVERLAY, VirtualEmptyModelData.INSTANCE);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.simibubi.create.foundation.gui;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Comparator;
|
||||
import java.util.HashMap;
|
||||
|
@ -11,6 +10,7 @@ import java.util.Objects;
|
|||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
public class Theme {
|
||||
|
@ -205,13 +205,13 @@ public class Theme {
|
|||
|
||||
private static ColorHolder single(Color c) {
|
||||
ColorHolder h = new ColorHolder();
|
||||
h.colors = Couple.create(c, c);
|
||||
h.colors = Couple.create(c.setImmutable(), c.setImmutable());
|
||||
return h;
|
||||
}
|
||||
|
||||
private static ColorHolder pair(Color first, Color second) {
|
||||
ColorHolder h = new ColorHolder();
|
||||
h.colors = Couple.create(first, second);
|
||||
h.colors = Couple.create(first.setImmutable(), second.setImmutable());
|
||||
return h;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,14 +1,12 @@
|
|||
package com.simibubi.create.foundation.gui;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import org.lwjgl.opengl.GL11;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
|
||||
import net.minecraft.client.MainWindow;
|
||||
|
@ -116,23 +114,23 @@ public class UIRenderHelper {
|
|||
}
|
||||
|
||||
/**
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int)
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, Color, Color)
|
||||
*/
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, Couple<Color> c) {
|
||||
angledGradient(ms, angle, x, y, 0, breadth, length, c);
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int)
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, Color, Color)
|
||||
*/
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, Couple<Color> c) {
|
||||
angledGradient(ms, angle, x, y, z, breadth, length, c.getFirst().getRGB(), c.getSecond().getRGB());
|
||||
angledGradient(ms, angle, x, y, z, breadth, length, c.getFirst(), c.getSecond());
|
||||
}
|
||||
|
||||
/**
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, int, int)
|
||||
* @see #angledGradient(MatrixStack, float, int, int, int, int, int, Color, Color)
|
||||
*/
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, int color1, int color2) {
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int breadth, int length, Color color1, Color color2) {
|
||||
angledGradient(ms, angle, x, y, 0, breadth, length, color1, color2);
|
||||
}
|
||||
|
||||
|
@ -144,22 +142,22 @@ public class UIRenderHelper {
|
|||
* @param color2 the color at the ending edge
|
||||
* @param breadth the total width of the gradient
|
||||
*/
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, int color1, int color2) {
|
||||
public static void angledGradient(@Nonnull MatrixStack ms, float angle, int x, int y, int z, int breadth, int length, Color color1, Color color2) {
|
||||
ms.pushPose();
|
||||
ms.translate(x, y, z);
|
||||
ms.mulPose(Vector3f.ZP.rotationDegrees(angle - 90));
|
||||
|
||||
Matrix4f model = ms.last().pose();
|
||||
int w = breadth / 2;
|
||||
GuiUtils.drawGradientRect(model, 0, -w, 0, w, length, color1, color2);
|
||||
GuiUtils.drawGradientRect(model, 0, -w, 0, w, length, color1.getRGB(), color2.getRGB());
|
||||
|
||||
ms.popPose();
|
||||
}
|
||||
|
||||
public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, Couple<Color> colors) {breadcrumbArrow(matrixStack, x, y, z, width, height, indent, colors.getFirst().getRGB(), colors.getSecond().getRGB());}
|
||||
public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, Couple<Color> colors) {breadcrumbArrow(matrixStack, x, y, z, width, height, indent, colors.getFirst(), colors.getSecond());}
|
||||
|
||||
// draws a wide chevron-style breadcrumb arrow pointing left
|
||||
public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, int startColor, int endColor) {
|
||||
public static void breadcrumbArrow(MatrixStack matrixStack, int x, int y, int z, int width, int height, int indent, Color startColor, Color endColor) {
|
||||
matrixStack.pushPose();
|
||||
matrixStack.translate(x - indent, y, z);
|
||||
|
||||
|
@ -168,7 +166,7 @@ public class UIRenderHelper {
|
|||
matrixStack.popPose();
|
||||
}
|
||||
|
||||
private static void breadcrumbArrow(MatrixStack ms, int width, int height, int indent, int c1, int c2) {
|
||||
private static void breadcrumbArrow(MatrixStack ms, int width, int height, int indent, Color c1, Color c2) {
|
||||
|
||||
/*
|
||||
* 0,0 x1,y1 ********************* x4,y4 ***** x7,y7
|
||||
|
@ -193,10 +191,10 @@ public class UIRenderHelper {
|
|||
|
||||
indent = Math.abs(indent);
|
||||
width = Math.abs(width);
|
||||
int fc1 = ColorHelper.mixAlphaColors(c1, c2, 0);
|
||||
int fc2 = ColorHelper.mixAlphaColors(c1, c2, (indent) / (width + 2f * indent));
|
||||
int fc3 = ColorHelper.mixAlphaColors(c1, c2, (indent + width) / (width + 2f * indent));
|
||||
int fc4 = ColorHelper.mixAlphaColors(c1, c2, 1);
|
||||
Color fc1 = Color.mixColors(c1, c2, 0);
|
||||
Color fc2 = Color.mixColors(c1, c2, (indent) / (width + 2f * indent));
|
||||
Color fc3 = Color.mixColors(c1, c2, (indent + width) / (width + 2f * indent));
|
||||
Color fc4 = Color.mixColors(c1, c2, 1);
|
||||
|
||||
RenderSystem.disableTexture();
|
||||
RenderSystem.enableBlend();
|
||||
|
@ -210,29 +208,29 @@ public class UIRenderHelper {
|
|||
Matrix4f model = ms.last().pose();
|
||||
bufferbuilder.begin(GL11.GL_TRIANGLES, DefaultVertexFormats.POSITION_COLOR);
|
||||
|
||||
bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x0, y0, 0).color(fc1.getRed(), fc1.getGreen(), fc1.getBlue(), fc1.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x1, y1, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x2, y2, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
|
||||
bufferbuilder.vertex(model, x0, y0, 0).color(fc1 >> 16 & 0xFF, fc1 >> 8 & 0xFF, fc1 & 0xFF, fc1 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x2, y2, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x0, y0, 0).color(fc1.getRed(), fc1.getGreen(), fc1.getBlue(), fc1.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x2, y2, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x1, y1, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x1, y1, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2 >> 16 & 0xFF, fc2 >> 8 & 0xFF, fc2 & 0xFF, fc2 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x3, y3, 0).color(fc2.getRed(), fc2.getGreen(), fc2.getBlue(), fc2.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x6, y6, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
|
||||
bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x7, y7, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x5, y5, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x4, y4, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x7, y7, 0).color(fc4.getRed(), fc4.getGreen(), fc4.getBlue(), fc4.getAlpha()).endVertex();
|
||||
|
||||
bufferbuilder.vertex(model, x6, y6, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x5, y5, 0).color(fc3 >> 16 & 0xFF, fc3 >> 8 & 0xFF, fc3 & 0xFF, fc3 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x8, y8, 0).color(fc4 >> 16 & 0xFF, fc4 >> 8 & 0xFF, fc4 & 0xFF, fc4 >> 24 & 0xFF).endVertex();
|
||||
bufferbuilder.vertex(model, x6, y6, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x5, y5, 0).color(fc3.getRed(), fc3.getGreen(), fc3.getBlue(), fc3.getAlpha()).endVertex();
|
||||
bufferbuilder.vertex(model, x8, y8, 0).color(fc4.getRed(), fc4.getGreen(), fc4.getBlue(), fc4.getAlpha()).endVertex();
|
||||
|
||||
tessellator.end();
|
||||
RenderSystem.shadeModel(GL11.GL_FLAT);
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package com.simibubi.create.foundation.gui.mainMenu;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.platform.GlStateManager;
|
||||
|
@ -16,6 +14,7 @@ import com.simibubi.create.foundation.gui.GuiGameElement;
|
|||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||
import com.simibubi.create.foundation.item.TooltipHelper;
|
||||
import com.simibubi.create.foundation.ponder.content.PonderTagIndexScreen;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
|
||||
|
@ -106,7 +105,7 @@ public class CreateMainMenuScreen extends AbstractSimiScreen {
|
|||
AllGuiTextures.LOGO.draw(ms, 0, 0);
|
||||
ms.popPose();
|
||||
new BoxElement().withBackground(0x88_000000)
|
||||
.flatBorder(new Color(0x01_000000, true))
|
||||
.flatBorder(new Color(0x01_000000))
|
||||
.at(-32, 56, 100)
|
||||
.withBounds(128, 11)
|
||||
.render(ms);
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
package com.simibubi.create.foundation.gui.widgets;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.function.Function;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
@ -11,13 +10,13 @@ import com.simibubi.create.foundation.gui.DelegatedStencilElement;
|
|||
import com.simibubi.create.foundation.gui.Theme;
|
||||
import com.simibubi.create.foundation.gui.Theme.Key;
|
||||
import com.simibubi.create.foundation.gui.UIRenderHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
public class BoxWidget extends ElementWidget {
|
||||
|
||||
public static final Function<BoxWidget, DelegatedStencilElement.ElementRenderer> gradientFactory = (box) -> (ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, w/2, -2, w + 4, h + 4, box.gradientColor1.getRGB(), box.gradientColor2.getRGB());
|
||||
public static final Function<BoxWidget, DelegatedStencilElement.ElementRenderer> gradientFactory = (box) -> (ms, w, h, alpha) -> UIRenderHelper.angledGradient(ms, 90, w/2, -2, w + 4, h + 4, box.gradientColor1, box.gradientColor2);
|
||||
|
||||
protected BoxElement box;
|
||||
|
||||
|
@ -29,8 +28,8 @@ public class BoxWidget extends ElementWidget {
|
|||
|
||||
protected Color gradientColor1, gradientColor2;
|
||||
private Color previousColor1, previousColor2;
|
||||
private Color colorTarget1 = Theme.c(getIdleTheme(), true);
|
||||
private Color colorTarget2 = Theme.c(getIdleTheme(), false);
|
||||
private Color colorTarget1 = Theme.c(getIdleTheme(), true).copy();
|
||||
private Color colorTarget2 = Theme.c(getIdleTheme(), false).copy();
|
||||
|
||||
public BoxWidget() {
|
||||
this(0, 0);
|
||||
|
@ -116,8 +115,8 @@ public class BoxWidget extends ElementWidget {
|
|||
gradientColor2 = colorTarget2;
|
||||
} else {
|
||||
float animationValue = 1 - Math.abs(colorAnimation.getValue(partialTicks));
|
||||
gradientColor1 = ColorHelper.mixColors(previousColor1, colorTarget1, animationValue);
|
||||
gradientColor2 = ColorHelper.mixColors(previousColor2, colorTarget2, animationValue);
|
||||
gradientColor1 = Color.mixColors(previousColor1, colorTarget1, animationValue);
|
||||
gradientColor2 = Color.mixColors(previousColor2, colorTarget2, animationValue);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -19,6 +19,7 @@ import com.simibubi.create.foundation.gui.UIRenderHelper;
|
|||
import com.simibubi.create.foundation.ponder.content.PonderTagIndexScreen;
|
||||
import com.simibubi.create.foundation.ponder.content.PonderTagScreen;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderButton;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
|
@ -242,7 +243,7 @@ public abstract class NavigatableSimiScreen extends AbstractSimiScreen {
|
|||
names.forEach(s -> {
|
||||
int sWidth = font.width(s);
|
||||
UIRenderHelper.breadcrumbArrow(ms, x.getValue(), y.getValue(), 0, sWidth + spacing, 14, spacing / 2,
|
||||
0xdd101010, 0x44101010);
|
||||
new Color(0xdd101010), new Color(0x44101010));
|
||||
font.draw(ms, s, x.getValue() + 5, y.getValue() + 3, first.getValue() ? 0xffeeffee : 0xffddeeff);
|
||||
first.setFalse();
|
||||
|
||||
|
|
|
@ -4,7 +4,7 @@ import java.util.List;
|
|||
|
||||
import com.google.common.base.Strings;
|
||||
import com.simibubi.create.foundation.gui.ScreenOpener;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
|
@ -133,8 +133,8 @@ public class PonderTooltipHandler {
|
|||
|
||||
private static int getSmoothColorForProgress(float progress) {
|
||||
if (progress < .5f)
|
||||
return ColorHelper.mixColors(0x5000FF, 5592575, progress * 2);
|
||||
return ColorHelper.mixColors(5592575, 0xffffff, (progress - .5f) * 2);
|
||||
return Color.mixColors(0x5000FF, 5592575, progress * 2);
|
||||
return Color.mixColors(5592575, 0xffffff, (progress - .5f) * 2);
|
||||
}
|
||||
|
||||
private static ITextComponent makeProgressBar(float progress) {
|
||||
|
|
|
@ -2,7 +2,6 @@ package com.simibubi.create.foundation.ponder;
|
|||
|
||||
import static com.simibubi.create.foundation.ponder.PonderLocalization.LANG_PREFIX;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
@ -31,7 +30,7 @@ import com.simibubi.create.foundation.ponder.content.PonderTagScreen;
|
|||
import com.simibubi.create.foundation.ponder.elements.TextWindowElement;
|
||||
import com.simibubi.create.foundation.ponder.ui.PonderButton;
|
||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Couple;
|
||||
import com.simibubi.create.foundation.utility.FontHelper;
|
||||
import com.simibubi.create.foundation.utility.Iterate;
|
||||
|
@ -469,7 +468,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
ms.scale(1, .5f + flash * .75f, 1);
|
||||
GuiUtils.drawGradientRect(ms.last()
|
||||
.pose(), 0, 0, -1, -story.basePlateSize, 0, 0x00_c6ffc9,
|
||||
ColorHelper.applyAlpha(0xaa_c6ffc9, alpha));
|
||||
new Color(0xaa_c6ffc9).scaleAlpha(alpha).getRGB());
|
||||
ms.popPose();
|
||||
}
|
||||
ms.translate(0, 0, 2 / 1024f);
|
||||
|
@ -538,7 +537,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
|
||||
protected void renderWidgets(MatrixStack ms, int mouseX, int mouseY, float partialTicks) {
|
||||
RenderSystem.disableDepthTest();
|
||||
|
||||
|
||||
float fade = fadeIn.getValue(partialTicks);
|
||||
float lazyIndexValue = lazyIndex.getValue(partialTicks);
|
||||
float indexDiff = Math.abs(lazyIndexValue - index);
|
||||
|
@ -582,7 +581,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
ms.mulPose(Vector3f.XN.rotationDegrees(indexDiff * -75));
|
||||
ms.translate(0, 0, 5);
|
||||
FontHelper.drawSplitString(ms, font, title, 0, 0, left.x - 51,
|
||||
ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT), 1 - indexDiff));
|
||||
Theme.c(Theme.Key.TEXT).scaleAlpha(1 - indexDiff).getRGB());
|
||||
ms.popPose();
|
||||
|
||||
if (chapter != null) {
|
||||
|
@ -598,10 +597,13 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
ms.popPose();
|
||||
}
|
||||
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 - 20, height - 51, 0, 20, 20, 5, 0x40aa9999, 0x20aa9999);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 + 20, height - 51, 0, -20, 20, -5, 0x40aa9999, 0x20aa9999);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 - 90, height - 51, 0, 70, 20, 5, 0x40aa9999, 0x10aa9999);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 + 90, height - 51, 0, -70, 20, -5, 0x40aa9999, 0x10aa9999);
|
||||
Color c1 = Theme.c(Theme.Key.PONDER_BACK_ARROW).setAlpha(0x40);
|
||||
Color c2 = Theme.c(Theme.Key.PONDER_BACK_ARROW).setAlpha(0x20);
|
||||
Color c3 = Theme.c(Theme.Key.PONDER_BACK_ARROW).setAlpha(0x10);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 - 20, height - 51, 0, 20, 20, 5, c1, c2);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 + 20, height - 51, 0, -20, 20, -5, c1, c2);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 - 90, height - 51, 0, 70, 20, 5, c1, c3);
|
||||
UIRenderHelper.breadcrumbArrow(ms, width / 2 + 90, height - 51, 0, -70, 20, -5, c1, c3);
|
||||
}
|
||||
|
||||
if (identifyMode) {
|
||||
|
@ -738,7 +740,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
if (PonderIndex.EDITOR_MODE && userMode.isHovered())
|
||||
drawCenteredString(ms, font, "Editor View", userMode.x + 10, tooltipY, tooltipColor);
|
||||
ms.popPose();
|
||||
|
||||
|
||||
RenderSystem.enableDepthTest();
|
||||
}
|
||||
|
||||
|
@ -869,7 +871,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
boxY -= h / 2;
|
||||
divotX += distance;
|
||||
divotY -= divotRadius;
|
||||
c = ColorHelper.mixColors(borderColors, 0.5f);
|
||||
c = Color.mixColors(borderColors, 0.5f);
|
||||
break;
|
||||
case RIGHT:
|
||||
divotRotation = 270;
|
||||
|
@ -877,7 +879,7 @@ public class PonderUI extends NavigatableSimiScreen {
|
|||
boxY -= h / 2;
|
||||
divotX -= divotSize + distance;
|
||||
divotY -= divotRadius;
|
||||
c = ColorHelper.mixColors(borderColors, 0.5f);
|
||||
c = Color.mixColors(borderColors, 0.5f);
|
||||
break;
|
||||
case UP:
|
||||
divotRotation = 180;
|
||||
|
|
|
@ -59,7 +59,7 @@ import com.simibubi.create.foundation.tileEntity.SmartTileEntity;
|
|||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.DirectBeltInputBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.belt.TransportedItemStackHandlerBehaviour.TransportedResult;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.NBTHelper;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
|
@ -132,7 +132,7 @@ public class SceneBuilder {
|
|||
* Assign a unique translation key, as well as the standard english translation
|
||||
* for this scene's title using this method, anywhere inside the program
|
||||
* function.
|
||||
*
|
||||
*
|
||||
* @param sceneId
|
||||
* @param title
|
||||
*/
|
||||
|
@ -147,7 +147,7 @@ public class SceneBuilder {
|
|||
* the the base plate. <br>
|
||||
* As a result, showBasePlate() will only show the configured size, and the
|
||||
* scene's scaling inside the UI will be consistent with its base size.
|
||||
*
|
||||
*
|
||||
* @param xOffset Block spaces between the base plate and the schematic
|
||||
* boundary on the Western side.
|
||||
* @param zOffset Block spaces between the base plate and the schematic
|
||||
|
@ -164,7 +164,7 @@ public class SceneBuilder {
|
|||
/**
|
||||
* Use this in case you are not happy with the scale of the scene relative to
|
||||
* the overlay
|
||||
*
|
||||
*
|
||||
* @param factor >1 will make the scene appear larger, smaller otherwise
|
||||
*/
|
||||
public void scaleSceneView(float factor) {
|
||||
|
@ -174,7 +174,7 @@ public class SceneBuilder {
|
|||
/**
|
||||
* Use this in case you are not happy with the vertical alignment of the scene
|
||||
* relative to the overlay
|
||||
*
|
||||
*
|
||||
* @param yOffset >0 moves the scene up, down otherwise
|
||||
*/
|
||||
public void setSceneOffsetY(float yOffset) {
|
||||
|
@ -197,7 +197,7 @@ public class SceneBuilder {
|
|||
* actions play out. <br>
|
||||
* Idle does not stall any animations, only schedules a time gap between
|
||||
* instructions.
|
||||
*
|
||||
*
|
||||
* @param ticks Duration to wait for
|
||||
*/
|
||||
public void idle(int ticks) {
|
||||
|
@ -209,7 +209,7 @@ public class SceneBuilder {
|
|||
* actions play out. <br>
|
||||
* Idle does not stall any animations, only schedules a time gap between
|
||||
* instructions.
|
||||
*
|
||||
*
|
||||
* @param seconds Duration to wait for
|
||||
*/
|
||||
public void idleSeconds(int seconds) {
|
||||
|
@ -229,7 +229,7 @@ public class SceneBuilder {
|
|||
|
||||
/**
|
||||
* Pans the scene's camera view around the vertical axis by the given amount
|
||||
*
|
||||
*
|
||||
* @param degrees
|
||||
*/
|
||||
public void rotateCameraY(float degrees) {
|
||||
|
@ -309,7 +309,7 @@ public class SceneBuilder {
|
|||
}
|
||||
|
||||
public void createRedstoneParticles(BlockPos pos, int color, int amount) {
|
||||
Vector3d rgb = ColorHelper.getRGB(color);
|
||||
Vector3d rgb = Color.vectorFromRGB(color);
|
||||
addInstruction(new EmitParticlesInstruction(VecHelper.getCenterOf(pos), Emitter.withinBlockSpace(
|
||||
new RedstoneParticleData((float) rgb.x, (float) rgb.y, (float) rgb.z, 1), Vector3d.ZERO), amount, 2));
|
||||
}
|
||||
|
@ -824,4 +824,4 @@ public class SceneBuilder {
|
|||
scene.schedule.add(PonderInstruction.simple(callback));
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,30 +1,36 @@
|
|||
package com.simibubi.create.foundation.ponder.content;
|
||||
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
public enum PonderPalette {
|
||||
|
||||
WHITE(0xFF_eeeeee),
|
||||
BLACK(0xFF_221111),
|
||||
|
||||
|
||||
RED(0xFF_ff5d6c),
|
||||
GREEN(0xFF_8cba51),
|
||||
BLUE(0xFF_5f6caf),
|
||||
|
||||
|
||||
SLOW(0xFF_22ff22),
|
||||
MEDIUM(0xFF_0084ff),
|
||||
FAST(0xFF_ff55ff),
|
||||
|
||||
|
||||
INPUT(0xFF_4f8a8b),
|
||||
OUTPUT(0xFF_ffcb74),
|
||||
|
||||
|
||||
;
|
||||
|
||||
private int color;
|
||||
private final Color color;
|
||||
|
||||
private PonderPalette(int color) {
|
||||
this.color = color;
|
||||
PonderPalette(int color) {
|
||||
this.color = new Color(color);
|
||||
}
|
||||
|
||||
public int getColor() {
|
||||
return color.getRGB();
|
||||
}
|
||||
|
||||
public Color getColorObject() {
|
||||
return color;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -10,7 +10,6 @@ import com.simibubi.create.foundation.ponder.PonderLocalization;
|
|||
import com.simibubi.create.foundation.ponder.PonderScene;
|
||||
import com.simibubi.create.foundation.ponder.PonderUI;
|
||||
import com.simibubi.create.foundation.ponder.content.PonderPalette;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Pointing;
|
||||
|
||||
import net.minecraft.client.gui.FontRenderer;
|
||||
|
@ -59,7 +58,7 @@ public class InputWindowElement extends AnimatedOverlayElement {
|
|||
icon = AllIcons.I_RMB;
|
||||
return this;
|
||||
}
|
||||
|
||||
|
||||
public InputWindowElement showing(AllIcons icon) {
|
||||
this.icon = icon;
|
||||
return this;
|
||||
|
@ -126,7 +125,7 @@ public class InputWindowElement extends AnimatedOverlayElement {
|
|||
|
||||
if (hasText)
|
||||
font.draw(ms, text, 2, (height - font.lineHeight) / 2f + 2,
|
||||
ColorHelper.applyAlpha(PonderPalette.WHITE.getColor(), fade));
|
||||
PonderPalette.WHITE.getColorObject().scaleAlpha(fade).getRGB());
|
||||
|
||||
if (hasIcon) {
|
||||
ms.pushPose();
|
||||
|
|
|
@ -10,7 +10,7 @@ import com.simibubi.create.foundation.ponder.PonderLocalization;
|
|||
import com.simibubi.create.foundation.ponder.PonderScene;
|
||||
import com.simibubi.create.foundation.ponder.PonderUI;
|
||||
import com.simibubi.create.foundation.ponder.content.PonderPalette;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import net.minecraft.util.ResourceLocation;
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
|
@ -126,7 +126,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
|
|||
|
||||
//PonderUI.renderBox(ms, targetX - 10, 3, boxWidth, boxHeight - 1, 0xaa000000, 0x30eebb00, 0x10eebb00);
|
||||
|
||||
int brighterColor = ColorHelper.mixAlphaColors(color, 0xFFffffdd, 1 / 2f);
|
||||
int brighterColor = Color.mixColors(color, 0xFFffffdd, 1 / 2f);
|
||||
if (vec != null) {
|
||||
ms.pushPose();
|
||||
ms.translate(sceneToScreen.x, 0, 0);
|
||||
|
@ -142,7 +142,7 @@ public class TextWindowElement extends AnimatedOverlayElement {
|
|||
for (int i = 0; i < lines.size(); i++) {
|
||||
screen.getFontRenderer()
|
||||
.draw(ms, lines.get(i)
|
||||
.getString(), targetX - 10, 3 + 9 * i, ColorHelper.applyAlpha(brighterColor, fade));
|
||||
.getString(), targetX - 10, 3 + 9 * i, new Color(brighterColor).scaleAlpha(fade).getRGB());
|
||||
}
|
||||
ms.popPose();
|
||||
}
|
||||
|
|
|
@ -1,7 +1,5 @@
|
|||
package com.simibubi.create.foundation.ponder.ui;
|
||||
|
||||
import java.awt.Color;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
|
@ -13,7 +11,7 @@ import com.simibubi.create.foundation.gui.widgets.BoxWidget;
|
|||
import com.simibubi.create.foundation.gui.widgets.ElementWidget;
|
||||
import com.simibubi.create.foundation.ponder.content.PonderTag;
|
||||
import com.simibubi.create.foundation.utility.AnimationTickHolder;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.animation.LerpedFloat;
|
||||
|
||||
import net.minecraft.client.Minecraft;
|
||||
|
@ -48,7 +46,7 @@ public class PonderButton extends BoxWidget {
|
|||
public <T extends PonderButton> T showingTag(PonderTag tag) {
|
||||
return showing(this.tag = tag);
|
||||
}
|
||||
|
||||
|
||||
public <T extends PonderButton> T showing(ItemStack item) {
|
||||
this.item = item;
|
||||
return super.showingElement(GuiGameElement.of(item)
|
||||
|
@ -83,12 +81,10 @@ public class PonderButton extends BoxWidget {
|
|||
if (flashValue > .1f) {
|
||||
float sin = 0.5f + 0.5f * MathHelper.sin((AnimationTickHolder.getTicks(true) + partialTicks) / 5f);
|
||||
sin *= flashValue;
|
||||
Color c1 = gradientColor1;
|
||||
Color c2 = gradientColor2;
|
||||
Color nc1 = new Color(255, 255, 255, MathHelper.clamp(c1.getAlpha() + 150, 0, 255));
|
||||
Color nc2 = new Color(155, 155, 155, MathHelper.clamp(c2.getAlpha() + 150, 0, 255));
|
||||
gradientColor1 = ColorHelper.mixColors(c1, nc1, sin);
|
||||
gradientColor2 = ColorHelper.mixColors(c2, nc2, sin);
|
||||
Color nc1 = new Color(255, 255, 255, MathHelper.clamp(gradientColor1.getAlpha() + 150, 0, 255));
|
||||
Color nc2 = new Color(155, 155, 155, MathHelper.clamp(gradientColor2.getAlpha() + 150, 0, 255));
|
||||
gradientColor1.mixWith(nc1, sin);
|
||||
gradientColor2.mixWith(nc2, sin);
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -102,14 +98,14 @@ public class PonderButton extends BoxWidget {
|
|||
|
||||
if (shortcut != null) {
|
||||
ms.translate(0, 0, z + 50);
|
||||
drawCenteredString(ms, Minecraft.getInstance().font, shortcut.getTranslatedKeyMessage(), x + width / 2 + 8, y + height - 6, ColorHelper.applyAlpha(Theme.i(Theme.Key.TEXT_DARKER), fadeValue));
|
||||
drawCenteredString(ms, Minecraft.getInstance().font, shortcut.getTranslatedKeyMessage(), x + width / 2 + 8, y + height - 6, Theme.c(Theme.Key.TEXT_DARKER).scaleAlpha(fadeValue).getRGB());
|
||||
}
|
||||
}
|
||||
|
||||
public ItemStack getItem() {
|
||||
return item;
|
||||
}
|
||||
|
||||
|
||||
public PonderTag getTag() {
|
||||
return tag;
|
||||
}
|
||||
|
|
|
@ -5,6 +5,7 @@ import com.jozufozu.flywheel.util.transform.MatrixTransformStack;
|
|||
import com.mojang.blaze3d.matrix.MatrixStack;
|
||||
import com.mojang.blaze3d.vertex.IVertexBuilder;
|
||||
import com.simibubi.create.foundation.block.render.SpriteShiftEntry;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
|
||||
import it.unimi.dsi.fastutil.longs.Long2IntMap;
|
||||
import it.unimi.dsi.fastutil.longs.Long2IntOpenHashMap;
|
||||
|
@ -207,7 +208,7 @@ public class SuperByteBuffer {
|
|||
while (!transforms.clear())
|
||||
transforms.popPose();
|
||||
transforms.pushPose();
|
||||
|
||||
|
||||
shouldColor = false;
|
||||
r = 0;
|
||||
g = 0;
|
||||
|
@ -297,6 +298,10 @@ public class SuperByteBuffer {
|
|||
return this;
|
||||
}
|
||||
|
||||
public SuperByteBuffer color(Color c) {
|
||||
return color(c.getRGB());
|
||||
}
|
||||
|
||||
/**
|
||||
* Prevents vertex colors from being divided by the diffuse value calculated from the raw untransformed normal vector.
|
||||
* Useful when passed vertex colors do not have diffuse baked in.
|
||||
|
|
|
@ -6,7 +6,7 @@ import com.simibubi.create.foundation.gui.AllIcons;
|
|||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.ValueBoxTransform.Sided;
|
||||
import com.simibubi.create.foundation.tileEntity.behaviour.scrollvalue.INamedIconOptions;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.Lang;
|
||||
import com.simibubi.create.foundation.utility.outliner.ChasingAABBOutline;
|
||||
|
||||
|
@ -143,7 +143,7 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
boolean isEmpty = stack.isEmpty();
|
||||
float scale = 1.5f;
|
||||
ms.translate(-font.width(countString), 0, 0);
|
||||
|
||||
|
||||
if (isFilter)
|
||||
ms.translate(3, 8, 7.25f);
|
||||
else if (isEmpty) {
|
||||
|
@ -215,7 +215,7 @@ public class ValueBox extends ChasingAABBOutline {
|
|||
// util
|
||||
|
||||
protected void renderHoveringText(MatrixStack ms, IRenderTypeBuffer buffer, ITextComponent text) {
|
||||
renderHoveringText(ms, buffer, text, highlightColor, ColorHelper.mixColors(passiveColor, 0, 0.75f));
|
||||
renderHoveringText(ms, buffer, text, highlightColor, Color.mixColors(passiveColor, 0, 0.75f));
|
||||
}
|
||||
|
||||
protected void renderHoveringText(MatrixStack ms, IRenderTypeBuffer buffer, ITextComponent text, int color,
|
||||
|
|
322
src/main/java/com/simibubi/create/foundation/utility/Color.java
Normal file
322
src/main/java/com/simibubi/create/foundation/utility/Color.java
Normal file
|
@ -0,0 +1,322 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import java.util.function.UnaryOperator;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.google.common.hash.Hashing;
|
||||
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
|
||||
@SuppressWarnings("PointlessBitwiseExpression")
|
||||
public class Color {
|
||||
public final static Color TRANSPARENT_BLACK = new Color(0, 0, 0, 0).setImmutable();
|
||||
public final static Color BLACK = new Color(0, 0, 0).setImmutable();
|
||||
public final static Color WHITE = new Color(255, 255, 255).setImmutable();
|
||||
public final static Color RED = new Color(255, 0, 0).setImmutable();
|
||||
public final static Color GREEN = new Color(0, 255, 0).setImmutable();
|
||||
public final static Color SPRING_GREEN = new Color(0, 255, 187).setImmutable();
|
||||
|
||||
protected boolean mutable = true;
|
||||
protected int value;
|
||||
|
||||
public Color(int r, int g, int b) {
|
||||
this(r, g, b, 0xff);
|
||||
}
|
||||
|
||||
public Color(int r, int g, int b, int a) {
|
||||
value = ((a & 0xff) << 24) |
|
||||
((r & 0xff) << 16) |
|
||||
((g & 0xff) << 8) |
|
||||
((b & 0xff) << 0);
|
||||
}
|
||||
|
||||
public Color(float r, float g, float b, float a) {
|
||||
this(
|
||||
(int) (0.5 + 0xff * MathHelper.clamp(r, 0, 1)),
|
||||
(int) (0.5 + 0xff * MathHelper.clamp(g, 0, 1)),
|
||||
(int) (0.5 + 0xff * MathHelper.clamp(b, 0, 1)),
|
||||
(int) (0.5 + 0xff * MathHelper.clamp(a, 0, 1))
|
||||
);
|
||||
}
|
||||
|
||||
public Color(int rgba) {
|
||||
value = rgba;
|
||||
}
|
||||
|
||||
public Color(int rgb, boolean hasAlpha) {
|
||||
if (hasAlpha) {
|
||||
value = rgb;
|
||||
} else {
|
||||
value = rgb | 0xff_000000;
|
||||
}
|
||||
}
|
||||
|
||||
public Color copy() {
|
||||
return copy(true);
|
||||
}
|
||||
|
||||
public Color copy(boolean mutable) {
|
||||
if (mutable)
|
||||
return new Color(value);
|
||||
else
|
||||
return new Color(value).setImmutable();
|
||||
}
|
||||
|
||||
/**
|
||||
* Mark this color as immutable. Attempting to mutate this color in the future
|
||||
* will instead cause a copy to be created that can me modified.
|
||||
*/
|
||||
public Color setImmutable() {
|
||||
this.mutable = false;
|
||||
return this;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the red component in the range 0-255.
|
||||
* @see #getRGB
|
||||
*/
|
||||
public int getRed() {
|
||||
return (getRGB() >> 16) & 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the green component in the range 0-255.
|
||||
* @see #getRGB
|
||||
*/
|
||||
public int getGreen() {
|
||||
return (getRGB() >> 8) & 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the blue component in the range 0-255.
|
||||
* @see #getRGB
|
||||
*/
|
||||
public int getBlue() {
|
||||
return (getRGB() >> 0) & 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the alpha component in the range 0-255.
|
||||
* @see #getRGB
|
||||
*/
|
||||
public int getAlpha() {
|
||||
return (getRGB() >> 24) & 0xff;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the red component in the range 0-1f.
|
||||
*/
|
||||
public float getRedAsFloat() {
|
||||
return getRed() / 255f;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the green component in the range 0-1f.
|
||||
*/
|
||||
public float getGreenAsFloat() {
|
||||
return getGreen() / 255f;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the blue component in the range 0-1f.
|
||||
*/
|
||||
public float getBlueAsFloat() {
|
||||
return getBlue() / 255f;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the alpha component in the range 0-1f.
|
||||
*/
|
||||
public float getAlphaAsFloat() {
|
||||
return getAlpha() / 255f;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the RGB value representing this color
|
||||
* (Bits 24-31 are alpha, 16-23 are red, 8-15 are green, 0-7 are blue).
|
||||
* @return the RGB value of the color
|
||||
*/
|
||||
public int getRGB() {
|
||||
return value;
|
||||
}
|
||||
|
||||
public Vector3d asVector() {
|
||||
return new Vector3d(getRedAsFloat(), getGreenAsFloat(), getBlueAsFloat());
|
||||
}
|
||||
|
||||
public Color setRed(int r) {
|
||||
return ensureMutable().setRedUnchecked(r);
|
||||
}
|
||||
|
||||
public Color setGreen(int g) {
|
||||
return ensureMutable().setGreenUnchecked(g);
|
||||
}
|
||||
|
||||
public Color setBlue(int b) {
|
||||
return ensureMutable().setBlueUnchecked(b);
|
||||
}
|
||||
|
||||
public Color setAlpha(int a) {
|
||||
return ensureMutable().setAlphaUnchecked(a);
|
||||
}
|
||||
|
||||
public Color setRed(float r) {
|
||||
return ensureMutable().setRedUnchecked((int) (0xff * MathHelper.clamp(r, 0, 1)));
|
||||
}
|
||||
|
||||
public Color setGreen(float g) {
|
||||
return ensureMutable().setGreenUnchecked((int) (0xff * MathHelper.clamp(g, 0, 1)));
|
||||
}
|
||||
|
||||
public Color setBlue(float b) {
|
||||
return ensureMutable().setBlueUnchecked((int) (0xff * MathHelper.clamp(b, 0, 1)));
|
||||
}
|
||||
|
||||
public Color setAlpha(float a) {
|
||||
return ensureMutable().setAlphaUnchecked((int) (0xff * MathHelper.clamp(a, 0, 1)));
|
||||
}
|
||||
|
||||
public Color scaleAlpha(float factor) {
|
||||
return ensureMutable().setAlphaUnchecked((int) (getAlpha() * MathHelper.clamp(factor, 0, 1)));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
public Color applyAlpha(float alpha) {
|
||||
if (getAlpha() == 0)
|
||||
return setAlpha(alpha);
|
||||
else
|
||||
return scaleAlpha(alpha);
|
||||
}
|
||||
|
||||
public Color mixWith(Color other, float weight) {
|
||||
return ensureMutable()
|
||||
.setRedUnchecked((int) (getRed() + (other.getRed() - getRed()) * weight))
|
||||
.setGreenUnchecked((int) (getGreen() + (other.getGreen() - getGreen()) * weight))
|
||||
.setBlueUnchecked((int) (getBlue() + (other.getBlue() - getBlue()) * weight))
|
||||
.setAlphaUnchecked((int) (getAlpha() + (other.getAlpha() - getAlpha()) * weight));
|
||||
}
|
||||
|
||||
public Color darker() {
|
||||
//todo
|
||||
return ensureMutable();
|
||||
}
|
||||
|
||||
public Color setValue(int value) {
|
||||
return ensureMutable().setValueUnchecked(value);
|
||||
}
|
||||
|
||||
public Color modifyValue(UnaryOperator<Integer> function) {
|
||||
int newValue = function.apply(value);
|
||||
if (newValue == value)
|
||||
return this;
|
||||
|
||||
return ensureMutable().setValueUnchecked(newValue);
|
||||
}
|
||||
|
||||
// ********* //
|
||||
|
||||
protected Color ensureMutable() {
|
||||
if (this.mutable)
|
||||
return this;
|
||||
|
||||
return new Color(this.value);
|
||||
}
|
||||
|
||||
protected Color setRedUnchecked(int r) {
|
||||
this.value = (this.value & 0xff_00ffff) | ((r & 0xff) << 16);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Color setGreenUnchecked(int g) {
|
||||
this.value = (this.value & 0xff_ff00ff) | ((g & 0xff) << 8);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Color setBlueUnchecked(int b) {
|
||||
this.value = (this.value & 0xff_ffff00) | ((b & 0xff) << 0);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Color setAlphaUnchecked(int a) {
|
||||
this.value = (this.value & 0x00_ffffff) | ((a & 0xff) << 24);
|
||||
return this;
|
||||
}
|
||||
|
||||
protected Color setValueUnchecked(int value) {
|
||||
this.value = value;
|
||||
return this;
|
||||
}
|
||||
|
||||
// ********* //
|
||||
|
||||
public static Color mixColors(@Nonnull Color c1, @Nonnull Color c2, float w) {
|
||||
return new Color(
|
||||
(int) (c1.getRed() + (c2.getRed() - c1.getRed()) * w),
|
||||
(int) (c1.getGreen() + (c2.getGreen() - c1.getGreen()) * w),
|
||||
(int) (c1.getBlue() + (c2.getBlue() - c1.getBlue()) * w),
|
||||
(int) (c1.getAlpha() + (c2.getAlpha() - c1.getAlpha()) * w)
|
||||
);
|
||||
}
|
||||
|
||||
public static Color mixColors(@Nonnull Couple<Color> colors, float w) {
|
||||
return mixColors(colors.getFirst(), colors.getSecond(), w);
|
||||
}
|
||||
|
||||
public static int mixColors(int color1, int color2, float w) {
|
||||
int a1 = (color1 >> 24);
|
||||
int r1 = (color1 >> 16) & 0xFF;
|
||||
int g1 = (color1 >> 8) & 0xFF;
|
||||
int b1 = color1 & 0xFF;
|
||||
int a2 = (color2 >> 24);
|
||||
int r2 = (color2 >> 16) & 0xFF;
|
||||
int g2 = (color2 >> 8) & 0xFF;
|
||||
int b2 = color2 & 0xFF;
|
||||
|
||||
return
|
||||
((int) (a1 + (a2 - a1) * w) << 24) +
|
||||
((int) (r1 + (r2 - r1) * w) << 16) +
|
||||
((int) (g1 + (g2 - g1) * w) << 8) +
|
||||
((int) (b1 + (b2 - b1) * w) << 0);
|
||||
}
|
||||
|
||||
public static Color rainbowColor(int timeStep) {
|
||||
int localTimeStep = Math.abs(timeStep) % 1536;
|
||||
int timeStepInPhase = localTimeStep % 256;
|
||||
int phaseBlue = localTimeStep / 256;
|
||||
int red = colorInPhase(phaseBlue + 4, timeStepInPhase);
|
||||
int green = colorInPhase(phaseBlue + 2, timeStepInPhase);
|
||||
int blue = colorInPhase(phaseBlue, timeStepInPhase);
|
||||
return new Color(red, green, blue);
|
||||
}
|
||||
|
||||
private static int colorInPhase(int phase, int progress) {
|
||||
phase = phase % 6;
|
||||
if (phase <= 1)
|
||||
return 0;
|
||||
if (phase == 2)
|
||||
return progress;
|
||||
if (phase <= 4)
|
||||
return 255;
|
||||
else
|
||||
return 255 - progress;
|
||||
}
|
||||
|
||||
public static Color generateFromLong(long l) {
|
||||
return rainbowColor(Hashing.crc32().hashLong(l).asInt())
|
||||
.mixWith(WHITE, 0.5f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Try not to introduce new usages of this method and instead use Color instances directly
|
||||
*/
|
||||
@Deprecated
|
||||
public static Vector3d vectorFromRGB(int color) {
|
||||
int r = (color >> 16) & 0xFF;
|
||||
int g = (color >> 8) & 0xFF;
|
||||
int b = color & 0xFF;
|
||||
return new Vector3d(r, g, b).scale(1 / 255d);
|
||||
}
|
||||
|
||||
}
|
|
@ -1,135 +0,0 @@
|
|||
package com.simibubi.create.foundation.utility;
|
||||
|
||||
import java.awt.Color;
|
||||
import java.util.UUID;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import com.mojang.blaze3d.systems.RenderSystem;
|
||||
|
||||
import net.minecraft.util.math.MathHelper;
|
||||
import net.minecraft.util.math.vector.Vector3d;
|
||||
|
||||
public class ColorHelper {
|
||||
|
||||
public static int rainbowColor(int timeStep) {
|
||||
int localTimeStep = timeStep % 1536;
|
||||
int timeStepInPhase = localTimeStep % 256;
|
||||
int phaseBlue = localTimeStep / 256;
|
||||
int red = colorInPhase(phaseBlue + 4, timeStepInPhase);
|
||||
int green = colorInPhase(phaseBlue + 2, timeStepInPhase);
|
||||
int blue = colorInPhase(phaseBlue, timeStepInPhase);
|
||||
return (red << 16) + (green << 8) + (blue);
|
||||
}
|
||||
|
||||
private static int colorInPhase(int phase, int progress) {
|
||||
phase = phase % 6;
|
||||
if (phase <= 1)
|
||||
return 0;
|
||||
if (phase == 2)
|
||||
return progress;
|
||||
if (phase <= 4)
|
||||
return 255;
|
||||
else
|
||||
return 255 - progress;
|
||||
}
|
||||
|
||||
public static int applyAlpha(int color, float alpha) {
|
||||
int prevAlphaChannel = (color >> 24) & 0xFF;
|
||||
if (prevAlphaChannel > 0)
|
||||
alpha *= prevAlphaChannel / 255f;
|
||||
int alphaChannel = (int) (0xFF * MathHelper.clamp(alpha, 0, 1));
|
||||
return (color & 0xFFFFFF) | alphaChannel << 24;
|
||||
}
|
||||
|
||||
public static Color applyAlpha(Color c, float alpha) {
|
||||
return new Color(applyAlpha(c.getRGB(), alpha), true);
|
||||
}
|
||||
|
||||
public static int mixColors(int color1, int color2, float w) {
|
||||
int r1 = (color1 >> 16);
|
||||
int g1 = (color1 >> 8) & 0xFF;
|
||||
int b1 = color1 & 0xFF;
|
||||
int r2 = (color2 >> 16);
|
||||
int g2 = (color2 >> 8) & 0xFF;
|
||||
int b2 = color2 & 0xFF;
|
||||
|
||||
int color = ((int) (r1 + (r2 - r1) * w) << 16) + ((int) (g1 + (g2 - g1) * w) << 8) + (int) (b1 + (b2 - b1) * w);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static Color mixColors(@Nonnull Color c1, @Nonnull Color c2, float w) {
|
||||
float[] cmp1 = c1.getRGBComponents(null);
|
||||
float[] cmp2 = c2.getRGBComponents(null);
|
||||
return new Color(
|
||||
cmp1[0] + (cmp2[0] - cmp1[0]) * w,
|
||||
cmp1[1] + (cmp2[1] - cmp1[1]) * w,
|
||||
cmp1[2] + (cmp2[2] - cmp1[2]) * w,
|
||||
cmp1[3] + (cmp2[3] - cmp1[3]) * w
|
||||
);
|
||||
}
|
||||
|
||||
@Nonnull
|
||||
public static Color mixColors(@Nonnull Couple<Color> colors, float w) {
|
||||
return mixColors(colors.getFirst(), colors.getSecond(), w);
|
||||
}
|
||||
|
||||
public static int mixAlphaColors(int color1, int color2, float w) {
|
||||
int a1 = (color1 >> 24);
|
||||
int r1 = (color1 >> 16) & 0xFF;
|
||||
int g1 = (color1 >> 8) & 0xFF;
|
||||
int b1 = color1 & 0xFF;
|
||||
int a2 = (color2 >> 24);
|
||||
int r2 = (color2 >> 16) & 0xFF;
|
||||
int g2 = (color2 >> 8) & 0xFF;
|
||||
int b2 = color2 & 0xFF;
|
||||
|
||||
int color = ((int) (a1 + (a2 - a1) * w) << 24) + ((int) (r1 + (r2 - r1) * w) << 16)
|
||||
+ ((int) (g1 + (g2 - g1) * w) << 8) + (int) (b1 + (b2 - b1) * w);
|
||||
|
||||
return color;
|
||||
}
|
||||
|
||||
public static void glColor(int color) {
|
||||
color = mixColors(color, 0xFFFFFF, .5f);
|
||||
int r = (color >> 16) & 0xFF;
|
||||
int g = (color >> 8) & 0xFF;
|
||||
int b = color & 0xFF;
|
||||
|
||||
RenderSystem.color4f(r / 255f, g / 255f, b / 255f, 1);
|
||||
}
|
||||
|
||||
public static void glResetColor() {
|
||||
RenderSystem.color4f(1, 1, 1, 1);
|
||||
}
|
||||
|
||||
public static Vector3d getRGB(int color) {
|
||||
int r = (color >> 16) & 0xFF;
|
||||
int g = (color >> 8) & 0xFF;
|
||||
int b = color & 0xFF;
|
||||
return new Vector3d(r, g, b).scale(1 / 255d);
|
||||
}
|
||||
|
||||
public static Vector3d[] toVectors(int[] colors) {
|
||||
Vector3d[] vectors = new Vector3d[colors.length];
|
||||
for (int i = 0; i < colors.length; i++) {
|
||||
vectors[i] = ColorHelper.getRGB(colors[i]);
|
||||
}
|
||||
return vectors;
|
||||
}
|
||||
|
||||
public static int colorFromUUID(UUID uuid) {
|
||||
if (uuid == null)
|
||||
return 0x333333;
|
||||
return colorFromLong(uuid.getLeastSignificantBits());
|
||||
}
|
||||
|
||||
public static int colorFromLong(long l) {
|
||||
int rainbowColor = ColorHelper.rainbowColor(String.valueOf(l)
|
||||
.hashCode());
|
||||
return ColorHelper.mixColors(rainbowColor, 0xFFFFFF, .5f);
|
||||
}
|
||||
|
||||
}
|
|
@ -12,7 +12,7 @@ import com.simibubi.create.AllSpecialTextures;
|
|||
import com.simibubi.create.foundation.renderState.RenderTypes;
|
||||
import com.simibubi.create.foundation.renderState.SuperRenderTypeBuffer;
|
||||
import com.simibubi.create.foundation.utility.AngleHelper;
|
||||
import com.simibubi.create.foundation.utility.ColorHelper;
|
||||
import com.simibubi.create.foundation.utility.Color;
|
||||
import com.simibubi.create.foundation.utility.VecHelper;
|
||||
|
||||
import net.minecraft.client.renderer.texture.OverlayTexture;
|
||||
|
@ -129,7 +129,7 @@ public abstract class Outline {
|
|||
int j = i >> 16 & '\uffff';
|
||||
int k = i & '\uffff';
|
||||
Entry peek = ms.last();
|
||||
Vector3d rgb = params.rgb;
|
||||
Color rgb = params.rgb;
|
||||
if (transformNormals == null)
|
||||
transformNormals = peek.normal();
|
||||
|
||||
|
@ -144,7 +144,7 @@ public abstract class Outline {
|
|||
}
|
||||
|
||||
builder.vertex(peek.pose(), (float) pos.x, (float) pos.y, (float) pos.z)
|
||||
.color((float) rgb.x, (float) rgb.y, (float) rgb.z, params.alpha)
|
||||
.color(rgb.getRedAsFloat(), rgb.getGreenAsFloat(), rgb.getBlueAsFloat(), rgb.getAlphaAsFloat() * params.alpha)
|
||||
.uv(u, v)
|
||||
.overlayCoords(OverlayTexture.NO_OVERLAY)
|
||||
.uv2(j, k)
|
||||
|
@ -169,7 +169,7 @@ public abstract class Outline {
|
|||
protected boolean disableNormals;
|
||||
protected float alpha;
|
||||
protected int lightMapU, lightMapV;
|
||||
protected Vector3d rgb;
|
||||
protected Color rgb;
|
||||
private float lineWidth;
|
||||
|
||||
public OutlineParams() {
|
||||
|
@ -177,7 +177,7 @@ public abstract class Outline {
|
|||
alpha = 1;
|
||||
lineWidth = 1 / 32f;
|
||||
fadeLineWidth = true;
|
||||
rgb = ColorHelper.getRGB(0xFFFFFF);
|
||||
rgb = Color.WHITE;
|
||||
|
||||
int i = 15 << 20 | 15 << 4;
|
||||
lightMapU = i >> 16 & '\uffff';
|
||||
|
@ -187,7 +187,12 @@ public abstract class Outline {
|
|||
// builder
|
||||
|
||||
public OutlineParams colored(int color) {
|
||||
rgb = ColorHelper.getRGB(color);
|
||||
rgb = new Color(color, false);
|
||||
return this;
|
||||
}
|
||||
|
||||
public OutlineParams colored(Color c) {
|
||||
rgb = c.copy();
|
||||
return this;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue