local
parent
c6061c999f
commit
1894adcae6
52
init.lua
52
init.lua
|
@ -1,5 +1,5 @@
|
|||
|
||||
|
||||
|
||||
--[[
|
||||
Replacement tool for creative building (Mod for MineTest)
|
||||
Copyright (C) 2013 Sokomine
|
||||
|
@ -20,7 +20,7 @@
|
|||
|
||||
-- Version 3.0
|
||||
|
||||
-- Changelog:
|
||||
-- Changelog:
|
||||
-- 02.10.2014 * Some more improvements for inspect-tool. Added craft-guide.
|
||||
-- 01.10.2014 * Added inspect-tool.
|
||||
-- 12.01.2013 * If digging the node was unsuccessful, then the replacement will now fail
|
||||
|
@ -29,10 +29,10 @@
|
|||
-- in order to check if the replacement is allowed
|
||||
-- 24.04.2013 * param1 and param2 are now stored
|
||||
-- * hold sneak + right click to store new pattern
|
||||
-- * right click: place one of the itmes
|
||||
-- * right click: place one of the itmes
|
||||
-- * receipe changed
|
||||
-- * inventory image added
|
||||
|
||||
|
||||
-- adds a function to check ownership of a node; taken from VanessaEs homedecor mod
|
||||
dofile(minetest.get_modpath("replacer").."/check_owner.lua");
|
||||
|
||||
|
@ -50,18 +50,21 @@ end
|
|||
local blacklist = Set {
|
||||
"protector:protect",
|
||||
"protector:protect2",
|
||||
"protector:protect3",
|
||||
"protector:teamprotect",
|
||||
"protector:pvpprotect",
|
||||
"air",
|
||||
}
|
||||
|
||||
local replacer_charge = 50000
|
||||
local replacer_charge_per_node = 500
|
||||
local replacer_charge_per_node = 200
|
||||
|
||||
technic.register_power_tool("replacer:replacer", replacer_charge)
|
||||
|
||||
minetest.register_tool( "replacer:replacer",
|
||||
{
|
||||
description = "Node Replacement Tool",
|
||||
groups = {},
|
||||
groups = {},
|
||||
inventory_image = "replacer_replacer.png",
|
||||
wield_image = "",
|
||||
wield_scale = {x=1,y=1,z=1},
|
||||
|
@ -80,7 +83,7 @@ minetest.register_tool( "replacer:replacer",
|
|||
},
|
||||
node_placement_prediction = nil,
|
||||
metadata = minetest.serialize({item = "default:dirt"}), -- default replacement: common dirt
|
||||
|
||||
|
||||
wear_represents = "technic_RE_charge",
|
||||
on_refill = technic.refill_RE_charge,
|
||||
|
||||
|
@ -93,13 +96,13 @@ minetest.register_tool( "replacer:replacer",
|
|||
--minetest.chat_send_player( name, "You PLACED this on "..minetest.serialize( pointed_thing )..".");
|
||||
|
||||
local keys=placer:get_player_control();
|
||||
|
||||
|
||||
-- just place the stored node if now new one is to be selected
|
||||
if( not( keys["sneak"] )) then
|
||||
|
||||
return replacer.replace( itemstack, placer, pointed_thing, 0 ); end
|
||||
|
||||
|
||||
|
||||
if( pointed_thing.type ~= "node" ) then
|
||||
minetest.chat_send_player( name, " Error: No node selected.");
|
||||
return nil;
|
||||
|
@ -107,13 +110,13 @@ minetest.register_tool( "replacer:replacer",
|
|||
|
||||
local pos = minetest.get_pointed_thing_position( pointed_thing, under );
|
||||
local node = minetest.env:get_node_or_nil( pos );
|
||||
|
||||
|
||||
if blacklist[node.name] then
|
||||
minetest.chat_send_player(name, "You cannot use '"..node.name.."' in a replacer.")
|
||||
return nil;
|
||||
end
|
||||
|
||||
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
|
||||
|
||||
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
|
||||
|
||||
local meta = minetest.deserialize(itemstack:get_metadata())
|
||||
if not meta or not meta.charge then
|
||||
|
@ -125,14 +128,15 @@ minetest.register_tool( "replacer:replacer",
|
|||
else
|
||||
meta.item = "default:dirt 0 0";
|
||||
end
|
||||
|
||||
itemstack:set_metadata(minetest.serialize(meta))
|
||||
|
||||
minetest.chat_send_player( name, "Node replacement tool set to: '"..meta.item.."'.");
|
||||
itemstack:set_metadata(minetest.serialize(meta))
|
||||
itemstack:get_meta():set_string("description", "Node Replacement Tool ("..meta.item..")")
|
||||
|
||||
minetest.chat_send_player( name, "Node replacement tool set to: '"..meta.item.."'.");
|
||||
|
||||
return itemstack -- nothing consumed but data changed
|
||||
end,
|
||||
|
||||
|
||||
|
||||
-- on_drop = func(itemstack, dropper, pos),
|
||||
|
||||
|
@ -161,8 +165,8 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||
|
||||
local pos = minetest.get_pointed_thing_position( pointed_thing, mode );
|
||||
local node = minetest.env:get_node_or_nil( pos );
|
||||
|
||||
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
|
||||
|
||||
--minetest.chat_send_player( name, " Target node: "..minetest.serialize( node ).." at pos "..minetest.serialize( pos )..".");
|
||||
|
||||
if( node == nil ) then
|
||||
|
||||
|
@ -191,7 +195,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||
|
||||
return nil;
|
||||
end
|
||||
|
||||
|
||||
if blacklist[daten[1]] then
|
||||
minetest.chat_send_player(name, "You cannot use '"..node.name.."' in a replacer.")
|
||||
return nil;
|
||||
|
@ -225,7 +229,7 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||
minetest.chat_send_player( name, "You have no further '"..( daten[1] or "?" ).."'. Replacement failed.");
|
||||
return nil;
|
||||
end
|
||||
|
||||
|
||||
if meta.charge >= replacer_charge_per_node then
|
||||
if not technic.creative_mode then
|
||||
meta.charge = meta.charge - replacer_charge_per_node
|
||||
|
@ -240,9 +244,9 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||
|
||||
|
||||
-- give the player the item by simulating digging if possible
|
||||
if( node.name ~= "air"
|
||||
if( node.name ~= "air"
|
||||
and node.name ~= "ignore"
|
||||
and node.name ~= "default:lava_source"
|
||||
and node.name ~= "default:lava_source"
|
||||
and node.name ~= "default:lava_flowing"
|
||||
and node.name ~= "default:water_source"
|
||||
and node.name ~= "default:water_flowing" ) then
|
||||
|
@ -250,13 +254,13 @@ replacer.replace = function( itemstack, user, pointed_thing, mode )
|
|||
minetest.node_dig( pos, node, user );
|
||||
|
||||
local digged_node = minetest.env:get_node_or_nil( pos );
|
||||
if( not( digged_node )
|
||||
if( not( digged_node )
|
||||
or digged_node.name == node.name ) then
|
||||
|
||||
minetest.chat_send_player( name, "Replacing '"..( node.name or "air" ).."' with '"..( meta.item or "?" ).."' failed. Unable to remove old node.");
|
||||
return nil;
|
||||
end
|
||||
|
||||
|
||||
end
|
||||
|
||||
-- consume the item
|
||||
|
|
35
inspect.lua
35
inspect.lua
|
@ -17,6 +17,16 @@ if( minetest.get_modpath("trees")
|
|||
replacer.image_replacements[ "default:furnace_active" ] = "oven:oven_active";
|
||||
end
|
||||
|
||||
function getblock(pos)
|
||||
local function toblock(coord)
|
||||
return math.floor(coord / 16)
|
||||
end
|
||||
if not pos then
|
||||
return "(?)"
|
||||
end
|
||||
return minetest.pos_to_string({x=toblock(pos.x), y=toblock(pos.y), z=toblock(pos.z)})
|
||||
end
|
||||
|
||||
minetest.register_tool( "replacer:inspect",
|
||||
{
|
||||
description = "Node inspection tool",
|
||||
|
@ -119,6 +129,9 @@ replacer.inspect = function( itemstack, user, pointed_thing, mode, show_receipe
|
|||
protected_info = 'INFO: You can dig this node, but others can\'t.';
|
||||
end
|
||||
text = text..' '..protected_info;
|
||||
if pos then
|
||||
text = text..' Block: '..getblock(pos)
|
||||
end
|
||||
-- no longer spam the chat; the craft guide is more informative
|
||||
-- minetest.chat_send_player( name, text );
|
||||
|
||||
|
@ -139,7 +152,7 @@ replacer.group_placeholder = {};
|
|||
replacer.group_placeholder[ 'group:wood' ] = 'default:wood';
|
||||
replacer.group_placeholder[ 'group:tree' ] = 'default:tree';
|
||||
replacer.group_placeholder[ 'group:sapling']= 'default:sapling';
|
||||
replacer.group_placeholder[ 'group:stick' ] = 'default:stick';
|
||||
replacer.group_placeholder[ 'group:stick' ] = 'group:stick';
|
||||
replacer.group_placeholder[ 'group:stone' ] = 'default:cobble'; -- 'default:stone'; point people to the cheaper cobble
|
||||
replacer.group_placeholder[ 'group:sand' ] = 'default:sand';
|
||||
replacer.group_placeholder[ 'group:leaves'] = 'default:leaves';
|
||||
|
@ -285,7 +298,7 @@ replacer.inspect_show_crafting = function( name, node_name, fields )
|
|||
desc = ' - no description provided - ';
|
||||
end
|
||||
|
||||
local formspec = "size[6,6]"..
|
||||
local formspec = "size[8,6]"..
|
||||
"label[0,5.5;This is a "..minetest.formspec_escape( desc )..".]"..
|
||||
"button_exit[5.0,4.3;1,0.5;quit;Exit]"..
|
||||
"label[0,0;Name:]"..
|
||||
|
@ -306,8 +319,12 @@ replacer.inspect_show_crafting = function( name, node_name, fields )
|
|||
end
|
||||
formspec = formspec..".]";
|
||||
end
|
||||
|
||||
-- show information about protection
|
||||
|
||||
formspec = formspec.."label[0.0,4;Block coordinates "..
|
||||
getblock(fields.pos)
|
||||
formspec = formspec..".]";
|
||||
|
||||
-- show information about protection
|
||||
if( fields.protected_info and fields.protected_info ~= "" ) then
|
||||
formspec = formspec.."label[0.0,4.5;"..minetest.formspec_escape( fields.protected_info ).."]";
|
||||
end
|
||||
|
@ -365,19 +382,19 @@ replacer.inspect_show_crafting = function( name, node_name, fields )
|
|||
end
|
||||
elseif( receipe.type=='cooking' and receipe.items and #receipe.items==1
|
||||
and receipe.output=="" ) then
|
||||
formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'default:furnace_active' ).."]".. --default_furnace_front.png]"..
|
||||
formspec = formspec.."item_image_button[1,1;2.4,2.4;"..replacer.image_button_link( 'default:furnace_active' ).."]".. --default_furnace_front.png]"..
|
||||
"item_image_button[2.9,2.7;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]"..
|
||||
"label[1.0,0;"..tostring(receipe.items[1]).."]"..
|
||||
"label[0,0.5;This can be used as a fuel.]";
|
||||
elseif( receipe.type=='cooking' and receipe.items and #receipe.items==1 ) then
|
||||
formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'default:furnace' ).."]".. --default_furnace_front.png]"..
|
||||
formspec = formspec.."item_image_button[1,1;2.4,2.4;"..replacer.image_button_link( 'default:furnace' ).."]".. --default_furnace_front.png]"..
|
||||
"item_image_button[2.9,2.7;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
|
||||
elseif( receipe.type=='colormachine' and receipe.items and #receipe.items==1 ) then
|
||||
formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'colormachine:colormachine' ).."]".. --colormachine_front.png]"..
|
||||
formspec = formspec.."item_image_button[1,1;2.4,2.4;"..replacer.image_button_link( 'colormachine:colormachine' ).."]".. --colormachine_front.png]"..
|
||||
"item_image_button[2,2;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
|
||||
elseif( receipe.type=='saw' and receipe.items and #receipe.items==1 ) then
|
||||
--formspec = formspec.."item_image[1,1;3.4,3.4;moreblocks:circular_saw]"..
|
||||
formspec = formspec.."item_image_button[1,1;3.4,3.4;"..replacer.image_button_link( 'moreblocks:circular_saw' ).."]"..
|
||||
formspec = formspec.."item_image_button[1,1;2.4,2.4;"..replacer.image_button_link( 'moreblocks:circular_saw' ).."]"..
|
||||
"item_image_button[2,0.6;1.0,1.0;"..replacer.image_button_link( receipe.items[1] ).."]";
|
||||
else
|
||||
formspec = formspec..'label[3,1;Error: Unkown receipe.]';
|
||||
|
@ -407,6 +424,6 @@ minetest.register_craft({
|
|||
output = 'replacer:inspect',
|
||||
recipe = {
|
||||
{ 'default:torch' },
|
||||
{ 'default:stick' },
|
||||
{ 'group:stick' },
|
||||
}
|
||||
})
|
||||
|
|
Loading…
Reference in New Issue