跳到正文

PxIgnis

作者:PyXiion

A Lua framework for Minecraft Fabric servers with instant hot reload. Define chat commands, events, and server logic in Lua, no Java/Kotlin required using API made for humans.

收藏

介绍

中文介绍正在准备中,下面暂时显示原文。

A Lua runtime for Fabric servers, with hot-reload. Edit scripts in config/ignis/,
run /ignis reload, and changes apply instantly.

Full documentation at ignis.pyxiion.ru.


About

PxIgnis is developed in tandem with a fully Vanilla custom Roguelike server. The API
reflects what the project itself needed.


Key Features

  • Hot-reload Lua runtime — /ignis reload re-runs scripts in milliseconds. Commands are re-registered into the live Brigadier dispatcher without restarting the server.
  • Command registration — register("cmd <name:type> [<name:type>]", handler, permission?). Built-in argument types: int, double, float, bool, text, word, player, block_pos, choice=.... Tab completion and permissions (admin.cmd) are part of the API.
  • Events, with cancellation — 15+ hooks: player_block_break, player_chat, player_attack_entity, entity_hurt, entity_death, and more. Returning false cancels.
  • Regions and scripted mob AI — spatial areas with enter/exit/move/death events, and API for custom mob AI.
  • Coroutines, persistence, UI — mc.fetch / mc.sleep for sequential async code, player.data / mc.data / storage backends for persistent state, plus holograms, sidebars, and the chestgui library for custom containers.

And more, and more.


Examples

1. Region + async

local arena = world:createRegion(vec(-50, 64, -50), vec(50, 80, 50))

arena:on("entity_enter", function(entity)
    if entity:isPlayer() then
        mc.broadcast(entity.name .. " entered the arena")
        
        coroutine.wrap(function()
            local res = mc.fetch("https://api.example.com/arena/log")
            if not res.ok then
                mc.broadcast("log failed: " .. res.error, true)
            end
        end)()
    end
end)

2. Mob AI

--# nova syntax
-- enabling cool custom syntax for trailing lambdas (just like Kotlin)
mc.registerBehaviour("zombie_chase") \{ self, mob ->
    local p = mc.players[1]
    if p then
        local pos = p.pos
        mob:navigateTo(pos.x, pos.y, pos.z, 1.0)
    end
}

mc.on("entity_spawn", function(entity)
    if entity:isMob() and entity.type == "minecraft:zombie" then
        entity:setAI("zombie_chase")
    end
end)

3. Command with permission

register("pay <amount:int> <target:player>", function(ctx, amount, target)
    ctx.player.data.balance = (ctx.player.data.balance or 0) - amount
    target.data.balance     = (target.data.balance or 0) + amount
    
    target:sendMessage("Received " .. amount .. " from " .. ctx.player.name)
end, "pxrp.economy")

Installation & Requirements

  1. Install Fabric Loader ≥0.19.2, Fabric API ≥0.141.4+1.21.11, and Fabric Language Kotlin ≥1.10.8.
  2. Place pxignis-*.jar into the mods/ folder of your server.
  3. Start the server. config/ignis/demo.lua is created on first boot.
  4. Edit scripts under config/ignis/, then run /ignis reload.

License

GNU Lesser General Public License v3.0

常见问题

PxIgnis 支持哪些 Minecraft 版本?

PxIgnis 支持 Minecraft Java 版 1.21.10–1.21.11,共 2 个版本,可用的加载器:Fabric。下载时注意选择和你游戏版本一致的文件。

PxIgnis 怎么安装?

先用 PCL2 或 HMCL 启动器安装对应版本的 Fabric,再把下载的 .jar 文件放进游戏目录的 mods 文件夹,重新启动游戏即可。开启了版本隔离的,mods 文件夹在 versions/版本名 下面。运行环境:客户端和服务端都要装。

评论

登录后评论和评分

PyXiion 的其他作品

查看全部 →