Releases: SuperIceCN/BlocklyNukkit
BlocklyNukkitLoader-1.2.9.5
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
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
New
- 小幅优化性能
- js中可以直接使用类的全名使用java类,无需进行Java.type或require引入
BlockItem
BlocklyNukkitLoader-1.2.9.4-beta-r6
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
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
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
New:
- BNNPC兼容pn1.4.0.0
- //pragma module xxxx语法宏,可以指定模块引用名,不受文件名影响
BlocklyNukkitLoader-1.2.9.2-beta-r3
Bug Fixed:
- 修复了默认生成的配置文件去掉了first.js之后的报错
BlocklyNukkitLoader-1.2.9.2-beta-r2
Bug Fixed
- js中可以使用箭头函数
- js中可以通过require(java类名/文件名)来调用java类或其他插件
New Event
- BNInitializedEvent
- 在所有bn插件都初始化后发出
- 无成员函数,无法被取消
- BNClosedEvent
- 在bn被nk要求关闭的时候发出
- 无成员函数,无法被取消
BlocklyNukkitLoader-1.2.9.2-beta-r1
Bug Fixed
- 修复了异步JSON与YAML互转的问题,大幅提升转换速度