Inspired by 2020's April Fools' 20w14infinite Snapshot, this mod brings endless randomly generated dimensions into Minecraft.
at master 72 lines 1.9 kB view raw
1package net.lerariemann.infinity.entity.custom; 2 3import net.lerariemann.infinity.util.VersionMethods; 4 5import org.joml.Vector3f; 6 7import java.awt.*; 8//? if <1.21.2 { 9/*import net.minecraft.util.FastColor; 10import net.minecraft.world.entity.animal.Sheep; 11*///?} else { 12import net.minecraft.util.ARGB; 13import net.minecraft.world.entity.animal.sheep.Sheep; 14//?} 15 16import net.minecraft.world.item.DyeColor; 17 18public interface TintableEntity { 19 default Vector3f particleColorFromInt(int i) { 20 float f = (float)(i >> 16 & 0xFF) / 255.0f; 21 float g = (float)(i >> 8 & 0xFF) / 255.0f; 22 float h = (float)(i & 0xFF) / 255.0f; 23 return new Vector3f(f, g, h); 24 } 25 26 static int getColorJeb(int age, int id) { 27 int n = age / 25 + id; 28 int o = DyeColor.values().length; 29 int p = n % o; 30 int q = (n + 1) % o; 31 float r = (float)(age % 25) / 25.0F; 32 //? if =1.21.1 { 33 /*int s = Sheep.getColor(DyeColor.byId(p)); 34 int t = Sheep.getColor(DyeColor.byId(q)); 35 *///?} else { 36 int s = DyeColor.byId(p).getFireworkColor(); 37 int t = DyeColor.byId(q).getFireworkColor(); 38 //?} 39 40 41 //? if <1.21.2 { 42 /*return FastColor.ARGB32 43 *///?} else { 44 return ARGB 45 //?} 46 .lerp(r, s, t); 47 } 48 49 int getColorNamed(); 50 51 static int getColorNamed(String name, int age, int id) { 52 if ("jeb_".equals(name)) { 53 return TintableEntity.getColorJeb(age, id); 54 } 55 if ("hue".equals(name)) { 56 float hue = age / 400.f + id; 57 hue = hue - (int) hue; 58 return Color.getHSBColor(hue, 1.0f, 1.0f).getRGB(); 59 } 60 return -1; 61 } 62 63 default int getColorForRender() { 64 int v = getColorNamed(); 65 if (v!=-1) return v; 66 return VersionMethods.opaque(this.getColor()); 67 } 68 69 default int getColor() { 70 return 0; 71 } 72}