ClientReflectionUtils.java 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637
  1. package me.km.utils;
  2. import java.lang.reflect.Field;
  3. import java.lang.reflect.Method;
  4. import java.util.Map;
  5. import static me.km.utils.ReflectionUtils.getField;
  6. import static me.km.utils.ReflectionUtils.getMethod;
  7. import net.minecraft.client.Minecraft;
  8. import net.minecraft.client.gui.overlay.BossOverlayGui;
  9. import net.minecraft.client.renderer.entity.EntityRenderer;
  10. import net.minecraft.entity.Entity;
  11. import net.minecraftforge.api.distmarker.Dist;
  12. import net.minecraftforge.api.distmarker.OnlyIn;
  13. import org.apache.logging.log4j.LogManager;
  14. @OnlyIn(Dist.CLIENT)
  15. public class ClientReflectionUtils {
  16. private final static Method CAN_RENDER_NAME =
  17. getMethod(EntityRenderer.class, "func_177070_b", Entity.class);
  18. public static boolean canRenderName(EntityRenderer<?> lr, Entity liv) {
  19. try {
  20. return (boolean) CAN_RENDER_NAME.invoke(lr, liv);
  21. } catch(Exception ex) {
  22. LogManager.getLogger().warn("canRenderName - " + ex);
  23. return false;
  24. }
  25. }
  26. private final static Field BOSS_BAR_MAP = getField(BossOverlayGui.class, "field_184060_g");
  27. public static boolean isRenderingBossBar() {
  28. Minecraft mc = Minecraft.getInstance();
  29. return !ReflectionUtils.getFieldValue(Map.class, mc.gui.getBossOverlay(), BOSS_BAR_MAP)
  30. .isEmpty();
  31. }
  32. }