aboutsummaryrefslogtreecommitdiff
path: root/games/minimal/mods
Commit message (Collapse)AuthorAge
* Add 2D sheet animation for nodessfan52017-01-02
|
* Added "[sheet" to the texture special commands.Luke Puchner-Hardman2017-01-02
| | | | | | | | "[sheet:WxH:X,Y" assumes the base image is a tilesheet with W*H tiles on it and crops to the tile at position X,Y. Basically it works like "[verticalframe" but in 2D. For testing, I combined the four default_chest images into one.
* Minimal game: Use field 'tiles' instead of 'tile_images'Rogier2016-12-24
|
* Mapgen: Various fixes and improvementsparamat2016-01-11
| | | | | | | | | | | | | Lua_api.txt: Document 'minetest.registered_biomes' Minimal: Remove 'mapgen_air' alias Cavegen: Add fallback node for 'mapgen_ice' Dungeongen: Add fallback node for 'mapgen_river_water_source' Mgv5: Remove unnecessary '#include util/directiontables.h' Add missing 'this->'s in makeChunk() Mgv6: Edit empty line formatting Remove leading spaces in makeChunk() Add missing spaces after 'for' and 'if' Mgv7: Edit empty line formatting
* Minimal: Add mapgen alias for airparamat2015-12-30
|
* Fix spelling of noise_thresholdJun Zhang2015-12-06
|
* Fix relief mapping issuesRealBadAngel2015-07-16
|
* Minimal: Remove recently added unnecessary nodesparamat2015-07-14
| | | | Fix 'is ground content' for some nodes
* Simpler patch for saplings trying to grow on unknown nodesShadowNinja2015-06-16
|
* Add list-ringsest312015-06-16
| | | | | | | Adds list-rings, a method to implement item sending between inventories via shift-click. Nice insider feature: a ring consisting of a single inventory list serves as nice clean-up method. Also adds them to minimal game, and the standard inventory. Craft output slots are not supported.
* Don't crash when saplings try to grow on unknown nodesy.st2015-06-15
|
* Minimal: Add snow biome and jungleleaves nodes. Add mapgen aliasesparamat2015-06-12
| | | | Treegen: Remove alias checks from jungletree generation for speed
* Minimal: Edit mapgen aliases. Use blob ore for clay, update other ores. ↵paramat2015-06-09
| | | | Update simple biomes. Cleanup code
* Fix NDT_GLASSLIKE normalsKahrl2015-01-31
| | | | Remove inventorycube() workaround for default:glass in minimal game
* Remove builtin_biome.lua from builtin and add simple biome minimalparamat2015-01-11
|
* Add lua exception handling test codesapier2014-08-23
| | | | Catch some error situations when mod used without thinking about it
* Minimal game: add /dummyball <count> commandKahrl2014-08-23
|
* Add minetest.swap_nodeNovatux2013-11-30
|
* Change default value of is_ground_content to truekwolekr2013-11-30
| | | | Most modders would otherwise forget to explicitly define this, and generated nodes aliased from mods would wall-off caves
* Fix possible crash with grass ABM.Novatux2013-11-02
|
* Fix grass adding/removing ABM.Novatux2013-11-02
|
* Move the sapling growing and grass adding/removing ABMs to LuaNovatux2013-11-02
|
* Remove mapgen_air alias (#935)0gb.us2013-10-05
|
* Add mapgen_stair_cobble alias to minimalSfan52013-09-06
|
* Add support for different drowning damage and allow drowning in other nodetypesBlockMen2013-08-06
|
* Add drowningPilzAdam2013-06-19
|
* Compress texturesDavid Gumberg2013-06-18
|
* Move scriptapi to separate folder (by sapier)sapier2013-05-25
| | | | | | | | | | | On the lua side, notably minetest.env:<function>(<args>) should now be replaced by minetest.<function>(<args>). The old way is and will stay supported for a long time. Also: Update and clean up lua_api.txt (by celeron55) Move EnvRef to lua and remove add_rat and add_firefly (by kahrl) Add separate src/util/CMakeLists.txt, other minor fixes (by kahrl)
* Use the group "soil" for nodes that saplings grow onShadowNinja2013-05-20
|
* Add Mapgen V7, reorganize biomeskwolekr2013-04-07
|
* unkn own block -> unkn own nodekhonkhortisan2013-04-05
|
* Add different place sound for nodesPilzAdam2013-03-29
|
* Use minetest.register_ore() in minimalPilzAdam2013-03-24
|
* Mapgen indev: float islands, larger far biomesproller2013-03-24
|
* Liquid fine tuningproller2013-03-14
|
* new adjustable finite liquidproller2013-02-24
|
* Readded and optimized mapgen V6kwolekr2013-01-21
|
* Add initial Lua biomedef support, fixed biome selectionkwolekr2013-01-21
|
* Add the group attached_nodePilzAdam2012-12-01
| | | | Nodes in this group will be dropped as items if the node under them or the node in the wallmounted direction is not walkable.
* Swap out pixel-perfect nyan cat by request of Chris TorresPerttu Ahola2012-11-09
|
* Add functions to the default mod of minimal game to support old codePilzAdam2012-11-01
|
* Move falling to builtinPilzAdam2012-10-31
|
* Fix crash when furnace is full (minimal game)Perttu Ahola2012-08-12
|
* Deprecate minetest.add_to_creative_inventory and use group ↵Perttu Ahola2012-07-25
| | | | not_in_creative_inventory instead
* Add notice in the minimal gamePerttu Ahola2012-07-25
|
* Improve inventory callbacks a bitPerttu Ahola2012-07-25
|
* Detached inventory callbacks and reworked node metadata callbacksPerttu Ahola2012-07-25
|
* Detached inventoriesPerttu Ahola2012-07-24
|
* Add node timer test in minimal/experimentalPerttu Ahola2012-07-24
|
* Move /give, /giveme, /spawnentity and /pulverize to builtin/chatcommands.luaPerttu Ahola2012-07-23
|
se if not asp.dst or asp.dst == -1 then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_free_"..rot, param2 = node.param2}) elseif asp.dst == 0 then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_slow_"..rot, param2 = node.param2}) else advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:hs_nextslow_"..rot, param2 = node.param2}) end setzs3v(pos, asp.dst, rot) end end end local suppasp = { main = {0, 4, 6, 8, 12, 16, -1}, dst = {0, 4, 6, 8, 12, 16, -1, false}, shunt = nil, proceed_as_main = true, info = { call_on = false, dead_end = false, w_speed = nil, } } --Rangiersignal local setaspectf_ra = function(rot) return function(pos, node, asp) if asp.shunt then advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:ra_shuntd_"..rot, param2 = node.param2}) else advtrains.ndb.swap_node(pos, {name="advtrains_signals_ks:ra_danger_"..rot, param2 = node.param2}) end local meta = minetest.get_meta(pos) if meta then meta:set_string("infotext", minetest.serialize(asp)) end end end local suppasp_ra = { main = { false }, dst = { false }, shunt = nil, proceed_as_main = false, info = { call_on = false, dead_end = false, w_speed = nil, } } advtrains.trackplacer.register_tracktype("advtrains_signals_ks:hs") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:ra") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign_lf") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:sign_lf7") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:zs3") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:zs3v") advtrains.trackplacer.register_tracktype("advtrains_signals_ks:mast") for _, rtab in ipairs({ {rot = "0", sbox = {-1/8, -1/2, -1/2, 1/8, 1/2, -1/4}, ici=true}, {rot = "30", sbox = {-3/8, -1/2, -1/2, -1/8, 1/2, -1/4},}, {rot = "45", sbox = {-1/2, -1/2, -1/2, -1/4, 1/2, -1/4},}, {rot = "60", sbox = {-1/2, -1/2, -3/8, -1/4, 1/2, -1/8},}, }) do local rot = rtab.rot for typ, prts in pairs({ danger = {asp = advtrains.interlocking.DANGER, n = "slow", ici=true}, slow = { asp = function(pos) return { main = getzs3(pos) or -1, proceed_as_main = true, dst = 0 } end, n = "nextslow" }, nextslow = { asp = function(pos) return { main = getzs3(pos) or -1, proceed_as_main = true, dst = getzs3v(pos) or 6 } end, n = "free" }, free = { asp = function(pos) return { main = getzs3(pos) or -1, proceed_as_main = true, dst = -1 } end, n = "shunt" }, shunt = {asp = { main = 0, shunt = true} , n = "danger"}, }) do local tile = "advtrains_signals_ks_ltm_"..typ..".png" local afunc = prts.asp if type(afunc) == "table" then afunc = function() return prts.asp end end if typ == "nextslow" then tile = { name = tile, animation = { type = "vertical_frames", aspect_w = 32, aspect_h = 32, length = 1, } } end minetest.register_node("advtrains_signals_ks:hs_"..typ.."_"..rot, { description = "Ks Main Signal", drawtype = "mesh", mesh = "advtrains_signals_ks_main_smr"..rot..".obj", tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", tile}, paramtype="light", sunlight_propagates=true, light_source = 4, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = {rtab.sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}} }, groups = { cracky = 2, advtrains_signal = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1, }, drop = "advtrains_signals_ks:hs_danger_0", inventory_image = "advtrains_signals_ks_hs_inv.png", advtrains = { set_aspect = setaspectf(rot), supported_aspects = suppasp, get_aspect = afunc, }, on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:hs", typ, "_"..rot) end --Rangiersignale: for typ, prts in pairs({ danger = {asp = { main = false, shunt = false }, n = "shuntd", ici=true}, shuntd = {asp = { main = false, shunt = true } , n = "danger"}, }) do minetest.register_node("advtrains_signals_ks:ra_"..typ.."_"..rot, { description = "Ks Shunting Signal", drawtype = "mesh", mesh = "advtrains_signals_ks_sht_smr"..rot..".obj", tiles = {"advtrains_signals_ks_mast.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_head.png", "advtrains_signals_ks_ltm_"..typ..".png"}, paramtype="light", sunlight_propagates=true, light_source = 4, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = {-1/4, -1/2, -1/4, 1/4, 0, 1/4} }, groups = { cracky = 2, advtrains_signal = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1, }, drop = "advtrains_signals_ks:ra_danger_0", inventory_image = "advtrains_signals_ks_ra_inv.png", advtrains = { set_aspect = setaspectf_ra(rot), supported_aspects = suppasp_ra, get_aspect = function(pos, node) return prts.asp end, }, on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:ra", typ, "_"..rot) end -- Schilder: local function register_sign(prefix, typ, nxt, description, mesh, tile2, dtyp, inv, asp) minetest.register_node("advtrains_signals_ks:"..prefix.."_"..typ.."_"..rot, { description = description, drawtype = "mesh", mesh = "advtrains_signals_ks_"..mesh.."_smr"..rot..".obj", tiles = {"advtrains_signals_ks_signpost.png", tile2}, paramtype="light", sunlight_propagates=true, light_source = 4, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = {rtab.sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}} }, groups = { cracky = 2, advtrains_signal = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, not_in_creative_inventory = (rtab.ici and typ == dtyp) and 0 or 1, }, drop = "advtrains_signals_ks:"..prefix.."_"..dtyp.."_0", inventory_image = inv, advtrains = { get_aspect = function() return asp end }, on_rightclick = advtrains.interlocking.signal_rc_handler, can_dig = advtrains.interlocking.signal_can_dig, after_dig_node = advtrains.interlocking.signal_after_dig, }) -- rotatable by trackworker advtrains.trackplacer.add_worked("advtrains_signals_ks:"..prefix, typ, "_"..rot, nxt) end for typ, prts in pairs { ["hfs"] = {asp = {main = false, shunt = false}, n = "pam", mesh = "_hfs", owntile = true}, ["pam"] = {asp = {main = -1, shunt = false, proceed_as_main = true}, n = "ne4"}, ["ne4"] = {asp = {}, n = "ne3x1", mesh="_ne4", owntile = true}, ["ne3x1"] = {asp = {}, n = "ne3x2", mesh="_ne3", owntile = true}, ["ne3x2"] = {asp = {}, n = "ne3x3", mesh="_ne3", owntile = true}, ["ne3x3"] = {asp = {}, n = "ne3x4", mesh="_ne3", owntile = true}, ["ne3x4"] = {asp = {}, n = "ne3x5", mesh="_ne3", owntile = true}, ["ne3x5"] = {asp = {}, n = "hfs", mesh="_ne3", owntile = true}, } do local mesh = prts.mesh or "" local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)" if prts.owntile then tile2 = "advtrains_signals_ks_sign_"..typ..".png" end register_sign("sign", typ, prts.n, "Signal Sign", "sign"..mesh, tile2, "hfs", "advtrains_signals_ks_sign_lf7.png", prts.asp) end for typ, prts in pairs { -- Speed restrictions: ["4"] = {asp = { main = 4, shunt = true }, n = "6"}, ["6"] = {asp = { main = 6, shunt = true }, n = "8"}, ["8"] = {asp = { main = 8, shunt = true }, n = "12"}, ["12"] = {asp = { main = 12, shunt = true }, n = "16"}, ["16"] = {asp = { main = 16, shunt = true }, n = "e"}, -- Speed restriction lifted ["e"] = {asp = { main = -1, shunt = true }, n = "4", mesh = "_zs10"}, } do local mesh = tonumber(typ) and "_zs3" or prts.mesh or "" local tile2 = "[combine:40x40:0,0=\\(advtrains_signals_ks_sign_off.png\\^[resize\\:40x40\\):3,-2=advtrains_signals_ks_sign_"..typ..".png^[invert:rgb" if typ == "e" then tile2 = "advtrains_signals_ks_sign_zs10.png" end register_sign("sign", typ, prts.n, "Permanent local speed restriction sign", "sign"..mesh, tile2, "8", "advtrains_signals_ks_sign_8.png^[invert:rgb", prts.asp) end for typ, prts in pairs { ["4"] = {main = 4, n = "6"}, ["6"] = {main = 6, n = "8"}, ["8"] = {main = 8, n = "12"}, ["12"] = {main = 12, n = "16"}, ["16"] = {main = 16, n = "e"}, ["e"] = {main = -1, n = "4"}, } do local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)"..(typ == "e" and "" or "^[multiply:orange") local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)^[multiply:orange" register_sign("sign_lf", typ, prts.n, "Temporary local speed restriction sign", "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "temp"}) end for typ, prts in pairs { ["4"] = {main = 4, n = "6"}, ["6"] = {main = 6, n = "8"}, ["8"] = {main = 8, n = "12"}, ["12"] = {main = 12, n = "16"}, ["16"] = {main = 16, n = "20"}, ["20"] = {main = 20, n = "4"}, } do local tile2 = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_"..typ..".png^[makealpha:255,255,255)" local inv = "advtrains_signals_ks_sign_lf7.png^(advtrains_signals_ks_sign_8.png^[makealpha:255,255,255)" register_sign("sign_lf7", typ, prts.n, "Line speed restriction sign", "sign", tile2, "8", inv, {main = prts.main, shunt = true, type = "line"}) end -- Geschwindigkeits(vor)anzeiger für Ks-Signale for typ, prts in pairs({ ["off"] = {n = "4", ici = true}, ["4"] = {n = "6"}, ["6"] = {n = "8"}, ["8"] = {n = "12"}, ["12"] = {n = "16"}, ["16"] = {n = "off"}, }) do local def = { drawtype = "mesh", tiles = {"advtrains_signals_ks_mast.png","advtrains_signals_ks_head.png","advtrains_signals_ks_sign_"..typ..".png^[invert:rgb^[noalpha"}, paramtype = "light", sunlight_propagates = true, light_source = 4, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = {rtab.sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}} }, groups = { cracky = 2, not_blocking_trains = 1, save_in_at_nodedb = 1, not_in_creative_inventory = (rtab.ici and prts.ici) and 0 or 1, }, after_dig_node = function(pos) advtrains.ndb.update(pos) end } -- Zs 3 local t = table.copy(def) t.description = "Ks speed limit indicator" t.mesh = "advtrains_signals_ks_zs_top_smr"..rot..".obj" t.drop = "advtrains_signals_ks:zs3_off_0" t.selection_box.fixed[1][5] = 0 minetest.register_node("advtrains_signals_ks:zs3_"..typ.."_"..rot, t) advtrains.trackplacer.add_worked("advtrains_signals_ks:zs3", typ, "_"..rot) -- Zs 3v local t = table.copy(def) t.description = "Ks distant speed limit indicator" t.mesh = "advtrains_signals_ks_zs_bottom_smr"..rot..".obj" t.drop = "advtrains_signals_ks:zs3v_off_0" t.tiles[3] = t.tiles[3] .. "^[multiply:yellow" minetest.register_node("advtrains_signals_ks:zs3v_"..typ.."_"..rot, t) advtrains.trackplacer.add_worked("advtrains_signals_ks:zs3v", typ, "_"..rot) end minetest.register_node("advtrains_signals_ks:mast_mast_"..rot, { description = "Ks Mast", drawtype = "mesh", mesh = "advtrains_signals_ks_mast_smr"..rot..".obj", tiles = {"advtrains_signals_ks_mast.png"}, paramtype="light", sunlight_propagates=true, --light_source = 4, paramtype2 = "facedir", selection_box = { type = "fixed", fixed = {rtab.sbox, {-1/4, -1/2, -1/4, 1/4, -7/16, 1/4}} }, groups = { cracky = 2, not_blocking_trains = 1, not_in_creative_inventory = (rtab.ici) and 0 or 1, }, drop = "advtrains_signals_ks:mast_mast_0", }) advtrains.trackplacer.add_worked("advtrains_signals_ks:mast","mast", "_"..rot) end -- Crafting minetest.register_craft({ output = "advtrains_signals_ks:hs_danger_0 2", recipe = { {'default:steel_ingot', 'dye:red', 'default:steel_ingot'}, {'dye:yellow', 'default:steel_ingot', 'dye:dark_green'}, {'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'}, }, }) minetest.register_craft({ output = "advtrains_signals_ks:mast_mast_0 10", recipe = { {'default:steel_ingot'}, {'dye:cyan'}, {'default:steel_ingot'}, }, }) minetest.register_craft({ output = "advtrains_signals_ks:ra_danger_0 2", recipe = { {'dye:red', 'dye:white', 'dye:red'}, {'dye:white', 'default:steel_ingot', 'default:steel_ingot'}, {'default:steel_ingot', 'advtrains_signals_ks:mast_mast_0', 'default:steel_ingot'}, }, }) local sign_material = "default:sign_wall_steel" --fallback if minetest.get_modpath("basic_materials") then sign_material = "basic_materials:plastic_sheet" end --print("Sign Material: "..sign_material) minetest.register_craft({ output = "advtrains_signals_ks:sign_8_0 2", recipe = { {sign_material, 'dye:black'}, {'default:stick', ''}, {'default:stick', ''}, }, }) sign_material = nil minetest.register_craft{ output = "advtrains_signals_ks:sign_8_0 1", recipe = {{"advtrains_signals_ks:sign_lf7_8_0"}} } minetest.register_craft{ output = "advtrains_signals_ks:sign_hfs_0 1", recipe = {{"advtrains_signals_ks:sign_8_0"}} } minetest.register_craft{ output = "advtrains_signals_ks:sign_lf_8_0 1", recipe = {{"advtrains_signals_ks:sign_hfs_0"}} } minetest.register_craft{ output = "advtrains_signals_ks:sign_lf7_8_0 1", recipe = {{"advtrains_signals_ks:sign_lf_8_0"}} }