简介

在「我的世界网易版」的联机环境中,服务器常常面临违规昵称、恶意皮肤与刷屏卡服等困扰。

本机器人为服主而生,提供稳定而高效的防护手段,让管理不再被动,让游戏回归纯粹。

它只针对破坏规则的行为出手,从不干扰正常玩家,是公平与秩序的守护者。

所以此页面用来说明玩家自定义插件的教程。

插件所有api


    import cpp_module #第一步需要导入它 所有api都在这个库里面
    cpp_module.sendByte(byte) #向服务器发送原始字节
    cpp_module.sendCommandPacket(str: message) #向服务器发送指令包 权限为控制台
          

不要在插件里面写任何的网络请求和死循环,因为这会导致签名验证失败

在插件里面接收玩家信息需要定义以下函数:


    def process_message(name, message):
    
        #这个函数为有玩家发信息时会调用它
        #此处name为str类型 作用是有新玩家发信息时这个name就是发信息人的名字
        #此处message为str类型 作用是有新玩家发信息时这个message就是信息内容
    
        pass
        
    def process_byte(byte):
    
        #RedirectAllPackets为true后服务器发送的所有数据包都会先调用此函数
        #byte为数据包原始数据
    
        pass
        
    def player_join(name,xuid):
    
        #这个函数为有玩家进入服务器时会调用它
        #此处name为str类型 作用是进服玩家的名字
        #此处xuid为str类型 作用是进服务器玩家的xuid
    
        pass    
    
    def player_exit(name,xuid):
    
        #这个函数为有玩家退出服务器时会调用它
        #此处name为str类型 作用是退出玩家的名字
        #此处xuid为str类型 作用是退出服务器玩家的xuid
    
        pass
    
          

安全原因 目前插件仅开放了这些api

一个必须定义的函数:


    def init():
        data = {
            'RedirectAllPackets' : True, 
            #重定向所有数据包
            #顾名思义 此设置为true会把所有的包交给process_byte,你可以以此分析包的结构
            #否则process_byte将不会被调用
    
    
            'BlockVanillaCommands' : False,
            #关闭原版指令
            #此为true会将机器人的原版指令,如ban admin spawn help关闭
            #但是about和getuser指令不会关闭
    
            'DisableSpamControl' : False,
            #关闭刷屏限制
            #关闭后机器人将不再会检测刷屏限制
    
            'ServerUrl' : 'bot.inr.icu'
            #不需要设置 验证py文件签名 改动会导致签名验证失败
        }
    
        json_str = json.dumps(data)
        return json_str.encode('utf-8')
    
          

此函数必须定义以及返回正确的数据 若不定义/或返回错误的信息会导致插件加载失败

代码示例


    import cpp_module
    import json
          
    def init():
        data = {
            'RedirectAllPackets' : True, 
            'BlockVanillaCommands' : False,
            'DisableSpamControl' : False,
            'ServerUrl' : 'bot.inr.icu'
        }
    
        cpp_module.sendCommandPacket("say 测试插件加载成功")
        json_str = json.dumps(data)
        return json_str.encode('utf-8')  # 强制返回 bytes 类型
    
    def player_join(name,xuid):
        cpp_module.sendCommandPacket("say 欢迎" + name + "加入此服务器,ta的xuid为:"+ xuid+)
        
    def player_exit(name,xuid):
        cpp_module.sendCommandPacket("say 玩家" + name + "退出了此服务器,ta的xuid为:"+ xuid+)
        
    def process_byte(byte):
    
        pass
        
    def process_message(name, message):
        if message==".hello":
            cpp_module.sendCommandPacket("say 你好{name}!")
            pass


      

此插件定义了一个.hello指令 当这个插件被正确加载后有人发送.hello机器人就会发"你好(发送者)"

此插件还定义了两个进服务器/退服务器提醒,当有玩家进/退时会有对应的提示

打包

你做完的插件不能直接被机器人加载,需要把源码发给inyheny进行查毒后才能进行签名,加密。最后才能加载

此操作保证了插件市场的安全性

当你的插件全部审核通过后就可以上架到插件市场了

为了促进插件的数量和质量:全部过程不进行收费

相关链接: 编写插件的智能提示
插件原始格式