Skip to content

实验性: mcx 语法

mcx可以让你的mcbe行为包不需要复杂的物品、配方等的JSON,还能让你的事件注册不需要繁琐的操作原生和背方法名。
先看效果

mbler.config.json 里面的 script.main 设为 index.js (可选),然后在bp的ascripts文件夹里面 index.js

javascript
import App from "./app.mcx";
import * as Server from "@minecraft/server";
import * as ScriptUi from "@minecraft/server-ui";
import { createApp } from "@mbler/mcx";
createApp(App).mout(SErver, ScriptUi);

app.mcx

mcx
<script>
  import Event from "./event.mcx";
  import Component from "./component.mcx";
  // 由于是要编译成静态json的,是个宏,所以不能重复调用
  Component.use();
  // 整个事件里面的事件全部注册,也可以用unsubscibe全部取消,也可以传入对应事件名称操作指定事件
  Event.subscibe();

event.mcx

mcx
<Event @after>
  PlayerJoin=eventHandler
</Event>
<script>
  exports.PlayerJoin = function(event) {
    event.player.sendMessage("欢迎进入游戏")
  }
</script>

component.mcx

mcx
<Component>
  <items> <!--注册物品-->
    <item id=test>subscribe</item>
  </items>
</Component>
<script>
  import {
    ItemComponent
  } from "@mbler/mcx"
  export.subscribe = new ItemComponent({
    id: "mbler_test:test",
    opt: {
      stacked_by_data: true,
      max_stack_size: true,
      display_name: "测试物品",
      allow_off_hand: true,
      hand_equipped: true,
      foil: true,
      glint: true
    }
  })
</script>

这是一个示例mcx项目,当然还未实现mcx,欢迎代码贡献(mcx在mbler源码目录 lib/mcx