mirror of
https://github.com/Uberi/Minetest-WorldEdit.git
synced 2024-12-26 02:30:40 +01:00
The WorldEdit GUI now has no hard dependencies.
This commit is contained in:
parent
2e41f0076d
commit
8c0b61194c
10
README.md
10
README.md
@ -10,12 +10,6 @@ For more information, see the [forum topic](https://forum.minetest.net/viewtopic
|
|||||||
|
|
||||||
Installing
|
Installing
|
||||||
----------
|
----------
|
||||||
In order to use the WorldEdit GUI, you must have one of the following mods installed:
|
|
||||||
|
|
||||||
* [Unified Inventory](https://forum.minetest.net/viewtopic.php?id=3933) (RECOMMENDED)
|
|
||||||
* [Inventory++](https://forum.minetest.net/viewtopic.php?id=6204)
|
|
||||||
|
|
||||||
Installation of Unified Inventory is highly recommended. If neither of these mods are installed, the WorldEdit GUI will not be available, though the rest of WorldEdit will work fine.
|
|
||||||
|
|
||||||
If you are using Windows, consider installing this mod using [MODSTER](https://forum.minetest.net/viewtopic.php?id=6497), a super simple mod installer that will take care of everything for you. If you are using MODSTER, skip directly to step 6 in the instructions below.
|
If you are using Windows, consider installing this mod using [MODSTER](https://forum.minetest.net/viewtopic.php?id=6497), a super simple mod installer that will take care of everything for you. If you are using MODSTER, skip directly to step 6 in the instructions below.
|
||||||
|
|
||||||
@ -57,7 +51,9 @@ This mod supports Minetest versions 0.4.8 and newer. Older versions of WorldEdit
|
|||||||
|
|
||||||
WorldEdit works quite well with other mods, and does not have any known mod conflicts.
|
WorldEdit works quite well with other mods, and does not have any known mod conflicts.
|
||||||
|
|
||||||
WorldEdit GUI requires either [Unified Inventory](https://forum.minetest.net/viewtopic.php?id=3933) or [Inventory++](https://forum.minetest.net/viewtopic.php?id=6204) to be installed in order to use it. This is optional but highly recommended.
|
WorldEdit GUI works with [Unified Inventory](https://forum.minetest.net/viewtopic.php?id=3933) and [Inventory++](https://forum.minetest.net/viewtopic.php?id=6204), but these are not required to use the mod.
|
||||||
|
|
||||||
|
If you use any other inventory manager mods, note that they may conflict with the WorldEdit GUI. If this is the case, it may be necessary to disable them.
|
||||||
|
|
||||||
WorldEdit API
|
WorldEdit API
|
||||||
-------------
|
-------------
|
||||||
|
@ -9,7 +9,6 @@ Let's start with a few assumptions:
|
|||||||
* You have WorldEdit installed as a mod.
|
* You have WorldEdit installed as a mod.
|
||||||
* If using Windows, [MODSTER](https://forum.minetest.net/viewtopic.php?pid=101463) makes installing mods totally painless.
|
* If using Windows, [MODSTER](https://forum.minetest.net/viewtopic.php?pid=101463) makes installing mods totally painless.
|
||||||
* Simply download the file, extract the archive, and move it to the correct mod folder for Minetest.
|
* Simply download the file, extract the archive, and move it to the correct mod folder for Minetest.
|
||||||
* If you want to use the WorldEdit GUI, you have installed either [Unified Inventory](https://forum.minetest.net/viewtopic.php?id=3933) (recommended), or [Inventory++](https://forum.minetest.net/viewtopic.php?id=6204).
|
|
||||||
* See the installation instructions in [README](README.md) if you need more details.
|
* See the installation instructions in [README](README.md) if you need more details.
|
||||||
* You are familiar with the basics of the game.
|
* You are familiar with the basics of the game.
|
||||||
* How to walk, jump, and climb.
|
* How to walk, jump, and climb.
|
||||||
@ -38,7 +37,7 @@ Walk away from the node you just punched. Now, punch another node. A black cube
|
|||||||
|
|
||||||
### WorldEdit GUI
|
### WorldEdit GUI
|
||||||
|
|
||||||
Open the main WorldEdit GUI from your inventory screen.
|
Open the main WorldEdit GUI from your inventory screen. The icon looks like a globe with a red dot in the center.
|
||||||
|
|
||||||
Press the "Get/Set Positions" button. On the new screen, press the "Set Position 1" button. The inventory screen should close.
|
Press the "Get/Set Positions" button. On the new screen, press the "Set Position 1" button. The inventory screen should close.
|
||||||
|
|
||||||
|
@ -2,3 +2,4 @@ worldedit
|
|||||||
worldedit_commands
|
worldedit_commands
|
||||||
unified_inventory?
|
unified_inventory?
|
||||||
inventory_plus?
|
inventory_plus?
|
||||||
|
creative?
|
@ -1,7 +1,5 @@
|
|||||||
worldedit = worldedit or {}
|
worldedit = worldedit or {}
|
||||||
|
|
||||||
--wip: simply add a button to the player inventory if unified_inventory AND inventory++ are both not installed
|
|
||||||
|
|
||||||
--[[
|
--[[
|
||||||
Example:
|
Example:
|
||||||
|
|
||||||
@ -69,7 +67,8 @@ local get_formspec = function(name, identifier)
|
|||||||
return worldedit.pages["worldedit_gui"].get_formspec(name) --default to showing main page if an unknown page is given
|
return worldedit.pages["worldedit_gui"].get_formspec(name) --default to showing main page if an unknown page is given
|
||||||
end
|
end
|
||||||
|
|
||||||
if unified_inventory then
|
--implement worldedit.show_page(name, page) in different ways depending on the available APIs
|
||||||
|
if unified_inventory then --unified inventory installed
|
||||||
local old_func = worldedit.register_gui_function
|
local old_func = worldedit.register_gui_function
|
||||||
worldedit.register_gui_function = function(identifier, options)
|
worldedit.register_gui_function = function(identifier, options)
|
||||||
old_func(identifier, options)
|
old_func(identifier, options)
|
||||||
@ -96,7 +95,7 @@ if unified_inventory then
|
|||||||
worldedit.show_page = function(name, page)
|
worldedit.show_page = function(name, page)
|
||||||
minetest.get_player_by_name(name):set_inventory_formspec(get_formspec(name, page))
|
minetest.get_player_by_name(name):set_inventory_formspec(get_formspec(name, page))
|
||||||
end
|
end
|
||||||
elseif inventory_plus then
|
elseif inventory_plus then --inventory++ installed
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
inventory_plus.register_button(player, "worldedit_gui", "WorldEdit")
|
inventory_plus.register_button(player, "worldedit_gui", "WorldEdit")
|
||||||
end)
|
end)
|
||||||
@ -121,11 +120,57 @@ elseif inventory_plus then
|
|||||||
worldedit.show_page = function(name, page)
|
worldedit.show_page = function(name, page)
|
||||||
inventory_plus.set_inventory_formspec(minetest.get_player_by_name(name), get_formspec(name, page))
|
inventory_plus.set_inventory_formspec(minetest.get_player_by_name(name), get_formspec(name, page))
|
||||||
end
|
end
|
||||||
else
|
else --fallback button
|
||||||
worldedit.show_page = function(name, page)
|
local player_formspecs = {}
|
||||||
minetest.log("error", "WorldEdit GUI cannot be shown, requires unified_inventory or inventory_plus")
|
|
||||||
|
local update_main_formspec = function(name)
|
||||||
|
local formspec = player_formspecs[name]
|
||||||
|
if not formspec then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
if minetest.setting_getbool("creative_mode") and creative_inventory then --creative_inventory is active
|
||||||
|
formspec = formspec .. "image_button[6,0;1,1;inventory_plus_worldedit_gui.png;worldedit_gui;]"
|
||||||
|
else
|
||||||
|
formspec = formspec .. "image_button[0,0;1,1;inventory_plus_worldedit_gui.png;worldedit_gui;]"
|
||||||
|
end
|
||||||
|
player:set_inventory_formspec(formspec)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
minetest.after(1, function()
|
||||||
|
player_formspecs[name] = player:get_inventory_formspec()
|
||||||
|
minetest.after(0.01, function()
|
||||||
|
update_main_formspec(name)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
player_formspecs[player:get_player_name()] = nil
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
if fields.worldedit_gui then --main page
|
||||||
|
worldedit.show_page(name, "worldedit_gui")
|
||||||
|
return true
|
||||||
|
elseif fields.worldedit_gui_exit then --return to original page
|
||||||
|
update_main_formspec(name)
|
||||||
|
return true
|
||||||
|
else --deal with creative_inventory setting the formspec on every single message
|
||||||
|
minetest.after(0.01,function()
|
||||||
|
update_main_formspec(name)
|
||||||
|
end)
|
||||||
|
return false --continue processing in creative inventory
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
||||||
|
worldedit.show_page = function(name, page)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
player:set_inventory_formspec(get_formspec(name, page))
|
||||||
end
|
end
|
||||||
minetest.log("error", "WorldEdit GUI is unavailable, requires unified_inventory or inventory_plus")
|
|
||||||
end
|
end
|
||||||
|
|
||||||
worldedit.register_gui_function("worldedit_gui", {
|
worldedit.register_gui_function("worldedit_gui", {
|
||||||
|
Loading…
Reference in New Issue
Block a user