123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384 |
- package me.km.utils;
- import java.lang.reflect.Field;
- import java.lang.reflect.Method;
- import java.util.Map;
- import me.km.overrides.ModFluidBlockRenderer;
- import me.km.overrides.ModPlayerRenderer;
- import static me.km.utils.ReflectionUtils.getField;
- import static me.km.utils.ReflectionUtils.getMethod;
- import net.minecraft.client.Minecraft;
- import net.minecraft.client.gui.overlay.BossOverlayGui;
- import net.minecraft.client.renderer.BlockRendererDispatcher;
- import net.minecraft.client.renderer.entity.EntityRenderer;
- import net.minecraft.client.renderer.entity.EntityRendererManager;
- import net.minecraft.client.renderer.entity.LivingRenderer;
- import net.minecraft.client.renderer.entity.PlayerRenderer;
- import net.minecraft.entity.Entity;
- import net.minecraft.entity.LivingEntity;
- import net.minecraftforge.api.distmarker.Dist;
- import net.minecraftforge.api.distmarker.OnlyIn;
- import org.apache.logging.log4j.LogManager;
- @OnlyIn(Dist.CLIENT)
- public class ClientReflectionUtils
- {
- private final static Method CAN_RENDER_NAME = getMethod(EntityRenderer.class, "func_177070_b", Entity.class);
- private final static Method RENDER_ENTITY_NAME = getMethod(EntityRenderer.class, "func_188296_a", Entity.class, double.class, double.class, double.class, String.class, double.class);
-
- public static boolean canRenderName(EntityRenderer lr, Entity liv)
- {
- try
- {
- return (boolean) CAN_RENDER_NAME.invoke(lr, liv);
- }
- catch(Exception ex)
- {
- LogManager.getLogger().warn("canRenderName - " + ex);
- return false;
- }
- }
-
- public static void renderEntityName(LivingRenderer lr, LivingEntity liv, double x, double y, double z, String name, double distanceSq)
- {
- try
- {
- RENDER_ENTITY_NAME.invoke(lr, liv, x, y, z, name, distanceSq);
- }
- catch(Exception ex)
- {
- LogManager.getLogger().warn("renderEntityName - " + ex);
- }
- }
-
- private final static Field BOSS_BAR_MAP = getField(BossOverlayGui.class, "field_184060_g");
- public static boolean isRenderingBossBar()
- {
- return !ReflectionUtils.getFieldValue(Map.class, Minecraft.getInstance().ingameGUI.getBossOverlay(), BOSS_BAR_MAP).isEmpty();
- }
-
- private final static Field SKIN_MAP = getField(EntityRendererManager.class, "field_178636_l"); // skinMap
- private final static Field PLAYER_RENDERER = getField(EntityRendererManager.class, "field_178637_m"); // playerRenderer
-
- public static void updatePlayerRenderer()
- {
- EntityRendererManager erm = Minecraft.getInstance().getRenderManager();
- ModPlayerRenderer normal = new ModPlayerRenderer(erm, false);
- ModPlayerRenderer slim = new ModPlayerRenderer(erm, true);
-
- ReflectionUtils.setFieldValue(erm, PLAYER_RENDERER, normal);
- Map<String, PlayerRenderer> map =
- ReflectionUtils.getFieldValue(Map.class, erm, SKIN_MAP);
- map.put("default", normal);
- map.put("slim", slim);
- }
-
- private final static Field FLUID_RENDERER = getField(BlockRendererDispatcher.class, "field_175025_e"); // fluidRenderer
-
- public static void updateFluidRenderer()
- {
- ModFluidBlockRenderer mfbr = new ModFluidBlockRenderer();
- ReflectionUtils.setFieldValue(Minecraft.getInstance().getBlockRendererDispatcher(), FLUID_RENDERER, mfbr);
- }
- }
|