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