{"description":"Welcome to the best place to find Luanti mods, games, and texture packs","expired":false,"feed_url":"https://content.luanti.org/feeds/packages.json","home_page_url":"https://content.luanti.org/","icon":"https://content.luanti.org/favicon-128.png","items":[{"author":{"avatar":"https://secure.gravatar.com/avatar/a1c0cd6139ec8554389604f86c8aba11?s=64&d=retro&r=g","name":"Jenny1611","url":"https://content.luanti.org/users/Jenny1611/"},"content_html":"<h1 id=\"base_craft\">base_craft <a class=\"header-anchor\" href=\"#base_craft\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>BaseCraft adds essential, high-quality building blocks like concrete slabs and stairs to complete your constructions with consistency and style.</p>\n<h2 id=\"what-this-mod-includes\">What this mod includes <a class=\"header-anchor\" href=\"#what-this-mod-includes\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>The following blocks are included (alphabetical order):</p>\n<h3 id=\"slabs-and-stairs\">Slabs and stairs <a class=\"header-anchor\" href=\"#slabs-and-stairs\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Black</li>\n<li>Blue</li>\n<li>Brown</li>\n<li>Darkgrey</li>\n<li>Green</li>\n<li>Grey</li>\n<li>Lightblue</li>\n<li>Lightgreen</li>\n<li>Magenta</li>\n<li>Orange</li>\n<li>Pink</li>\n<li>Red</li>\n<li>Turquoise</li>\n<li>Violet</li>\n<li>White</li>\n<li>Yellow</li>\n</ul>\n<p><em>See the screenshots for more information</em></p>\n<h2 id=\"credits\">Credits <a class=\"header-anchor\" href=\"#credits\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This mod uses concrete assets from <strong>colored_concrete</strong> by Niklp09, which is licensed under the GNU General Public License v2.0.</p>\n<p>Repository: <a href=\"https://github.com/Niklp09/colored_concrete\" rel=\"nofollow\">https://github.com/Niklp09/colored_concrete</a></p>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This mod is licensed under the <strong>GNU General Public License v2.0</strong> \u2014 see the LICENSE file for details.</p>\n<h3 id=\"license-compatibility\">License Compatibility <a class=\"header-anchor\" href=\"#license-compatibility\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>This mod incorporates assets from GPL-2.0 licensed work so all components remain under copyleft protection.</p>\n<p><strong>In summary:</strong> All code and assets in this mod are free and open-source. You are free to use, modify, and distribute this mod under the terms of the GNU General Public License v2.0.</p>\n<h2 id=\"copyright\">Copyright <a class=\"header-anchor\" href=\"#copyright\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>\u00a9 2026 Jenny1611 \u2014 All rights reserved under the GNU General Public License v2.0.</p>\n","date_published":"2026-04-15T06:19:26Z","id":"https://content.luanti.org/packages/Jenny1611/base_craft/","image":"https://content.luanti.org/thumbnails/4/e5d0286290.png","language":"en","summary":"BaseCraft adds essential, high-quality building blocks like concrete slabs and stairs to complete your constructions with consistency and style","tags":["new_package"],"title":"New: Base Craft","url":"https://content.luanti.org/packages/Jenny1611/base_craft/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d624ffc28c0649d1dcdcd04b53b019e9?s=64&d=retro&r=g","name":"Micka Lunar","url":"https://content.luanti.org/users/Micka/"},"content_html":"<p>Welcome to Go to Poop.</p>\n<p>Something has been added to the world. Something that was always missing.\nYou may find it. You may use it. But you will never look at paper the same way again.</p>\n<hr>\n<p>\ud83d\udc64<strong>A Note from the Creator</strong></p>\n<p>Hi! This is my first mod. I'm a teenager and I don't know how to code yet, so an AI helped me with the programming. But everything else \u2014 the textures, the models, the testing, the debugging, the translations, the weird ideas \u2014 was done by hand, by me.</p>\n<p>I wanted to make something fun, a little stupid, and completely unique for Minetest. I hope it makes you laugh, or at least raises an eyebrow.</p>\n<p>If you find any bugs, please let me know politely. I'm still learning how all of this works.</p>\n<hr>\n<p>\ud83d\udebd <strong>What is this mod about?</strong></p>\n<p>That would be telling.\nBut I can say this: it involves a new workbench of sorts. A very... personal one.\nThere are tools. There are blocks. There is something that looks like chocolate.\nThere is even a trophy. Why? Good question.</p>\n<p>You'll just have to craft it and see.</p>\n<hr>\n<p>\ud83d\udd27 <strong>Technical Stuff</strong>:</p>\n<ul>\n<li>Fully playable in Survival and Multiplayer.</li>\n<li>Translated into 5 languages (English, French, Spanish, German, Russian).</li>\n<li>Requires default, stairs, bucket, and optionally 3d_armor.</li>\n</ul>\n<hr>\n<p>Thank you for checking out my first project.\nNow go. And remember to bring paper.</p>\n<ul>\n<li>[Micka Lunar]</li>\n</ul>\n","date_published":"2026-04-13T23:27:20Z","id":"https://content.luanti.org/packages/Micka/go_to_poop/","image":"https://content.luanti.org/thumbnails/4/14db4a4c83.png","language":"en","summary":"Something is waiting in the dark. Something... brown. Do you are to flush ? \ud83d\udca9","tags":["new_package"],"title":"New: Go To Poop !","url":"https://content.luanti.org/packages/Micka/go_to_poop/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8a11931fc26a8156ad7db29b76e3b684?s=64&d=retro&r=g","name":"Fethnix","url":"https://content.luanti.org/users/Fethnix/"},"content_html":"<p>Sets the player's view to one of six fixed directions:</p>\n<ul>\n<li>up \u2014 look straight up</li>\n<li>down \u2014 look straight down</li>\n<li>north \u2014 face north</li>\n<li>south \u2014 face south</li>\n<li>east \u2014 face east</li>\n<li>west \u2014 face west</li>\n</ul>\n","date_published":"2026-04-13T23:26:43Z","id":"https://content.luanti.org/packages/Fethnix/player_facing/","image":"https://content.luanti.org/thumbnails/4/b2f79ff218.png","language":"en","summary":"Adds a simple \"/facing\" command to set the player look direction.","tags":["new_package"],"title":"New: Player Facing","url":"https://content.luanti.org/packages/Fethnix/player_facing/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/32bc8ca3d77ce1b14cbdbaa4ab4f0d81?s=64&d=retro&r=g","name":"TopHatRick","url":"https://content.luanti.org/users/TopHatRick/"},"content_html":"<h1 id=\"expanded-city-commoditymarkets\">Expanded City Commoditymarkets <a class=\"header-anchor\" href=\"#expanded-city-commoditymarkets\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Adds additional markets to <a href=\"https://content.luanti.org/packages/x5dragonfire/city_commoditymarket/\" rel=\"nofollow\">City CommodityMarkets</a>.</p>\n","date_published":"2026-04-13T23:26:08Z","id":"https://content.luanti.org/packages/TopHatRick/expanded_city_commoditymarket/","image":"https://content.luanti.org/thumbnails/4/b433ccf829.png","language":"en","summary":"Adds additional CommodityMarkets for city's towns etc..","tags":["new_package"],"title":"New: Expanded City CommodityMarket","url":"https://content.luanti.org/packages/TopHatRick/expanded_city_commoditymarket/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"mcl_netherreactor\">mcl_netherreactor <a class=\"header-anchor\" href=\"#mcl_netherreactor\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A mineclonia port of the classic pocket edition nether reactor.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>build the original 3\u00d73 Nether Reactor frame (gold corners, cobble stone).</li>\n<li>activate the Nether Reactor Core to spawn the PE spire structures and timed event.</li>\n<li>wave of hostile zombified piglins</li>\n<li>loot drops mirror MCPE</li>\n<li>temporary protection zone while active so players can\u2019t break out mid-event.</li>\n</ul>\n<h2 id=\"compatibility\">Compatibility <a class=\"header-anchor\" href=\"#compatibility\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Depends on Mineclonia base (<code>mcl_core</code>, <code>mcl_util</code>, <code>mcl_sounds</code>, <code>mcl_mobs</code>, <code>mcl_worlds</code>) and optional nether/farming/mobitem mods for loot items.</p>\n<h2 id=\"credits\">Credits <a class=\"header-anchor\" href=\"#credits\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Thanks to \u201cNether Reactor\u201d by Mew_The_Pinkmin for his forge mod for reference!</p>\n","date_published":"2026-04-07T14:36:17Z","id":"https://content.luanti.org/packages/bookgirlxoxo/mcl_nethernreactor/","image":"https://content.luanti.org/thumbnails/4/24d1135251.png","language":"en","summary":"Port of the Nether Reactor (MCPE) with glowing obsidian, reactor core, spire event","tags":["new_package"],"title":"New: netherreactor","url":"https://content.luanti.org/packages/bookgirlxoxo/mcl_nethernreactor/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/f3145951207ef2c837b88e26f2148a1d?s=64&d=retro&r=g","name":"Plutonium","url":"https://content.luanti.org/users/Plutonium/"},"content_html":"<h1 id=\"plutonium-ships-mod\">Plutonium Ships Mod <a class=\"header-anchor\" href=\"#plutonium-ships-mod\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><strong>Plutonium Ships</strong> is a Minetest mod that allows players to build and pilot custom ships and airships using blocks in the world. Players can create ships from wood, wool, and special blocks, then convert them into controllable entities.</p>\n<hr>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>\n<p><strong>Ship and Blimp Creation</strong></p>\n<ul>\n<li>Build a ship or airship from blocks and convert it into a movable entity.</li>\n<li>Ships move on water, airships float in the air.</li>\n<li>Supports single driver control and passenger seats.</li>\n</ul>\n</li>\n<li>\n<p><strong>Custom Blocks</strong></p>\n<ul>\n<li>Wood, wool, metal blocks, and special blocks like <code>plutoniumships:barre</code> (helm) and <code>plutoniumships:ballon</code> (balloon) can be used to build vehicles.</li>\n</ul>\n</li>\n<li>\n<p><strong>Repair System</strong></p>\n<ul>\n<li>Use the <strong>Repair Kit</strong> to restore the ship\u2019s structure.</li>\n<li>Maximum structure is 200 points.</li>\n</ul>\n</li>\n<li>\n<p><strong>Admin Tool</strong></p>\n<ul>\n<li>The <strong>Destroyer Tool</strong> instantly removes ships or blimps.</li>\n</ul>\n</li>\n<li>\n<p><strong>Visual Representation</strong></p>\n<ul>\n<li>Ships and blimps are made of visual block entities matching the original construction.</li>\n<li>Blocks can glow (e.g., lamps) or maintain their glass transparency.</li>\n</ul>\n</li>\n<li>\n<p><strong>Physics and Movement</strong></p>\n<ul>\n<li>Ships obey water physics.</li>\n<li>Airships can move vertically and horizontally with player controls.</li>\n<li>Smooth acceleration, deceleration, and rotation mechanics.</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h2 id=\"installation\">Installation <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Place the <code>plutoniumships</code> folder in your Minetest <code>mods/</code> directory.</li>\n<li>Enable the mod in your <code>world.mt</code> file or through the Minetest mod interface.</li>\n<li>Launch Minetest and start building your ships!</li>\n</ol>\n<hr>\n<h2 id=\"usage\">Usage <a class=\"header-anchor\" href=\"#usage\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"building-a-ship-or-blimp\">Building a Ship or Blimp <a class=\"header-anchor\" href=\"#building-a-ship-or-blimp\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ol>\n<li>\n<p>Place blocks to form your structure:</p>\n<ul>\n<li>Include <strong>one helm (<code>plutoniumships:barre</code>)</strong> for control.</li>\n<li>Optionally include <strong>balloons (<code>plutoniumships:ballon</code>)</strong> for airships.</li>\n</ul>\n</li>\n<li>\n<p>Right-click the helm to convert the structure into a ship or blimp.</p>\n</li>\n<li>\n<p>Take control by right-clicking the helm in sneak mode (if repairing) or normally (if driving).</p>\n</li>\n</ol>\n<h3 id=\"repairing-a-vehicle\">Repairing a Vehicle <a class=\"header-anchor\" href=\"#repairing-a-vehicle\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Sneak + right-click with a <strong>Repair Kit</strong> to restore 10 structure points per use.</li>\n</ul>\n<h3 id=\"destroyer-tool-admin-only\">Destroyer Tool (Admin Only) <a class=\"header-anchor\" href=\"#destroyer-tool-admin-only\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Instantly remove a ship or blimp by punching it with the <strong>Destroyer Tool</strong>.</li>\n</ul>\n<hr>\n<h2 id=\"crafting\">Crafting <a class=\"header-anchor\" href=\"#crafting\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"repair-kit\">Repair Kit <a class=\"header-anchor\" href=\"#repair-kit\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<pre><code>anvil:hammer | default:wood | default:steel_ingot\ndefault:wood | boats:boat   | default:wood\ndefault:mese_crystal | default:wood | screwdriver:screwdriver\n</code></pre><h3 id=\"helm-plutoniumshipsbarre\">Helm (<code>plutoniumships:barre</code>) <a class=\"header-anchor\" href=\"#helm-plutoniumshipsbarre\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<pre><code>default:wood | repair_kit | default:wood\nmesecons_materials:glue | mesecons_powerplant:power_plant | mesecons_materials:glue\ndefault:wood | default:wood | default:wood\n</code></pre><h3 id=\"balloon-plutoniumshipsballon\">Balloon (<code>plutoniumships:ballon</code>) <a class=\"header-anchor\" href=\"#balloon-plutoniumshipsballon\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<pre><code>xdecor:rope | wool:white | xdecor:rope\nwool:white | default:mese_crystal | wool:white\nxdecor:rope | wool:white | xdecor:rope\n</code></pre><hr>\n<h2 id=\"limitations\">Limitations <a class=\"header-anchor\" href=\"#limitations\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Maximum ship size: 50 blocks (configurable in init.lua).</li>\n<li>Only one helm per ship.</li>\n<li>At least 10 blocks required to create a ship (configurable in init.lua).</li>\n<li>Airships require at least 50% of blocks to be balloons to float (configurable in init.lua).</li>\n</ul>\n","date_published":"2026-04-07T14:32:47Z","id":"https://content.luanti.org/packages/Plutonium/plutoniumships/","image":"https://content.luanti.org/thumbnails/4/a0d271b737.png","language":"en","summary":"Turn your constructions into boats or blimps and set off on the adventure aboard the ship of your dreams. ","tags":["new_package"],"title":"New: Plutonium's ships","url":"https://content.luanti.org/packages/Plutonium/plutoniumships/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/43fa851f3e05b7e4030c8a1524ea9ef2?s=64&d=retro&r=g","name":"saradaabura","url":"https://content.luanti.org/users/saradaabura/"},"content_html":"<h1 id=\"about-this-mod\">About this MOD <a class=\"header-anchor\" href=\"#about-this-mod\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>The Lua part was created by Gemini, and the Python part was created by me (saradaabura).\nThis MOD adds signs that allow you to type in Japanese in Mineclonia.</p>\n<h1 id=\"operation-confirmation\">Operation Confirmation <a class=\"header-anchor\" href=\"#operation-confirmation\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<ul>\n<li>Mineclonia 0.120.1</li>\n<li>Luanti 5.15 x64</li>\n<li>Luanti dev-5.16</li>\n</ul>\n<h1 id=\"mechanism\">Mechanism <a class=\"header-anchor\" href=\"#mechanism\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<ul>\n<li>\n<p>Japanese characters are obtained from &quot;<a href=\"https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppocr/utils/dict/japan_dict.txt\" rel=\"nofollow\">https://github.com/PaddlePaddle/PaddleOCR/blob/release/2.7/ppocr/utils/dict/japan_dict.txt</a>&quot;, and a texture for each character is created using Python and saved with a name that includes the Unicode number. (The Python code can be obtained from github. The mod's textures already contain images.)</p>\n</li>\n<li>\n<p>Lua(the mod) converts the characters entered into the sign to Unicode numbers, references the texture corresponding to the Unicode numbers, and combines them.</p>\n</li>\n<li>\n<p><strong>Python is not required for the mod to function, but it is used to create textures.</strong></p>\n</li>\n</ul>\n<h1 id=\"problem\">Problem <a class=\"header-anchor\" href=\"#problem\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<ul>\n<li>Many media files \u2192 Long loading times (approximately 4400 files, total 660KB)</li>\n<li>Signs placed facing east-west will start facing north-south when you re-enter the world.</li>\n</ul>\n<h1 id=\"to-do\">To Do <a class=\"header-anchor\" href=\"#to-do\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<ul>\n<li>Bug fixes</li>\n<li>Increase the number of supported characters</li>\n<li>Increase variations (textures for the signs themselves)</li>\n<li>Reduce the file size</li>\n</ul>\n<p><strong>I haven't tested this, so I don't know for sure, but this might allow support for other characters (= characters other than Japanese, such as Hangul).</strong></p>\n","date_published":"2026-04-05T15:21:03Z","id":"https://content.luanti.org/packages/saradaabura/jp_signs/","image":"https://content.luanti.org/thumbnails/4/b07871205a.png","language":"en","summary":"This will add signs that support Japanese to the game (Mineclonia).","tags":["new_package"],"title":"New: Japanese Signs","url":"https://content.luanti.org/packages/saradaabura/jp_signs/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/2490fb111958531fe57b55107cd30ee7?s=64&d=retro&r=g","name":"newrizen","url":"https://content.luanti.org/users/newrizen/"},"content_html":"<div>\n  <img src=\"https://raw.githubusercontent.com/newrizen/NewHorizon/main/menu/header.png\" alt=\"New Horizon Header\">\n<h1 id=\"new-horizon\">New Horizon <a class=\"header-anchor\" href=\"#new-horizon\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"world-of-mystery\">World of Mystery <a class=\"header-anchor\" href=\"#world-of-mystery\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n  <a href=\"https://www.minetest.net/\" rel=\"nofollow\">\n    <img src=\"https://img.shields.io/badge/Minetest-5.0+-blue?logo=minetest\">\n  </a>\n  <img src=\"https://img.shields.io/badge/version-prealpha-red\">\n<p>A voxel game made in Lua using the Luanti engine that introduces unique mechanics in a world that blends fantasy and reality.</p>\n</div>\n<blockquote>\n<p>[!IMPORTANT]\nThe game is in the early stages of development, expect many bugs and incomplete features.</p>\n</blockquote>\n<h2 id=\"differentiators\">Differentiators <a class=\"header-anchor\" href=\"#differentiators\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Worlds</li>\n</ul>\n<p>\ud83c\udf10 Walk around the world in a straight line and traverse the world by digging (press V to open the map to see this better)</p>\n<ul>\n<li>Moves</li>\n</ul>\n<p>\ud83e\uddf1 Wall kick jump: Jump 2 blocks wall (space 2x)</p>\n<p>\ud83e\uddd7 Climb some walls and trees (holding space)</p>\n<p>\ud83c\udfc3 Run (W two times)</p>\n<ul>\n<li>Colisions</li>\n</ul>\n<p>\ud83c\udf42 Falling on water, leaves and dry sand reduces damage</p>\n<p>\ud83e\udea8 Throw rocks: Placing (right-click) or throwing (Q key)</p>\n<p>\ud83c\udf32 You can hide in the leaves of the trees</p>\n<p>\ud83c\udf33 Trees fall when cut down, so it's best to run</p>\n<ul>\n<li>Characters</li>\n</ul>\n<p>\ud83d\udc64 Model and skin slightly similar to Hytale, but taller</p>\n<p>\ud83d\udc3e Some animals and monstrs will spawn in some places and interact with you (without animations yet)</p>\n<ul>\n<li>Interactions</li>\n</ul>\n<p>\ud83d\udee0\ufe0f Craft itens in the floor (e + right click)</p>\n<p>\ud83d\udd25 Use some pebbles to set certain leaves on fire</p>\n<p>\ud83d\udcc4 3D writeable papers</p>\n<p>\ud83d\udcd6 Grimoire of creative (/grantme give \u2192 /giveme nh_nodes:archion)</p>\n<ul>\n<li>Objects</li>\n</ul>\n<p>\ud83c\udf4e 3D placeble fruits\n\ud83e\ude99 3D placeble ores\n\ud83e\ude96 3D placeble armours</p>\n<p>And a few more details...</p>\n<h2 id=\"how-to-open\">How to Open <a class=\"header-anchor\" href=\"#how-to-open\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>How to play by github code:</p>\n<ol>\n<li>First, you need to install Luanti (PC or Android).</li>\n<li>Download all the components from this repository in &quot;code&quot; -&gt; &quot;download zip&quot;</li>\n<li>Extract the folder and place it in the &quot;games&quot; folder inside the &quot;.minetest&quot; folder of Luanti.</li>\n<li>The icon will appear when you open Luanti. Create a world and play!</li>\n</ol>\n<h2 id=\"external-mods\">External Mods <a class=\"header-anchor\" href=\"#external-mods\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Modified mods used to this game</p>\n<ul>\n<li>Mobs Redo API - For Minetest Game (outdated version) <a href=\"https://codeberg.org/tenplus1/mobs_redo.git\" rel=\"nofollow\">Github Repo</a></li>\n<li>Happy Mob - <a href=\"https://github.com/cookieukw/happy_mob\" rel=\"nofollow\">Github Repo</a></li>\n</ul>\n","date_published":"2026-04-04T23:29:15Z","id":"https://content.luanti.org/packages/newrizen/nh/","image":"https://content.luanti.org/thumbnails/4/9266ef3469.png","language":"en","summary":"A simple game, with world travel, unique mechanics and mysteries.","tags":["new_package"],"title":"New: New Horizon","url":"https://content.luanti.org/packages/newrizen/nh/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/fc688ca882ce4ac694e78b7a6f0c88e2?s=64&d=retro&r=g","name":"raven.dracali","url":"https://content.luanti.org/users/raven.dracali/"},"content_html":"<p><strong>Vending Machine Mod</strong></p>\n<p>A two-block-tall vending machine for VoxeLibre.</p>\n<p><strong>Features</strong></p>\n<ul>\n<li>Two-block-tall vending machine node</li>\n<li>Owner-only configuration and destruction</li>\n<li>Owner-only access to the machine vault and currency slot</li>\n<li>Configurable currency item by placing one item in the currency slot</li>\n<li>9 product columns</li>\n<li>3 stock rows (27 stock slots total)</li>\n<li>Configurable price per column</li>\n<li>Configurable quantity per price per column</li>\n<li>Buyers can purchase as many full bundles as they can afford in one drag/take action</li>\n<li>Powered / unpowered states with separate on/off textures</li>\n<li>Machine only sells while powered by  redstone</li>\n<li>Light emission only while powered</li>\n<li>Hopper support for pulling currency out of the vault from below</li>\n<li>Works well with locked chests for secure automated income storage</li>\n</ul>\n<p><strong>How It Works</strong></p>\n<p>The machine has:</p>\n<ul>\n<li><strong>Stock</strong>: 9 columns \u00d7 3 rows</li>\n<li><strong>Currency slot</strong>: defines what item is used as payment</li>\n<li><strong>Vault</strong>: stores money earned from purchases</li>\n</ul>\n<p>Each of the 9 columns has:</p>\n<ul>\n<li><strong>#items</strong>: how many items are sold per purchase bundle</li>\n<li><strong>Cost</strong>: how much currency is required for that bundle</li>\n</ul>\n<p>Example:</p>\n<ul>\n<li><code>#items = 5</code></li>\n<li><code>Cost = 3</code></li>\n</ul>\n<p>This means the machine sells <strong>5 items for 3 currency</strong> from that column.</p>\n<p>If a buyer inserts 8 currency, they can take up to 10 items, and 6 currency will be charged.</p>\n<p><strong>Owner Setup</strong></p>\n<ol>\n<li>Place the vending machine.</li>\n<li>Open it.</li>\n<li>Put exactly one item into the <strong>Currency</strong> slot. That item becomes the accepted currency.</li>\n<li>Fill the <strong>Stock</strong> grid.</li>\n<li>Set <strong>#items</strong> and <strong>Cost</strong> for each column.</li>\n<li>Press <strong>Save</strong>.</li>\n<li>Power the machine with Mesecons / redstone.</li>\n</ol>\n<p><strong>Buyer Use</strong></p>\n<ol>\n<li>Open the machine.</li>\n<li>Put the correct currency item into the <strong>Payment</strong> slot.</li>\n<li>Take items from the stock grid.</li>\n<li>The machine will only allow taking the amount that can be afforded in full bundles.</li>\n</ol>\n<p><strong>Powered Behavior</strong></p>\n<ul>\n<li>The machine has separate <strong>off</strong> and <strong>on</strong> node states.</li>\n<li>It only allows purchases while powered.</li>\n<li>It only lights up while powered.</li>\n</ul>\n<p>Hopper Behavior</p>\n<p>If a hopper is placed directly under the vending machine base, it can pull items from the <strong>vault</strong>.</p>\n<p>This is useful for automatically moving earned currency into secure storage, such as a locked chest.</p>\n<p><strong>Security</strong></p>\n<ul>\n<li>\n<p>Only the owner can:</p>\n<ul>\n<li>change prices and quantities</li>\n<li>set the currency item</li>\n<li>access the vault</li>\n<li>dig / destroy the machine</li>\n</ul>\n</li>\n<li>\n<p>Non-owners can only use the payment slot and buy stock while the machine is powered</p>\n</li>\n</ul>\n<p>Suggested Use With Locked Chests</p>\n<p>A hopper under the vending machine can move currency from the machine vault into a locked chest.</p>\n<p>This prevents the vault from filling up and keeps earnings secure.</p>\n<p>Craft Recipe</p>\n<p>Example recipe currently used:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">register_craft</span><span class=\"p\">({</span>\n<span class=\"w\">    </span><span class=\"nv\">output</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">modname</span><span class=\"w\"> </span><span class=\"o\">..</span><span class=\"w\"> </span><span class=\"s2\">&quot;:vending_machine_off&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">recipe</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"p\">{</span><span class=\"s2\">&quot;mcl_doors:iron_trapdoor&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;xpanes:pane_natural_flat&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_doors:iron_trapdoor&quot;</span><span class=\"p\">},</span>\n<span class=\"w\">        </span><span class=\"p\">{</span><span class=\"s2\">&quot;mcl_doors:iron_door&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_chests:chest&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_doors:iron_door&quot;</span><span class=\"p\">},</span>\n<span class=\"w\">        </span><span class=\"p\">{</span><span class=\"s2\">&quot;mcl_doors:iron_trapdoor&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_comparators:comparator_off_comp&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_doors:iron_trapdoor&quot;</span><span class=\"p\">},</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">})</span>\n</pre></div>\n<p>Dependencies</p>\n<p>This mod is intended for <strong>VoxeLibre</strong> and uses:</p>\n<ul>\n<li><code>mcl_*</code> item names</li>\n<li><code>mesecons</code> for powered behavior</li>\n<li>hopper callbacks used by VoxeLibre container logic</li>\n</ul>\n<p>Notes</p>\n<ul>\n<li>The machine inventory is stored in the <strong>bottom</strong> node.</li>\n<li>The top node is visual / interactive only and forwards access to the base.</li>\n<li>If you customize textures, make sure both top and bottom on/off textures exist.</li>\n<li>If using hopper extraction, ensure the vending machine base node has the <code>container</code> group.</li>\n</ul>\n","date_published":"2026-04-04T15:24:13Z","id":"https://content.luanti.org/packages/raven.dracali/vending_machines/","image":"https://content.luanti.org/thumbnails/4/834f056393.png","language":"en","summary":"A two-block-tall vending machine for  VoxeLibre.","tags":["new_package"],"title":"New: Vending Machines","url":"https://content.luanti.org/packages/raven.dracali/vending_machines/"},{"author":{"avatar":"https://content.luanti.org/uploads/d607c7a2be.png","name":"SkyBuilder1717","url":"https://content.luanti.org/users/SkyBuilder1717/"},"content_html":"<p>Adds many types of TNT, and they're all craftable!\nIf you wanna know every TNT, you should visit a mini wiki about it: <a href=\"https://skybuilder1717.ru/too_much_tnt/\" rel=\"nofollow\">https://skybuilder1717.ru/too_much_tnt/</a></p>\n","date_published":"2026-04-04T06:50:23Z","id":"https://content.luanti.org/packages/SkyBuilder1717/too_many_tnt/","image":"https://content.luanti.org/thumbnails/4/6e1164a46b.png","language":"en","summary":"Adds a lot of TNT for Minetest Game to make gameplay more fun!","tags":["new_package"],"title":"New: Too Much TNT!","url":"https://content.luanti.org/packages/SkyBuilder1717/too_many_tnt/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/edb07a368087038608fd42bd83b779aa?s=64&d=retro&r=g","name":"ChrisPHP","url":"https://content.luanti.org/users/ChrisPHP/"},"content_html":"<h1 id=\"sunken-spoils\">Sunken Spoils <a class=\"header-anchor\" href=\"#sunken-spoils\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Sunken Spoils is a fishing mod for mineclonia that adds new craftable fishing rods, tiered loot crates, a new enchantment and a new set of tools and armour!</p>\n<h2 id=\"fishing-rods\">Fishing Rods <a class=\"header-anchor\" href=\"#fishing-rods\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>4 New craftable fishing rods that have increased durability:</p>\n<ul>\n<li>Copper Fishing Rod</li>\n<li>Iron Fishing Rod</li>\n<li>Diamond Fishing Rod</li>\n<li>Abyssil Fishing Rod</li>\n</ul>\n<h2 id=\"loot-crates\">Loot Crates <a class=\"header-anchor\" href=\"#loot-crates\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Acquire new loot crates from fishing that give ores, enchanted tools  and enchanted armour! Use different types of fishing rods to have an increased chance of earning a specific fishing rod, Copper Fishing Rod has a higher chance of giving you a Copper Crate!</p>\n<ul>\n<li><strong>Wood Crate</strong>: Contains generic items such as wood, sand, coal and raw ores</li>\n<li><strong>Copper Crate</strong>: Contains copper ingots, tools and armour</li>\n<li><strong>Iron Crate</strong>: Contains iron, tools, armour, lapis, redstone and gold ingots</li>\n<li><strong>Diamond Crate</strong>: Contains Diamonds, Emeralds, Diamond tools and armour</li>\n<li><strong>Abyssil Crate</strong>: Contains the new Abyssil ingot and Abyssil tools and armour</li>\n<li><strong>Forest Cate</strong>: A rare crate that contains various seeds and saplings</li>\n</ul>\n<h2 id=\"new-enchantments\">New Enchantments <a class=\"header-anchor\" href=\"#new-enchantments\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Two new enchantments for your fishing rods!</p>\n<ul>\n<li>A new Treasure Hunter enchantment can be acquired for all fishing rods. It boosts the chance of getting a crate from fishing</li>\n<li>Weather attuned that improves the catch rate by 20% in all weather conditions!</li>\n</ul>\n<h2 id=\"abyssil-ingots\">Abyssil Ingots <a class=\"header-anchor\" href=\"#abyssil-ingots\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>A new metal can be acquired from the Abyssil Crates. The armour and tools are better than diamonds offering more durability, mining speed and damage.</p>\n<h2 id=\"references\">References <a class=\"header-anchor\" href=\"#references\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This is mod is inspired by <a href=\"https://www.curseforge.com/minecraft/mc-mods/aquaculture\" rel=\"nofollow\">Aquaculture 2</a></p>\n","date_published":"2026-04-02T19:31:27Z","id":"https://content.luanti.org/packages/ChrisPHP/sunken_spoils/","image":"https://content.luanti.org/thumbnails/4/53f0e345b7.png","language":"en","summary":"Adds new fishing rods and a chance to catch new loot crates","tags":["new_package"],"title":"New: Sunken Spoils","url":"https://content.luanti.org/packages/ChrisPHP/sunken_spoils/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/53ad2d771c9449ca8a41ab67fc9ee996?s=64&d=retro&r=g","name":"Zeralyth","url":"https://content.luanti.org/users/Michela/"},"content_html":"<h1 id=\"rp-name-system-minetest-mod\">RP Name System (Minetest Mod) <a class=\"header-anchor\" href=\"#rp-name-system-minetest-mod\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"what-this-is\">What this is <a class=\"header-anchor\" href=\"#what-this-is\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This mod lets players set a roleplay (RP) name so you don\u2019t have to go around with your regular username all the time.</p>\n<h2 id=\"what-you-can-do\">What you can do <a class=\"header-anchor\" href=\"#what-you-can-do\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Set your own RP name</li>\n<li>Check other players\u2019 RP names</li>\n<li>Admins can change names if needed</li>\n</ul>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>/name_set &lt;first&gt; &lt;last&gt;\nSet your RP name.</p>\n<pre><code>/name_player &lt;player&gt;\n</code></pre>\n<p>See someone else\u2019s RP name.</p>\n<pre><code>/name_pchange &lt;player&gt; &lt;first&gt; &lt;last&gt;\n</code></pre>\n<p>Admins can change another player\u2019s RP name.</p>\n<pre><code>Permissions\n</code></pre>\n<p><strong>name_admin</strong><br>\nNeeded to use <code>/name_pchange</code></p>\n<pre><code>Installation\n</code></pre>\n<ol>\n<li>Put the mod folder in your <code>mods</code> folder</li>\n<li>Enable it in your world</li>\n<li>Start the game</li>\n</ol>\n<p>Notes</p>\n<ul>\n<li>Only give admin perms to people you trust</li>\n</ul>\n","date_published":"2026-04-02T19:30:36Z","id":"https://content.luanti.org/packages/Michela/names/","image":"https://content.luanti.org/thumbnails/4/5318d5f6cd.png","language":"en","summary":" Settable Names Mod","tags":["new_package"],"title":"New: Names","url":"https://content.luanti.org/packages/Michela/names/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8d5357cc69bcb3ebe03007122b1e05ec?s=64&d=retro&r=g","name":"Signal_","url":"https://content.luanti.org/users/Signal_/"},"content_html":"<p>This mod adds disguises to every entity.</p>\n<p>Note that because none of the disguises are persistent, you should be able to freely enable and disable this mod without any side effects at all.</p>\n<p>Caveats:</p>\n<ul>\n<li>It is impossible to know the direction of entities that bake rotation into the collision/selectionbox (these include Mineclonia paintings and Artifact doors).</li>\n<li>It is impossible to predict the name of the 'head' bone for an arbitrary entity, or even whether it has one.</li>\n</ul>\n","date_published":"2026-04-02T19:28:32Z","id":"https://content.luanti.org/packages/Signal_/disguises/","image":"https://content.luanti.org/thumbnails/4/04039b55e8.png","language":"en","summary":"Adds a disguise to every entity.","tags":["new_package"],"title":"New: Disguises","url":"https://content.luanti.org/packages/Signal_/disguises/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/def7bb3c0e37c146ed3244c8f9161986?s=64&d=retro&r=g","name":"DiamondFist","url":"https://content.luanti.org/users/DiamondFist/"},"content_html":"<p><a href='https://content.luanti.org/packages/DiamondFist/random_drops/'>Read more</a></p>","date_published":"2026-04-02T19:23:47Z","id":"https://content.luanti.org/packages/DiamondFist/random_drops/","image":"https://content.luanti.org/thumbnails/4/d01250ee21.png","language":"en","summary":"Replaces every mined node drop with a completely random item.","tags":["new_package"],"title":"New: Random Drops","url":"https://content.luanti.org/packages/DiamondFist/random_drops/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"breasy-player\">Breasy Player <a class=\"header-anchor\" href=\"#breasy-player\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Breasy player adds wind physics to the player.</p>\n<ul>\n<li>Highspeed winds will push the player.</li>\n<li>Sneak will reduce the effect of the wind on the player.</li>\n</ul>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\ud83d\udc96 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-04-02T13:51:03Z","id":"https://content.luanti.org/packages/Bas080/breasy_player/","image":"https://content.luanti.org/thumbnails/4/e11ccf4772.png","language":"en","summary":"Breasy player adds wind physics to the player.","tags":["new_package"],"title":"New: Breasy Player","url":"https://content.luanti.org/packages/Bas080/breasy_player/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"breasy-particles\">Breasy Particles <a class=\"header-anchor\" href=\"#breasy-particles\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Creates the effect of blizzards, sandstorms and leaves being ripped from trees.</p>\n<p>In essence breasy particles is a simple mod that will create particle effects when wind speeds are high.</p>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\ud83d\udc96 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-04-02T13:51:01Z","id":"https://content.luanti.org/packages/Bas080/breasy_particles/","image":"https://content.luanti.org/thumbnails/4/1449bcc440.png","language":"en","summary":"Breasy particles adds wind particles to the world.","tags":["new_package"],"title":"New: Breasy Particles","url":"https://content.luanti.org/packages/Bas080/breasy_particles/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d7e23bdeb07b1eca11e7a2955b7d09e9?s=64&d=retro&r=g","name":"bugbug11","url":"https://content.luanti.org/users/bugbug11/"},"content_html":"<p><a href='https://content.luanti.org/packages/bugbug11/intercept_player_messages/'>Read more</a></p>","date_published":"2026-03-29T14:10:23Z","id":"https://content.luanti.org/packages/bugbug11/intercept_player_messages/","image":"https://content.luanti.org/thumbnails/4/09515a1b1b.png","language":"en","summary":"Allows staff to view messages sent directly to players","tags":["new_package"],"title":"New: Intercept Player Messages","url":"https://content.luanti.org/packages/bugbug11/intercept_player_messages/"},{"author":{"avatar":"https://content.luanti.org/uploads/2894ae2a1d.png","name":"Linuxdirk","url":"https://content.luanti.org/users/Linuxdirk/"},"content_html":"<p>This mod provides a game-agnostic API to limit node interaction based on an access list. The owner of an access list can add player names to grant them access to the node or feature the list controls.</p>\n<p>The mod provides a purposeful and neutral looking formspec, and customizing options to adapt it to your game/mod but also allows to prepend the formspec as needed.</p>\n<p>All API functions were created to be used for having an access list system in individual mods, but also to allow overriding already existing item interactions from the game and from other mods.</p>\n<p><strong>For a minimal API implementation example, information on the access list entries, the access list management, and the configuration, please refer to <a href=\"https://git.0x7be.net/dirk/access_list#readme\" rel=\"nofollow\">the main documentation file</a>.</strong></p>\n<ul>\n<li>See <a href=\"https://git.0x7be.net/dirk/access_list/src/branch/main/doc\" rel=\"nofollow\">the API documentation</a> for detailed descriptions of what functions are available.</li>\n<li>Detailed usage examples are also available in the <a href=\"https://git.0x7be.net/dirk/access_list/src/branch/main/doc/examples\" rel=\"nofollow\">examples directory</a>.</li>\n</ul>\n","date_published":"2026-03-28T23:11:21Z","id":"https://content.luanti.org/packages/Linuxdirk/access_list/","image":"https://content.luanti.org/thumbnails/4/28c69f1ad4.png","language":"en","summary":"Game-agnostic and node-based customizable access list API","tags":["new_package"],"title":"New: Access List","url":"https://content.luanti.org/packages/Linuxdirk/access_list/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"mtpaint\">MtPaint <a class=\"header-anchor\" href=\"#mtpaint\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Image editor-style world editing for Minetest.</p>\n<blockquote>\n<p>Built with AI assistance</p>\n</blockquote>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>\n<p><strong>Primary / Secondary nodes</strong></p>\n<ul>\n<li>Left click uses inventory slot 1</li>\n<li>Right click uses inventory slot 2</li>\n</ul>\n</li>\n<li>\n<p><strong>Face-aware placement</strong></p>\n<ul>\n<li>Click replaces the targeted node</li>\n<li><code>Aux1</code> + click places on the clicked face instead</li>\n</ul>\n</li>\n<li>\n<p><strong>Pencil</strong></p>\n<ul>\n<li>Places or replaces a single block</li>\n</ul>\n</li>\n<li>\n<p><strong>Eraser</strong></p>\n<ul>\n<li>Removes the highlighted block</li>\n</ul>\n</li>\n<li>\n<p><strong>Picker</strong></p>\n<ul>\n<li>Copies the highlighted block into the active slot</li>\n</ul>\n</li>\n<li>\n<p><strong>Flood Fill</strong></p>\n<ul>\n<li>Fills connected blocks on the clicked face</li>\n</ul>\n</li>\n<li>\n<p><strong>3D Flood Fill / Additive Fill</strong></p>\n<ul>\n<li>Fills a six\u00e2\u0080\u0091connected component of identical nodes in true 3D space. Click to replace a block and all connected neighbors; use the <code>aux1</code> modifier to surround the region with a one\u00e2\u0080\u0091node thick shell (nodes are placed on top of the replaced component). This tool is not restricted to a plane and therefore differs from the regular flood fill, which only affects the face you click and works by placing nodes on adjacent faces.</li>\n</ul>\n</li>\n<li>\n<p><strong>Filled Box</strong></p>\n<ul>\n<li>2-corner selection volume fill</li>\n</ul>\n</li>\n<li>\n<p><strong>Box Outline</strong></p>\n<ul>\n<li>2-corner selection edges only</li>\n</ul>\n</li>\n<li>\n<p><strong>Filled Ellipsoid</strong></p>\n<ul>\n<li>2-corner selection ellipsoid volume</li>\n</ul>\n</li>\n<li>\n<p><strong>Line</strong></p>\n<ul>\n<li>Draws a 3D line between two selected points</li>\n</ul>\n</li>\n</ul>\n<hr>\n<h2 id=\"usage\">Usage <a class=\"header-anchor\" href=\"#usage\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>MtPaint tools are <strong>not craftable</strong>.</p>\n<p>Use the <code>/give</code> command (or <code>/giveme</code>) to obtain them:</p>\n<pre><code>/give &lt;player&gt; mtpaint:pencil\n/give &lt;player&gt; mtpaint:fill\n/give &lt;player&gt; mtpaint:eraser\n/give &lt;player&gt; mtpaint:picker\n/give &lt;player&gt; mtpaint:additive_fill   # 3D flood fill tool\n/give &lt;player&gt; mtpaint:rect_fill\n/give &lt;player&gt; mtpaint:rect_edge\n/give &lt;player&gt; mtpaint:ellipse_fill\n/give &lt;player&gt; mtpaint:line_tool\n</code></pre><h3 id=\"aliases\">Aliases <a class=\"header-anchor\" href=\"#aliases\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>The following shortcuts are available for use with <code>/giveme &lt;alias&gt;</code></p>\n<ul>\n<li><code>pencil</code></li>\n<li><code>fill</code></li>\n<li><code>eraser</code></li>\n<li><code>gum</code></li>\n<li><code>picker</code></li>\n<li><code>colorpicker</code></li>\n<li><code>nodepicker</code></li>\n</ul>\n<p>See <a href=\"https://github.com/bas080/mtpaint/tree/experiment\" rel=\"nofollow\"><code>experiment branch</code></a> for other ideas.</p>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\u00f0\u009f\u0092\u0096 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-03-28T16:24:47Z","id":"https://content.luanti.org/packages/Bas080/mtpaint/","image":"https://content.luanti.org/thumbnails/4/b10d13b2b0.png","language":"en","summary":"A Minetest mod providing in-game painting and editing tools.","tags":["new_package"],"title":"New: mtpaint","url":"https://content.luanti.org/packages/Bas080/mtpaint/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/2feb84f6b829c22ce658eb58777edf39?s=64&d=retro&r=g","name":"cjgray24","url":"https://content.luanti.org/users/cjgray24/"},"content_html":"<div>\n<h1 id=\"eye-spy\">Eye Spy <a class=\"header-anchor\" href=\"#eye-spy\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><strong>Real-time node, entity, and item inspection \u2014 right on your HUD.</strong></p>\n<p><a href=\"LICENSE.txt\" rel=\"nofollow\"><img src=\"https://img.shields.io/badge/license-LGPL%20v2.1-brightgreen\" alt=\"License: LGPL v2.1\"></a>\n<a href=\"https://www.luanti.org/\" rel=\"nofollow\"><img src=\"https://img.shields.io/badge/Luanti-5.8%2B-orange\" alt=\"Luanti 5.8+\"></a>\n<a href=\"locale/\" rel=\"nofollow\"><img src=\"https://img.shields.io/badge/translations-8%20languages-lightgrey\" alt=\"Translations\"></a></p>\n</div>\n<hr>\n<p>Eye Spy adds a live HUD that shows you everything about whatever you are looking at \u2014 the node name, which tool breaks it fastest, how long digging takes, the current light level, crop growth and soil status, entity health, and more. Every detail is configurable through an in-game editor with live preview, and the HUD updates continuously as you look around.</p>\n<p>Eye Spy has <strong>no required dependencies</strong> and works in any game that follows standard Luanti node conventions.</p>\n<h2 id=\"screenshots\">Screenshots <a class=\"header-anchor\" href=\"#screenshots\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<table>\n  <tbody><tr>\n    <td><img src=\"https://github.com/cjgray24/eye_spy/raw/master/screenshots/hud_growth.png\" alt=\"HUD showing crop growth and soil status\"></td>\n    <td><img src=\"https://github.com/cjgray24/eye_spy/raw/master/screenshots/settings_ui.png\" alt=\"Settings editor with live HUD preview\"></td>\n  </tr>\n  <tr>\n    <td>Crop growth and soil info</td>\n    <td>In-game settings editor with live preview</td>\n  </tr>\n  <tr>\n    <td><img src=\"https://github.com/cjgray24/eye_spy/raw/master/screenshots/layout_editor.png\" alt=\"Advanced Layout Editor with position and panel sliders\"></td>\n  </tr>\n  <tr>\n    <td>Advanced Layout Editor</td>\n  </tr>\n</tbody></table>\n<h3 id=\"customization\">Customization <a class=\"header-anchor\" href=\"#customization\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><strong>HUD background color</strong> \u2014 full RGB slider control with live preview</li>\n<li><strong>Auto-contrast text</strong> \u2014 title text automatically switches between light and dark based on your chosen background color; semantic colors for info, footer, and soil lines are contrast-adjusted automatically</li>\n<li><strong>Manual color spectrum</strong> \u2014 6 independent hue sliders for Title, Info, Footer, Line, Growth, and Soil colors when auto-contrast is off</li>\n<li><strong>7 screen positions</strong> \u2014 Top-Middle (default), Top-Left, Top-Right, Middle-Left, Middle-Right, Bottom-Left, Bottom-Right</li>\n<li><strong>Health display format</strong> \u2014 numeric Points or \u2764 Hearts</li>\n<li><strong>Per-feature toggles</strong> \u2014 enable or disable Light Level, Spawn Hint, Liquid Info, Dig Time, Growth, Icons, and Coordinates independently; Liquid Info is a single toggle that controls both liquid line visibility and scan-through targeting</li>\n<li><strong>Footer modes</strong> \u2014 Compact (mod name only) or Advanced (mod name + full item identifier)</li>\n<li><strong>Advanced Layout Editor</strong> \u2014 35+ fine-grained sliders for pixel-level positioning of every HUD element</li>\n</ul>\n<h3 id=\"performance\">Performance <a class=\"header-anchor\" href=\"#performance\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><strong>Adjustable refresh rate</strong> \u2014 100 ms default in singleplayer, 150 ms in multiplayer, configurable from 50\u20135000 ms</li>\n<li><strong>Per-player rate overrides</strong> \u2014 server admins can set a different refresh interval for specific players without affecting others</li>\n<li><strong>Multi-layer caching</strong> \u2014 target position, render signature, layout geometry, light samples, tool type results, and line colors are all cached to minimize unnecessary work each tick</li>\n<li><strong>HUD auto-recovery</strong> \u2014 if HUD elements go blank after a long session, Eye Spy detects and restores them automatically</li>\n<li><strong>Optional performance metrics</strong> \u2014 per-stage microsecond timing with avg/p95/max reporting via <code>/eye_spy_perf</code></li>\n</ul>\n<h2 id=\"getting-started\">Getting Started <a class=\"header-anchor\" href=\"#getting-started\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"installation\">Installation <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ol>\n<li>Place the <code>eye_spy</code> folder inside your world's <code>mods/</code> directory.</li>\n<li>Enable the mod in the mod selection screen before creating or loading a world, <strong>or</strong> add <code>load_mod_eye_spy = true</code> to your <code>world.mt</code> file.</li>\n<li>Launch the game \u2014 the HUD appears automatically when you join.</li>\n</ol>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<table>\n<thead>\n<tr>\n<th>Command</th>\n<th>Description</th>\n<th>Privilege</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/eye_spy_settings</code></td>\n<td>Opens the settings and live-preview editor</td>\n<td>\u2014</td>\n</tr>\n<tr>\n<td><code>/eye_spy_rate show</code></td>\n<td>Shows your effective refresh rate and the server default</td>\n<td>\u2014</td>\n</tr>\n<tr>\n<td><code>/eye_spy_rate default &lt;ms&gt;</code></td>\n<td>Sets the server-wide HUD refresh rate (50\u20135000 ms)</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_rate player &lt;name&gt; &lt;ms|default&gt;</code></td>\n<td>Sets or clears a per-player refresh rate override</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_perf show</code></td>\n<td>Prints timing stats (avg / p95 / max) for all internal stages</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_perf reset</code></td>\n<td>Clears all collected performance samples</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_perf on</code></td>\n<td>Enables runtime performance metrics collection</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_perf off</code></td>\n<td>Disables runtime performance metrics collection</td>\n<td><code>eye_spy_rate</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_toggle</code></td>\n<td>Toggles your Eye Spy HUD on or off</td>\n<td>\u2014</td>\n</tr>\n<tr>\n<td><code>/eye_spy_status</code></td>\n<td>Shows your current HUD status and active refresh rate</td>\n<td>\u2014</td>\n</tr>\n<tr>\n<td><code>/eye_spy_admin disable &lt;name&gt;</code></td>\n<td>Suppresses the HUD for a player server-side</td>\n<td><code>eye_spy_admin</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_admin enable &lt;name&gt;</code></td>\n<td>Lifts a server-side HUD suppression for a player</td>\n<td><code>eye_spy_admin</code></td>\n</tr>\n<tr>\n<td><code>/eye_spy_admin show [name]</code></td>\n<td>Shows HUD status for one or all online players</td>\n<td><code>eye_spy_admin</code></td>\n</tr>\n</tbody>\n</table>\n<blockquote>\n<p>The <code>eye_spy_rate</code> and <code>eye_spy_admin</code> privileges are granted automatically in singleplayer.</p>\n</blockquote>\n<h2 id=\"configuration\">Configuration <a class=\"header-anchor\" href=\"#configuration\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>These settings can be placed in <code>minetest.conf</code> or configured in the server's settings UI. They apply server-wide and take effect on the next server start.</p>\n<table>\n<thead>\n<tr>\n<th>Setting</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>eye_spy.show_entities</code></td>\n<td><code>true</code></td>\n<td>Show entity information in the HUD</td>\n</tr>\n<tr>\n<td><code>eye_spy.show_liquids</code></td>\n<td><code>false</code></td>\n<td>Enable liquid-aware targeting. When Liquid Info is on, Eye Spy scans through liquid, shows a liquid line, and can still display the target behind it</td>\n</tr>\n<tr>\n<td><code>eye_spy.always_show_hand_in_creative</code></td>\n<td><code>true</code></td>\n<td>Always display &quot;Hand&quot; as the tool type in creative mode</td>\n</tr>\n<tr>\n<td><code>eye_spy.texture_pack_size</code></td>\n<td><code>None</code></td>\n<td>Force all HUD icons to a fixed resolution. Use this when textures appear at the wrong size with a custom texture pack. Options: <code>None</code>, <code>16x16px</code>, <code>32x32px</code>, <code>64x64px</code>, <code>128x128px</code>, <code>256x256px</code>, and higher</td>\n</tr>\n<tr>\n<td><code>eye_spy.update_interval</code></td>\n<td><code>0.25</code></td>\n<td>Base update interval in seconds (used as a fallback; the rate system normally controls timing)</td>\n</tr>\n<tr>\n<td><code>eye_spy.enable_perf_metrics</code></td>\n<td><code>false</code></td>\n<td>Enable performance metrics collection at startup</td>\n</tr>\n<tr>\n<td><code>eye_spy.show_growth</code></td>\n<td><code>true</code></td>\n<td>Show crop growth and soil status lines</td>\n</tr>\n<tr>\n<td><code>eye_spy.show_icons</code></td>\n<td><code>true</code></td>\n<td>Show the target icon in the HUD</td>\n</tr>\n<tr>\n<td><code>eye_spy.default_show_coords</code></td>\n<td><code>false</code></td>\n<td>Default coordinates visibility for new players</td>\n</tr>\n<tr>\n<td><code>eye_spy.default_show_light_level</code></td>\n<td><code>true</code></td>\n<td>Default light level visibility for new players</td>\n</tr>\n<tr>\n<td><code>eye_spy.default_show_spawn_hint</code></td>\n<td><code>false</code></td>\n<td>Default spawn hint visibility for new players</td>\n</tr>\n<tr>\n<td><code>eye_spy.default_show_liquid_info</code></td>\n<td><code>true</code></td>\n<td>Default liquid info visibility for new players</td>\n</tr>\n<tr>\n<td><code>eye_spy.default_show_dig_time</code></td>\n<td><code>true</code></td>\n<td>Default dig time visibility for new players</td>\n</tr>\n</tbody>\n</table>\n<p>Per-player settings (colors, position, toggles, layout) are stored in player metadata and are managed entirely through the in-game <code>/eye_spy_settings</code> editor.</p>\n<h2 id=\"advanced-layout-editor\">Advanced Layout Editor <a class=\"header-anchor\" href=\"#advanced-layout-editor\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>The Advanced Layout Editor gives you fine-grained control over the exact position and scale of every HUD element. Open it from <code>/eye_spy_settings</code> \u2192 <strong>Advanced Layout</strong>.</p>\n<img src=\"https://github,com/cjgray24/eye_spy/screenshots/layout_editor.png\" alt=\"Advanced Layout Editor\">\n<p>The editor is split into three pages:</p>\n<table>\n<thead>\n<tr>\n<th>Page</th>\n<th>What you can adjust</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Position</strong></td>\n<td>Global X/Y offset, per-element X/Y offsets, margins, icon and text base positions</td>\n</tr>\n<tr>\n<td><strong>Panel</strong></td>\n<td>Background padding (left/right/top/bottom), extra width/height, background scale %</td>\n</tr>\n<tr>\n<td><strong>Text</strong></td>\n<td>Scale percentage for Title, Info, Lines, and Footer text independently</td>\n</tr>\n</tbody>\n</table>\n<p>Use the <strong>Target</strong> dropdown to select which element to adjust (Global, BG, Icon, Title, Subtitle, Lines, or Footer). The <strong>Step</strong> control sets the slider increment \u2014 use 1 for precise tweaking and 8 for quick coarse movement. All changes preview live on your HUD as you drag. Use <strong>Reset Target</strong> to restore one element or <strong>Reset All</strong> to return everything to defaults.</p>\n<h2 id=\"troubleshooting\">Troubleshooting <a class=\"header-anchor\" href=\"#troubleshooting\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p><strong>HUD not appearing</strong>\nRun <code>/eye_spy_settings</code> and click Apply Changes to force the HUD to reinitialize. Confirm the mod is listed as enabled for your world in <code>world.mt</code>.</p>\n<p><strong>Soil shows as Dry even though water is present</strong>\nEye Spy scans for water within 3 blocks of the soil position. If the water source is further away, the farming mod's hydration ABM may not have updated the soil block yet \u2014 the HUD will reflect the correct state once it does. Moving the water to be directly adjacent resolves this immediately.</p>\n<p><strong>Icons appear at the wrong size</strong>\nSet <code>eye_spy.texture_pack_size</code> in <code>minetest.conf</code> to match your texture pack's base resolution (for example, <code>64x64px</code> for a 64\u00d7 pack).</p>\n<p><strong>HUD disappears after a long play session</strong>\nThis is a Luanti HUD element timing quirk. Eye Spy detects the missing elements and restores them automatically, stare at a block or something which should trigger the hud and it should detect when it isn't showing and fix itself. Doesn't impact performance. You can also trigger an immediate recovery by running <code>/eye_spy_settings</code> and clicking Cancel.</p>\n<p><strong>Server performance impact</strong>\nUse <code>/eye_spy_rate default &lt;ms&gt;</code> to raise the server-wide refresh interval. You can also give specific players a higher interval with <code>/eye_spy_rate player &lt;name&gt; &lt;ms&gt;</code> without changing the default for everyone else. Disabling unused info lines per-player also reduces work per tick.</p>\n<h2 id=\"contributing\">Contributing <a class=\"header-anchor\" href=\"#contributing\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Bug reports, pull requests, and translations are all welcome. Please open an issue or PR on <a href=\"https://github.com/cjgray24/eye_spy\" rel=\"nofollow\">GitHub</a>.</p>\n<p>When reporting a bug, please include:</p>\n<ul>\n<li>Your Luanti version (<code>minetest --version</code>)</li>\n<li>Which game or modpack you are using</li>\n<li>Clear steps to reproduce the issue</li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Code</strong>: <a href=\"LICENSE.txt\" rel=\"nofollow\">LGPL v2.1</a></li>\n<li><strong>Textures, Models, Sounds</strong>: <a href=\"LICENSE.txt\" rel=\"nofollow\">CC-BY-SA 4.0</a></li>\n</ul>\n<h2 id=\"credits\">Credits <a class=\"header-anchor\" href=\"#credits\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Created and maintained by <a href=\"https://content.luanti.org/users/cjgray24/\" rel=\"nofollow\">cjgray24</a>.</p>\n","date_published":"2026-03-28T16:22:29Z","id":"https://content.luanti.org/packages/cjgray24/eye_spy/","image":"https://content.luanti.org/thumbnails/4/63bfb45a90.png","language":"en","summary":"Lets you see information about the node/entity/item you are looking at.","tags":["new_package"],"title":"New: Eye Spy","url":"https://content.luanti.org/packages/cjgray24/eye_spy/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>This mod introduces the Corruption Biome from Terraria to your Minetest Game world.</p>\n<p>This mod adds 5 Mobs and Boss which drops the nessecary materials required to create this biomes set of tools.</p>\n<p>This mod is designed to be mutually exclusive to TerraContent Crimson, when you create your world, you chose which one you would like to have using the modslist, but you are always welcome to use both at once. :)</p>\n","date_published":"2026-03-28T16:21:56Z","id":"https://content.luanti.org/packages/AirplaneMan/corruptionmt/","image":"https://content.luanti.org/thumbnails/4/116ba08c3d.png","language":"en","summary":"Adds the Corruption","tags":["new_package"],"title":"New: TerraContent Corruption","url":"https://content.luanti.org/packages/AirplaneMan/corruptionmt/"},{"author":{"avatar":"https://content.luanti.org/uploads/5396dad8a9.png","name":"Mathias","url":"https://content.luanti.org/users/Mathias/"},"content_html":"<p>Classic mese found from earlier versions of Minetest.  Go on mining expeditions to find these in caves and craft mese pickaxes, or make decorative builds.</p>\n","date_published":"2026-03-28T16:21:45Z","id":"https://content.luanti.org/packages/Mathias/classicmese/","image":"https://content.luanti.org/thumbnails/4/ca64e1ab97.png","language":"en","summary":"Classic version of mese used to craft or find during mining expeditions.","tags":["new_package"],"title":"New: Classic Mese","url":"https://content.luanti.org/packages/Mathias/classicmese/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/0c123e92419ed29a7607dce547226116?s=64&d=retro&r=g","name":"Cashia","url":"https://content.luanti.org/users/Nexarith/"},"content_html":"<h1 id=\"multi-spawnpoint-mod-for-minetest\">Multi-Spawnpoint Mod for Minetest <a class=\"header-anchor\" href=\"#multi-spawnpoint-mod-for-minetest\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A simple admin-friendly mod to manage <strong>multiple spawnpoints</strong> in Minetest.<br>\nSupports random spawns for players on join/respawn, with easy commands to add, remove, and teleport to spawnpoints.</p>\n<hr>\n<h2 id=\"features\">Features: <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Multiple spawnpoints</strong> saved permanently (survive server restarts)</li>\n<li><strong>Random teleport</strong> for players on join or respawn</li>\n<li><strong>Admin commands</strong> to manage spawnpoints:\n<ul>\n<li><code>/addspawn</code> \u2014 Add a spawnpoint at your current position</li>\n<li><code>/removespawn</code> \u2014 Remove the nearest spawnpoint to your location</li>\n<li><code>/listspawns</code> \u2014  See all spawnpoints with their positions</li>\n</ul>\n</li>\n<li><code>/spawn</code> \u2014 Teleport to a random spawnpoint (available for all players)</li>\n</ul>\n<hr>\n<h2 id=\"installation\">Installation: <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Place the <code>multispawn</code> folder in your <code>mods/</code> directory.</li>\n<li>Enable the mod in your <code>world.mt</code> file:load_mod_multispawn = true</li>\n<li>Restart the server.</li>\n</ol>\n<hr>\n<h2 id=\"commands\">Commands: <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p><strong>Admin commands</strong> (require server privilege)</p>\n<ul>\n<li><code>/addspawn</code> \u2014 Adds a spawnpoint where you are standing</li>\n<li><code>/removespawn</code> \u2014 Removes the nearest spawnpoint to you</li>\n<li><code>/listspawns</code> \u2014 Lists all spawnpoints (optional, for admin reference)</li>\n</ul>\n<p><strong>Player command</strong></p>\n<ul>\n<li><code>/spawn</code> \u2014 Teleports to a random spawnpoint</li>\n</ul>\n<hr>\n<h2 id=\"notes\">Notes: <a class=\"header-anchor\" href=\"#notes\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Spawnpoints are saved permanently using Minetest\u2019s mod storage.</li>\n<li><code>/spawn</code> works for all players, but admins have full control over spawnpoints.</li>\n<li><code>/removespawn</code> removes the closest spawnpoint, so be careful if multiple spawns are very close together.</li>\n<li>This mod does not include combat restrictions; teleporting is always allowed.</li>\n</ul>\n<hr>\n<h2 id=\"customization\">Customization: <a class=\"header-anchor\" href=\"#customization\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>You can change the number of spawnpoints or teleport behavior by editing the <code>init.lua</code> file.</li>\n<li>Future upgrades could include:</li>\n<li>Spawn previews (particles showing spawnpoints)</li>\n<li>ID-based remove system</li>\n<li>Team-based spawns or spawn zones</li>\n</ul>\n<hr>\n<h2 id=\"license\">License: <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>MIT license\nFree to use and modify. Please give credit if you share publicly.</p>\n","date_published":"2026-03-28T16:17:37Z","id":"https://content.luanti.org/packages/Nexarith/multispawn/","image":"https://content.luanti.org/thumbnails/4/a39c6b622b.png","language":"en","summary":"A simple multi-spawnpoint system for admins and players.","tags":["new_package"],"title":"New: Multispawn","url":"https://content.luanti.org/packages/Nexarith/multispawn/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/53ad2d771c9449ca8a41ab67fc9ee996?s=64&d=retro&r=g","name":"Zeralyth","url":"https://content.luanti.org/users/Michela/"},"content_html":"<p>Adds carrying players around.</p>\n","date_published":"2026-03-28T16:14:18Z","id":"https://content.luanti.org/packages/Michela/carry/","image":"https://content.luanti.org/thumbnails/4/b5d553de9f.png","language":"en","summary":"Adds carrying players around.","tags":["new_package"],"title":"New: Carrying","url":"https://content.luanti.org/packages/Michela/carry/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/f9784d167754b10a5c2d9eae4dabb4c1?s=64&d=retro&r=g","name":"michi16bit","url":"https://content.luanti.org/users/m16b/"},"content_html":"<p>Make the progress bar in Mystic Stones style.</p>\n<p>Why I have do this?<br>\nInitially I wanted to have the mod do it directly, but after noticing that it didn't work I decided to create this texture pack.</p>\n","date_published":"2026-03-28T16:13:37Z","id":"https://content.luanti.org/packages/m16b/m16b_mystic_stones_texture/","image":"https://content.luanti.org/thumbnails/4/6933376ce3.png","language":"en","summary":"Make the progress bar in Mystic Stones style.","tags":["new_package"],"title":"New: Mystic Stones Progress Bar","url":"https://content.luanti.org/packages/m16b/m16b_mystic_stones_texture/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/446119810cec446be3a0b46976d797d4?s=64&d=retro&r=g","name":"CrazyladMT","url":"https://content.luanti.org/users/CrazyladMT/"},"content_html":"<h1 id=\"server-rules\">Server Rules <a class=\"header-anchor\" href=\"#server-rules\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>This mod adds a nice rules interface that is displayed to players, with several key features including a split-screen view to edit the rules in-game.</p>\n<h2 id=\"features\">Features: <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Supports hypertext formatting</li>\n<li>Rules can be modified using <code>/set_rules</code></li>\n<li>Split-screen GUI to set the rules allows previewing the formatted hypertext</li>\n<li>Rules are saved to <code>rules.txt</code> in the worldpath</li>\n<li>Players must agree to the rules when they join for the first time to gain interact</li>\n</ul>\n<h2 id=\"commands\">Commands: <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/rules</code> shows the rules.</li>\n<li><code>/set_rules</code> edit the rules. (requires <code>server</code> privilege)</li>\n</ul>\n<h2 id=\"using-hypertext\">Using hypertext <a class=\"header-anchor\" href=\"#using-hypertext\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>The rules support hypertext formatting. Take a look at <a href=\"https://api.luanti.org/formspec/#markup-language\" rel=\"nofollow\">https://api.luanti.org/formspec/#markup-language</a> for more info on how to use hypertext.</p>\n<p><strong>Note: Hypertext is only supported for &gt;5.2.0 clients.</strong></p>\n<p>Basic usage:</p>\n<ul>\n<li><code>&lt;b&gt;Bold text&lt;/b&gt;</code></li>\n<li><code>&lt;i&gt;Italics&lt;/i&gt;</code></li>\n<li><code>&lt;u&gt;Underlined text&lt;/u&gt;</code></li>\n<li><code>&lt;center&gt;Centered text&lt;/center&gt;</code></li>\n<li><code>&lt;style color=#ff0000&gt;This text will be red&lt;/style&gt;</code></li>\n<li><code>&lt;style size=20&gt;Bigger text&lt;/style&gt;</code></li>\n<li><code>&lt;style font=mono size=20&gt;Bigger text with mono font&lt;/style&gt;</code></li>\n</ul>\n<h2 id=\"licenses\">Licenses <a class=\"header-anchor\" href=\"#licenses\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Source code is licensed under the MIT license.</p>\n","date_published":"2026-03-27T00:22:57Z","id":"https://content.luanti.org/packages/CrazyladMT/server_rules/","image":"https://content.luanti.org/thumbnails/4/2103189719.png","language":"en","summary":"Adds a rules interface.","tags":["new_package"],"title":"New: Server Rules","url":"https://content.luanti.org/packages/CrazyladMT/server_rules/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"betaclonia-fork-of-clonecraftlibre\">Betaclonia (fork of 'clonecraftlibre') <a class=\"header-anchor\" href=\"#betaclonia-fork-of-clonecraftlibre\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>(Yes, this is a fork on top of a fork on top of 2 to 3 other forks... Lots of forks....)</p>\n<p>Betaclonia is a heavily customized Mineclonia fork focused on Minecraft b1.7.3 style. This project intentionally removes or rewires large chunks of post-Beta gameplay and content.</p>\n<p>Fork base: Mineclonia <code>0.109.3</code></p>\n<h2 id=\"project-direction\">Project Direction <a class=\"header-anchor\" href=\"#project-direction\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This fork is <strong>not</strong> trying to track modern Minecraft parity.\nIt is being shaped into a Beta-flavored experience with:</p>\n<ul>\n<li>simpler progression</li>\n<li>aggressive content pruning</li>\n<li>flatter / less extreme terrain profile</li>\n<li>dungeon-first loot progression for selected items</li>\n<li>fewer high-overhead generation systems</li>\n<li>food stack size is forced to <code>1</code></li>\n<li>golden apple crafting is removed</li>\n</ul>\n<h3 id=\"combat-durability-and-armor\">Combat, durability and armor <a class=\"header-anchor\" href=\"#combat-durability-and-armor\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>you can enable sprinting and it has a stamina bar (<a href=\"https://content.luanti.org/packages/drkwv/minetest_wadsprint/\" rel=\"nofollow\">texture credit</a>)</li>\n<li>armor HUD uses a classic 10-icon / 20-point bar and updates from armor state</li>\n<li>armor points are durability-weighted by remaining condition</li>\n<li>armor effects :\n<ul>\n<li>leather: movement speed bonus</li>\n<li>gold: reduced fall damage</li>\n<li>copper: reduced fire damage</li>\n<li>chainmail: extra protection</li>\n</ul>\n</li>\n<li>weapon durability is consumed on:\n<ul>\n<li>block break flows (existing logic)</li>\n<li>mob hits</li>\n<li>player hits</li>\n</ul>\n</li>\n</ul>\n<p>special tool effects:</p>\n<ul>\n<li>copper sword: ignites target</li>\n<li>golden pickaxe: silk touch</li>\n<li>copper shovel: smeltery</li>\n</ul>\n<h3 id=\"drops\">drops <a class=\"header-anchor\" href=\"#drops\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>zombie drops 1 feather</li>\n<li>chicken drops 1 feather</li>\n<li>zombified piglin is active in Nether and drops a feather</li>\n<li>pig drops are set to <code>0..2</code> raw meat</li>\n<li>sheep drop wool only</li>\n<li>rabbit drops rabbit hide</li>\n</ul>\n<p>Overworld dungeons include curated Beta-style loot additions such as:</p>\n<ul>\n<li>apples</li>\n<li>very rare golden apples</li>\n<li>melon/pumpkin seeds</li>\n<li>potato items</li>\n<li>music discs</li>\n</ul>\n<p>Nether dungeon path:</p>\n<ul>\n<li>nether-brick themed dungeon internals</li>\n<li>wither skeleton spawners</li>\n<li>nether wart loot</li>\n<li>rare nether music discs including pigstep</li>\n</ul>\n<h3 id=\"reintroduced-curated-content\">Reintroduced curated content <a class=\"header-anchor\" href=\"#reintroduced-curated-content\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>re-adds selected non-Beta content intentionally where it improves progression variety:</p>\n<ul>\n<li>infdev pyramids</li>\n<li>beta 1.8.1 empty villages</li>\n<li>netherite tools</li>\n<li>copper ore, raw copper, ingots</li>\n<li>copper tools</li>\n<li>copper armor</li>\n<li>cherry/pale wood sets present as curated content</li>\n</ul>\n<h2 id=\"credits-and-legal\">Credits and Legal <a class=\"header-anchor\" href=\"#credits-and-legal\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>See:</p>\n<ul>\n<li><code>CREDITS.md</code></li>\n<li><code>LEGAL.md</code></li>\n<li><code>LICENSE.txt</code></li>\n<li><code>API.md</code></li>\n</ul>\n","date_published":"2026-03-25T22:34:31Z","id":"https://content.luanti.org/packages/bookgirlxoxo/betaclonia/","image":"https://content.luanti.org/thumbnails/4/73d666db5c.png","language":"en","summary":"Mineclonia but it's gameplay is focused and inspired on beta versions of Minecraft.","tags":["new_package"],"title":"New: Betaclonia","url":"https://content.luanti.org/packages/bookgirlxoxo/betaclonia/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"register_timer\">register_timer <a class=\"header-anchor\" href=\"#register_timer\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><strong>PERSISTENT</strong> timers for Luanti mods.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">register_timer</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">get_timer</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">dofile</span><span class=\"p\">(</span><span class=\"nv\">core</span><span class=\"p\">.</span><span class=\"nf\">get_modpath</span><span class=\"p\">(</span><span class=\"s1\">&#39;register_timer&#39;</span><span class=\"p\">)..</span><span class=\"s1\">&#39;/init.lua&#39;</span><span class=\"p\">)</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">returns_the_timer</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">register_timer</span><span class=\"p\">({</span>\n<span class=\"w\">  </span><span class=\"nv\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s1\">&#39;grow_tree&#39;</span><span class=\"p\">,</span>\n<span class=\"w\">  </span><span class=\"nv\">action</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"p\">(</span><span class=\"nv\">job</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">pos</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">param2</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"nf\">grow_tree</span><span class=\"p\">(</span><span class=\"nv\">pos</span><span class=\"p\">)</span>\n<span class=\"w\">  </span><span class=\"kr\">end</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">grow_tree_timer</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">get_timer</span><span class=\"p\">(</span><span class=\"s1\">&#39;grow_tree&#39;</span><span class=\"p\">)</span>\n\n<span class=\"nb\">assert</span><span class=\"p\">(</span><span class=\"nv\">grow_tree_timer</span><span class=\"w\"> </span><span class=\"o\">==</span><span class=\"w\"> </span><span class=\"nv\">returns_the_timer</span><span class=\"p\">)</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">cancel</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">grow_tree_timer</span><span class=\"p\">(</span><span class=\"mi\">10</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"nv\">x</span><span class=\"p\">,</span><span class=\"nv\">y</span><span class=\"p\">,</span><span class=\"nv\">z</span><span class=\"p\">},</span><span class=\"w\"> </span><span class=\"nb\">math.random</span><span class=\"p\">(</span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"mi\">3</span><span class=\"p\">))</span>\n\n<span class=\"nf\">cancel</span><span class=\"p\">()</span>\n</pre></div>\n<p>Timers are stored in the mod storage. They are restarted when all mods are loaded.</p>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\u00f0\u009f\u0092\u0096 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-03-25T22:32:33Z","id":"https://content.luanti.org/packages/Bas080/register_timer/","image":"https://content.luanti.org/thumbnails/4/eb23f2fb26.png","language":"en","summary":"Persistent timers for Luanti mods.","tags":["new_package"],"title":"New: register_timer","url":"https://content.luanti.org/packages/Bas080/register_timer/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Note: I am not vegan or vegetarian.</p>\n<p>Adds plant based leather alternative as of right now.</p>\n<p>Oh, yes and some lovely green plant based nodes with nice textures.</p>\n<p>More coming soon &lt;3</p>\n","date_published":"2026-03-25T22:31:40Z","id":"https://content.luanti.org/packages/AirplaneMan/vegan_misc/","image":"https://content.luanti.org/thumbnails/4/97d88e3bd4.png","language":"en","summary":"Adds vegan alternatives for there are no mob drops avialable","tags":["new_package"],"title":"New: Vegan Misc.","url":"https://content.luanti.org/packages/AirplaneMan/vegan_misc/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d7e23bdeb07b1eca11e7a2955b7d09e9?s=64&d=retro&r=g","name":"bugbug11","url":"https://content.luanti.org/users/bugbug11/"},"content_html":"<p>Ever had that annoying experience where players have to ask you to grant and revoke them certain privileges?\n<strong>You're in luck!</strong> Toggle privs allows players to enable and disable privileges granted to them, minimizing the need to ask the admins to grant and revoke their privileges.</p>\n<p>Currently does not support builtin engine functionality, like interact; will add in the next update.</p>\n<p>Adds the following commands:</p>\n<ul>\n<li>/toggle &lt;priv&gt;: toggles privilege state</li>\n<li>/disable &lt;priv&gt;: disables privilege</li>\n<li>/enable &lt;priv&gt;: enables privilege</li>\n</ul>\n","date_published":"2026-03-25T22:30:48Z","id":"https://content.luanti.org/packages/bugbug11/toggle_privs/","image":"https://content.luanti.org/thumbnails/4/f3fec3d2e0.png","language":"en","summary":"Allows players to enable and disable privileges granted to them","tags":["new_package"],"title":"New: Toggle Privs","url":"https://content.luanti.org/packages/bugbug11/toggle_privs/"},{"author":{"avatar":"https://content.luanti.org/uploads/a42f4b0215.png","name":"tacotexmex","url":"https://content.luanti.org/users/texmex/"},"content_html":"<h1 id=\"crafty-fonts\">Crafty fonts <a class=\"header-anchor\" href=\"#crafty-fonts\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Familiar pixel fonts for any Luanti game thanks to macsMinecraft by macimas and Monocraft by Idrees.</p>\n<h2 id=\"font-variants\">Font variants <a class=\"header-anchor\" href=\"#font-variants\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Regular</li>\n<li>Bold</li>\n<li>Italic</li>\n<li>Bold italic</li>\n<li>Mono-spaced</li>\n<li>Mono-spaced bold</li>\n<li>Mono-spaced italic</li>\n<li>Mono-spaced bold italic</li>\n</ul>\n<h2 id=\"how-to-use\">How to use <a class=\"header-anchor\" href=\"#how-to-use\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Install and enable like any other mod.</p>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>SIL Open Font License, Version 1.1</p>\n","date_published":"2026-03-25T22:26:54Z","id":"https://content.luanti.org/packages/texmex/crafty_fonts/","image":"https://content.luanti.org/thumbnails/4/8fa5248f9b.png","language":"en","summary":"Familiar pixel fonts for any Luanti game","tags":["new_package"],"title":"New: Crafty Fonts","url":"https://content.luanti.org/packages/texmex/crafty_fonts/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"gift-wrapped\">Gift Wrapped <a class=\"header-anchor\" href=\"#gift-wrapped\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Wrap nodes in gift wrapping and place a ribbon ontop to show you really care.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Recipes and nodes for gift wrap in 4 different colors.</li>\n<li>Red ribbon recipe and node</li>\n<li>Wrapping will wrap the node you used it on.</li>\n<li>Unwrapping will unwrap the node.</li>\n<li>Shows heart <strong>particles</strong> when unwrapped.</li>\n</ul>\n<h2 id=\"contribute\">Contribute <a class=\"header-anchor\" href=\"#contribute\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Gift wrapped is waiting for you to contribute to free software. Have a look at the <a href=\"https://github.com/bas080/gift_wrapped/issues\" rel=\"nofollow\">open issues</a>.</p>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\u00f0\u009f\u0092\u0096 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-03-25T22:26:17Z","id":"https://content.luanti.org/packages/Bas080/gift_wrapped/","image":"https://content.luanti.org/thumbnails/4/ca9f7ab29d.png","language":"en","summary":"Wrap nodes in gift wrapping and place a ribbon ontop to show you really care.","tags":["new_package"],"title":"New: Gift Wrapped","url":"https://content.luanti.org/packages/Bas080/gift_wrapped/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"breasy\">Breasy <a class=\"header-anchor\" href=\"#breasy\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A mod that will tell you what the wind is like at a position.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">breasy</span><span class=\"p\">.</span><span class=\"nf\">get_wind</span><span class=\"p\">(</span><span class=\"nv\">pos</span><span class=\"p\">)</span>\n\n<span class=\"nv\">breasy</span><span class=\"p\">.</span><span class=\"nf\">register_biome</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;biome_name&gt;&#39;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"c1\">-- Does a multiply</span>\n<span class=\"w\">  </span><span class=\"nv\">factor</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mf\">0.5</span><span class=\"w\"> </span><span class=\"c1\">-- cut the wind in half</span>\n<span class=\"p\">})</span>\n</pre></div>\n<p>Currently the wind is determined by Perlin noise. Wind is 0 below y &lt; 20.</p>\n<p>If adopted it can create a more consistent environment where all particles move with the wind.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Provides a <strong>location-based wind system</strong> with direction and speed.</li>\n<li>Wind <strong>slowly rotates</strong> over time, completing configurable oscillations (e.g., ~2 switches per in\u00e2\u0080\u0091game day).</li>\n<li><strong>Perlin noise</strong> introduces minor natural variation for both direction and speed.</li>\n<li><strong>Biome influence</strong>: modders can register biome-specific factors (<code>breasy.register_biome</code>) to scale local wind speed.</li>\n<li><strong>Altitude attenuation</strong>: wind weakens below sea level, gradually vanishing toward <code>MIN_Y</code>.</li>\n<li>Designed for <strong>minimal recalculation</strong>: noise objects are reused and speed/direction are stable per location.</li>\n</ul>\n<p>This makes it easy for other mods to query wind vectors at any position and integrate effects like particle motion, tree sway, or environmental interactions.</p>\n<h2 id=\"usage\">Usage <a class=\"header-anchor\" href=\"#usage\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"using-wind-for-particles\">Using wind for particles <a class=\"header-anchor\" href=\"#using-wind-for-particles\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">add_particle</span><span class=\"p\">({</span>\n<span class=\"w\">    </span><span class=\"nv\">pos</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">pos</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">velocity</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">breasy</span><span class=\"p\">.</span><span class=\"nf\">get_wind</span><span class=\"p\">(</span><span class=\"nv\">pos</span><span class=\"p\">),</span>\n<span class=\"w\">    </span><span class=\"nv\">acc</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">gravity</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">expirationtime</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">size</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mf\">0.1</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n</pre></div>\n<h3 id=\"read-magnitude-and-direction\">Read magnitude and direction <a class=\"header-anchor\" href=\"#read-magnitude-and-direction\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">wind</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">breasy</span><span class=\"p\">.</span><span class=\"nf\">get_wind</span><span class=\"p\">(</span><span class=\"nv\">pos</span><span class=\"p\">)</span>\n\n<span class=\"c1\">-- magnitude/speed of wind</span>\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">speed</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">vector</span><span class=\"p\">.</span><span class=\"nf\">length</span><span class=\"p\">(</span><span class=\"nv\">wind</span><span class=\"p\">)</span>\n\n<span class=\"c1\">-- normalize to get pure direction</span>\n<span class=\"nv\">vector</span><span class=\"p\">.</span><span class=\"nf\">normalize</span><span class=\"p\">(</span><span class=\"nv\">wind_vec</span><span class=\"p\">)</span>\n</pre></div>\n<h2 id=\"debugging\">Debugging <a class=\"header-anchor\" href=\"#debugging\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>You can toggle the wind particle effects on and off in-game using the chat command:</p>\n<div class=\"highlight\"><pre><span></span>/wind_toggle\n</pre></div>\n<p>Useful when integrating wind into your mod.</p>\n<h2 id=\"donate\">Donate <a class=\"header-anchor\" href=\"#donate\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If you enjoy my work, you can support me here: <a href=\"https://liberapay.com/bas080\" rel=\"nofollow\">\u00f0\u009f\u0092\u0096 Donate</a></p>\n<p>Thank you for helping me keep modding and sharing fun with everyone!</p>\n","date_published":"2026-03-24T22:32:32Z","id":"https://content.luanti.org/packages/Bas080/breasy/","image":"https://content.luanti.org/thumbnails/4/bbbf260a8f.png","language":"en","summary":"A mod that will tell you what the wind is like at a position.","tags":["new_package"],"title":"New: Breasy","url":"https://content.luanti.org/packages/Bas080/breasy/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>This mod introduces the Crimson Biome from Terraria to your Minetest Game world.</p>\n<p>This mod adds 5 Mobs and Boss which drops the nessecary materials required to create this biomes set of tools.</p>\n<p>This mod is designed to be mutually exclusive to TerraContent Corruption, when you create your world, you chose which one you would like to have using the modslist, but you are always welcome to use both at once. :)</p>\n","date_published":"2026-03-23T03:50:57Z","id":"https://content.luanti.org/packages/AirplaneMan/crimsonmt/","image":"https://content.luanti.org/thumbnails/4/1570ba0b92.png","language":"en","summary":"Introduces the Crimson to your worlds.","tags":["new_package"],"title":"New: TerraContent Crimson","url":"https://content.luanti.org/packages/AirplaneMan/crimsonmt/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"rtp_wild\">rtp_wild <a class=\"header-anchor\" href=\"#rtp_wild\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Random teleport mod for ;uanti/minetest.</p>\n<p>Provides <code>/rtp</code>-style commands that teleport players to a safe random location inside configured coordinate and height bounds.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Random teleport within configured horizontal coordinate range.</li>\n<li>Safety checks before teleporting:\n<ul>\n<li>solid ground</li>\n<li>open space for player body</li>\n<li>avoids liquids and harmful nodes</li>\n</ul>\n</li>\n<li>Cooldown support.</li>\n<li>Unlimited attempts option.</li>\n</ul>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/rtp</code></li>\n<li><code>/wild</code></li>\n<li><code>/wildtp</code></li>\n<li><code>/randomtp</code></li>\n</ul>\n<h2 id=\"privileges\">Privileges <a class=\"header-anchor\" href=\"#privileges\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>rtp_wild.use</code>: required to use RTP commands.</li>\n<li><code>rtp_wild.bypass</code>: bypasses cooldown.</li>\n</ul>\n<h2 id=\"grant-examples\">Grant examples <a class=\"header-anchor\" href=\"#grant-examples\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span>/grant &lt;player&gt; rtp_wild.use\n/grant &lt;player&gt; rtp_wild.bypass\n</pre></div>\n","date_published":"2026-03-22T23:14:39Z","id":"https://content.luanti.org/packages/bookgirlxoxo/rtp_wild/","image":"https://content.luanti.org/thumbnails/4/1cf84ca270.png","language":"en","summary":"Random teleport commands (/rtp and /wild)","tags":["new_package"],"title":"New: rtp","url":"https://content.luanti.org/packages/bookgirlxoxo/rtp_wild/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Simple Content Mod designed to be used as a base for mods seeking to introduce Terraria like Content to Minetest Game.</p>\n<p>Current Features in this Base Mod:\nLiving Trees\nThe Sparkle\nCockroaches, Snails, Slimes, Flying Eyes, etc.\nMud\nTerraria Like Trees That Spawn in Groves\nHeart Crystals (Currently Useless)\nSeveral Entity/Sound Prefabs\nFire Bricks\nMisc. Gemstones\nSakura and Willow Trees\nColourblind Friendly Ore Texture Overrides</p>\n<p>This project is still heavily maintained.</p>\n","date_published":"2026-03-22T23:13:43Z","id":"https://content.luanti.org/packages/AirplaneMan/terralibmt/","image":"https://content.luanti.org/thumbnails/4/0bb325b570.png","language":"en","summary":"Preferably use with it's dependents! Base Content/Library for my Minetest Game mods based on a certain 2D Sandbox Game","tags":["new_package"],"title":"New: TerraContent Base Library","url":"https://content.luanti.org/packages/AirplaneMan/terralibmt/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/86c593af24d9a6debd99c58ccfc0ed31?s=64&d=retro&r=g","name":"elnoonlini","url":"https://content.luanti.org/users/elnoonlini/"},"content_html":"<p>Hammers Redo</p>\n<p>Based on hammermod by cultom\nModified and expanded by elnoonlini</p>\n<p>Features:</p>\n<ul>\n<li>Multiple hammer tiers</li>\n<li>3x3 digging based on player direction</li>\n</ul>\n<p>Textures:\nTextures are based on Hammermod\nAuthor: cultom\nLicense: Apache2.0</p>\n<p>Modified by: elnoonlini</p>\n","date_published":"2026-03-22T23:12:48Z","id":"https://content.luanti.org/packages/elnoonlini/hammers_redo/","image":"https://content.luanti.org/thumbnails/4/5d0a44af01.png","language":"en","summary":"Reworked hammer mod with multiple tiers and 3x3 digging (code by chargpt)","tags":["new_package"],"title":"New: Hammers Redo","url":"https://content.luanti.org/packages/elnoonlini/hammers_redo/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"chatcolor\">chatcolor <a class=\"header-anchor\" href=\"#chatcolor\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Chat color helper for Luanti/Minetest chat with:</p>\n<ul>\n<li>Minecraft/Bukkit legacy codes (<code>&amp;0</code>..<code>&amp;f</code>, <code>&amp;r</code>)</li>\n<li>Default per-player chat color styles</li>\n<li>HEX and gradient defaults</li>\n<li>Permission-based color access</li>\n</ul>\n<p>This mod depends on <code>color_lib</code>.</p>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/chatcolor &lt;color|&amp;code|#HEX [#HEX]|off&gt;</code></li>\n<li><code>/chatcolor gui</code></li>\n</ul>\n<p>Examples:</p>\n<ul>\n<li><code>/chatcolor &amp;f</code></li>\n<li><code>/chatcolor white</code></li>\n<li><code>/chatcolor purple</code> (maps to <code>&amp;5</code>)</li>\n<li><code>/chatcolor #22EC7A</code></li>\n<li><code>/chatcolor #22EC7A #0448D1</code></li>\n<li><code>/chatcolor off</code></li>\n</ul>\n<h2 id=\"privileges\">Privileges <a class=\"header-anchor\" href=\"#privileges\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>chatcolor.use</code>\n<ul>\n<li>Allows users to type legacy Bukkit color tokens directly in chat messages.</li>\n</ul>\n</li>\n<li><code>chatcolor.color.*</code>\n<ul>\n<li>Allows all <code>/chatcolor</code> colors, HEX, gradients, and <code>/chatcolor gui</code>.</li>\n</ul>\n</li>\n<li><code>chatcolor.color.&lt;name&gt;</code>\n<ul>\n<li>Allows specific legacy default colors (for example <code>chatcolor.color.white</code>, <code>chatcolor.color.purple</code>).</li>\n</ul>\n</li>\n</ul>\n<p>Canonical color names:</p>\n<ul>\n<li><code>black</code>, <code>dark_blue</code>, <code>dark_green</code>, <code>dark_aqua</code>, <code>dark_red</code>, <code>dark_purple</code>, <code>gold</code>, <code>gray</code>, <code>dark_gray</code>, <code>blue</code>, <code>green</code>, <code>aqua</code>, <code>red</code>, <code>light_purple</code>, <code>yellow</code>, <code>white</code>, <code>reset</code></li>\n</ul>\n<h2 id=\"gui\">GUI <a class=\"header-anchor\" href=\"#gui\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p><code>/chatcolor gui</code> opens a helper UI for legacy, HEX, and gradient selection.</p>\n","date_published":"2026-03-22T23:11:06Z","id":"https://content.luanti.org/packages/bookgirlxoxo/chatcolor/","image":"https://content.luanti.org/thumbnails/4/d7a78a727a.png","language":"en","summary":"hex and bukkit-style chat colors with per-color privileges","tags":["new_package"],"title":"New: chatcolor","url":"https://content.luanti.org/packages/bookgirlxoxo/chatcolor/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d909e1a6298ab966a665253b4e79f1eb?s=64&d=retro&r=g","name":"LLL4001","url":"https://content.luanti.org/users/LLL4001/"},"content_html":"<p>New_flowers by LLL4001</p>\n<p>This mod when is finished should add more flowers and herbs to the game, some with unique funcionality and new ways to use them (for example to craft healing stuff and similar) for now it adds these things:</p>\n<p>3 different stages of dandelions (plus young version)\n4 yarrows (plus young version)\n2 herbs\n1 daisies\n2 knifes (stone, iron)</p>\n<p>Changelog:</p>\n","date_published":"2026-03-22T23:10:54Z","id":"https://content.luanti.org/packages/LLL4001/new_flowers/","image":"https://content.luanti.org/thumbnails/4/5ed0f12e7e.png","language":"en","summary":"This brings more flowers to the base game.","tags":["new_package"],"title":"New: New Flowers","url":"https://content.luanti.org/packages/LLL4001/new_flowers/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/52fcc0b4ca60a8d5df8e008686b29b3c?s=64&d=retro&r=g","name":"astro","url":"https://content.luanti.org/users/astro/"},"content_html":"<h1 id=\"aimtrainer\">Aimtrainer <a class=\"header-anchor\" href=\"#aimtrainer\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Aimtrainer is a game to practise your aim.</p>\n<h2 id=\"how-to-play\">How to play: <a class=\"header-anchor\" href=\"#how-to-play\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Select a gun</li>\n<li>Press play</li>\n<li>You then have 15 seconds to make the best score</li>\n</ol>\n<ul>\n<li>Score is based on the number of targets killed, and your accuracy</li>\n<li>Use <code>/s</code> to open the main menu if you closed it</li>\n</ul>\n<h2 id=\"currently-supported-gameguns\">Currently supported game/guns: <a class=\"header-anchor\" href=\"#currently-supported-gameguns\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>CTF:\n<ul>\n<li>Rifle</li>\n<li>Pistol</li>\n<li>Assault rifle</li>\n<li>Sniper Magnum</li>\n<li>SMG</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"todosroadmap\">Todos/roadmap <a class=\"header-anchor\" href=\"#todosroadmap\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This game is currently WIP. Things I planned on implementing:</p>\n<ul>\n<li>More training methods, eg. moving targets\n<ul>\n<li>Improve current training methods: eg. adapt target spawning distance for each gun (longer distances for magnum, etc)</li>\n</ul>\n</li>\n<li>Ability to choose the training time (15s, 30s, etc)</li>\n<li>Support <a href=\"https://content.luanti.org/packages/Zughy/block_league/\" rel=\"nofollow\">block league</a> guns</li>\n</ul>\n","date_published":"2026-03-22T06:43:27Z","id":"https://content.luanti.org/packages/astro/aimtrainer/","image":"https://content.luanti.org/thumbnails/4/4a55e8cc0f.png","language":"en","summary":"A game to practise your aim","tags":["new_package"],"title":"New: aimtrainer","url":"https://content.luanti.org/packages/astro/aimtrainer/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/717cd55906c0a569946787a00100fab7?s=64&d=retro&r=g","name":"KPCOFGS","url":"https://content.luanti.org/users/KPCOFGS/"},"content_html":"<h1 id=\"tridents\">Tridents <a class=\"header-anchor\" href=\"#tridents\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Five elemental tridents for Luanti, each with unique combat effects and passive abilities.</p>\n<h2 id=\"tridents-1\">Tridents <a class=\"header-anchor\" href=\"#tridents-1\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"fire-trident\">Fire Trident <a class=\"header-anchor\" href=\"#fire-trident\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Ignites targets on hit (1 damage/sec for 5 seconds)</li>\n<li>+2 damage buff when wielded</li>\n<li><strong>Immunity to fire/lava damage</strong> while in inventory</li>\n<li>Dropped by <strong>Inferno Titan</strong> boss</li>\n</ul>\n<h3 id=\"lightning-trident\">Lightning Trident <a class=\"header-anchor\" href=\"#lightning-trident\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Strikes lightning on hit with thunder and sky flash</li>\n<li>Sets the ground on fire at the strike point</li>\n<li><strong>Immunity to lightning damage</strong> while in inventory</li>\n<li>Dropped by <strong>Storm Colossus</strong> boss</li>\n</ul>\n<h3 id=\"wither-trident\">Wither Trident <a class=\"header-anchor\" href=\"#wither-trident\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Applies wither effect that deals <strong>true damage</strong> (bypasses armor)</li>\n<li>2 damage every 0.5s for 4 seconds</li>\n<li>Fastest swing speed of all tridents</li>\n<li>Dropped by <strong>Void Reaper</strong> boss</li>\n</ul>\n<h3 id=\"support-trident\">Support Trident <a class=\"header-anchor\" href=\"#support-trident\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Heals you equal to damage dealt on each hit</li>\n<li>Right-click for full heal (30 second cooldown)</li>\n<li>Dropped by <strong>Life Warden</strong> boss</li>\n</ul>\n<h3 id=\"master-trident\">Master Trident <a class=\"header-anchor\" href=\"#master-trident\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>All powers combined: fire, lightning, wither, and lifesteal</li>\n<li>Right-click full heal with 30 second cooldown</li>\n<li>Fire and lightning immunity while in inventory</li>\n<li>Highest damage and durability</li>\n<li>Craft: all 4 tridents + diamond + mese block</li>\n</ul>\n<h2 id=\"stats\">Stats <a class=\"header-anchor\" href=\"#stats\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<table>\n<thead>\n<tr>\n<th>Trident</th>\n<th>Damage</th>\n<th>Speed</th>\n<th>Durability</th>\n<th>Light</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>Fire</td>\n<td>10</td>\n<td>0.9s</td>\n<td>250</td>\n<td>5</td>\n</tr>\n<tr>\n<td>Lightning</td>\n<td>10</td>\n<td>1.1s</td>\n<td>200</td>\n<td>7</td>\n</tr>\n<tr>\n<td>Wither</td>\n<td>9</td>\n<td>0.8s</td>\n<td>220</td>\n<td>2</td>\n</tr>\n<tr>\n<td>Support</td>\n<td>6</td>\n<td>1.0s</td>\n<td>300</td>\n<td>4</td>\n</tr>\n<tr>\n<td>Master</td>\n<td>12</td>\n<td>0.8s</td>\n<td>500</td>\n<td>10</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"how-to-obtain\">How to obtain <a class=\"header-anchor\" href=\"#how-to-obtain\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Fire, Lightning, Wither, and Support tridents are <strong>boss drops only</strong> \u2014 defeat bosses from the Infectious mod to earn them. The Master Trident is crafted by combining all four tridents with a diamond and mese block.</p>\n<h2 id=\"dependencies\">Dependencies <a class=\"header-anchor\" href=\"#dependencies\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>default</code> (Minetest Game)</li>\n<li><code>lightning</code> (by sofar)</li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Code: MIT</li>\n<li>Textures: CC BY-SA 4.0</li>\n</ul>\n","date_published":"2026-03-21T23:35:40Z","id":"https://content.luanti.org/packages/KPCOFGS/tridents/","image":"https://content.luanti.org/thumbnails/4/5e977759c8.png","language":"en","summary":"Elemental tridents: Fire, Lightning, Wither, Support, and the Master Trident that combines all powers.","tags":["new_package"],"title":"New: Tridents","url":"https://content.luanti.org/packages/KPCOFGS/tridents/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/717cd55906c0a569946787a00100fab7?s=64&d=retro&r=g","name":"KPCOFGS","url":"https://content.luanti.org/users/KPCOFGS/"},"content_html":"<h1 id=\"infectious\">Infectious <a class=\"header-anchor\" href=\"#infectious\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Apocalyptic zombie mod for Luanti. Aggressive zombies roam the night, infect animalia mobs on contact, and spread the horde. Includes bosses, brutes, and blood moon integration.</p>\n<h2 id=\"zombies\">Zombies <a class=\"header-anchor\" href=\"#zombies\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Humanoid zombie</strong> \u2014 dark, bloody player model. Fast, aggressive, attacks everything</li>\n<li><strong>17 zombified animals</strong> \u2014 every animalia mob has an infected variant with darkened textures and red eyes</li>\n<li><strong>Infection</strong> \u2014 30% chance on each hit to zombify the target mob</li>\n<li><strong>Night/dark spawning</strong> \u2014 spawn where light level is 7 or lower, in packs of 1-3</li>\n<li><strong>Sunlight immune</strong> \u2014 don't burn in daylight once spawned</li>\n<li><strong>Minecraft-style spawning</strong> \u2014 spawns around players, despawns at 120+ blocks</li>\n</ul>\n<h2 id=\"brute\">Brute <a class=\"header-anchor\" href=\"#brute\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>80 HP</strong>, 40% damage reduction, 12 damage with area sweep</li>\n<li>1.5x player-sized with steel armor and amber eyes</li>\n<li>Not zombie-tagged \u2014 zombies will attack it, it fights back</li>\n<li><strong>Can be infected</strong> \u2014 becomes an Infected Brute (120 HP, 16 damage, zombie speed, 60% armor, 95% during blood moon)</li>\n<li>Rare natural spawn (1 in 15 chance instead of zombie)</li>\n<li>Drops steel ingots, rare brute mace (1 in 10), diamonds</li>\n</ul>\n<h3 id=\"brute-mace-dropped-weapon\">Brute Mace (dropped weapon) <a class=\"header-anchor\" href=\"#brute-mace-dropped-weapon\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>10 damage, area damage on hit, 150 durability</li>\n</ul>\n<h2 id=\"bosses\">Bosses <a class=\"header-anchor\" href=\"#bosses\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Bosses drop elemental tridents. They spawn naturally (rare) at any light level, and announce their presence to players within 128 blocks.</p>\n<table>\n<thead>\n<tr>\n<th>Boss</th>\n<th>HP</th>\n<th>Damage</th>\n<th>Armor</th>\n<th>Size</th>\n<th>Speed</th>\n<th>Drop</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><strong>Inferno Titan</strong></td>\n<td>600</td>\n<td>21</td>\n<td>60%</td>\n<td>4x</td>\n<td>Very slow</td>\n<td>Fire Trident</td>\n</tr>\n<tr>\n<td><strong>Storm Colossus</strong></td>\n<td>540</td>\n<td>24</td>\n<td>27.5%</td>\n<td>4x</td>\n<td>Normal</td>\n<td>Lightning Trident</td>\n</tr>\n<tr>\n<td><strong>Void Reaper</strong></td>\n<td>200</td>\n<td>27</td>\n<td>None</td>\n<td>1x</td>\n<td>Very fast</td>\n<td>Wither Trident</td>\n</tr>\n<tr>\n<td><strong>Life Warden</strong></td>\n<td>750</td>\n<td>15</td>\n<td>32.5%</td>\n<td>4x</td>\n<td>Normal</td>\n<td>Support Trident</td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"inferno-titan\">Inferno Titan <a class=\"header-anchor\" href=\"#inferno-titan\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Obsidian and magma skin with glowing cracks and fire eyes</li>\n<li>4x player size, very slow (1.5 speed) but massive reach (7 blocks) and area damage (10 blocks)</li>\n<li><strong>Fire immune</strong> \u2014 burn DOT is always cleansed</li>\n<li><strong>Passive fire aura</strong> \u2014 damages all nearby entities on a timer with fire particles</li>\n<li><strong>4-phase enrage system</strong> as HP drops:</li>\n</ul>\n<table>\n<thead>\n<tr>\n<th>Phase</th>\n<th>HP %</th>\n<th>Armor</th>\n<th>Speed</th>\n<th>Damage</th>\n<th>Attack Speed</th>\n<th>Reach</th>\n<th>AOE</th>\n<th>Aura</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td>1</td>\n<td>100-76%</td>\n<td>60%</td>\n<td>1.5</td>\n<td>21</td>\n<td>1.2s</td>\n<td>7</td>\n<td>10</td>\n<td>5 dmg / 5 blocks / 4s</td>\n</tr>\n<tr>\n<td>2</td>\n<td>75-51%</td>\n<td>75%</td>\n<td>1.5</td>\n<td>21</td>\n<td>1.2s</td>\n<td>7</td>\n<td>10</td>\n<td>10 dmg / 10 blocks / 3s</td>\n</tr>\n<tr>\n<td>3</td>\n<td>50-26%</td>\n<td>85%</td>\n<td>3.0</td>\n<td>31</td>\n<td>0.8s</td>\n<td>10</td>\n<td>15</td>\n<td>15 dmg / 15 blocks / 2s</td>\n</tr>\n<tr>\n<td>4</td>\n<td>25-0%</td>\n<td>90%</td>\n<td>4.5</td>\n<td>47</td>\n<td>0.53s</td>\n<td>15</td>\n<td>20</td>\n<td>20 dmg / 20 blocks / 1s</td>\n</tr>\n</tbody>\n</table>\n<ul>\n<li><strong>Wither immune</strong> below 75% HP</li>\n<li>Attacks set targets on fire with burst particles</li>\n</ul>\n<h3 id=\"void-reaper\">Void Reaper <a class=\"header-anchor\" href=\"#void-reaper\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Player-sized, black body with purple energy veins and white glowing eyes</li>\n<li>Moves as fast as bloodmoon-buffed zombies, attacks every 0.4 seconds</li>\n<li><strong>Single target</strong> \u2014 no area damage, but applies <strong>stacking wither</strong></li>\n<li>Each hit adds 1 wither stack (max 10), each stack deals 2 true damage (bypasses armor)</li>\n<li>Higher stacks = faster tick rate (0.5s at 1 stack, 0.05s at 10 stacks)</li>\n<li>Stacks reset after 3 seconds of no hits</li>\n<li>Spawn rate doubled at night, tripled during blood moon</li>\n</ul>\n<h3 id=\"other-bosses\">Other Bosses <a class=\"header-anchor\" href=\"#other-bosses\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Area damage (radius scales with boss size)</li>\n<li>No knockback \u2014 they don't flinch</li>\n<li>Immune to infection</li>\n</ul>\n<h2 id=\"blood-moon-integration\">Blood Moon Integration <a class=\"header-anchor\" href=\"#blood-moon-integration\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>When used with the <strong>Blood Moon</strong> mod:</p>\n<ul>\n<li>Zombie damage and speed doubled</li>\n<li>Spawn frequency doubled, pack size doubled</li>\n<li>Infected Brute gets 95% damage reduction</li>\n<li>Void Reaper spawn rate tripled</li>\n</ul>\n<h2 id=\"spawn-eggs\">Spawn Eggs <a class=\"header-anchor\" href=\"#spawn-eggs\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<pre><code>/giveme infectious:spawn_egg\n/giveme infectious:brute_spawn_egg\n/giveme infectious:infected_brute_spawn_egg\n/giveme infectious:boss_fire_spawn_egg\n/giveme infectious:boss_lightning_spawn_egg\n/giveme infectious:boss_wither_spawn_egg\n/giveme infectious:boss_support_spawn_egg\n</code></pre><p>Creative mode players are ignored by zombies \u2014 useful for testing.</p>\n<h2 id=\"dependencies\">Dependencies <a class=\"header-anchor\" href=\"#dependencies\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>default</code> (Minetest Game)</li>\n<li><code>animalia</code> (animal mobs)</li>\n<li><code>creatura</code> (mob framework)</li>\n<li><code>tridents</code> (for boss drops)</li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Code: MIT</li>\n<li>Textures: CC BY-SA 4.0</li>\n</ul>\n","date_published":"2026-03-21T23:33:19Z","id":"https://content.luanti.org/packages/KPCOFGS/infectious/","image":"https://content.luanti.org/thumbnails/4/795278142d.png","language":"en","summary":"Aggressive apocalyptic zombies that infect all animalia mobs. Immune to sunlight, fast, and deadly.","tags":["new_package"],"title":"New: Infectious","url":"https://content.luanti.org/packages/KPCOFGS/infectious/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/72a08e311f4dad4bf8b48544cd6b5215?s=64&d=retro&r=g","name":"PlackiZZup\u0105","url":"https://content.luanti.org/users/BuszmoPL/"},"content_html":"<p>Currently adds the following essences:</p>\n<ol>\n<li>Baborium</li>\n<li>Etherium</li>\n<li>Nether</li>\n<li>Viridisium</li>\n</ol>\n","date_published":"2026-03-21T23:32:51Z","id":"https://content.luanti.org/packages/BuszmoPL/resource_crops_additions/","image":"https://content.luanti.org/thumbnails/4/ff85695302.png","language":"en","summary":"Extends Resource Crops with additional essences.","tags":["new_package"],"title":"New: Resource Crops Additions","url":"https://content.luanti.org/packages/BuszmoPL/resource_crops_additions/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Collect lobsters, cook potatos and carrots, make seafood boil, make lobster pickaxe with all tool groups.</p>\n","date_published":"2026-03-21T23:31:32Z","id":"https://content.luanti.org/packages/AirplaneMan/bestlobster/","image":"https://content.luanti.org/thumbnails/4/47545ccf95.png","language":"en","summary":"The best and only lobster content mod","tags":["new_package"],"title":"New: BestLobster","url":"https://content.luanti.org/packages/AirplaneMan/bestlobster/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Adds fantasy biomes</p>\n","date_published":"2026-03-21T23:30:10Z","id":"https://content.luanti.org/packages/AirplaneMan/fantasy_biomes/","image":"https://content.luanti.org/thumbnails/4/16a07e9135.png","language":"en","summary":"Fantastical Biomes for your worlds.","tags":["new_package"],"title":"New: Fantasy Biomes","url":"https://content.luanti.org/packages/AirplaneMan/fantasy_biomes/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Adds extremely bouncy and fun Mushrooms to Minetest</p>\n","date_published":"2026-03-21T23:29:51Z","id":"https://content.luanti.org/packages/AirplaneMan/bouncy_mushrooms/","image":"https://content.luanti.org/thumbnails/4/13d386c6a8.png","language":"en","summary":"Adds Bouncy Mushrooms to MT","tags":["new_package"],"title":"New: Bouncy Mushrooms","url":"https://content.luanti.org/packages/AirplaneMan/bouncy_mushrooms/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"timehud\">timehud <a class=\"header-anchor\" href=\"#timehud\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Minimal timer HUD API for Luanti.</p>\n<p>Differences vs <code>hud_timers</code>:</p>\n<ul>\n<li>text-only timers (no background, no bar)</li>\n<li>configuration file</li>\n<li>label always renders as <code>Name: 0h, 0m, 0s</code></li>\n</ul>\n<p>API:</p>\n<ul>\n<li><code>timehud.add_timer(player_name, def)</code></li>\n<li><code>timehud.remove_timer(player_name, index)</code></li>\n<li><code>timehud.remove_timer_by_reference(player_name, timer)</code></li>\n<li><code>timehud.update_timers(player_name)</code></li>\n<li><code>timehud.trigger_event(player_name, event_name)</code></li>\n</ul>\n<p>Example:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">timehud</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;timehud&quot;</span><span class=\"p\">)</span>\n<span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"nv\">timehud</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">~=</span><span class=\"w\"> </span><span class=\"s2\">&quot;table&quot;</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span>\n<span class=\"kr\">end</span>\n\n<span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">register_chatcommand</span><span class=\"p\">(</span><span class=\"s2\">&quot;timerdemo&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;Start a 30s demo timer&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">func</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">timer</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">timehud</span><span class=\"p\">.</span><span class=\"nf\">add_timer</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"nv\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;Demo&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">duration</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">30</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">color</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;55ff55&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">on_complete</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"p\">(</span><span class=\"nv\">player_name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">_timer</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">chat_send_player</span><span class=\"p\">(</span><span class=\"nv\">player_name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;Demo timer finished.&quot;</span><span class=\"p\">)</span>\n<span class=\"w\">            </span><span class=\"kr\">end</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">on_event</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">                </span><span class=\"nv\">boost_tick</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"p\">(</span><span class=\"nv\">player_name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">t</span><span class=\"p\">)</span>\n<span class=\"w\">                    </span><span class=\"c1\">-- Example: subtract 1s when this event is triggered.</span>\n<span class=\"w\">                    </span><span class=\"nv\">t</span><span class=\"p\">.</span><span class=\"py\">time_left</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">math.max</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">(</span><span class=\"nb\">tonumber</span><span class=\"p\">(</span><span class=\"nv\">t</span><span class=\"p\">.</span><span class=\"py\">time_left</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"ow\">or</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">-</span><span class=\"w\"> </span><span class=\"mi\">1</span><span class=\"p\">)</span>\n<span class=\"w\">                </span><span class=\"kr\">end</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"p\">},</span>\n<span class=\"w\">        </span><span class=\"p\">})</span>\n\n<span class=\"w\">        </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"ow\">not</span><span class=\"w\"> </span><span class=\"nv\">timer</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">            </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;Could not create timer.&quot;</span>\n<span class=\"w\">        </span><span class=\"kr\">end</span>\n\n<span class=\"w\">        </span><span class=\"c1\">-- Optional immediate refresh.</span>\n<span class=\"w\">        </span><span class=\"nv\">timehud</span><span class=\"p\">.</span><span class=\"nf\">update_timers</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;Demo timer started.&quot;</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n\n<span class=\"c1\">-- Somewhere else in your code:</span>\n<span class=\"c1\">-- timehud.trigger_event(player_name, &quot;boost_tick&quot;)</span>\n<span class=\"c1\">-- timehud.remove_timer_by_reference(player_name, timer)</span>\n</pre></div>\n<p>Legacy global aliases are also exported for compatibility:</p>\n<ul>\n<li><code>add_timer(...)</code></li>\n<li><code>remove_timer(...)</code></li>\n<li><code>remove_timer_by_reference(...)</code></li>\n<li><code>update_timers(...)</code></li>\n<li><code>trigger_event(...)</code></li>\n</ul>\n","date_published":"2026-03-21T23:28:38Z","id":"https://content.luanti.org/packages/bookgirlxoxo/timehud/","image":"https://content.luanti.org/thumbnails/4/d0e6f53fec.png","language":"en","summary":"Minimal HUD timer API","tags":["new_package"],"title":"New: timehud","url":"https://content.luanti.org/packages/bookgirlxoxo/timehud/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Check out <a href=\"https://content.luanti.org/packages/danil_2461/ketchupland/\" rel=\"nofollow\">Ketchupland</a> by VeeEnjoyer &lt;3</p>\n<p>Simple game with many biomes and many more coming soon</p>\n","date_published":"2026-03-21T15:42:22Z","id":"https://content.luanti.org/packages/AirplaneMan/ketchuptest/","image":"https://content.luanti.org/thumbnails/4/b1aacc4557.png","language":"en","summary":"Survival Crafting Game with Windows 95 Styled Graphix","tags":["new_package"],"title":"New: KetchupTest","url":"https://content.luanti.org/packages/AirplaneMan/ketchuptest/"},{"author":{"avatar":"https://content.luanti.org/uploads/ae0cf8e65e.png","name":"Wuzzy","url":"https://content.luanti.org/users/Wuzzy/"},"content_html":"<p>Can be used by games and minigames to display the most recent kills, deaths, important events, etc. on the HUD.</p>\n<p>Useful for PvP games, battle games, shooters, etc.</p>\n<p>When a kill or other \u201cevent of interest\u201d happens, an entry in the kill log will appear on the screen. For a kill, the entry will show, from left to right:</p>\n<ul>\n<li>The killer</li>\n<li>A weapon (as an image)</li>\n<li>The victim</li>\n</ul>\n<p>For suicides, only the weapon and the player are shown.</p>\n<p>Despite being called \u201ckill log\u201d, the log may also show other events like scoring a goal in soccer, capturing the flag in CTF, etc.</p>\n","date_published":"2026-03-21T15:33:34Z","id":"https://content.luanti.org/packages/Wuzzy/kill_log/","image":"https://content.luanti.org/thumbnails/4/c0124bf474.png","language":"en","summary":"Allows mods to display the recent player kills, deaths and other game events","tags":["new_package"],"title":"New: Kill Log","url":"https://content.luanti.org/packages/Wuzzy/kill_log/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"holograms\">holograms <a class=\"header-anchor\" href=\"#holograms\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><code>holograms</code> is a server-side sprite hologram API for Luanti.</p>\n<p>Text rendering uses <code>signs_lib</code> fonts and supports color tokens when <code>color_lib</code> is present.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>holograms saved in mod storage</li>\n<li>dynamic holograms via provider callbacks</li>\n<li>alignment support: <code>left</code>, <code>center</code>, <code>right</code></li>\n</ul>\n<h2 id=\"admin-only-commands\">Admin-only Commands <a class=\"header-anchor\" href=\"#admin-only-commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/hologram add &lt;name&gt; &lt;here|x,y,z|~,~,~|~,~2,~4&gt; &lt;text&gt;</code></li>\n<li><code>/hologram move &lt;name&gt; [here|x,y,z|~,~,~|~,~2,~4]</code></li>\n<li><code>/hologram edit &lt;name&gt; &lt;text&gt;</code></li>\n<li><code>/hologram list</code></li>\n<li><code>/hologram delete &lt;name&gt;</code></li>\n<li><code>/hologram size &lt;name&gt; &lt;scale&gt;</code></li>\n</ul>\n<h2 id=\"global-api\">Global API <a class=\"header-anchor\" href=\"#global-api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>All functions are on the global table <code>holograms</code>.</p>\n<ul>\n<li><code>holograms.upsert(name, pos, text[, opts]) -&gt; ok, entry|err</code></li>\n<li><code>holograms.remove(name[, opts]) -&gt; ok, err, entry</code></li>\n<li><code>holograms.set_scale(name, scale[, opts]) -&gt; ok, err, entry</code></li>\n<li><code>holograms.register_provider(provider_id, def) -&gt; ok, err</code></li>\n<li><code>holograms.unregister_provider(provider_id) -&gt; ok, err</code></li>\n<li><code>holograms.refresh_provider(provider_id[, player_or_name]) -&gt; ok, err</code></li>\n<li><code>holograms.get(name) -&gt; entry|nil</code></li>\n<li><code>holograms.list([opts]) -&gt; {entry, ...}</code></li>\n</ul>\n<h3 id=\"entry-shape\">Entry Shape <a class=\"header-anchor\" href=\"#entry-shape\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>An entry contains:</p>\n<ul>\n<li><code>name</code></li>\n<li><code>pos = {x, y, z}</code></li>\n<li><code>text_raw</code></li>\n<li><code>scale</code></li>\n<li><code>align</code></li>\n<li><code>revision</code></li>\n<li><code>transient</code></li>\n</ul>\n<h2 id=\"upsert-options\">Upsert Options <a class=\"header-anchor\" href=\"#upsert-options\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Supported <code>opts</code> fields:</p>\n<ul>\n<li><code>persist</code> (default <code>true</code>)</li>\n<li><code>scale</code></li>\n<li><code>align</code> (<code>left|center|right</code>)</li>\n<li><code>allow_newlines</code> (<code>false</code> by default unless enabled in config)</li>\n</ul>\n<h2 id=\"provider-api\">Provider API <a class=\"header-anchor\" href=\"#provider-api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Register a provider with:</p>\n<ul>\n<li><code>def.for_player(player) -&gt; result_table</code></li>\n<li><code>def.interval</code> (seconds, minimum <code>0.1</code>)</li>\n</ul>\n<p>Provider <code>result_table</code> fields:</p>\n<ul>\n<li><code>enabled = false</code> to hide/remove</li>\n<li><code>name</code> or <code>key</code> (optional; auto-generated if omitted)</li>\n<li><code>pos = {x, y, z}</code></li>\n<li><code>text</code></li>\n<li><code>scale</code> (optional)</li>\n<li><code>align</code> (optional)</li>\n<li><code>allow_newlines</code> (optional)</li>\n</ul>\n<h2 id=\"integration-example\">Integration Example <a class=\"header-anchor\" href=\"#integration-example\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">HOLO</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;holograms&quot;</span><span class=\"p\">)</span>\n<span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"ow\">not</span><span class=\"w\"> </span><span class=\"nv\">HOLO</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span>\n<span class=\"kr\">end</span>\n\n<span class=\"c1\">-- Static/durable hologram</span>\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">ok</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">res</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">HOLO</span><span class=\"p\">.</span><span class=\"nf\">upsert</span><span class=\"p\">(</span><span class=\"s2\">&quot;spawn_info&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"nv\">x</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">y</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">10</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">z</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">},</span><span class=\"w\"> </span><span class=\"s2\">&quot;Welcome!&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">persist</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">scale</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mf\">1.2</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">align</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;center&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n\n<span class=\"c1\">-- Dynamic per-player hologram</span>\n<span class=\"nv\">HOLO</span><span class=\"p\">.</span><span class=\"nf\">register_provider</span><span class=\"p\">(</span><span class=\"s2\">&quot;example_status&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">interval</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mf\">1.0</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">for_player</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"p\">(</span><span class=\"nv\">player</span><span class=\"p\">)</span>\n<span class=\"w\">        </span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">p</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">player</span><span class=\"p\">:</span><span class=\"nf\">get_pos</span><span class=\"p\">()</span>\n<span class=\"w\">        </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">            </span><span class=\"nv\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;status_&quot;</span><span class=\"w\"> </span><span class=\"o\">..</span><span class=\"w\"> </span><span class=\"nv\">player</span><span class=\"p\">:</span><span class=\"nf\">get_player_name</span><span class=\"p\">(),</span>\n<span class=\"w\">            </span><span class=\"nv\">pos</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"nv\">x</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">p</span><span class=\"p\">.</span><span class=\"py\">x</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">y</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">p</span><span class=\"p\">.</span><span class=\"py\">y</span><span class=\"w\"> </span><span class=\"o\">+</span><span class=\"w\"> </span><span class=\"mi\">3</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">z</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">p</span><span class=\"p\">.</span><span class=\"py\">z</span><span class=\"p\">},</span>\n<span class=\"w\">            </span><span class=\"nv\">text</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;Tracking: &quot;</span><span class=\"w\"> </span><span class=\"o\">..</span><span class=\"w\"> </span><span class=\"nv\">player</span><span class=\"p\">:</span><span class=\"nf\">get_player_name</span><span class=\"p\">(),</span>\n<span class=\"w\">            </span><span class=\"nv\">scale</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"mf\">1.0</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">align</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;center&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">            </span><span class=\"nv\">allow_newlines</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"p\">}</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n</pre></div>\n","date_published":"2026-03-21T15:31:01Z","id":"https://content.luanti.org/packages/bookgirlxoxo/holograms/","image":"https://content.luanti.org/thumbnails/4/bdef1ca7fd.png","language":"en","summary":"Visual holograms for your server for information.","tags":["new_package"],"title":"New: holograms","url":"https://content.luanti.org/packages/bookgirlxoxo/holograms/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"color_lib\">color_lib <a class=\"header-anchor\" href=\"#color_lib\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Shared color token parsing and rendering for mods, including Minecraft Bukkit color coding.</p>\n<p>Primary supported tokens:</p>\n<ul>\n<li><code>&amp;0</code>..<code>&amp;9</code>, <code>&amp;a</code>..<code>&amp;f</code>, <code>&amp;r</code> (Bukkit/Minecraft legacy)</li>\n<li>section-sign form: <code>\\u00A70</code>..<code>\\u00A79</code>, <code>\\u00A7a</code>..<code>\\u00A7f</code>, <code>\\u00A7r</code></li>\n</ul>\n<p>Also available (advanced): HEX token rendering (<code>&amp;#RRGGBB</code>, <code>&amp;#RRGGBB;</code>, <code>&lt;&amp;#RRGGBB&gt;</code>, <code>&lt;&amp;#RRGGBB;&gt;</code>).</p>\n<h2 id=\"main-apis\">Main APIs <a class=\"header-anchor\" href=\"#main-apis\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>color_lib.render_bukkit_text(raw, opts)</code></li>\n<li><code>color_lib.render_minecraft_hex_text(raw, opts)</code></li>\n</ul>\n<p>Returns: <code>rendered, stored, err, visible</code></p>\n<h2 id=\"bukkit-example\">Bukkit Example <a class=\"header-anchor\" href=\"#bukkit-example\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;color_lib&quot;</span><span class=\"p\">)</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">raw</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;&amp;dHello &amp;fworld&quot;</span>\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">rendered</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">_</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">C</span><span class=\"p\">.</span><span class=\"nf\">render_bukkit_text</span><span class=\"p\">(</span><span class=\"nv\">raw</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">trim</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">allow_newlines</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">append_white</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n\n<span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">    </span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">chat_send_player</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">colorize</span><span class=\"p\">(</span><span class=\"s2\">&quot;#ff7777&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"p\">))</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span>\n<span class=\"kr\">end</span>\n<span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">chat_send_player</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">rendered</span><span class=\"p\">)</span>\n</pre></div>\n<h2 id=\"hex-example\">HEX Example <a class=\"header-anchor\" href=\"#hex-example\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">C</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;color_lib&quot;</span><span class=\"p\">)</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">raw</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;&amp;#7DF9FF[Server] &amp;#FFFFFFWelcome!&quot;</span>\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">rendered</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">_</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">C</span><span class=\"p\">.</span><span class=\"nf\">render_minecraft_hex_text</span><span class=\"p\">(</span><span class=\"nv\">raw</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">trim</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">allow_newlines</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">append_white</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span>\n<span class=\"p\">})</span>\n\n<span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">    </span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">chat_send_player</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">colorize</span><span class=\"p\">(</span><span class=\"s2\">&quot;#ff7777&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">err</span><span class=\"p\">))</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span>\n<span class=\"kr\">end</span>\n<span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">chat_send_player</span><span class=\"p\">(</span><span class=\"nv\">name</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">rendered</span><span class=\"p\">)</span>\n</pre></div>\n","date_published":"2026-03-21T15:30:58Z","id":"https://content.luanti.org/packages/bookgirlxoxo/color_lib/","image":"https://content.luanti.org/thumbnails/4/1f47894865.png","language":"en","summary":"adds HEX colouring","tags":["new_package"],"title":"New: color_lib","url":"https://content.luanti.org/packages/bookgirlxoxo/color_lib/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"announcer\">announcer <a class=\"header-anchor\" href=\"#announcer\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Server-wide announcements with manual and scheduled modes.</p>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/announce &lt;msg&gt;</code></li>\n<li><code>/announce add &lt;name&gt; &lt;msg&gt; [time] [repeat]</code></li>\n<li><code>/announce edit &lt;name&gt; &lt;msg&gt; [time] [repeat]</code></li>\n<li><code>/announce run &lt;name&gt;</code></li>\n<li><code>/announce remove &lt;name&gt;</code></li>\n<li><code>/announce delete &lt;name&gt;</code></li>\n<li><code>/announce list</code></li>\n<li><code>/annunce ...</code> (alias for <code>/announce</code>)</li>\n</ul>\n<p>Notes:</p>\n<ul>\n<li><code>time</code> is seconds.</li>\n<li><code>repeat</code> supports <code>true/false</code>, <code>1/0</code>, <code>yes/no</code>, <code>on/off</code>.</li>\n<li>If <code>add</code> omits time/repeat, it creates a one-time immediate announcement.</li>\n<li><code>edit</code> updates message and optionally time/repeat; omitted time/repeat keep existing values.</li>\n<li><code>run</code> sends a saved announcement immediately.</li>\n</ul>\n<p>Examples:</p>\n<ul>\n<li><code>/announce Hello miners!</code></li>\n<li><code>/announce add welcome Hello world 900 true</code>\n<ul>\n<li>sends <code>Hello world</code> every 900 seconds</li>\n</ul>\n</li>\n<li><code>/announce edit welcome Hello miners, check /mine 120 true</code></li>\n</ul>\n<h2 id=\"privileges\">Privileges <a class=\"header-anchor\" href=\"#privileges\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>announce.announce</code>: manual <code>/announce &lt;msg&gt;</code> and <code>/announce run &lt;name&gt;</code></li>\n<li><code>announce.add</code>: <code>/announce add</code>, <code>/announce edit</code>, <code>/announce list</code></li>\n<li><code>announce.remove</code>: <code>/announce remove|delete</code></li>\n</ul>\n<h2 id=\"color-support\">Color Support <a class=\"header-anchor\" href=\"#color-support\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>If <code>color_lib</code> is installed, announcement message text supports color tokens like:</p>\n<ul>\n<li><code>&amp;#RRGGBB</code></li>\n<li><code>&amp;#RRGGBB;</code></li>\n<li><code>&lt;&amp;#RRGGBB&gt;</code></li>\n</ul>\n<h2 id=\"config\">Config <a class=\"header-anchor\" href=\"#config\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>prefix</code>: prefix shown before every announcement message.</li>\n</ul>\n<div class=\"highlight\"><pre><span></span><span class=\"p\">{</span>\n<span class=\"w\">  </span><span class=\"nt\">&quot;prefix&quot;</span><span class=\"p\">:</span><span class=\"w\"> </span><span class=\"s2\">&quot;[Announcement] &quot;</span>\n<span class=\"p\">}</span>\n</pre></div>\n<h2 id=\"api\">API <a class=\"header-anchor\" href=\"#api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Global table: <code>announcer</code></p>\n<ul>\n<li><code>announcer.broadcast(msg)</code></li>\n<li><code>announcer.add(name, msg, time_seconds, repeat_enabled[, actor])</code></li>\n<li><code>announcer.edit(name, msg, time_seconds, repeat_enabled[, has_time][, has_repeat][, actor])</code></li>\n<li><code>announcer.run(name)</code></li>\n<li><code>announcer.remove(name)</code></li>\n<li><code>announcer.list()</code></li>\n<li><code>announcer.get(name)</code></li>\n<li><code>announcer.exists(name)</code></li>\n</ul>\n<p>Schedules persist in mod storage.</p>\n<h2 id=\"api-hook-example\">API Hook Example <a class=\"header-anchor\" href=\"#api-hook-example\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">minetest</span><span class=\"p\">.</span><span class=\"nf\">register_on_mods_loaded</span><span class=\"p\">(</span><span class=\"kr\">function</span><span class=\"p\">()</span>\n<span class=\"w\">    </span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">A</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;announcer&quot;</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nb\">type</span><span class=\"p\">(</span><span class=\"nv\">A</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"o\">~=</span><span class=\"w\"> </span><span class=\"s2\">&quot;table&quot;</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">        </span><span class=\"kr\">return</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span>\n\n<span class=\"w\">    </span><span class=\"c1\">-- Add or update a repeating server reminder every 15 minutes.</span>\n<span class=\"w\">    </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nv\">A</span><span class=\"p\">.</span><span class=\"nf\">exists</span><span class=\"p\">(</span><span class=\"s2\">&quot;smell_reminder&quot;</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">        </span><span class=\"nv\">A</span><span class=\"p\">.</span><span class=\"nf\">edit</span><span class=\"p\">(</span><span class=\"s2\">&quot;smell_reminder&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;You smell, go shower!&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">900</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;my_mod&quot;</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"kr\">else</span>\n<span class=\"w\">        </span><span class=\"nv\">A</span><span class=\"p\">.</span><span class=\"nf\">add</span><span class=\"p\">(</span><span class=\"s2\">&quot;smell_reminder&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;You smell, go shower!&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">900</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;my_mod&quot;</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span>\n\n<span class=\"w\">    </span><span class=\"c1\">-- Send a one-time startup message.</span>\n<span class=\"w\">    </span><span class=\"nv\">A</span><span class=\"p\">.</span><span class=\"nf\">broadcast</span><span class=\"p\">(</span><span class=\"s2\">&quot;Server online, have fun!&quot;</span><span class=\"p\">)</span>\n<span class=\"kr\">end</span><span class=\"p\">)</span>\n</pre></div>\n","date_published":"2026-03-21T15:30:56Z","id":"https://content.luanti.org/packages/bookgirlxoxo/announcer/","image":"https://content.luanti.org/thumbnails/4/c258664381.png","language":"en","summary":"Scheduled and manual server announcements with API hooks.","tags":["new_package"],"title":"New: announcer","url":"https://content.luanti.org/packages/bookgirlxoxo/announcer/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Adds chalk buttons tin foil and the like.</p>\n<p>I forgot if i used ai or not to make some code changes so im safely marking this as ai generated :)</p>\n","date_published":"2026-03-20T11:50:40Z","id":"https://content.luanti.org/packages/AirplaneMan/crafty_arts/","image":"https://content.luanti.org/thumbnails/4/4ee83093f5.png","language":"en","summary":"Arts and crafts supplies","tags":["new_package"],"title":"New: Crafty Arts","url":"https://content.luanti.org/packages/AirplaneMan/crafty_arts/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/4b5788e15f39d137e91497c6cd64a628?s=64&d=retro&r=g","name":"Aeonovyli","url":"https://content.luanti.org/users/red_rider/"},"content_html":"<p>This mod is for Luanti/minetest only.</p>\n<p>I made it with a little help from AI (read made by AI completely), and its purpose is to help in building objects/converting materal. The commands are simple and as follows;</p>\n<p>/pos1: Sets position one, one corner of the area.</p>\n<p>/pos2: Sets position two, the other corner of the area.</p>\n<p>/setnode: Takes object in hand and makes it the replacment for anything replaced.</p>\n<p>/fill: Basically a replace command; it finds all except air and water blocks in the area selected and sets them to the /setnode node, whatever that might be (note, this will cause the server to crash if it's not an item you can place normally.)</p>\n<p>/airfill: Adds setnode to all blocks between pos1 and pos2.</p>\n<p>/delete: Converts all blocks between pos1 and pos2 to air blocks.</p>\n<p>Screenshots: The first is before doing anything. Second is setting pos1, third is pos2,  fourth is setnode, fifth is fill and sixth is airfill. Have fun, and I would like feedback!</p>\n","date_published":"2026-03-19T22:36:01Z","id":"https://content.luanti.org/packages/red_rider/simple_replace_plus/","image":"https://content.luanti.org/thumbnails/4/1337e8833e.png","language":"en","summary":"Simple area fill mod with commands /pos1, /pos2, /setnode, /fill and /delete. Created with help from AI.","tags":["new_package"],"title":"New: Simple Replace Plus","url":"https://content.luanti.org/packages/red_rider/simple_replace_plus/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/90c5c9b4a19f42b570fe8dc5015fedee?s=64&d=retro&r=g","name":"limafresh","url":"https://content.luanti.org/users/limafresh/"},"content_html":"<h1 id=\"lusnake\">LuSnake <a class=\"header-anchor\" href=\"#lusnake\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Old snake game, transferred into the Luanti's world of nodes</p>\n","date_published":"2026-03-19T22:35:01Z","id":"https://content.luanti.org/packages/limafresh/lusnake/","image":"https://content.luanti.org/thumbnails/4/4a7b0188bd.png","language":"en","summary":"Snake game","tags":["new_package"],"title":"New: LuSnake","url":"https://content.luanti.org/packages/limafresh/lusnake/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/c9e9ac83dd01d53c5cf30b3baa7a59ec?s=64&d=retro&r=g","name":"Robsteranium","url":"https://content.luanti.org/users/Robsteranium/"},"content_html":"<p>Generates a flat world with nodes appropriate to the game.</p>\n<p>Unlike the built-in &quot;flat&quot; generator, this doesn't add any biomes so there are no trees to clear before you start building!</p>\n<p>Based upon DragonWrangler's <a href=\"https://content.luanti.org/packages/DragonWrangler/mg_superflat/\" rel=\"nofollow\">mg_superflat</a> but instead of introducing new grass and dirt node types it uses mapgen aliases to adopt <code>default:dirt</code> for the Minetest Game or <code>mcl_core:dirt</code> for Voxelibre. Other games supporting these aliases should also work (but haven't been tested).</p>\n<p>To use the map generator:</p>\n<ul>\n<li>create a new world in the game of your choice</li>\n<li>set the map generator to &quot;singlenode&quot;</li>\n<li>enable the &quot;flatland&quot; mod</li>\n<li>start the game (play/ host)</li>\n</ul>\n","date_published":"2026-03-19T22:34:37Z","id":"https://content.luanti.org/packages/Robsteranium/flatland/","image":"https://content.luanti.org/thumbnails/4/e56dea240e.png","language":"en","summary":"Generates a flat world with nodes appropriate to the game - i.e. `default:dirt` for the Minetest Game or `mcl_core:dirt` for Voxelibre.","tags":["new_package"],"title":"New: Flatland","url":"https://content.luanti.org/packages/Robsteranium/flatland/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d02a9bf160178e3ee57ba350cad9aa95?s=64&d=retro&r=g","name":"fulgidus","url":"https://content.luanti.org/users/fulgidus/"},"content_html":"<h1 id=\"dynamic-passgate\">Dynamic Passgate <a class=\"header-anchor\" href=\"#dynamic-passgate\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Invite-only server gate for <a href=\"https://www.luanti.org/\" rel=\"nofollow\">Luanti</a> (formerly Minetest) with dynamic per-user passwords.</p>\n<p>New players get a <strong>templated password based on their username</strong> \u2014 share it privately to grant access. They must change it within a countdown timer to gain full privileges. Failure to comply results in a kick, and repeated failures lead to a permanent block.</p>\n<h2 id=\"how-it-works\">How It Works <a class=\"header-anchor\" href=\"#how-it-works\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<pre><code>1. You invite a player and tell them: &quot;Your password is &lt;their-name&gt;-wants-in&quot;\n2. They connect with that password \u2014 the mod auto-creates their account\n3. They see a gate modal: &quot;Change your password within 2 minutes&quot;\n4. They type: /password oldpassword newpassword\n5. Password changed \u2192 verified \u2192 full privileges granted\n6. If they don't comply \u2192 kicked \u2192 strike added \u2192 account purged\n7. After 3 strikes \u2192 permanently blocked\n</code></pre><p>The password template is fully configurable with variables, so you can use patterns like <code>${name}-${MMM}${yyyy}</code> to create monthly rotating passwords.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Dynamic passwords</strong> \u2014 per-user passwords generated from a configurable template</li>\n<li><strong>Template variables</strong> \u2014 username, dates, server name (see table below)</li>\n<li><strong>In-game admin panel</strong> \u2014 manage settings, players, and view server status without editing config files or restarting</li>\n<li><strong>Zero-config defaults</strong> \u2014 works out of the box, every setting has a sensible default</li>\n<li><strong>Runtime configuration</strong> \u2014 all settings changeable via admin panel, no restart needed</li>\n<li><strong>Delegated administration</strong> \u2014 custom <code>passgate_admin</code> privilege for non-admin gate managers</li>\n<li><strong>Server-side <code>/password</code> fallback</strong> \u2014 works even when the client doesn't handle <code>/password</code> natively</li>\n<li><strong>Strike system</strong> \u2014 configurable max strikes before permanent block</li>\n<li><strong>Admin bypass</strong> \u2014 the server admin (from <code>minetest.conf</code>) always passes through</li>\n</ul>\n<h2 id=\"installation\">Installation <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Copy the <code>dynamic_passgate</code> folder into your server's <code>mods/</code> directory</li>\n<li>Enable the mod in your world's <code>world.mt</code>: <code>load_mod_dynamic_passgate = true</code></li>\n<li>Restart the server</li>\n<li>(Optional) Configure settings via the in-game admin panel (<code>/gate</code>) or <code>minetest.conf</code></li>\n</ol>\n<h2 id=\"template-variables\">Template Variables <a class=\"header-anchor\" href=\"#template-variables\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>The password template supports the following variables:</p>\n<table>\n<thead>\n<tr>\n<th>Variable</th>\n<th>Description</th>\n<th>Example (player &quot;Steve&quot;, March 17, 2026)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>${name}</code></td>\n<td>Username (lowercase)</td>\n<td><code>steve</code></td>\n</tr>\n<tr>\n<td><code>${NAME}</code></td>\n<td>Username (original case)</td>\n<td><code>Steve</code></td>\n</tr>\n<tr>\n<td><code>${server}</code></td>\n<td>Server name</td>\n<td><code>My Server</code></td>\n</tr>\n<tr>\n<td><code>${d}</code></td>\n<td>Day of month</td>\n<td><code>17</code></td>\n</tr>\n<tr>\n<td><code>${dd}</code></td>\n<td>Day of month (zero-padded)</td>\n<td><code>17</code></td>\n</tr>\n<tr>\n<td><code>${m}</code></td>\n<td>Month number</td>\n<td><code>3</code></td>\n</tr>\n<tr>\n<td><code>${mm}</code></td>\n<td>Month number (zero-padded)</td>\n<td><code>03</code></td>\n</tr>\n<tr>\n<td><code>${mmm}</code></td>\n<td>Month abbreviation (lowercase)</td>\n<td><code>mar</code></td>\n</tr>\n<tr>\n<td><code>${mmmm}</code></td>\n<td>Month full name (lowercase)</td>\n<td><code>march</code></td>\n</tr>\n<tr>\n<td><code>${MMM}</code></td>\n<td>Month abbreviation (capitalized)</td>\n<td><code>Mar</code></td>\n</tr>\n<tr>\n<td><code>${MMMM}</code></td>\n<td>Month full name (capitalized)</td>\n<td><code>March</code></td>\n</tr>\n<tr>\n<td><code>${yy}</code></td>\n<td>2-digit year</td>\n<td><code>26</code></td>\n</tr>\n<tr>\n<td><code>${yyyy}</code></td>\n<td>4-digit year</td>\n<td><code>2026</code></td>\n</tr>\n</tbody>\n</table>\n<h3 id=\"example-templates\">Example Templates <a class=\"header-anchor\" href=\"#example-templates\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<table>\n<thead>\n<tr>\n<th>Template</th>\n<th>Password for &quot;Steve&quot; (March 2026)</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>${name}-wants-in</code></td>\n<td><code>steve-wants-in</code></td>\n</tr>\n<tr>\n<td><code>${name}-${MMM}${yyyy}</code></td>\n<td><code>steve-Mar2026</code></td>\n</tr>\n<tr>\n<td><code>welcome-${name}-${mm}${yy}</code></td>\n<td><code>welcome-steve-0326</code></td>\n</tr>\n<tr>\n<td><code>${server}-${name}</code></td>\n<td><code>My Server-steve</code></td>\n</tr>\n</tbody>\n</table>\n<p><strong>Note:</strong> Date-based templates mean the password changes over time. Make sure to tell invitees the correct current password.</p>\n<h2 id=\"settings\">Settings <a class=\"header-anchor\" href=\"#settings\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>All settings can be changed at runtime via the admin panel (<code>/gate</code>) \u2014 no server restart required.</p>\n<table>\n<thead>\n<tr>\n<th>Setting</th>\n<th>Default</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>dynamic_passgate.password_template</code></td>\n<td><code>${name}-wants-in</code></td>\n<td>Password template with variable substitution</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.countdown_seconds</code></td>\n<td><code>120</code></td>\n<td>Seconds before unverified player is kicked</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.max_strikes</code></td>\n<td><code>3</code></td>\n<td>Strikes before permanent block</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.reminder_interval</code></td>\n<td><code>10</code></td>\n<td>Seconds between chat reminders</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.admin_email</code></td>\n<td><em>(empty)</em></td>\n<td>Contact shown in ban/kick messages</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.server_title</code></td>\n<td><em>(empty)</em></td>\n<td>Override for server name in gate messages (uses <code>server_name</code> from <code>minetest.conf</code> if empty)</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.verified_privs</code></td>\n<td><code>interact,shout,fly,fast,noclip,give,creative,basic_privs,teleport,debug</code></td>\n<td>Privileges granted on verification</td>\n</tr>\n<tr>\n<td><code>dynamic_passgate.show_inventory_button</code></td>\n<td><code>true</code></td>\n<td>Show admin panel button in inventory</td>\n</tr>\n</tbody>\n</table>\n<p>Settings are read in this priority order:</p>\n<ol>\n<li><strong>Admin panel</strong> (mod_storage) \u2014 highest priority, runtime-changeable</li>\n<li><strong><code>minetest.conf</code></strong> \u2014 initial configuration</li>\n<li><strong>Hardcoded defaults</strong> \u2014 always available as fallback</li>\n</ol>\n<h2 id=\"admin-panel\">Admin Panel <a class=\"header-anchor\" href=\"#admin-panel\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Access the admin panel with the <code>/gate</code> chat command or the inventory button (if enabled). Requires <code>server</code> privilege or <code>passgate_admin</code> privilege.</p>\n<h3 id=\"settings-tab\">Settings Tab <a class=\"header-anchor\" href=\"#settings-tab\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>Configure all mod settings with a live preview of the password template.</p>\n<h3 id=\"players-tab\">Players Tab <a class=\"header-anchor\" href=\"#players-tab\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>View all known players with their status (verified/blocked/unverified) and strike count. Select a player to:</p>\n<ul>\n<li><strong>Verify</strong> \u2014 manually verify and grant privileges</li>\n<li><strong>Block</strong> \u2014 ban and purge account</li>\n<li><strong>Unblock</strong> \u2014 remove ban and reset strikes</li>\n<li><strong>Reset Strikes</strong> \u2014 reset strike count without unblocking</li>\n</ul>\n<h3 id=\"status-tab\">Status Tab <a class=\"header-anchor\" href=\"#status-tab\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>View server status, player counts, currently pending players (with countdown timers), active settings summary, and a quick reference of the gate flow.</p>\n<h2 id=\"chat-commands\">Chat Commands <a class=\"header-anchor\" href=\"#chat-commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>All admin commands require <code>server</code> or <code>passgate_admin</code> privilege.</p>\n<table>\n<thead>\n<tr>\n<th>Command</th>\n<th>Description</th>\n</tr>\n</thead>\n<tbody>\n<tr>\n<td><code>/gate</code></td>\n<td>Open the admin panel</td>\n</tr>\n<tr>\n<td><code>/gate_verify &lt;name&gt;</code></td>\n<td>Manually verify a player</td>\n</tr>\n<tr>\n<td><code>/gate_block &lt;name&gt; [reason]</code></td>\n<td>Block a player (ban + purge account), with optional reason</td>\n</tr>\n<tr>\n<td><code>/gate_unblock &lt;name&gt;</code></td>\n<td>Unblock a player and reset strikes</td>\n</tr>\n<tr>\n<td><code>/gate_status &lt;name&gt;</code></td>\n<td>Check a player's gate status</td>\n</tr>\n<tr>\n<td><code>/password &lt;old&gt; &lt;new&gt;</code></td>\n<td>Change your own password (available to all players)</td>\n</tr>\n</tbody>\n</table>\n<h2 id=\"technical-notes\">Technical Notes <a class=\"header-anchor\" href=\"#technical-notes\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong><code>/password</code> is client-side in Luanti</strong> \u2014 some clients handle it natively, others send it to the server as a chat command. This mod registers a server-side <code>/password</code> fallback to handle both cases.</li>\n<li><strong>Password change detection</strong> works by monkey-patching <code>auth_handler.set_password</code> via <code>core.register_on_mods_loaded</code>, since Luanti has no <code>register_on_password_change</code> callback.</li>\n<li><strong>mod_storage</strong> is used for all persistent data (settings, player status, strikes). Do not edit <code>mod_storage.sqlite</code> directly \u2014 the engine caches it in memory.</li>\n<li><strong>The server admin</strong> (set via <code>name</code> in <code>minetest.conf</code>) always bypasses the gate automatically.</li>\n</ul>\n<h2 id=\"compatibility\">Compatibility <a class=\"header-anchor\" href=\"#compatibility\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Luanti 5.9.0+</li>\n<li>Works with any game (Minetest Game, Asuna, MineClone, etc.)</li>\n<li>No dependencies on other mods</li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>CC BY-SA 4.0</p>\n","date_published":"2026-03-19T22:33:12Z","id":"https://content.luanti.org/packages/fulgidus/dynamic_passgate/","image":"https://content.luanti.org/thumbnails/4/1d926ee23f.png","language":"en","summary":"Invite-only server gate with dynamic per-user passwords","tags":["new_package"],"title":"New: Dynamic Passgate","url":"https://content.luanti.org/packages/fulgidus/dynamic_passgate/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/717cd55906c0a569946787a00100fab7?s=64&d=retro&r=g","name":"KPCOFGS","url":"https://content.luanti.org/users/KPCOFGS/"},"content_html":"<h1 id=\"blood-moon\">Blood Moon <a class=\"header-anchor\" href=\"#blood-moon\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Random blood moon events for Luanti. The sky turns red, a massive crimson moon rises, and hostile mobs become far more dangerous.</p>\n<p><img src=\"./docs/blood_moon.png\" alt=\"screenshot1\"></p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Random trigger</strong> \u2014 1 in 3 chance each night (configurable)</li>\n<li><strong>Red sky</strong> \u2014 dark red sky, red fog, red-tinted stars</li>\n<li><strong>Blood moon</strong> \u2014 large crimson moon texture</li>\n<li><strong>Warning</strong> \u2014 chat message and sound when blood moon begins</li>\n<li><strong>Automatic reset</strong> \u2014 sky returns to normal at dawn</li>\n</ul>\n<h2 id=\"mod-api\">Mod API <a class=\"header-anchor\" href=\"#mod-api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Blood Moon exposes a global API for other mods to integrate with:</p>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">bloodmoon</span><span class=\"p\">.</span><span class=\"nf\">is_active</span><span class=\"p\">()</span><span class=\"w\">       </span><span class=\"c1\">-- returns true during a blood moon</span>\n<span class=\"nv\">bloodmoon</span><span class=\"p\">.</span><span class=\"nf\">get_damage_mult</span><span class=\"p\">()</span><span class=\"w\"> </span><span class=\"c1\">-- returns 2.0 during blood moon, 1.0 otherwise</span>\n<span class=\"nv\">bloodmoon</span><span class=\"p\">.</span><span class=\"nf\">get_speed_mult</span><span class=\"p\">()</span><span class=\"w\">  </span><span class=\"c1\">-- returns 2.0 during blood moon, 1.0 otherwise</span>\n</pre></div>\n<h3 id=\"integration-with-infectious-mod\">Integration with Infectious mod <a class=\"header-anchor\" href=\"#integration-with-infectious-mod\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<p>When used alongside the <strong>Infectious</strong> mod, blood moon automatically:</p>\n<ul>\n<li>Doubles zombie damage (6 \u2192 12)</li>\n<li>Doubles zombie movement speed</li>\n<li>Doubles spawn frequency (every 2.5s instead of 5s)</li>\n<li>Doubles maximum pack size (up to 6 per spawn)</li>\n</ul>\n<h2 id=\"dependencies\">Dependencies <a class=\"header-anchor\" href=\"#dependencies\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>default</code> (Minetest Game)</li>\n<li>Optional: <code>infectious</code> (for zombie buff integration)</li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Code: MIT</li>\n<li>Textures: CC BY-SA 4.0</li>\n</ul>\n","date_published":"2026-03-19T22:31:54Z","id":"https://content.luanti.org/packages/KPCOFGS/bloodmoon/","image":"https://content.luanti.org/thumbnails/4/f6545131ba.png","language":"en","summary":"Random blood moon events that turn the sky red, double zombie damage and speed, and increase spawn rates.","tags":["new_package"],"title":"New: Blood Moon","url":"https://content.luanti.org/packages/KPCOFGS/bloodmoon/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Asbestos Blocks stamp out any fire in a radius around them</p>\n<p>Simple asbestos mod, craft wool fabric and reinforced tiles for your world, and fake snow for Christmas without your house burning to ash</p>\n<p>Craft fire retardant asbestos armor</p>\n","date_published":"2026-03-19T22:31:33Z","id":"https://content.luanti.org/packages/AirplaneMan/asbestos/","image":"https://content.luanti.org/thumbnails/4/7fc94c063c.png","language":"en","summary":"Useful Fire Proof Asbestos for your world","tags":["new_package"],"title":"New: Asbestos","url":"https://content.luanti.org/packages/AirplaneMan/asbestos/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/80ea9269e982383c572087a3bd7a7f66?s=64&d=retro&r=g","name":"AirplaneMan","url":"https://content.luanti.org/users/AirplaneMan/"},"content_html":"<p>Adds cupcakes your your worlds, hope you enjoy :)</p>\n","date_published":"2026-03-19T22:29:40Z","id":"https://content.luanti.org/packages/AirplaneMan/cupcakes/","image":"https://content.luanti.org/thumbnails/4/f37038cc81.png","language":"en","summary":"Simple Cupcakes for your world","tags":["new_package"],"title":"New: Cupcakes","url":"https://content.luanti.org/packages/AirplaneMan/cupcakes/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"little-lake\">Little Lake <a class=\"header-anchor\" href=\"#little-lake\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Simple mod that spawns little lakes in caves near the surface and on mountains.</p>\n<p>Uses default nodes.</p>\n","date_published":"2026-03-19T22:28:12Z","id":"https://content.luanti.org/packages/Bas080/little_lake/","image":"https://content.luanti.org/thumbnails/4/1c6293353d.png","language":"en","summary":"Spawns little lakes both in caves and mountains","tags":["new_package"],"title":"New: Little Lake","url":"https://content.luanti.org/packages/Bas080/little_lake/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/d7e23bdeb07b1eca11e7a2955b7d09e9?s=64&d=retro&r=g","name":"bugbug11","url":"https://content.luanti.org/users/bugbug11/"},"content_html":"<p>bugbug_chat_logger is a simple mod that logs all chat messages to worlds/worldname/chat.txt\nPlease note that it may log things out of order, but each chat message contains a timestamp.</p>\n","date_published":"2026-03-19T22:26:44Z","id":"https://content.luanti.org/packages/bugbug11/bugbug_chat_logger/","image":"https://content.luanti.org/thumbnails/4/3e9eda8e98.png","language":"en","summary":"Logs chat messages in worlds/worldname/chat.txt","tags":["new_package"],"title":"New: Bugbug Chat Logger","url":"https://content.luanti.org/packages/bugbug11/bugbug_chat_logger/"},{"author":{"avatar":"https://content.luanti.org/uploads/02110c4c95.png","name":"Blockhead","url":"https://content.luanti.org/users/Blockhead/"},"content_html":"<h1 id=\"yes-map\">Yes, Map! <a class=\"header-anchor\" href=\"#yes-map\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Tired of not having minimaps in Minetest Game? Don't want to play in creative,\nor have to craft a mapping kit? Never fear: &quot;Yes, Map!&quot; is here to unconditionally\nallow player to use the minimap. It will also enable your radar, though you can\nturn that off that if you wish.</p>\n<p>Yes, Map! will work on other games based on MTG, as long as those do not differ\nmeaningfull from MTG &quot;map&quot; mod. Yes, Map! may extend support to other games in\nfuture, but Minetest Game is the most common one that turns it off.</p>\n","date_published":"2026-03-17T02:42:04Z","id":"https://content.luanti.org/packages/Blockhead/yesmap/","image":"https://content.luanti.org/thumbnails/4/b199583f6a.png","language":"en","summary":"Enable the minimap for all players in Minetest Game","tags":["new_package"],"title":"New: Yes, Map!","url":"https://content.luanti.org/packages/Blockhead/yesmap/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/051087baad3a13dcd7a9fd34dbd081cb?s=64&d=retro&r=g","name":"Shqug","url":"https://content.luanti.org/users/Hagatha/"},"content_html":"<h1 id=\"crafttools\">CraftTools <a class=\"header-anchor\" href=\"#crafttools\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A library for mod &amp; game developers providing simple tools and reusable ingredients that automatically return and lose a bit of durability when crafted with, rather than disappearing like a normal ingredient. Also includes an API for registering new tools and consumables.</p>\n<p>Optionally depends on <code>default</code> for recipes.</p>\n<p>All tools and consumables and their recipes can be disabled by category or individually, and the durability of all tools can be changed in the settings.</p>\n<h2 id=\"provided-items\">Provided Items <a class=\"header-anchor\" href=\"#provided-items\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>The following hand tools are available:</p>\n<ul>\n<li>'Small Hammer': Intended to be used for shaping metal and crushing fragile objects like stone and ores.</li>\n<li>'Metal File': For working metal, wood, and other materials.</li>\n<li>'Hand Drill': For making holes in various materials including stone, wood, metal, etc.</li>\n<li>'Metal Cutters': For cutting sheet metal, wires, ropes &amp; cables, and fabric.</li>\n<li>'Wrench': For configuring, repairing, and dismantling mechanical devices.</li>\n<li>'Knife': For any sort of slicing, carving, gouging, and stabbing. Also a fast, low damage melee weapon.</li>\n<li>'Hand Saw': For cutting wood and metal.</li>\n<li>'Chisel': For shaping wood and stone, and crafting variants of decorative nodes.</li>\n</ul>\n<p>As well as the following reusable consumables:</p>\n<ul>\n<li>'Glue': Specially formulated K-Brand kelp superglue for binding and adhering all sorts of things.</li>\n<li>'Tape': Used to add tension and structural strength while also binding things together and sealing gaps.</li>\n<li>'Sandpaper': Used for finer smoothing and on harder materials than the file. There are three kinds (in order of increasing grit): flint, mese, and diamond.</li>\n</ul>\n<p>There is also a 'Toolbox', which combines the functionality of all the hand tools other than the knife and chisel while having a little more durability than all of them put together.</p>\n<h2 id=\"api\">API <a class=\"header-anchor\" href=\"#api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>CraftTools has an extensive API for creating new tools and consumables, and overriding crafttool behaviour on a per-recipe basis. The mod API documentation can now be found in <code>API.md</code> in the mod/repository root directory.</p>\n<h2 id=\"contributions\">Contributions <a class=\"header-anchor\" href=\"#contributions\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>I will accept ideas for new tools/consumables to add to the mod and new functionality for the system itself via GitHub issues. Read <code>.dev/TO DO.md</code> and <code>.dev/IDEAS LIST.md</code> first to make sure your idea isn't already planned or being considered. Pull requests for translations and bug fixes can be made directly.</p>\n<h2 id=\"licensing\">Licensing <a class=\"header-anchor\" href=\"#licensing\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>(C) Shqug 2026</p>\n<p>The source code and data files of CraftTools are licensed under Apache 2.0. See <code>LICENSE.txt</code>.</p>\n<p>The media files of CraftTools are licensed under CC BY-SA 4.0. See <code>MEDIA_LICENSE.txt</code>.</p>\n","date_published":"2026-03-15T15:14:03Z","id":"https://content.luanti.org/packages/Hagatha/crafttools/","image":"https://content.luanti.org/thumbnails/4/7904451c1a.png","language":"en","summary":"Simple tools that automatically lose a bit of durability each time they're crafted with and stay in the grid.","tags":["new_package"],"title":"New: CraftTools","url":"https://content.luanti.org/packages/Hagatha/crafttools/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/6f25714e88e1f6768428e9530593b24d?s=64&d=retro&r=g","name":"bgstack15","url":"https://content.luanti.org/users/bgstack15/"},"content_html":"<h1 id=\"luanti-mod-ruby-stuff-for-mineclonia\">Luanti Mod: Ruby Stuff for Mineclonia <a class=\"header-anchor\" href=\"#luanti-mod-ruby-stuff-for-mineclonia\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"description\">Description <a class=\"header-anchor\" href=\"#description\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This mod is designed for <a href=\"https://codeberg.org/mineclonia/mineclonia\" rel=\"nofollow\">Mineclonia</a> and VoxeLibre. It is similar to <a href=\"https://codeberg.org/rudzik8/mcl_emerald_stuff\" rel=\"nofollow\">mcl_emerald_stuff</a>, but it adds ruby gear. You have to fashion rubies before you can make the gear.</p>\n<p>Not only is this gear scaled for very late-game play, it also looks fashionable because it is red.</p>\n<h2 id=\"using\">Using <a class=\"header-anchor\" href=\"#using\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Craft rubies based on the recipe chosen by the server admin. Craft with rubies to fashion all the ordinary gear like tools, armors, and horse armor. Equip the tools and armor!</p>\n<h2 id=\"optional-support\">Optional support <a class=\"header-anchor\" href=\"#optional-support\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Mod <a href=\"https://codeberg.org/camelia/farmtools/pulls/23\" rel=\"nofollow\">farmtools</a> has been requested to support this mod.</p>\n<h2 id=\"alternatives\">Alternatives <a class=\"header-anchor\" href=\"#alternatives\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>For a <a href=\"https://github.com/luanti-org/minetest_game\" rel=\"nofollow\">Minetest Game</a> ruby experience, use mod <a href=\"https://content.luanti.org/packages/ReinPlayz/ruby_tools_plus/\" rel=\"nofollow\">Ruby Tools+</a>. That mod is entirely unrelated to this one.</p>\n<h2 id=\"settings\">Settings <a class=\"header-anchor\" href=\"#settings\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Once at installation time, configure the build recipe in <code>minetest.conf</code>, entry <code>mcl_ruby_stuff.recipe</code>. The options are the following. The recipe affects the strength of the equipment.</p>\n<ul>\n<li><code>emerald_and_redstone_dust</code>: 1 emerald + 1 redstone dust.</li>\n<li><code>eight_redstone_dust</code>: 8 redstone dust.</li>\n<li><code>nine_redstone_blocks</code>: 9 redstone blocks. This will make the strength of the equipment 2x that of emerald equipment.</li>\n</ul>\n","date_published":"2026-03-15T03:45:50Z","id":"https://content.luanti.org/packages/bgstack15/mcl_ruby_stuff/","image":"https://content.luanti.org/thumbnails/4/0b4dfaf4a9.png","language":"en","summary":"Adds ruby tools and armor to Mineclonia and VoxeLibre","tags":["new_package"],"title":"New: Ruby Stuff for Mineclonia","url":"https://content.luanti.org/packages/bgstack15/mcl_ruby_stuff/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"luanti_utils\">luanti_utils <a class=\"header-anchor\" href=\"#luanti_utils\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>High level <a href=\"https://www.luanti.org/\" rel=\"nofollow\">Luanti</a> lua modding utilities that will bring your mods to the next level.</p>\n<h2 id=\"installation\">Installation <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Get the luanti_utils in your mod folder by downloading it from the Luanti mods UI.</li>\n<li>Add luanti_utils as a dependency in your mod.</li>\n<li>Read the docs to get started.</li>\n</ol>\n<h2 id=\"documentation\">Documentation <a class=\"header-anchor\" href=\"#documentation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>You start by aquiring a module.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">util</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">luanti_utils</span><span class=\"p\">.</span><span class=\"nf\">dofile</span><span class=\"p\">(</span><span class=\"s1\">&#39;&lt;luanti_util&gt;.lua&#39;</span><span class=\"p\">)</span>\n</pre></div>\n<p>See <a href=\"https://bas080.github.io/luanti_utils/index.html\" rel=\"nofollow\">Luanti Utils Documentation</a>.</p>\n<blockquote>\n<p>Docs are generated using <a href=\"https://stevedonovan.github.io/ldoc/\" rel=\"nofollow\">LDoc</a> comments.</p>\n</blockquote>\n<h2 id=\"experimental\">Experimental <a class=\"header-anchor\" href=\"#experimental\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>There is an <code>experimental</code> branch. These APIs are suject to change.</p>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>See <a href=\"https://github.com/bas080/luanti_utils/blob/master/LICENSE.txt\" rel=\"nofollow\">LICENSE.txt</a> file</p>\n","date_published":"2026-03-14T01:31:42Z","id":"https://content.luanti.org/packages/Bas080/luanti_utils/","image":"https://content.luanti.org/thumbnails/4/a99c647500.png","language":"en","summary":"High level utilities for better mods.","tags":["new_package"],"title":"New: luanti_utils","url":"https://content.luanti.org/packages/Bas080/luanti_utils/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"plots\">plots <a class=\"header-anchor\" href=\"#plots\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A plot world system for Luanti inspired by 'PlotSquared' for Minecraft.</p>\n<h2 id=\"what-it-does\">What It Does <a class=\"header-anchor\" href=\"#what-it-does\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Lets players claim plots to build on.</li>\n<li>Plot protection + access lists (<code>add</code>, <code>trust</code>, <code>deny</code>).</li>\n<li>Multi-plot limits via privilege <code>plots.multiple.&lt;number&gt;</code></li>\n<li>Admin privileges: <code>plots.admin.others</code> (interact with others' claimed plots), <code>plots.admin.road</code> (interact with roads).</li>\n</ul>\n<h2 id=\"notable-options\">Notable options <a class=\"header-anchor\" href=\"#notable-options\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>for server owners or something...</p>\n<p>File: <code>data/config.json</code></p>\n<ul>\n<li><code>plot_size</code>: buildable plot width/length.</li>\n<li><code>plot_gap</code>: road/gap space between plots.</li>\n<li><code>shape</code>: plot shape (<code>square</code> or <code>sphere</code>).</li>\n<li><code>grid_world_size</code>: total managed plot-world size.</li>\n<li><code>origin</code>: center point of the plot grid.</li>\n<li><code>dimension</code>: Y-range where plots/protection are active.</li>\n<li><code>max_plots_per_player</code>: default claim limit (before privileges).</li>\n<li><code>road_node</code>: road block material.</li>\n<li><code>unowned_plot_node</code>: fill block for unclaimed plots.</li>\n<li><code>floor_node</code>: base floor block used by plot generation.</li>\n</ul>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>\n<p><code>/plot (create|auto|claim)</code></p>\n</li>\n<li>\n<p><code>/plot info [plot_id]</code></p>\n</li>\n<li>\n<p><code>/plot (h|home) [index] [player]</code></p>\n</li>\n<li>\n<p><code>/plot hid &lt;plot_id&gt;</code></p>\n</li>\n<li>\n<p><code>/plot add &lt;player&gt;</code></p>\n</li>\n<li>\n<p><code>/plot trust &lt;player&gt;</code></p>\n</li>\n<li>\n<p><code>/plot (revoke|remove) &lt;player&gt;</code></p>\n</li>\n<li>\n<p><code>/plot deny &lt;player&gt;</code></p>\n</li>\n<li>\n<p><code>/plot kick &lt;player&gt;</code></p>\n</li>\n<li>\n<p><code>/plot clear</code> (run twice to confirm)</p>\n</li>\n<li>\n<p><code>/plot delete</code> (run twice to confirm)</p>\n</li>\n<li>\n<p><code>/p ...</code> (alias for <code>/plot ...</code>)</p>\n</li>\n</ul>\n","date_published":"2026-03-12T00:05:01Z","id":"https://content.luanti.org/packages/bookgirlxoxo/plots/","image":"https://content.luanti.org/thumbnails/4/0c279d977f.png","language":"en","summary":"plot world system inspired by PlotSquared for Luanti","tags":["new_package"],"title":"New: plots","url":"https://content.luanti.org/packages/bookgirlxoxo/plots/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"stimers\">stimers <a class=\"header-anchor\" href=\"#stimers\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><code>stimers</code> is a server-side timer/cooldown wrapper for Luanti mods.</p>\n<p>It stores expiry timestamps as Unix seconds in mod storage, so timers persist across reconnects and server restarts.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Server-side cooldown/timer state</li>\n<li>Unix expiry storage</li>\n<li>Shared API for any mod</li>\n</ul>\n<h2 id=\"api\">API <a class=\"header-anchor\" href=\"#api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>All functions are on the global table <code>stimers</code>.</p>\n<h3 id=\"core-helpers\">Core helpers <a class=\"header-anchor\" href=\"#core-helpers\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>stimers.now() -&gt; integer</code></li>\n<li><code>stimers.make_key(scope, key) -&gt; string|nil</code></li>\n</ul>\n<h3 id=\"expiry-operations\">Expiry operations <a class=\"header-anchor\" href=\"#expiry-operations\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>stimers.get_expires_at(player_or_name, key) -&gt; integer</code></li>\n<li><code>stimers.set_expires_at(player_or_name, key, unix_ts) -&gt; boolean</code></li>\n<li><code>stimers.clear(player_or_name, key) -&gt; boolean</code></li>\n</ul>\n<h3 id=\"cooldown-operations\">Cooldown operations <a class=\"header-anchor\" href=\"#cooldown-operations\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>stimers.start(player_or_name, key, duration_seconds) -&gt; ok, expires_at</code></li>\n<li><code>stimers.remaining(player_or_name, key[, now_ts]) -&gt; remaining_seconds, expires_at</code></li>\n<li><code>stimers.is_ready(player_or_name, key[, now_ts]) -&gt; ready, remaining_seconds, expires_at</code></li>\n<li><code>stimers.check_and_start(player_or_name, key, duration_seconds) -&gt; allowed, remaining_seconds, expires_at</code></li>\n</ul>\n<p><code>check_and_start</code> is the most useful wrapper:</p>\n<ul>\n<li>If timer is active, returns <code>allowed=false</code> and current remaining seconds.</li>\n<li>If timer is ready, starts it and returns <code>allowed=true</code>.</li>\n</ul>\n<h3 id=\"cleanup\">Cleanup <a class=\"header-anchor\" href=\"#cleanup\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>stimers.clear_player(player_or_name[, key_prefix]) -&gt; removed_count</code></li>\n</ul>\n<h2 id=\"integration-example\">Integration Example <a class=\"header-anchor\" href=\"#integration-example\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">ST</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nb\">rawget</span><span class=\"p\">(</span><span class=\"nb\">_G</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;stimers&quot;</span><span class=\"p\">)</span>\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">KEY</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">ST</span><span class=\"w\"> </span><span class=\"ow\">and</span><span class=\"w\"> </span><span class=\"nv\">ST</span><span class=\"p\">.</span><span class=\"nf\">make_key</span><span class=\"p\">(</span><span class=\"s2\">&quot;my_mod&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;ability_x&quot;</span><span class=\"p\">)</span><span class=\"w\"> </span><span class=\"ow\">or</span><span class=\"w\"> </span><span class=\"s2\">&quot;my_mod:ability_x&quot;</span>\n\n<span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"kr\">function</span><span class=\"w\"> </span><span class=\"nf\">use_ability</span><span class=\"p\">(</span><span class=\"nv\">player</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"ow\">not</span><span class=\"w\"> </span><span class=\"nv\">ST</span><span class=\"w\"> </span><span class=\"ow\">or</span><span class=\"w\"> </span><span class=\"ow\">not</span><span class=\"w\"> </span><span class=\"nv\">KEY</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">        </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;Timer API unavailable.&quot;</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span>\n\n<span class=\"w\">    </span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">allowed</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">remaining</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">ST</span><span class=\"p\">.</span><span class=\"nf\">check_and_start</span><span class=\"p\">(</span><span class=\"nv\">player</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">KEY</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"mi\">30</span><span class=\"p\">)</span>\n<span class=\"w\">    </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"ow\">not</span><span class=\"w\"> </span><span class=\"nv\">allowed</span><span class=\"w\"> </span><span class=\"kr\">then</span>\n<span class=\"w\">        </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"kc\">false</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nb\">string.format</span><span class=\"p\">(</span><span class=\"s2\">&quot;Ability cooldown: wait %ds.&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nb\">math.max</span><span class=\"p\">(</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nb\">math.ceil</span><span class=\"p\">(</span><span class=\"nv\">remaining</span><span class=\"w\"> </span><span class=\"ow\">or</span><span class=\"w\"> </span><span class=\"mi\">0</span><span class=\"p\">)))</span>\n<span class=\"w\">    </span><span class=\"kr\">end</span>\n\n<span class=\"w\">    </span><span class=\"c1\">-- ability logic here</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;Ability activated.&quot;</span>\n<span class=\"kr\">end</span>\n</pre></div>\n<h2 id=\"hooking-into-your-mod\">Hooking Into Your Mod <a class=\"header-anchor\" href=\"#hooking-into-your-mod\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Add <code>stimers</code> to your mod <code>depends</code> in <code>mod.conf</code>.</li>\n<li>Build a namespaced key per cooldown.</li>\n<li>Gate action handlers with <code>check_and_start</code>.</li>\n</ol>\n","date_published":"2026-03-12T00:04:21Z","id":"https://content.luanti.org/packages/bookgirlxoxo/stimers/","image":"https://content.luanti.org/thumbnails/4/04f8747ea0.png","language":"en","summary":"Server-side timer and cooldown API with Unix expiration storage","tags":["new_package"],"title":"New: stimers","url":"https://content.luanti.org/packages/bookgirlxoxo/stimers/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8c52fe13f452282651799b97c050dd00?s=64&d=retro&r=g","name":"tbook","url":"https://content.luanti.org/users/tbook/"},"content_html":"<h1 id=\"seasons\">seasons <a class=\"header-anchor\" href=\"#seasons\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Smooth biome-driven seasons for VoxeLibre/Luanti.</p>\n<h2 id=\"status\">Status <a class=\"header-anchor\" href=\"#status\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Prototype: seasonal foliage, spring flowers, and weather snow-bias hooks are active.</p>\n<h2 id=\"current-features\">Current Features <a class=\"header-anchor\" href=\"#current-features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>20-day year by default (configurable).</li>\n<li>Biome-driven continuous state:\n<ul>\n<li><code>thermal</code></li>\n<li><code>moisture</code></li>\n<li><code>dthermal_dt</code></li>\n</ul>\n</li>\n<li>Oak leaves only (<code>mcl_core:leaves</code>) with variant nodes:\n<ul>\n<li><code>seasons:oak_leaves_spring</code></li>\n<li><code>mcl_core:leaves</code> (summer)</li>\n<li><code>seasons:oak_leaves_fall_red</code></li>\n<li><code>seasons:oak_leaves_fall_yellow</code></li>\n<li><code>seasons:oak_leaves_winter</code></li>\n</ul>\n</li>\n<li>Grass block (<code>mcl_core:dirt_with_grass</code>) with variant nodes:\n<ul>\n<li><code>seasons:dirt_with_grass_spring</code></li>\n<li><code>mcl_core:dirt_with_grass</code> (summer/fall)</li>\n<li><code>seasons:dirt_with_grass_winter</code></li>\n</ul>\n</li>\n<li>Epoch-based updates for slow seasonal progression (configurable days per epoch).</li>\n<li>LBM on block load updates leaves only when their stored epoch is stale.</li>\n<li>Periodic player-proximate leaf/grass updates run continuously with budgeted batches.</li>\n<li>Leaf background sweeper gradually catches up loaded far-away areas.</li>\n<li>Spring flower controller (temperate biomes only):\n<ul>\n<li>spawns in spring, thins in summer, drops near zero in fall</li>\n<li>excludes Nether/End and beach/ocean biome variants</li>\n<li>only manages flowers placed by this mod</li>\n</ul>\n</li>\n<li>Flower dormancy controller (non-managed small flowers + ferns):\n<ul>\n<li>swaps flowers to dormant winter stumps in winter</li>\n<li>restores original flowers in spring</li>\n<li>uses gradual budgeted updates and LBM-on-load correction</li>\n<li>uses a cold-sensitive target so true winter temperatures drive near-full dormancy</li>\n</ul>\n</li>\n<li>Seasonal weather framework (lightweight):\n<ul>\n<li>wraps VoxeLibre <code>mcl_weather.has_snow(pos)</code> with seasonal bias</li>\n<li>winter-biased snow probability from biome data + season state</li>\n<li>preserves original snow rules and only adds extra snow-possible cases</li>\n<li>seasonally tunes weather transition weights:\n<ul>\n<li>shorter clear-weather durations in winter</li>\n<li>stronger <code>none-&gt;snow</code> and <code>rain-&gt;snow</code> routing in winter</li>\n<li>weather events still end via normal VoxeLibre durations/transitions</li>\n</ul>\n</li>\n</ul>\n</li>\n<li>Seasonal melt controller:\n<ul>\n<li>gradually melts snow + ice in spring</li>\n<li>deterministic summer clear in non-permanent snow biomes</li>\n<li>deterministic spring clear once melt pressure passes configured threshold</li>\n<li>LBM-on-load correction for stale unloaded chunks</li>\n<li>background sweeper for loaded far-away areas</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/seasons_state</code>\n<ul>\n<li>Show current phase, derived season, biome and state values at your position.</li>\n</ul>\n</li>\n<li><code>/seasons_set_day &lt;day_float&gt;</code>\n<ul>\n<li>Set virtual seasons day (days since world start, fractional allowed).</li>\n</ul>\n</li>\n<li><code>/seasons_set_season &lt;spring|summer|fall|winter&gt;</code>\n<ul>\n<li>Jump to a season midpoint in the current year cycle.</li>\n</ul>\n</li>\n<li><code>/seasons_force_update [budget]</code>\n<ul>\n<li>Immediately apply seasonal foliage updates around your player.</li>\n</ul>\n</li>\n<li><code>/seasons_flowers_state</code>\n<ul>\n<li>Show biome eligibility and current flower target density at your position.</li>\n</ul>\n</li>\n<li><code>/seasons_force_flowers [budget]</code>\n<ul>\n<li>Immediately run spring-flower spawn/decay around your player.</li>\n</ul>\n</li>\n<li><code>/seasons_force_flower_dormancy [budget]</code>\n<ul>\n<li>Immediately run seasonal dormancy swaps around your player.</li>\n</ul>\n</li>\n<li><code>/seasons_flower_dormancy_state [radius]</code>\n<ul>\n<li>Show local dormancy debug counts (<code>target</code>, <code>thermal_target</code>, active/dormant totals).</li>\n</ul>\n</li>\n<li><code>/seasons_weather_state</code>\n<ul>\n<li>Show <code>winterness</code>, <code>onset</code>, <code>snow_possible</code>, and final snow-bias chance at your position.</li>\n</ul>\n</li>\n<li><code>/seasons_force_melt [budget]</code>\n<ul>\n<li>Immediately run seasonal snow/ice melt updates around your player.</li>\n</ul>\n</li>\n<li><code>/seasons_melt_state</code>\n<ul>\n<li>Show melt runtime config values (debug/tuning).</li>\n</ul>\n</li>\n</ul>\n<h2 id=\"main-files\">Main Files <a class=\"header-anchor\" href=\"#main-files\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>init.lua</code></li>\n<li><code>config.lua</code></li>\n<li><code>model.lua</code></li>\n<li><code>biome_profiles.lua</code></li>\n<li><code>compat_voxelibre.lua</code></li>\n<li><code>texture_plan.lua</code></li>\n<li><code>leaf_nodes.lua</code></li>\n<li><code>leaf_update.lua</code></li>\n<li><code>flowers_plan.lua</code></li>\n<li><code>flowers_update.lua</code></li>\n<li><code>flower_dormancy.lua</code></li>\n<li><code>weather_plan.lua</code></li>\n<li><code>weather_voxelibre.lua</code></li>\n<li><code>weather_weights.lua</code></li>\n<li><code>snow_melt.lua</code></li>\n<li><code>commands.lua</code></li>\n<li><code>settingtypes.txt</code></li>\n<li><code>mod.conf</code></li>\n</ul>\n<h2 id=\"license\">License <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>LICENSE</code> (GPL-3.0-or-later)</li>\n<li><code>LICENSE.md</code> summary</li>\n<li><code>docs/LICENSING.md</code> media policy</li>\n</ul>\n","date_published":"2026-03-12T00:02:57Z","id":"https://content.luanti.org/packages/tbook/seasons/","image":"https://content.luanti.org/thumbnails/4/c96cdade27.png","language":"en","summary":"Biome driven seasons","tags":["new_package"],"title":"New: Seasons","url":"https://content.luanti.org/packages/tbook/seasons/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9bbaf2dbdd30f66279a38e4eb70f7159?s=64&d=retro&r=g","name":"KMDev","url":"https://content.luanti.org/users/kmdev/"},"content_html":"<h1 id=\"coins\">Coins <a class=\"header-anchor\" href=\"#coins\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><img src=\"screenshot_20260307_190056.png\" alt=\"Coins screenshot\" title=\"coins screenshot\"></p>\n<p>A coin mod for Luanti</p>\n<p>comes in denominations of <strong>1</strong>, <strong>5</strong>, <strong>20</strong>, <strong>50</strong>, and <strong>100</strong> units</p>\n<h1 id=\"crafting\">Crafting <a class=\"header-anchor\" href=\"#crafting\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>coins are crafted by putting the <strong>Hammer</strong> with various plates that are made out of certain minerals in a crafting grid.\nthe plates are crafted by putting a <strong>Hammer</strong> with the respective mineral in a crafting grid. Both the recipes are shapeless.</p>\n<p>The metal plates used in the crafting recipes varies with the coin you want to craft.</p>\n<ul>\n<li><strong>Copper Plate</strong> -&gt; 1 Unit Coin</li>\n<li><strong>Iron/ Silver Plate</strong> -&gt; 5 Unit Coin\n<ul>\n<li>if a compatible mod containing silver is found, such as <code>elepower</code>, this will be used instead of iron.</li>\n</ul>\n</li>\n<li><strong>Gold Plate</strong> -&gt; 20 Unit Coin</li>\n<li><strong>Emerald Plate</strong> -&gt; 50 Unit Coin</li>\n<li><strong>Diamond Plate</strong> -&gt; 100 Unit Coin</li>\n</ul>\n<h1 id=\"mod-compatibility\">Mod compatibility <a class=\"header-anchor\" href=\"#mod-compatibility\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Currently, the only mods with support are <code>elepower</code> and <code>industrialtest</code>.</p>\n<p>The mod compatibility in this mod only extends to the plates used to craft the individual coins. The Hammer may be included in this as well. If a mod with matching plates are found, such as <code>elepower</code>, those plates will replace the ones from this mod.</p>\n<p>In addition to the behaviour above, if there are multiple mods that add plates, one will not overwrite another, but there will simply be more recipes offered.</p>\n<hr>\n<p>transalations are being worked on\n<a href=\"https://translate.codeberg.org/engage/kmdev_coins/\" rel=\"nofollow\">\n<img src=\"https://translate.codeberg.org/widget/kmdev_coins/svg-badge.svg\" alt=\"Translation status\">\n</a></p>\n","date_published":"2026-03-10T22:41:21Z","id":"https://content.luanti.org/packages/kmdev/kmdev_coins/","image":"https://content.luanti.org/thumbnails/4/aae9377cea.png","language":"en","summary":"Adds coins to Mineclonia, VoxelLibre and its derivatives","tags":["new_package"],"title":"New: Coins","url":"https://content.luanti.org/packages/kmdev/kmdev_coins/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/26fb10322f143c61853be698b71204c9?s=64&d=retro&r=g","name":"xyzshantaram","url":"https://content.luanti.org/users/xyzshantaram/"},"content_html":"<h1 id=\"copper-rails\">Copper Rails <a class=\"header-anchor\" href=\"#copper-rails\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Adds crafting recipes for rails using copper ingots instead of iron or gold.\nTested with VoxeLibre 0.91.2 on Luanti 5.15, should work with Mineclonia too.</p>\n<h2 id=\"crafting-recipes\">Crafting Recipes <a class=\"header-anchor\" href=\"#crafting-recipes\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"copper-rail-16\">Copper Rail (16) <a class=\"header-anchor\" href=\"#copper-rail-16\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<pre><code>C   C\nC S C\nC   C\n</code></pre><ul>\n<li>C = Copper Ingot</li>\n<li>S = Stick</li>\n</ul>\n<h3 id=\"copper-powered-rail-6\">Copper Powered Rail (6) <a class=\"header-anchor\" href=\"#copper-powered-rail-6\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<pre><code>C   C\nC S C\nC R C\n</code></pre><ul>\n<li>C = Copper Ingot</li>\n<li>S = Stick</li>\n<li>R = Redstone Dust</li>\n</ul>\n<h2 id=\"license\">LICENSE <a class=\"header-anchor\" href=\"#license\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p><a href=\"https://github.com/xyzshantaram/mcl_copper_rails/blob/main/LICENSE\" rel=\"nofollow\">The MIT License</a>.</p>\n","date_published":"2026-03-09T22:46:10Z","id":"https://content.luanti.org/packages/xyzshantaram/vl_copper_rails_recipes/","image":"https://content.luanti.org/thumbnails/4/0788cc3e02.png","language":"en","summary":"Adds the ability to craft rails and powered rails from copper ingots instead of iron/gold","tags":["new_package"],"title":"New: VoxeLibre Copper Rails recipes","url":"https://content.luanti.org/packages/xyzshantaram/vl_copper_rails_recipes/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/27bf2834e3c78d10a832a4e827ddf9f7?s=64&d=retro&r=g","name":"Geraos16","url":"https://content.luanti.org/users/Geraos16/"},"content_html":"<h1 id=\"minipixels\">MiniPixels <a class=\"header-anchor\" href=\"#minipixels\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<blockquote>\n<p>8x8 Texture pack, made out of my free time and how i wanted the game to look like, its not complete yet and MTG is still in progress to be completely supported, but its already quite playable it uses some palettes of Pixel Perfection and core MTG alike, but the textures are made by me</p>\n</blockquote>\n<h2 id=\"whats-planned\">What's planned? <a class=\"header-anchor\" href=\"#whats-planned\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Its planned to support MTG game completely, plus just as Pixel Perfection XT support most used mods that u can find on contentDB</li>\n</ul>\n<p>Note: Some of the textures on the second image havent been renamed and added, but this is the current state of the pack</p>\n<h3 id=\"which-mods\">Which mods? <a class=\"header-anchor\" href=\"#which-mods\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>MTG (complete)</li>\n<li>3d_armor (WIP)</li>\n</ul>\n<blockquote>\n<p>I might just use XT armors and just do INV textures</p>\n</blockquote>\n<ul>\n<li>Stamina (Complete i think)</li>\n<li>Thirsty (WIP)</li>\n<li>More Ores (complete)</li>\n<li>Golden Tools (complete)</li>\n<li>Spears</li>\n<li>Few more mods i use</li>\n</ul>\n<h4 id=\"this-texture-pack-is-licenced-under-cc-by-sa-40\">This texture pack is licenced under CC-BY-SA-4.0 <a class=\"header-anchor\" href=\"#this-texture-pack-is-licenced-under-cc-by-sa-40\" rel=\"nofollow\">\ud83d\udd17</a></h4>\n","date_published":"2026-03-09T00:17:20Z","id":"https://content.luanti.org/packages/Geraos16/minipixels_beta/","image":"https://content.luanti.org/thumbnails/4/aabd33bf0a.png","language":"en","summary":"A familiar looking 8x8 texture pack","tags":["new_package"],"title":"New: MiniPixels","url":"https://content.luanti.org/packages/Geraos16/minipixels_beta/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/3aa6928b996955bc59ac3c443ac4a258?s=64&d=retro&r=g","name":"Tim","url":"https://content.luanti.org/users/timvh/"},"content_html":"<p><a href='https://content.luanti.org/packages/timvh/scores/'>Read more</a></p>","date_published":"2026-03-09T00:03:55Z","id":"https://content.luanti.org/packages/timvh/scores/","image":"https://content.luanti.org/thumbnails/4/0879409dd2.png","language":"en","summary":"Keep track of player scores and show the score and a ranking in the HUD","tags":["new_package"],"title":"New: Scores","url":"https://content.luanti.org/packages/timvh/scores/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9602eb83dac32a0225470f5d78461cac?s=64&d=retro&r=g","name":"cathisnothome","url":"https://content.luanti.org/users/cathisnothome/"},"content_html":"<h1 id=\"skigclogg\">SkigClogg <a class=\"header-anchor\" href=\"#skigclogg\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A skyblock mod for m*necraft-like Luanti games which is in the vein of the maps made by Noobcrew. Spawn on an L-shaped island, with naught but one chest and one tree.</p>\n<p>Works with: Minetest Game, Mineclonia, VoxeLibre, CloneCraft;Libre and more!</p>\n<p>Code is licensed under the GNU GPL-3.0-only. Media is licensed under the CC BY-SA 4.0 [<a href=\"https://creativecommons.org/licenses/by-sa/4.0/\" rel=\"nofollow\">https://creativecommons.org/licenses/by-sa/4.0/</a>]</p>\n<p>INSTALLATION/USAGE:</p>\n<ol>\n<li>The folder's name should be 'ofcath_skigclogg' which contains init.lua, mod.conf, etc</li>\n<li>Move to/ensure 'ofcath_skigclogg' is in '&lt;path&gt;/.minetest/mods'</li>\n<li>Create world as 'singlenode'</li>\n<li>Have fun!</li>\n</ol>\n","date_published":"2026-03-09T00:03:31Z","id":"https://content.luanti.org/packages/cathisnothome/ofcath_skigclogg/","image":"https://content.luanti.org/thumbnails/4/ab41e149d2.png","language":"en","summary":"Spawn on an L-shaped island, with naught but one chest and one tree.","tags":["new_package"],"title":"New: SkigClogg","url":"https://content.luanti.org/packages/cathisnothome/ofcath_skigclogg/"},{"author":{"avatar":"https://content.luanti.org/uploads/3b172679f4.png","name":"TPH","url":"https://content.luanti.org/users/TPH/"},"content_html":"<p>Simple API that converts files and folders into a more intuitive readable format!</p>\n<p>Can convert mod <code>conf</code> files into a readable format which permit easier modification - as well as converting it back into a string that can be written to a <code>conf</code> file</p>\n<p>API doc: <a href=\"https://codeberg.org/TPH/tph_filesystem/src/branch/master/api.md\" rel=\"nofollow\">https://codeberg.org/TPH/tph_filesystem/src/branch/master/api.md</a></p>\n","date_published":"2026-03-07T22:28:57Z","id":"https://content.luanti.org/packages/TPH/tph_filesystem/","image":"https://content.luanti.org/thumbnails/4/1912f411e2.png","language":"en","summary":"API for loading files into a basic readable format as well as loading and converting conf files","tags":["new_package"],"title":"New: TPH's Basic Filesystem","url":"https://content.luanti.org/packages/TPH/tph_filesystem/"},{"author":{"avatar":"https://content.luanti.org/uploads/229d523d2e.png","name":"Mirtilo","url":"https://content.luanti.org/users/Mirtilo/"},"content_html":"<h1 id=\"bauniclonia\">Bauniclonia <a class=\"header-anchor\" href=\"#bauniclonia\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Fresh and tasty textures, now in mineclonia!</p>\n<p>Bauniclonia is a version of the Baunilha texture pack designed for Mineclonia.\nThe goal is to maintaining the same look and style, but also make some changes so that the textures resemble their counterparts in Minecraft.</p>\n<p>This pack is still a work in progress! Everything is subject to change.</p>\n<h2 id=\"game-support\">Game Support: <a class=\"header-anchor\" href=\"#game-support\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>As the name suggests, this pack supports <em>Mineclonia</em> ONLY.</p>\n<p>It could work mostly fine with <em>Voxelibre</em>, however, glitches may occur, and I have no intention of fixing them for this game.</p>\n<p>For a similar look in Minetest Game, try the <a href=\"https://content.luanti.org/packages/Mirtilo/baunilha/\" rel=\"nofollow\">Baunilha</a> pack.</p>\n","date_published":"2026-03-07T22:25:10Z","id":"https://content.luanti.org/packages/Mirtilo/bauniclonia/","image":"https://content.luanti.org/thumbnails/4/78250c4a81.png","language":"en","summary":"Fresh and tasty textures, now in Mineclonia!","tags":["new_package"],"title":"New: Bauniclonia","url":"https://content.luanti.org/packages/Mirtilo/bauniclonia/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/5892764bee3d71cb01d3adbe969f7386?s=64&d=retro&r=g","name":"ems111","url":"https://content.luanti.org/users/ems111/"},"content_html":"<p>A mod for real explorers.</p>\n<p>Adds structures whose difficulty and loot increase with distance from the center of the map.</p>\n<p>Each structure may have random mob spawner and is dependend on biome. For example in cold biomes You can find Strays; in desert - Husk.\nTreasures and apperance are dependend on distance and biome too. Far away from spawn loot is richer and contains precious items.</p>\n","date_published":"2026-03-06T00:27:55Z","id":"https://content.luanti.org/packages/ems111/vl_abandoned_places/","image":"https://content.luanti.org/thumbnails/4/70a5f312db.png","language":"en","summary":"Adds many structures with loot.","tags":["new_package"],"title":"New: VoxeLibre Abandoned Places","url":"https://content.luanti.org/packages/ems111/vl_abandoned_places/"},{"author":{"avatar":"https://content.luanti.org/uploads/d1164c3855.png","name":"epCode","url":"https://content.luanti.org/users/epCode/"},"content_html":"<h2 id=\"instant-respawn\">Instant Respawn <a class=\"header-anchor\" href=\"#instant-respawn\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Enabling this on your world will force players who die to respawn instantly, skipping the default death screen entirely.</li>\n</ul>\n<p><em>May not work on certain games with custom death screens.</em></p>\n","date_published":"2026-03-06T00:25:47Z","id":"https://content.luanti.org/packages/epCode/instant_respawn/","image":"https://content.luanti.org/thumbnails/4/b4c410db50.png","language":"en","summary":"Skips the death screen.","tags":["new_package"],"title":"New: Instant Respawn","url":"https://content.luanti.org/packages/epCode/instant_respawn/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/b129482b98083c4a3b45d3009b0681df?s=64&d=retro&r=g","name":"Emie","url":"https://content.luanti.org/users/Emie/"},"content_html":"<p>Runethera: Craft Your Magic, Shape Your World\nRunethera is a powerful magic mod for Minetest, designed to let players create their own spells using runes. Whether you want to unleash biome-destroying explosions in PvP battles or build entire cities with a flick of your wand, Runethera adapts to your playstyle\u2014perfect for builders, adventurers, and PvP enthusiasts alike.</p>\n<p>Key Features:</p>\n<p>\u2728 Custom Spellcrafting \u2013 Combine runes to design unique spells, from devastating attacks to constructive wonders.\n\u2696\ufe0f Balanced Gameplay \u2013 No overpowered builds; magic is powerful but fair, ensuring a fun experience for everyone.\n\ud83c\udfd9\ufe0f Build &amp; Destroy \u2013 Reshape the world around you, whether you\u2019re crafting grand structures or unleashing chaos in PvP.\n\ud83d\udd27 Work in Progress \u2013 Runethera is actively being developed. Bug reports, ideas, and feedback are welcome!</p>\n<p>Get Involved:</p>\n<p>Found a bug? Have an idea? Join the discussion on Element/Matrix:</p>\n<p>\ud83d\udcac #Wizard_World:matrix.org</p>\n<p>Note: This mod is a work in progress. Your feedback helps shape its future!</p>\n","date_published":"2026-02-28T16:12:30Z","id":"https://content.luanti.org/packages/Emie/runethera/","image":"https://content.luanti.org/thumbnails/4/df9868a14e.png","language":"en","summary":"Runethera is a magic mod where you craft custom spells using runes\u2014from PvP explosions to city-building magic, balanced for fair gameplay. Still a work in progress, so join us on Matrix!","tags":["new_package"],"title":"New: Runethera","url":"https://content.luanti.org/packages/Emie/runethera/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/1ceaab3c2b889355e7782c6a296e78a9?s=64&d=retro&r=g","name":"solsword","url":"https://content.luanti.org/users/solsword/"},"content_html":"<p>Provides an API for other mods to create &quot;season clock&quot; tables with various parameters (season names, durations, etc.) and then you can ask a season clock what the current season is. Plans include integrated-solar-energy-based seasons and per-position seasons where biome &quot;heat&quot; could be used instead as &quot;equator-proximity&quot; and the season clock could generate a season-appropriate time-varying heat value.</p>\n<p>Source code (in sub-folder of main repo) at: <a href=\"https://codeberg.org/pmawhorter/mcremix/src/branch/main/mods/seasons_clock\" rel=\"nofollow\">https://codeberg.org/pmawhorter/mcremix/src/branch/main/mods/seasons_clock</a></p>\n","date_published":"2026-02-28T15:46:27Z","id":"https://content.luanti.org/packages/solsword/seasons_clock/","image":"https://content.luanti.org/thumbnails/4/51cb77391b.png","language":"en","summary":"API for getting various \"season\" parameters based on server time and a few customiable settings. Doesn't change gameplay; just a library that other mods can use to do seasonal things.","tags":["new_package"],"title":"New: Seasons Clock","url":"https://content.luanti.org/packages/solsword/seasons_clock/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/8c52fe13f452282651799b97c050dd00?s=64&d=retro&r=g","name":"tbook","url":"https://content.luanti.org/users/tbook/"},"content_html":"<h1 id=\"animalia_mcl_hunger\">animalia_mcl_hunger <a class=\"header-anchor\" href=\"#animalia_mcl_hunger\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Compatibility mod for running <a href=\"https://content.luanti.org/packages/ElCeejo/animalia/\" rel=\"nofollow\">Animalia</a> with VoxeLibre/MineClone-style hunger and item IDs.</p>\n<h2 id=\"why-this-exists\">Why this exists <a class=\"header-anchor\" href=\"#why-this-exists\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Animalia is written to work across multiple game ecosystems, but some interactions use classic Minetest item IDs by default (<code>bucket:bucket_empty</code>, <code>wool:*</code>, <code>animalia:saddle</code>, etc.).</p>\n<p>This mod patches selected Animalia mob interactions so they behave naturally in VoxeLibre-style games:</p>\n<ul>\n<li>Sheep can be sheared with <code>mcl_tools:shears</code> and drop <code>mcl_wool:*</code>.</li>\n<li>Sheep dyeing accepts both <code>dye:*</code> and <code>mcl_dye:*</code>.</li>\n<li>Cows can be milked with <code>mcl_buckets:bucket_empty</code> and return <code>mcl_mobitems:milk_bucket</code> (or fallback).</li>\n<li>Horses can be saddled with <code>mcl_mobitems:saddle</code>.</li>\n<li>Animalia meats are marked edible in <code>mcl_hunger</code> games.</li>\n<li>Duplicate Animalia utility/material items can be canonicalized to VoxeLibre IDs.</li>\n</ul>\n<h2 id=\"local-assumptions\">Local assumptions <a class=\"header-anchor\" href=\"#local-assumptions\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This repo is currently placed in:</p>\n<ul>\n<li><code>mods/animalia_mcl_hunger</code></li>\n</ul>\n<p>and was cross-checked against local sources in:</p>\n<ul>\n<li><code>mods/animalia</code></li>\n<li><code>games/mineclone2</code></li>\n</ul>\n<p>The behavior should also be relevant to modern VoxeLibre item naming, but this mod intentionally keeps fallbacks configurable (see Settings).</p>\n<h2 id=\"install\">Install <a class=\"header-anchor\" href=\"#install\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>Place this mod in your world or global mods folder.</li>\n<li>Ensure dependencies are available:\n<ul>\n<li>Required: <code>animalia</code>, <code>mcl_hunger</code></li>\n<li>Optional but typically present in VoxeLibre stacks: <code>mcl_tools</code>, <code>mcl_wool</code>, <code>mcl_buckets</code>, <code>mcl_mobitems</code>, <code>mcl_dye</code>, <code>dye</code></li>\n</ul>\n</li>\n<li>Enable the mod in your world.</li>\n</ol>\n<h2 id=\"settings\">Settings <a class=\"header-anchor\" href=\"#settings\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>All settings are under the <code>animalia_mcl_hunger.*</code> namespace and are documented in <code>settingtypes.txt</code>.</p>\n<p>Common ones:</p>\n<ul>\n<li><code>animalia_mcl_hunger.enable_food</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.enable_shearing</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.enable_milking</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.enable_horse_saddle</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.enable_item_dedupe</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.dedupe_meats</code> (default: <code>true</code>)</li>\n<li><code>animalia_mcl_hunger.sheep_regrow_seconds</code> (default: <code>600</code>, real-time seconds)</li>\n<li><code>animalia_mcl_hunger.milk_cooldown_seconds</code> (default: <code>300</code>)</li>\n<li><code>animalia_mcl_hunger.shears_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.empty_bucket_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.milk_bucket_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.horse_saddle_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.leather_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.feather_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.pig_food_items</code> (CSV list)</li>\n<li><code>animalia_mcl_hunger.wolf_food_items</code> (CSV list)</li>\n</ul>\n<p>The CSV list settings pick the first registered item ID at runtime, so you can tune compatibility without editing Lua files.</p>\n<h2 id=\"duplicate-item-policy\">Duplicate item policy <a class=\"header-anchor\" href=\"#duplicate-item-policy\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>With <code>animalia_mcl_hunger.enable_item_dedupe = true</code>, this mod treats VoxeLibre items as canonical where available:</p>\n<ul>\n<li><code>animalia:shears</code> -&gt; <code>mcl_tools:shears</code></li>\n<li><code>animalia:saddle</code> -&gt; <code>mcl_mobitems:saddle</code></li>\n<li><code>animalia:bucket_milk</code> -&gt; <code>mcl_mobitems:milk_bucket</code></li>\n<li><code>animalia:leather</code> -&gt; <code>mcl_mobitems:leather</code></li>\n<li><code>animalia:feather</code> -&gt; <code>mcl_mobitems:feather</code></li>\n</ul>\n<p>It also clears crafting outputs for those Animalia IDs and rewrites registered mob drops to canonical IDs after mods load.</p>\n<p>When dedupe is enabled, this mod also adds compatibility groups (<code>leather</code>, <code>feather</code>, <code>food_milk</code>) to the selected canonical VoxeLibre items so Animalia recipes and checks still work.</p>\n<p>If <code>animalia_mcl_hunger.dedupe_meats = true</code>, these IDs are also canonicalized when available:</p>\n<ul>\n<li><code>animalia:beef_raw</code> -&gt; <code>mcl_mobitems:beef</code></li>\n<li><code>animalia:beef_cooked</code> -&gt; <code>mcl_mobitems:cooked_beef</code></li>\n<li><code>animalia:mutton_raw</code> -&gt; <code>mcl_mobitems:mutton</code></li>\n<li><code>animalia:mutton_cooked</code> -&gt; <code>mcl_mobitems:cooked_mutton</code></li>\n<li><code>animalia:porkchop_raw</code> -&gt; <code>mcl_mobitems:porkchop</code></li>\n<li><code>animalia:porkchop_cooked</code> -&gt; <code>mcl_mobitems:cooked_porkchop</code></li>\n<li><code>animalia:poultry_raw</code> -&gt; <code>mcl_mobitems:chicken</code></li>\n<li><code>animalia:poultry_cooked</code> -&gt; <code>mcl_mobitems:cooked_chicken</code></li>\n</ul>\n<h2 id=\"pig-feeding\">Pig feeding <a class=\"header-anchor\" href=\"#pig-feeding\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Animalia pigs are fed from their follow list. This mod appends common VoxeLibre pig foods by default:</p>\n<ul>\n<li><code>mcl_farming:carrot_item</code></li>\n<li><code>mcl_farming:potato_item</code></li>\n<li><code>mcl_farming:beetroot_item</code></li>\n<li><code>mcl_farming:carrot_item_gold</code></li>\n</ul>\n<p>Animalia wolves are also extended to accept common VoxeLibre raw meats by default:</p>\n<ul>\n<li><code>mcl_mobitems:beef</code></li>\n<li><code>mcl_mobitems:mutton</code></li>\n<li><code>mcl_mobitems:porkchop</code></li>\n<li><code>mcl_mobitems:chicken</code></li>\n<li><code>mcl_mobitems:bone</code></li>\n</ul>\n<h2 id=\"optional-spawn-suppression\">Optional spawn suppression <a class=\"header-anchor\" href=\"#optional-spawn-suppression\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>To suppress overlapping default <code>mobs_mc</code> livestock spawns (and keep only Animalia equivalents), add this to your <code>minetest.conf</code>:</p>\n<pre><code>mobs_mc:cow = 0,0\nmobs_mc:sheep = 0,0\nmobs_mc:pig = 0,0\nmobs_mc:chicken = 0,0\nmobs_mc:horse = 0,0\n</code></pre><p>This is the cleanest approach because it prevents those spawns at source instead of spawning and removing entities afterward.</p>\n<h2 id=\"notes-on-upstream-naming\">Notes on upstream naming <a class=\"header-anchor\" href=\"#notes-on-upstream-naming\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Luanti is the current name of the Minetest engine project: <a href=\"https://www.luanti.org/\" rel=\"nofollow\">https://www.luanti.org/</a></li>\n<li>VoxeLibre package/source metadata:\n<ul>\n<li>Package page: <a href=\"https://content.luanti.org/packages/VoxeLibre/voxelibre/\" rel=\"nofollow\">https://content.luanti.org/packages/VoxeLibre/voxelibre/</a></li>\n<li>Source repository: <a href=\"https://git.minetest.land/VoxeLibre/voxelibre\" rel=\"nofollow\">https://git.minetest.land/VoxeLibre/voxelibre</a></li>\n</ul>\n</li>\n</ul>\n<h2 id=\"scope\">Scope <a class=\"header-anchor\" href=\"#scope\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>This mod patches behavior at runtime by overriding <code>on_rightclick</code> handlers after mods load. It does <strong>not</strong> modify Animalia source files directly.</p>\n","date_published":"2026-02-28T15:04:57Z","id":"https://content.luanti.org/packages/tbook/animalia_mcl_hunger/","image":"https://content.luanti.org/thumbnails/4/1b938933e9.png","language":"en","summary":"Compatibility glue so Animalia livestock interactions and food work with VoxeLibre-style hunger/items.","tags":["new_package"],"title":"New: Animalia VoxeLibre Compat","url":"https://content.luanti.org/packages/tbook/animalia_mcl_hunger/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/a128c1fa6a3de80e4580ac6684782e05?s=64&d=retro&r=g","name":"crisdan99","url":"https://content.luanti.org/users/crisdan99/"},"content_html":"<p>CTtTranslate is a development mod for Minetest that enables automatic chat translation between players. It allows each player to see messages in their preferred language, supporting Spanish, English, Portuguese, and Russian.\nPlayers can choose their language and activate or deactivate the translator, while the owner can configure the translation API (LibreTranslate or Google Translate), message colors, global activation, and decide if players\u2019 settings are saved permanently.\nThe mod displays original language tags and colors messages according to configuration, providing a clear visual experience of translated chat.\n\u26a0\ufe0f Warnings: This project is under development and may have chat translation issues or cause temporary lag; it does not break worlds or files, but caution is advised. Continuous improvements and new features are planned, based on user feedback and suggestions from the creator, crisdan.</p>\n","date_published":"2026-02-22T23:36:36Z","id":"https://content.luanti.org/packages/crisdan99/ctttranslate/","image":"https://content.luanti.org/thumbnails/4/d42a5d9127.png","language":"en","summary":"Automatic translation of chat between players with colors and language labels. ","tags":["new_package"],"title":"New: CTtTranslate \u2013 Chat Translator","url":"https://content.luanti.org/packages/crisdan99/ctttranslate/"},{"author":{"avatar":"https://content.luanti.org/uploads/b261a92a19.jpg","name":"Mantar","url":"https://content.luanti.org/users/Mantar/"},"content_html":"<h1 id=\"the-hypertrace-mod\">The Hypertrace Mod <a class=\"header-anchor\" href=\"#the-hypertrace-mod\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><em>I've got the might to trace all evil - In every shadow it hides</em></p>\n<p>Hypertrace is an advanced debugging tool for Luanti modding.\nIt provides an item, the R.M.U. Scanner, which can give detailed information\nabout its target.\nCurrently it has two modes, switched by right-click: the Node Scanner that\nscans any pointed node, and the All-Node Scanner that can scan unpointable\nnodes. The latter has a HUD to show what is currently in its sights, and is\nalso useful for watching node timers.\nWhen you left-click, it can display information on node definitions,\nfunctions and where in the source code they were defined, can read and\nmanipulate node timers, and read and edit metadata.</p>\n<p>The tool was designed to help diagnose the reason cocoa pods weren't\ngrowing in a world  I had set up; the on_timer function was overridden, but\nit was hard to tell what had done it in the huge thicket of mods. Using the\nfunctions tab, I could see exactly which file had last done an override of\non_timer, and the line number it happened, allowing me to discover the culprit\nand fix it.\nThe tool also bundles other things I've found useful, with more to come.</p>\n<p>You can grab one with <code>/giveme RMU</code></p>\n<p><em>Like an eagle I descend - My intention is to scan</em></p>\n<p><em>The whole success depends on my research</em></p>\n<h2 id=\"planned-features\">Planned features: <a class=\"header-anchor\" href=\"#planned-features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Scanning of players and objects</li>\n<li>An inspector mode for globally defined namespaces, functions and data</li>\n<li>A mapgen and biome inspection mode</li>\n<li>A detached inventory inspector</li>\n</ul>\n","date_published":"2026-02-22T23:34:41Z","id":"https://content.luanti.org/packages/Mantar/hypertrace/","image":"https://content.luanti.org/thumbnails/4/852a85d319.png","language":"en","summary":"Hypertrace provides the RMU, an advanced debugging and inspection tool.","tags":["new_package"],"title":"New: Hypertrace","url":"https://content.luanti.org/packages/Mantar/hypertrace/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9602eb83dac32a0225470f5d78461cac?s=64&d=retro&r=g","name":"cathisnothome","url":"https://content.luanti.org/users/cathisnothome/"},"content_html":"<h1 id=\"flesh-to-leather\">Flesh to Leather <a class=\"header-anchor\" href=\"#flesh-to-leather\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A simple mod which lets you use rotten flesh as fuel and smelt it into leather. Additionally adds a block of rotten flesh for better storage.</p>\n<p>Supports at least the games: Mineclonia, VoxeLibre, CloneCraft;Libre.</p>\n<p>Code is licensed under the GNU GPL-3.0-only.\nMedia is licensed under the CC BY-SA 4.0 [<a href=\"https://creativecommons.org/licenses/by-sa/4.0/\" rel=\"nofollow\">https://creativecommons.org/licenses/by-sa/4.0/</a>]</p>\n","date_published":"2026-02-22T23:33:15Z","id":"https://content.luanti.org/packages/cathisnothome/ofcath_fleshtoleather/","image":"https://content.luanti.org/thumbnails/4/432b2adb5d.png","language":"en","summary":"A simple mod which lets you use rotten flesh as fuel and smelt it into leather.","tags":["new_package"],"title":"New: Flesh to Leather","url":"https://content.luanti.org/packages/cathisnothome/ofcath_fleshtoleather/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/939355e0b714063988f849c0ca406a72?s=64&d=retro&r=g","name":"Robot10&Scheletor","url":"https://content.luanti.org/users/Robot10_Scheletor/"},"content_html":"<h1 id=\"kitpvp\">kitpvp <a class=\"header-anchor\" href=\"#kitpvp\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>This mod adds a menu with kits for pvp by typing /kitpvp in chat.</p>\n<p>AI used (DuckAI 4o-mini)</p>\n","date_published":"2026-02-22T23:31:41Z","id":"https://content.luanti.org/packages/Robot10_Scheletor/kitpvp/","image":"https://content.luanti.org/thumbnails/4/ab1a302ea4.png","language":"en","summary":"This mod adds kits for pvp in a menu","tags":["new_package"],"title":"New: KitPvP","url":"https://content.luanti.org/packages/Robot10_Scheletor/kitpvp/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/211d438b3acb70ad906d43a0c27a1e15?s=64&d=retro&r=g","name":"Ludus","url":"https://content.luanti.org/users/Ludus/"},"content_html":"<p><strong>TNT Plus</strong> is a Voxelibre/Mineclonia mod heavily inspired by the classic mod <em>Too Much TNT</em>; the uranium system was initially a separate mod. However, it has been incorporated into <em>TNT Plus</em>, as they are nice together.</p>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"more-tnt\">More TNT <a class=\"header-anchor\" href=\"#more-tnt\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><strong>Freeze TNT</strong></li>\n<li><strong>Lava TNT</strong></li>\n<li><strong>Water TNT</strong></li>\n<li><strong>Flat TNT</strong></li>\n<li><strong>Flat Mountain TNT</strong></li>\n<li><strong>Vertical TNT</strong></li>\n<li><strong>House TNT</strong></li>\n<li><strong>Tent TNT</strong></li>\n<li><strong>Rain TNT</strong></li>\n<li><strong>Airstrike TNT</strong></li>\n<li><strong>Mob TNT</strong></li>\n<li><strong>Atomic TNT</strong></li>\n<li><strong>Black Hole TNT</strong></li>\n<li><strong>TNT X2</strong></li>\n<li><strong>TNT X5</strong></li>\n<li><strong>TNT X20</strong></li>\n<li><strong>TNT X100</strong></li>\n<li><strong>TNT X500</strong></li>\n</ul>\n<h2 id=\"uranium-stuff\">Uranium Stuff <a class=\"header-anchor\" href=\"#uranium-stuff\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"materials\">Materials <a class=\"header-anchor\" href=\"#materials\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Uranium Ore</li>\n<li>Uranium Dust</li>\n<li>Uranium Ingot</li>\n<li>Uranium Block (may explode when mined)</li>\n</ul>\n<h3 id=\"uranium-equipment\">Uranium equipment <a class=\"header-anchor\" href=\"#uranium-equipment\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>Sword</li>\n<li>Axe</li>\n<li>Pickaxe</li>\n<li>Shovel</li>\n<li>Hoe</li>\n<li>Armor set</li>\n</ul>\n<p>Provides extreme velocity and efficiency, but there is a small chance to explode when used.</p>\n","date_published":"2026-02-22T23:31:19Z","id":"https://content.luanti.org/packages/Ludus/tnt_plus/","image":"https://content.luanti.org/thumbnails/4/647df857bc.png","language":"en","summary":"KA-BLOOIE!","tags":["new_package"],"title":"New: TNT Plus","url":"https://content.luanti.org/packages/Ludus/tnt_plus/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/f9784d167754b10a5c2d9eae4dabb4c1?s=64&d=retro&r=g","name":"michi16bit","url":"https://content.luanti.org/users/m16b/"},"content_html":"<p>This mod add some creatures and some capture balls for caprute them!<br>\nIs in WIP, but i don't think it can brake your world :D<br>\nBut the items and the creature this mod add can be removed or changed.<br>\nFor this reason, in future updates, your capture ball or your favorite creature can disappear.<br>\nFor now the mod add:<br>\nThree evolution lines: earth, water and fire;<br>\n2 capture balls: CaptureBall and the God CaptureBall;<br>\nand the XP system (is WIP), because for now you need to sneak+right click on the creature to upgrade is level.<br>\nP.S.: The creature are static because I don't know how to animate they.<br>\nnotes: AI was mainly used to create the names of the creatures.</p>\n","date_published":"2026-02-22T23:27:41Z","id":"https://content.luanti.org/packages/m16b/m16b_creaturesworld/","image":"https://content.luanti.org/thumbnails/4/5106f8ebb1.png","language":"en","summary":"Add creatures and capture balls.","tags":["new_package"],"title":"New: Creatures World (temporary name)","url":"https://content.luanti.org/packages/m16b/m16b_creaturesworld/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/bc5df58ea7cca6d843984f5a0cab8d3c?s=64&d=retro&r=g","name":"PlamiumAI","url":"https://content.luanti.org/users/plamiumai/"},"content_html":"<h1 id=\"improve-the-chat-experience-on-luanti\">Improve the chat experience on Luanti. <a class=\"header-anchor\" href=\"#improve-the-chat-experience-on-luanti\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"this-mod-adds-various-features-such-as\">This mod adds various features, such as: <a class=\"header-anchor\" href=\"#this-mod-adds-various-features-such-as\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"-better-formatting\">\ud83d\udcac Better Formatting: <a class=\"header-anchor\" href=\"#-better-formatting\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"you-can-now-send-multiple-lines-in-one-message-using-br-example-hello-allbrwhats-up\">You can now send multiple lines in one message using [br]. Example: Hello all.[br]What's up?. <a class=\"header-anchor\" href=\"#you-can-now-send-multiple-lines-in-one-message-using-br-example-hello-allbrwhats-up\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"you-can-use-something-to-format-a-specific-word-or-sentence-in-red\">You can use <strong>(something)</strong> to format a specific word or sentence in red. <a class=\"header-anchor\" href=\"#you-can-use-something-to-format-a-specific-word-or-sentence-in-red\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"you-can-use-emojis-to-add-emojis-to-your-message-such-as-check-or-star\">You can use :emojis: to add emojis to your message, such as :check: or :star:. <a class=\"header-anchor\" href=\"#you-can-use-emojis-to-add-emojis-to-your-message-such-as-check-or-star\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"-more-features-that-we-think-the-chat-should-have\">\ud83c\udfae More features that we think the chat should have: <a class=\"header-anchor\" href=\"#-more-features-that-we-think-the-chat-should-have\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"prefixes-prefix-something-colour-example-prefix-gamer-blue\">Prefixes: /prefix (something) (colour). Example: /prefix Gamer blue. <a class=\"header-anchor\" href=\"#prefixes-prefix-something-colour-example-prefix-gamer-blue\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"display-names-you-can-use-name-to-change-how-others-see-you-example-you-have-your-old-username-and-you-want-to-change-it-you-just-do-name-your-new-username-and-it-changes-how-others-see-you-notice-it-doesnt-change-your-actual-luanti-username\">Display Names: You can use /name to change how others see you. Example: You have your old username, and you want to change it. You just do /name (your new username) and it changes how others see you. (Notice: It doesn't change your actual Luanti username) <a class=\"header-anchor\" href=\"#display-names-you-can-use-name-to-change-how-others-see-you-example-you-have-your-old-username-and-you-want-to-change-it-you-just-do-name-your-new-username-and-it-changes-how-others-see-you-notice-it-doesnt-change-your-actual-luanti-username\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"profiles-you-can-do-bio-to-set-your-bio-status-to-set-your-status-and-profile-to-view-your-or-anyone-elses-profile\">Profiles: You can do /bio to set your bio, /status to set your status, and /profile to view your or anyone else's profile. <a class=\"header-anchor\" href=\"#profiles-you-can-do-bio-to-set-your-bio-status-to-set-your-status-and-profile-to-view-your-or-anyone-elses-profile\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h1 id=\"see-everything-else-at-httpsplamiumaigithubiowikichat-plushtml\">See everything else at <a href=\"https://plamiumai.github.io/wiki/chat-plus.html\" rel=\"nofollow\">https://plamiumai.github.io/wiki/chat-plus.html</a> <a class=\"header-anchor\" href=\"#see-everything-else-at-httpsplamiumaigithubiowikichat-plushtml\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>-# <em>Google Gemini and Anthropic Claude were used to write the code in this mod.</em></p>\n","date_published":"2026-02-22T23:26:58Z","id":"https://content.luanti.org/packages/plamiumai/chat_plus/","image":"https://content.luanti.org/thumbnails/4/1c28da5f65.png","language":"en","summary":"Improve the chat","tags":["new_package"],"title":"New: Chat+","url":"https://content.luanti.org/packages/plamiumai/chat_plus/"},{"author":{"avatar":"https://content.luanti.org/uploads/d4e24319be.png","name":"MatyasP","url":"https://content.luanti.org/users/MatyasP/"},"content_html":"<h1 id=\"important-mod-is-in-beta-actually-are-some-changes-in-main-code---please-see-changelog-before-update\">Important: mod is in beta, actually are some changes in main code - please, see changelog before update! <a class=\"header-anchor\" href=\"#important-mod-is-in-beta-actually-are-some-changes-in-main-code---please-see-changelog-before-update\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"about\">About <a class=\"header-anchor\" href=\"#about\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Archiplanner (Architect's planner) adds large places for uploading plans, maps etc. primary made for next building there.</p>\n<h3 id=\"what-contain-this-mod\">What contain this mod: <a class=\"header-anchor\" href=\"#what-contain-this-mod\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>2 &quot;ruller&quot; textures</li>\n<li>10 textures as &quot;base for planning&quot; with resolution made as 16 px per node</li>\n<li>color palette</li>\n<li>white 1 px texture</li>\n<li>11 simple models with plane for planning with left front corner double triangle &quot;sign&quot;</li>\n<li>1 basic model for edit if somebody doesnt want to have the &quot;double triangle sign&quot;</li>\n<li>and code with logic for it</li>\n<li>1 example</li>\n</ul>\n<h3 id=\"what-supports-this-mod\">What supports this mod: <a class=\"header-anchor\" href=\"#what-supports-this-mod\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>any size of textures and building to 256 x 256 nodes</li>\n<li>simplier and more complex variant of registration of plans as nodes</li>\n<li>use plan register functions in other mods</li>\n</ul>\n<h4 id=\"variants-of-nodes-from-main-node\">Variants of nodes from main node: <a class=\"header-anchor\" href=\"#variants-of-nodes-from-main-node\" rel=\"nofollow\">\ud83d\udd17</a></h4>\n<ul>\n<li>lc = left corner</li>\n<li>rc = right corner</li>\n<li>sc = side center</li>\n<li>c = center</li>\n<li>lcs = left corner with full-size selectionbox</li>\n<li>rcs = right corner with full-size selectionbox</li>\n<li>scs = side center with full-size selectionbox</li>\n<li>cs = center with full-size selectionbox</li>\n</ul>\n<h4 id=\"models-and-textures-for-size-variants-that-mod-contain-only-left-corner-variant\">Models and textures for size variants that mod contain (only left-corner variant) <a class=\"header-anchor\" href=\"#models-and-textures-for-size-variants-that-mod-contain-only-left-corner-variant\" rel=\"nofollow\">\ud83d\udd17</a></h4>\n<ul>\n<li>(1 x 1 - only base for editing)</li>\n<li>8 x 8</li>\n<li>16 x 8</li>\n<li>16 x 16</li>\n<li>32 x 8</li>\n<li>32 x 16</li>\n<li>32 x 32</li>\n<li>64 x 8</li>\n<li>64 x 16</li>\n<li>64 x 32</li>\n<li>64 x 64\n(other variants needs your model or your edit or existing model)</li>\n</ul>\n<p>Important: variants with full-size selectionbox are not recommended for larger plans (64 x any and higher), it could be hard for server.</p>\n<h3 id=\"what-doesnt-contain\">What doesn't contain: <a class=\"header-anchor\" href=\"#what-doesnt-contain\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>more examples</li>\n<li>models for other variant of plan than lc / lcs</li>\n<li>crafting (maybe future)</li>\n<li>hands for building the buildings</li>\n</ul>\n<h2 id=\"how-to-use-this-mod\">How to use this mod <a class=\"header-anchor\" href=\"#how-to-use-this-mod\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<h3 id=\"install-this-mod\">Install this mod <a class=\"header-anchor\" href=\"#install-this-mod\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<h3 id=\"add-your-plan\">Add your plan: <a class=\"header-anchor\" href=\"#add-your-plan\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ol>\n<li>Create a plan</li>\n<li>Create a inventory image</li>\n<li>(if do you want</li>\n<li>Add both files into archiplanner/textures</li>\n<li>Open plans.lua</li>\n<li>Find local plans (or local simpleplans if you use systematic names of textures and systematic names of meshes)</li>\n<li>Copy row without &quot;--&quot; on start and change informations that you wants</li>\n<li>Save the file plans.lua</li>\n<li>Turn on world with this mod</li>\n</ol>\n<p>Because I am partly lazy, is supported in column with node name etc. use with start symbols of &quot;)&quot; or &quot;!&quot; for simplify writing. Really file names shouldn't contain these symbols!</p>\n<ul>\n<li>&quot;)name&quot; etc. - adds name, size and Z-axe size</li>\n<li>&quot;!name&quot; etc. - adds name, size, Z-axe size and variant</li>\n</ul>\n<h3 id=\"placing-rotating-coloring-etc\">Placing, rotating, coloring etc. <a class=\"header-anchor\" href=\"#placing-rotating-coloring-etc\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li>paramtype2 is colorfacedir then</li>\n<li>for rotate, use to main node (double triangle) &quot;Rotator A&quot; from my mod <code>repainter</code> or any screwdriver or worldedit</li>\n<li>for repaint, use to main node &quot;Repaintor A&quot; from mod <code>repainter</code> or worldedit or some other color changer (if is but this mod doesn't support coloring by unifieddyes)</li>\n</ul>\n<h2 id=\"licence\">Licence <a class=\"header-anchor\" href=\"#licence\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>Code and OBJs are under MIT</li>\n<li>Textures are under CC BY 4.0 without:</li>\n<li>CC0 1.0 textures - archiplanner_bpx.png and archiplanner_palette.png\n(Why? Because these OBJ models are more code than visual art.)</li>\n</ul>\n<h4 id=\"using-ai\">Using AI <a class=\"header-anchor\" href=\"#using-ai\" rel=\"nofollow\">\ud83d\udd17</a></h4>\n<ul>\n<li>Idea, logic and &quot;hard work on code&quot; fully made by human.</li>\n<li>OBJs are hand-written, textures made by human in basic painting softwares (grid - GIMP, next edits - Paint.net).</li>\n<li>AI used only for basic help of syntax LUA code (contain too some bugfixes).</li>\n<li>Used AI models and tools: ChatGPT (GPT-4o, GPT-5), Gemini (Gemini 2.5)</li>\n</ul>\n<h2 id=\"knowed-issues\">Knowed issues: <a class=\"header-anchor\" href=\"#knowed-issues\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>actually none</li>\n</ul>\n<p>Coloring not only double triangle but too main plain isn't a bug.</p>\n","date_published":"2026-02-22T23:26:34Z","id":"https://content.luanti.org/packages/MatyasP/archiplanner/","image":"https://content.luanti.org/thumbnails/4/4dfeca714f.png","language":"en","summary":"Add planning plains for loading the textures (sketches)","tags":["new_package"],"title":"New: Architect's planner","url":"https://content.luanti.org/packages/MatyasP/archiplanner/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"trudged\">Trudged <a class=\"header-anchor\" href=\"#trudged\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>Does not add new nodes; uses existing default game nodes.</p>\n<ul>\n<li>Converts any soil node to dirt after a player steps on it a specified number of times.</li>\n<li>Removes flowers and such whenever it is trudged upon.</li>\n</ul>\n<h2 id=\"usage\">Usage <a class=\"header-anchor\" href=\"#usage\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Just walk over any soil node to see it change to dirt after the threshold is reached.</p>\n","date_published":"2026-02-22T23:26:01Z","id":"https://content.luanti.org/packages/Bas080/trudged/","image":"https://content.luanti.org/thumbnails/4/36f08f7088.png","language":"en","summary":"A simple mod that converts walked-over soil nodes to dirt.","tags":["new_package"],"title":"New: Trudged","url":"https://content.luanti.org/packages/Bas080/trudged/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/471cda13482b77ec4630bc2196d9ff04?s=64&d=retro&r=g","name":"PixelZone","url":"https://content.luanti.org/users/pixelzone/"},"content_html":"<h3 id=\"oceanblock\">\ud83c\udf0aOCEANBLOCK\ud83c\udf0a <a class=\"header-anchor\" href=\"#oceanblock\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<hr>\n<p>&quot;Oceanblock&quot; is a mod similar to Skyblock, but set in the ocean, in a world surrounded by water where the only place to explore is below it.\nYou start with a hook to collect supplement boxes that will give you some useful items at the beginning, and you can follow the &quot;awards&quot; to be guided throughout the game.\nThis mod was created by accident while testing some things, and I took advantage of a holiday to finish it.\nIt's quite simple and may receive some additional content in the future.\nI hope you have fun on this journey, and if you have any problems or suggestions related to the mod, feel free to send them to us \ud83d\ude09</p>\n<hr>\n<ul>\n<li>BY : <a href=\"https://codeberg.org/pixelzone\" rel=\"nofollow\">PIXELZONE</a></li>\n<li>LICENSE : MIT</li>\n<li>TEXTURES : CC BY-SA 4.0</li>\n<li>CREDITS : Textures &quot;A bit Modern&quot; by <a href=\"https://content.luanti.org/packages/ZavGaro/a_bit_modern/\" rel=\"nofollow\">&quot;ZavGaro &quot;</a></li>\n<li>CONTRIBUTORS : <a href=\"https://content.luanti.org/users/Mantar/\" rel=\"nofollow\">Mantar</a></li>\n</ul>\n<hr>\n<h4 id=\"suggestions\">Suggestions: <a class=\"header-anchor\" href=\"#suggestions\" rel=\"nofollow\">\ud83d\udd17</a></h4>\n<ul>\n<li>Enabling &quot;translucent liquids&quot; to check what might be underwater before venturing out.</li>\n<li>&quot;Mystical Agriculture&quot; might be a good option for obtaining more items.</li>\n</ul>\n<hr>\n","date_published":"2026-02-22T23:25:07Z","id":"https://content.luanti.org/packages/pixelzone/oceanblock/","image":"https://content.luanti.org/thumbnails/4/35b1de110c.png","language":"en","summary":"Survive and rebuild the world in OceanBlock. ","tags":["new_package"],"title":"New: Oceanblock","url":"https://content.luanti.org/packages/pixelzone/oceanblock/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/415df5c3776e5d1d01bdc1ce27ef5fc9?s=64&d=retro&r=g","name":"Armaniums","url":"https://content.luanti.org/users/Armaniums/"},"content_html":"<h1 id=\"pigs_to_sheep\">pigs_to_sheep <a class=\"header-anchor\" href=\"#pigs_to_sheep\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>For Mineclonia (Luanti)</p>\n<p>Replaces all pigs with sheep in the game.\nUseful if you need wool but only have pigs around.\nHalal mode.</p>\n<p>License: MIT</p>\n<p>The code for this mod was generated with the assistance of Google Gemini.</p>\n","date_published":"2026-02-22T16:47:36Z","id":"https://content.luanti.org/packages/Armaniums/pigs_to_sheep/","image":"https://content.luanti.org/thumbnails/4/963a83b17a.png","language":"en","summary":"Replaces pigs with sheep, removes pork, and enables sheep riding.","tags":["new_package"],"title":"New: Pigs To Sheep","url":"https://content.luanti.org/packages/Armaniums/pigs_to_sheep/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"playervault\">playervault <a class=\"header-anchor\" href=\"#playervault\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>A virtual playervault for luanti</p>\n<ul>\n<li><code>/pv</code> opens your own vault</li>\n<li><code>/pv &lt;player&gt;</code> opens another player's vault</li>\n<li>works for checking offline users</li>\n</ul>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/pv</code></li>\n<li><code>/pv &lt;player&gt;</code></li>\n</ul>\n<h2 id=\"privileges\">Privileges <a class=\"header-anchor\" href=\"#privileges\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>playervaults_admin</code>: can open/edit other players' vaults</li>\n<li><code>server</code>: also accepted as admin access</li>\n</ul>\n","date_published":"2026-02-22T16:40:32Z","id":"https://content.luanti.org/packages/bookgirlxoxo/playervault/","image":"https://content.luanti.org/thumbnails/4/47c11cbf99.png","language":"en","summary":"A personal and admin-accessible player vault.","tags":["new_package"],"title":"New: playervault","url":"https://content.luanti.org/packages/bookgirlxoxo/playervault/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/9fdafda0bcd9f95b44923f83b677f7f7?s=64&d=retro&r=g","name":"bookgirl","url":"https://content.luanti.org/users/bookgirlxoxo/"},"content_html":"<h1 id=\"trashbin\">trashbin <a class=\"header-anchor\" href=\"#trashbin\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>a virtual trashbin for luanti servers</p>\n<h2 id=\"commands\">Commands <a class=\"header-anchor\" href=\"#commands\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>/bin</code> - open the trash UI</li>\n<li><code>/trash</code> - alias of <code>/bin</code></li>\n</ul>\n","date_published":"2026-02-22T16:36:53Z","id":"https://content.luanti.org/packages/bookgirlxoxo/trashbin/","image":"https://content.luanti.org/thumbnails/4/227bc337ca.png","language":"en","summary":"simple /bin and /trash item delete UI.","tags":["new_package"],"title":"New: trashbin","url":"https://content.luanti.org/packages/bookgirlxoxo/trashbin/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/86c593af24d9a6debd99c58ccfc0ed31?s=64&d=retro&r=g","name":"elnoonlini","url":"https://content.luanti.org/users/elnoonlini/"},"content_html":"<p>This mod allow you to unlock fly mode in survival</p>\n","date_published":"2026-02-22T16:34:39Z","id":"https://content.luanti.org/packages/elnoonlini/jetpack_fly/","image":"https://content.luanti.org/thumbnails/4/4deb467890.png","language":"en","summary":"A jetpack that unlocks fly","tags":["new_package"],"title":"New: Jetpack Fly","url":"https://content.luanti.org/packages/elnoonlini/jetpack_fly/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/86c593af24d9a6debd99c58ccfc0ed31?s=64&d=retro&r=g","name":"elnoonlini","url":"https://content.luanti.org/users/elnoonlini/"},"content_html":"<p>OreControl provides complete control over ore generation\nin Minetest Game.</p>\n<p>All major ores can be configured individually from the\nsettings menu without editing code.</p>\n<p>Designed for flexibility, compatibility, and server\nadministration.</p>\n<p>(Code made by chatgpt)\n(reviewed by me)</p>\n","date_published":"2026-02-22T16:33:52Z","id":"https://content.luanti.org/packages/elnoonlini/orecontrol/","image":"https://content.luanti.org/thumbnails/4/ccb9c89c5b.png","language":"en","summary":"Fully configurable ore generation control system","tags":["new_package"],"title":"New: OreControl","url":"https://content.luanti.org/packages/elnoonlini/orecontrol/"},{"author":{"avatar":"https://content.luanti.org/uploads/1093410aa2.png","name":"Mish7913","url":"https://content.luanti.org/users/Mish7913/"},"content_html":"<h2 id=\"m7a-api\">m7a (API) <a class=\"header-anchor\" href=\"#m7a-api\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>In this mod I puted API that I missed in Luanti's API (or what I missed in older versions of Minetest),  for example my api <code>m7a.get_game_info()</code>, it's almost the same as <code>core.get_game_info()</code>, but with one diference, if you look inside you can see that it checks if this function exist then he just retuns function, but if not, it's take game name by it self. I made this because in Minetest 5.6.1 don't exist this function, so I made this function supported by Minetest 5.6.1 <em>(of course it returns only gameid YET)</em>.</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kr\">function</span><span class=\"w\"> </span><span class=\"nc\">m7a</span><span class=\"p\">.</span><span class=\"nf\">get_game_info</span><span class=\"p\">()</span>\n<span class=\"w\">    </span><span class=\"kr\">if</span><span class=\"w\"> </span><span class=\"nv\">core</span><span class=\"p\">.</span><span class=\"py\">get_game_info</span><span class=\"w\"> </span><span class=\"kr\">then</span><span class=\"w\"> </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"nv\">core</span><span class=\"p\">.</span><span class=\"nf\">get_game_info</span><span class=\"p\">();</span><span class=\"w\"> </span><span class=\"kr\">end</span><span class=\"p\">;</span>\n<span class=\"w\">    </span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">gameid</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">settings</span><span class=\"p\">(</span><span class=\"nv\">worldpath</span><span class=\"o\">..</span><span class=\"s2\">&quot;/world.mt&quot;</span><span class=\"p\">):</span><span class=\"nf\">get</span><span class=\"p\">(</span><span class=\"s2\">&quot;gameid&quot;</span><span class=\"p\">);</span>\n<span class=\"w\">    </span><span class=\"kr\">return</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"nv\">id</span><span class=\"o\">=</span><span class=\"nv\">gameid</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">title</span><span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">author</span><span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">path</span><span class=\"o\">=</span><span class=\"s2\">&quot;&quot;</span><span class=\"w\"> </span><span class=\"p\">};</span>\n<span class=\"kr\">end</span><span class=\"p\">;</span>\n</pre></div>\n<p>And also I made many other functions, like <code>m7a.register_door(name, def)</code>, this function supports register &quot;single&quot; and &quot;double door&quot;. Another for example is <code>m7a.register_inv_node(name, def)</code>, it's allows you to register node with inventory, and it will change node when it's open, it useful for chests, cabinets, and drawers.</p>\n<p>I'm planning to make full documentation for this mod, but a little bit latter.</p>\n<hr>\n<h3 id=\"chat-commands\">Chat Commands <a class=\"header-anchor\" href=\"#chat-commands\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>/game_id</code>:\n<ul>\n<li>Echoes the current game id.</li>\n</ul>\n</li>\n<li><code>/biome_name</code>:\n<ul>\n<li>Echoes the biome name you stand in.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"game\">Game <a class=\"header-anchor\" href=\"#game\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.get_game_info()</code>:\n<ul>\n<li>returns { id, title, author, path }.</li>\n</ul>\n</li>\n<li><code>m7a.get_game_release()</code>:\n<ul>\n<li>returns game release number.</li>\n</ul>\n</li>\n<li><code>m7a.impact(default, vars)</code>:\n<ul>\n<li>returns variable according to the current game.</li>\n</ul>\n<ul>\n<li>example:</li>\n</ul>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">gold_ingot</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">m7a</span><span class=\"p\">.</span><span class=\"nf\">impact</span><span class=\"p\">(</span>\n<span class=\"w\">    </span><span class=\"kc\">nil</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"p\">[</span><span class=\"s2\">&quot;minetest&quot;</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;default:gold_ingot&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"p\">[</span><span class=\"s2\">&quot;mineclonia&quot;</span><span class=\"p\">]</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;mcl_core:gold_ingot&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">);</span>\n</pre></div>\n</li>\n<li><code>m7a.mod_impact(default, vars)</code>:\n<ul>\n<li>returns variable according to the current mods.</li>\n</ul>\n</li>\n<li><code>m7a.var_impact(equation, var, rtn)</code>:\n<ul>\n<li>returns variable according to the equation.</li>\n</ul>\n</li>\n<li><code>m7a.item(items)</code>:\n<ul>\n<li>returns first registred item from list.</li>\n</ul>\n</li>\n<li><code>m7a.biome(items)</code>:\n<ul>\n<li>returns first registred biome from list.</li>\n</ul>\n</li>\n<li><code>m7a.item_title(title, def)</code>:\n<ul>\n<li>returns title for item description:</li>\n</ul>\n<ul>\n<li>example:</li>\n</ul>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">core</span><span class=\"p\">.</span><span class=\"nf\">register_node</span><span class=\"p\">(</span><span class=\"s2\">&quot;mod:item&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">m7a</span><span class=\"p\">.</span><span class=\"nf\">item_title</span><span class=\"p\">(</span><span class=\"nf\">S</span><span class=\"p\">(</span><span class=\"s2\">&quot;Item Name&quot;</span><span class=\"p\">),</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nv\">wip</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"kc\">true</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"nv\">info</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">S</span><span class=\"p\">(</span><span class=\"s2\">&quot;27 inventory slots.&quot;</span><span class=\"p\">),</span>\n<span class=\"w\">        </span><span class=\"nv\">extra</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">S</span><span class=\"p\">(</span><span class=\"s2\">&quot;Right click opens node inventory.&quot;</span><span class=\"p\">),</span>\n<span class=\"w\">    </span><span class=\"p\">}),</span>\n<span class=\"w\">    </span><span class=\"p\">...</span>\n<span class=\"p\">});</span>\n</pre></div>\n</li>\n<li><code>m7a.find_biomes_in_area(pos, biomes, radius, height)</code>:\n<ul>\n<li>returns list of pos with find biomes.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"player\">Player <a class=\"header-anchor\" href=\"#player\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.get_player_eye_pos(player)</code>:\n<ul>\n<li>returns player eye position.</li>\n</ul>\n</li>\n<li><code>m7a.get_player_arm_range(player)</code>:\n<ul>\n<li>returns current player arm range.</li>\n</ul>\n</li>\n<li><code>m7a.side_to_yaw(side)</code>:\n<ul>\n<li>returns yaw from block side.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"inventory\">Inventory <a class=\"header-anchor\" href=\"#inventory\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.get_inventory(pos, [name, size])</code>:\n<ul>\n<li>returns node inventory, and creates if not exist (if you set name and size).</li>\n</ul>\n</li>\n<li><code>m7a.set_inventory(pos, name, size)</code>:\n<ul>\n<li>sets node inventory.</li>\n</ul>\n</li>\n<li><code>m7a.add_item_to_inventory(user, item_name, inv_name)</code>:\n<ul>\n<li>adds itm to the inventory, if not have space drops item beside player/node.</li>\n</ul>\n</li>\n<li><code>m7a.take_item_if_not_creative(player, itemstack)</code>:\n<ul>\n<li>takes item from itemstack just like <code>itemstack:take_item()</code>,</li>\n<li>but only if it's not creative mode.</li>\n</ul>\n</li>\n<li><code>m7a.itemstack(item_name[, quantity, itemstack])</code>:\n<ul>\n<li>returns itemstack with item inside.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"nodes\">Nodes <a class=\"header-anchor\" href=\"#nodes\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.get_pointed_node(player)</code>:\n<ul>\n<li>return pointed node with pointed side of block using raycast.</li>\n</ul>\n</li>\n<li><code>m7a.is_pointing_above_middle(pointer, pointed_thing)</code>:\n<ul>\n<li>returns true if player clicked node above middle.</li>\n</ul>\n</li>\n<li><code>m7a.is_pointing_on_left_half(pointer, pointed_thing)</code>:\n<ul>\n<li>returns true if player clicked node on the left half of side.</li>\n</ul>\n</li>\n<li><code>m7a.check_on_rightclick(pos, itemstack, placer)</code>:\n<ul>\n<li>returns nodedef.on_rightclick if node have it.</li>\n</ul>\n</li>\n<li><code>m7a.on_construct(pos)</code>:\n<ul>\n<li>returns on_construct function of node.</li>\n</ul>\n</li>\n<li><code>m7a.node_drop_items(pos[, inv_list])</code>:\n<ul>\n<li>drops all items that node have.</li>\n</ul>\n</li>\n<li><code>m7a.place_item(itemstack, user, pointed_thing[, replacement])</code>:\n<ul>\n<li>place item.</li>\n</ul>\n</li>\n<li><code>m7a.con4block(pos, group, nodes, mode, color)</code>:\n<ul>\n<li>connecting blocks, it useful for footpaths.</li>\n</ul>\n</li>\n<li><code>m7a.get_nodes_around_horizontal(pos, group, mode)</code>:\n<ul>\n<li>returns nodes and node_map around pos.</li>\n</ul>\n</li>\n<li><code>m7a.get_node_map(pos, map)</code>:\n<ul>\n<li>returns nodes by map of offsets.</li>\n</ul>\n</li>\n<li><code>m7a.set_node_map(pos, map)</code>:\n<ul>\n<li>placed nodes by map of offsets.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"formspec\">Formspec <a class=\"header-anchor\" href=\"#formspec\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.inventory_formspec(pos, clicker, name, stack_id[, return_string])</code>:\n<ul>\n<li>show_formspec node inventory, if return_string is true - returns formspec string.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"register\">Register <a class=\"header-anchor\" href=\"#register\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.register_inv_node(name, def)</code>:\n<ul>\n<li>register node with inventory.</li>\n</ul>\n</li>\n<li><code>m7a.register_multinode(name, multidef)</code>:\n<ul>\n<li>register muntiple nodes with different suffixes.</li>\n</ul>\n</li>\n<li><code>m7a.register_multideco(name, multidef)</code>:\n<ul>\n<li>register muntiple decorations at the same time.</li>\n</ul>\n</li>\n<li><code>m7a.register_door(name, def)</code>:\n<ul>\n<li>register door node (&quot;single&quot;, &quot;double&quot;).</li>\n<li>example:</li>\n</ul>\n<div class=\"highlight\"><pre><span></span><span class=\"nv\">m7a</span><span class=\"p\">.</span><span class=\"nf\">register_door</span><span class=\"p\">(</span><span class=\"s2\">&quot;mod:door&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"nv\">single_description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">S</span><span class=\"p\">(</span><span class=\"s2\">&quot;Door&quot;</span><span class=\"p\">),</span>\n<span class=\"w\">    </span><span class=\"nv\">double_description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nf\">S</span><span class=\"p\">(</span><span class=\"s2\">&quot;Double Door&quot;</span><span class=\"p\">),</span>\n<span class=\"w\">    </span>\n<span class=\"w\">    </span><span class=\"nv\">single_inv_image</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;door_item.png&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">double_inv_image</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;double_door_item.png&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span>\n<span class=\"w\">    </span><span class=\"nv\">tiles</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"s2\">&quot;door_texture.png&quot;</span><span class=\"w\"> </span><span class=\"p\">},</span>\n<span class=\"w\">    </span>\n<span class=\"w\">    </span><span class=\"nv\">groups</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"nv\">node</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">cracky</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">level</span><span class=\"o\">=</span><span class=\"mi\">2</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"nv\">door</span><span class=\"o\">=</span><span class=\"mi\">1</span><span class=\"w\"> </span><span class=\"p\">},</span>\n<span class=\"w\">    </span>\n<span class=\"w\">    </span><span class=\"nv\">pos_type</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;side&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"c1\">-- &quot;side&quot; or &quot;center&quot;</span>\n<span class=\"w\">    </span><span class=\"nv\">types</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span><span class=\"w\"> </span><span class=\"s2\">&quot;single&quot;</span><span class=\"p\">,</span><span class=\"w\"> </span><span class=\"s2\">&quot;double&quot;</span><span class=\"w\"> </span><span class=\"p\">},</span>\n<span class=\"w\">    </span>\n<span class=\"w\">    </span><span class=\"nv\">sounds</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"nv\">mod</span><span class=\"p\">.</span><span class=\"nf\">sound_metal</span><span class=\"p\">(),</span>\n<span class=\"w\">    </span><span class=\"nv\">sound_open</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;doors_steel_door_open&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"nv\">sound_close</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;doors_steel_door_close&quot;</span><span class=\"p\">,</span>\n<span class=\"p\">});</span>\n</pre></div>\n</li>\n<li><code>m7a.register_biome(def)</code>:\n<ul>\n<li>register biome with (&quot;_shore&quot;, &quot;_ocean&quot;, &quot;_underground&quot;, &quot;_deep_underground&quot;).</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"table\">Table <a class=\"header-anchor\" href=\"#table\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.table_merge(tbl, tbl2)</code>:\n<ul>\n<li>merge two tables.</li>\n</ul>\n</li>\n<li><code>m7a.table_get_keys(tbl)</code>:\n<ul>\n<li>returns all keys from tables.</li>\n</ul>\n</li>\n<li><code>m7a.is_in(check, tbl[, in_keys])</code>:\n<ul>\n<li>returns true if string exist in table.</li>\n</ul>\n</li>\n</ul>\n<h3 id=\"string\">String <a class=\"header-anchor\" href=\"#string\" rel=\"nofollow\">\ud83d\udd17</a></h3>\n<ul>\n<li><code>m7a.to_name(str)</code>:\n<ul>\n<li>returns string without &quot;_&quot; and makes words capitalize.</li>\n</ul>\n</li>\n<li><code>m7a.split(str, sep)</code>:\n<ul>\n<li>returns array of splitted string.</li>\n</ul>\n</li>\n<li><code>m7a.spx(str, sep)</code>:\n<ul>\n<li>splits string on two variables.</li>\n</ul>\n</li>\n</ul>\n","date_published":"2026-02-22T16:33:39Z","id":"https://content.luanti.org/packages/Mish7913/m7a/","image":"https://content.luanti.org/thumbnails/4/9841f1d1f7.png","language":"en","summary":"API Library","tags":["new_package"],"title":"New: m7a (API)","url":"https://content.luanti.org/packages/Mish7913/m7a/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/438a8b8c3e20bca4a342b5340445c767?s=64&d=retro&r=g","name":"Mindcool25","url":"https://content.luanti.org/users/Mindcool25/"},"content_html":"<h1 id=\"component-lib\">Component Lib <a class=\"header-anchor\" href=\"#component-lib\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p>This library intends on providing an API to dynamically create a set of components based off of a given material.</p>\n<h1 id=\"docs\">Docs <a class=\"header-anchor\" href=\"#docs\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<h2 id=\"creating-a-material\">Creating a material <a class=\"header-anchor\" href=\"#creating-a-material\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Materials are simply stored as a table of materials.\nAs of right now, they have a name, description, and color as shown below</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">example_materials</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"c1\">-- A material contains 3 things</span>\n<span class=\"w\">    </span><span class=\"c1\">--- A name, used for the registration</span>\n<span class=\"w\">    </span><span class=\"c1\">--- A description, used for the display name of the item</span>\n<span class=\"w\">    </span><span class=\"c1\">--- A color, used when colorizing the image</span>\n<span class=\"w\">    </span><span class=\"nv\">cobalt_mat</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nv\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;cobalt&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"nv\">description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;Cobalt&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"nv\">color</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;#06b5c9&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"p\">},</span>\n<span class=\"p\">}</span>\n</pre></div>\n<h2 id=\"creating-a-component\">Creating a component <a class=\"header-anchor\" href=\"#creating-a-component\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<p>Components are stored in a similar way as materials, but each needs a name, description, and an image to use when generating the items</p>\n<div class=\"highlight\"><pre><span></span><span class=\"kd\">local</span><span class=\"w\"> </span><span class=\"nv\">example_components</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">    </span><span class=\"c1\">-- Components are similar, you just need 3 things</span>\n<span class=\"w\">    </span><span class=\"c1\">-- A name, used for registration (%s will be replaces with the material&#39;s name)</span>\n<span class=\"w\">    </span><span class=\"c1\">-- A description, used for registration (%s will be replaces with the material&#39;s description)</span>\n<span class=\"w\">    </span><span class=\"c1\">-- An image, which works the same way as normal luanti textures</span>\n<span class=\"w\">    </span><span class=\"nv\">widget</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"p\">{</span>\n<span class=\"w\">        </span><span class=\"nv\">name</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;%s_widget&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"nv\">description</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;%s Widget&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">        </span><span class=\"nv\">image</span><span class=\"w\"> </span><span class=\"o\">=</span><span class=\"w\"> </span><span class=\"s2\">&quot;component_lib_widget.png^[colorize:%s:100&quot;</span><span class=\"p\">,</span>\n<span class=\"w\">    </span><span class=\"p\">}</span>\n<span class=\"p\">}</span>\n</pre></div>\n<h1 id=\"todo\">TODO <a class=\"header-anchor\" href=\"#todo\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<ul>\n<li>[ ] Add node creation</li>\n<li>[ ] Change mod name when being used as a library</li>\n<li>[ ] Allow for the rest of craftitem things to be added</li>\n<li>[ ] Better examples?</li>\n</ul>\n","date_published":"2026-02-21T02:42:30Z","id":"https://content.luanti.org/packages/Mindcool25/component_lib/","image":"https://content.luanti.org/thumbnails/4/fc2ae7a27a.png","language":"en","summary":"Library for generating components based on base materials","tags":["new_package"],"title":"New: Components Library","url":"https://content.luanti.org/packages/Mindcool25/component_lib/"},{"author":{"avatar":"https://content.luanti.org/uploads/67eebc0c2f.png","name":"Bas080","url":"https://content.luanti.org/users/Bas080/"},"content_html":"<h1 id=\"small-fall\">Small Fall <a class=\"header-anchor\" href=\"#small-fall\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<blockquote>\n<p>Very minimal mod that adds a bit of life to the map.</p>\n</blockquote>\n<p>Sometimes replaces stone like nodes that are above water with a water source.</p>\n","date_published":"2026-02-21T01:26:59Z","id":"https://content.luanti.org/packages/Bas080/small_fall/","image":"https://content.luanti.org/thumbnails/4/8969c2714e.png","language":"en","summary":"Minimal water falls on rock faces.","tags":["new_package"],"title":"New: Small Fall","url":"https://content.luanti.org/packages/Bas080/small_fall/"},{"author":{"avatar":"https://secure.gravatar.com/avatar/423690ad6b89073989e84be1b35674ad?s=64&d=retro&r=g","name":"GreatBigDiamond","url":"https://content.luanti.org/users/GreatBigDiamond/"},"content_html":"<p><a href=\"https://github.com/zion8992/ct_whitelist/blob/main/logo.png\" rel=\"nofollow\">Logo</a>\nLogo textures by Mintest Game team</p>\n<h1 id=\"whitelist-live-mod-for-minetest\">Whitelist Live Mod for Minetest <a class=\"header-anchor\" href=\"#whitelist-live-mod-for-minetest\" rel=\"nofollow\">\ud83d\udd17</a></h1>\n<p><strong>Version:</strong> 0.0.0\n<strong>Author:</strong> Zion</p>\n<p>A live-reload server whitelist mod for Minetest. Automatically prevents unlisted players from joining and provides commands for managing the whitelist in-game. Works in sandboxed environments like Luanti.</p>\n<hr>\n<h2 id=\"features\">Features <a class=\"header-anchor\" href=\"#features\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>\n<p>Enforces a <strong>per-world whitelist</strong>.</p>\n</li>\n<li>\n<p>Automatically <strong>auto-whitelists singleplayer</strong>.</p>\n</li>\n<li>\n<p>Provides <strong>live reload</strong> of <code>whitelist.txt</code> when the file changes.</p>\n</li>\n<li>\n<p>Commands to manage the whitelist in-game:</p>\n<ul>\n<li><code>/whitelist add &lt;name&gt;</code> \u2014 Add a player to the whitelist.</li>\n<li><code>/whitelist remove &lt;name&gt;</code> \u2014 Remove a player from the whitelist.</li>\n<li><code>/whitelist list</code> \u2014 Show all whitelisted players.</li>\n<li><code>/whitelist reload</code> \u2014 Reload the whitelist from <code>whitelist.txt</code>.</li>\n<li><code>/whitelist enable</code> \u2014 Enable the whitelist.</li>\n<li><code>/whitelist disable</code> \u2014 Disable the whitelist.</li>\n<li><code>/whitelist status</code> \u2014 Show current whitelist status.</li>\n</ul>\n</li>\n<li>\n<p>Supports <strong>bypass privileges</strong>: players with <code>whitelist_bypass</code> can join even if not on the whitelist.</p>\n</li>\n<li>\n<p>Supports <strong>admin privileges</strong>: <code>whitelist_admin</code> for managing the whitelist.</p>\n</li>\n</ul>\n<hr>\n<h2 id=\"installation\">Installation <a class=\"header-anchor\" href=\"#installation\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ol>\n<li>\n<p>Copy the <code>ct_whitelist</code> folder into your Minetest <code>mods</code> directory.</p>\n</li>\n<li>\n<p>Enable the mod in your world:</p>\n<ul>\n<li>\n<p>Edit <code>world.mt</code>:</p>\n<pre><code>load_mod_whitelist_live = true\n</code></pre></li>\n<li>\n<p>Or enable via the in-game mod UI.</p>\n</li>\n</ul>\n</li>\n<li>\n<p>The whitelist file is created automatically in the world folder:</p>\n</li>\n</ol>\n<pre><code>&lt;world folder&gt;/whitelist.txt\n</code></pre><ol>\n<li>\n<p>Edit <code>whitelist.txt</code> to add one player per line. Lines starting with <code>#</code> are comments.\nExample:</p>\n<pre><code># Whitelisted players\nzion\nsfan5\n</code></pre><p>Changes are automatically reloaded every ~5 seconds.</p>\n</li>\n</ol>\n<hr>\n<h2 id=\"usage\">Usage <a class=\"header-anchor\" href=\"#usage\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><strong>Auto-whitelist</strong>: The singleplayer is automatically added to the whitelist.</li>\n<li><strong>Commands</strong>: Only players with <code>whitelist_admin</code> can manage the whitelist.</li>\n<li><strong>Live reload</strong>: Editing <code>whitelist.txt</code> triggers live reload; no server restart needed.</li>\n<li><strong>Bypass privilege</strong>: Grant <code>whitelist_bypass</code> to trusted players to skip whitelist checks.</li>\n<li><strong>Checking status</strong>: <code>/whitelist status</code> shows if the whitelist is enabled and the number of entries.</li>\n</ul>\n<hr>\n<h2 id=\"privileges\">Privileges <a class=\"header-anchor\" href=\"#privileges\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li><code>whitelist_admin</code> \u2014 Can manage the whitelist using <code>/whitelist</code>.</li>\n<li><code>whitelist_bypass</code> \u2014 Bypass the whitelist entirely.</li>\n</ul>\n<hr>\n<h2 id=\"notes\">Notes <a class=\"header-anchor\" href=\"#notes\" rel=\"nofollow\">\ud83d\udd17</a></h2>\n<ul>\n<li>The whitelist file is <strong>per world</strong>, so each world can have its own whitelist.</li>\n<li>The mod also stores the whitelist in persistent mod storage, so edits in-game or via commands are saved even if <code>whitelist.txt</code> is missing.</li>\n<li>Works safely in <strong>sandboxed environments</strong> like Luanti.</li>\n</ul>\n<hr>\n","date_published":"2026-02-20T23:55:05Z","id":"https://content.luanti.org/packages/GreatBigDiamond/ct_whitelist/","image":"https://content.luanti.org/thumbnails/4/b5b64993a9.png","language":"en","summary":"Cave Test Whitelist","tags":["new_package"],"title":"New: Cave Test Whitelist","url":"https://content.luanti.org/packages/GreatBigDiamond/ct_whitelist/"}],"title":"ContentDB new packages","version":"https://jsonfeed.org/version/1"}
