日志 & 聊天
me.log(Object msg) // [scriptName] msg 前缀
me.warn(Object msg)
me.subChat(Object msg) // 显示 > 开头的消息
me.chat(Object msg) // 发送聊天信息
me.clientCommand(String msg) // 执行客户端命令需要.开头
me.baritoneCommand(String msg) // 执行Baritone命令需要#开头
玩家 / 世界
LocalPlayer me.getPlayer()
World me.getWorld()
String me.getServer()
String me.getUsername()
boolean me.isSingleplayer()
boolean me.isMoving()
int me.getFPS()
int[] me.getDisplaySize() // { width, height }
List<String> me.getResourcePacks()
Entity me.getKillAuraTarget()
本模块属性读写
boolean me.getBool(String key)
int me.getInt(String key)
double me.getNumber(String key)
String me.getString(String key)
void me.setBool(String, boolean)
void me.setInt(String, int)
void me.setNumber(String, double)
void me.setString(String, String)
运动 & 旋转
double[] me.getMovementDelta() // { x, y, z }
void me.setMovementDelta(double x, double y, double z)
float[] me.getRotation() // { yaw, pitch }
float[] me.getRotation(double x, double y, double z) // 到世界点
float[] me.getRotationsToBlock(int x, int y, int z)
float[] me.getRotationsToEntity(Entity entity)
void me.setRotation(float yaw, float pitch, float speed, boolean moveFix)
setRotation(moveFix=true) 必须在 player_update 事件里调,才能正确配对下一帧的 motion 包。
void me.attack(Entity target)
void me.command(String cmdOrMessage) // "/" 开头作为命令
void me.dropItem(int slot)
void me.swapItem(int invSlot, int hotbarSlot)
void me.shiftClick(int slot)
boolean me.placeBlock(int x, int y, int z, String face, String hand)
Raytrace
Hit me.raycast(double range) // 实体 + 方块
Hit me.raycastBlock(double range) // 仅方块
Entity me.raycastEntity(double range) // 仅实体
Target 验证
boolean me.isValidTarget(Entity e, double range, float angle, boolean checkTeam)
boolean me.isValidTarget(Entity e, double range, float angle, float expand,
boolean checkTeam, boolean players, boolean mobs, boolean invis)
事件派发
void me.post(String name)
void me.post(String name, String k, Object v)
void me.post(String name, String k1, Object v1, String k2, Object v2)
void me.post(Event event)
Event me.newEvent(String name)
Map me.callEvent(String name, Map params)
Screen
boolean me.registerScreen(String name)
void me.openScreen(String name)
void me.closeScreen()
boolean me.unregisterScreen(String name)
void me.async(String methodName) // 后台线程跑本脚本方法
逃生舱
Unsafe me.unsafe() // 反射访问 MC 原生对象
返回的是Unsafe对象,反射访问工具套装。