From 78e166e14a387f825d52d750eccec8a238d199c6 Mon Sep 17 00:00:00 2001 From: Wuzzy Date: Mon, 27 Dec 2021 17:29:55 +0100 Subject: [PATCH] Replace screwdriver mod with screwdriver2 --- CREDITS.md | 13 +- mods/lzr_laser/blocks.lua | 2 +- mods/lzr_levels/init.lua | 2 +- mods/lzr_levels/mod.conf | 2 +- mods/screwdriver/README.txt | 21 -- mods/screwdriver/init.lua | 183 ------------- mods/screwdriver/license.txt | 50 ---- mods/screwdriver/mod.conf | 2 - mods/screwdriver/sounds/screwdriver_use.1.ogg | Bin 18349 -> 0 bytes mods/screwdriver/sounds/screwdriver_use.2.ogg | Bin 18318 -> 0 bytes mods/screwdriver/sounds/screwdriver_use.3.ogg | Bin 18036 -> 0 bytes mods/screwdriver/sounds/screwdriver_use.4.ogg | Bin 19918 -> 0 bytes mods/screwdriver/textures/screwdriver.png | Bin 182 -> 0 bytes mods/screwdriver2/LICENSE.txt | 13 + mods/screwdriver2/README.md | 5 + mods/screwdriver2/init.lua | 249 ++++++++++++++++++ mods/screwdriver2/mod.conf | 3 + mods/screwdriver2/pointed.lua | 91 +++++++ mods/screwdriver2/textures/screwdriver2.png | Bin 0 -> 286 bytes .../textures/screwdriver2_screw.png | Bin 0 -> 273 bytes 20 files changed, 368 insertions(+), 268 deletions(-) delete mode 100644 mods/screwdriver/README.txt delete mode 100644 mods/screwdriver/init.lua delete mode 100644 mods/screwdriver/license.txt delete mode 100644 mods/screwdriver/mod.conf delete mode 100644 mods/screwdriver/sounds/screwdriver_use.1.ogg delete mode 100644 mods/screwdriver/sounds/screwdriver_use.2.ogg delete mode 100644 mods/screwdriver/sounds/screwdriver_use.3.ogg delete mode 100644 mods/screwdriver/sounds/screwdriver_use.4.ogg delete mode 100644 mods/screwdriver/textures/screwdriver.png create mode 100644 mods/screwdriver2/LICENSE.txt create mode 100644 mods/screwdriver2/README.md create mode 100644 mods/screwdriver2/init.lua create mode 100644 mods/screwdriver2/mod.conf create mode 100644 mods/screwdriver2/pointed.lua create mode 100644 mods/screwdriver2/textures/screwdriver2.png create mode 100644 mods/screwdriver2/textures/screwdriver2_screw.png diff --git a/CREDITS.md b/CREDITS.md index 8945835..be6f127 100644 --- a/CREDITS.md +++ b/CREDITS.md @@ -6,7 +6,7 @@ External mods used: * `show_wielded_item` * `no_fall_damage` -* `player_api`, `xpanes`, `stairs`, `screwdriver` +* `player_api`, `xpanes`, `stairs`, `screwdriver2` * `xdecor` (heavily modified, non-free textures removed) --- @@ -17,6 +17,7 @@ Textures: - Crosshair, wieldhand, `smoke_puff.png`: trivial textures by Wuzzy (CC0) - Emitter, detector textures: Derivate works of xdecor textures by jp (CC0) - Mirror textures: by Wuzzy (CC0) +- Screwdriver texture: by 12Me21 (CC0) Models: - Player models comes from Minetest Game (see license of Minetest Game 5.4.1 for details) @@ -25,16 +26,10 @@ Sounds: - All sounds come from Minetest Game (see license of Minetest Game 5.4.1 for details) - Exception 1: Ocean waves come from https://freesound.org/people/inchadney/sounds/135805/ - by inchadney (CC BY 3.0) -- Excecption 2: Screwdriver sounds - - Created by InspectorJ of Freesound.org (CC BY 3.0): - - `screwdriver_use.1.ogg` - - `screwdriver_use.2.ogg` - - `screwdriver_use.3.ogg` - - `screwdriver_use.4.ogg` - - (Original file name: Screwdriver, Ratchet, C.wav) Code: -- `player_api`, `stairs`, `xpanes`, `screwdriver` come from Minetest Game 5.4.1 (mods modified for Lazarr!), by Minetest Game developers (see README.txt in those folders) +- `player_api`, `stairs`, `xpanes` come from Minetest Game 5.4.1 (mods modified for Lazarr!), by Minetest Game developers (see README.txt in those folders) +- `screwdriver2` by 12Me21, modified version (CC0) - `xdecor` by jp (BSD-3 clause license; massively-simplified version from the original) Other stuff: diff --git a/mods/lzr_laser/blocks.lua b/mods/lzr_laser/blocks.lua index 54126fd..7a0f289 100644 --- a/mods/lzr_laser/blocks.lua +++ b/mods/lzr_laser/blocks.lua @@ -105,7 +105,7 @@ local register_element = function(subname, def) local def_core = table.copy(def) def_core.after_place_node = full_update def_core.after_dig_node = full_update - def_core.after_rotate = after_rotate + def_core._after_rotate = after_rotate def_core.sounds = lzr_sounds.node_sound_wood_defaults() def_core._lzr_active = "lzr_laser:"..subname.."_on" def_core.tiles = def.tiles_off diff --git a/mods/lzr_levels/init.lua b/mods/lzr_levels/init.lua index bc5dc3f..cbacf9a 100644 --- a/mods/lzr_levels/init.lua +++ b/mods/lzr_levels/init.lua @@ -75,7 +75,7 @@ end local function reset_inventory(player) clear_inventory(player) local inv = player:get_inventory() - inv:add_item("main", "screwdriver:screwdriver") + inv:add_item("main", "screwdriver2:screwdriver") end local current_level = nil diff --git a/mods/lzr_levels/mod.conf b/mods/lzr_levels/mod.conf index f3cd865..0f476d5 100644 --- a/mods/lzr_levels/mod.conf +++ b/mods/lzr_levels/mod.conf @@ -1,2 +1,2 @@ name = lzr_levels -depends = lzr_core, lzr_mapgen, lzr_globals +depends = lzr_core, lzr_mapgen, lzr_globals, screwdriver2 diff --git a/mods/screwdriver/README.txt b/mods/screwdriver/README.txt deleted file mode 100644 index 1f762ee..0000000 --- a/mods/screwdriver/README.txt +++ /dev/null @@ -1,21 +0,0 @@ -Minetest Game mod: screwdriver -============================== -See license.txt for license information. - -License of source code ----------------------- -Originally by RealBadAngel, Maciej Kasatkin (LGPLv2.1+) -Various Minetest developers and contributors (LGPLv2.1+) - -License of media (textures) ---------------------------- -Created by Gambit (CC BY-SA 3.0): - screwdriver.png - -Created by InspectorJ of Freesound.org (CC BY 3.0): - screwdriver_use.1.ogg - screwdriver_use.2.ogg - screwdriver_use.3.ogg - screwdriver_use.4.ogg - - (Original file name: Screwdriver, Ratchet, C.wav) diff --git a/mods/screwdriver/init.lua b/mods/screwdriver/init.lua deleted file mode 100644 index 3df7335..0000000 --- a/mods/screwdriver/init.lua +++ /dev/null @@ -1,183 +0,0 @@ --- screwdriver/init.lua - -screwdriver = {} - --- Load support for MT game translation. -local S = minetest.get_translator("screwdriver") - -local USES_DEFAULT = 200 - -screwdriver.ROTATE_FACE = 1 -screwdriver.ROTATE_AXIS = 2 -screwdriver.disallow = function(pos, node, user, mode, new_param2) - return false -end -screwdriver.rotate_simple = function(pos, node, user, mode, new_param2) - if mode ~= screwdriver.ROTATE_FACE then - return false - end -end - --- For attached wallmounted nodes: returns true if rotation is valid --- simplified version of minetest:builtin/game/falling.lua#L148. -local function check_attached_node(pos, rotation) - local d = minetest.wallmounted_to_dir(rotation) - local p2 = vector.add(pos, d) - local n = minetest.get_node(p2).name - local def2 = minetest.registered_nodes[n] - if def2 and not def2.walkable then - return false - end - return true -end - -screwdriver.rotate = {} - -local facedir_tbl = { - [screwdriver.ROTATE_FACE] = { - [0] = 1, [1] = 2, [2] = 3, [3] = 0, - [4] = 5, [5] = 6, [6] = 7, [7] = 4, - [8] = 9, [9] = 10, [10] = 11, [11] = 8, - [12] = 13, [13] = 14, [14] = 15, [15] = 12, - [16] = 17, [17] = 18, [18] = 19, [19] = 16, - [20] = 21, [21] = 22, [22] = 23, [23] = 20, - }, - [screwdriver.ROTATE_AXIS] = { - [0] = 4, [1] = 4, [2] = 4, [3] = 4, - [4] = 8, [5] = 8, [6] = 8, [7] = 8, - [8] = 12, [9] = 12, [10] = 12, [11] = 12, - [12] = 16, [13] = 16, [14] = 16, [15] = 16, - [16] = 20, [17] = 20, [18] = 20, [19] = 20, - [20] = 0, [21] = 0, [22] = 0, [23] = 0, - }, -} - -screwdriver.rotate.facedir = function(pos, node, mode) - local rotation = node.param2 % 32 -- get first 5 bits - local other = node.param2 - rotation - rotation = facedir_tbl[mode][rotation] or 0 - return rotation + other -end - -screwdriver.rotate.colorfacedir = screwdriver.rotate.facedir - -local wallmounted_tbl = { - [screwdriver.ROTATE_FACE] = {[2] = 5, [3] = 4, [4] = 2, [5] = 3, [1] = 0, [0] = 1}, - [screwdriver.ROTATE_AXIS] = {[2] = 1, [3] = 0, [4] = 1, [5] = 0, [1] = 3, [0] = 2} -} - -screwdriver.rotate.wallmounted = function(pos, node, mode) - local rotation = node.param2 % 8 -- get first 3 bits - local other = node.param2 - rotation - rotation = wallmounted_tbl[mode][rotation] or 0 - if minetest.get_item_group(node.name, "attached_node") ~= 0 then - -- find an acceptable orientation - for i = 1, 5 do - if not check_attached_node(pos, rotation) then - rotation = wallmounted_tbl[mode][rotation] or 0 - else - break - end - end - end - return rotation + other -end - -screwdriver.rotate.colorwallmounted = screwdriver.rotate.wallmounted - --- Handles rotation -screwdriver.handler = function(itemstack, user, pointed_thing, mode, uses) - if pointed_thing.type ~= "node" then - return - end - - local pos = pointed_thing.under - local player_name = user and user:get_player_name() or "" - - if minetest.is_protected(pos, player_name) and not minetest.check_player_privs(player_name, "protection_bypass") then - minetest.record_protection_violation(pos, player_name) - return - end - - local node = minetest.get_node(pos) - local ndef = minetest.registered_nodes[node.name] - if not ndef then - return itemstack - end - -- Node MUST have 'rotatable' group - if not ndef.groups.rotatable then - return itemstack - end - if mode == screwdriver.ROTATE_AXIS and ndef and ndef.on_rightclick and - ((not user) or (user and not user:get_player_control().sneak)) then - return ndef.on_rightclick(pos, node, user, itemstack, - pointed_thing) or itemstack - end - - -- can we rotate this paramtype2? - local fn = screwdriver.rotate[ndef.paramtype2] - if not fn and not ndef.on_rotate then - return itemstack - end - - local should_rotate = true - local new_param2 - if fn then - new_param2 = fn(pos, node, mode) - else - new_param2 = node.param2 - end - - -- Node provides a handler, so let the handler decide instead if the node can be rotated - if ndef.on_rotate == false then - return - elseif ndef.on_rotate == "simple" then - if mode ~= screwdriver.ROTATE_FACE then - return - end - elseif ndef.on_rotate then - -- Copy pos and node because callback can modify it - local result = ndef.on_rotate(vector.new(pos), - {name = node.name, param1 = node.param1, param2 = node.param2}, - user, mode, new_param2) - minetest.sound_play({name="screwdriver_use", gain=0.5}, {pos=pos, max_hear_distance=16}, true) - if result == false then -- Disallow rotation - return itemstack - elseif result == true then - should_rotate = false - end - elseif ndef.on_rotate == false then - return itemstack - elseif ndef.can_dig and not ndef.can_dig(pos, user) then - return itemstack - end - - if should_rotate and new_param2 ~= node.param2 then - node.param2 = new_param2 - minetest.swap_node(pos, node) - minetest.check_for_falling(pos) - minetest.sound_play({name="screwdriver_use", gain=0.5}, {pos=pos, max_hear_distance=16}, true) - if ndef.after_rotate then - ndef.after_rotate(vector.new(pos)) - end - end - - return itemstack -end - --- Screwdriver -minetest.register_tool("screwdriver:screwdriver", { - description = S("Mirror Rotator") .. "\n" .. S("Punch to rotate face, place to rotates axis"), - inventory_image = "screwdriver.png", - groups = {tool = 1}, - on_use = function(itemstack, user, pointed_thing) - screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, USES_DEFAULT) - return itemstack - end, - on_place = function(itemstack, user, pointed_thing) - screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_AXIS, USES_DEFAULT) - return itemstack - end, -}) - - diff --git a/mods/screwdriver/license.txt b/mods/screwdriver/license.txt deleted file mode 100644 index d9b721b..0000000 --- a/mods/screwdriver/license.txt +++ /dev/null @@ -1,50 +0,0 @@ -License of source code ----------------------- - -GNU Lesser General Public License, version 2.1 -Copyright (C) 2013-2016 RealBadAngel, Maciej Kasatkin -Copyright (C) 2013-2016 Various Minetest developers and contributors - -This program is free software; you can redistribute it and/or modify it under the terms -of the GNU Lesser General Public License as published by the Free Software Foundation; -either version 2.1 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 Lesser General Public License for more details: -https://www.gnu.org/licenses/old-licenses/lgpl-2.1.html - - -Licenses of media (textures) ----------------------------- - -Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) -Copyright (C) 2013-2016 Gambit - -You are free to: -Share — copy and redistribute the material in any medium or format. -Adapt — remix, transform, and build upon the material for any purpose, even commercially. -The licensor cannot revoke these freedoms as long as you follow the license terms. - -Under the following terms: - -Attribution — You must give appropriate credit, provide a link to the license, and -indicate if changes were made. You may do so in any reasonable manner, but not in any way -that suggests the licensor endorses you or your use. - -ShareAlike — If you remix, transform, or build upon the material, you must distribute -your contributions under the same license as the original. - -No additional restrictions — You may not apply legal terms or technological measures that -legally restrict others from doing anything the license permits. - -Notices: - -You do not have to comply with the license for elements of the material in the public -domain or where your use is permitted by an applicable exception or limitation. -No warranties are given. The license may not give you all of the permissions necessary -for your intended use. For example, other rights such as publicity, privacy, or moral -rights may limit how you use the material. - -For more details: -http://creativecommons.org/licenses/by-sa/3.0/ diff --git a/mods/screwdriver/mod.conf b/mods/screwdriver/mod.conf deleted file mode 100644 index 38051ef..0000000 --- a/mods/screwdriver/mod.conf +++ /dev/null @@ -1,2 +0,0 @@ -name = screwdriver -description = A screwdriver allows rotating blocks diff --git a/mods/screwdriver/sounds/screwdriver_use.1.ogg b/mods/screwdriver/sounds/screwdriver_use.1.ogg deleted file mode 100644 index ca25d92c8484683cbf7e87f11db5bec5e7a7f67d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18349 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 diff --git a/mods/screwdriver/sounds/screwdriver_use.2.ogg b/mods/screwdriver/sounds/screwdriver_use.2.ogg deleted file mode 100644 index fff44d907fe7b17b67c6262e53a43f6e393f41ec..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18318 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 diff --git a/mods/screwdriver/sounds/screwdriver_use.3.ogg b/mods/screwdriver/sounds/screwdriver_use.3.ogg deleted file mode 100644 index a11b3e53fdfc70fa00e9a6dd4e32b27fb43f2516..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18036 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 diff --git a/mods/screwdriver/textures/screwdriver.png b/mods/screwdriver/textures/screwdriver.png deleted file mode 100644 index e20f063ae4728abb1f113ec67f8d9aa26dc9e784..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPHF4e$wZ^~o&sQRU0b$k@@HkYFhM z^5x69X=XifR^?u5D@xrjUc49=7nhrxTUlATZ{NP1>7I!|jf^Ehe!&b5&u*jvIp&@& zjv*Y^lM@0G8W@%-XgGh>4C%;}_3 + + Everyone is permitted to copy and distribute verbatim or modified + copies of this license document, and changing it is allowed as long + as the name is changed. + + DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. You just DO WHAT THE FUCK YOU WANT TO. \ No newline at end of file diff --git a/mods/screwdriver2/README.md b/mods/screwdriver2/README.md new file mode 100644 index 0000000..4ef01a8 --- /dev/null +++ b/mods/screwdriver2/README.md @@ -0,0 +1,5 @@ +Improved node rotation tool. + +![bbcode>markdown](http://kland.smilebasicsource.com/i/kwdeu.png) + +https://forum.minetest.net/viewtopic.php?f=9&t=20856 diff --git a/mods/screwdriver2/init.lua b/mods/screwdriver2/init.lua new file mode 100644 index 0000000..9f5b4a5 --- /dev/null +++ b/mods/screwdriver2/init.lua @@ -0,0 +1,249 @@ +local S = minetest.get_translator("screwdriver2") + +if not minetest.raycast then + minetest.log("error", "screwdriver2 requires minetest version 5.0 or newer") + return +end + +screwdriver2 = {} + +local function rotate_simple(_, _, _, _, new_param2) + if new_param2 % 32 > 3 then return false end +end + +-- If the screwdriver mod is not installed, create a fake screwdriver variable. +-- (This mod has an optional dependancy on screwdriver, so minetest loads screwdriver first if it exists.) +-- - Some mods will only set on_rotate when `screwdriver` exists. +-- - Mods may expect `screwdiver` to exist if `on_rotate` is called. +if not minetest.global_exists("screwdriver") then + screwdriver = { + ROTATE_FACE = 1, + ROTATE_AXIS = 2, + rotate_simple = rotate_simple, + disallow = false, -- I doubt anyone actually used screwdriver.disallow but whatever. + } +end + +local get_pointed = dofile(minetest.get_modpath("screwdriver2").."/pointed.lua") + +-- Functions to choose rotation based on pointed location +local insanity_2 = {xy = 1, yz = 1, zx = 1; zy = -1, yx = -1, xz = -1} -- Don't worry about this +local function push_edge(normal, point) + local biggest = 0 + local biggest_axis + local normal_axis + -- Find the normal axis, and the axis of the with the + -- greatest magnitude (other than the normal axis) + for axis in pairs(point) do + if normal[axis] ~= 0 then + normal_axis = axis + elseif math.abs(point[axis])>biggest then + biggest = math.abs(point[axis]) + biggest_axis = axis + end + end + -- Find the third axis, which is the one to rotate around + if normal_axis and biggest_axis then + + for axis in pairs(point) do + if axis ~= normal_axis and axis ~= biggest_axis then + -- Decide which direction to rotate (+ or -) + return axis, insanity_2[normal_axis..biggest_axis] * math.sign(normal[normal_axis] * point[biggest_axis]) + end + end + end + return "y", 0 +end +local function rotate_face(normal, _) + -- Find the normal axis + for axis, value in pairs(normal) do + if value ~= 0 then + return axis, math.sign(value) + end + end + return "y", 0 +end + +-- Numbers taken from https://forum.minetest.net/viewtopic.php?p=73195&sid=1d2d2e4e76ce2ef9c84646481a4b84bc#p73195 +-- "How to rotate (clockwise) by axis from any facedir:" +-- "(this will be made into a lua function)" +-- 5 years later... +local facedir_cycles = { + x = {{12,13,14,15},{16,19,18,17},{ 0, 4,22, 8},{ 1, 5,23, 9},{ 2, 6,20,10},{ 3, 7,21,11}}, + y = {{ 0, 1, 2, 3},{20,23,22,21},{ 4,13,10,19},{ 8,17, 6,15},{12, 9,18, 7},{16, 5,14,11}}, + z = {{ 4, 5, 6, 7},{ 8,11,10, 9},{ 0,16,20,12},{ 1,17,21,13},{ 2,18,22,14},{ 3,19,23,15}}, +} +local wallmounted_cycles = { + x = {0, 4, 1, 5}, + y = {4, 2, 5, 3}, + z = {0, 3, 1, 2}, +} +-- Functions to rotate a facedir/wallmounted value around an axis by a certain amount +local rotate = { + -- Facedir: lower 5 bits used for direction, 0 - 23 + facedir = function(param2, axis, amount) + local facedir = param2 % 32 + for _, cycle in ipairs(facedir_cycles[axis]) do + -- Find the current facedir + -- Minetest adds table.indexof, but I refuse to use it because it returns -1 rather than nil + for i, fd in ipairs(cycle) do + if fd == facedir then + return param2 - facedir + cycle[1+(i-1 + amount) % 4] -- If only Lua didn't use 1 indexing... + end + end + end + return param2 + end, + -- Wallmounted: lower 3 bits used, 0 - 5 + wallmounted = function(param2, axis, amount) + local wallmounted = param2 % 8 + for i, wm in ipairs(wallmounted_cycles[axis]) do + if wm == wallmounted then + return param2 - wallmounted + wallmounted_cycles[axis][1+(i-1 + amount) % 4] + end + end + return param2 + end +} +rotate.colorfacedir = rotate.facedir +rotate.colorwallmounted = rotate.wallmounted +--Todo: maybe support degrotate? + +local function rect(angle, radius) + return math.cos(2*math.pi * angle) * radius, math.sin(2*math.pi * angle) * radius +end + +-- Generate the screwdriver particle effects +local other_axes = {x = {"y","z"}, y = {"z","x"}, z = {"x","y"}} +local function particle_ring(pos, axis, direction) + local axis2, axis3 = unpack(other_axes[axis]) + local particle_pos = vector.new() + local particle_vel = vector.new() + for i = 0, 0.999, 1/6 do + particle_pos[axis3], particle_pos[axis2] = rect(i, 0.5^0.5) + particle_vel[axis3], particle_vel[axis2] = rect(i - 1/4 * direction, 2) + + minetest.add_particle({ + pos = vector.add(pos, particle_pos), + velocity = particle_vel, + acceleration = vector.multiply(particle_pos, -7), + expirationtime = 0.25, + size = 2, + texture = "screwdriver2.png", + }) + -- Smaller particles that last slightly longer, to give the illusion of + -- the particles disappearing smoothly + -- ? + -- minetest.add_particle({ + -- pos = vector.add(pos, particle_pos), + -- velocity = particle_vel, + -- acceleration = vector.multiply(particle_pos, -7), + -- expirationtime = 0.3, + -- size = 1, + -- texture = "screwdriver2.png", + -- }) + end +end + +-- Main +-- Idea: split this into 2 functions +-- 1: on_use parameters -> axis/amount/etc. +-- 2: param2/axis/amount/etc. -> new param2 +function screwdriver.use(itemstack, player, pointed_thing, is_right_click) + if pointed_thing.type ~= "node" then return end + local pos = pointed_thing.under + + -- Check protection + local player_name = player:get_player_name() + if minetest.is_protected(pos, player_name) then + minetest.record_protection_violation(pos, player_name) + return + end + + -- Get node info + local node = minetest.get_node_or_nil(pos) + if not node then return end + local def = minetest.registered_nodes[node.name] + if not def then return end -- probably unnessesary + + -- Node MUST have 'rotatable' group + if not def.groups.rotatable then + return itemstack + end + + local on_rotate = def.on_rotate + if on_rotate == false then return end + --if on_rotate == nil and def.can_dig and not def.can_dig(vector.new(pos), player) then return end + + -- Choose rotation function based on paramtype2 (facedir/wallmounted) + local rotate_function = rotate[def.paramtype2] + if not rotate_function then return end + + -- Choose rotation axis/direction and param2 based on click type and pointed location + local axis, amount + local normal, point = get_pointed(player, pointed_thing) + if not normal or vector.length(normal) == 0 then return end -- Raycast failed or player is inside selection box + + local control = player:get_player_control() + if is_right_click then + axis, amount = rotate_face(normal, point) + -- This line intentionally left blank. + else + axis, amount = push_edge(normal, point) + if control.sneak then amount = -amount end + end + local new_param2 = rotate_function(node.param2, axis, amount) + + -- Calculate particle position + local particle_offset = vector.new() + particle_offset[axis] = point[axis]--math.sign(normal[axis]) * 0.5 + + -- Handle node's on_rotate function + local handled + if type(on_rotate) == "function" then + -- If a mod is loaded after screwdriver but before screwdriver2, + -- it will still end up using the old `rotate_simple` function. + -- So, we'll check that here, and override it in that case. + if on_rotate == screwdriver.rotate_simple then on_rotate = rotate_simple end + local result = on_rotate( + vector.new(pos), + table.copy(node), + player, + is_right_click and 2 or 1, -- Deprecated + new_param2, + -- New: + axis, -- "x", "y", or "z" + amount, -- 90 degrees = 1, etc. + rotate_function -- function(node.param2, axis, amount) -> new_param2 + ) + if result == false then + return + elseif result == true then + handled = true + end + end + + -- Draw particles (TODO: check if rotation was actually done) + particle_ring(vector.add(pos, particle_offset), axis, amount) + -- TODO: Play sound + + -- Replace node + if not handled then + if new_param2 == node.param2 then return end -- no rotation was done + node.param2 = new_param2 + minetest.swap_node(pos, node) + end + minetest.check_for_falling(pos) + if def._after_rotate then def._after_rotate(pos) end +end + +minetest.register_tool("screwdriver2:screwdriver",{ + description = S("Screwdriver").."\n"..S("Punch to push edge, place to rotate face"), + inventory_image = "screwdriver2.png", + on_use = function(itemstack, player, pointed_thing) + return screwdriver.use(itemstack, player, pointed_thing, false) + end, + on_place = function(itemstack, player, pointed_thing) + return screwdriver.use(itemstack, player, pointed_thing, true) + end, +}) diff --git a/mods/screwdriver2/mod.conf b/mods/screwdriver2/mod.conf new file mode 100644 index 0000000..39e3d6a --- /dev/null +++ b/mods/screwdriver2/mod.conf @@ -0,0 +1,3 @@ +name = screwdriver2 +description = A more intuitive node rotation tool. +optional_depends = screwdriver, worldedit_commands, default \ No newline at end of file diff --git a/mods/screwdriver2/pointed.lua b/mods/screwdriver2/pointed.lua new file mode 100644 index 0000000..c4eceee --- /dev/null +++ b/mods/screwdriver2/pointed.lua @@ -0,0 +1,91 @@ +-- returns function: +-- -------------------------------------------------------------------------- +-- normal, point, box_id = function(player, pointed_thing) +-- ========================================================================== +-- normal - unit vector pointing out from the face which is pointed at +-- point - point (relative to the node position) which is being pointed at +-- box_id - index of the selection box which is being pointed at +-- ========================================================================== + +-- Try to get the exact point the player is looking at. +-- There is some inaccuracy due to the client-side view bobbing animation. +-- To prevent the wrong node face from being found, it checks to make sure +-- the position returned by the raycaster matches pointed_thing. +-- If it doesn't match, the raycast is done again with slight offsets. +-- This will never return the WRONG node face, but may not be able to find the correct one in rare situations. + +local function disp(...) + for _, x in ipairs({...}) do + minetest.chat_send_all(dump(x)) + end +end + +local bob_amount = (minetest.settings:get("view_bobbing_amount") or 1) + +-- Calculate offsets for one cycle of the view bobbing animation +-- https://github.com/minetest/minetest/blob/b298b0339c79db7f5b3873e73ff9ea0130f05a8a/src/camera.cpp#L344 +local check_points = {} +for i = 0, 0.99999, 1/20 do + local bobfrac = i * 2 % 1 + local bobdir = i < 0.5 and 1 or -1 + local bobtmp = math.sin(bobfrac ^ 1.2 * math.pi) + local x = (0.3 * bobdir * math.sin(bobfrac * math.pi)) * bob_amount/10 -- Why is this divided by 10? + local y = (-0.28 * bobtmp ^ 2) * bob_amount/10 + -- I'm not exactly sure how the roll actually works, and it has a very small effect. + --local roll = -0.03 * bobdir * bobtmp * math.pi * bob_amount/10 + table.insert(check_points, { + x = x,-- * math.cos(roll) - y * math.sin(roll), + y = y,-- * math.cos(roll) - x * math.sin(roll), + -- no Z offset + }) +end + +-- Get the start and end points for the raycaster +local function get_look_dir(player) + local placer_pos = player:get_pos() + placer_pos.y = placer_pos.y + player:get_properties().eye_height + return placer_pos, vector.multiply(player:get_look_dir(), 20) +end + +local function try_raycast(pos, look_dir, pointed_thing, offset) + if offset then + --disp(offset.x .. " " .. offset.z) + pos = vector.add(pos, offset) + end + local raycast = minetest.raycast(pos, vector.add(pos, look_dir), false) + local pointed = raycast:next() + if pointed and pointed.type == "node" then + -- minetest.add_particle({ + -- pos = pointed.intersection_point, + -- expirationtime = 5, + -- size = 0.1, + -- texture = "heart.png", + -- glow = 14, + -- }) + if vector.equals(pointed.under, pointed_thing.under) and vector.equals(pointed.above, pointed_thing.above) then + return + pointed.intersection_normal, + vector.subtract(pointed.intersection_point, pointed.under), + pointed.box_id + end + end +end + +-- Get the point the player is looking at +return function(player, pointed_thing) + local pos, look_dir = get_look_dir(player) + + local pitch = player:get_look_vertical() + local yaw = player:get_look_horizontal() + --disp(angle) + for i, offset in ipairs(check_points) do + local a, b, c = try_raycast(pos, look_dir, pointed_thing, i > 1 and { -- (don't apply offset for the first check) + x = math.sin(-yaw) * math.sin(pitch) * offset.y + math.cos(yaw) * offset.x, + y = math.cos(pitch) * offset.y, + z = math.cos(-yaw) * math.sin(pitch) * offset.y + math.sin(yaw) * offset.x, + }) + if a then return a, b, c end + end + + minetest.log("warning", "Could not get pointed position") +end \ No newline at end of file diff --git a/mods/screwdriver2/textures/screwdriver2.png b/mods/screwdriver2/textures/screwdriver2.png new file mode 100644 index 0000000000000000000000000000000000000000..10d24d6a65147daa21f86a0d7b8fea5050cb8d44 GIT binary patch literal 286 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`jKx9jP7LeL$-D$|SkfJR9T^xl z_H+M9WCij$3p^r=85sBugD~Uq{1qucL8%hgh?3y^w370~qEv=}#LT=BJwMkFg)(D3 zQ$0figD*u3fvS2vT^vI!{O9&t^ED_4xa?d%-JptFSUCTIq>fIGPOgs4sZ$FCI8MI` zvavgT#@oQ<$&6zM^Ug;$M+e-y*7|GR)^NKBr6~tX<+3`X1Dtk7F$A#OTA#wawng^X zq+_n1dfH`~;_vBBYLR7{@@%_~=O)K9@}5Nxe@tp=Zc*`U5>oXPo6?~g$|Nw|@zaX- aGrR`>k7rvKF$)46#^CAd=d#Wzp$Pz0#LT=By}Z;C1rt33 zJwsy?=IAP*qDD^_#}Etuvl9;THYfGRYG?^r?m7Vu4++6*93ZqDJk8eTpvzG?~uC)j(Q%*flt?#08 zZl~Ighqr$-`_E%&Q`R=x@N2u`m4msd3=0xMUmWq?>DGGt(R7K;jP~mv%H||I%>_D! N!PC{xWt~$(695feU&H_a literal 0 HcmV?d00001