Skip to content

Releases: SuperIceCN/BlocklyNukkit

BlocklyNukkitLoader-1.2.9.5

09 Jul 07:11
Compare
Choose a tag to compare

1.2.9.5

Bug Fixed

  • 修复了自定义工具伤害问题
  • 修复js中java包重导入报错
  • 修复胡椒商店兼容性问题
  • 修复不同模块同名函数调用混乱问题

New

  • 注册自定义物品速度加快
  • NPC寻路不再显示路径粒子

blockitem

  • boolean isBlockWaterLogged(Block block) --检测方块是否为含水方块
  • void addSoundFile(String soundName, String fileName) --向材质包添加新的声音文件
  • void addArmorTexture(@comment(value = "物品id") int id
    ,@comment(value = "盔甲物品栏材质图片路径") String inventoryPicturePath
    ,@comment(value = "盔甲穿着时材质图片路径") String modelPicturePath
    ,@comment(value = "4d盔甲模型文件(.json),可不填") String modelJSONPath)
    --为自定义盔甲添加4d模型

BNNPC

  • void start(Player player) --只对某一个玩家启动显示

entity

  • RouteFinder buildRouteFinder(Entity entity) --为实体构建寻路器

manager

  • void concurrentRun(String functionName, <E+>... args) --并行运行函数
  • void jvm.close(int returnCode / void) --强制关闭jvm并返回返回值,可不填,默认为0
  • JMemory jvm.getMemory() --获取jvm内存管理器
  • Class jvm.getJVMClass(String className) --根据类名获取jvm类对象
  • JClass jvm.newJVMClass(@comment(value = "java类名") String className
    ,@comment("继承自的父类类名,可不填") String extendFromClass / void
    ,@comment("实现的接口类名,可不填") String... interfaceClasses / void)
    • 创建新的java类构造器

JClass

  • JClass addConstructor(String modifier, String proxyFunction, String... argumentClasses)
    • 为新java类添加构造函数
    • modifier是构造函数修饰符,如public final等等
    • proxyFunction是对应处理的bn插件函数名,调用时传入构造函数的所有参数,第一个参数永远是类自身,其余为自定义参数
    • argumentClasses是构造函数自定义参数的类名
    • 返回自身,便于链式调用
  • JClass addField(String modifier, String fieldClass, String fieldName, Object defaultValue / void)
    • 为新java类添加字段(又称属性或成员变量)
    • modifier是字段修饰符,如public final等等
    • fieldClass是字段类名
    • fieldName是字段名称,需遵守java规范
    • defaultValue是字段的默认值,可以不填,默认没有默认值而非默认值为null
    • 返回自身,便于链式调用
  • JClass addMethod(String modifier, String returnClass, String methodName, String proxyFunction, String... argumentClasses)
    • 为新java类添加方法(又称成员函数)
    • modifier是方法修饰符,如public final等等
    • returnClass是方法返回值,无返回值填入void即可
    • methodName是方法名称
    • proxyFunction是对应处理的bn插件函数名,调用时传入方法的所有参数,第一个参数永远是类自身,其余为自定义参数
    • argumentClasses是构造函数自定义参数的类名
    • 返回自身,便于链式调用
  • JClass finish()
    • 完成java类构造,此时java类才可以使用,且不可再次更改
    • 返回自身,便于链式调用
  • Object newInstance(Object... args)
    • 实例化自身,即对自身构建的java类进行new
    • 必须在finish之后才能使用!

JMemory

  • long getMax() --获取JVM最大可用内存大小
  • long getFree() --获取JVM剩余内存大小
  • long getTotal() --获取JVM总内存大小
  • void gc() --进行内存清理

RouteFinder

  • Entity getEntity()
  • void setSearchLimit(int searchLimit)
  • int getSearchLimit()
  • void setStart(Vector3 start)
  • Vector3 getStart()
  • void setDestination(Vector3 destination)
  • Vector3 getDestination()
  • void setLevel(Level level)
  • Level getLevel()
  • void setBoundingBox(AxisAlignedBB bb)
  • AxisAlignedBB getBoundingBox()
  • boolean hasNext()
  • Node next()
  • boolean hasReachedNode(Vector3 vec)
  • Node get()
  • void forceStop()
  • void arrived()
  • boolean hasRoute()
  • boolean search()
  • boolean research()
  • boolean isSearching()
  • boolean isSuccess()

