From 04be5c6e9b71643d9e9be90750873d60abdd4102 Mon Sep 17 00:00:00 2001 From: Jaidyn Ann <10477760+JadedCtrl@users.noreply.github.com> Date: Sun, 19 May 2024 18:43:51 -0500 Subject: [PATCH 1/4] Tweak Esperanto translation --- locale/spears.eo.tr | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/locale/spears.eo.tr b/locale/spears.eo.tr index 1e636ad..ff8b1d8 100644 --- a/locale/spears.eo.tr +++ b/locale/spears.eo.tr @@ -1,9 +1,9 @@ # textdomain: spears -Stone Spear=Ŝtona Ponardego -Iron Spear=Fera Ponardego -Steel Spear=Ŝtala Ponardego -Copper Spear=Kupra Ponardego -Bronze Spear=Bronza Ponardego -Obsidian Spear=Obsidiana Ponardego -Diamond Spear=Diamanta Ponardego -Golden Spear=Ora Ponardego +Stone Spear=Ŝtona ponardego +Iron Spear=Fera ponardego +Steel Spear=Ŝtala ponardego +Copper Spear=Kupra ponardego +Bronze Spear=Bronza ponardego +Obsidian Spear=Obsidiana ponardego +Diamond Spear=Diamanta ponardego +Golden Spear=Ora ponardego From add5df5214d2ab104a630eadb398c079bcc0267c Mon Sep 17 00:00:00 2001 From: Christian Sirolli Date: Wed, 11 Dec 2024 15:38:21 +0000 Subject: [PATCH 2/4] Added fallback value in minetest.log on line 14 --- init.lua | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/init.lua b/init.lua index 1747f20..138f143 100644 --- a/init.lua +++ b/init.lua @@ -11,4 +11,4 @@ dofile(minetest.get_modpath("spears").."/functions.lua") dofile(minetest.get_modpath("spears").."/tools.lua") -minetest.log("action", "[MOD] Spears loaded with throwing speed " .. minetest.settings:get("spears_throw_speed") .. " and drag coeff. " .. minetest.settings:get("spears_drag_coeff")) +minetest.log("action", "[MOD] Spears loaded with throwing speed " .. (minetest.settings:get("spears_throw_speed") or 13) .. " and drag coeff. " .. (minetest.settings:get("spears_drag_coeff") or 0.1)) From 2335f45b7193ce67d43bb568ffa03fb04b512aca Mon Sep 17 00:00:00 2001 From: Echoes Date: Sun, 22 Dec 2024 10:38:40 +0000 Subject: [PATCH 3/4] Update file CHANGELOG --- CHANGELOG | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG b/CHANGELOG index 508938a..d095b09 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,6 @@ +Update 3.1.2 +- Fix initial loading with fallback values for logging and Esperanto translations tweaks. + Update 3.1.1 - Fix all initial settings values and completely deprecate defaults.lua From fcfd6f64d73972a116dd2aaaba31c690864b625a Mon Sep 17 00:00:00 2001 From: Andrea Date: Fri, 27 Dec 2024 11:33:07 +0100 Subject: [PATCH 4/4] Version 3.2.0 --- CHANGELOG | 5 +++ README.md => README | 22 ++++++++------ defaults.lua | 74 +++++++++++++++++++++++++++++---------------- functions.lua | 53 +++++++++++++++----------------- init.lua | 17 +++-------- mod.conf | 3 +- settingtypes.txt | 3 ++ tools.lua | 42 ++++++++++++------------- 8 files changed, 120 insertions(+), 99 deletions(-) rename README.md => README (65%) diff --git a/CHANGELOG b/CHANGELOG index d095b09..6345d77 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,3 +1,8 @@ +Version 3.2.0 +- Moving from minetest. to core. API calls for future-proof newcomers-friendly maintenance. +- Properly manage default settings values in defaults.lua +- Addied full_punch_interval parameter to settings + Update 3.1.2 - Fix initial loading with fallback values for logging and Esperanto translations tweaks. diff --git a/README.md b/README similarity index 65% rename from README.md rename to README index b6dfc9e..c094a77 100644 --- a/README.md +++ b/README @@ -1,30 +1,32 @@ -=== SPEARS for MINETEST by Echoes91 === +=== SPEARS for LUANTI by Echoes91 === -This mod adds spears to Minetest. +This mod adds spears to Luanti (formerly to Minetest). How to download: If you have this file, you probably know. If you're reading from gitlab.com, you already know. +But in doubt, https://gitlab.com/echoes91/spears/-/archive/master/spears-master.zip Forum topic: -https://forum.minetest.net/viewtopic.php?f=11&t=13367 +https://forum.luanti.org/viewtopic.php?t=13367 How to install: -Minetest content DB is the way! -http://wiki.minetest.com/wiki/Installing_Mods +Content DB is the way! +https://wiki.luanti.org/Mods#Installation How to use the mod: -Craft a spear with | | | (material) | - | | stick | | - | stick | | |, +Craft a spear with | | | material | + | | stick | | + | stick | | | works also mirrored. + Spears can be thrown using right mouse button, they either hurt someone or stick where they land on; damage depends on speed and material, flight trajectory is ballistic with (unrealistic) drag. Spears can be used to fight, but are slower and weaker than swords. Spears can be used to dig, but are slower and weaker and pickaxes. If you miss the target it's your fault, the spear is fine. You can grab a spear on the fly (or maybe wait until it falls?). You can stick a spear into a block, but if you remove the block then the spear falls (obviously). -This mod contains the word "spear" more than 100 times, if you want the exact number you can count them. +This mod contains the word "spear" more than 100 times, if you want to know the exact number there must be a sed script for that. If you feel clever, throw a spear right above you and look at it to see what happens. -You can even throw a spear from above down to your foes, it's even easier to hit. +You can even throw a spear down to your foes from above, it's even easier to hit! Someone once reported to have hit its own foot but it takes practice to do that. diff --git a/defaults.lua b/defaults.lua index 2942843..12be8cb 100644 --- a/defaults.lua +++ b/defaults.lua @@ -1,30 +1,52 @@ --- Seems like defaults in settingtypes.txt are not taken by default ---if minetest.settings:get("spears_throw_speed") == nil then --- minetest.settings:set("spears_throw_speed", 13) ---end +-- Seems like defaults in settingtypes.txt are not taken by default, let's default them +if core.settings:get("spears_throw_speed") == nil then + core.settings:set("spears_throw_speed", 13) +end ---[[ if minetest.settings:get("spears_drag_coeff") == nil then - minetest.settings:set("spears_drag_coeff", 0.1) -end ]] +if core.settings:get("spears_drag_coeff") == nil then + core.settings:set("spears_drag_coeff", 0.1) +end --- if minetest.settings:get("spears_node_cracky_limit") == nil then --- minetest.settings:set("spears_node_cracky_limit", 3) --- end +if core.settings:get("spears_node_cracky_limit") == nil then + core.settings:set("spears_node_cracky_limit", 3) +end +if core.settings:get("spears_full_punch_interval") == nil then + core.settings:set("spears_full_punch_interval", 1.5) + end --- DISABLE_STONE_SPEAR = false --- DISABLE_STEEL_SPEAR = false --- DISABLE_COPPER_SPEAR = false --- DISABLE_BRONZE_SPEAR = false --- DISABLE_DIAMOND_SPEAR = false --- DISABLE_OBSIDIAN_SPEAR = false --- DISABLE_GOLD_SPEAR = false --- DISABLE_IRON_SPEAR = false --- SPEARS_THROW_SPEED = 13 --- SPEARS_V_ZERO = {x = 0, y = 0, z = 0} --- SPEARS_DRAG_COEFF = 0.1 --- SPEARS_NODE_UNKNOWN = nil --- SPEARS_NODE_THROUGH = 0 --- SPEARS_NODE_STICKY = 1 --- SPEARS_NODE_CRACKY = 2 --- SPEARS_NODE_CRACKY_LIMIT = 3 \ No newline at end of file +if core.settings:get("spears_enable_stone_spear") == nil then + core.settings:set_bool("spears_enable_stone_spear", true) +end + +if core.get_modpath("pigiron") then + if core.settings:get("spears_enable_iron_spear") == nil then + core.settings:set_bool("spears_enable_iron_spear", true) + end +else + core.settings:set_bool("spears_enable_iron_spear", false) +end + +if core.settings:get("spears_enable_steel_spear") == nil then + core.settings:set_bool("spears_enable_steel_spear", true) +end + +if core.settings:get("spears_enable_copper_spear") == nil then + core.settings:set_bool("spears_enable_copper_spear", true) +end + +if core.settings:get("spears_enable_bronze_spear") == nil then + core.settings:set_bool("spears_enable_bronze_spear", true) +end + +if core.settings:get("spears_enable_obsidian_spear") == nil then + core.settings:set_bool("spears_enable_obsidian_spear", true) +end + +if core.settings:get("spears_enable_diamond_spear") == nil then + core.settings:set_bool("spears_enable_diamond_spear", true) +end + +if core.settings:get("spears_enable_gold_spear") == nil then + core.settings:set_bool("spears_enable_gold_spear", true) +end diff --git a/functions.lua b/functions.lua index e2e9dae..e80e833 100644 --- a/functions.lua +++ b/functions.lua @@ -11,31 +11,28 @@ function spears_throw (itemstack, player, pointed_thing) local pointed_a = pointed_thing.above local pointed_b = pointed_thing.under if pointed_thing.type == "node" and vector.distance(pointed_a, throw_pos) < 1 then -- Stick into node - local node = minetest.get_node(pointed_b) + local node = core.get_node(pointed_b) local check_node = spears_check_node(node.name) if check_node == nil then return false elseif check_node == 'cracky' then - minetest.sound_play("default_metal_footstep", {pos = pointed_a}, true) + core.sound_play("default_metal_footstep", {pos = pointed_a}, true) return false elseif check_node == 'sticky' then - local spear_object = minetest.add_entity(vector.divide(vector.add(vector.multiply(pointed_a, 2), pointed_b), 3), spear) + local spear_object = core.add_entity(vector.divide(vector.add(vector.multiply(pointed_a, 2), pointed_b), 3), spear) spear_object:set_rotation(rotation) spear_object:get_luaentity()._wear = wear spear_object:get_luaentity()._stickpos = pointed_b - minetest.sound_play("default_place_node", {pos = pointed_a}, true) + core.sound_play("default_place_node", {pos = pointed_a}, true) return false end else -- Throw - local throw_speed = tonumber(minetest.settings:get("spears_throw_speed") or 13) - --while vector.distance(player_pos, throw_pos) < 1.2 do - -- throw_pos = vector.add(throw_pos, vector.multiply(direction, 0.1)) - --end + local throw_speed = tonumber(core.settings:get("spears_throw_speed")) local player_vel = player:get_velocity() - local spear_object = minetest.add_entity(throw_pos, spear) + local spear_object = core.add_entity(throw_pos, spear) spear_object:set_velocity(vector.add(player_vel, vector.multiply(direction, throw_speed))) spear_object:set_rotation(rotation) - minetest.sound_play("spears_throw", {pos = player_pos}, true) + core.sound_play("spears_throw", {pos = player_pos}, true) spear_object:get_luaentity()._wear = wear spear_object:get_luaentity()._stickpos = nil spear_object:get_luaentity()._owner = player:get_luaentity() @@ -78,60 +75,60 @@ function spears_set_entity(spear_type, base_damage, toughness) local velocity = self.object:get_velocity() local speed = vector.length(velocity) if self._stickpos ~= nil then -- Spear is stuck - local node = minetest.get_node(self._stickpos) + local node = core.get_node(self._stickpos) local check_node = spears_check_node(node.name) if check_node ~= 'sticky' then -- Fall when node is removed self.object:remove() - minetest.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) + core.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) return false end else -- Spear is flying local direction = vector.normalize(velocity) - local yaw = minetest.dir_to_yaw(direction) + local yaw = core.dir_to_yaw(direction) local pitch = math.acos(velocity.y/speed) - math.pi/3 local spearhead_pos = vector.add(pos, vector.multiply(direction, 0.5)) self.object:set_rotation({x = 0, y = yaw + math.pi/2, z = pitch}) -- Hit a target? - local objects_in_radius = minetest.get_objects_inside_radius(spearhead_pos, 1) + local objects_in_radius = core.get_objects_inside_radius(spearhead_pos, 1) for _,object in ipairs(objects_in_radius) do if spears_check_target(self, object, spearhead_pos) and object:get_armor_groups().fleshy then local damage = (speed + base_damage)^1.15 - 20 object:punch(self.object, 1.0, {full_punch_interval = 1.0, damage_groups = {fleshy=damage},}, direction) self.object:remove() - minetest.sound_play("spears_hit", {pos = pos}, true) + core.sound_play("spears_hit", {pos = pos}, true) wear = spears_wear(wear, toughness) - minetest.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) + core.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) return true end end -- Hit a node? - local node = minetest.get_node(spearhead_pos) + local node = core.get_node(spearhead_pos) local check_node = spears_check_node(node.name) if check_node == nil then self.object:remove() - minetest.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) + core.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) elseif check_node ~= 'through' then wear = spears_wear(wear, toughness) if wear >= 65535 then - minetest.sound_play("default_tool_breaks", {pos = pos}, true) + core.sound_play("default_tool_breaks", {pos = pos}, true) self.object:remove() - minetest.add_item(pos, {name='defaut:stick'}) + core.add_item(pos, {name='defaut:stick'}) return false elseif check_node == 'cracky' then - minetest.sound_play("default_metal_footstep", {pos = pos}, true) + core.sound_play("default_metal_footstep", {pos = pos}, true) self.object:remove() - minetest.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) + core.add_item(pos, {name='spears:spear_' .. spear_type, wear = wear}) return false elseif check_node == 'sticky' then self.object:set_acceleration({x = 0, y = 0, z = 0}) self.object:set_velocity({x = 0, y = 0, z = 0}) - minetest.sound_play("default_place_node", {pos = pos}, true) + core.sound_play("default_place_node", {pos = pos}, true) self._stickpos = spearhead_pos self._wear = wear end else -- Get drag - local viscosity = minetest.registered_nodes[node.name].liquid_viscosity - local drag_coeff = tonumber(minetest.settings:get("spears_drag_coeff") or 0.1) + local viscosity = core.registered_nodes[node.name].liquid_viscosity + local drag_coeff = tonumber(core.settings:get("spears_drag_coeff")) local drag = math.max(viscosity, drag_coeff) local acceleration = vector.multiply(velocity, -drag) acceleration.y = acceleration.y - 10 * ((7 - drag) / 7) @@ -144,8 +141,8 @@ function spears_set_entity(spear_type, base_damage, toughness) end function spears_check_node(node_name) - local node = minetest.registered_nodes[node_name] - local cracky_limit = tonumber(minetest.settings:get("spears_node_cracky_limit") or 3) + local node = core.registered_nodes[node_name] + local cracky_limit = tonumber(core.settings:get("spears_node_cracky_limit")) if node == nil then return nil elseif node.groups.cracky ~= nil and node.groups.cracky < cracky_limit then @@ -158,7 +155,7 @@ function spears_check_node(node_name) end function spears_wear(initial_wear, toughness) - if not minetest.settings:get_bool("creative_mode") then + if not core.settings:get_bool("creative_mode") then local wear = initial_wear + 65535/toughness return wear else diff --git a/init.lua b/init.lua index 138f143..5c85a2a 100644 --- a/init.lua +++ b/init.lua @@ -1,14 +1,7 @@ --- dofile(minetest.get_modpath("spears").."/defaults.lua") +-- Welcome to spears mod --- local input = io.open(minetest.get_modpath("spears").."/spears.conf", "r") --- if input then --- dofile(minetest.get_modpath("spears").."/spears.conf") --- input:close() --- input = nil --- end +dofile(core.get_modpath("spears").."/defaults.lua") +dofile(core.get_modpath("spears").."/functions.lua") +dofile(core.get_modpath("spears").."/tools.lua") -dofile(minetest.get_modpath("spears").."/functions.lua") - -dofile(minetest.get_modpath("spears").."/tools.lua") - -minetest.log("action", "[MOD] Spears loaded with throwing speed " .. (minetest.settings:get("spears_throw_speed") or 13) .. " and drag coeff. " .. (minetest.settings:get("spears_drag_coeff") or 0.1)) +core.log("action", "[MOD] Spears loaded with throwing speed " .. (core.settings:get("spears_throw_speed")) .. " and drag coeff. " .. (core.settings:get("spears_drag_coeff"))) diff --git a/mod.conf b/mod.conf index ea0f7dd..db7c8ad 100644 --- a/mod.conf +++ b/mod.conf @@ -1,8 +1,7 @@ name = spears depends = default optional_depends = pigiron -description = Add spears to Minetest, versatile weapons that can be thrown +description = Add spears to Luanti, versatile weapons that can be thrown author = Echoes91 title = Spears min_minetest_version = 5.4 - diff --git a/settingtypes.txt b/settingtypes.txt index b7c42c5..7012cae 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -7,6 +7,9 @@ spears_drag_coeff (Drag coefficient for spears in air) float 0.1 # Crackyness limit to stick a spear into a node instead of bouncing spears_node_cracky_limit (Cracky node level limit to stick a spear) int 3 +# When used as melee weapon, the spear will do full damage if this time is spent between punches. +spears_full_punch_interval (When used as melee weapon, the spear will do full damage if this time is spent between punches.) float 1.5 + spears_enable_stone_spear (Stone spear enabled) bool true spears_enable_iron_spear (Iron spear enabled, requires pigiron mod) bool false spears_enable_steel_spear (Steel spear enabled) bool true diff --git a/tools.lua b/tools.lua index deaf499..db71a8e 100644 --- a/tools.lua +++ b/tools.lua @@ -1,28 +1,28 @@ -local S = minetest.get_translator("spears") +local S = core.get_translator("spears") function spears_register_spear(spear_type, desc, base_damage, toughness, material) - minetest.register_tool("spears:spear_" .. spear_type, { + core.register_tool("spears:spear_" .. spear_type, { description = desc, - wield_image = "spears_spear_" .. spear_type .. ".png^[transform4", + wield_image = "spears_spear_" .. spear_type .. ".png^[transform4", inventory_image = "spears_spear_" .. spear_type .. ".png", wield_scale= {x = 1.5, y = 1.5, z = 1.5}, on_secondary_use = function(itemstack, user, pointed_thing) spears_throw(itemstack, user, pointed_thing) - if not minetest.settings:get_bool("creative_mode") then + if not core.settings:get_bool("creative_mode") then itemstack:take_item() end return itemstack end, on_place = function(itemstack, user, pointed_thing) spears_throw(itemstack, user, pointed_thing) - if not minetest.settings:get_bool("creative_mode") then + if not core.settings:get_bool("creative_mode") then itemstack:take_item() end return itemstack end, tool_capabilities = { - full_punch_interval = 1.5, + full_punch_interval = core.settings:get("spears_full_punch_interval"), max_drop_level=1, groupcaps={ cracky = {times={[3]=2}, uses=toughness, maxlevel=1}, @@ -35,9 +35,9 @@ function spears_register_spear(spear_type, desc, base_damage, toughness, materia local SPEAR_ENTITY = spears_set_entity(spear_type, base_damage, toughness) - minetest.register_entity("spears:spear_" .. spear_type .. "_entity", SPEAR_ENTITY) + core.register_entity("spears:spear_" .. spear_type .. "_entity", SPEAR_ENTITY) - minetest.register_craft({ + core.register_craft({ output = 'spears:spear_' .. spear_type, recipe = { {"", "", material}, @@ -46,7 +46,7 @@ function spears_register_spear(spear_type, desc, base_damage, toughness, materia } }) - minetest.register_craft({ + core.register_craft({ output = 'spears:spear_' .. spear_type, recipe = { {material, "", ""}, @@ -56,43 +56,43 @@ function spears_register_spear(spear_type, desc, base_damage, toughness, materia }) end -if minetest.settings:get_bool('spears_enable_stone_spear') then +if core.settings:get_bool('spears_enable_stone_spear') then spears_register_spear('stone', S('Stone Spear'), 4, 20, 'group:stone') end -if minetest.get_modpath("pigiron") then - if minetest.settings:get_bool('spears_enable_iron_spear') then +if core.get_modpath("pigiron") then + if core.settings:get_bool('spears_enable_iron_spear') then spears_register_spear('iron', S('Iron Spear'), 5.5, 30, 'pigiron:iron_ingot') end - if minetest.settings:get_bool('spears_enable_steel_spear') then + if core.settings:get_bool('spears_enable_steel_spear') then spears_register_spear('steel', S('Steel Spear'), 6, 35, 'default:steel_ingot') end - if minetest.settings:get_bool('spears_enable_copper_spear') then + if core.settings:get_bool('spears_enable_copper_spear') then spears_register_spear('copper', S('Copper Spear'), 4.8, 30, 'default:copper_ingot') end - if minetest.settings:get_bool('spears_enable_bronze_spear') then + if core.settings:get_bool('spears_enable_bronze_spear') then spears_register_spear('bronze', S('Bronze Spear'), 5.5, 35, 'default:bronze_ingot') end else - if minetest.settings:get_bool('spears_enable_steel_spear') then + if core.settings:get_bool('spears_enable_steel_spear') then spears_register_spear('steel', S('Steel Spear'), 6, 30, 'default:steel_ingot') end - if minetest.settings:get_bool('spears_enable_copper_spear') then + if core.settings:get_bool('spears_enable_copper_spear') then spears_register_spear('copper', S('Copper Spear'), 5, 30, 'default:copper_ingot') end - if minetest.settings:get_bool('spears_enable_bronze_spear') then + if core.settings:get_bool('spears_enable_bronze_spear') then spears_register_spear('bronze', S('Bronze Spear'), 6, 35, 'default:bronze_ingot') end end -if minetest.settings:get_bool('spears_enable_obsidian_spear') then +if core.settings:get_bool('spears_enable_obsidian_spear') then spears_register_spear('obsidian', S('Obsidian Spear'), 8, 30, 'default:obsidian') end -if minetest.settings:get_bool('spears_enable_diamond_spear') then +if core.settings:get_bool('spears_enable_diamond_spear') then spears_register_spear('diamond', S('Diamond Spear'), 8, 40, 'default:diamond') end -if minetest.settings:get_bool('spears_enable_gold_spear') then +if core.settings:get_bool('spears_enable_gold_spear') then spears_register_spear('gold', S('Golden Spear'), 5, 40, 'default:gold_ingot') end