diff --git a/compatibility.lua b/compatibility.lua
index 38b0e2d..fee6573 100644
--- a/compatibility.lua
+++ b/compatibility.lua
@@ -538,6 +538,7 @@ if industrialtest.mclAvailable then
industrialtest.elementKeys.cactus="mcl_core:cactus"
industrialtest.elementKeys.gunpowder="mcl_mobitems:gunpowder"
industrialtest.elementKeys.chest="mcl_chests:chest_small"
+ industrialtest.elementKeys.paper="mcl_core:paper"
industrialtest.elementKeys.groupSapling="group:sapling"
industrialtest.elementKeys.groupLeaves="group:leaves"
industrialtest.elementKeys.stickyResin=(industrialtest.mods.mclRubber and "mcl_rubber:rubber_raw" or "industrialtest:sticky_resin")
@@ -773,6 +774,7 @@ elseif industrialtest.mtgAvailable then
industrialtest.elementKeys.cactus="default:cactus"
industrialtest.elementKeys.gunpowder="tnt:gunpowder"
industrialtest.elementKeys.chest="default:chest"
+ industrialtest.elementKeys.paper="default:paper"
industrialtest.elementKeys.groupSapling="group:sapling"
industrialtest.elementKeys.groupLeaves="group:leaves"
industrialtest.elementKeys.stickyResin="industrialtest:sticky_resin"
diff --git a/guide.lua b/guide.lua
new file mode 100644
index 0000000..1d40f64
--- /dev/null
+++ b/guide.lua
@@ -0,0 +1,84 @@
+-- IndustrialTest
+-- Copyright (C) 2025 mrkubax10
+
+-- This program is free software: you can redistribute it and/or modify
+-- it under the terms of the GNU General Public License as published by
+-- the Free Software Foundation, either version 3 of the License, or
+-- (at your option) any later version.
+
+-- This program is distributed in the hope that it will be useful,
+-- but WITHOUT ANY WARRANTY; without even the implied warranty of
+-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+-- GNU General Public License for more details.
+
+-- You should have received a copy of the GNU General Public License
+-- along with this program. If not, see .
+
+local S=minetest.get_translator("industrialtest")
+
+local pages={
+ introduction={
+ title=S("Introduction"),
+ icon=industrialtest.elementKeys.paper,
+ content=[[
+ Introduction
+
+ IndustrialTest implements finite power functionality which can be used to perform various tasks using generators and consumers. Such features are not a new thing in Luanti, as there are older mods which do that already. This mod, however, proves to be more flexible.
+
+ ]]
+ }
+}
+
+local function getGuideFormspec(playerName,pageName)
+ local formspec={
+ "formspec_version[4]",
+ "size[15,10.8]",
+ "label[0.1,0.2;"..S("IndustrialTest Guide").."]",
+ --"scrollbaroptions[]",
+ "scrollbar[3.6,0.4;0.5,10.3;vertical;scrollbarList;0]",
+ "scroll_container[0.1,0.4;4,10.3;scrollbarList;vertical]"
+ }
+
+ -- Contents sidebar
+ local PAGE_BUTTON_HEIGHT=0.7
+ local index=0
+ for name,page in pairs(pages) do
+ table.insert(formspec,string.format("container[0,%f]",index*PAGE_BUTTON_HEIGHT))
+ table.insert(formspec,string.format("item_image[0,0;%f,%f;%s]",PAGE_BUTTON_HEIGHT,PAGE_BUTTON_HEIGHT,page.icon))
+ table.insert(formspec,string.format("button[%f,0;%f,%f;%s;%s]",PAGE_BUTTON_HEIGHT+0.05,3.45-PAGE_BUTTON_HEIGHT,PAGE_BUTTON_HEIGHT,name,page.title))
+ table.insert(formspec,"container_end[]")
+ index=index+1
+ end
+ table.insert(formspec,"scroll_container_end[]")
+
+ if pageName and pages[pageName] then
+ table.insert(formspec,string.format("hypertext[4.2,0.4;10.7,10.3;content;%s]",pages[pageName].content))
+ end
+
+ return table.concat(formspec,"")
+end
+
+local function showGuide(playerName,page)
+ minetest.show_formspec(playerName,"industrialtest:guide",getGuideFormspec(playerName,page))
+ return true
+end
+
+local function handleGuideFields(player,formname,fields)
+ if formname~="industrialtest:guide" then
+ return
+ end
+
+ for name,_ in pairs(pages) do
+ if fields[name] then
+ minetest.close_formspec(player:get_player_name(),formname)
+ showGuide(player:get_player_name(),name)
+ break
+ end
+ end
+end
+minetest.register_on_player_receive_fields(handleGuideFields)
+
+minetest.register_chatcommand("industrialtest_guide",{
+ description=S("Shows graphical guide for content and features provided by IndustrialTest"),
+ func=showGuide
+})
diff --git a/init.lua b/init.lua
index d084ff4..adf4f66 100644
--- a/init.lua
+++ b/init.lua
@@ -98,6 +98,7 @@ dofile(modpath.."/tools/wrench.lua")
dofile(modpath.."/upgrades.lua")
dofile(modpath.."/craftitems.lua")
+dofile(modpath.."/guide.lua")
dofile(modpath.."/nodes.lua")
if industrialtest.config.developerMode then
dofile(modpath.."/utils.lua")