BlocklyNukkitLoader-1.2.9.4

12 Jun 00:39
Compare
Choose a tag to compare

1.2.9.4

New

  • Js已经支持for of循环
  • Js中修复了错误的=>实现
  • Js中新增宏注释://pragma optimistic,添加后bn将会为此代码在载入期间激进地进行类型推导以优化运行时性能
  • bnp支持.phpfile后缀名
  • bnp和bnpx可以直接放入plugins文件夹加载
  • 小幅优化性能
  • js中可以直接使用类的全名使用java类,无需进行Java.type或require引入
  • 材质包不会无谓地重复生成

HttpHandler

  • 回调参数中新增getRequestRawUrl函数

BNNPC

  • 优化ai算法,避免npc消失bug

manager

  • addCommandCompleter新增@sub规则,表示一个子命令补全选项
  • @comment(value = "是否运行在PowerNukkit上")
    public boolean isPowerNukkit()

inventory

  • @comment(value = "新建一个漏斗物品栏")
    public HopperFakeInventory addHopperInv(@comment(value = "包含的物品,需要使用Java.to函数转换") Item[] item
    ,@comment(value = "物品栏标题") String name)

blockitem

  • @comment(value = "注册新的简易物品, 允许任意自定义物品")
    public void registerSimpleItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "新物品的类别,可选construction nature equipment items") String type
    ,@comment(value = "是否展示为工具(竖着拿在手里)") boolean isDisplayAsTool
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的工具物品")
    public void registerToolItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "工具种类,可为sword shovel pickaxe axe hoe") String toolType
    ,@comment(value = "工具挖掘等级 0-空手,1-木,2-金,3-石,4-铁,5-钻石,6-下界合金") int toolTier
    ,@comment(value = "工具耐久值") int durability
    ,@comment(value = "攻击伤害") int attackDamage
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的食物物品")
    public void registerFoodItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "提供的饥饿度") int nutrition
    ,@comment(value = "食用持续时间(刻)") int eatTime
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的饮品物品")
    public void registerDrinkItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "提供的饥饿度") int nutrition
    ,@comment(value = "饮用持续时间(刻)") int drinkTime
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的盔甲物品")
    public void registerArmorItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "盔甲种类,可为helmet chest leggings boots") String armorType
    ,@comment(value = "盔甲等级 0-无,1-皮革,2-铁,3-锁链,4-金,5-钻石,6-下界合金") int armorTier
    ,@comment(value = "工具耐久值") int durability
    ,@comment(value = "提供的盔甲值") int armorPoint
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "添加新的盔甲材质")
    public void addArmorTexture(@comment(value = "物品id") int id
    ,@comment(value = "盔甲物品栏材质图片路径") String inventoryPath
    ,@comment(value = "盔甲穿着时材质图片路径") String modelPath)

  • @comment(value = "添加新的物品材质")
    public void addItemTexture(@comment(value = "物品id") int id
    ,@comment(value = "物品材质图片路径") String path)

  • @comment(value = "为指定id物品添加中文翻译名")
    public void addItemChineseTranslation(@comment(value = "物品id") int id
    ,@comment(value = "中文名") String name)

  • @comment(value = "为指定id物品添加英文翻译名")
    public void addItemEnglishTranslation(@comment(value = "物品id") int id
    ,@comment(value = "英文名") String name)

  • @comment(value = "向材质包中指定位置添加json文件")
    public void addResourcePackJsonEntry(@comment(value = "材质包内相对位置,包含路径和文件全名") String entryPath
    ,@comment(value = "json文件内容") String json)

  • @comment(value = "向材质包中指定位置添加图片文件")
    public void addResourcePackPictureEntry(@comment(value = "材质包内相对位置,包含路径和文件全名") String entryPath
    ,@comment(value = "要复制到材质包中的硬盘上的图片路径") String path)

