From d0ca7ac024201c6caf7f83ecffcd633ad34c1e37 Mon Sep 17 00:00:00 2001 From: poikilos <7557867+poikilos@users.noreply.github.com> Date: Thu, 11 Apr 2019 23:17:14 -0400 Subject: [PATCH] move additional modding info to Modding section of webapp --- webapp/views/pages/getting-started.ejs | 198 +-------------------- webapp/views/pages/modding.ejs | 230 +++++++++++++++++++++++-- 2 files changed, 218 insertions(+), 210 deletions(-) diff --git a/webapp/views/pages/getting-started.ejs b/webapp/views/pages/getting-started.ejs index 9e9dbcf..84747f2 100644 --- a/webapp/views/pages/getting-started.ejs +++ b/webapp/views/pages/getting-started.ejs @@ -221,202 +221,8 @@ games, and your server uses ENLIVEN, consider visiting the Minetest - Feedback Forum issue on the EnlivenMinetest GitHub project. Otherwise, contact a moderator of your server (you can still visit the link to get an idea of what mods are available for Minetest -servers). - -

Modding

-

There are other modding books out there, but they often just rehash -the documentation of Minetest without explaining much. The Modding -section of the ENLIVEN Getting Started guide is here to help explain -some of the assumptions and jargon. -

-

Modding is easy in Minetest, because it is designed to be modded. -The Minetest client downloads the "game" (collection of mods and -modpacks) each time you connect to a server, so you don't have to -install anything yourself. Automatic "game" downloading also means that -each server can be very different, but load quickly, offering you many -experiences to try easily.

-

Anyone can make a "game" using Minetest by -writing mods or combining existing mods. Most "games" are based on -games that are included in the Minetest/games directory--however, some -games that differ drastically in gameplay can be made if one heavily -edits or replaces mods that provide core functionality. Must of -Minetest's core functionality is written in Lua. -

-

Examples are a good way to get started. Since mods are scripted in -Lua, every mod is open source. Almost every one is released under -some sort of public license as well, which usually allows you to modify, -reuse, and redistribute the code (usually under the condition that you -credit the original author). The license file sometimes has no file -extension, so you may have to pick a program to open it in Windows. -You can open it (or any other text file) in Notepad. However, Geany -is recommended since there is more than one undo step. For Lua -programming, you can install ZeroBrane Studio (which is free) then -install -"MinetestIDE" -which patches ZeroBrane Studio to provide code completion -(a form of autocomplete with API usage tips for coding). -

-

Every mod, at minimum, must have a file called init.lua. You -should also add a description.txt describing it, a README.md or other -readme file explaining more, and a LICENSE.md or other license file -MIT License is used for Minetest itself, that is recommended. Some -people consider using GPL v3 to prevent the program from being used -on popular mobile devices, since the GPL v3 specifies that a user must -be able to not only reprogram but also replace the program with their -recompiled version--this may not be possible if your version shares a -namespace and key with the application you are changing, and you may not -have the same connectivity or functionality without using the same key. -Therefore, components or mods using GPL v3 may prevent their inclusion -into future version of Minetest "games", as several versions of -Minetest (often by other names) are on Google Play and the iOS App -Store. -You can find the MIT License online and paste it into Notepad or Geany. -Be sure to fill -in your name and the year you created the mod. Having a license will -make sure others feel safe using your mod and redistributing it if -that's what you want.

-

-API means application programming interface. It is just the set of -classes and/or functions you use to change the behavior of an existing -program such as Minetest. Mods that add significant features, such as -Mobs Redo or codermobs, usually have their own API. You can see all of -the functions in the api.lua file if the author has followed naming -conventions and placed public features there. In addition, many mods -have a api.txt or similarly named files. You can start by opening up -your minetest directory on your computer (after installing or otherwise -installing Minetest) and doing a search for api, or just open the -following files depending on what you want to do: -

- -

-Remember, you can always look at examples as well. You can find a mod -that does something similar to what you want, looking at all of the .lua -files in a mod like that may help. -

-

Changing Existing Mods

-

