OpenMiner/docs/lua-api-overview.md

4.6 KiB

Lua API: Overview

Lua API

Note: The Lua API is currently server-side only.

Core API

openminer:registry()

This function returns the Registry instance of the server.

openminer:add_listener(event_type, listener)

Adds a listener to a specific type of event.

Example:

openminer:add_listener(EventType.OnBlockPlaced, function(pos, player, world, client, server)
	server:send_chat_message(0, "Block placed at " .. pos.x .. ";" .. pos.y .. ";" .. pos.z .. " by Client" .. player:client_id(), client);
end)

openminer:add_listener(EventType.OnBlockActivated, function(pos, block, player, world, client, server)
	if block:string_id() == "default:portal" then
		server:send_chat_message(0, "Swoosh! Changing dimension...", client);
	end
end)

Possible events:

  • OnBlockPlaced: funcion(pos, player, world, client, server)
  • OnBlockActivated: function(pos, block, player, world, client, server)

Mod API

Here is an example:

local mod = LuaMod.new("mymod")

mod:block {
	id = "myblock",
	name = "My Block",
	tiles = "myblock.png",
}

mod:item {
	id = "myitem",
	name = "My Item",
	tiles = "myitem.png",
}

mod:crafting_recipe {
	result = {
		id = "mymod:myblock",
		amount = 1
	},

	pattern = {
		"###",
		"# #",
		"###"
	},

	keys = {["#"] = "default:cobblestone"}
}

mod:smelting_recipe {
	input = {id = "mymod:myitem", amount = 1},
	output = {id = "mymod:myblock", amount = 1}
}

Custom GUI

You can create a new GUI with:

local gui = LuaGUI.new()

To show the custom GUI use:

gui:show(client)

Button

gui:button {
	name = "btn_test",
	pos = {x = 0, y = 0},

	text = "Test button",
	on_click = function(self)
		print("Test button pressed")
	end,
}

Inventory

gui:inventory {
	name = "inv_main",
	pos = {x = gui_pos.x + 7, y = gui_pos.y + 83},

	player = "player",
	inventory = "main",
	size = {x = 9, y = 3},
	offset = 9,
	count = 9 * 3,
}

Crafting table

gui:crafting {
	name = "inv_crafting",
	pos = {x = gui_pos.x, y = gui_pos.y},

	block = {x = pos.x, y = pos.y, z = pos.z},

	offset = 0,
}

Image

gui:image {
	name = "img_background",
	pos = gui_pos,

	texture = "texture-workbench",
	clip = {x = 0, y = 0, width = 176, height = 166},
}

C++ classes in Lua

Registry

  • Block get_block(u16 id)
  • Item get_item(u16 id)
  • Sky get_sky(u16 id)
  • Tree get_tree(u16 id)
  • Biome get_biome(u16 id)
  • Recipe get_recipe(Inventory crafting_inventory)
  • Block get_block_from_string(string id)
  • Item get_item_from_string(string id)
  • Sky get_sky_from_string(string id)
  • Tree get_tree_from_string(string id)
  • Biome get_biome_from_string(string id)
  • Block[] blocks()
  • Item[] items()
  • Tree[] trees()
  • Biome[] biomes()
  • Dimension[] dimensions()

World

  • u16 get_block(int x, int y, int z)
  • void set_block(int x, int y, int z, u16 block)
  • u16 get_data(int x, int y, int z)
  • void set_data(int x, int y, int z, u16 data)
  • BlockData *add_block_data(int x, int y, int z, int inventoryWidth, int inventoryHeight)
  • BlockData *get_block_data(int x, int y, int z)

Chunk

  • u16 get_block(int x, int y, int z)
  • void set_block(int x, int y, int z, u16 block)
  • u16 get_data(int x, int y, int z)
  • void set_data(int x, int y, int z, u16 data)
  • BlockData *add_block_data(int x, int y, int z, int inventoryWidth, int inventoryHeight)
  • BlockData *get_block_data(int x, int y, int z)

BlockData

  • Inventory *inventory
  • BlockMetadata *meta
  • bool use_alt_tiles

Block

  • u16 id()
  • u16 data()
  • string string_id()
  • string label()
  • stirng mod_name()
  • bool is_opaque()

Player

  • Inventory *inventory()
  • double x()
  • double y()
  • double z()
  • void set_position(double x, double y, double z)
  • u16 dimension()
  • void set_dimension(u16 dimension)
  • u16 client_id()

Inventory

  • void add_stack(string name, u16 amount)
  • ItemStack get_stack(u16 x, u16 y)
  • void set_stack(u16 x, u16 y, string name, u16 amount)

Recipe

  • string type()
  • ItemStack result()

ItemStack

  • u16 amount()
  • Item item()

Item

  • u16 id()
  • string name()
  • u16 burn_time()
  • bool is_fuel()

ivec3

  • int x
  • int y
  • int z

BlockMetadata

  • string get_string(string attribute)
  • void set_string(string attribute, string value)
  • int get_int(string attribute)
  • void set_int(string attribute, int value)

ClientInfo

  • u16 id()

ServerCommandHandler

  • void send_player_change_dimension(u16 clientID, int x, int y, int z, u16 dimension, ClientInfo client)
  • void send_chat_message(u16 senderID, string message, ClientInfo client)