eggwars/register_nodes.lua

159 lines
4.6 KiB
Lua
Executable File

----------------------------------------------------------------------
-- Eggwars by wilkgr --
-- with additional code by shivajiva101@hotmail.com --
-- Licensed under the AGPL v3 --
-- You MUST make any changes you make open source --
-- even if you just run it on your server without publishing it --
-- Supports a maximum of 8 players per instance and 8 concurrent --
-- instances for a max of 64 players --
----------------------------------------------------------------------
eggwars = eggwars
--- Displays message for items that cannot be dropped
-- @return nothing
eggwars.drop_msg = function(itemstack, player)
local name = player:get_player_name()
minetest.chat_send_player(name, "Don't be silly, you can't drop that!")
end
------------------------
-- on_timer functions --
------------------------
local function goldspawner(pos, elapsed)
local sp = vector.new(pos.x, pos.y + 3, pos.z)
minetest.add_item(sp, "default:gold_ingot")
return true
end
local function rubyspawner(pos, elapsed)
local sp = vector.new(pos.x, pos.y + 3, pos.z)
minetest.add_item(sp, "eggwars:ruby")
return true
end
local function diamondspawner(pos, elapsed)
local sp = vector.new(pos.x, pos.y + 3, pos.z)
minetest.add_item(sp, "default:diamond")
return true
end
-----------------
-- craft items --
-----------------
minetest.register_craftitem("eggwars:ruby", {
description = "Ruby",
inventory_image = "eggwars_ruby.png",
})
------------------------
-- node registrations --
------------------------
-- Arena eggs
for i, v in ipairs(eggwars.arena[1].cs) do
minetest.register_node("eggwars:egg" .. i, {
description = eggwars.arena[1].cs[i][1] .. " egg",
tiles = {"eggwars_shell.png^[colorize:" .. eggwars.arena[1].cs[i][2]},
drawtype = "mesh",
mesh = "eggwars_egg.obj",
groups = {crumbly = 3, not_in_creative_inventory = 1},
paramtype = "light",
--light_source = 14,
selection_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.35, 0.35, 0.45, 0.35} -- right, bottom, back, left, top, front
},
collision_box = {
type = "fixed",
fixed = {-0.35, -0.5, -0.35, 0.35, 0.45, 0.35}
},
drop = {},
on_drop = eggwars.drop_msg,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
local victim, attacker, msg, key, match, eggs
victim = oldmetadata.fields.owner
attacker = digger:get_player_name()
key = eggwars.player[victim]
match = eggwars.match[key]
match.player[victim].egg = false
eggs = match.player[attacker].eggs + 1
match.player[attacker].eggs = eggs
msg = victim .. "'s egg was destroyed by " .. attacker
eggwars.add_tmp_image(victim, 'eggwars_destroyed.png', 5)
minetest.sound_play("eggwars_crack", {
to_player = victim,
gain = 1.0,
})
eggwars.chat_send_match(key, msg)
eggwars.update_hud(key, match.player[victim].id)
eggwars.match[key] = match
end,
can_dig = function(pos, player)
local meta = minetest.get_meta(pos)
local name = meta:get_string("owner")
local pname = player:get_player_name()
if name == pname then
return false
else
return true
end
end
})
end
-- Spawners
minetest.register_node("eggwars:gold_spawner", {
description = "Gold ingot spawner",
tiles = {"default_stone.png^default_mineral_gold.png"},
groups = {unbreakable = 1, not_in_creative_inventory = 1},
on_timer = goldspawner
})
minetest.register_node("eggwars:ruby_spawner", {
description = "Ruby gemstone spawner",
tiles = {"default_stone.png^eggwars_mineral_ruby.png"},
groups = {unbreakable = 1, not_in_creative_inventory = 1},
on_timer = rubyspawner
})
minetest.register_node("eggwars:diamond_spawner", {
description = "Diamond gemstone spawner",
tiles = {"default_stone.png^default_mineral_diamond.png"},
groups = {unbreakable = 1, not_in_creative_inventory = 1},
on_timer = diamondspawner
})
-- Misc
minetest.register_node("eggwars:kill", {
description = "Kill Block",
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_black.png",
drawtype = "airlike",
walkable = false,
pointable = false,
damage_per_second = 20,
paramtype = "light",
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = 1},
})
minetest.register_node("eggwars:playerclip", {
description = "Player Clip",
range = 12,
stack_max = 10000,
inventory_image = "default_steel_block.png^dye_green.png",
drawtype = "airlike",
paramtype = "light",
pointable = false,
sunlight_propagates = true,
drop = "",
groups = {unbreakable = 1, not_in_creative_inventory = 1},
})