adding initial mods
parent
f4e6dfb9e4
commit
43fcb88133
|
@ -0,0 +1 @@
|
|||
player_data
|
|
@ -0,0 +1,52 @@
|
|||
-- move player to registered "home" position when respawned
|
||||
minetest.register_on_respawnplayer(function(player)
|
||||
local name = player:get_player_name()
|
||||
local home = player_data.get_player_data(name, "home_position")
|
||||
if home ~= nil then
|
||||
minetest.log("action", "Moving player "..name.." to home position.")
|
||||
player:setpos(home)
|
||||
return true
|
||||
end
|
||||
minetest.log("action", "No home position for player "..name..".")
|
||||
return false
|
||||
end)
|
||||
|
||||
-- set player home position
|
||||
minetest.register_chatcommand("home", {
|
||||
params = "",
|
||||
description = "set your 'home' position.",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
player_data.set_player_data(name, "home_position", player:getpos())
|
||||
local home = player_data.get_player_data(name, "home_position")
|
||||
minetest.log("action", "Set home position for player "..name.." to ("..home.x..", "..home.y..", "..home.z..").")
|
||||
minetest.chat_send_player(name, "You will now respawn here.")
|
||||
end,
|
||||
})
|
||||
|
||||
-- kills the player
|
||||
minetest.register_chatcommand("killme", {
|
||||
params = "",
|
||||
description = "kills you.",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
player:set_hp(0)
|
||||
minetest.log("action", "Killed player "..name..".")
|
||||
end,
|
||||
})
|
||||
|
||||
-- report player location
|
||||
minetest.register_chatcommand("where", {
|
||||
params = "",
|
||||
description = "report your position and orientation",
|
||||
privs = {},
|
||||
func = function(name, param)
|
||||
local player = minetest.env:get_player_by_name(name)
|
||||
local pos = player:getpos()
|
||||
minetest.chat_send_player(name, "Player "..name.." is at ("..pos.x..", "..pos.y..", "..pos.z..").")
|
||||
end,
|
||||
})
|
||||
|
||||
print("hello from "..minetest.get_current_modname().." at "..minetest.get_modpath(minetest.get_current_modname()).."!")
|
|
@ -0,0 +1 @@
|
|||
|
|
@ -0,0 +1,49 @@
|
|||
player_data = {}
|
||||
player_data.player_data_path = minetest.get_worldpath().."/player_data.lua"
|
||||
|
||||
function player_data.save_player_data()
|
||||
local file = io.open(player_data.player_data_path, "w")
|
||||
file:write(minetest.serialize(player_data.player_data))
|
||||
file:close()
|
||||
end
|
||||
|
||||
function player_data.load_player_data()
|
||||
local function exists(filename)
|
||||
local file = io.open(filename, "rb")
|
||||
if file == nil then
|
||||
return false
|
||||
end
|
||||
file:close()
|
||||
return true
|
||||
end
|
||||
|
||||
if exists(player_data.player_data_path) then
|
||||
player_data.player_data = dofile(player_data.player_data_path)
|
||||
else
|
||||
player_data.player_data = {}
|
||||
end
|
||||
end
|
||||
|
||||
function player_data.set_player_data(player, field, data)
|
||||
if type(player) ~= "string" then
|
||||
player = player:get_player_name()
|
||||
end
|
||||
if player_data.player_data[player] == nil then
|
||||
player_data.player_data[player] = {}
|
||||
end
|
||||
player_data.player_data[player][field] = data
|
||||
player_data.save_player_data()
|
||||
end
|
||||
|
||||
function player_data.get_player_data(player, field)
|
||||
if type(player) ~= "string" then
|
||||
player = player:get_player_name()
|
||||
end
|
||||
if player_data.player_data[player] == nil then
|
||||
return nil
|
||||
end
|
||||
return player_data.player_data[player][field]
|
||||
end
|
||||
|
||||
player_data.load_player_data()
|
||||
print("hello from "..minetest.get_current_modname().." at "..minetest.get_modpath(minetest.get_current_modname()).."!")
|
|
@ -0,0 +1,27 @@
|
|||
Minetest 0.4 mod: stairs
|
||||
=========================
|
||||
|
||||
License of source code:
|
||||
-----------------------
|
||||
Copyright (C) 2012 Ken Bull <llubnek@gmail.com>
|
||||
Copyright (C) 2011-2012 Kahrl <kahrl@gmx.net>
|
||||
Copyright (C) 2011-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU Lesser General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
http://www.gnu.org/licenses/lgpl-2.1.html
|
||||
|
||||
License of media (textures and sounds)
|
||||
--------------------------------------
|
||||
Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
|
||||
http://creativecommons.org/licenses/by-sa/3.0/
|
||||
|
||||
Authors of media files
|
||||
-----------------------
|
||||
Everything not listed in here:
|
||||
Copyright (C) 2010-2012 celeron55, Perttu Ahola <celeron55@gmail.com>
|
||||
|
||||
|
|
@ -0,0 +1,2 @@
|
|||
default
|
||||
stairs
|
|
@ -0,0 +1,134 @@
|
|||
-- Minetest 0.4 mod: stairs
|
||||
-- See README.txt for licensing and other information.
|
||||
|
||||
-- Node will be called stairs:stair_<subname>
|
||||
function stairs.register_stair(subname, recipeitem, groups, images, description)
|
||||
minetest.register_node(minetest.get_current_modname()..":stair_" .. subname, {
|
||||
description = description,
|
||||
drawtype = "nodebox",
|
||||
tiles = images,
|
||||
paramtype = "light",
|
||||
paramtype2 = "facedir",
|
||||
is_ground_content = true,
|
||||
groups = groups,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
{-0.5, 0, 0, 0.5, 0.5, 0.5},
|
||||
},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = minetest.get_current_modname()..':stair_' .. subname .. ' 4',
|
||||
recipe = {
|
||||
{recipeitem, "", ""},
|
||||
{recipeitem, recipeitem, ""},
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
|
||||
-- Flipped recipe for the silly minecrafters
|
||||
minetest.register_craft({
|
||||
output = minetest.get_current_modname()..':stair_' .. subname .. ' 4',
|
||||
recipe = {
|
||||
{"", "", recipeitem},
|
||||
{"", recipeitem, recipeitem},
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
-- Node will be called stairs:slab_<subname>
|
||||
function stairs.register_slab(subname, recipeitem, groups, images, description)
|
||||
minetest.register_node(minetest.get_current_modname()..":slab_" .. subname, {
|
||||
description = description,
|
||||
drawtype = "nodebox",
|
||||
tiles = images,
|
||||
paramtype = "light",
|
||||
is_ground_content = true,
|
||||
groups = groups,
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
selection_box = {
|
||||
type = "fixed",
|
||||
fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5},
|
||||
},
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
if pointed_thing.type ~= "node" then
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- If it's being placed on an another similar one, replace it with
|
||||
-- a full block
|
||||
local slabpos = nil
|
||||
local slabnode = nil
|
||||
local p0 = pointed_thing.under
|
||||
local p1 = pointed_thing.above
|
||||
local n0 = minetest.env:get_node(p0)
|
||||
local n1 = minetest.env:get_node(p1)
|
||||
if n0.name == minetest.get_current_modname()..":slab_" .. subname then
|
||||
slabpos = p0
|
||||
slabnode = n0
|
||||
elseif n1.name == minetest.get_current_modname()..":slab_" .. subname then
|
||||
slabpos = p1
|
||||
slabnode = n1
|
||||
end
|
||||
if slabpos then
|
||||
-- Remove the slab at slabpos
|
||||
minetest.env:remove_node(slabpos)
|
||||
-- Make a fake stack of a single item and try to place it
|
||||
local fakestack = ItemStack(recipeitem)
|
||||
pointed_thing.above = slabpos
|
||||
fakestack = minetest.item_place(fakestack, placer, pointed_thing)
|
||||
-- If the item was taken from the fake stack, decrement original
|
||||
if not fakestack or fakestack:is_empty() then
|
||||
itemstack:take_item(1)
|
||||
-- Else put old node back
|
||||
else
|
||||
minetest.env:set_node(slabpos, slabnode)
|
||||
end
|
||||
return itemstack
|
||||
end
|
||||
|
||||
-- Otherwise place regularly
|
||||
return minetest.item_place(itemstack, placer, pointed_thing)
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = minetest.get_current_modname()..':slab_' .. subname .. ' 3',
|
||||
recipe = {
|
||||
{recipeitem, recipeitem, recipeitem},
|
||||
},
|
||||
})
|
||||
end
|
||||
|
||||
-- Nodes will be called stairs:{stair,slab}_<subname>
|
||||
function stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab)
|
||||
stairs.register_stair(subname, recipeitem, groups, images, desc_stair)
|
||||
stairs.register_slab(subname, recipeitem, groups, images, desc_slab)
|
||||
end
|
||||
|
||||
|
||||
-- add glass and desert stone stairs and slabs
|
||||
stairs.register_stair_and_slab(
|
||||
"desert_stone",
|
||||
"default:desert_stone",
|
||||
{cracky=3},
|
||||
{"default_desert_stone.png"},
|
||||
"Desert Stone Stair",
|
||||
"Desert Stone Slab")
|
||||
|
||||
stairs.register_stair_and_slab(
|
||||
"glass",
|
||||
"default:glass",
|
||||
{snappy=2,cracky=3,oddly_breakable_by_hand=3},
|
||||
{"default_glass.png"},
|
||||
"Glass Stair",
|
||||
"Glass Slab")
|
||||
|
||||
print("hello from "..minetest.get_current_modname().." at "..minetest.get_modpath(minetest.get_current_modname()).."!")
|
Loading…
Reference in New Issue