aboutsummaryrefslogtreecommitdiff
path: root/src/main/java/detrav/utils/FluidColors.java
blob: 29e2181bea7a6a1213063758990d5fa1f6a8de96 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package detrav.utils;

import java.util.HashMap;

import javax.annotation.Nonnull;

import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidRegistry;

import gregtech.GTMod;
import gregtech.api.enums.UndergroundFluidNames;

public class FluidColors {

    private static boolean initialized;
    private static final HashMap<Integer, short[]> fluidColors = new HashMap<>();

    private static void generateFluidColors() {
        for (UndergroundFluidNames value : UndergroundFluidNames.values()) {
            final Fluid fluid = FluidRegistry.getFluid(value.name);
            if (fluid != null) {
                if (value.renderColor != null) {
                    fluidColors.put(fluid.getID(), value.renderColor);
                } else {
                    fluidColors.put(fluid.getID(), convertColorInt(fluid.getColor()));
                }
            } else {
                GTMod.GT_FML_LOGGER.error("[FluidColors] no registered fluid named " + value.name);
            }
        }
    }

    private static short[] convertColorInt(int color) {
        return new short[] { (short) (color << 16 & 0xff), (short) (color << 8 & 0xff), (short) (color & 0xff) };
    }

    @Nonnull
    public static short[] getColor(int fluidID) {
        if (!initialized) {
            generateFluidColors();
            initialized = true;
        }
        final short[] color = fluidColors.get(fluidID);
        if (color == null) {
            GTMod.GT_FML_LOGGER.error("Unknown fluid ID = " + fluidID + " This shouldn't happen!");
            return new short[] { 0, 0, 0, 0 };
        }
        return color;
    }

}