Initial refactor
|
@ -12,7 +12,7 @@ Note to self: See the bottom of this file for the release template text.
|
|||
- Added [`//ngroups`](https://worldeditadditions.mooncarrot.space/Reference/#ngroups), which lists the groups that a given node is a member of. Useful when paired with [`//nodeapply`](https://worldeditadditions.mooncarrot.space/Reference/#nodeapply)!
|
||||
- Added [`//rotate+`](https://worldeditadditions.mooncarrot.space/Reference/#rotate) to rotate regions through arbitrary series of potentially non-axis-aligned rotations. **Does not support slabs/stairs yet,** but this is on the todo list!
|
||||
- Added [`//speed`](https://worldeditadditions.mooncarrot.space/Reference/#speed) to adjust your own movement speed
|
||||
- Also added an associated [movement speed adjustment tool](https://worldeditadditions.mooncarrot.space/Reference/#movement), which looks like this: ![A picture of the move speed adjustment tool. It looks like a monarch butterfly.](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/dev/worldeditadditions_farwand/textures/worldeditadditions_movement.png)
|
||||
- Also added an associated [movement speed adjustment tool](https://worldeditadditions.mooncarrot.space/Reference/#movement), which looks like this: ![A picture of the move speed adjustment tool. It looks like a monarch butterfly.](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/dev/worldeditadditions_tools/textures/worldeditadditions_movement.png)
|
||||
- Added [`//set+`](https://worldeditadditions.mooncarrot.space/Reference/#set) for setting nodes and param2/light levels quickly.
|
||||
- NOTE TO SELF: Setting light values doesn't appear to be working very well for some reason
|
||||
- Added [`//ndef`](https://worldeditadditions.mooncarrot.space/Reference/#ndef) to print a given node's definition table. This is for debugging and development purposes.
|
||||
|
@ -63,7 +63,7 @@ Note to self: See the bottom of this file for the release template text.
|
|||
- Add `//dome+`, which allows you to change the direction the dome is pointing in, and also create multiple domes at once
|
||||
- Add `//metaball`, which renders 2 or more [metaballs](https://en.wikipedia.org/wiki/Metaballs) in Minetest
|
||||
- Significant backend refactoring to tidy things up
|
||||
- Add new multi-point selection wand ![A picture of the multi-point wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_farwand/textures/worldeditadditions_multiwand.png) to select many points at once.
|
||||
- Add new multi-point selection wand ![A picture of the multi-point wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_tools/textures/worldeditadditions_multiwand.png) to select many points at once.
|
||||
- Implement custom region boxing UI, which replaces the WorldEdit region box when using WorldEditAdditions wands.
|
||||
- Is backwards compatible with regular WorldEdit wands and tools, as WorldEditAdditions keeps the new positioning system in sync with WorldEdit's.
|
||||
- The new multipoint wand required this as a prerequisite
|
||||
|
|
|
@ -11,7 +11,7 @@ Name | Description
|
|||
--------------------------------|------------------------
|
||||
`worldeditadditions` | The main mod. Core world manipulation implementations (backed by the `*_core` mod ref core and utility functions) should go in here.
|
||||
`worldeditadditions_commands` | Chat commands. These interact with the core manipulators in `worldeditadditions` mod.
|
||||
`worldeditadditions_farwand` | Everything to do with the far wand tool, and now other tools like the cloud wand, multi-point wand, etc. It's different enough to everything else that it warrants it's own separate mod to avoid muddling things.
|
||||
`worldeditadditions_tools` | Everything to do with the far wand tool, and now other tools like the cloud wand, multi-point wand, etc. It's different enough to everything else that it warrants it's own separate mod to avoid muddling things.
|
||||
`worldeditadditions_core` | Core components such as the positioning system (`worldeditadditions_core.pos`), the command registration function, and utility functions go in here.
|
||||
|
||||
Additionally, every command should be implemented in its own file. This helps keep things organised and files short.
|
||||
|
|
|
@ -1897,7 +1897,7 @@ Prevents the execution of a command if it could potentially affect a large numbe
|
|||
-->
|
||||
|
||||
### Movement speed adjustment tool
|
||||
The movement speed adjustment tool, as the name suggests, adjusts your local player movement speed. It looks like this: ![A picture of the move speed adjustment tool. It looks like a monarch butterfly.](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/dev/worldeditadditions_farwand/textures/worldeditadditions_movement.png).
|
||||
The movement speed adjustment tool, as the name suggests, adjusts your local player movement speed. It looks like this: ![A picture of the move speed adjustment tool. It looks like a monarch butterfly.](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/dev/worldeditadditions_tools/textures/worldeditadditions_movement.png).
|
||||
|
||||
Primary (left) clicking will increase your movement speed, and secondary (right) clicking will decrease it in x0.5 increments, down to a minimum of x0.5.
|
||||
|
||||
|
@ -1908,7 +1908,7 @@ See also [`//speed`](#speed).
|
|||
### Far Wand
|
||||
> Added in v1.7
|
||||
|
||||
The far wand (`worldeditadditions:farwand`) is a variant on the traditional WorldEdit wand (`worldedit:wand`). It looks like this: ![A picture of the far wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_farwand/textures/worldeditadditions_farwand.png)
|
||||
The far wand (`worldeditadditions:farwand`) is a variant on the traditional WorldEdit wand (`worldedit:wand`). It looks like this: ![A picture of the far wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_tools/textures/worldeditadditions_tools.png)
|
||||
|
||||
It functions very similarly to the regular WorldEdit wand, except that it has a _much_ longer range - which can be very useful for working on large-scale terrain for example. It also comes with an associated command to control it.
|
||||
|
||||
|
@ -1941,7 +1941,7 @@ Note that the number there isn't in blocks (because hard maths). It is however p
|
|||
### Cloud Wand
|
||||
> Added in v1.11
|
||||
|
||||
The cloud wand (`worldeditadditions:cloudwand`) is a another variant the above _Far Wand_. It looks like this: ![A picture of the far wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_farwand/textures/worldeditadditions_cloudwand.png)
|
||||
The cloud wand (`worldeditadditions:cloudwand`) is a another variant the above _Far Wand_. It looks like this: ![A picture of the far wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_tools/textures/worldeditadditions_cloudwand.png)
|
||||
|
||||
Unlike the other 2 wands, this wand functions in an additive manner. Left-click on a node to expand the currently defined region (creating a new one if one isn't defined already) to include that node. Right click to clear the currently defined region.
|
||||
|
||||
|
@ -1953,7 +1953,7 @@ Note that punching out the positions **does not unset them**. Use `//reset` to r
|
|||
### MultiPoint Wand
|
||||
> Added in v1.14
|
||||
|
||||
The third type of wand provided by WorldEditAdditions is completely different, in that it allows you to select up to **999 points** at once! It looks like this: ![A picture of the multi-point wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_farwand/textures/worldeditadditions_multiwand.png)
|
||||
The third type of wand provided by WorldEditAdditions is completely different, in that it allows you to select up to **999 points** at once! It looks like this: ![A picture of the multi-point wand](https://raw.githubusercontent.com/sbrl/Minetest-WorldEditAdditions/main/worldeditadditions_tools/textures/worldeditadditions_multiwand.png)
|
||||
|
||||
It is important to note that (at present) the points selected by this wand **are not compatible with normal points**. This will change in the future, but requires a lot of work to implement.
|
||||
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
worldeditadditions.farwand = {
|
||||
player_data = {}
|
||||
}
|
||||
|
||||
local modpath = minetest.get_modpath("worldeditadditions_farwand")
|
||||
|
||||
dofile(modpath.."/lib/do_raycast.lua")
|
||||
dofile(modpath.."/lib/farwand.lua")
|
||||
dofile(modpath.."/lib/cloudwand.lua")
|
||||
dofile(modpath.."/lib/multiwand.lua")
|
||||
dofile(modpath.."/lib/movetool.lua")
|
||||
|
||||
dofile(modpath.."/lib/chatcommand.lua")
|
||||
dofile(modpath.."/lib/settings.lua")
|
|
@ -1,17 +0,0 @@
|
|||
local wea_c = worldeditadditions_core
|
||||
--- worldeditadditions.raycast() wrapper
|
||||
function worldeditadditions.farwand.do_raycast(player)
|
||||
if player == nil then return nil end
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if worldeditadditions.farwand.player_data[player_name] == nil then
|
||||
worldeditadditions.farwand.player_data[player_name] = { maxdist = 1000, skip_liquid = true }
|
||||
end
|
||||
|
||||
local looking_pos, node_id = wea_c.raycast(
|
||||
player,
|
||||
worldeditadditions.farwand.player_data[player_name].maxdist,
|
||||
worldeditadditions.farwand.player_data[player_name].skip_liquid
|
||||
)
|
||||
return looking_pos, node_id
|
||||
end
|
|
@ -1,3 +0,0 @@
|
|||
name = worldeditadditions_farwand
|
||||
description = worldeditadditions: convenient tool items
|
||||
depends = worldedit, worldeditadditions
|
|
@ -1,5 +1,5 @@
|
|||
local wea_c = worldeditadditions_core
|
||||
local farwand = worldeditadditions.farwand -- Convenience shurtcut
|
||||
local farwand = worldeditadditions_tools -- Convenience shurtcut
|
||||
|
||||
local function parse_params_farwand(params_text)
|
||||
if params_text == nil then
|
64
worldeditadditions_tools/commands/weatool.lua
Normal file
|
@ -0,0 +1,64 @@
|
|||
-- ██ ██ ███████ █████ ████████ ██████ ██████ ██
|
||||
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
-- ██ █ ██ █████ ███████ ██ ██ ██ ██ ██ ██
|
||||
-- ██ ███ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
-- ███ ███ ███████ ██ ██ ██ ██████ ██████ ███████
|
||||
|
||||
local wea_c = worldeditadditions_core
|
||||
local wea_t = worldeditadditions_tools
|
||||
|
||||
worldeditadditions_core.register_command("tool", {
|
||||
params = "list || give|exists <tool name> ",
|
||||
description = "Give WEA tools by name to the calling player or list available tools.",
|
||||
privs = { worldedit = true, give = true },
|
||||
require_pos = 0,
|
||||
parse = function(params_text)
|
||||
local ret = wea_c.split(params_text)
|
||||
if #ret < 1 then return false, "Error: No params found!" end
|
||||
|
||||
local commands = {list = true, give = true, exists = true}
|
||||
if not commands[ret[1]] then
|
||||
return false, "Invalid command: "..ret[1]
|
||||
end
|
||||
|
||||
if wea_t.registered_tools[ret[2]] or ret[1] == "list" then
|
||||
return true, ret
|
||||
else return false, "No such WEA tool: "..ret[2] end
|
||||
end,
|
||||
func = function(name, params_text)
|
||||
if params_text[1] == "list" then
|
||||
-- Return a list of available tools in rows of 7
|
||||
local ret = "WEA Registered Tools:\n"
|
||||
local i = 0
|
||||
for k, _ in pairs(wea_t.registered_tools) do
|
||||
i = i + 1
|
||||
if i % 7 == 0 then ret = ret..k.."\n"
|
||||
else ret = ret..k.." " end
|
||||
end
|
||||
return true, ret
|
||||
elseif params_text[1] == "exists" then
|
||||
-- NOTE: If tool did not exist it would be flagged by parse function
|
||||
return true, "WEA tool \""..params_text[2].."\" exists"
|
||||
else
|
||||
-- Initiate player variable and check if it is a valid player
|
||||
local player = minetest.get_player_by_name(name)
|
||||
if not player or not player:is_player() then
|
||||
return false, "\""..name.."\" is not a valid player."
|
||||
end
|
||||
-- Create inventory and item instances
|
||||
local inv = player:get_inventory()
|
||||
local item = "worldeditadditions:"..params_text[2]
|
||||
-- Make sure the player doesn't already have the item and has room for it
|
||||
if inv:contains_item("main", item) then
|
||||
return false, name.." already has (a) \""..params_text[2].."\"."
|
||||
elseif not inv:room_for_item("main", item) then
|
||||
return false, name.." does not have room for (a) \""..params_text[2].."\"."
|
||||
else
|
||||
-- Give the player the item
|
||||
inv:add_item("main", item)
|
||||
return true, "Gave \""..params_text[2].."\" to "..name
|
||||
end
|
||||
|
||||
end
|
||||
end,
|
||||
})
|
24
worldeditadditions_tools/init.lua
Normal file
|
@ -0,0 +1,24 @@
|
|||
worldeditadditions_tools = {
|
||||
player_data = {},
|
||||
registered_tools = {},
|
||||
}
|
||||
local wea_t = worldeditadditions_tools
|
||||
|
||||
local modpath = minetest.get_modpath("worldeditadditions_tools")
|
||||
|
||||
|
||||
-- Libraries
|
||||
dofile(modpath.."/lib/do_raycast.lua")
|
||||
dofile(modpath.."/lib/settings.lua")
|
||||
|
||||
wea_t.register_tool = dofile(modpath.."/lib/register_tool.lua")
|
||||
|
||||
-- Items
|
||||
dofile(modpath.."/items/farwand.lua")
|
||||
dofile(modpath.."/items/cloudwand.lua")
|
||||
dofile(modpath.."/items/multiwand.lua")
|
||||
dofile(modpath.."/items/movetool.lua")
|
||||
|
||||
-- Chat commands
|
||||
dofile(modpath.."/commands/farwand_config.lua")
|
||||
dofile(modpath.."/commands/weatool.lua")
|
|
@ -1,7 +1,8 @@
|
|||
local wea = worldeditadditions
|
||||
local wea_c = worldeditadditions_core
|
||||
local wea_t = worldeditadditions_tools
|
||||
|
||||
minetest.register_tool(":worldeditadditions:cloudwand", {
|
||||
wea_t.register_tool("cloudwand", {
|
||||
description = "WorldEditAdditions far-reaching additive selector wand",
|
||||
inventory_image = "worldeditadditions_cloudwand.png",
|
||||
|
||||
|
@ -16,7 +17,7 @@ minetest.register_tool(":worldeditadditions:cloudwand", {
|
|||
on_use = function(itemstack, player, pointed_thing)
|
||||
local name = player:get_player_name()
|
||||
-- print("[farwand] on_use", name)
|
||||
local looking_pos, node_id = worldeditadditions.farwand.do_raycast(player)
|
||||
local looking_pos, node_id = worldeditadditions_tools.do_raycast(player)
|
||||
wea.selection.add_point(name, looking_pos)
|
||||
-- Left click when pointing at something or nothing
|
||||
end,
|
|
@ -1,3 +1,5 @@
|
|||
local wea_t = worldeditadditions_tools
|
||||
|
||||
local function set_pos1(name, pos)
|
||||
if pos ~= nil then
|
||||
-- print("[set_pos1]", name, "("..pos.x..", "..pos.y..", "..pos.z..")")
|
||||
|
@ -21,23 +23,23 @@ local function set_pos2(name, pos)
|
|||
end
|
||||
end
|
||||
|
||||
minetest.register_tool(":worldeditadditions:farwand", {
|
||||
wea_t.register_tool("farwand", {
|
||||
description = "WorldEditAdditions far-reaching wand",
|
||||
inventory_image = "worldeditadditions_farwand.png",
|
||||
inventory_image = "worldeditadditions_tools.png",
|
||||
|
||||
on_place = function(itemstack, player, pointed_thing)
|
||||
local name = player:get_player_name()
|
||||
-- print("[farwand] on_place", name)
|
||||
-- Right click when pointing at something
|
||||
-- Pointed thing: https://rubenwardy.com/minetest_modding_book/lua_api.html#pointed_thing
|
||||
local looking_pos, node_id = worldeditadditions.farwand.do_raycast(player)
|
||||
local looking_pos, node_id = worldeditadditions_tools.do_raycast(player)
|
||||
set_pos2(name, looking_pos)
|
||||
end,
|
||||
|
||||
on_use = function(itemstack, player, pointed_thing)
|
||||
local name = player:get_player_name()
|
||||
-- print("[farwand] on_use", name)
|
||||
local looking_pos, node_id = worldeditadditions.farwand.do_raycast(player)
|
||||
local looking_pos, node_id = worldeditadditions_tools.do_raycast(player)
|
||||
set_pos1(name, looking_pos)
|
||||
-- Left click when pointing at something or nothing
|
||||
end,
|
||||
|
@ -47,7 +49,7 @@ minetest.register_tool(":worldeditadditions:farwand", {
|
|||
-- Right click when pointing at nothing
|
||||
-- print("[farwand] on_secondary_use", name)
|
||||
|
||||
local looking_pos, node_id = worldeditadditions.farwand.do_raycast(player)
|
||||
local looking_pos, node_id = worldeditadditions_tools.do_raycast(player)
|
||||
set_pos2(name, looking_pos)
|
||||
end
|
||||
})
|
|
@ -1,7 +1,8 @@
|
|||
local weac = worldeditadditions_core
|
||||
local wea_c = worldeditadditions_core
|
||||
local wea_t = worldeditadditions_tools
|
||||
|
||||
local function adjust_speed_relative(player, offset)
|
||||
local overrides = weac.player_get_physics_override(
|
||||
local overrides = wea_c.player_get_physics_override(
|
||||
player, "worldeditadditions_movetool"
|
||||
)
|
||||
if overrides == nil then overrides = {} end
|
||||
|
@ -10,7 +11,7 @@ local function adjust_speed_relative(player, offset)
|
|||
local src_speed = overrides.speed or 1
|
||||
local src_climb_speed = overrides.climb_speed or 1
|
||||
|
||||
weac.player_set_physics_override(
|
||||
wea_c.player_set_physics_override(
|
||||
player, "worldeditadditions_movetool", {
|
||||
speed = math.max(src_speed + offset, 0.5),
|
||||
climb_speed = math.max(src_climb_speed + offset, 0.5)
|
||||
|
@ -20,7 +21,7 @@ local function adjust_speed_relative(player, offset)
|
|||
-- })
|
||||
|
||||
-- Completely paranoid is me
|
||||
local overrides_after = weac.player_get_physics_override(
|
||||
local overrides_after = wea_c.player_get_physics_override(
|
||||
player, "worldeditadditions_movetool"
|
||||
)
|
||||
worldedit.player_notify(player:get_player_name(), "Movement speed is now x" .. tostring(overrides_after.speed))
|
||||
|
@ -36,7 +37,7 @@ local function use_secondary(player)
|
|||
end
|
||||
|
||||
|
||||
minetest.register_tool(":worldeditadditions:movetool", {
|
||||
wea_t.register_tool("movetool", {
|
||||
description = "WorldEditAdditions movement speed adjustment tool",
|
||||
inventory_image = "worldeditadditions_movement.png",
|
||||
|
|
@ -1,4 +1,5 @@
|
|||
local wea_c = worldeditadditions_core
|
||||
local wea_t = worldeditadditions_tools
|
||||
local wea = worldeditadditions
|
||||
local Vector3 = wea_c.Vector3
|
||||
|
||||
|
@ -25,7 +26,7 @@ local function pop_pos(player_name)
|
|||
end
|
||||
|
||||
|
||||
minetest.register_tool(":worldeditadditions:multiwand", {
|
||||
wea_t.register_tool("multiwand", {
|
||||
description = "WorldEditAdditions multi-point wand",
|
||||
inventory_image = "worldeditadditions_multiwand.png",
|
||||
|
17
worldeditadditions_tools/lib/do_raycast.lua
Normal file
|
@ -0,0 +1,17 @@
|
|||
local wea_c = worldeditadditions_core
|
||||
--- worldeditadditions.raycast() wrapper
|
||||
function worldeditadditions_tools.do_raycast(player)
|
||||
if player == nil then return nil end
|
||||
local player_name = player:get_player_name()
|
||||
|
||||
if worldeditadditions_tools.player_data[player_name] == nil then
|
||||
worldeditadditions_tools.player_data[player_name] = { maxdist = 1000, skip_liquid = true }
|
||||
end
|
||||
|
||||
local looking_pos, node_id = wea_c.raycast(
|
||||
player,
|
||||
worldeditadditions_tools.player_data[player_name].maxdist,
|
||||
worldeditadditions_tools.player_data[player_name].skip_liquid
|
||||
)
|
||||
return looking_pos, node_id
|
||||
end
|
94
worldeditadditions_tools/lib/register_tool.lua
Normal file
|
@ -0,0 +1,94 @@
|
|||
-- ██████ ███████ ██████ ██ ███████ ████████ ███████ ██████
|
||||
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
-- ██████ █████ ██ ███ ██ ███████ ██ █████ ██████
|
||||
-- ██ ██ ██ ██ ██ ██ ██ ██ ██ ██ ██
|
||||
-- ██ ██ ███████ ██████ ██ ███████ ██ ███████ ██ ██
|
||||
--
|
||||
-- ████████ ██████ ██████ ██
|
||||
-- ██ ██ ██ ██ ██ ██
|
||||
-- ██ ██ ██ ██ ██ ██
|
||||
-- ██ ██ ██ ██ ██ ██
|
||||
-- ██ ██████ ██████ ███████
|
||||
|
||||
--- WorldEditAdditions tool registration
|
||||
-- A wrapper for registering tools for WorldEditAdditions.
|
||||
-- @module worldeditadditions_core
|
||||
|
||||
local wea_t = worldeditadditions_tools
|
||||
|
||||
-- Helper functions --
|
||||
local function log_error(toolname, error_message)
|
||||
minetest.log("error", "register_tool("..toolname..") error: "..error_message)
|
||||
end
|
||||
|
||||
local function log_warn(toolname, error_message)
|
||||
minetest.log("warning", "register_tool("..toolname..") warning: "..error_message)
|
||||
end
|
||||
|
||||
|
||||
--- Registers a new WorldEditAdditions tool.
|
||||
-- @param tool string The name of the tool to register.
|
||||
-- @param options table A table of options for the tool:
|
||||
-- - `description` (string) A description of the tool.
|
||||
-- - `inventory_image` (string) The path to the image for the tool.
|
||||
-- - `on_use` (function) A function that is called when right click while pointing at something.
|
||||
-- - `on_place` (function) A function that is called when left click while pointing at something.
|
||||
-- - `on_secondary_use` (function) A function that is called when left click while pointing at nothing.
|
||||
-- - `stack_max` (number) The maximum number of the items that can be put in an ItemStack.
|
||||
-- - `groups` (table) A table of groups that the tool belongs to.
|
||||
local function register_tool(tool, options)
|
||||
|
||||
---
|
||||
-- 1: Validation
|
||||
---
|
||||
if type(options.description) ~= "string" then
|
||||
log_error(tool, "The description option is not a string.")
|
||||
return false
|
||||
end
|
||||
if type(options.inventory_image) ~= "string" then
|
||||
log_error(tool, "The inventory_image option is not a string.")
|
||||
return false
|
||||
end
|
||||
if not options.inventory_image:match("^.+%.png$") then
|
||||
log_error(tool, "The inventory_image option is not a valid image path.")
|
||||
return false
|
||||
end
|
||||
if type(options.on_use) ~= "function" then
|
||||
if options.on_use == nil then
|
||||
log_warn(tool, "The on_use option is nil.")
|
||||
else
|
||||
log_error(tool, "The on_use option is not a function.")
|
||||
return false
|
||||
end
|
||||
end
|
||||
if type(options.on_place) ~= "function" then
|
||||
if options.on_place == nil then
|
||||
log_warn(tool, "The on_place option is nil.")
|
||||
else
|
||||
log_error(tool, "The on_place option is not a function.")
|
||||
return false
|
||||
end
|
||||
end
|
||||
if type(options.on_secondary_use) ~= "function" then
|
||||
if options.on_secondary_use == nil then
|
||||
log_warn(tool, "The on_secondary_use option is nil.")
|
||||
else
|
||||
log_error(tool, "The on_secondary_use option is not a function.")
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
---
|
||||
-- 2: Normalisation
|
||||
---
|
||||
if not options.stack_max then options.stack_max = 1 end
|
||||
if not options.groups then options.groups = {wea = 1, wand = 1} end
|
||||
|
||||
---
|
||||
-- 3: Registration
|
||||
---
|
||||
minetest.register_tool(":worldeditadditions:" .. tool, options)
|
||||
wea_t.registered_tools[tool] = options
|
||||
end
|
||||
|
||||
return register_tool
|
|
@ -1,9 +1,9 @@
|
|||
--- If the settings object for the given player name doesn't exist, it is created.
|
||||
-- @param name The name of the player to ensure has a settings object.
|
||||
local function settings_init(name)
|
||||
if worldeditadditions.farwand.player_data[name] == nil then
|
||||
if worldeditadditions_tools.player_data[name] == nil then
|
||||
minetest.log("INFO", "Initialising settings for "..name)
|
||||
worldeditadditions.farwand.player_data[name] = {
|
||||
worldeditadditions_tools.player_data[name] = {
|
||||
maxdist = 1000,
|
||||
skip_liquid = true
|
||||
}
|
||||
|
@ -14,10 +14,10 @@ end
|
|||
-- @param string name The name of the player to get the setting for.
|
||||
-- @param string setting_name The name of the setting to fetch.
|
||||
-- @return any The value of the setting.
|
||||
function worldeditadditions.farwand.setting_get(name, setting_name)
|
||||
function worldeditadditions_tools.setting_get(name, setting_name)
|
||||
if setting_name == nil then return nil end
|
||||
settings_init(name)
|
||||
return worldeditadditions.farwand.player_data[name][setting_name]
|
||||
return worldeditadditions_tools.player_data[name][setting_name]
|
||||
end
|
||||
|
||||
--- Sets a given farwand setting for the given player name to the given value.
|
||||
|
@ -25,9 +25,9 @@ end
|
|||
-- @param string setting_name The name of the setting to set.
|
||||
-- @param any setting_value The value to set the setting to.
|
||||
-- @return bool Whether setting the setting was successful or not.
|
||||
function worldeditadditions.farwand.setting_set(name, setting_name, setting_value)
|
||||
function worldeditadditions_tools.setting_set(name, setting_name, setting_value)
|
||||
if setting_name == nil then return false end
|
||||
settings_init(name)
|
||||
worldeditadditions.farwand.player_data[name][setting_name] = setting_value
|
||||
worldeditadditions_tools.player_data[name][setting_name] = setting_value
|
||||
return true
|
||||
end
|
3
worldeditadditions_tools/mod.conf
Normal file
|
@ -0,0 +1,3 @@
|
|||
name = worldeditadditions_tools
|
||||
description = worldeditadditions: convenient tool items
|
||||
depends = worldedit, worldeditadditions, worldeditadditions_core
|
Before Width: | Height: | Size: 715 B After Width: | Height: | Size: 715 B |
Before Width: | Height: | Size: 181 B After Width: | Height: | Size: 181 B |
Before Width: | Height: | Size: 179 B After Width: | Height: | Size: 179 B |
Before Width: | Height: | Size: 199 B After Width: | Height: | Size: 199 B |
Before Width: | Height: | Size: 229 B After Width: | Height: | Size: 229 B |