adding initial mods

master
Ken Bull 2012-09-09 05:09:08 -04:00
parent f4e6dfb9e4
commit 43fcb88133
7 changed files with 266 additions and 0 deletions

View File

@ -0,0 +1 @@
player_data

52
home_positions/init.lua Normal file
View File

@ -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()).."!")

1
player_data/depends.txt Normal file
View File

@ -0,0 +1 @@

49
player_data/init.lua Normal file
View File

@ -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()).."!")

27
stairs2/README.txt Normal file
View File

@ -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>

2
stairs2/depends.txt Normal file
View File

@ -0,0 +1,2 @@
default
stairs

134
stairs2/init.lua Normal file
View File

@ -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()).."!")