diff --git a/deploy_building/init.lua b/deploy_building/init.lua index b6b2e74..c2e537f 100644 --- a/deploy_building/init.lua +++ b/deploy_building/init.lua @@ -145,6 +145,84 @@ minetest.register_craft({ }, }) +-- arrow +table.insert(arrows,{"deploy_building:arrow", "deploy_building:arrow_entity"}) +minetest.register_craftitem("deploy_building:arrow", { + description = "Building Arrow", + inventory_image = "deploy_building_arrow.png", +}) +minetest.register_node("deploy_building:arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_building_arrow.png", "deploy_building_arrow.png", "deploy_building_arrow_back.png", "deploy_building_arrow_front.png", "deploy_building_arrow_2.png", "deploy_building_arrow.png"}, +}) +minetest.register_entity("deploy_building:arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_building:arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_building:arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_building:arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_building:arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_building.deploy(self.lastpos,self.player,"small") + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, +}) +minetest.register_craft({ + output = "deploy_building:arrow", + recipe = { + {"default:stick", "default:stick", "deploy_building:small"}, + } +}) + -- blueprint minetest.register_craftitem("deploy_building:blueprint", { description = "Building Blueprint", diff --git a/deploy_building/textures/deploy_building_arrow.png b/deploy_building/textures/deploy_building_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_building/textures/deploy_building_arrow.png differ diff --git a/deploy_building/textures/deploy_building_arrow_2.png b/deploy_building/textures/deploy_building_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_building/textures/deploy_building_arrow_2.png differ diff --git a/deploy_building/textures/deploy_building_arrow_back.png b/deploy_building/textures/deploy_building_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_building/textures/deploy_building_arrow_back.png differ diff --git a/deploy_building/textures/deploy_building_arrow_front.png b/deploy_building/textures/deploy_building_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_building/textures/deploy_building_arrow_front.png differ diff --git a/deploy_cylinder_y/init.lua b/deploy_cylinder_y/init.lua index dbb6c86..e199e48 100644 --- a/deploy_cylinder_y/init.lua +++ b/deploy_cylinder_y/init.lua @@ -114,6 +114,84 @@ deploy_cylinder_y.register = function(label,name,material,texture) }, }) + -- arrow + table.insert(arrows,{"deploy_cylinder_y:"..name.."_arrow", "deploy_cylinder_y:"..name.."_arrow_entity"}) + minetest.register_craftitem("deploy_cylinder_y:"..name.."_arrow", { + description = label.." Cylinder Y Arrow", + inventory_image = "deploy_cylinder_y_arrow.png", + }) + minetest.register_node("deploy_cylinder_y:"..name.."_arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_cylinder_y_arrow.png", "deploy_cylinder_y_arrow.png", "deploy_cylinder_y_arrow_back.png", "deploy_cylinder_y_arrow_front.png", "deploy_cylinder_y_arrow_2.png", "deploy_cylinder_y_arrow.png"}, + }) + minetest.register_entity("deploy_cylinder_y:"..name.."_arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_cylinder_y:"..name.."_arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_cylinder_y:"..name.."_arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_cylinder_y:"..name.."_arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_cylinder_y:"..name.."_arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_cylinder_y.deploy(self.lastpos,self.player,material,3,6) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, + }) + minetest.register_craft({ + output = "deploy_cylinder_y:"..name.."_arrow", + recipe = { + {"default:stick", "default:stick", "deploy_cylinder_y:"..name.."_small"}, + } + }) + end diff --git a/deploy_cylinder_y/textures/deploy_building_arrow_back.png b/deploy_cylinder_y/textures/deploy_building_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_cylinder_y/textures/deploy_building_arrow_back.png differ diff --git a/deploy_cylinder_y/textures/deploy_cylinder_y_arrow.png b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow.png differ diff --git a/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_2.png b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_2.png differ diff --git a/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_front.png b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_cylinder_y/textures/deploy_cylinder_y_arrow_front.png differ diff --git a/deploy_maze/init.lua b/deploy_maze/init.lua index 57a1cd3..af21160 100644 --- a/deploy_maze/init.lua +++ b/deploy_maze/init.lua @@ -412,6 +412,84 @@ deploy_maze.register = function(label,name,material,texture) }, }) + -- arrow + table.insert(arrows,{"deploy_maze:"..name.."_arrow", "deploy_maze:"..name.."_arrow_entity"}) + minetest.register_craftitem("deploy_maze:"..name.."_arrow", { + description = label.." Maze Arrow", + inventory_image = "deploy_maze_arrow.png", + }) + minetest.register_node("deploy_maze:"..name.."_arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_maze_arrow.png", "deploy_maze_arrow.png", "deploy_maze_arrow_back.png", "deploy_maze_arrow_front.png", "deploy_maze_arrow_2.png", "deploy_maze_arrow.png"}, + }) + minetest.register_entity("deploy_maze:"..name.."_arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_maze:"..name.."_arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_maze:"..name.."_arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_maze:"..name.."_arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_maze:"..name.."_arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_maze.deploy(self.lastpos,self.player,material,11,1) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, + }) + minetest.register_craft({ + output = "deploy_maze:"..name.."_arrow", + recipe = { + {"default:stick", "default:stick", "deploy_maze:"..name.."_small"}, + } + }) + end diff --git a/deploy_maze/textures/deploy_maze_arrow.png b/deploy_maze/textures/deploy_maze_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_maze/textures/deploy_maze_arrow.png differ diff --git a/deploy_maze/textures/deploy_maze_arrow_2.png b/deploy_maze/textures/deploy_maze_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_maze/textures/deploy_maze_arrow_2.png differ diff --git a/deploy_maze/textures/deploy_maze_arrow_back.png b/deploy_maze/textures/deploy_maze_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_maze/textures/deploy_maze_arrow_back.png differ diff --git a/deploy_maze/textures/deploy_maze_arrow_front.png b/deploy_maze/textures/deploy_maze_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_maze/textures/deploy_maze_arrow_front.png differ diff --git a/deploy_nodes/depends.txt b/deploy_nodes/depends.txt index 331d858..14d143e 100644 --- a/deploy_nodes/depends.txt +++ b/deploy_nodes/depends.txt @@ -1 +1,2 @@ -default \ No newline at end of file +default +throwing \ No newline at end of file diff --git a/deploy_pyramid/init.lua b/deploy_pyramid/init.lua index 1c8015d..b496618 100644 --- a/deploy_pyramid/init.lua +++ b/deploy_pyramid/init.lua @@ -115,6 +115,84 @@ deploy_pyramid.register = function(label,name,material,texture) }, }) + -- arrow + table.insert(arrows,{"deploy_pyramid:"..name.."_arrow", "deploy_pyramid:"..name.."_arrow_entity"}) + minetest.register_craftitem("deploy_pyramid:"..name.."_arrow", { + description = label.." Pyramid Arrow", + inventory_image = "deploy_pyramid_arrow.png", + }) + minetest.register_node("deploy_pyramid:"..name.."_arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_pyramid_arrow.png", "deploy_pyramid_arrow.png", "deploy_pyramid_arrow_back.png", "deploy_pyramid_arrow_front.png", "deploy_pyramid_arrow_2.png", "deploy_pyramid_arrow.png"}, + }) + minetest.register_entity("deploy_pyramid:"..name.."_arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_pyramid:"..name.."_arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_pyramid:"..name.."_arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_pyramid:"..name.."_arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_pyramid:"..name.."_arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_pyramid.deploy(self.lastpos,self.player,material,3,1,1) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, + }) + minetest.register_craft({ + output = "deploy_pyramid:"..name.."_arrow", + recipe = { + {"default:stick", "default:stick", "deploy_pyramid:"..name.."_small"}, + } + }) + end diff --git a/deploy_pyramid/textures/deploy_pyramid_arrow.png b/deploy_pyramid/textures/deploy_pyramid_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_pyramid/textures/deploy_pyramid_arrow.png differ diff --git a/deploy_pyramid/textures/deploy_pyramid_arrow_2.png b/deploy_pyramid/textures/deploy_pyramid_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_pyramid/textures/deploy_pyramid_arrow_2.png differ diff --git a/deploy_pyramid/textures/deploy_pyramid_arrow_back.png b/deploy_pyramid/textures/deploy_pyramid_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_pyramid/textures/deploy_pyramid_arrow_back.png differ diff --git a/deploy_pyramid/textures/deploy_pyramid_arrow_front.png b/deploy_pyramid/textures/deploy_pyramid_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_pyramid/textures/deploy_pyramid_arrow_front.png differ diff --git a/deploy_sphere/init.lua b/deploy_sphere/init.lua index b08afb8..e8600be 100644 --- a/deploy_sphere/init.lua +++ b/deploy_sphere/init.lua @@ -113,6 +113,84 @@ deploy_sphere.register = function(label,name,material,texture) {"deploy_sphere:blueprint", "deploy_sphere:"..name.."_medium", "deploy_sphere:"..name.."_medium"}, }, }) + + -- arrow + table.insert(arrows,{"deploy_sphere:"..name.."_arrow", "deploy_sphere:"..name.."_arrow_entity"}) + minetest.register_craftitem("deploy_sphere:"..name.."_arrow", { + description = label.." Sphere Arrow", + inventory_image = "deploy_sphere_arrow.png", + }) + minetest.register_node("deploy_sphere:"..name.."_arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_sphere_arrow.png", "deploy_sphere_arrow.png", "deploy_sphere_arrow_back.png", "deploy_sphere_arrow_front.png", "deploy_sphere_arrow_2.png", "deploy_sphere_arrow.png"}, + }) + minetest.register_entity("deploy_sphere:"..name.."_arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_sphere:"..name.."_arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_sphere:"..name.."_arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_sphere:"..name.."_arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_sphere:"..name.."_arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_sphere.deploy(self.lastpos,self.player,material,3) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, + }) + minetest.register_craft({ + output = "deploy_sphere:"..name.."_arrow", + recipe = { + {"default:stick", "default:stick", "deploy_sphere:"..name.."_small"}, + } + }) end @@ -141,4 +219,4 @@ minetest.register_craft({ }) -- log that we started -minetest.log("action", "[MOD]"..minetest.get_current_modname().." -- loaded from "..minetest.get_modpath(minetest.get_current_modname())) +minetest.log("action", "[MOD]"..minetest.get_current_modname().." -- loaded from "..minetest.get_modpath(minetest.get_current_modname())) \ No newline at end of file diff --git a/deploy_sphere/textures/deploy_sphere_arrow.png b/deploy_sphere/textures/deploy_sphere_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_sphere/textures/deploy_sphere_arrow.png differ diff --git a/deploy_sphere/textures/deploy_sphere_arrow_2.png b/deploy_sphere/textures/deploy_sphere_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_sphere/textures/deploy_sphere_arrow_2.png differ diff --git a/deploy_sphere/textures/deploy_sphere_arrow_back.png b/deploy_sphere/textures/deploy_sphere_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_sphere/textures/deploy_sphere_arrow_back.png differ diff --git a/deploy_sphere/textures/deploy_sphere_arrow_front.png b/deploy_sphere/textures/deploy_sphere_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_sphere/textures/deploy_sphere_arrow_front.png differ diff --git a/deploy_spiral/init.lua b/deploy_spiral/init.lua index e6673d6..13cfcde 100644 --- a/deploy_spiral/init.lua +++ b/deploy_spiral/init.lua @@ -161,6 +161,84 @@ deploy_spiral.register = function(label,name,material,texture) }, }) + -- arrow + table.insert(arrows,{"deploy_spiral:"..name.."_arrow", "deploy_spiral:"..name.."_arrow_entity"}) + minetest.register_craftitem("deploy_spiral:"..name.."_arrow", { + description = label.." Spiral Arrow", + inventory_image = "deploy_spiral_arrow.png", + }) + minetest.register_node("deploy_spiral:"..name.."_arrow_box", { + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = { + -- Shaft + {-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, + --Spitze + {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, + {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, + --Federn + {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, + {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, + {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, + {6.5/17, -1.5/17, -1.5/17, 7.5/17, -2.5/17, -2.5/17}, + {7.5/17, 2.5/17, 2.5/17, 8.5/17, 3.5/17, 3.5/17}, + {8.5/17, -3.5/17, 3.5/17, 7.5/17, -2.5/17, 2.5/17}, + {8.5/17, 3.5/17, -3.5/17, 7.5/17, 2.5/17, -2.5/17}, + {7.5/17, -2.5/17, -2.5/17, 8.5/17, -3.5/17, -3.5/17}, + } + }, + tiles = {"deploy_spiral_arrow.png", "deploy_spiral_arrow.png", "deploy_spiral_arrow_back.png", "deploy_spiral_arrow_front.png", "deploy_spiral_arrow_2.png", "deploy_spiral_arrow.png"}, + }) + minetest.register_entity("deploy_spiral:"..name.."_arrow_entity", { + physical = false, + timer=0, + visual = "wielditem", + visual_size = {x=0.1, y=0.1}, + textures = {"deploy_spiral:"..name.."_arrow_box"}, + lastpos={}, + collisionbox = {0,0,0,0,0,0}, + player = "", + on_step = function(self, dtime) + self.timer=self.timer+dtime + local pos = self.object:getpos() + local node = minetest.env:get_node(pos) + if self.timer>0.2 then + local objs = minetest.env:get_objects_inside_radius({x=pos.x,y=pos.y,z=pos.z}, 2) + for k, obj in pairs(objs) do + if obj:get_luaentity() ~= nil then + if obj:get_luaentity().name ~= "deploy_spiral:"..name.."_arrow_entity" and obj:get_luaentity().name ~= "__builtin:item" then + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_spiral:"..name.."_arrow")) + end + self.object:remove() + end + else + if self.player ~= "" then + self.player:setpos(pos) + self.player:get_inventory():add_item("main", ItemStack("deploy_spiral:"..name.."_arrow")) + end + self.object:remove() + end + end + end + if self.lastpos.x~=nil then + if node.name ~= "air" then + deploy_spiral.deploy(self.lastpos,self.player,material,3,1,1) + self.object:remove() + end + end + self.lastpos={x=pos.x, y=pos.y, z=pos.z} + end, + }) + minetest.register_craft({ + output = "deploy_spiral:"..name.."_arrow", + recipe = { + {"default:stick", "default:stick", "deploy_spiral:"..name.."_small"}, + } + }) + end diff --git a/deploy_spiral/textures/deploy_spiral_arrow.png b/deploy_spiral/textures/deploy_spiral_arrow.png new file mode 100644 index 0000000..f95d3e8 Binary files /dev/null and b/deploy_spiral/textures/deploy_spiral_arrow.png differ diff --git a/deploy_spiral/textures/deploy_spiral_arrow_2.png b/deploy_spiral/textures/deploy_spiral_arrow_2.png new file mode 100644 index 0000000..6e8eaa9 Binary files /dev/null and b/deploy_spiral/textures/deploy_spiral_arrow_2.png differ diff --git a/deploy_spiral/textures/deploy_spiral_arrow_back.png b/deploy_spiral/textures/deploy_spiral_arrow_back.png new file mode 100644 index 0000000..e0bba02 Binary files /dev/null and b/deploy_spiral/textures/deploy_spiral_arrow_back.png differ diff --git a/deploy_spiral/textures/deploy_spiral_arrow_front.png b/deploy_spiral/textures/deploy_spiral_arrow_front.png new file mode 100644 index 0000000..80138c4 Binary files /dev/null and b/deploy_spiral/textures/deploy_spiral_arrow_front.png differ