world

  • void defineChunkRenderAll(String callback,int priority / void)
    • 为所有世界添加地形渲染器
    • callback是渲染器回调函数
    • priority是优先级,优先级越大先调用,不填默认为0

entity

  • @comment(value = "构建4d展示模型")
    public BNModel buildModel(@comment(value = "生成模型的位置") Position pos
    ,@comment(value = "模型4d皮肤id") String modelSkinID
    ,@comment(value = "模型长") double length
    ,@comment(value = "模型宽") double width
    ,@comment(value = "模型高") double height
    ,@comment(value = "模型缩放比例") double scale
    ,@comment(value = "定时回调函数") @callbackfunction(classes = {"com.blocklynukkit.loader.other.Entities.BNModel","int"}, parameters = {"model", "tick"}, comments = {"执行此函数的模型实体", "当前实体运行刻"}) String tickCallback
    ,@comment(value = "定时回调函数回调间隔(刻)") int callTick
    ,@comment(value = "被攻击回调函数") @callbackfunction(classes = {"com.blocklynukkit.loader.other.Entities.BNModel","cn.nukkit.event.entity.EntityDamageEvent"}, parameters = {"model", "damageEvent"}, comments = {"执行此函数的模型实体", "实体受到的伤害事件"}) String attackCallback
    ,@comment(value = "实体交互回调函数") @callbackfunction(classes = {"com.blocklynukkit.loader.other.Entities.BNModel","cn.nukkit.Player","cn.nukkit.item.Item","cn.nukkit.math.Vector3"}, parameters = {"model","player","item","clickPos"}, comments = {"执行此函数的模型实体", "发起交互的玩家", "交互使用的物品", "交互点击的位置"}) String interactCallback)

BlocklyNukkitLoader-1.2.9.4-beta-r8

04 Jun 10:31
Compare
Choose a tag to compare
Pre-release

New

  • 小幅优化性能
  • js中可以直接使用类的全名使用java类,无需进行Java.type或require引入

BlockItem

  • @comment(value = "为指定id物品添加中文翻译名")
    public void addItemChineseTranslation(@comment(value = "物品id") int id
    ,@comment(value = "中文名") String name)

  • @comment(value = "为指定id物品添加英文翻译名")
    public void addItemEnglishTranslation(@comment(value = "物品id") int id
    ,@comment(value = "英文名") String name)

BlocklyNukkitLoader-1.2.9.4-beta-r6

02 Jun 14:36
Compare
Choose a tag to compare
Pre-release

New

  • Js已经支持for of循环
  • Js中修复了错误的=>实现
  • bnp支持.phpfile后缀名
  • bnp和bnpx可以直接放入plugins文件夹加载

BNNPC

  • 优化ai算法,避免npc消失bug

manager

  • addCommandCompleter新增@sub规则,表示一个子命令补全选项

blockitem

  • @comment(value = "注册新的简易物品, 允许任意自定义物品")
    public void registerSimpleItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "新物品的类别,可选construction nature equipment items") String type
    ,@comment(value = "是否展示为工具(竖着拿在手里)") boolean isDisplayAsTool
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的工具物品")
    public void registerToolItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "工具种类,可为sword shovel pickaxe axe hoe") String toolType
    ,@comment(value = "工具挖掘等级 0-空手,1-木,2-金,3-石,4-铁,5-钻石,6-下界合金") int toolTier
    ,@comment(value = "工具耐久值") int durability
    ,@comment(value = "攻击伤害") int attackDamage
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的食物物品")
    public void registerFoodItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "提供的饥饿度") int nutrition
    ,@comment(value = "食用持续时间(刻)") int eatTime
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

  • @comment(value = "注册新的饮品物品")
    public void registerDrinkItem(@comment(value = "新物品的id") int id
    ,@comment(value = "新物品的名称") String name
    ,@comment(value = "新物品的最大堆叠上限") int stackSize
    ,@comment(value = "提供的饥饿度") int nutrition
    ,@comment(value = "饮用持续时间(刻)") int drinkTime
    ,@comment(value = "是否可装备在副手") boolean canOnOffhand)

