No description
  • Java 62.2%
  • Kotlin 19.9%
  • Lua 14.7%
  • MDX 1.9%
  • CSS 0.6%
  • Other 0.5%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-09-28 15:34:08 +03:00
.github/workflows Merge pull request #26 from PyXiion/claude/project-thread-xm0oph 2026-09-28 15:34:08 +03:00
agent_docs Event tables with priorities, fail-closed cancellation; dev tools 2026-09-28 11:00:31 +00:00
docs Event tables with priorities, fail-closed cancellation; dev tools 2026-09-28 11:00:31 +00:00
gradle/wrapper Init comit 2026-05-22 15:46:57 +03:00
lua-types lua-types: fix overloads and definitions LuaLS could not use 2026-09-28 15:23:25 +03:00
pxluanova pxluanova: LuaTransfer for copying values between Lua states 2026-09-28 10:32:02 +00:00
site Tutorial: build an arena minigame in nine chapters 2026-09-28 15:23:25 +03:00
src Script permissions: operators pass when no permissions mod decides 2026-09-28 15:23:25 +03:00
.gitignore Embed PxLuaNova as pxluanova/ composite build subproject 2026-06-13 01:01:24 +03:00
AGENTS.md Tutorial: build an arena minigame in nine chapters 2026-09-28 15:23:25 +03:00
build.gradle Event tables with priorities, fail-closed cancellation; dev tools 2026-09-28 11:00:31 +00:00
gradle.properties release: 0.17.1 - CI and bootstrap fixes 2026-08-01 14:51:27 +03:00
gradlew Init comit 2026-05-22 15:46:57 +03:00
gradlew.bat Init comit 2026-05-22 15:46:57 +03:00
LICENSE.txt Add README & license 2026-05-22 15:56:42 +03:00
log4j-dev.xml mc.task/mc.run for parallel tasks in Lua, a fea easter eggs 2026-06-28 01:56:38 +03:00
MODRINTH.md Event tables with priorities, fail-closed cancellation; dev tools 2026-09-28 11:00:31 +00:00
README.md Event tables with priorities, fail-closed cancellation; dev tools 2026-09-28 11:00:31 +00:00
settings.gradle Embed PxLuaNova as pxluanova/ composite build subproject 2026-06-13 01:01:24 +03:00

PxIgnis

version version version

Lua scripting for Minecraft Fabric servers.

This project is developed with the assistance of AI. Humans were harmed (and included) during development too.

Full Docs · Полная документация · Quick start · Changelog


Examples

-- config/ignis/greet.lua
register("greet <name:text>", function(ctx, name)
    ctx.player:sendMessage("Hello, " .. name .. "!")
end)
mc.on("player.join", function(e)
    local data = e.player.data
    data.joins = (data.joins or 0) + 1
    e.player:sendMessage("Welcome back! (#" .. data.joins .. ")")
end)
mc.on("block.break", function(e)
    if e.block == "minecraft:diamond_ore" then
        e.player:sendTitle({ title = "Lucky!" })
        e.player.world:particle("minecraft:totem_of_undying", e.pos)
    end
end)
-- config/ignis/shop.lua
local chestgui = require "chestgui"

register("shop", function(ctx)
    if not ctx.player:hasPermission("px.ignis.shop") then
        ctx.player:sendMessage("No permission.")
        return
    end

    ctx.player.sidebar = {
        title = "Shop",
        lines = { "1. Diamonds", "2. Emeralds" },
    }

    local gui = chestgui.create(3, "Shop")
    gui:fill(mc.createItem("gray_stained_glass_pane"))
    gui:set(2, 3, mc.createItem("diamond", 1), function(player, slot, clickType, slotItem, cursorItem)
        player:sendMessage("You bought a diamond!")
    end)
    gui:set(2, 4, mc.createItem("emerald", 1), function(player, slot, clickType, slotItem, cursorItem)
        player:sendMessage("You bought an emerald!")
    end)
    gui:open(ctx.player)
end, "px.ignis.shop")

What's inside

Area What you get
Commands Brigadier with tab completion, permissions, and types (text, word, player, int, bool, block_pos, choice=...)
Events Players, entities, blocks, items, server lifecycle
Reload /ignis reload re-executes all scripts; persistent state via mc.data / player.data
MC API Particles, sounds, blocks, entities, NBT, structures, weather, world border, explosions
UI Per-player sidebar, chest GUI lib, boss bars, holograms, titles
Async require "async": async.fetch() for HTTP, async.sleep() for delays, tasks on the server thread or a thread pool
Storage Per-player and global JSON-backed key-value tables
Dev tools LuaLS types for IntelliSense, mc.dump(), metatable extension hooks

Install

Minecraft 1.21.x · Fabric Loader ≥0.19.2 · Fabric API ≥0.141.4 · Fabric Language Kotlin ≥1.10.8

  1. Drop the mod into mods/.
  2. Start the server — config/ignis/demo.lua is created.
  3. Edit scripts, run /ignis reload (OP-4 or px.ignis).

License

GNU Lesser General Public License v3.0. See LICENSE.txt.