Add files via upload
parent
22bd43c254
commit
c1872df756
|
@ -0,0 +1,229 @@
|
|||
-- Minetest: builtin/item_entity.lua
|
||||
|
||||
function core.spawn_item(pos, item)
|
||||
-- Take item in any format
|
||||
local stack = ItemStack(item)
|
||||
local obj = core.add_entity(pos, "__builtin:item")
|
||||
-- Don't use obj if it couldn't be added to the map.
|
||||
if obj then
|
||||
obj:get_luaentity():set_item(stack:to_string())
|
||||
end
|
||||
return obj
|
||||
end
|
||||
|
||||
-- If item_entity_ttl is not set, enity will have default life time
|
||||
-- Setting it to -1 disables the feature
|
||||
|
||||
local time_to_live = tonumber(core.settings:get("item_entity_ttl"))
|
||||
if not time_to_live then
|
||||
time_to_live = 900
|
||||
end
|
||||
|
||||
core.register_entity(":__builtin:item", {
|
||||
initial_properties = {
|
||||
hp_max = 1,
|
||||
physical = true,
|
||||
collide_with_objects = false,
|
||||
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3},
|
||||
visual = "wielditem",
|
||||
visual_size = {x = 0.4, y = 0.4},
|
||||
textures = {""},
|
||||
spritediv = {x = 1, y = 1},
|
||||
initial_sprite_basepos = {x = 0, y = 0},
|
||||
is_visible = false,
|
||||
},
|
||||
|
||||
itemstring = '',
|
||||
physical_state = true,
|
||||
age = 0,
|
||||
|
||||
set_item = function(self, itemstring)
|
||||
self.itemstring = itemstring
|
||||
local stack = ItemStack(itemstring)
|
||||
local count = stack:get_count()
|
||||
local max_count = stack:get_stack_max()
|
||||
if count > max_count then
|
||||
count = max_count
|
||||
self.itemstring = stack:get_name().." "..max_count
|
||||
end
|
||||
local s = 0.2 + 0.1 * (count / max_count)
|
||||
local c = s
|
||||
local itemtable = stack:to_table()
|
||||
local itemname = nil
|
||||
if itemtable then
|
||||
itemname = stack:to_table().name
|
||||
end
|
||||
-- Backwards compatibility: old clients use the texture
|
||||
-- to get the type of the item
|
||||
local item_texture = nil
|
||||
local item_type = ""
|
||||
if core.registered_items[itemname] then
|
||||
item_texture = core.registered_items[itemname].inventory_image
|
||||
item_type = core.registered_items[itemname].type
|
||||
end
|
||||
local prop = {
|
||||
is_visible = true,
|
||||
visual = "wielditem",
|
||||
textures = {itemname},
|
||||
visual_size = {x = s, y = s},
|
||||
collisionbox = {-c, -c, -c, c, c, c},
|
||||
automatic_rotate = math.pi * 0.5,
|
||||
wield_item = itemstring,
|
||||
}
|
||||
self.object:set_properties(prop)
|
||||
end,
|
||||
|
||||
get_staticdata = function(self)
|
||||
return core.serialize({
|
||||
itemstring = self.itemstring,
|
||||
always_collect = self.always_collect,
|
||||
age = self.age,
|
||||
dropped_by = self.dropped_by
|
||||
})
|
||||
end,
|
||||
|
||||
on_activate = function(self, staticdata, dtime_s)
|
||||
if string.sub(staticdata, 1, string.len("return")) == "return" then
|
||||
local data = core.deserialize(staticdata)
|
||||
if data and type(data) == "table" then
|
||||
self.itemstring = data.itemstring
|
||||
self.always_collect = data.always_collect
|
||||
if data.age then
|
||||
self.age = data.age + dtime_s
|
||||
else
|
||||
self.age = dtime_s
|
||||
end
|
||||
self.dropped_by = data.dropped_by
|
||||
end
|
||||
else
|
||||
self.itemstring = staticdata
|
||||
end
|
||||
self.object:set_armor_groups({immortal = 1})
|
||||
self.object:setvelocity({x = 0, y = 2, z = 0})
|
||||
self.object:setacceleration({x = 0, y = -10, z = 0})
|
||||
self:set_item(self.itemstring)
|
||||
end,
|
||||
|
||||
-- moves items from this stack to an other stack
|
||||
try_merge_with = function(self, own_stack, object, obj)
|
||||
-- other item's stack
|
||||
local stack = ItemStack(obj.itemstring)
|
||||
-- only merge if items are the same
|
||||
if own_stack:get_name() == stack:get_name() and
|
||||
own_stack:get_meta() == stack:get_meta() and
|
||||
own_stack:get_wear() == stack:get_wear() and
|
||||
stack:get_free_space() > 0 then
|
||||
local overflow = false
|
||||
local count = stack:get_count() + own_stack:get_count()
|
||||
local max_count = stack:get_stack_max()
|
||||
if count > max_count then
|
||||
overflow = true
|
||||
stack:set_count(max_count)
|
||||
count = count - max_count
|
||||
own_stack:set_count(count)
|
||||
else
|
||||
self.itemstring = ''
|
||||
stack:set_count(count)
|
||||
end
|
||||
local pos = object:getpos()
|
||||
pos.y = pos.y + (count - stack:get_count()) / max_count * 0.15
|
||||
object:moveto(pos, false)
|
||||
local s, c
|
||||
if not overflow then
|
||||
obj.itemstring = stack:to_string()
|
||||
s = 0.2 + 0.1 * (count / max_count)
|
||||
c = s
|
||||
object:set_properties({
|
||||
visual_size = {x = s, y = s},
|
||||
collisionbox = {-c, -c, -c, c, c, c},
|
||||
wield_item = obj.itemstring
|
||||
})
|
||||
self.object:remove()
|
||||
-- merging succeeded
|
||||
return true
|
||||
else
|
||||
s = 0.4
|
||||
c = 0.3
|
||||
obj.itemstring = stack:to_string()
|
||||
object:set_properties({
|
||||
visual_size = {x = s, y = s},
|
||||
collisionbox = {-c, -c, -c, c, c, c},
|
||||
wield_item = obj.itemstring
|
||||
})
|
||||
s = 0.2 + 0.1 * (count / max_count)
|
||||
c = s
|
||||
self.itemstring = own_stack:to_string()
|
||||
self.object:set_properties({
|
||||
visual_size = {x = s, y = s},
|
||||
collisionbox = {-c, -c, -c, c, c, c},
|
||||
wield_item = self.itemstring
|
||||
})
|
||||
end
|
||||
end
|
||||
-- merging didn't succeed
|
||||
return false
|
||||
end,
|
||||
|
||||
on_step = function(self, dtime)
|
||||
self.age = self.age + dtime
|
||||
if time_to_live > 0 and self.age > time_to_live then
|
||||
self.itemstring = ''
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
local p = self.object:getpos()
|
||||
p.y = p.y - 0.5
|
||||
local node = core.get_node_or_nil(p)
|
||||
local in_unloaded = (node == nil)
|
||||
if in_unloaded then
|
||||
-- Don't infinetly fall into unloaded map
|
||||
self.object:setvelocity({x = 0, y = 0, z = 0})
|
||||
self.object:setacceleration({x = 0, y = 0, z = 0})
|
||||
self.physical_state = false
|
||||
self.object:set_properties({physical = false})
|
||||
return
|
||||
end
|
||||
local nn = node.name
|
||||
-- If node is not registered or node is walkably solid and resting on nodebox
|
||||
local v = self.object:getvelocity()
|
||||
if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then
|
||||
if self.physical_state then
|
||||
local own_stack = ItemStack(self.object:get_luaentity().itemstring)
|
||||
-- Merge with close entities of the same item
|
||||
for _, object in ipairs(core.get_objects_inside_radius(p, 0.8)) do
|
||||
local obj = object:get_luaentity()
|
||||
if obj and obj.name == "__builtin:item"
|
||||
and obj.physical_state == false then
|
||||
if self:try_merge_with(own_stack, object, obj) then
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
self.object:setvelocity({x = 0, y = 0, z = 0})
|
||||
self.object:setacceleration({x = 0, y = 0, z = 0})
|
||||
self.physical_state = false
|
||||
self.object:set_properties({physical = false})
|
||||
end
|
||||
else
|
||||
if not self.physical_state then
|
||||
self.object:setvelocity({x = 0, y = 0, z = 0})
|
||||
self.object:setacceleration({x = 0, y = -10, z = 0})
|
||||
self.physical_state = true
|
||||
self.object:set_properties({physical = true})
|
||||
end
|
||||
end
|
||||
end,
|
||||
|
||||
on_punch = function(self, hitter)
|
||||
local inv = hitter:get_inventory()
|
||||
if inv and self.itemstring ~= '' then
|
||||
local left = inv:add_item("main", self.itemstring)
|
||||
if left and not left:is_empty() then
|
||||
self.itemstring = left:to_string()
|
||||
return
|
||||
end
|
||||
end
|
||||
self.itemstring = ''
|
||||
self.object:remove()
|
||||
end,
|
||||
})
|
|
@ -0,0 +1,204 @@
|
|||
-- I want to give credit to: Splizard for their minetest-mod-snow https://github.com/Splizard/minetest-mod-snow/blob/master/src/snowball.lua
|
||||
-- Thank you!
|
||||
|
||||
local creative_mode = minetest.settings:get_bool"creative_mode"
|
||||
|
||||
|
||||
local ninjastar_velocity, entity_attack_delay
|
||||
local function update_ninjastar_vel(v)
|
||||
ninjastar_velocity = v
|
||||
local walkspeed = tonumber(minetest.settings:get"movement_speed_walk") or 4
|
||||
entity_attack_delay = (walkspeed+1)/v
|
||||
end
|
||||
update_ninjastar_vel(ninjastarmod.ninjastar_velocity)
|
||||
|
||||
local ninjastar_gravity = ninjastarmod.ninjastar_gravity
|
||||
ninjastarmod.register_on_configuring(function(name, v)
|
||||
if name == "ninjastar_velocity" then
|
||||
update_ninjastar_vel(v)
|
||||
elseif name == "ninjastar_gravity" then
|
||||
ninjastar_gravity = v
|
||||
end
|
||||
end)
|
||||
|
||||
local function get_gravity()
|
||||
local grav = tonumber(minetest.settings:get"movement_gravity") or 9.81
|
||||
return grav*ninjastar_gravity
|
||||
end
|
||||
|
||||
local someone_throwing, just_acitvated
|
||||
|
||||
--Shoot snowball
|
||||
function ninjastarmod.shoot_ninjastar(item, player)
|
||||
local addp = {y = 1.625} -- + (math.random()-0.5)/5}
|
||||
local dir = player:get_look_dir()
|
||||
local dif = 2*math.sqrt(dir.z*dir.z+dir.x*dir.x)
|
||||
addp.x = dir.z/dif -- + (math.random()-0.5)/5
|
||||
addp.z = -dir.x/dif -- + (math.random()-0.5)/5
|
||||
local pos = vector.add(player:getpos(), addp)
|
||||
local obj = minetest.add_entity(pos, "ninjastarmod:EntityNinjaStar_wood")
|
||||
obj:setvelocity(vector.multiply(dir, ninjastar_velocity))
|
||||
obj:setacceleration({x=dir.x*-3, y=-get_gravity(), z=dir.z*-3})
|
||||
obj:get_luaentity().thrower = player:get_player_name()
|
||||
if creative_mode then
|
||||
if not someone_throwing then
|
||||
someone_throwing = true
|
||||
just_acitvated = true
|
||||
end
|
||||
return
|
||||
end
|
||||
item:take_item()
|
||||
return item
|
||||
end
|
||||
|
||||
if creative_mode then
|
||||
local function update_step()
|
||||
local active
|
||||
for _,player in pairs(minetest.get_connected_players()) do
|
||||
if player:get_player_control().LMB then
|
||||
local item = player:get_wielded_item()
|
||||
local itemname = item:get_name()
|
||||
if itemname == "ninjastarmod:ItemNinjaStar_wood" then
|
||||
ninjastarmod.shoot_ninjastar(nil, player)
|
||||
active = true
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
-- disable the function if noone currently throws them
|
||||
if not active then
|
||||
someone_throwing = false
|
||||
end
|
||||
end
|
||||
|
||||
-- do automatic throwing using minetest.after
|
||||
local function do_step()
|
||||
local timer
|
||||
-- only if one holds left click
|
||||
if someone_throwing
|
||||
and not just_acitvated then
|
||||
update_step()
|
||||
timer = 0.006
|
||||
else
|
||||
timer = 0.5
|
||||
just_acitvated = false
|
||||
end
|
||||
minetest.after(timer, do_step)
|
||||
end
|
||||
minetest.after(3, do_step)
|
||||
end
|
||||
|
||||
--The NinjaStar Entity
|
||||
local EntityNinjaStar_wood = {
|
||||
physical = false,
|
||||
timer = 0,
|
||||
collisionbox = {-5/16,-5/16,-5/16, 5/16,5/16,5/16},
|
||||
}
|
||||
|
||||
function EntityNinjaStar_wood.on_activate(self)
|
||||
self.object:set_properties({textures = {"ItemNinjaStar_wood.png^[transform"..math.random(0,7)}})
|
||||
self.object:setacceleration({x=0, y=-get_gravity(), z=0})
|
||||
self.lastpos = self.object:getpos()
|
||||
minetest.after(0.1, function(obj)
|
||||
if not obj then
|
||||
return
|
||||
end
|
||||
local vel = obj:getvelocity()
|
||||
if vel
|
||||
and vel.y ~= 0 then
|
||||
return
|
||||
end
|
||||
minetest.after(0, function(obj)
|
||||
if not obj then
|
||||
return
|
||||
end
|
||||
local vel = obj:getvelocity()
|
||||
if not vel
|
||||
or vel.y == 0 then
|
||||
obj:remove()
|
||||
end
|
||||
end, obj)
|
||||
end, self.object)
|
||||
end
|
||||
|
||||
--Snowball_entity.on_step()--> called when snowball is moving.
|
||||
function EntityNinjaStar_wood.on_step(self, dtime)
|
||||
self.timer = self.timer+dtime
|
||||
if self.timer > 600 then
|
||||
-- 10 minutes are too long for a snowball to fly somewhere
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
|
||||
if self.physical then
|
||||
local fell = self.object:getvelocity().y == 0
|
||||
if not fell then
|
||||
return
|
||||
end
|
||||
local pos = vector.round(self.object:getpos())
|
||||
if minetest.get_node(pos).name == "air" then
|
||||
pos.y = pos.y-1
|
||||
if minetest.get_node(pos).name == "air" then
|
||||
return
|
||||
end
|
||||
end
|
||||
snow.place(pos)
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
|
||||
local pos = vector.round(self.object:getpos())
|
||||
if vector.equals(pos, self.lastpos) then
|
||||
return
|
||||
end
|
||||
if minetest.get_node(pos).name ~= "air" then
|
||||
self.object:setacceleration({x=0, y=-get_gravity(), z=0})
|
||||
--self.object:setvelocity({x=0, y=0, z=0})
|
||||
pos = self.lastpos
|
||||
self.object:setpos(pos)
|
||||
minetest.sound_play("NinjaStarHit", {pos=pos, gain=vector.length(self.object:getvelocity())/30})
|
||||
self.object:set_properties({physical = true})
|
||||
self.physical = true
|
||||
return
|
||||
end
|
||||
self.lastpos = vector.new(pos)
|
||||
|
||||
if self.timer < entity_attack_delay then
|
||||
return
|
||||
end
|
||||
for _,v in pairs(minetest.get_objects_inside_radius(pos, 1.73)) do
|
||||
local entity = v:get_luaentity()
|
||||
if v ~= self.object
|
||||
and entity then
|
||||
local entity_name = entity.name
|
||||
if v:is_player()
|
||||
or (entity_name ~= "ninjastarmod:EntityNinjaStar_wood"
|
||||
and entity_name ~= "__builtin:item"
|
||||
and entity_name ~= "gauges:hp_bar") then
|
||||
local vvel = v:getvelocity() or v:get_player_velocity()
|
||||
local veldif = self.object:getvelocity()
|
||||
if vvel then
|
||||
veldif = vector.subtract(veldif, vvel)
|
||||
end
|
||||
local gain = vector.length(veldif)/20
|
||||
v:punch(
|
||||
(self.thrower and minetest.get_player_by_name(self.thrower))
|
||||
or self.object,
|
||||
1,
|
||||
{full_punch_interval=1, damage_groups = {fleshy=math.ceil(gain)}}
|
||||
)
|
||||
minetest.sound_play("NinjaStarHit", {pos=pos, gain=gain})
|
||||
spawn_falling_node(pos, {name = "ninjastarmod:ItemNinjaStar_wood"})
|
||||
self.object:remove()
|
||||
return
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
|
||||
|
||||
minetest.register_entity("ninjastarmod:EntityNinjaStar_wood", EntityNinjaStar_wood)
|
||||
|
||||
|
|
@ -1,16 +1,18 @@
|
|||
--This mod was made with the help of throwing mod : https://github.com/minetest-mods/throwing
|
||||
-- ninjastarmod (ninjastarmod 1.0.0.0)
|
||||
-- Made by: jtrent238
|
||||
|
||||
-- Definitions made by this mod that other mods can use too
|
||||
ninjastarmod = {}
|
||||
|
||||
ninjastarmod.stars = {"ItemNinjaStar_wood", "ItemNinjaStar_stone", "ItemNinjaStar_iron", "ItemNinjaStar_gold", "ItemNinjaStar_mese", "ItemNinjaStar_diamond"}
|
||||
|
||||
ninjastarmod.target_object = 1
|
||||
ninjastarmod.target_node = 2
|
||||
ninjastarmod.target_both = 3
|
||||
|
||||
ninjastarmod.modname = minetest.get_current_modname()
|
||||
|
||||
-- Load other files
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/EntityNinjaStar_wood.lua")
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/ItemNinjaStar_stone.lua")
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/ItemNinjaStar_iron.lua")
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/ItemNinjaStar_gold.lua")
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/ItemNinjaStar_mese.lua")
|
||||
--dofile(minetest.get_modpath("ninjastarmod").."/ItemNinjaStar_diamond.lua")
|
||||
|
||||
-- Set a noticeable inventory formspec for players
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
local cb = function(player)
|
||||
|
@ -19,92 +21,17 @@ minetest.register_on_joinplayer(function(player)
|
|||
minetest.after(2.0, cb, player)
|
||||
end)
|
||||
|
||||
function ninjastarmod.is_star(itemstack)
|
||||
for _, arrow in ipairs(ninjastarmod.stars) do
|
||||
if (type(itemstack) == "string" and itemstack or itemstack:get_name()) == star then
|
||||
return true
|
||||
end
|
||||
end
|
||||
return false
|
||||
-- Add NinjaStars to treasurer API
|
||||
if minetest.get_modpath("treasurer") then
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_wood",0.1,2,{3,6})
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_stone",0.1,2,{3,6})
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_iron",0.1,2,{3,6})
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_gold",0.1,2,{3,6})
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_mese",0.1,2,{3,6})
|
||||
treasurer.register_treasure("ninjastarmod:ItemNinjaStar_diamond",0.1,2,{3,6})
|
||||
end
|
||||
|
||||
local function throw_star(itemstack, player, index, throw_itself, new_stack)
|
||||
local inventory = player:get_inventory()
|
||||
if not throw_itself then
|
||||
if index >= player:get_inventory():get_size("main") then
|
||||
return false
|
||||
end
|
||||
index = index + 1
|
||||
end
|
||||
local star_stack = inventory:get_stack("main", index)
|
||||
local star = star_stack:get_name()
|
||||
|
||||
local playerpos = player:getpos()
|
||||
local pos = {x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}
|
||||
local obj = (minetest.registered_items[itemstack:get_name()].spawn_ninjastar or ninjastarmod.spawn_ninjastar)(pos, arrow, player)
|
||||
|
||||
local luanetity = obj:get_luaentity()
|
||||
luanetity.player = player:get_player_name()
|
||||
if not luanetity.item then
|
||||
luanetity.item = star
|
||||
end
|
||||
|
||||
if luanetity.on_throw then
|
||||
if luanetity:on_throw(pos, player, star_stack, index, luanetity.data) == false then
|
||||
obj:remove()
|
||||
return false
|
||||
end
|
||||
end
|
||||
|
||||
local dir = player:get_look_dir()
|
||||
local velocity_factor = tonumber(minetest.settings:get("ninjastarmod.velocity_factor")) or 19
|
||||
local horizontal_acceleration_factor = tonumber(minetest.settings:get("ninjastarmod.horizontal_acceleration_factor")) or -3
|
||||
local vertical_acceleration = tonumber(minetest.settings:get("ninjastarmod.vertical_acceleration")) or -10
|
||||
|
||||
obj:setvelocity({x=dir.x*velocity_factor, y=dir.y*velocity_factor, z=dir.z*velocity_factor})
|
||||
obj:setacceleration({x=dir.x*horizontal_acceleration_factor, y=vertical_acceleration, z=dir.z*horizontal_acceleration_factor})
|
||||
obj:setyaw(player:get_look_horizontal()-math.pi/2)
|
||||
|
||||
if luanetity.on_throw_sound ~= "" then
|
||||
minetest.sound_play(luanetity.on_throw_sound or "NinjaStarHit", {pos=playerpos, gain = 0.5})
|
||||
end
|
||||
|
||||
if not minetest.settings:get_bool("creative_mode") then
|
||||
if new_stack then
|
||||
inventory:set_stack("main", index, new_stack)
|
||||
else
|
||||
local stack = inventory:get_stack("main", index)
|
||||
stack:take_item()
|
||||
inventory:set_stack("main", index, stack)
|
||||
end
|
||||
end
|
||||
|
||||
return true
|
||||
|
||||
end
|
||||
|
||||
function ninjastarmod.make_star_def(def)
|
||||
def.timer = 0
|
||||
def.player = ""
|
||||
def.on_step = star_step
|
||||
def.data = {}
|
||||
return def
|
||||
end
|
||||
|
||||
|
||||
function ninjastarmod.spawn_ninjastar(pos, start, player)
|
||||
if ninjastarmod.is_ninjastar(star) then
|
||||
return minetest.add_entity(pos, star.."_entity")
|
||||
elseif minetest.registered_items[star].throwing_entity then
|
||||
if type(minetest.registered_items[star].throwing_entity) == string then
|
||||
return minetest.add_entity(pos, minetest.registered_items[star].throwing_entity)
|
||||
else -- Type is a function
|
||||
return minetest.registered_items[star].throwing_entity(pos, player)
|
||||
end
|
||||
else
|
||||
obj = minetest.add_entity(pos, "_builtin:item", star)
|
||||
end
|
||||
end
|
||||
|
||||
-- ITEMS
|
||||
|
||||
|
@ -114,6 +41,8 @@ minetest.register_craftitem('ninjastarmod:ItemNinjaStar_wood', {
|
|||
stack_max = 64,
|
||||
})
|
||||
|
||||
minetest.register_entity(":__builtin:item", EntityNinjaStar)
|
||||
|
||||
minetest.register_craftitem('ninjastarmod:ItemNinjaStar_stone', {
|
||||
description = 'Stone Ninja Star',
|
||||
inventory_image = 'ItemNinjaStar_stone.png',
|
||||
|
@ -143,3 +72,95 @@ minetest.register_craftitem('ninjastarmod:ItemNinjaStar_mese', {
|
|||
inventory_image = 'ItemNinjaStar_mese.png',
|
||||
stack_max = 64,
|
||||
})
|
||||
|
||||
-- CRAFTS
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_wood',
|
||||
recipe = {
|
||||
{'','default:acacia_wood',''},
|
||||
{'default:acacia_wood', '', 'default:acacia_wood'},
|
||||
{'', 'default:acacia_wood', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_wood',
|
||||
recipe = {
|
||||
{'','default:aspen_wood',''},
|
||||
{'default:aspen_wood', '', 'default:aspen_wood'},
|
||||
{'', 'default:aspen_wood', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_wood',
|
||||
recipe = {
|
||||
{'','default:pine_wood',''},
|
||||
{'default:pine_wood', '', 'default:pine_wood'},
|
||||
{'', 'default:pine_wood', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_wood',
|
||||
recipe = {
|
||||
{'','default:wood',''},
|
||||
{'default:wood', '', 'default:wood'},
|
||||
{'', 'default:wood', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_stone',
|
||||
recipe = {
|
||||
{'','default:stone',''},
|
||||
{'default:stone', '', 'default:stone'},
|
||||
{'', 'default:stone', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_iron',
|
||||
recipe = {
|
||||
{'','default:ingot_iron',''},
|
||||
{'default:ingot_iron', '', 'default:ingot_lump'},
|
||||
{'', 'default:ingot_iron', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_iron',
|
||||
recipe = {
|
||||
{'','default:iron_lump',''},
|
||||
{'default:iron_lump', '', 'default:iron_lump'},
|
||||
{'', 'default:iron_lump', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_gold',
|
||||
recipe = {
|
||||
{'','default:gold_ingot',''},
|
||||
{'default:gold_ingot', '', 'default:gold_ingot'},
|
||||
{'', 'default:gold_ingot', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_mese',
|
||||
recipe = {
|
||||
{'','default:mese_crystal',''},
|
||||
{'default:mese_crystal', '', 'default:mese_crystal'},
|
||||
{'', 'default:mese_crystal', ''},
|
||||
}
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = 'ninjastarmod:ItemNinjaStar_diamond',
|
||||
recipe = {
|
||||
{'','default:diamond',''},
|
||||
{'default:diamond', '', 'default:diamond'},
|
||||
{'', 'default:diamond', ''},
|
||||
}
|
||||
})
|
Loading…
Reference in New Issue