123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165 |
- package me.ktcm.events;
- import java.lang.reflect.Field;
- import java.lang.reflect.InvocationTargetException;
- import java.lang.reflect.Method;
- import net.minecraft.client.Minecraft;
- import net.minecraftforge.fml.relauncher.ReflectionHelper;
- import net.minecraft.client.gui.FontRenderer;
- public class Hooks
- {
- public static int onColorCodeChosen(char c, boolean shadow)
- {
- switch(c)
- {
- case '0': return 0;
- case '1': return 1;
- case '2': return 2;
- case '3': return 3;
- case '4': return 4;
- case '5': return 5;
- case '6': return 6;
- case '7': return 7;
- case '8': return 8;
- case '9': return 9;
- case 'a': return 10;
- case 'b': return 11;
- case 'c': return 12;
- case 'd': return 13;
- case 'e': return 14;
- case 'f': return 15;
- case 'k': return 16;
- case 'l': return 17;
- case 'm': return 18;
- case 'n': return 19;
- case 'o': return 20;
- case 'r': return 21;
- case 'A': return 10;
- case 'B': return 11;
- case 'C': return 12;
- case 'D': return 13;
- case 'E': return 14;
- case 'F': return 15;
- case 'K': return 16;
- case 'L': return 17;
- case 'M': return 18;
- case 'N': return 19;
- case 'O': return 20;
- case 'R': return 21;
-
- // brown
- case 'g':
- case 'G': setColor(shadow, 0.4f, 0.2f, 0.0f, 0.1f, 0.05f, 0.0f); return 22;
- case 'h':
- case 'H': setColor(shadow, 0.6f, 0.4f, 0.2f, 0.15f, 0.1f, 0.05f); return 22;
-
- // blue
- case 'i':
- case 'I': setColor(shadow, 0.0f, 0.2f, 0.4f, 0.0f, 0.05f, 0.1f); return 22;
- case 'j':
- case 'J': setColor(shadow, 0.0f, 0.4f, 0.6f, 0.0f, 0.1f, 0.15f); return 22;
-
- // green
- case 'p':
- case 'P': setColor(shadow, 0.4f, 0.6f, 0.0f, 0.1f, 0.15f, 0.0f); return 22;
- case 'q':
- case 'Q': setColor(shadow, 0.6f, 0.8f, 0.0f, 0.15f, 0.2f, 0.0f); return 22;
-
- // cyan
- case 's':
- case 'S': setColor(shadow, 0.0f, 0.6f, 1.0f, 0.0f, 0.15f, 0.25f); return 22;
- case 't':
- case 'T': setColor(shadow, 0.4f, 0.8f, 1.0f, 0.1f, 0.2f, 0.25f); return 22;
-
- // red
- case 'u':
- case 'U': setColor(shadow, 0.6f, 0.2f, 0.0f, 0.15f, 0.05f, 0.0f); return 22;
- case 'v':
- case 'V': setColor(shadow, 0.8f, 0.4f, 0.0f, 0.2f, 0.1f, 0.0f); return 22;
-
-
- // violet
- case 'w':
- case 'W': setColor(shadow, 0.4f, 0.0f, 0.4f, 0.1f, 0.0f, 0.1f); return 22;
- case 'x':
- case 'X': setColor(shadow, 0.6f, 0.0f, 0.8f, 0.15f, 0.0f, 0.2f); return 22;
-
- // yellow
- case 'y':
- case 'Y': setColor(shadow, 0.8f, 0.6f, 0.0f, 0.2f, 0.15f, 0.0f); return 22;
- case 'z':
- case 'Z': setColor(shadow, 1.0f, 0.8f, 0.0f, 0.25f, 0.2f, 0.0f); return 22;
- }
- return -1;
- }
-
- private static void setColor(boolean shadow, float r, float g, float b, float dr, float dg, float db)
- {
- if(shadow)
- {
- setColor(dr, dg, db);
- }
- else
- {
- setColor(r, g, b);
- }
- }
-
- private static Method getMethod(Class c, String name, String oName, Class... classes)
- {
- try
- {
- return ReflectionHelper.findMethod(c, name, oName, classes);
- }
- catch(SecurityException | ReflectionHelper.UnableToFindFieldException ex)
- {
- System.out.println(name + " - " + oName + " - " + ex);
- }
- return null;
- }
-
- private static Field getField(Class c, String... field)
- {
- try
- {
- return ReflectionHelper.findField(c, field);
- }
- catch(SecurityException | ReflectionHelper.UnableToFindFieldException ex)
- {
- System.out.println(String.join(" - ", field) + " - " + ex);
- }
- return null;
- }
-
- private final static FontRenderer FONT = Minecraft.getMinecraft().fontRenderer;
- // /home/kajetan/.gradle/caches/minecraft/de/oceanlabs/mcp/mcp_snapshot/20171003/1.12.2/srgs/mcp-srg.srg
- // FD: net/minecraft/client/gui/FontRenderer/alpha net/minecraft/client/gui/FontRenderer/field_78305_q
- private final static Field ALPHA = getField(FontRenderer.class, "field_78305_q", "alpha");
-
- public static float getAlpha()
- {
- try
- {
- return ALPHA.getFloat(FONT);
- }
- catch(SecurityException | IllegalAccessException | IllegalArgumentException ex)
- {
- return 1;
- }
- }
-
- private final static Method SET_COLOR = getMethod(FontRenderer.class, "setColor", null, float.class, float.class, float.class, float.class);
-
- public static void setColor(float r, float g, float b)
- {
- try
- {
- SET_COLOR.invoke(FONT, r, g, b, getAlpha());
- }
- catch(IllegalAccessException | IllegalArgumentException | InvocationTargetException ex)
- {
- ex.printStackTrace();
- }
- }
- }
|