Remplissage du dépôt.
72
dagger.lua
Executable file
@ -0,0 +1,72 @@
|
|||||||
|
-- Based on compass mod by Echo
|
||||||
|
|
||||||
|
local function tick()
|
||||||
|
minetest.after(1, tick)
|
||||||
|
local players = minetest.get_connected_players()
|
||||||
|
for i,player in ipairs(players) do
|
||||||
|
local target = lavatemple.mapgen_data.pos;
|
||||||
|
if not target then return end
|
||||||
|
local pos = player:getpos()
|
||||||
|
local dir = player:get_look_yaw()
|
||||||
|
local angle_north = math.deg(math.atan2(target.x - pos.x, target.z - pos.z))
|
||||||
|
if angle_north < 0 then angle_north = angle_north + 360 end
|
||||||
|
local angle_dir = 90 - math.deg(dir)
|
||||||
|
local angle_relative = (angle_north - angle_dir) % 360
|
||||||
|
local compass_image = math.floor((angle_relative/30) + 0.5)%12
|
||||||
|
|
||||||
|
local wielded_item = player:get_wielded_item():get_name()
|
||||||
|
if string.sub(wielded_item, 0, 18) == "lavatemple:dagger_" then
|
||||||
|
player:set_wielded_item("lavatemple:dagger_"..compass_image)
|
||||||
|
else
|
||||||
|
if player:get_inventory() then
|
||||||
|
for i,stack in ipairs(player:get_inventory():get_list("main")) do
|
||||||
|
if string.sub(stack:get_name(), 0, 18) == "lavatemple:dagger_" and
|
||||||
|
stack:get_name() ~= "lavatemple:dagger_"..compass_image then
|
||||||
|
player:get_inventory():set_stack("main", i, ItemStack("lavatemple:dagger_"..compass_image))
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
tick()
|
||||||
|
|
||||||
|
local images = {
|
||||||
|
"lavatemple_dagger_0.png",
|
||||||
|
"lavatemple_dagger_1.png",
|
||||||
|
"lavatemple_dagger_2.png",
|
||||||
|
"lavatemple_dagger_3.png",
|
||||||
|
"lavatemple_dagger_4.png",
|
||||||
|
"lavatemple_dagger_5.png",
|
||||||
|
"lavatemple_dagger_6.png",
|
||||||
|
"lavatemple_dagger_5.png",
|
||||||
|
"lavatemple_dagger_4.png",
|
||||||
|
"lavatemple_dagger_3.png",
|
||||||
|
"lavatemple_dagger_2.png",
|
||||||
|
"lavatemple_dagger_1.png",
|
||||||
|
}
|
||||||
|
|
||||||
|
local i
|
||||||
|
for i,img in ipairs(images) do
|
||||||
|
local inv = 1
|
||||||
|
if i == 1 then
|
||||||
|
inv = 0
|
||||||
|
end
|
||||||
|
minetest.register_tool("lavatemple:dagger_"..(i-1), {
|
||||||
|
description = "Lava dagger",
|
||||||
|
inventory_image = img,
|
||||||
|
wield_image = img,
|
||||||
|
groups = {not_in_creative_inventory=inv},
|
||||||
|
})
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_craft({
|
||||||
|
output = 'lavatemple:dagger_1',
|
||||||
|
recipe = {
|
||||||
|
{'zmobs:lava_orb', 'default:steel_ingot', 'zmobs:lava_orb'},
|
||||||
|
{'zmobs:lava_orb', 'default:steel_ingot', 'zmobs:lava_orb'},
|
||||||
|
{'zmobs:lava_orb', 'default:stick', 'zmobs:lava_orb'}
|
||||||
|
}
|
||||||
|
})
|
||||||
|
|
5
depends.txt
Executable file
@ -0,0 +1,5 @@
|
|||||||
|
default
|
||||||
|
stairs
|
||||||
|
mobs
|
||||||
|
worldedit
|
||||||
|
watershed?
|
7
init.lua
Executable file
@ -0,0 +1,7 @@
|
|||||||
|
lavatemple = {}
|
||||||
|
local MODPATH = minetest.get_modpath("lavatemple")
|
||||||
|
dofile(MODPATH.."/nodes.lua")
|
||||||
|
dofile(MODPATH.."/items.lua")
|
||||||
|
dofile(MODPATH.."/mapgen.lua")
|
||||||
|
dofile(MODPATH.."/dagger.lua")
|
||||||
|
|
31
items.lua
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
|
||||||
|
minetest.register_tool("lavatemple:darkpick", {
|
||||||
|
description = "Dark Pickaxe",
|
||||||
|
inventory_image = "lavatemple_tool_darkpick.png",
|
||||||
|
tool_capabilities = {
|
||||||
|
full_punch_interval = 1.0,
|
||||||
|
max_drop_level=0,
|
||||||
|
groupcaps={
|
||||||
|
dark = {times={[1]=0.25}, uses=0, maxlevel=1},
|
||||||
|
},
|
||||||
|
damage_groups = {},
|
||||||
|
},
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_craftitem("lavatemple:teleport_orb", {
|
||||||
|
description = "Teleport'orb (does nothing yet)",
|
||||||
|
inventory_image = "lavatemple_teleport_orb.png",
|
||||||
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
-- MODIFICATION MADE FOR MFF
|
||||||
|
minetest.register_craft({
|
||||||
|
output = "lavatemple:ladder 4",
|
||||||
|
recipe = {
|
||||||
|
{"default:obsidianbrick", "dye:red", "default:obsidianbrick"},
|
||||||
|
{"default:obsidianbrick", "default:obsidianbrick", "default:obsidianbrick"},
|
||||||
|
{"default:obsidianbrick", "", "default:obsidianbrick"}
|
||||||
|
}
|
||||||
|
})
|
57
mapgen.lua
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
lavatemple.mapgen_data = {}
|
||||||
|
lavatemple.file = minetest.get_worldpath()..'/lavatemple.mt'
|
||||||
|
|
||||||
|
-- try to load the data from file
|
||||||
|
local f = io.open(lavatemple.file, "r")
|
||||||
|
if f then
|
||||||
|
local contents = f:read()
|
||||||
|
io.close(f)
|
||||||
|
if contents ~= nil then
|
||||||
|
lavatemple.mapgen_data = minetest.deserialize(contents)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
-- generate position of the temple (if not done already)
|
||||||
|
if type (lavatemple.mapgen_data) ~= "table" or
|
||||||
|
lavatemple.mapgen_data.pos == nil or
|
||||||
|
lavatemple.mapgen_data.pos.x == nil or
|
||||||
|
lavatemple.mapgen_data.pos.y == nil or
|
||||||
|
lavatemple.mapgen_data.pos.z == nil then
|
||||||
|
|
||||||
|
-- generate the temple position
|
||||||
|
math.randomseed(os.time())
|
||||||
|
lavatemple.mapgen_data.pos = {
|
||||||
|
x=math.random(-2000,2000),
|
||||||
|
y=math.random(-500,-50),
|
||||||
|
z=math.random(-2000,2000)
|
||||||
|
}
|
||||||
|
|
||||||
|
-- save data
|
||||||
|
local f = io.open(lavatemple.file, "w")
|
||||||
|
f:write(minetest.serialize(lavatemple.mapgen_data))
|
||||||
|
io.close(f)
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_generated(function(minp,maxp,seed)
|
||||||
|
local ltp = lavatemple.mapgen_data.pos
|
||||||
|
if ltp.x > minp.x and ltp.x < maxp.x and
|
||||||
|
ltp.y > minp.y and ltp.y < maxp.y and
|
||||||
|
ltp.z > minp.z and ltp.z < maxp.z then
|
||||||
|
local f = io.open(minetest.get_modpath("lavatemple").."/schems/lavatemple.we", "r")
|
||||||
|
if not f then return end
|
||||||
|
local contents = f:read()
|
||||||
|
io.close(f)
|
||||||
|
if not contents then return end
|
||||||
|
-- Clear the area since worldedit doesn't save "air" nodes
|
||||||
|
pos1, pos2, count = worldedit.allocate(ltp, contents)
|
||||||
|
for x=pos1.x,pos2.x do
|
||||||
|
for y=pos1.y,pos2.y do
|
||||||
|
for z=pos1.z,pos2.z do
|
||||||
|
minetest.remove_node({x=x,y=y,z=z})
|
||||||
|
end end end
|
||||||
|
-- Deserialize the temple
|
||||||
|
--worldedit.deserialize(ltp, contents, minetest|.env)
|
||||||
|
worldedit.deserialize(ltp, contents, minetest)
|
||||||
|
end
|
||||||
|
end)
|
||||||
|
|
49
nodes.lua
Executable file
@ -0,0 +1,49 @@
|
|||||||
|
|
||||||
|
minetest.register_node("lavatemple:brick", {
|
||||||
|
description = "Darkbrick",
|
||||||
|
tiles = {"lavatemple_brick.png"},
|
||||||
|
groups = {dark=1},
|
||||||
|
sounds = default.node_sound_stone_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
stairs.register_stair_and_slab(
|
||||||
|
"lavatemple_brick",
|
||||||
|
"lavatemple:brick",
|
||||||
|
{dark=1},
|
||||||
|
{"lavatemple_brick.png"},
|
||||||
|
"Darkbrick Stair",
|
||||||
|
"Darkbrick Slab",
|
||||||
|
default.node_sound_stone_defaults()
|
||||||
|
)
|
||||||
|
|
||||||
|
minetest.register_node("lavatemple:ladder", {
|
||||||
|
description = "Darkbrick Ladder",
|
||||||
|
drawtype = "nodebox",
|
||||||
|
tiles = {"lavatemple_ladder.png"},
|
||||||
|
inventory_image = "lavatemple_ladder_inv.png",
|
||||||
|
wield_image = "lavatemple_ladder_inv.png",
|
||||||
|
paramtype = "light",
|
||||||
|
sunlight_propagates = true,
|
||||||
|
paramtype2 = "wallmounted",
|
||||||
|
climbable = true,
|
||||||
|
walkable = true,
|
||||||
|
node_box = {
|
||||||
|
type = "wallmounted",
|
||||||
|
wall_top = {-0.375, 0.4375, -0.5, 0.375, 0.5, 0.5},
|
||||||
|
wall_bottom = {-0.375, -0.5, -0.5, 0.375, -0.4375, 0.5},
|
||||||
|
wall_side = {-0.5, -0.5, -0.375, -0.4375, 0.5, 0.375},
|
||||||
|
},
|
||||||
|
selection_box = {type = "wallmounted"},
|
||||||
|
legacy_wallmounted = true,
|
||||||
|
groups = {dark=1, cracky = 1},
|
||||||
|
sounds = default.node_sound_stone_defaults(),
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_node("lavatemple:fence_brick", {
|
||||||
|
description = "Darkbrick fence",
|
||||||
|
drawtype = "fencelike",
|
||||||
|
paramtype = "light",
|
||||||
|
tiles = {"lavatemple_brick.png"},
|
||||||
|
groups = {dark=1},
|
||||||
|
sounds = default.node_sound_stone_defaults(),
|
||||||
|
})
|
1
schems/lavatemple.we
Executable file
BIN
sounds/default_dig_dark.ogg
Executable file
BIN
textures/lavatemple_brick.png
Executable file
After Width: | Height: | Size: 239 B |
BIN
textures/lavatemple_dagger_0.png
Executable file
After Width: | Height: | Size: 365 B |
BIN
textures/lavatemple_dagger_1.png
Executable file
After Width: | Height: | Size: 365 B |
BIN
textures/lavatemple_dagger_2.png
Executable file
After Width: | Height: | Size: 365 B |
BIN
textures/lavatemple_dagger_3.png
Executable file
After Width: | Height: | Size: 365 B |
BIN
textures/lavatemple_dagger_4.png
Executable file
After Width: | Height: | Size: 365 B |
BIN
textures/lavatemple_dagger_5.png
Executable file
After Width: | Height: | Size: 361 B |
BIN
textures/lavatemple_dagger_6.png
Executable file
After Width: | Height: | Size: 156 B |
BIN
textures/lavatemple_ladder.png
Executable file
After Width: | Height: | Size: 429 B |
BIN
textures/lavatemple_ladder_inv.png
Executable file
After Width: | Height: | Size: 372 B |
BIN
textures/lavatemple_teleport_orb.png
Executable file
After Width: | Height: | Size: 524 B |
BIN
textures/lavatemple_tool_darkpick.png
Executable file
After Width: | Height: | Size: 204 B |