diff --git a/README.md b/README.md new file mode 100644 index 0000000..86f360a --- /dev/null +++ b/README.md @@ -0,0 +1,8 @@ +# Solebul's Minetest game + +This game is based on Cobalt + +# Installation + + cd ~/.minetest/games + diff --git a/game.conf b/game.conf new file mode 100644 index 0000000..9558529 --- /dev/null +++ b/game.conf @@ -0,0 +1 @@ +name = Solebull diff --git a/game_api.txt b/game_api.txt new file mode 100644 index 0000000..791a7f9 --- /dev/null +++ b/game_api.txt @@ -0,0 +1,384 @@ +minetest_game API +====================== +GitHub Repo: https://github.com/minetest/minetest_game + +Introduction +------------ +The minetest_game gamemode offers multiple new possibilities in addition to Minetest's built-in API, allowing you to +add new plants to farming mod, buckets for new liquids, new stairs and custom panes. +For information on the Minetest API, visit https://github.com/minetest/minetest/blob/master/doc/lua_api.txt +Please note: + [XYZ] refers to a section the Minetest API + [#ABC] refers to a section in this document + ^ Explanation for line above + +Bucket API +---------- +The bucket API allows registering new types of buckets for non-default liquids. + + bucket.register_liquid( + "default:lava_source", -- Source node name + "default:lava_flowing", -- Flowing node name + "bucket:bucket_lava", -- Name to be used for bucket + "bucket_lava.png", -- Bucket texture (for wielditem and inventory_image) + "Lava Bucket" -- Bucket description + ) + +Beds API +-------- + beds.register_bed( + "beds:bed", -- Bed name + def: See [#Bed definition] -- Bed definition + ) + + beds.read_spawns() -- returns a table containing players respawn positions + beds.kick_players() -- forces all players to leave bed + beds.skip_night() -- sets world time to morning and saves respawn position of all players currently sleeping + +#Bed definition +--------------- +{ + description = "Simple Bed", + inventory_image = "beds_bed.png", + wield_image = "beds_bed.png", + tiles = { + bottom = {[Tile definition], + ^ the tiles of the bottom part of the bed + }, + top = {[Tile definition], + ^ the tiles of the bottom part of the bed + } + }, + nodebox = { + bottom = regular nodebox, see [Node boxes], -- bottm part of bed + top = regular nodebox, see [Node boxes], -- top part of bed + }, + selectionbox = regular nodebox, see [Node boxes], -- for both nodeboxes + recipe = { -- Craft recipe + {"group:wool", "group:wool", "group:wool"}, + {"group:wood", "group:wood", "group:wood"} + } +} + +Doors API +--------- +The doors mod allows modders to register custom doors and trapdoors. + +doors.register_door(name, def) +^ name: "Door name" +^ def: See [#Door definition] + -> Registers new door + +doors.register_trapdoor(name, def) +^ name: "Trapdoor name" +^ def: See [#Trapdoor definition] + -> Registers new trapdoor + +#Door definition +---------------- +{ + description = "Door description", + inventory_image = "mod_door_inv.png", + groups = {group = 1}, + tiles_bottom: [Tile definition], + ^ the tiles of the bottom part of the door {front, side} + tiles_top: [Tile definition], + ^ the tiles of the bottom part of the door {front, side} + node_box_bottom = regular nodebox, see [Node boxes], OPTIONAL, + node_box_top = regular nodebox, see [Node boxes], OPTIONAL, + selection_box_bottom = regular nodebox, see [Node boxes], OPTIONAL, + selection_box_top = regular nodebox, see [Node boxes], OPTIONAL, + sound_open_door = sound play for open door, OPTIONAL, + sound_close_door = sound play for close door, OPTIONAL, + only_placer_can_open = true/false, + ^ If true, only placer can open the door (locked for others) +} + +#Trapdoor definition +---------------- +{ + tile_front = "doors_trapdoor.png", + ^ the texture for the front and back of the trapdoor + tile_side: "doors_trapdoor_side.png", + ^ the tiles of the four side parts of the trapdoor + sound_open = sound to play when opening the trapdoor, OPTIONAL, + sound_close = sound to play when closing the trapdoor, OPTIONAL, + -> You can add any other node definition properties for minetest.register_node, + such as wield_image, inventory_image, sounds, groups, description, ... + Only node_box, selection_box, tiles, drop, drawtype, paramtype, paramtype2, on_rightclick + will be overwritten by the trapdoor registration function +} + +Farming API +----------- +The farming API allows you to easily register plants and hoes. + +farming.register_hoe(name, hoe definition) + -> Register a new hoe, see [#hoe definition] + +farming.register_plant(name, Plant definition) + -> Register a new growing plant, see [#Plant definition] + +#Hoe Definition +--------------- +{ + description = "", -- Description for tooltip + inventory_image = "unknown_item.png", -- Image to be used as wield- and inventory image + max_uses = 30, -- Uses until destroyed + material = "", -- Material for recipes + recipe = { -- Craft recipe, if material isn't used + {"air", "air", "air"}, + {"", "group:stick"}, + {"", "group:stick"}, + } +} + +#Plant definition +----------------- +{ + description = "", -- Description of seed item + inventory_image = "unknown_item.png", -- Image to be used as seed's wield- and inventory image + steps = 8, -- How many steps the plant has to grow, until it can be harvested + ^ Always provide a plant texture for each step, format: modname_plantname_i.png (i = stepnumber) + minlight = 13, -- Minimum light to grow + maxlight = default.LIGHT_MAX -- Maximum light to grow +} + +Screwdriver API +--------------- +The screwdriver API allows you to control a node's behaviour when a screwdriver is used on it. +To use it, add the on_screwdriver function to the node definition. +on_rotate(pos, node, user, mode, new_param2) +^ pos: position of the node that the screwdriver is being used on +^ node: that node +^ user: the player who used the screwdriver +^ mode: screwdriver.ROTATE_FACE or screwdriver.ROTATE_AXIS +^ new_param2: the new value of param2 that would have been set if on_rotate wasn't there +^ return value: false to disallow rotation, nil to keep default behaviour, true to allow + it but to indicate that changed have already been made (so the screwdriver will wear out) +^ use on_rotate = screwdriver.disallow to always disallow rotation +^ use on_rotate = screwdriver.rotate_simple to allow only face rotation + +Stairs API +---------- +The stairs API lets you register stairs and slabs and ensures that they are registered the same way as those +delivered with minetest_game, to keep them compatible with other mods. + +stairs.register_stair(subname, recipeitem, groups, images, description, sounds) + -> Registers a stair. + -> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname" + -> recipeitem: Item used in the craft recipe, e.g. "default:cobble" + -> groups: see [Known damage and digging time defining groups] + -> images: see [Tile definition] + -> description: used for the description field in the stair's definition + -> sounds: see [#Default sounds] + +stairs.register_slab(subname, recipeitem, groups, images, description, sounds) + -> Registers a slabs + -> subname: Basically the material name (e.g. cobble) used for the stair name. Nodename pattern: "stairs:stair_subname" + -> recipeitem: Item used in the craft recipe, e.g. "default:cobble" + -> groups: see [Known damage and digging time defining groups] + -> images: see [Tile definition] + -> description: used for the description field in the stair's definition + -> sounds: see [#Default sounds] + +stairs.register_stair_and_slab(subname, recipeitem, groups, images, desc_stair, desc_slab, sounds) + -> A wrapper for stairs.register_stair and stairs.register_slab + -> Uses almost the same arguments as stairs.register_stair + -> desc_stair: Description for stair node + -> desc_slab: Description for slab node + +Xpanes API +---------- +Creates panes that automatically connect to each other + +xpanes.register_pane(subname, def) + -> subname: used for nodename. Result: "xpanes:subname" and "xpanes:subname_{2..15}" + -> def: See [#Pane definition] + +#Pane definition +---------------- +{ + textures = {"texture_Bottom_top", "texture_left_right", "texture_front_back"}, + ^ More tiles aren't supported + groups = {group = rating}, + ^ Uses the known node groups, see [Known damage and digging time defining groups] + sounds = SoundSpec, + ^ See [#Default sounds] + recipe = {{"","","","","","","","",""}}, + ^ Recipe field only +} + +Raillike definitions +-------------------- +The following nodes use the group `connect_to_raillike` and will only connect to +raillike nodes within this group and the same group value. +Use `minetest.raillike_group()` to get the group value. + +| Node type | Raillike group name ++-----------------------+---------------------------------- +| default:rail | "rail" +| tnt:gunpowder | "gunpowder" +| tnt:gunpowder_burning | "gunpowder" + +Example: +If you want to add a new rail type and want it to connect with default:rail, +add `connect_to_raillike=minetest.raillike_group("rail")` into the `groups` table +of your node. + + +Default sounds +-------------- +Sounds inside the default table can be used within the sounds field of node definitions. + +default.node_sound_defaults() +default.node_sound_stone_defaults() +default.node_sound_dirt_defaults() +default.node_sound_sand_defaults() +default.node_sound_wood_defaults() +default.node_sound_leaves_defaults() +default.node_sound_glass_defaults() + +Default constants +----------------- +default.LIGHT_MAX +^ The maximum light level (see [Node definition] light_source) + +Player API +---------- +The player API can register player models and update the player's appearence + +default.player_register_model(name, def) +^ Register a new model to be used by players. + -> name: model filename such as "character.x", "foo.b3d", etc. + -> def: See [#Model definition] + +default.registered_player_models[name] +^ Get a model's definition + -> see [#Model definition] + +default.player_set_model(player, model_name) +^ Change a player's model + -> player: PlayerRef + -> model_name: model registered with player_register_model() + +default.player_set_animation(player, anim_name [, speed]) +^ Applies an animation to a player + -> anim_name: name of the animation. + -> speed: frames per second. If nil, default from the model is used + +default.player_set_textures(player, textures) +^ Sets player textures + -> player: PlayerRef + -> textures: array of textures + ^ If is nil, the default textures from the model def are used + +default.player_get_animation(player) +^ Returns a table containing fields "model", "textures" and "animation". +^ Any of the fields of the returned table may be nil. + -> player: PlayerRef + +Model Definition +---------------- +{ + animation_speed = 30, -- Default animation speed, in FPS. + textures = {"character.png", }, -- Default array of textures. + visual_size = {x=1, y=1,}, -- Used to scale the model. + animations = { + -- = { x=, y=, }, + foo = { x= 0, y=19, }, + bar = { x=20, y=39, }, + -- ... + }, +} + +Leafdecay +--------- +To enable leaf decay for a node, add it to the "leafdecay" group. + +The rating of the group determines how far from a node in the group "tree" +the node can be without decaying. + +If param2 of the node is ~= 0, the node will always be preserved. Thus, if +the player places a node of that kind, you will want to set param2=1 or so. + +The function default.after_place_leaves can be set as after_place_node of a node +to set param2 to 1 if the player places the node (should not be used for nodes +that use param2 otherwise (e.g. facedir)). + +If the node is in the leafdecay_drop group then it will always be dropped as an +item. + +Dyes +---- +To make recipes that will work with any dye ever made by anybody, define +them based on groups. You can select any group of groups, based on your need for +amount of colors. + +#Color groups +------------- +Base color groups: +- basecolor_white +- basecolor_grey +- basecolor_black +- basecolor_red +- basecolor_yellow +- basecolor_green +- basecolor_cyan +- basecolor_blue +- basecolor_magenta + +Extended color groups (* = equal to a base color): +* excolor_white +- excolor_lightgrey +* excolor_grey +- excolor_darkgrey +* excolor_black +* excolor_red +- excolor_orange +* excolor_yellow +- excolor_lime +* excolor_green +- excolor_aqua +* excolor_cyan +- excolor_sky_blue +* excolor_blue +- excolor_violet +* excolor_magenta +- excolor_red_violet + +The whole unifieddyes palette as groups: +- unicolor_ +For the following, no white/grey/black is allowed: +- unicolor_medium_ +- unicolor_dark_ +- unicolor_light_ +- unicolor__s50 +- unicolor_medium__s50 +- unicolor_dark__s50 + +Example of one shapeless recipe using a color group: +minetest.register_craft({ + type = "shapeless", + output = ':item_yellow', + recipe = {':item_no_color', 'group:basecolor_yellow'}, +}) + +#Color lists +------------ +dye.basecolors +^ Array containing the names of available base colors + +dye.excolors +^ Array containing the names of the available extended colors + +Trees +----- +default.grow_tree(pos, is_apple_tree) +^ Grows a tree or apple tree at pos + +default.grow_jungle_tree(pos) +^ Grows a jungletree at pos + +default.grow_pine_tree(pos) +^ Grows a pinetree at pos diff --git a/minetest.conf b/minetest.conf new file mode 100644 index 0000000..a9889da --- /dev/null +++ b/minetest.conf @@ -0,0 +1,83 @@ +# 1 day-night cycle lasts 24 minutes instead of 20. +time_speed = 60 + +# Decreased acceleration compared to minetest_game. +movement_acceleration_default = 2.4 +movement_acceleration_air = 1.2 + +# Very fast acceleration in fast mode for more control. +movement_acceleration_fast = 24 + +# Walking is 20 % faster than in minetest_game. Makes playing without the "fast" +# privilege less boring. +movement_speed_walk = 4.8 + +# 40% the speed of walking. +movement_speed_crouch = 1.92 + +# 5 times faster than walking. +movement_speed_fast = 24 + +# Makes climbing speed faster. Also makes ladders more +# useful. +movement_speed_climb = 4 + +# Faster movement in liquids. Jumping at the water surface also speeds up swimming. +movement_liquid_fluidity = 1.6 + +# Slightly less gravity. +movement_gravity = 9.5 + +# Jump height slightly reduced. +movement_speed_jump = 6.35 + +# Give 1 wooden pickaxe, 10 torches, 10 saplings to new players. Edit +# `mods/give_initial_stuff/init.lua` to change. +give_initial_stuff = true + +# Give "home" and "spawn" privileges to new players. +default_privs = interact, shout, home, spawn + +# Higher player limit by default. +max_users = 20 + +# Server settings for improved performance: +max_block_generate_distance = 8 +max_block_send_distance = 8 +max_simultaneous_block_sends_per_client = 10000 +max_simultaneous_block_sends_server_total = 10000 +active_block_range = 1 +server_map_save_interval = 15.3 + +# Use mgv7 if not specified by user: +mg_name = v7 +# Enable dungeons on new worlds. +mg_flags = trees, caves, dungeons +# Enable jungles on new worlds, disable biome blend and mud flow (faster, looks +# better). +mgv6_spflags = jungles, nobiomeblend, nomudflow, snowbiomes +# More beaches. +mgv6_freq_beach = -0.15 + +# Map generation attributes specific to Mapgen V7. +# Currently supported: mountains, ridges. +mgv7_spflags = mountains, ridges +# Noise parameters for biome API temperature, humidity and biome blend: +mg_biome_np_heat = 50, 50, (1000, 1000, 1000), 5349, 3, 0.5, 2.0 +mg_biome_np_heat_blend = 0, 1.5, (8, 8, 8), 13, 2, 1.0, 2.0 +mg_biome_np_humidity = 50, 50, (1000, 1000, 1000), 842, 3, 0.5, 2.0 +mg_biome_np_humidity_blend = 0, 1.5, (8, 8, 8), 90003, 2, 1.0, 2.0 + +mgv7_np_terrain_base = 4, 70, (600, 600, 600), 82341, 5, 0.6, 2.0 +mgv7_np_terrain_alt = 4, 25, (600, 600, 600), 5934, 5, 0.6, 2.0 +mgv7_np_terrain_persist = 0.6, 0.1, (2000, 2000, 2000), 539, 3, 0.6, 2.0 +mgv7_np_height_select = -12, 24, (500, 500, 500), 4213, 6, 0.7, 2.0 +mgv7_np_filler_depth = 0, 1.2, (150, 150, 150), 261, 3, 0.7, 2.0 +mgv7_np_mount_height = 256, 112, (1000, 1000, 1000), 72449, 3, 0.6, 2.0 +mgv7_np_ridge_uwater = 0, 1, (1000, 1000, 1000), 85039, 5, 0.6, 2.0 +mgv7_np_mountain = -0.6, 1, (250, 350, 250), 5333, 5, 0.63, 2.0 +mgv7_np_ridge = 0, 1, (100, 100, 100), 6467, 4, 0.75, 2.0 +mgv7_np_cave1 = 0, 12, (100, 100, 100), 52534, 4, 0.5, 2.0 +mgv7_np_cave2 = 0, 12, (100, 100, 100), 10325, 4, 0.5, 2.0 + +mob_show_health = false diff --git a/minetest.conf.example b/minetest.conf.example new file mode 100644 index 0000000..47d03b0 --- /dev/null +++ b/minetest.conf.example @@ -0,0 +1,28 @@ +# This file contains settings of minetest_game that can be changed in +# minetest.conf +# +# By default, all the settings are commented and not functional. +# Uncomment settings by removing the preceding #. + +# Whether creative mode (fast digging of all blocks, unlimited resources) should be enabled +#creative_mode = false + +# The time in seconds after which the bones of a dead player can be looted by everyone +# 0 to disable +#share_bones_time = 1200 + +# Whether fire should be disabled (all fire nodes will instantly disappear) +#disable_fire = false + +# Whether steel tools, torches and cobblestone should be given to new players +#give_initial_stuff = false + +# Whether the TNT mod should be enabled +#enable_tnt = + +# The radius of a TNT explosion +#tnt_radius = 3 + +# Enable the stairs mod ABM that replaces the old 'upside down' +# stair and slab nodes in old maps with the new param2 versions. +#enable_stairs_replace_abm = false