1 local modname = assert(core.get_current_modname())
2 local modstorage = core.get_mod_storage()
5 dofile(core.get_modpath(modname) .. "example.lua")
7 core.register_on_shutdown(function()
8 print("[PREVIEW] shutdown client")
12 local server_info = core.get_server_info()
13 print("Server version: " .. server_info.protocol_version)
14 print("Server ip: " .. server_info.ip)
15 print("Server address: " .. server_info.address)
16 print("Server port: " .. server_info.port)
17 mod_channel = core.mod_channel_join("experimental_preview")
19 core.after(4, function()
20 if mod_channel:is_writeable() then
21 mod_channel:send_all("preview talk to experimental")
25 core.after(1, function()
26 id = core.localplayer:hud_add({
27 hud_elem_type = "text",
30 position = {x=0, y=1},
32 text = "You are using the preview mod",
33 scale = {x=200, y=60},
34 alignment = {x=1, y=-1},
38 core.register_on_modchannel_message(function(channel, sender, message)
39 print("[PREVIEW][modchannels] Received message `" .. message .. "` on channel `"
40 .. channel .. "` from sender `" .. sender .. "`")
41 core.after(1, function()
42 mod_channel:send_all("CSM preview received " .. message)
46 core.register_on_modchannel_signal(function(channel, signal)
47 print("[PREVIEW][modchannels] Received signal id `" .. signal .. "` on channel `"
51 core.register_on_inventory_open(function(inventory)
52 print("INVENTORY OPEN")
53 print(dump(inventory))
57 core.register_on_placenode(function(pointed_thing, node)
58 print("The local player place a node!")
59 print("pointed_thing :" .. dump(pointed_thing))
60 print("node placed :" .. dump(node))
64 core.register_on_item_use(function(itemstack, pointed_thing)
65 print("The local player used an item!")
66 print("pointed_thing :" .. dump(pointed_thing))
67 print("item = " .. itemstack:get_name())
69 if not itemstack:is_empty() then
73 local pos = vector.add(core.localplayer:get_pos(), core.camera:get_offset())
74 local pos2 = vector.add(pos, vector.multiply(core.camera:get_look_dir(), 100))
76 local rc = core.raycast(pos, pos2)
78 print("[PREVIEW] raycast next: " .. dump(i))
80 print("[PREVIEW] line of sight: " .. (core.line_of_sight(pos, i.above) and "yes" or "no"))
82 local n1 = core.find_nodes_in_area(pos, i.under, {"default:stone"})
83 local n2 = core.find_nodes_in_area_under_air(pos, i.under, {"default:stone"})
84 print(("[PREVIEW] found %s nodes, %s nodes under air"):format(
85 n1 and #n1 or "?", n2 and #n2 or "?"))
91 -- This is an example function to ensure it's working properly, should be removed before merge
92 core.register_on_receiving_chat_message(function(message)
93 print("[PREVIEW] Received message " .. message)
97 -- This is an example function to ensure it's working properly, should be removed before merge
98 core.register_on_sending_chat_message(function(message)
99 print("[PREVIEW] Sending message " .. message)
103 -- This is an example function to ensure it's working properly, should be removed before merge
104 core.register_on_hp_modification(function(hp)
105 print("[PREVIEW] HP modified " .. hp)
108 -- This is an example function to ensure it's working properly, should be removed before merge
109 core.register_on_damage_taken(function(hp)
110 print("[PREVIEW] Damage taken " .. hp)
113 -- This is an example function to ensure it's working properly, should be removed before merge
114 core.register_chatcommand("dump", {
115 func = function(param)
116 return true, dump(_G)
120 core.register_chatcommand("colorize_test", {
121 func = function(param)
122 return true, core.colorize("red", param)
126 core.register_chatcommand("test_node", {
127 func = function(param)
128 core.display_chat_message(dump(core.get_node({x=0, y=0, z=0})))
129 core.display_chat_message(dump(core.get_node_or_nil({x=0, y=0, z=0})))
133 local function preview_minimap()
134 local minimap = core.ui.minimap
136 print("[PREVIEW] Minimap is disabled. Skipping.")
141 minimap:set_pos({x=5, y=50, z=5})
142 minimap:set_shape(math.random(0, 1))
144 print("[PREVIEW] Minimap: mode => " .. dump(minimap:get_mode()) ..
145 " position => " .. dump(minimap:get_pos()) ..
146 " angle => " .. dump(minimap:get_angle()))
149 core.after(2, function()
150 print("[PREVIEW] loaded " .. modname .. " mod")
151 modstorage:set_string("current_mod", modname)
152 print(modstorage:get_string("current_mod"))
156 core.after(5, function()
157 if core.ui.minimap then
158 core.ui.minimap:show()
161 print("[PREVIEW] Time of day " .. core.get_timeofday())
163 print("[PREVIEW] Node level: " .. core.get_node_level({x=0, y=20, z=0}) ..
164 " max level " .. core.get_node_max_level({x=0, y=20, z=0}))
166 print("[PREVIEW] Find node near: " .. dump(core.find_node_near({x=0, y=20, z=0}, 10,
167 {"group:tree", "default:dirt", "default:stone"})))
170 core.register_on_dignode(function(pos, node)
171 print("The local player dug a node!")
172 print("pos:" .. dump(pos))
173 print("node:" .. dump(node))
177 core.register_on_punchnode(function(pos, node)
178 print("The local player punched a node!")
179 local itemstack = core.get_wielded_item()
182 print(dump(itemstack:is_empty()))
183 print(dump(itemstack:get_name()))
184 print(dump(itemstack:get_count()))
185 print(dump(itemstack:get_wear()))
186 print(dump(itemstack:get_meta()))
187 print(dump(itemstack:get_metadata()
188 print(dump(itemstack:is_known()))
189 --print(dump(itemstack:get_definition()))
190 print(dump(itemstack:get_tool_capabilities()))
191 print(dump(itemstack:to_string()))
192 print(dump(itemstack:to_table()))
194 print(dump(itemstack:set_name("default:dirt")))
195 print(dump(itemstack:set_count("95")))
196 print(dump(itemstack:set_wear(934)))
197 print(dump(itemstack:get_meta()))
198 print(dump(itemstack:get_metadata()))
200 print(dump(itemstack:to_table()))
201 print("pos:" .. dump(pos))
202 print("node:" .. dump(node))
206 core.register_chatcommand("privs", {
207 func = function(param)
208 return true, core.privs_to_string(minetest.get_privilege_list())
212 core.register_chatcommand("text", {
213 func = function(param)
214 return core.localplayer:hud_change(id, "text", param)
219 core.register_on_mods_loaded(function()
220 core.log("Yeah preview mod is loaded with other CSM mods.")