BlocklyNukkitLoader-1.2.9.2

10 Apr 04:04
Compare
Choose a tag to compare

1.2.9.2

Bug Fixed

  • 修复了异步JSON与YAML互转的问题,大幅提升转换速度
  • js中可以使用箭头函数
  • js中可以通过require(java类名/文件名)来调用java类或其他插件
  • 修复了js解析器错误解析字符串中的正则表达式的问题
  • 修复了manager.doPathCreate无法创建文件夹问题
  • 修复了BlackBE合作API错误的问题
  • 修复了PowerNukkit1.4.0.x生物兼容问题
  • NPC有默认皮肤了

Module

  • 通过注释宏:pragma module 模块名定义模块
  • 定义模块后,可以通过模块名来引入其他模块中的导出函数

manager

  • void appendFile(String path,String text)
    • 追加写入文件内容

entity

  • BNNPC buildNPC(Position pos,String name)
  • void displayHurt(Entity e)
  • void displayDie(Entity e)

blockitem

  • void addFishingResult(String type,Item item,double chance)
    • 添加钓鱼产物,type为新增产物种类,item是产物物品,changce是概率权重
    • type可以取TREASURES;宝藏;JUNKS;垃圾;FISHES;鱼类,中英文皆可

algorithm

  • Position buildPosition(double x,double y,double z,Level level)

New Event

  • BNInitializedEvent
    • 在所有bn插件都初始化后发出
    • 无成员函数,无法被取消
  • BNClosedEvent
    • 在bn被nk要求关闭的时候发出
    • 无成员函数,无法被取消
  • StartFishingEvent
    • 在玩家开始钓鱼的时候发出
    • Player getPlayer() -返回钓鱼的玩家
    • EntityFishingHook getFishingHook() -返回钓鱼钩实体
    • void setCancelled(boolean cancel/void) -设置取消事件
    • boolean isCancelled() -事件是否被取消

BNPM

  • 新增了BNPM插件管理器,用于一键安装、更新,快速分发插件
  • 命令:
    • bnpm install 插件名 -安装或更新指定插件
    • bnpm delete 插件名 -卸载指定插件
  • 相关链接:

BlocklyNukkitLoader-1.2.9.2-beta-r5

03 Apr 01:39
Compare
Choose a tag to compare
Pre-release

Bug Fixed

  • 修复了js解析器错误解析字符串中的正则表达式的问题
  • 修复了manager.doPathCreate无法创建文件夹问题
  • 修复了BlackBE合作API错误的问题
  • 修复了PowerNukkit1.4.0.x生物兼容问题

Module

  • 通过注释宏:pragma module 模块名定义模块
  • 定义模块后,可以通过模块名来引入其他模块中的导出函数

manager

  • void appendFile(String path,String text)
    • 追加写入文件内容

BlocklyNukkitLoader-1.2.9.2-beta-r4

31 Mar 14:43
Compare
Choose a tag to compare
Pre-release

New:

  • BNNPC兼容pn1.4.0.0
  • //pragma module xxxx语法宏,可以指定模块引用名,不受文件名影响

BlocklyNukkitLoader-1.2.9.2-beta-r3

27 Mar 03:36
Compare
Choose a tag to compare
Pre-release

Bug Fixed:

  • 修复了默认生成的配置文件去掉了first.js之后的报错

BlocklyNukkitLoader-1.2.9.2-beta-r2

20 Mar 00:14
Compare
Choose a tag to compare
Pre-release

Bug Fixed

  • js中可以使用箭头函数
  • js中可以通过require(java类名/文件名)来调用java类或其他插件

New Event

  • BNInitializedEvent
    • 在所有bn插件都初始化后发出
    • 无成员函数,无法被取消
  • BNClosedEvent
    • 在bn被nk要求关闭的时候发出
    • 无成员函数,无法被取消

BlocklyNukkitLoader-1.2.9.2-beta-r1

14 Mar 14:47
Compare
Choose a tag to compare
Pre-release

Bug Fixed

  • 修复了异步JSON与YAML互转的问题,大幅提升转换速度