[全民写端]#10绘制ToggleModules

简介: 找到renderGameOverlay这个类

首发于Enaium的个人博客


一.添加EventRender2D

public class EventRender2D extends Event {
   
   
    public EventRender2D()  {
   
   
        super(Type.PRE);
    }
}

二.钩子

  1. 搜索GuiIngame这个类打开

    10-1

  2. 找到renderGameOverlay这个类
  3. if (this.mc.playerController.isSpectator()){[...]}else{[...]}后面添加
    GlStateManager.pushMatrix();
    new EventRender2D().call();
    GlStateManager.popMatrix();
    

三. 绘制HUD

  1. 新建HUD类
package cn.enaium.coreium.module.render;

import cn.enaium.coreium.event.EventTarget;
import cn.enaium.coreium.event.events.EventRender2D;
import cn.enaium.coreium.module.Category;
import cn.enaium.coreium.module.Module;
import org.lwjgl.input.Keyboard;

public class HUD extends Module {
   
   
    public HUD() {
   
   
        super("HUD", Keyboard.KEY_P, Category.RENDER);
    }

    @EventTarget
    public void onRender(EventRender2D e) {
   
   

    }
}
  1. 在onRender方法里面写绘制
  2. 添加到loadModsthis.addModule(new HUD());
        //字体
        FontRenderer fr = mc.fontRendererObj;
        //获取屏幕长和高
        ScaledResolution sr = new ScaledResolution(mc);
        ArrayList<Module> modules = new ArrayList();
        for (Module m : Coreium.INSTANCE.moduleManager.getModules()) {
   
   
            //过滤没打开的Module
            if (m.isToggle())
                modules.add(m);
        }
        //根据Module名长度从长到短排序
        modules.sort((o1, o2) -> fr.getStringWidth(o2.getName()) - fr.getStringWidth(o1.getName()));
        //第一个显示的位置
        int index = 0;

        for (Module m : modules) {
   
   
            //获取当前要绘制的字体长度
            int mWidth = fr.getStringWidth(m.getName());
            //绘制字体
            fr.drawStringWithShadow(m.getName(), sr.getScaledWidth() - mWidth - 2, index, new Color(0, 16, 255).getRGB());
            //每绘制一个Module下一个Module的高度增加12
            index += 12;
        }

完成
10-2

目录
相关文章
|
关系型数据库 MySQL 数据库
【MySQL】:超详细MySQL完整安装和配置教程
【MySQL】:超详细MySQL完整安装和配置教程
41486 5
|
存储 前端开发 JavaScript
渗透实战:某文库网站XSS盲打
渗透实战:某文库网站XSS盲打
224 0
|
9天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1197 4
|
8天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1125 87
|
6天前
|
机器学习/深度学习 物联网
Wan2.2再次开源数字人:Animate-14B!一键实现电影角色替换和动作驱动
今天,通义万相的视频生成模型又又又开源了!Wan2.2系列模型家族新增数字人成员Wan2.2-Animate-14B。
577 11
|
18天前
|
人工智能 运维 安全
|
8天前
|
云栖大会
阿里云云栖大会2025年9月24日开启,免费申请大会门票,速度领取~
2025云栖大会将于9月24-26日举行,官网免费预约畅享票,审核后短信通知,持证件入场
1694 12
|
1天前
|
资源调度
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
除了nrm-pm,还有哪些工具可以管理多个包管理器的源?
212 127

热门文章

最新文章