diff --git a/advtrains/ignore_collisions.lua b/advtrains/ignore_collisions.lua new file mode 100644 index 0000000000000000000000000000000000000000..21197cf89a45daa124171f77e32b54bcdfcb1359 --- /dev/null +++ b/advtrains/ignore_collisions.lua @@ -0,0 +1,57 @@ +-- add blocks to be ignored by trains + +local additional_nonblocknodes={ + "digiterms:lcd_monitor", + "digiterms:beige_keyboard", + "digiterms:white_keyboard", + "digiterms:black_keyboard", + "digilines:lcd", + "homedecor:glowlight_quarter_14", + "mesecons_pressureplates:pressure_plate_wood", + "mesecons_pressureplates:pressure_plate_stone", +} +minetest.after(0, function() + local mods = {"moreblocks", "bakedclay", "building_blocks", "my_door_wood", "my_sliding_doors"} + local variants = { + micro_ = nil, + slope = nil, + slab_ = {"_1", "_2", "_quarter", "_two_sides", "_three_sides"}, + stair_ = {"_alt", "_alt_1", "_alt_2", "_alt_4", "_outer"}, + panel_ = {"_1", "_2", "_4"}, + } + local to_add = {} + for i, mod in ipairs(mods) do + for variant, data in pairs(variants) do + if to_add[mod] == nil then + to_add[mod] = {} + end + to_add[mod][variant] = data + end + end + for name, def in pairs(minetest.registered_nodes) do + for mod, variants in pairs(to_add) do + if string.sub(name, 1, #mod+1) == mod .. ":" then + for variant, endings in pairs(variants) do + local prefix = mod .. ":" .. variant + if string.sub(name, 1, #prefix) == prefix then + if endings then + for _, ending in ipairs(endings) do + if string.sub(name, #name - #ending + 1, #name) == ending then + table.insert(additional_nonblocknodes, name) + end + end + else + table.insert(additional_nonblocknodes, name) + end + end + end + end + end + end + + for _,name in ipairs(additional_nonblocknodes) do + if minetest.registered_nodes[name] then + minetest.registered_nodes[name].groups.not_blocking_trains=1 + end + end +end) diff --git a/chat/spawn.lua b/chat/spawn.lua new file mode 100644 index 0000000000000000000000000000000000000000..45a3b7bfac6521872c4a387ed257fa280493f67b --- /dev/null +++ b/chat/spawn.lua @@ -0,0 +1,22 @@ +-- stolen from pandorabox.io https://github.com/pandorabox-io/pandorabox_custom + +local spawn_command = {} +spawn_command.pos = {x=-130, y=13, z=-62} + +if minetest.setting_get_pos("static_spawnpoint") then + spawn_command.pos = minetest.setting_get_pos("static_spawnpoint") +end + +local function teleport_to_spawn(name) + local player = minetest.get_player_by_name(name) + if player == nil then + return false + end + player:setpos(spawn_command.pos) + minetest.chat_send_player(name, "Teleported to spawn!") +end + +minetest.register_chatcommand("spawn", { + description = "Teleports you to the spawn point.", + func = teleport_to_spawn, +}) diff --git a/default_password_warn.lua b/default_password_warn.lua new file mode 100644 index 0000000000000000000000000000000000000000..c2776c3fcd3173316202fdf3f2f40f30225f8024 --- /dev/null +++ b/default_password_warn.lua @@ -0,0 +1,18 @@ +-- stolen from pandorabox.io https://github.com/pandorabox-io/pandorabox_custom + +local default_pw = minetest.settings:get("default_password") + +minetest.register_on_joinplayer(function(player) + local playername = player:get_player_name() + local handler = minetest.get_auth_handler() + local entry = handler.get_auth(playername) + if entry and minetest.check_password_entry(playername, entry.password, default_pw) then + -- player has still the default password + minetest.chat_send_player( + playername, + minetest.colorize("#ff0000", "WARNING: You are using the default password! " .. + "Please change it for your own safety!" .. + "(press the escape-button and click on 'change password')") + ) + end +end) diff --git a/init.lua b/init.lua index e6fec1776cebbd6e9d365c18eccf19fbbac05e2a..d99dfdc47b05176b8942115b5e57528801aed11a 100644 --- a/init.lua +++ b/init.lua @@ -1,92 +1,18 @@ -minetest.register_craft({ - output = "digilines:lightsensor", - recipe = { - {"basic_materials:plastic_sheet", "xpanes:pane_flat", "basic_materials:plastic_sheet"}, - {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"} - } -}) -minetest.register_craft({ - output = "digilines:rtc", - recipe = { - {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, - {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"} - } -}) -minetest.register_craft({ - output = "computer:tetris_arcade", - recipe = { - {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, - {"dye:black", "default:glass", "dye:black"}, - {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"} - } -}) -minetest.register_craft({ - output = "computer:3dprinter_bedflinger", - recipe = { - {"basic_materials:plastic_sheet", "basic_materials:empty_spool", "default:mese_crystal_fragment"}, - {"basic_materials:plastic_sheet", "", "basic_materials:plastic_sheet"}, - {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} - } -}) +kif = {} +local MP = minetest.get_modpath("kif_custom") --- add blocks to be ignored by trains +-- some items don't have recipes. fill them in +dofile(MP.."/missing_recipes.lua") +-- make trains ignore microblocks and some others +dofile(MP.."/advtrains/ignore_collisions.lua") -local additional_nonblocknodes={ - "digiterms:lcd_monitor", - "digiterms:beige_keyboard", - "digiterms:white_keyboard", - "digiterms:black_keyboard", - "digilines:lcd", - "homedecor:glowlight_quarter_14", - "mesecons_pressureplates:pressure_plate_wood", - "mesecons_pressureplates:pressure_plate_stone", -} -minetest.after(0, function() - local mods = {"moreblocks", "bakedclay", "building_blocks", "my_door_wood", "my_sliding_doors"} - local variants = { - micro_ = nil, - slope = nil, - slab_ = {"_1", "_2", "_quarter", "_two_sides", "_three_sides"}, - stair_ = {"_alt", "_alt_1", "_alt_2", "_alt_4", "_outer"}, - panel_ = {"_1", "_2", "_4"}, - } - local to_add = {} - for i, mod in ipairs(mods) do - for variant, data in pairs(variants) do - if to_add[mod] == nil then - to_add[mod] = {} - end - to_add[mod][variant] = data - end - end - for name, def in pairs(minetest.registered_nodes) do - for mod, variants in pairs(to_add) do - if string.sub(name, 1, #mod+1) == mod .. ":" then - for variant, endings in pairs(variants) do - local prefix = mod .. ":" .. variant - if string.sub(name, 1, #prefix) == prefix then - if endings then - for _, ending in ipairs(endings) do - if string.sub(name, #name - #ending + 1, #name) == ending then - table.insert(additional_nonblocknodes, name) - end - end - else - table.insert(additional_nonblocknodes, name) - end - end - end - end - end - end - - for _,name in ipairs(additional_nonblocknodes) do - if minetest.registered_nodes[name] then - minetest.registered_nodes[name].groups.not_blocking_trains=1 - end - end -end) +-- warning message for default password (if set) +if minetest.settings:get("default_password") then + dofile(MP.."/default_password_warn.lua") +end +-- /spawn command +dofile(MP.."/chat/spawn.lua") diff --git a/missing_recipes.lua b/missing_recipes.lua new file mode 100644 index 0000000000000000000000000000000000000000..83564f3ee6342aad6b372cf2e978d2aae7f1eeba --- /dev/null +++ b/missing_recipes.lua @@ -0,0 +1,31 @@ +minetest.register_craft({ + output = "digilines:lightsensor", + recipe = { + {"basic_materials:plastic_sheet", "xpanes:pane_flat", "basic_materials:plastic_sheet"}, + {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"} + } +}) +minetest.register_craft({ + output = "digilines:rtc", + recipe = { + {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, + {"default:steel_ingot", "mesecons_luacontroller:luacontroller0000", "digilines:wire_std_00000000"} + } +}) + +minetest.register_craft({ + output = "computer:tetris_arcade", + recipe = { + {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"}, + {"dye:black", "default:glass", "dye:black"}, + {"basic_materials:plastic_sheet", "basic_materials:energy_crystal_simple", "basic_materials:plastic_sheet"} + } +}) +minetest.register_craft({ + output = "computer:3dprinter_bedflinger", + recipe = { + {"basic_materials:plastic_sheet", "basic_materials:empty_spool", "default:mese_crystal_fragment"}, + {"basic_materials:plastic_sheet", "", "basic_materials:plastic_sheet"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} + } +})