文档章节

Minecraft Fabric Client 教程 #5 添加Event、Sprint和ToggleCommand

Enaium
 Enaium
发布于 02/22 11:19
字数 362
阅读 192
收藏 0

首发于Enaium的个人博客


添加Event

下载 点我下载event.zip

放在cn.enaium.excel

然后在Excel.java里面添加EventManager

public enum Excel {
    
    [...]
    public EventManager eventManager;

    public void onEnable() {
        eventManager = new EventManager();
        commandManager = new CommandManager();
        moduleManager = new ModuleManager();

        moduleManager.loadModules();
    }
    [...]

}


Module.java里面添加EventonEnable()onDisable()Toggle()


public class Module {
    
    [...]

    public void Toggle() {
        this.toggled = !this.toggled;
        if (this.toggled) {
            onEnable();
        } else {
            onDisable();
        }
    }

    public void onEnable() {
        Excel.INSTANCE.eventManager.register(this);
    }

    public void onDisable() {
        Excel.INSTANCE.eventManager.unregister(this);
    }

}


注入Mixin

ClientPlayerEntityMixin.java 里面添加以下内容

@Mixin(ClientPlayerEntity.class)
public class ClientPlayerEntityMixin {

    [...]

    @Inject(method = "tick", at = @At("HEAD"))
    private void preTick(CallbackInfo callbackInfo) {
        new EventUpdate().call();
    }
}

添加Sprint

cn.enaium.excel.module里面新建一个modules.movement

movement包里面新建Sprint

内容

package cn.enaium.excel.module.modules.movement;

import cn.enaium.excel.event.EventTarget;
import cn.enaium.excel.module.Category;
import cn.enaium.excel.module.Module;
import net.minecraft.client.MinecraftClient;

/**
 * @Author Enaium
 * @Date 2020/1/20 13:46
 */
public class Sprint extends Module {
    public Sprint() {
        super("Sprint", Category.MOVEMENT);
    }

    @EventTarget
    public void onUpdate(EventUpdate e) {
        MinecraftClient.getInstance().player.setSprinting(true);
    }
}

然后添加到ModuleManager.java里面

public class ModuleManager {
    [...]

    public void loadModules() {
        addModule(new Sprint());
    }
}

添加ToggleCommand

ModuleManager.java里面添加getModules()

public class ModuleManager {
    ArrayList<Module> modules;

    [...]

    public Module getModule(String name) {
        for (Module m : modules) {
            if (m.getName().equalsIgnoreCase(name))
                return m;
        }
        return null;
    }
}


cn.enaium.excel.command.commands包里面新建ToggleCommand

内容


package cn.enaium.excel.command.commands;

import cn.enaium.excel.Excel;
import cn.enaium.excel.command.Command;
import cn.enaium.excel.module.Module;
import cn.enaium.excel.utils.ChatUtils;

public class ToggleCommand implements Command {

    @Override
    public boolean run(String[] args) {

        if (args.length == 2) {

            Module module = Excel.INSTANCE.moduleManager.getModule(args[1]);

            if (module == null) {
                ChatUtils.message("The module with the name " + args[1] + " does not exist.");
                return true;
            }

            module.Toggle();

            return true;
        }


        return false;
    }

    @Override
    public String usage() {
        return "USAGE: -toggle [module]";
    }
}


然后添加到CommandManager.java里面


public class CommandManager {
    [...]
        public void loadCommands() {
        [...]
        commands.put(new String[]{"toggle","t"},new ToggleCommand());
    }
    [...]
}

完成!

© 著作权归作者所有

Enaium
粉丝 0
博文 28
码字总数 7550
作品 0
渭南
私信 提问
加载中

评论(0)

Fabric go sdk开发入门

fabric go sdk是Hyperledger Fabric官方提供的Go语言开发包,应用程序可以利用fabric go sdk与fabric网络进行交互并访问链码。本教程介绍如何使用fabric go sdk实现链码的安装、实例化、交易...

ezpod
03/19
0
0
Hyperledger Fabric Node.js如何使用基于通道的事件服务

本教程说明了基于通道的事件的使用。这些事件与现有事件类似,但是特定于单个通道。在设置侦听器时,客户端处理基于通道的事件有一些新选项。从v1.1开始,基于通道的事件是Hyperledger Fabri...

geek12345
2019/04/22
210
0
fabric node api 1.4简明教程

fabric-sdk-node最新版本为1.4,本文将介绍如何使用最新版本的fabric node sdk开发node.js应用,以实现与fabric区块链的交互,例如查询链码状态,或者提交链码交易。 本文分五个部分来介绍n...

汇智网教程
2019/04/27
36
0
Fabric node sdk 1.4简明教程

hyperledger fabric的node sdk最新版本为1.4,本文将介绍如何使用最新版本的fabric node sdk开发node.js应用,以实现与fabric区块链的交互,例如查询链码状态,或者提交链码交易。 本文分五个...

geek12345
2019/04/29
122
0
Fabric 2.0区块链开发环境安装

本文介绍如何安装最新的Hyperledger Fabric 2.0的预编译程序、fabric-samples示例配置和代码以及docker镜像。 Hyperledger Fabric区块链开发教程: Fabric区块链Node.js开发详解 Fabric区块链...

ezpod
02/25
0
0

没有更多内容

加载失败,请刷新页面

加载更多

大刘海终于收窄?iPhone 12系列设计细节曝光:三摄+雷达更占空间

苹果第一次给屏幕加上刘海,是在2017年的iPhone X。此后,尽管安卓阵营已经先后发展出了水滴屏、升降屏、打孔屏等形态各异的更高屏占比的设计方案,苹果一直将宽大的刘海保留在其后iPhone XS...

osc_p0v6j6lt
刚刚
0
0
爆单也没能救它 瑞幸咖啡股价一度下跌20%再创新低

瑞幸咖啡(NASDAQ:LK)股价周一继续下挫,跌破上周四曝光营收造假的低点4.90美元,一度报4.27美元,下跌超20%,市值不足11亿美元。这一价格也创造了瑞幸上市后的历史最低。 据报道,高盛称,瑞...

osc_6kj0kt57
1分钟前
0
0
疫情蔓延放缓 早盘美股道指大涨逾千点

北京时间6日晚,美股周一早盘继续上扬,道指大涨逾千点。投资者对全球疫情蔓延局势的判断有所改善,风险情绪随之受到提振。美国总统特朗普称迹象显示美国疫情已开始趋于稳定,并表示他仍在考...

osc_jo2m8l1r
3分钟前
0
0
4.3万元!赛博朋克2077定制版NIVIDIA显卡成功卖出

虽然《赛博朋克2077》游戏跳票了,但是2月份NVIDIA依然推出了一款赛博朋克限量版显卡——GeForce RTX 2080 Ti“ Cyberpunk 2077 Edition”,全球限量200块,官方售价1100美元。 访问购买页面...

osc_9mctux05
4分钟前
0
0
高盛:瑞幸咖啡股东发生违约 7635万股ADS强制出售

据国外媒体报道,高盛今日发布报告称,在瑞幸咖啡股东Haode Investment公司(借款人)发生违约之后,根据一项5.18亿美元的保证金贷款安排,贷款人组成的银团已指示作为担保受托人的瑞士信贷新...

osc_t6qz550e
5分钟前
7
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部