mirror of
https://github.com/clusterio/clusterio.git
synced 2026-11-12 07:04:52 +09:00
55 lines
1.8 KiB
Lua
55 lines
1.8 KiB
Lua
local clusterio_api = require("modules/clusterio/api")
|
|
|
|
--- Top level module table, contains event handlers and public methods
|
|
local MyModule = {
|
|
events = {},
|
|
on_nth_tick = {},
|
|
}
|
|
|
|
--- global is 'synced' between players, you should use your plugin name to avoid conflicts
|
|
-- setupGlobalData should either be removed or called during clusterio_api.events.on_server_startup
|
|
local globalData = {}
|
|
local function setupGlobalData()
|
|
if global["__plugin_name__"] == nil then
|
|
global["__plugin_name__"] = {
|
|
-- starting values go here
|
|
}
|
|
end
|
|
globalData = global["__plugin_name__"]
|
|
end
|
|
|
|
--- Public methods should be available though your top level module table
|
|
function MyModule.foo()
|
|
game.print("foo")
|
|
end
|
|
|
|
--- Private methods should be local to the file, this will prevent others from calling it
|
|
local function bar()
|
|
game.print("bar")
|
|
end
|
|
|
|
--- Clusterio provides a few custom events, on_server_startup is the most useful and should be used in place of on_load
|
|
MyModule.events[clusterio_api.events.on_server_startup] = function(event)
|
|
setupGlobalData()
|
|
game.print(game.table_to_json(event))
|
|
end
|
|
|
|
--- Factorio events are accessible through defines.events, you can have one handler per event per module
|
|
MyModule.events[defines.events.on_player_crafted_item] = function(event)
|
|
game.print(game.table_to_json(event))
|
|
//%if instance
|
|
clusterio_api.send_json("__plugin_name__-plugin_example_ipc", {
|
|
tick = game.tick, player_name = game.get_player(event.player_index).name
|
|
})
|
|
//%endif
|
|
end
|
|
|
|
--- Nth tick is a special case that requires its own table, the index represents the time period between calls in ticks
|
|
MyModule.on_nth_tick[300] = function()
|
|
game.print(game.tick)
|
|
bar()
|
|
end
|
|
|
|
--- Always return the top level module table from control, this is how clusterio will access your event handlers
|
|
return MyModule
|