]> git.lizzy.rs Git - minetest.git/blob - clientmods/preview/init.lua
[CSM] Implement minetest.get_csm_restrictions()
[minetest.git] / clientmods / preview / init.lua
1 local modname = assert(core.get_current_modname())
2 local modstorage = core.get_mod_storage()
3 local mod_channel
4
5 dofile(core.get_modpath(modname) .. "example.lua")
6
7 core.register_on_shutdown(function()
8         print("[PREVIEW] shutdown client")
9 end)
10 local id = nil
11
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
18 print("CSM restrictions: " .. dump(core.get_csm_restrictions()))
19
20 mod_channel = core.mod_channel_join("experimental_preview")
21
22 core.after(4, function()
23         if mod_channel:is_writeable() then
24                 mod_channel:send_all("preview talk to experimental")
25         end
26 end)
27
28 core.after(1, function()
29         id = core.localplayer:hud_add({
30                         hud_elem_type = "text",
31                         name = "example",
32                         number = 0xff0000,
33                         position = {x=0, y=1},
34                         offset = {x=8, y=-8},
35                         text = "You are using the preview mod",
36                         scale = {x=200, y=60},
37                         alignment = {x=1, y=-1},
38         })
39 end)
40
41 core.register_on_modchannel_message(function(channel, sender, message)
42         print("[PREVIEW][modchannels] Received message `" .. message .. "` on channel `"
43                         .. channel .. "` from sender `" .. sender .. "`")
44         core.after(1, function()
45                 mod_channel:send_all("CSM preview received " .. message)
46         end)
47 end)
48
49 core.register_on_modchannel_signal(function(channel, signal)
50         print("[PREVIEW][modchannels] Received signal id `" .. signal .. "` on channel `"
51                         .. channel)
52 end)
53
54 core.register_on_inventory_open(function(inventory)
55         print("INVENTORY OPEN")
56         print(dump(inventory))
57         return false
58 end)
59
60 core.register_on_placenode(function(pointed_thing, node)
61         print("The local player place a node!")
62         print("pointed_thing :" .. dump(pointed_thing))
63         print("node placed :" .. dump(node))
64         return false
65 end)
66
67 core.register_on_item_use(function(itemstack, pointed_thing)
68         print("The local player used an item!")
69         print("pointed_thing :" .. dump(pointed_thing))
70         print("item = " .. itemstack:get_name())
71
72         if not itemstack:is_empty() then
73                 return false
74         end
75
76         local pos = vector.add(core.localplayer:get_pos(), core.camera:get_offset())
77         local pos2 = vector.add(pos, vector.multiply(core.camera:get_look_dir(), 100))
78
79         local rc = core.raycast(pos, pos2)
80         local i = rc:next()
81         print("[PREVIEW] raycast next: " .. dump(i))
82         if i then
83                 print("[PREVIEW] line of sight: " .. (core.line_of_sight(pos, i.above) and "yes" or "no"))
84
85                 local n1 = core.find_nodes_in_area(pos, i.under, {"default:stone"})
86                 local n2 = core.find_nodes_in_area_under_air(pos, i.under, {"default:stone"})
87                 print(("[PREVIEW] found %s nodes, %s nodes under air"):format(
88                                 n1 and #n1 or "?", n2 and #n2 or "?"))
89         end
90
91         return false
92 end)
93
94 -- This is an example function to ensure it's working properly, should be removed before merge
95 core.register_on_receiving_chat_message(function(message)
96         print("[PREVIEW] Received message " .. message)
97         return false
98 end)
99
100 -- This is an example function to ensure it's working properly, should be removed before merge
101 core.register_on_sending_chat_message(function(message)
102         print("[PREVIEW] Sending message " .. message)
103         return false
104 end)
105
106 -- This is an example function to ensure it's working properly, should be removed before merge
107 core.register_on_hp_modification(function(hp)
108         print("[PREVIEW] HP modified " .. hp)
109 end)
110
111 -- This is an example function to ensure it's working properly, should be removed before merge
112 core.register_on_damage_taken(function(hp)
113         print("[PREVIEW] Damage taken " .. hp)
114 end)
115
116 -- This is an example function to ensure it's working properly, should be removed before merge
117 core.register_chatcommand("dump", {
118         func = function(param)
119                 return true, dump(_G)
120         end,
121 })
122
123 core.register_chatcommand("colorize_test", {
124         func = function(param)
125                 return true, core.colorize("red", param)
126         end,
127 })
128
129 core.register_chatcommand("test_node", {
130         func = function(param)
131                 core.display_chat_message(dump(core.get_node({x=0, y=0, z=0})))
132                 core.display_chat_message(dump(core.get_node_or_nil({x=0, y=0, z=0})))
133         end,
134 })
135
136 local function preview_minimap()
137         local minimap = core.ui.minimap
138         if not minimap then
139                 print("[PREVIEW] Minimap is disabled. Skipping.")
140                 return
141         end
142         minimap:set_mode(4)
143         minimap:show()
144         minimap:set_pos({x=5, y=50, z=5})
145         minimap:set_shape(math.random(0, 1))
146
147         print("[PREVIEW] Minimap: mode => " .. dump(minimap:get_mode()) ..
148                         " position => " .. dump(minimap:get_pos()) ..
149                         " angle => " .. dump(minimap:get_angle()))
150 end
151
152 core.after(2, function()
153         print("[PREVIEW] loaded " .. modname .. " mod")
154         modstorage:set_string("current_mod", modname)
155         print(modstorage:get_string("current_mod"))
156         preview_minimap()
157 end)
158
159 core.after(5, function()
160         if core.ui.minimap then
161                 core.ui.minimap:show()
162         end
163
164         print("[PREVIEW] Time of day " .. core.get_timeofday())
165
166         print("[PREVIEW] Node level: " .. core.get_node_level({x=0, y=20, z=0}) ..
167                 " max level " .. core.get_node_max_level({x=0, y=20, z=0}))
168
169         print("[PREVIEW] Find node near: " .. dump(core.find_node_near({x=0, y=20, z=0}, 10,
170                 {"group:tree", "default:dirt", "default:stone"})))
171 end)
172
173 core.register_on_dignode(function(pos, node)
174         print("The local player dug a node!")
175         print("pos:" .. dump(pos))
176         print("node:" .. dump(node))
177         return false
178 end)
179
180 core.register_on_punchnode(function(pos, node)
181         print("The local player punched a node!")
182         local itemstack = core.get_wielded_item()
183         --[[
184         -- getters
185         print(dump(itemstack:is_empty()))
186         print(dump(itemstack:get_name()))
187         print(dump(itemstack:get_count()))
188         print(dump(itemstack:get_wear()))
189         print(dump(itemstack:get_meta()))
190         print(dump(itemstack:get_metadata()
191         print(dump(itemstack:is_known()))
192         --print(dump(itemstack:get_definition()))
193         print(dump(itemstack:get_tool_capabilities()))
194         print(dump(itemstack:to_string()))
195         print(dump(itemstack:to_table()))
196         -- setters
197         print(dump(itemstack:set_name("default:dirt")))
198         print(dump(itemstack:set_count("95")))
199         print(dump(itemstack:set_wear(934)))
200         print(dump(itemstack:get_meta()))
201         print(dump(itemstack:get_metadata()))
202         --]]
203         print(dump(itemstack:to_table()))
204         print("pos:" .. dump(pos))
205         print("node:" .. dump(node))
206         return false
207 end)
208
209 core.register_chatcommand("privs", {
210         func = function(param)
211                 return true, core.privs_to_string(minetest.get_privilege_list())
212         end,
213 })
214
215 core.register_chatcommand("text", {
216         func = function(param)
217                 return core.localplayer:hud_change(id, "text", param)
218         end,
219 })
220
221
222 core.register_on_mods_loaded(function()
223         core.log("Yeah preview mod is loaded with other CSM mods.")
224 end)