diff --git a/change.log b/change.log index 9ebed6d..d385776 100644 --- a/change.log +++ b/change.log @@ -74,3 +74,7 @@ v0.1.12 * Added cannon shells. * Fixed bug in utils.is_creative. * Increased cannon pitch to -20 to 70. + + +v0.1.13 +* Removed optional dependency lwdrops. diff --git a/depends.txt b/depends.txt index f9b2b62..45e063d 100644 --- a/depends.txt +++ b/depends.txt @@ -1,5 +1,4 @@ default -lwdrops? mesecons? digilines? unifieddyes? diff --git a/deployer.lua b/deployer.lua index 000fb59..994023d 100644 --- a/deployer.lua +++ b/deployer.lua @@ -73,7 +73,7 @@ end -local function place_node (itemname, pos) +local function place_node (item, pos) local node = minetest.get_node_or_nil ({ x = pos.x, y = pos.y - 1, z = pos.z }) if not node then @@ -100,8 +100,8 @@ local function place_node (itemname, pos) end end - local stack = ItemStack (itemname) - local itemdef = utils.find_item_def (itemname) + local stack = ItemStack (item) + local itemdef = utils.find_item_def (stack:get_name ()) if stack and itemdef then local placed = false @@ -122,23 +122,23 @@ local function place_node (itemname, pos) end if itemdef and itemdef.on_place then - local result, msg = pcall (itemdef.on_place, stack, nil, pointed_thing) + local result, leftover = pcall (itemdef.on_place, stack, nil, pointed_thing) placed = result if not placed then if utils.settings.alert_handler_errors then - minetest.log ("error", "on_place handler for "..itemname.." crashed - "..msg) + minetest.log ("error", "on_place handler for "..stack:get_name ().." crashed - "..leftover) end end end if not placed then - if not minetest.registered_nodes[itemname] then + if not minetest.registered_nodes[stack:get_name ()] then return false end - minetest.set_node (pos, { name = itemname, param1 = 0, param2 = 0 }) + minetest.set_node (pos, { name = stack:get_name (), param1 = 0, param2 = 0 }) if itemdef and itemdef.after_place_node then local result, msg = pcall (itemdef.after_place_node, pos, nil, stack, pointed_thing) @@ -154,9 +154,11 @@ local function place_node (itemname, pos) pcall (minetest.sound_play, itemdef.sounds.place, { pos = pos }) end end + + return true end - return true + return false end @@ -219,7 +221,7 @@ local function deploy_item (pos, node, slot, range) local deploypos = get_deploy_pos (pos, node.param2, range) if item and deploypos then - if place_node (name, deploypos) then + if place_node (stack, deploypos) then stack:set_count (stack:get_count () - 1) inv:set_stack ("main", slot, stack) diff --git a/init.lua b/init.lua index 79388a4..2c24e76 100644 --- a/init.lua +++ b/init.lua @@ -1,4 +1,4 @@ -local version = "0.1.12" +local version = "0.1.13" local mod_storage = minetest.get_mod_storage () diff --git a/mod.conf b/mod.conf index 3cfa78f..d5c44f8 100644 --- a/mod.conf +++ b/mod.conf @@ -3,4 +3,4 @@ description = Various components for mesecons and digilines. title = LWComponents name = lwcomponents depends = default -optional_depends = lwdrops, mesecons, digilines, unifieddyes, intllib, hopper, digistuff +optional_depends = mesecons, digilines, unifieddyes, intllib, hopper, digistuff diff --git a/readme.txt b/readme.txt index e87b97c..5de3c14 100644 --- a/readme.txt +++ b/readme.txt @@ -13,7 +13,7 @@ CC BY-SA 3.0 Version ======= -0.1.12 +0.1.13 Minetest Version @@ -28,7 +28,6 @@ default Optional Dependencies ===================== -lwdrops mesecons digilines unifieddyes diff --git a/utils.lua b/utils.lua index cc9a5b5..d0c24ff 100644 --- a/utils.lua +++ b/utils.lua @@ -67,43 +67,6 @@ end --- check for lwdrops -if minetest.global_exists ("lwdrops") then - utils.lwdrops_supported = true - utils.on_destroy = lwdrops.on_destroy - utils.item_pickup = lwdrops.item_pickup - utils.item_drop = lwdrops.item_drop -else - utils.lwdrops_supported = false - - -- dummy - utils.on_destroy = function (itemstack) - end - - utils.item_pickup = function (entity, cleanup) - local stack = nil - - if entity and entity.name and entity.name == "__builtin:item" and - entity.itemstring and entity.itemstring ~= "" then - - stack = ItemStack (entity.itemstring) - - if cleanup ~= false then - entity.itemstring = "" - entity.object:remove () - end - end - - return stack - end - - utils.item_drop = function (itemstack, dropper, pos) - return minetest.item_drop (itemstack, dropper, pos) - end -end - - - -- check for unifieddyes if minetest.global_exists ("unifieddyes") then utils.unifieddyes_supported = true @@ -138,6 +101,45 @@ end +function utils.on_destroy (itemstack) + local stack = ItemStack (itemstack) + + if stack and stack:get_count () > 0 then + local def = utils.find_item_def (stack:get_name ()) + + if def and def.on_destroy then + def.on_destroy (stack) + end + end +end + + + +function utils.item_pickup (entity, cleanup) + local stack = nil + + if entity and entity.name and entity.name == "__builtin:item" and + entity.itemstring and entity.itemstring ~= "" then + + stack = ItemStack (entity.itemstring) + + if cleanup ~= false then + entity.itemstring = "" + entity.object:remove () + end + end + + return stack +end + + + +function utils.item_drop (itemstack, dropper, pos) + return minetest.item_drop (itemstack, dropper, pos) +end + + + function utils.can_interact_with_node (pos, player) if not player or not player:is_player () then return false