A public license allows you to change and rerelease the mod, -in addition to just being "open source." Many -mods are on GitHub, GitLab, or notabug.org to allow easy -forking. Forking is when someone other than the project owner -makes improvements or fixes (often forking implies keeping it separate -and not having your changes pulled in to the project owner's version). -If the changes -are applicable to everyone, you would usually fork it by clicking "fork" -which allows you to download your own copy of the mod with "GitHub -Desktop" for GitHub on Windows or a public licensed program like "Git -Cola." Then you would make or paste in your changes, go back to the -program and stage all tracked and untracked changes (not required on -GitHub Desktop), name the commit, click commit, then click push. Then -you can go back to the repository online where you got the mod and click -"pull request" comparing across forks to the "head" from your -repository, allowing the owner to "accept" the request or comment on -changes you need to make or regretfully decline. Usually pull requests -are preceeded by discussion, often at an issue on the issue tracker. -Unless you are fixing something, you likely will have to present -something the project owner already wants or is trivial but helpful. -If the owner declines, -you can always keep your repository and use and distribute your version -of the mod if the license allows that. In some cases, you can instead -just make a mod that overrides an existing mod--that would require -putting the mod in depends.txt, clearing crafting recipes, and other -similar steps--see -github.com/poikilos/homedecor_ua for an example. -

-

Craftitems and Nodes

-A node is drawn as a block, 3d mesh, or other drawtype and -is placeable. A craftitem can't be placed, so the only way to get rid -of it is to drop it, and like other things dropped it will become a -floating sprite waiting to be picked up by clicking. There are also -other types of entities in Minetest such as mobs and particles. -All items that aren't nodes are called craftitems even if they aren't -used in recipes. You can use the name of a node or craftitem when -defining a crafting recipe. However, you must depend on the mod being -used to ensure that it is loaded before your mod, if the item comes -from a different mod. You can depend on another mod by adding its name -to the depends.txt file in your mod. -

Mobs

-Creating passive or hostile Non-Player Characters or Enemy Characters -requires a mob api such as Simple Mobs, Mobs Redo, or codermobs -which share anestry in that order. Codermobs is included in Bucket_Game -and hence new versions of ENLIVEN. Some other mob frameworks include: -mobf, Jordan4Ibanez' OpenAI, and others. -
Codermobs
-Bucket_Game (the basis for ENLIVEN) has codermobs as the modding -framework. It is a general purpose API based on Mobs Redo but with -additional features and fixes. If you want to test your mob or do -performance testing, you can spawn one or more mobs with one command: -
-    "/se" (or "/spawnentity") now supports all of the following modes.
-    This feature will show up in the next snapshot. For now, you can see
-    it working in the online copy of Wonder World.
-
-    /se Ent
-    /se Ent Num
-    /se Ent Pos
-    /se Ent Pos Num
-    /se Ent Num Pos
-
-    For example: /se codermobs:badger 5
-
-    The Num parameter is presently limited to 10. The limit may be increased
-    or decreased at a later date.
-
-    Note: Spaces are permitted, though optional, before or after commas in
-    positions.
-
-        -OldCoder
-
- -

Creating New Ores

-Creating new ores or other blocks may be confusing after you learn the -API. If you want about 48 blocks before you find another cluster of -your ore, then the clust_scarcity should be 48*48*48 since the game is -3D. The chance of finding a cluster is 1 out of the clust_scarcity -number. The cluster size (clust_size) only affects the size of the -"vein" (though technically there are multiple shapes of clusters allowed -and vein is not recommended since it is hundreds of times slower). -Minetest uses the generic term cluster to refer to all patterns of ore -deposits. The number of ores in the cluster is determined by -clust_num_ores. If your clust_size is 3, then that would be a 3*3*3 -cube (but you just specify 3, not 27 there) and the maximum number of -ores you could set for clust_num_ores is 27, though that is not -recommended because then the person would find a 3*3*3 area that is -completely ore (that would give the person 27 ore each time they found -a cluster). Generally, the ore is a node (drawn as a block) and the gem -or metal is a craftitem (drawn as a sprite). You normally should set the -drop of the ore to a separate craftitem (however, if it is something -you have to smelt such as a metal, you could drop the ore node, then -provide a "cooking" crafting recipe to get the metal).

-

the absheight option should only be used for ores that should appear -in mountains. It forces an ore that occurs in a negative range to also -appear in the corresponding positive range. Another confusing parameter -of the register_ore function is y_min. -Most programmers are more concerned with y_max, which is how deep a -player must dig to have a chance of mining the ore. -y_min is the value below which the -ore stops. Sometimes people set this to a very low number that normally -won't be reached, such as -31000. This number may be useful for certain -cases where an ore shouldn't occur below a certain point, such as amber -(all nodes generated in this way are called ores in Minetest even if -they are not technically a metal or mineral ore and even if they -cannot be smelted nor drop a mineral--they still use the -minetest.register_ore function).

+servers). Check out the Modding section as well, and you may be able to +help more than you think!