<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://pandorabox.io/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Huhhila</id>
	<title>Pandorabox - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://pandorabox.io/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Huhhila"/>
	<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php/Special:Contributions/Huhhila"/>
	<updated>2026-04-19T16:25:27Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.35.0</generator>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3429</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3429"/>
		<updated>2026-04-09T17:46:50Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Since who could resist odd spaceships? Deep in a Luanti mine, testing.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Spaceships =&lt;br /&gt;
[[File:Huh_2023_25_plus.png|800px|2023 at top right corner, 2025 and later further down]]&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners [Fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Recalculated normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;sub&amp;gt;(obsolete)&amp;lt;/sub&amp;gt; example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
mapclean_mapgen_202604.png|Mapcleaner [https://github.com/minetest-go/mapcleaner/pull/182/files#diff-3a710ab6a1dd3264a76a1e4c4c3ebcee14762ef3a66f707726e17fd5fa255715L17-L29 two-mapblock offset], maybe.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Huh_2023_25_plus.png&amp;diff=3428</id>
		<title>File:Huh 2023 25 plus.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Huh_2023_25_plus.png&amp;diff=3428"/>
		<updated>2026-04-09T17:41:43Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3427</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3427"/>
		<updated>2026-04-09T17:25:00Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Misc */ Tagged an obsolete example, that use case being no longer relevant.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners [Fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Recalculated normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An &amp;lt;sub&amp;gt;(obsolete)&amp;lt;/sub&amp;gt; example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
mapclean_mapgen_202604.png|Mapcleaner [https://github.com/minetest-go/mapcleaner/pull/182/files#diff-3a710ab6a1dd3264a76a1e4c4c3ebcee14762ef3a66f707726e17fd5fa255715L17-L29 two-mapblock offset], maybe.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3426</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3426"/>
		<updated>2026-04-09T01:04:25Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */ Mapserver screenshot of post-mapcleaner mapgen.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners [Fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Recalculated normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
mapclean_mapgen_202604.png|Mapcleaner [https://github.com/minetest-go/mapcleaner/pull/182/files#diff-3a710ab6a1dd3264a76a1e4c4c3ebcee14762ef3a66f707726e17fd5fa255715L17-L29 two-mapblock offset], maybe.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Mapclean_mapgen_202604.png&amp;diff=3425</id>
		<title>File:Mapclean mapgen 202604.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Mapclean_mapgen_202604.png&amp;diff=3425"/>
		<updated>2026-04-09T00:58:37Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: File uploaded with MsUpload&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3424</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3424"/>
		<updated>2026-04-09T00:52:54Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Banners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners [Fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Recalculated normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Login&amp;diff=3421</id>
		<title>Login</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Login&amp;diff=3421"/>
		<updated>2026-03-12T05:19:59Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Undo revision 3416 by Peanut (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There are two ways to login into this wiki:&lt;br /&gt;
&lt;br /&gt;
=== Option 1: Ingame credentials ===&lt;br /&gt;
&lt;br /&gt;
 Use your in-game name (case-sensitive) and your password in the &amp;quot;Log in&amp;quot; dialog&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Option 2: use a TAN ===&lt;br /&gt;
&lt;br /&gt;
 Create a TAN with the in-game command &amp;quot;/wiki_tan&amp;quot; and use your playername and the numbers from the TAN in the &amp;quot;Log in&amp;quot; dialog&lt;br /&gt;
&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Main_Page&amp;diff=3420</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Main_Page&amp;diff=3420"/>
		<updated>2026-03-12T05:12:17Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Reverted back to 3374.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[File:Pandorabox black.png|Pandorabox]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;| Pandorabox spawn&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|[[File:Spawn 3.0 205112.png|480px]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;A Luanti (Minetest) server&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Feel free to [[Login]] and edit this wiki!&lt;br /&gt;
&lt;br /&gt;
'''Default password''': &amp;quot;Endor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game links ===&lt;br /&gt;
&lt;br /&gt;
* Server: '''pandorabox.io''' port '''30000'''&lt;br /&gt;
* {{#far:map}} Map: https://pandorabox.io/map/#!/map/0/11/604/1902&lt;br /&gt;
* {{#fas:info}} Luanti (Minetest) WebUI (password/mail/skin-manager): https://pandorabox.io/ui&lt;br /&gt;
* {{#fas:list}} Highscore: https://pandorabox.io/highscore&lt;br /&gt;
* {{#fas:info}} Mods info page (mtinfo): https://pandorabox-io.github.io/pandorabox-mods/#/&lt;br /&gt;
* {{#fas:download}} [[Map download]]&lt;br /&gt;
&lt;br /&gt;
=== Discussion and chat links ===&lt;br /&gt;
&lt;br /&gt;
* {{#fas:comments}} Forum: https://forum.minetest.net/viewtopic.php?f=10&amp;amp;t=20311&lt;br /&gt;
* {{#fas:comments}} IRC: #pandorabox on Libera.Chat (see also [[Beerchat_Public_Channels]] for additional channels)&lt;br /&gt;
* {{#fas:comments}} Matrix: https://matrix.to/#/#pandorabox:matrix.org&lt;br /&gt;
* {{#fab:discord}} Discord: https://discord.gg/mK6esa4&lt;br /&gt;
* {{#fab:github}} Idea / suggestion tracker: https://github.com/pandorabox-io/in-game/issues&lt;br /&gt;
&lt;br /&gt;
=== Developer and contributor links ===&lt;br /&gt;
* {{#fab:github}} Github: http://github.com/pandorabox-io&lt;br /&gt;
* {{#fab:github}} Mod collection: https://github.com/pandorabox-io/pandorabox-mods&lt;br /&gt;
* {{#fas:chart-area}} Stats / monitoring: https://monitoring.minetest.ch/d/YUpouLmWk/overview?orgId=1&amp;amp;refresh=10s&amp;amp;var-instance=pandorabox.io&lt;br /&gt;
* {{#fas:atom}} NodeRED chat bot: https://pandorabox.io/nodered&lt;br /&gt;
* {{#fas:spider}} Crash logs: https://pandorabox.io/crashlogs/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Popular links&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Rules]]&lt;br /&gt;
[[Image:Rules_icon.png|180px|link=Rules]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[:Category:Tutorial]]&lt;br /&gt;
[[Image:Tutorial_icon.png|180px|link=:Category:Tutorial]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Tips]]&lt;br /&gt;
[[Image:Tips_icon.png|180px|link=Tips]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Popular places]]&lt;br /&gt;
[[Image:Poi_big.png|180px|link=Popular places]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Bounties]]&lt;br /&gt;
[[Image:bounty.png|180px|link=Bounties]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;pages&amp;quot;&amp;gt;Root&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meta ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Template]]&lt;br /&gt;
* [[:Category:Icons]]&lt;br /&gt;
* [[:Category:Meta]]&lt;br /&gt;
* [[:Category:Images]]&lt;br /&gt;
* &amp;lt;span class=&amp;quot;plainlinks&amp;quot;&amp;gt;[https://pandorabox.io/index.php/Special:AllPages?from=&amp;amp;to=&amp;amp;namespace=828 Module:*]&amp;lt;/span&amp;gt;&lt;br /&gt;
* Unfinished pages: [[:Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Dli250812.png&amp;diff=3386</id>
		<title>File:Dli250812.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Dli250812.png&amp;diff=3386"/>
		<updated>2025-08-12T18:31:41Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: &amp;quot;Single player&amp;quot; part has a 105 centrifuge setup (activity like once in 260s) and some advtrains activating every minute.

Others logging in almost completely hides such background noise.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
&amp;quot;Single player&amp;quot; part has a 105 centrifuge setup (activity like once in 260s) and some advtrains activating every minute.&lt;br /&gt;
&lt;br /&gt;
Others logging in almost completely hides such background noise.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Loop_1721_16_2519.png&amp;diff=3385</id>
		<title>File:Loop 1721 16 2519.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Loop_1721_16_2519.png&amp;diff=3385"/>
		<updated>2025-08-09T06:20:22Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: One loopy mesecon wire. Apparently with a 150x amplifier setup.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
One loopy mesecon wire. Apparently with a 150x amplifier setup.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3372</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3372"/>
		<updated>2025-07-21T19:44:11Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Banners */ wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Recalculated normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3371</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3371"/>
		<updated>2025-07-21T19:40:11Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Banners */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Fixed normals.]]&lt;br /&gt;
[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3370</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3370"/>
		<updated>2025-07-21T19:33:16Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Random patches */ Added banners, needs a bit of editorial fixes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Ban_rnor.png|thumb|Fixed normals.]]&lt;br /&gt;
||[[File:Ban_orig.png|thumb|Inverted normals.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Ban_rnor.png&amp;diff=3369</id>
		<title>File:Ban rnor.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Ban_rnor.png&amp;diff=3369"/>
		<updated>2025-07-21T19:26:58Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Recalculated normals.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Recalculated normals.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Ban_orig.png&amp;diff=3368</id>
		<title>File:Ban orig.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Ban_orig.png&amp;diff=3368"/>
		<updated>2025-07-21T19:26:03Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Inverted normals.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Inverted normals.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3367</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3367"/>
		<updated>2025-07-21T19:07:41Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Random patches */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Banners ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;obj&amp;quot;&amp;gt;&lt;br /&gt;
From 9fbb01faaedc37490da356af1eb3c77d926d3fac Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Mon, 21 Jul 2025 21:47:05 +0300&lt;br /&gt;
Subject: [PATCH] Recalculate normals.&lt;br /&gt;
&lt;br /&gt;
Method used:&lt;br /&gt;
- Open extra/banner.blend in Blender&lt;br /&gt;
- tab&lt;br /&gt;
- A&lt;br /&gt;
- shift-N&lt;br /&gt;
- export&lt;br /&gt;
- save as for the .blend as well.&lt;br /&gt;
&lt;br /&gt;
By default this results in solid top besides the other normals of the pole getting fixed, is that wanted?&lt;br /&gt;
&lt;br /&gt;
Pseudonymized patch, just for the usual ${reasons}. Also like first time I ever used Blender (for a specific goal).&lt;br /&gt;
---&lt;br /&gt;
 models/banner_pole.obj | 114 ++++++++++++++++++++---------------------&lt;br /&gt;
 1 file changed, 57 insertions(+), 57 deletions(-)&lt;br /&gt;
&lt;br /&gt;
diff --git a/models/banner_pole.obj b/models/banner_pole.obj&lt;br /&gt;
index a46771d..39fc5a8 100644&lt;br /&gt;
--- a/models/banner_pole.obj&lt;br /&gt;
+++ b/models/banner_pole.obj&lt;br /&gt;
@@ -94,12 +94,12 @@ v -1.285142 31.074223 0.323846&lt;br /&gt;
 v -1.285142 41.649487 0.323846&lt;br /&gt;
 v 0.038031 31.074223 0.071638&lt;br /&gt;
 v 0.038031 41.649483 0.071638&lt;br /&gt;
-vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
-vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0000&lt;br /&gt;
 vn -0.0000 -0.0000 1.0000&lt;br /&gt;
-vn -0.0000 1.0000 -0.0000&lt;br /&gt;
+vn 1.0000 -0.0000 -0.0000&lt;br /&gt;
+vn -0.0000 -0.0000 -1.0000&lt;br /&gt;
 vn -0.0000 -1.0000 -0.0000&lt;br /&gt;
+vn -0.0000 1.0000 -0.0000&lt;br /&gt;
 vn -0.4962 -0.0000 -0.8682&lt;br /&gt;
 vn -0.4958 -0.0000 -0.8684&lt;br /&gt;
 vn -0.3672 -0.0000 -0.9301&lt;br /&gt;
@@ -143,21 +143,21 @@ vn 0.1872 -0.0000 0.9823&lt;br /&gt;
 vn -1.0000 -0.0000 -0.0059&lt;br /&gt;
 vn 1.0000 -0.0000 0.0059&lt;br /&gt;
 vt 0.502372 0.344045&lt;br /&gt;
-vt 0.502372 0.325948&lt;br /&gt;
-vt 0.993251 0.325948&lt;br /&gt;
 vt 0.993251 0.344045&lt;br /&gt;
+vt 0.993251 0.325948&lt;br /&gt;
+vt 0.502372 0.325948&lt;br /&gt;
 vt 0.997751 0.312205&lt;br /&gt;
-vt 0.997751 0.325777&lt;br /&gt;
-vt 0.506885 0.325779&lt;br /&gt;
 vt 0.506885 0.312205&lt;br /&gt;
+vt 0.506885 0.325779&lt;br /&gt;
+vt 0.997751 0.325777&lt;br /&gt;
 vt 0.488799 0.325948&lt;br /&gt;
-vt 0.488799 0.344045&lt;br /&gt;
-vt -0.002080 0.344045&lt;br /&gt;
 vt -0.002080 0.325948&lt;br /&gt;
+vt -0.002080 0.344045&lt;br /&gt;
+vt 0.488799 0.344045&lt;br /&gt;
 vt -0.002080 0.325779&lt;br /&gt;
-vt -0.002080 0.312207&lt;br /&gt;
-vt 0.488786 0.312205&lt;br /&gt;
 vt 0.488786 0.325779&lt;br /&gt;
+vt 0.488786 0.312205&lt;br /&gt;
+vt -0.002080 0.312207&lt;br /&gt;
 vt 0.943902 0.997273&lt;br /&gt;
 vt 0.908697 0.997273&lt;br /&gt;
 vt 0.908696 0.497389&lt;br /&gt;
@@ -335,12 +335,12 @@ vt 0.580417 0.180707&lt;br /&gt;
 vt 0.710152 0.199879&lt;br /&gt;
 vt 0.710202 0.201063&lt;br /&gt;
 s 0&lt;br /&gt;
-f 2/1/1 4/2/1 3/3/1 1/4/1&lt;br /&gt;
-f 4/5/2 8/6/2 7/7/2 3/8/2&lt;br /&gt;
-f 8/9/3 6/10/3 5/11/3 7/12/3&lt;br /&gt;
-f 6/13/4 2/14/4 1/15/4 5/16/4&lt;br /&gt;
-f 1/15/5 3/8/5 7/7/5 5/16/5&lt;br /&gt;
-f 6/10/6 8/9/6 4/2/6 2/1/6&lt;br /&gt;
+f 2/1/1 1/2/1 3/3/1 4/4/1&lt;br /&gt;
+f 4/5/2 3/6/2 7/7/2 8/8/2&lt;br /&gt;
+f 8/9/3 7/10/3 5/11/3 6/12/3&lt;br /&gt;
+f 6/13/4 5/14/4 1/15/4 2/16/4&lt;br /&gt;
+f 1/15/5 5/14/5 7/7/5 3/6/5&lt;br /&gt;
+f 6/12/6 2/1/6 4/4/6 8/9/6&lt;br /&gt;
 f 12/17/7 14/18/7 13/19/7 11/20/7&lt;br /&gt;
 f 12/17/8 11/20/8 9/21/8 10/22/8&lt;br /&gt;
 f 14/18/9 16/23/9 15/24/9 13/19/9&lt;br /&gt;
@@ -382,44 +382,44 @@ f 88/95/44 87/96/44 89/97/44 90/98/44&lt;br /&gt;
 f 86/94/45 85/93/45 87/96/45 88/95/45&lt;br /&gt;
 f 90/98/46 89/97/46 91/99/46 92/100/46&lt;br /&gt;
 f 10/101/47 9/102/47 51/103/47 52/104/47&lt;br /&gt;
-f 28/105/5 26/106/5 68/107/5 70/108/5&lt;br /&gt;
-f 46/109/5 44/110/5 86/111/5 88/112/5&lt;br /&gt;
-f 17/113/6 19/114/6 61/115/6 59/116/6&lt;br /&gt;
-f 35/117/6 37/118/6 79/119/6 77/120/6&lt;br /&gt;
-f 20/121/5 18/122/5 60/123/5 62/124/5&lt;br /&gt;
-f 38/125/5 36/126/5 78/127/5 80/128/5&lt;br /&gt;
-f 12/129/5 10/130/5 52/131/5 54/132/5&lt;br /&gt;
-f 30/133/5 28/105/5 70/108/5 72/134/5&lt;br /&gt;
-f 45/135/6 47/136/6 89/137/6 87/138/6&lt;br /&gt;
-f 9/139/6 11/140/6 53/141/6 51/142/6&lt;br /&gt;
-f 27/143/6 29/144/6 71/145/6 69/146/6&lt;br /&gt;
-f 48/147/5 46/109/5 88/112/5 90/148/5&lt;br /&gt;
-f 19/114/6 21/149/6 63/150/6 61/115/6&lt;br /&gt;
-f 37/118/6 39/151/6 81/152/6 79/119/6&lt;br /&gt;
+f 28/105/6 26/106/6 68/107/6 70/108/6&lt;br /&gt;
+f 46/109/6 44/110/6 86/111/6 88/112/6&lt;br /&gt;
+f 17/113/5 19/114/5 61/115/5 59/116/5&lt;br /&gt;
+f 35/117/5 37/118/5 79/119/5 77/120/5&lt;br /&gt;
+f 20/121/6 18/122/6 60/123/6 62/124/6&lt;br /&gt;
+f 38/125/6 36/126/6 78/127/6 80/128/6&lt;br /&gt;
+f 12/129/6 10/130/6 52/131/6 54/132/6&lt;br /&gt;
+f 30/133/6 28/105/6 70/108/6 72/134/6&lt;br /&gt;
+f 45/135/5 47/136/5 89/137/5 87/138/5&lt;br /&gt;
+f 9/139/5 11/140/5 53/141/5 51/142/5&lt;br /&gt;
+f 27/143/5 29/144/5 71/145/5 69/146/5&lt;br /&gt;
+f 48/147/6 46/109/6 88/112/6 90/148/6&lt;br /&gt;
+f 19/114/5 21/149/5 63/150/5 61/115/5&lt;br /&gt;
+f 37/118/5 39/151/5 81/152/5 79/119/5&lt;br /&gt;
 f 49/153/48 50/154/48 92/155/48 91/156/48&lt;br /&gt;
-f 22/157/5 20/121/5 62/124/5 64/158/5&lt;br /&gt;
-f 40/159/5 38/125/5 80/128/5 82/160/5&lt;br /&gt;
-f 11/140/6 13/161/6 55/162/6 53/141/6&lt;br /&gt;
-f 29/144/6 31/163/6 73/164/6 71/145/6&lt;br /&gt;
-f 47/136/6 49/165/6 91/166/6 89/137/6&lt;br /&gt;
-f 14/167/5 12/129/5 54/132/5 56/168/5&lt;br /&gt;
-f 32/169/5 30/133/5 72/134/5 74/170/5&lt;br /&gt;
-f 50/171/5 48/147/5 90/148/5 92/172/5&lt;br /&gt;
-f 21/149/6 23/173/6 65/174/6 63/150/6&lt;br /&gt;
-f 39/151/6 41/175/6 83/176/6 81/152/6&lt;br /&gt;
-f 24/177/5 22/157/5 64/158/5 66/178/5&lt;br /&gt;
-f 42/179/5 40/159/5 82/160/5 84/180/5&lt;br /&gt;
-f 13/161/6 15/181/6 57/182/6 55/162/6&lt;br /&gt;
-f 31/163/6 33/183/6 75/184/6 73/164/6&lt;br /&gt;
-f 16/185/5 14/167/5 56/168/5 58/186/5&lt;br /&gt;
-f 34/187/5 32/169/5 74/170/5 76/188/5&lt;br /&gt;
-f 23/173/6 25/189/6 67/190/6 65/174/6&lt;br /&gt;
-f 41/175/6 43/191/6 85/192/6 83/176/6&lt;br /&gt;
-f 26/106/5 24/177/5 66/178/5 68/107/5&lt;br /&gt;
-f 44/110/5 42/179/5 84/180/5 86/111/5&lt;br /&gt;
-f 15/181/6 17/113/6 59/116/6 57/182/6&lt;br /&gt;
-f 33/183/6 35/117/6 77/120/6 75/184/6&lt;br /&gt;
-f 18/122/5 16/185/5 58/186/5 60/123/5&lt;br /&gt;
-f 36/126/5 34/187/5 76/188/5 78/127/5&lt;br /&gt;
-f 25/189/6 27/143/6 69/146/6 67/190/6&lt;br /&gt;
-f 43/191/6 45/135/6 87/138/6 85/192/6&lt;br /&gt;
+f 22/157/6 20/121/6 62/124/6 64/158/6&lt;br /&gt;
+f 40/159/6 38/125/6 80/128/6 82/160/6&lt;br /&gt;
+f 11/140/5 13/161/5 55/162/5 53/141/5&lt;br /&gt;
+f 29/144/5 31/163/5 73/164/5 71/145/5&lt;br /&gt;
+f 47/136/5 49/165/5 91/166/5 89/137/5&lt;br /&gt;
+f 14/167/6 12/129/6 54/132/6 56/168/6&lt;br /&gt;
+f 32/169/6 30/133/6 72/134/6 74/170/6&lt;br /&gt;
+f 50/171/6 48/147/6 90/148/6 92/172/6&lt;br /&gt;
+f 21/149/5 23/173/5 65/174/5 63/150/5&lt;br /&gt;
+f 39/151/5 41/175/5 83/176/5 81/152/5&lt;br /&gt;
+f 24/177/6 22/157/6 64/158/6 66/178/6&lt;br /&gt;
+f 42/179/6 40/159/6 82/160/6 84/180/6&lt;br /&gt;
+f 13/161/5 15/181/5 57/182/5 55/162/5&lt;br /&gt;
+f 31/163/5 33/183/5 75/184/5 73/164/5&lt;br /&gt;
+f 16/185/6 14/167/6 56/168/6 58/186/6&lt;br /&gt;
+f 34/187/6 32/169/6 74/170/6 76/188/6&lt;br /&gt;
+f 23/173/5 25/189/5 67/190/5 65/174/5&lt;br /&gt;
+f 41/175/5 43/191/5 85/192/5 83/176/5&lt;br /&gt;
+f 26/106/6 24/177/6 66/178/6 68/107/6&lt;br /&gt;
+f 44/110/6 42/179/6 84/180/6 86/111/6&lt;br /&gt;
+f 15/181/5 17/113/5 59/116/5 57/182/5&lt;br /&gt;
+f 33/183/5 35/117/5 77/120/5 75/184/5&lt;br /&gt;
+f 18/122/6 16/185/6 58/186/6 60/123/6&lt;br /&gt;
+f 36/126/6 34/187/6 76/188/6 78/127/6&lt;br /&gt;
+f 25/189/5 27/143/5 69/146/5 67/190/5&lt;br /&gt;
+f 43/191/5 45/135/5 87/138/5 85/192/5&lt;br /&gt;
-- &lt;br /&gt;
2.50.1&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
XQAAgAD//////////wAjHInm9t8yfnX+Z0sAUgMBXE5fytCPtfXMlJAHG7iGGy9/eMLprkvLJkfz&lt;br /&gt;
kskEeQhzSy0wUKMQE+0BNFKV72DIZOy6ac834/3rAdvk5b9NkZvRtoNmpbz/6O2qbhY1SJLl+2Du&lt;br /&gt;
9vxxF2hENQS2N5jB4uIx5SMG3JlnNDW/r1vMIExwctBMfEVT2AC3rsNUfkwgHcBCt4EmKHdpSEjU&lt;br /&gt;
rr+6T8araQiD6gdbpbhlgoepw1+jYvWWHF2pVLxivUhoZIS5O/6HhHsCetT+iF32ZB30euh1lYzq&lt;br /&gt;
X8yC2UgwXLrIbLw/fmR6ysts8tFvnXcHzvLS5rqzDA3XBAHDuOS4AZkAwWoPrWTgEh4fQy9XfvC2&lt;br /&gt;
Kf1ppEo+7P7R565NGwttJhjqY6K0NLpiVtxRYaT0ayLrhtd5WTB38HSm1WZ4j/QPF7pCWL9Q57ju&lt;br /&gt;
dqFHiBZK0f3c8Ifzis9mUYRDOWNyFo0eeYzBPIKtwVqFs1oCEmAN7UP7pZGhO3MhRsqCfcBAGpHR&lt;br /&gt;
0s96hY7yAIBZOgo4Wy0Jh/pDE9DIeP9PXvNVQz0/Zi9Uh1jG80i4aKzEMM6IRTzNkTqj3BX9JQSz&lt;br /&gt;
3vlkMWv7OWjdHP8az0qDTFQx4Yzwiv/aB0CXt3YTAGyBfVnKFzSRFg8FgTFL5fC+1gng3kVGD1bp&lt;br /&gt;
NKYCY6mBmAXmdxIukfjborkJTcfQvno/HGnMylRoDG63kBNWxBXUlRCl73/iW08BG8RduDdYM0oS&lt;br /&gt;
UcKpvU/AJrQ5k7n4jnkB4vDznMkz7NzV8HMFHp56WJJcZlTRJQyLF65vdS6uZHS3Brwx55Wz3Jgo&lt;br /&gt;
+p03+w5tFpA/S1ZbgLZKEchGE4gtkn+dKVlKyVeHZKo6hz6tMRIsCe+w+0obC7QO6Z30K0I6BV1M&lt;br /&gt;
i9i1CQlGoIqIbvqquZgLGVVawvDTO34uI468kM+XuPLEJA+Lx8ZiZixE7dKRxAXdtdK/i/issFyl&lt;br /&gt;
G7l9J38O5V08DV829lWIm56ts49cCHHiqywVpkubTUaBdrzCulR//yCrHXzbGMzMCOagn/y8NqCH&lt;br /&gt;
fC/MJFyuzyejyTjbf0Hl3Iswhgf55HGiY+7kAbG3uCVkCnOrvmSOthQwkdJJ/5HSNYuWzv0KaqJc&lt;br /&gt;
OvCdJYOlofQLECzE3JdYzVR4Vkt3GXgugoqY3mRpx2J2NIKsjdsga6JRGmPGlDxOWO3tizHE8D8F&lt;br /&gt;
0aW+RuJypOsGpTqmGuGZi5c6zQmNg8rFuxvuUVT53qYMP9Ic9mZ6APBDT3Ono0bkxvoVkf44iz8P&lt;br /&gt;
xtxZk++kRsfY4UY98C4iCCOyfE+7qhG9UGL4th+nSZR9d0alxLwuwQl3Pby04dvHI9fkwmzjUKVt&lt;br /&gt;
yKonF/RhC64BKa/+u2XLTD2Bfsbtf2K9kEz2rBDRu5au89NrxPVk36EymBzySrrHRuZA/nE/eKmk&lt;br /&gt;
Hx+j5OvUURA8TVfUkUHThurYVAMD2HHeYHB0p6cUuY+UmokIHRcD+ST1L1TtAV5a0gM96/+6bGBE&lt;br /&gt;
FhCERAcJZQamQFYJByrHDqDTodThLOtJvoXIn9B4ifiINIVX+Ea0aB0oMRMAoCHix9MGJOGzC06/&lt;br /&gt;
MdLyY4N2n6/m65mjAJHWjnICaADk1SwjSWhFqypi6mf2xUJrVYJBGxiXg8/XyRhgexjKwx9gDAx1&lt;br /&gt;
COGEdn/MfWd5NuB3xmGRtDVdVoR1hL/MqESp9kLKOs+P5kcmnMc309B/2BG4BoflR5VJZ8lQRrnR&lt;br /&gt;
m6XExrt6pPw7yyGHCkSMZgLCP5SH+NcscnYMbsNp7KFsQd70kNLplLoJyACGNF88a6VuOvHL/3ez&lt;br /&gt;
MZsvgnw1C9M8upeopm2u2L03FhlGuDmFRudXEK3m/mV6a3I+rs5Tpfo6WQM1AJ8DVAvUF2NbJeub&lt;br /&gt;
y1by6k/ZeLh6opRzAU0q6yg1tmgZIWP5kZnADHUDeiWEQJl5zyCFgSyICMCUldhZ7VQ8AEdhp4h+&lt;br /&gt;
K+luVGg8YnX2hRq3EbBr5kLRRyZpAaMr42GIDkm+3sEFJrSYm15snj6B2GfG5TQcH/dTwCuxLnGY&lt;br /&gt;
0Q1mGMZtM7QfeyTxnSxxFlej4KmvUn9i0i029KmIlEkyjrqUoJtlOdd3+l6fiPUnfBi54ljukbfb&lt;br /&gt;
REHYAcjiNNibbz+pn3JDKJnAu33XfcMnFDjf4TQA+YzaChzY6wr4AWNmh/9Up9d7oxu58reUUnP9&lt;br /&gt;
9jq+qw==&lt;br /&gt;
||TODO screenshot&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3365</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3365"/>
		<updated>2025-07-05T12:58:13Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */ Added glass slopes.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
Glass_slope_artifacts.png|Glass slope artifacts.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Glass_ct.png&amp;diff=3364</id>
		<title>File:Glass ct.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Glass_ct.png&amp;diff=3364"/>
		<updated>2025-07-05T12:56:40Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Huhhila moved page File:Glass ct.png to File:Glass slope artifacts.png: Given filename was ignored/overwritten on upload.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;#REDIRECT [[File:Glass slope artifacts.png]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Glass_slope_artifacts.png&amp;diff=3363</id>
		<title>File:Glass slope artifacts.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Glass_slope_artifacts.png&amp;diff=3363"/>
		<updated>2025-07-05T12:56:40Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Huhhila moved page File:Glass ct.png to File:Glass slope artifacts.png: Given filename was ignored/overwritten on upload.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Slope rendering artifacts.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Glass_slope_artifacts.png&amp;diff=3362</id>
		<title>File:Glass slope artifacts.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Glass_slope_artifacts.png&amp;diff=3362"/>
		<updated>2025-07-05T12:53:59Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Slope rendering artifacts.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Slope rendering artifacts.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3361</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3361"/>
		<updated>2025-07-05T12:51:20Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Slats were fixed months ago */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats [fixed] ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3348</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3348"/>
		<updated>2025-04-29T16:26:49Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Misc */ Spatial vector iterator, work-in-progress&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Discrete/voxel iterator over the volume between two [https://api.luanti.org/spatial-vectors/ spatial vectors], inclusive (WIP):&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
local function iter (a, i)&lt;br /&gt;
  local x, y, r = a.x, a.y, a.r&lt;br /&gt;
  local z&lt;br /&gt;
  x = x + (i % r.x)&lt;br /&gt;
  y = y + (math.floor(i/r.x) % r.y)&lt;br /&gt;
  z = math.floor(i/r.x/r.y)&lt;br /&gt;
  if z &amp;gt;= r.z then&lt;br /&gt;
    return nil&lt;br /&gt;
  end&lt;br /&gt;
  z = a.z + z&lt;br /&gt;
  i = i + 1&lt;br /&gt;
  -- TODO: Unroll all the / and % out from here?&lt;br /&gt;
  return i, vector.new(x, y, z)&lt;br /&gt;
end&lt;br /&gt;
     &lt;br /&gt;
function vipairs (v1, v2)&lt;br /&gt;
  local v = vector.copy(v1)&lt;br /&gt;
  v.r = vector.offset(vector.subtract(v2, v1), 1, 1, 1)&lt;br /&gt;
  return iter, v, 0&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
-- usage examples:&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 1, 1)) do&lt;br /&gt;
  -- do something at each of the 27 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
for i, v in vipairs(vector.new(-1, -1, -1), vector.new(1, 2, 3)) do&lt;br /&gt;
  -- do something at each of the 60 example coordinates&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3347</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3347"/>
		<updated>2025-04-06T11:03:28Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
skybox_chest_xray.png|Skybox as dungeon chest xray-vision.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Skybox_chest_xray.png&amp;diff=3346</id>
		<title>File:Skybox chest xray.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Skybox_chest_xray.png&amp;diff=3346"/>
		<updated>2025-04-06T11:01:47Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Skybox apparently functions as dungeon chest xray vision (when quarrying under seabed).&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Skybox apparently functions as dungeon chest xray vision (when quarrying under seabed).&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3288</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3288"/>
		<updated>2025-03-08T18:12:45Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
Cshad.png|Dynamic colored shadows resulting in Moiré slabs.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Cshad.png&amp;diff=3287</id>
		<title>File:Cshad.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Cshad.png&amp;diff=3287"/>
		<updated>2025-03-08T18:10:55Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Colored dynamic shadows somehow results in slabs with Moiré pattern.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Colored dynamic shadows somehow results in slabs with Moiré pattern.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3285</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3285"/>
		<updated>2025-01-19T19:16:30Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Liquids at mapgen edge, lights added with digibuilders.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3284</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3284"/>
		<updated>2025-01-19T19:15:15Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
Lighting-mapgen_2025-01-19.png|Mapgen edge with lights added with digibuilders.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Lighting-mapgen_2025-01-19.png&amp;diff=3283</id>
		<title>File:Lighting-mapgen 2025-01-19.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Lighting-mapgen_2025-01-19.png&amp;diff=3283"/>
		<updated>2025-01-19T19:13:50Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Adding lights at edge of mapgen after quarrying the mapchunk looks somewhat odd. There was a single river water source few hundred meters above, but it encountered ignore.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Adding lights at edge of mapgen after quarrying the mapchunk looks somewhat odd. There was a single river water source few hundred meters above, but it encountered ignore.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3278</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3278"/>
		<updated>2025-01-16T22:11:57Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Various oddities */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Various oddities =&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Quarry_underground_sunlight_liquids.png|Underground sunlight with liquids at mapchunk edge.&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3277</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3277"/>
		<updated>2025-01-16T22:01:23Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Slats */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
{|&lt;br /&gt;
||&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
||[[File:Slats bug at Goliath.png|thumb|Slats should have the &amp;quot;pink&amp;quot; part 100% transparent instead.]]&lt;br /&gt;
||&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Todo =&lt;br /&gt;
Lorem ipsum.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Quarry_underground_sunlight_liquids.png&amp;diff=3276</id>
		<title>File:Quarry underground sunlight liquids.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Quarry_underground_sunlight_liquids.png&amp;diff=3276"/>
		<updated>2025-01-15T22:22:57Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* Summary */ wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Quarry holes have rather peculiar sunlight propagation, especially visible at edge of mapgen where liquids exhibit peculiar behavior as well.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Quarry_underground_sunlight_liquids.png&amp;diff=3275</id>
		<title>File:Quarry underground sunlight liquids.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Quarry_underground_sunlight_liquids.png&amp;diff=3275"/>
		<updated>2025-01-15T22:19:50Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Quarry holes have rather peculiar sunlight propagation, especially visible at edge of mapgen where liquids exhibit precarious behavior as well.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Quarry holes have rather peculiar sunlight propagation, especially visible at edge of mapgen where liquids exhibit precarious behavior as well.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Slats_bug_at_Goliath.png&amp;diff=3272</id>
		<title>File:Slats bug at Goliath.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Slats_bug_at_Goliath.png&amp;diff=3272"/>
		<updated>2025-01-12T12:45:48Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Texture modifier makealpha appears to require use_texture_alpha these days.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Texture modifier makealpha appears to require use_texture_alpha these days.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3271</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3271"/>
		<updated>2025-01-12T08:43:22Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Reformat old C* centrifuge statistics sample.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: &lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
1710974308:72000&lt;br /&gt;
1710974422:72000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974479:66000&lt;br /&gt;
1710974483:72000&lt;br /&gt;
1710974603:72000&lt;br /&gt;
1710974652:60000&lt;br /&gt;
1710974653:60000&lt;br /&gt;
1710974654:48000&lt;br /&gt;
1710974656:60000&lt;br /&gt;
1710974657:66000&lt;br /&gt;
1710974658:72000&lt;br /&gt;
1710974783:72000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974828:60000&lt;br /&gt;
1710974831:54000&lt;br /&gt;
1710974834:60000&lt;br /&gt;
1710974835:72000&lt;br /&gt;
1710975013:0&lt;br /&gt;
1710975014:0&lt;br /&gt;
1710975018:24000&lt;br /&gt;
1710975019:48000&lt;br /&gt;
1710975020:72000&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977201:0&lt;br /&gt;
1710977205:24000&lt;br /&gt;
1710977206:48000&lt;br /&gt;
1710977207:72000&lt;br /&gt;
1710977322:72000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977380:66000&lt;br /&gt;
1710977381:60000&lt;br /&gt;
1710977385:66000&lt;br /&gt;
1710977386:72000&lt;br /&gt;
1710977502:72000&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Todo =&lt;br /&gt;
Lorem ipsum.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3270</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3270"/>
		<updated>2025-01-12T08:33:07Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Lorem ipsum.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: 1710974308:72000 1710974422:72000 1710974479:66000 1710974479:66000 1710974483:72000 1710974603:72000 1710974652:60000 1710974653:60000 1710974654:48000 1710974656:60000 1710974657:66000 1710974658:72000 1710974783:72000 1710974828:60000 1710974828:60000 1710974831:54000 1710974834:60000 1710974835:72000 1710975013:0 1710975014:0 1710975018:24000 1710975019:48000 1710975020:72000 1710977201:0 1710977201:0 1710977205:24000 1710977206:48000 1710977207:72000 1710977322:72000 1710977380:66000 1710977380:66000 1710977381:60000 1710977385:66000 1710977386:72000 1710977502:72000&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;br /&gt;
&lt;br /&gt;
= Todo =&lt;br /&gt;
Lorem ipsum.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3269</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3269"/>
		<updated>2025-01-12T08:24:01Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Mention slats bug.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Lorem Ipsum.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
= Random patches =&lt;br /&gt;
&lt;br /&gt;
== Slats ==&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;lua&amp;quot;&amp;gt;&lt;br /&gt;
From 608fd6fad26ccf1b2515bfb897cdee63e72ceae5 Mon Sep 17 00:00:00 2001&lt;br /&gt;
From: Huhhila &amp;lt;huhhila@example.org&amp;gt;&lt;br /&gt;
Date: Sun, 12 Jan 2025 10:02:52 +0200&lt;br /&gt;
Subject: [PATCH] Fix transparency.&lt;br /&gt;
&lt;br /&gt;
---&lt;br /&gt;
 api.lua | 1 +&lt;br /&gt;
 1 file changed, 1 insertion(+)&lt;br /&gt;
&lt;br /&gt;
diff --git a/api.lua b/api.lua&lt;br /&gt;
index 65e19bd..a41c8b2 100644&lt;br /&gt;
--- a/api.lua&lt;br /&gt;
+++ b/api.lua&lt;br /&gt;
@@ -57,6 +57,7 @@ function slats.register(subname, opts)&lt;br /&gt;
 		paramtype2 = &amp;quot;wallmounted&amp;quot;,&lt;br /&gt;
 		is_ground_content = false,&lt;br /&gt;
 		sunlight_propagates = true,&lt;br /&gt;
+		use_texture_alpha = &amp;quot;clip&amp;quot;,&lt;br /&gt;
 		groups = opts.groups,&lt;br /&gt;
 		sounds = opts.sounds,&lt;br /&gt;
 		node_box = {&lt;br /&gt;
-- &lt;br /&gt;
2.43.0&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&amp;lt;pre&amp;gt;&lt;br /&gt;
H4sIAF13g2cEA0VQXWvcMBB8Pv2KJU8JPru2crYvpi1XWo5QKBQub6GYtby2VXSy0Ad1aH985DvS&lt;br /&gt;
gFh2dzQzu3u08xmqfD/01YA9r4QYio6XRdkN3f6hFj1RdU81F4RUwo9Zw4kMFDXkeXN5wPO8YMco&lt;br /&gt;
08BjmCapED5O1+RAC56Nomy242f2DT01cAp6CwWH76gjlZdQRCHelBySPEqxU+h+k/ANPP/88vT1&lt;br /&gt;
8Rcc5QLeonYGLWnxkjGWpikDNDJTAeEfFJCwGAapCMSEeqQ+WoDUjqyXs75N7hjr5TBAmo7SA354&lt;br /&gt;
43ZvGZO6pwWqkoqHrs8y3BVi3/E4XF7tdqvhO4slSQLvzMMB0rLeVpDEWEMsh6DF6gtOoXeZpVE6&lt;br /&gt;
T/bWhU7jmbYwG+/uGGw2cSU8+xdDHD7BzR9U6jwH7am/2a6wdO1oY6NvxRy72sdfAypHF9QFreQ4&lt;br /&gt;
+dbY2eAYr+si7m2IcLLZBEetp8UHSy0qM+FqIZQ0V+1V2KyEdZjsWl1lV8P/gLtUF0DPPbXdvETO&lt;br /&gt;
33gRYDzb3Wc5Y69xYKfLRAIAAA==&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
= Misc =&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: 1710974308:72000 1710974422:72000 1710974479:66000 1710974479:66000 1710974483:72000 1710974603:72000 1710974652:60000 1710974653:60000 1710974654:48000 1710974656:60000 1710974657:66000 1710974658:72000 1710974783:72000 1710974828:60000 1710974828:60000 1710974831:54000 1710974834:60000 1710974835:72000 1710975013:0 1710975014:0 1710975018:24000 1710975019:48000 1710975020:72000 1710977201:0 1710977201:0 1710977205:24000 1710977206:48000 1710977207:72000 1710977322:72000 1710977380:66000 1710977380:66000 1710977381:60000 1710977385:66000 1710977386:72000 1710977502:72000&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Privileges&amp;diff=3169</id>
		<title>Privileges</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Privileges&amp;diff=3169"/>
		<updated>2024-04-27T21:13:38Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: /* XP limited */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Overview ==&lt;br /&gt;
Privileges can either be granted when you join, when you get enough XP, when you ask for it or when you have a certain role.&lt;br /&gt;
&lt;br /&gt;
== Obtaining ==&lt;br /&gt;
=== Everyone ===&lt;br /&gt;
&lt;br /&gt;
Everybody has these (by default):&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ XP Privileges&lt;br /&gt;
|-&lt;br /&gt;
! Priv !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| shout || Ability to talk in the chat&lt;br /&gt;
|-&lt;br /&gt;
| interact || Ability to modify the world&lt;br /&gt;
|-&lt;br /&gt;
| tp || Ability to teleport to other players and accept teleport requests&lt;br /&gt;
|-&lt;br /&gt;
| home || Ability to /sethome and /home&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Limited ===&lt;br /&gt;
These privileges are only given to some people.&lt;br /&gt;
&lt;br /&gt;
==== XP limited ====&lt;br /&gt;
These are automatically granted to players when they reach the required XP.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ XP Privileges&lt;br /&gt;
|-&lt;br /&gt;
! XP !! Priv !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|200}}&amp;lt;br /&amp;gt; 200 XP|| Place water || Technically not a priv&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;3&amp;quot;|{{#invoke:Rank|toRank|10000}}&amp;lt;br /&amp;gt; 10k XP || areas_protect || Ability to protect areas with the [areas] mod&lt;br /&gt;
|-&lt;br /&gt;
| moon_access || Access to the [[Moon]]&lt;br /&gt;
|-&lt;br /&gt;
| Place lava || Technically not a priv&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|15000}}&amp;lt;br /&amp;gt; 15k XP || blockexchange_protected_upload&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|20000}}&amp;lt;br /&amp;gt; 20k XP || asteroids_access || Access to the [[Asteroids]]&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|40000}}&amp;lt;br /&amp;gt; 40k XP || lavastone_remove || Ability to remove lava-generated stone&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;6&amp;quot;|{{#invoke:Rank|toRank|50000}}&amp;lt;br /&amp;gt; 50k XP || mars_access || Access to [[Mars]]&lt;br /&gt;
|-&lt;br /&gt;
| train_operator || rowspan=&amp;quot;4&amp;quot;|Miscallenous advtrains privileges.&lt;br /&gt;
|-&lt;br /&gt;
| train_place&lt;br /&gt;
|-&lt;br /&gt;
| track_builder&lt;br /&gt;
|-&lt;br /&gt;
| railway_operator&lt;br /&gt;
|-&lt;br /&gt;
| Place uranium || Technically not a priv&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|{{#invoke:Rank|toRank|100000}}&amp;lt;br /&amp;gt;100k XP || warzone_access || Access to [[Warzone]]&lt;br /&gt;
|-&lt;br /&gt;
| Place chernobylite || Technically not a priv&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|200000}}&amp;lt;br /&amp;gt;200k XP || spacecannon_unrestricted || Ability to freely use spacecannons&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|300000}}&amp;lt;br /&amp;gt;300k XP || missions_teleport || Ability to teleport in missions.&lt;br /&gt;
|-&lt;br /&gt;
| {{#invoke:Rank|toRank|450000}}&amp;lt;br /&amp;gt;450k XP || jumpdrive_land || Allows atmospheric travel (y from -20 to 100) with a [[Jumpdrive]]&lt;br /&gt;
|-&lt;br /&gt;
| rowspan=&amp;quot;2&amp;quot;|{{#invoke:Rank|toRank|500000}}&amp;lt;br /&amp;gt;500k XP || areas_high_limit || Ability to protect very large areas with [[areas]]&lt;br /&gt;
|-&lt;br /&gt;
| Place corium || Technically not a priv&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Manual handout ====&lt;br /&gt;
&lt;br /&gt;
Ask [[User:BuckarooBanzai]] if you want one of these, but please provide a reason.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Manual Handout Privileges&lt;br /&gt;
|-&lt;br /&gt;
! Priv !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| train_remove&lt;br /&gt;
|-&lt;br /&gt;
| train_admin&lt;br /&gt;
|-&lt;br /&gt;
| protect_streets || Used to protect streets with priv protectors.&lt;br /&gt;
|-&lt;br /&gt;
| softlimit_bypass || Ability to join while the server is full.&lt;br /&gt;
|-&lt;br /&gt;
| teleport&lt;br /&gt;
|-&lt;br /&gt;
| protect_technic_city_infra || Only used for [[Technic City]] priv protectors.&lt;br /&gt;
|-&lt;br /&gt;
| missions_mobs || Ability to spawn mobs in missions.&lt;br /&gt;
|-&lt;br /&gt;
| protect_rails&lt;br /&gt;
|-&lt;br /&gt;
| atlatc&lt;br /&gt;
|-&lt;br /&gt;
| mesecons_debug&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Moderators ====&lt;br /&gt;
&lt;br /&gt;
Moderators have some of these privs, to see a semi-up-to-date list, see [[Admins, Moderators and Staff]].&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Moderator Privileges&lt;br /&gt;
|-&lt;br /&gt;
! Priv !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| ban&lt;br /&gt;
|-&lt;br /&gt;
| kick&lt;br /&gt;
|-&lt;br /&gt;
| teleport&lt;br /&gt;
|-&lt;br /&gt;
| geoip&lt;br /&gt;
|-&lt;br /&gt;
| basic_privs || Ability to revoke and grant privs granted for everyone.&lt;br /&gt;
|-&lt;br /&gt;
| debug&lt;br /&gt;
|-&lt;br /&gt;
| staff || Used to determine if a player is staff or not.&lt;br /&gt;
|-&lt;br /&gt;
| spawn_builder || Ability to build at [[Spawn]].&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==== Admin ====&lt;br /&gt;
Only admin accounts have these privileges.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+ Admin Privileges&lt;br /&gt;
|-&lt;br /&gt;
! Priv !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| geoip_verbose&lt;br /&gt;
|-&lt;br /&gt;
| server || Ability to do server stuff like shutting down.&lt;br /&gt;
|-&lt;br /&gt;
| privs || Ability to grant and revoke any privilege to anyone.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[ Category:Tutorial ]]&lt;br /&gt;
[[ Category:Rules ]]&lt;br /&gt;
[[ Category:XP ]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Spawn_3.0_205112.png&amp;diff=3166</id>
		<title>File:Spawn 3.0 205112.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Spawn_3.0_205112.png&amp;diff=3166"/>
		<updated>2024-04-27T20:44:48Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Huhhila reverted File:Spawn 3.0 205112.png to an old version&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;File uploaded with MsUpload&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Main_Page&amp;diff=3159</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Main_Page&amp;diff=3159"/>
		<updated>2024-04-13T16:06:06Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Switch default monitoring interval to 10s.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[File:Pandorabox black.png|Pandorabox]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;| Pandorabox spawn&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|[[File:Spawn 3.0 205112.png|480px]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;A Minetest server&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Feel free to [[Login]] and edit this wiki!&lt;br /&gt;
&lt;br /&gt;
'''Default password''': &amp;quot;Endor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game links ===&lt;br /&gt;
&lt;br /&gt;
* Server: '''pandorabox.io''' port '''30000'''&lt;br /&gt;
* {{#far:map}} Map: https://pandorabox.io/map/#!/map/0/11/604/1902&lt;br /&gt;
* {{#fas:info}} Minetest WebUI (password/mail/skin-manager): https://pandorabox.io/ui&lt;br /&gt;
* {{#fas:list}} Highscore: https://pandorabox.io/highscore&lt;br /&gt;
* {{#fas:info}} Mods info page (mtinfo): https://pandorabox-io.github.io/pandorabox-mods/#/&lt;br /&gt;
* {{#fas:download}} [[Map download]]&lt;br /&gt;
&lt;br /&gt;
=== Discussion and chat links ===&lt;br /&gt;
&lt;br /&gt;
* {{#fas:comments}} Forum: https://forum.minetest.net/viewtopic.php?f=10&amp;amp;t=20311&lt;br /&gt;
* {{#fas:comments}} IRC: #pandorabox on Libera.Chat (see also [[Beerchat_Public_Channels]] for additional channels)&lt;br /&gt;
* {{#fas:comments}} Matrix: https://matrix.to/#/#pandorabox:matrix.org&lt;br /&gt;
* {{#fab:discord}} Discord: https://discord.gg/mK6esa4&lt;br /&gt;
* {{#fab:github}} Idea / suggestion tracker: https://github.com/pandorabox-io/in-game/issues&lt;br /&gt;
&lt;br /&gt;
=== Developer and contributor links ===&lt;br /&gt;
* {{#fab:github}} Github: http://github.com/pandorabox-io&lt;br /&gt;
* {{#fab:github}} Mod collection: https://github.com/pandorabox-io/pandorabox-mods&lt;br /&gt;
* {{#fas:chart-area}} Stats / monitoring: https://monitoring.minetest.ch/d/YUpouLmWk/overview?orgId=1&amp;amp;refresh=10s&amp;amp;var-instance=pandorabox.io&lt;br /&gt;
* {{#fas:atom}} NodeRED chat bot: https://pandorabox.io/nodered&lt;br /&gt;
* {{#fas:spider}} Crash logs: https://pandorabox.io/crashlogs/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Popular links&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Rules]]&lt;br /&gt;
[[Image:Rules_icon.png|180px|link=Rules]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[:Category:Tutorial]]&lt;br /&gt;
[[Image:Tutorial_icon.png|180px|link=:Category:Tutorial]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Tips]]&lt;br /&gt;
[[Image:Tips_icon.png|180px|link=Tips]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Popular places]]&lt;br /&gt;
[[Image:Poi_big.png|180px|link=Popular places]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Bounties]]&lt;br /&gt;
[[Image:bounty.png|180px|link=Bounties]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;pages&amp;quot;&amp;gt;Root&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meta ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Template]]&lt;br /&gt;
* [[:Category:Icons]]&lt;br /&gt;
* [[:Category:Meta]]&lt;br /&gt;
* [[:Category:Images]]&lt;br /&gt;
* Unfinished pages: [[:Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3050</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=3050"/>
		<updated>2024-03-26T18:52:43Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Random centrifuge stats WIP&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;br /&gt;
&lt;br /&gt;
Looking for a FOSS licensed alternative to highchartsgpt.&lt;br /&gt;
&lt;br /&gt;
An example to try with that particular tool:&lt;br /&gt;
&lt;br /&gt;
:Create chart with the following example data (unix timestamp and discrete stepped measurement) and moving averages (excluding over 3 minutes of 0); if a measurement interval in that exceeds three minutes, add synthetic value of 0 at 3 minutes after the latest measurement and 0. In case of duplicates, also add one millisecond to the value: 1710974308:72000 1710974422:72000 1710974479:66000 1710974479:66000 1710974483:72000 1710974603:72000 1710974652:60000 1710974653:60000 1710974654:48000 1710974656:60000 1710974657:66000 1710974658:72000 1710974783:72000 1710974828:60000 1710974828:60000 1710974831:54000 1710974834:60000 1710974835:72000 1710975013:0 1710975014:0 1710975018:24000 1710975019:48000 1710975020:72000 1710977201:0 1710977201:0 1710977205:24000 1710977206:48000 1710977207:72000 1710977322:72000 1710977380:66000 1710977380:66000 1710977381:60000 1710977385:66000 1710977386:72000 1710977502:72000&lt;br /&gt;
&lt;br /&gt;
(sometimes triggers ratelimits in their public demo endpoints even with that little demo data, sometimes doesn't)&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=File:Fluid_and_light_dynamics_20240227.png&amp;diff=3048</id>
		<title>File:Fluid and light dynamics 20240227.png</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=File:Fluid_and_light_dynamics_20240227.png&amp;diff=3048"/>
		<updated>2024-02-27T22:13:42Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Natural light and flowing river water from zero river water sources.
There is actually a solid ceiling approximately 10km closer to surface.
Below the dungeon has not been mapgen'd yet.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
Natural light and flowing river water from zero river water sources.&lt;br /&gt;
There is actually a solid ceiling approximately 10km closer to surface.&lt;br /&gt;
Below the dungeon has not been mapgen'd yet.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Main_Page&amp;diff=2841</id>
		<title>Main Page</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Main_Page&amp;diff=2841"/>
		<updated>2023-06-05T18:38:59Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: monitoring.minetest.land dns entry finally expired, as such better update the link here as well&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
&lt;br /&gt;
[[File:Pandorabox black.png|Pandorabox]]&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;float:right;&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;| Pandorabox spawn&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
!colspan=&amp;quot;10&amp;quot;|[[File:Spawn 3.0 205112.png|480px]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;big&amp;gt;A Minetest server&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Feel free to [[Login]] and edit this wiki!&lt;br /&gt;
&lt;br /&gt;
'''Default password''': &amp;quot;Endor&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Game links ===&lt;br /&gt;
&lt;br /&gt;
* Server: '''pandorabox.io''' port '''30000'''&lt;br /&gt;
* {{#far:map}} Map: https://pandorabox.io/map/#!/map/0/11/604/1902&lt;br /&gt;
* {{#fas:info}} Minetest WebUI (password/mail/skin-manager): https://pandorabox.io/ui&lt;br /&gt;
* {{#fas:list}} Highscore: https://pandorabox.io/highscore&lt;br /&gt;
* {{#fas:info}} Mods info page (mtinfo): https://pandorabox-io.github.io/pandorabox-mods/#/&lt;br /&gt;
* {{#fas:download}} [[Map download]]&lt;br /&gt;
&lt;br /&gt;
=== Discussion and chat links ===&lt;br /&gt;
&lt;br /&gt;
* {{#fas:comments}} Forum: https://forum.minetest.net/viewtopic.php?f=10&amp;amp;t=20311&lt;br /&gt;
* {{#fas:comments}} IRC: #pandorabox on Libera.Chat (see also [[Beerchat_Public_Channels]] for additional channels)&lt;br /&gt;
* {{#fas:comments}} Matrix: https://matrix.to/#/#pandorabox:matrix.org&lt;br /&gt;
* {{#fab:discord}} Discord: https://discord.gg/mK6esa4&lt;br /&gt;
* {{#fab:github}} Idea / suggestion tracker: https://github.com/pandorabox-io/in-game/issues&lt;br /&gt;
&lt;br /&gt;
=== Developer and contributor links ===&lt;br /&gt;
* {{#fab:github}} Github: http://github.com/pandorabox-io&lt;br /&gt;
* {{#fab:github}} Mod collection: https://github.com/pandorabox-io/pandorabox-mods&lt;br /&gt;
* {{#fas:chart-area}} Stats / monitoring: https://monitoring.minetest.ch/d/YUpouLmWk/overview?orgId=1&amp;amp;refresh=5s&amp;amp;var-instance=pandorabox.io&lt;br /&gt;
* {{#fas:atom}} NodeRED chat bot: https://pandorabox.io/nodered&lt;br /&gt;
* {{#fas:spider}} Crash logs: https://pandorabox.io/crashlogs/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|+Popular links&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Rules]]&lt;br /&gt;
[[Image:Rules_icon.png|180px|link=Rules]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[:Category:Tutorial]]&lt;br /&gt;
[[Image:Tutorial_icon.png|180px|link=:Category:Tutorial]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Tips]]&lt;br /&gt;
[[Image:Tips_icon.png|180px|link=Tips]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Popular places]]&lt;br /&gt;
[[Image:Poi_big.png|180px|link=Popular places]]&lt;br /&gt;
&lt;br /&gt;
!style=&amp;quot;text-align:center;&amp;quot;|[[Bounties]]&lt;br /&gt;
[[Image:bounty.png|180px|link=Bounties]]&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
=== Categories ===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;categorytree mode=&amp;quot;pages&amp;quot;&amp;gt;Root&amp;lt;/categorytree&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Meta ===&lt;br /&gt;
&lt;br /&gt;
* [[:Category:Template]]&lt;br /&gt;
* [[:Category:Icons]]&lt;br /&gt;
* [[:Category:Meta]]&lt;br /&gt;
* [[:Category:Images]]&lt;br /&gt;
* Unfinished pages: [[:Category:Stub]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Playing_on_Android&amp;diff=2796</id>
		<title>Playing on Android</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Playing_on_Android&amp;diff=2796"/>
		<updated>2022-09-11T08:04:46Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: (qa grouping / +1 space)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;***** WIP, please clean this up *****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A couple actions are tricky when using android devices. Lets collect some tips here.&lt;br /&gt;
&lt;br /&gt;
FAQ:&lt;br /&gt;
 Q: how do I change my password&lt;br /&gt;
 A: use &amp;quot;back button&amp;quot; to get to the menu (may require switching android settings from gesture navigation to 3-button navigation; or log in from a computer)&lt;br /&gt;
&lt;br /&gt;
 Q: how do I get off a boat (possibly also applies to bike, horse, ...)&lt;br /&gt;
 A: &lt;br /&gt;
&lt;br /&gt;
 Q: how can I pick up a cart (possibly applies to other similar actions)&lt;br /&gt;
 A: https://github.com/minetest/minetest/issues/12610#issuecomment-1200438989&lt;br /&gt;
 &amp;quot;Start your long tap, shortly after that sneak without holding your finger you are tapping with.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**** TODO: add categories *****&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Playing_on_Android&amp;diff=2795</id>
		<title>Playing on Android</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Playing_on_Android&amp;diff=2795"/>
		<updated>2022-09-11T08:03:48Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: android pw change may require 3-button navigation mode setting (most devices don't have hardware back button)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;***** WIP, please clean this up *****&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
A couple actions are tricky when using android devices. Lets collect some tips here.&lt;br /&gt;
&lt;br /&gt;
FAQ:&lt;br /&gt;
 Q: how do I change my password&lt;br /&gt;
 A: use &amp;quot;back button&amp;quot; to get to the menu (may require switching android settings from gesture navigation to 3-button navigation; or log in from a computer)&lt;br /&gt;
&lt;br /&gt;
 Q: how do I get off a boat (possibly also applies to bike, horse, ...)&lt;br /&gt;
 A: &lt;br /&gt;
&lt;br /&gt;
 Q: how can I pick up a cart (possibly applies to other similar actions)&lt;br /&gt;
 A: https://github.com/minetest/minetest/issues/12610#issuecomment-1200438989&lt;br /&gt;
&amp;quot;Start your long tap, shortly after that sneak without holding your finger you are tapping with.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
**** TODO: add categories *****&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Talk:Jumpdrive_Script_by_GamePlayer&amp;diff=2777</id>
		<title>Talk:Jumpdrive Script by GamePlayer</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Talk:Jumpdrive_Script_by_GamePlayer&amp;diff=2777"/>
		<updated>2022-07-18T17:52:43Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Misc questions regarding the code sample.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;# Could you provide a link for &amp;quot;AERO Kianit License 1.0&amp;quot;, [[User:GamePlayer]]?&lt;br /&gt;
# Consider setting x, y and z with one digiline message; example of such at [[Talk:Digiline_Jumpdrive_controller]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Moderator_manual&amp;diff=2776</id>
		<title>Moderator manual</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Moderator_manual&amp;diff=2776"/>
		<updated>2022-07-18T16:01:50Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: As wiki parser has issues with &amp;lt;time&amp;gt;, escaped it.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Duties of moderators and general manual&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;background: green; padding: 5px;&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;b&amp;gt;Please note:&amp;lt;/b&amp;gt; we are all here to have fun!&lt;br /&gt;
&amp;lt;/span&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Responsibilities ==&lt;br /&gt;
* look at the chat now and then&lt;br /&gt;
* ban or warn offensive players&lt;br /&gt;
* If in doubt, let the [[User:admin]] know via [[Mail]]&lt;br /&gt;
&lt;br /&gt;
== Benefits ==&lt;br /&gt;
* Health insurance / Dental plan&lt;br /&gt;
* Ability to join even if the server is full&lt;br /&gt;
== Useful commands ==&lt;br /&gt;
&lt;br /&gt;
=== xban2 commands ===&lt;br /&gt;
The main ban mod on this server.&lt;br /&gt;
Use this to ban players and their ip-address&lt;br /&gt;
&lt;br /&gt;
Mod:&lt;br /&gt;
* Source: https://github.com/minetest-mods/xban2&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
* Permaban: '''/xban &amp;lt;player_or_ip&amp;gt; &amp;lt;reason&amp;gt;'''&lt;br /&gt;
* Tempban: '''/xtempban &amp;lt;player_or_ip&amp;gt; &amp;amp;lt;time&amp;gt; &amp;lt;reason&amp;gt;''' (time: s=seconds, m=minutes, D=days)&lt;br /&gt;
** Example: '''/xtempban SomeDude 7D don't be a dick!''' (bans the player &amp;quot;SomeDude&amp;quot; for 7 days)&lt;br /&gt;
* Unban: '''/xunban &amp;lt;player_or_ip&amp;gt;'''&lt;br /&gt;
* List records: '''/xban_record &amp;lt;player_or_ip&amp;gt;''' (shows the ban-records of the player)&lt;br /&gt;
&lt;br /&gt;
Privs:&lt;br /&gt;
* Requires the '''ban''' priv&lt;br /&gt;
&lt;br /&gt;
=== Account creation toggle ===&lt;br /&gt;
Disable/enable new account creation&lt;br /&gt;
(useful if some kid with a vpn account has fun with his &amp;quot;hacked&amp;quot; client)&lt;br /&gt;
&lt;br /&gt;
Mod:&lt;br /&gt;
* Source: https://github.com/pandorabox-io/pandorabox_custom/blob/master/disallow_new_players.lua&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
* '''/disallow_new_players''' disables the creation of new accounts (until the server restarts/crashes)&lt;br /&gt;
* '''/allow_new_players''' re-enables the creation of new accounts&lt;br /&gt;
&lt;br /&gt;
Privs:&lt;br /&gt;
* Requires the '''staff'''  priv&lt;br /&gt;
&lt;br /&gt;
=== Geoip ===&lt;br /&gt;
Geoip-Lookup for players.&lt;br /&gt;
Shows from which country someone is (useful to see potential language-barriers)&lt;br /&gt;
&lt;br /&gt;
Mod:&lt;br /&gt;
* Source: https://github.com/pandorabox-io/geoip&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
* Geo-lookup: '''/geoip &amp;lt;playername&amp;gt;'''&lt;br /&gt;
&lt;br /&gt;
Privs:&lt;br /&gt;
* Requires the '''geoip'''  priv&lt;br /&gt;
&lt;br /&gt;
=== Spill removal (lava/chernobylite) ===&lt;br /&gt;
Pretty handy for cleaning up lava- and chernobylite griefings:&lt;br /&gt;
&lt;br /&gt;
Commands:&lt;br /&gt;
* '''/lavastone_remove''' removes all lava-generated stone in the area&lt;br /&gt;
* '''/chernobylite_remove''' removes all chernobylite nodes in the area&lt;br /&gt;
&lt;br /&gt;
Mod:&lt;br /&gt;
* Source: https://github.com/pandorabox-io/spill_removal&lt;br /&gt;
&lt;br /&gt;
Privs:&lt;br /&gt;
* Requires the '''lavastone_remove''' or '''chernobylite_remove''' priv&lt;br /&gt;
&lt;br /&gt;
=== beerchat commands ===&lt;br /&gt;
The chat mod on this server.&lt;br /&gt;
* '''/force2channel channelName, playerName''' Moderators can force a player to join and make a channel their default.&lt;br /&gt;
&lt;br /&gt;
[[Category:Moderation]]&lt;br /&gt;
[[Category:Tutorial]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=2768</id>
		<title>User:Huhhila</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=User:Huhhila&amp;diff=2768"/>
		<updated>2022-06-12T13:26:25Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: No-content page for now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Special:Whatlinkshere/User:Huhhila]]&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Talk:Digiline_Jumpdrive_controller&amp;diff=2767</id>
		<title>Talk:Digiline Jumpdrive controller</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Talk:Digiline_Jumpdrive_controller&amp;diff=2767"/>
		<updated>2022-06-12T13:23:31Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: Real Coordinates background info added.&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Draft of modernized version for comments, before making version 1.2 out of it, any comments?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
-- version 1.1.huhhila.2&lt;br /&gt;
&lt;br /&gt;
mem.factor = mem.factor or 1&lt;br /&gt;
&lt;br /&gt;
-- TODO actually use converted coordinates in table&lt;br /&gt;
local function c(v)&lt;br /&gt;
  return (v + 0)*5/4 + 3/8&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function c1(t)&lt;br /&gt;
  local r = {}&lt;br /&gt;
  for k, v in pairs(t) do&lt;br /&gt;
    r[k] = (k == &amp;quot;X&amp;quot; or k == &amp;quot;Y&amp;quot;) and c(v) or k == &amp;quot;H&amp;quot; and v*2*15/13*0.35 or v&lt;br /&gt;
  end&lt;br /&gt;
  return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convert(t)&lt;br /&gt;
  local r = {}&lt;br /&gt;
  for _, v in ipairs(t) do&lt;br /&gt;
    table.insert(r, c1(v))&lt;br /&gt;
  end&lt;br /&gt;
  return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function draw_touch()&lt;br /&gt;
 digiline_send(&amp;quot;touch&amp;quot;, convert({&lt;br /&gt;
  { command = &amp;quot;set&amp;quot;, locked = true, real_coordinates = true, width = (10-1)*5/4+3/4+1, height = (8-1)*5/4+3/4+1 },&lt;br /&gt;
  { command = &amp;quot;clear&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;xplus&amp;quot;,   label=&amp;quot;X+&amp;quot;,  X=0, Y=0, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;xminus&amp;quot;,  label=&amp;quot;X-&amp;quot;,  X=0, Y=1, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;yplus&amp;quot;,   label=&amp;quot;Y+&amp;quot;,  X=0, Y=2, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;yminus&amp;quot;,  label=&amp;quot;Y-&amp;quot;,  X=0, Y=3, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;zplus&amp;quot;,   label=&amp;quot;Z+&amp;quot;,  X=0, Y=4, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;zminus&amp;quot;,  label=&amp;quot;Z-&amp;quot;,  X=0, Y=5, W=4, H=1 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button&amp;quot;,  name=&amp;quot;factorplus&amp;quot;,  label=&amp;quot;Factor+&amp;quot;,   X=0, Y=6, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button&amp;quot;,  name=&amp;quot;factorminus&amp;quot;,  label=&amp;quot;Factor-&amp;quot;,  X=0, Y=7, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;label&amp;quot;,  label=&amp;quot;Factor: &amp;quot; .. mem.factor,  X=4, Y=6.5 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;sethome&amp;quot;,  label=&amp;quot;Set home&amp;quot;,  X=4, Y=0, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;gohome&amp;quot;,   label=&amp;quot;Go home&amp;quot;,   X=4, Y=1, W=4, H=1 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;lock&amp;quot;,  label=&amp;quot;Lock&amp;quot;,  X=4, Y=5, W=4, H=1 }}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function update_touch()&lt;br /&gt;
  digiline_send(&amp;quot;touch&amp;quot;, { command = &amp;quot;replace&amp;quot;, index = 9,&lt;br /&gt;
    element = &amp;quot;label&amp;quot;, label = &amp;quot;Factor: &amp;quot; .. mem.factor, X = 5.375, Y = 8.5 })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;program&amp;quot; then&lt;br /&gt;
 draw_touch()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;digiline&amp;quot; and event.channel == &amp;quot;touch&amp;quot; then&lt;br /&gt;
 mem.touch_event = event.msg&lt;br /&gt;
 digiline_send(&amp;quot;jumpdrive&amp;quot;,  {command=&amp;quot;get&amp;quot;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;digiline&amp;quot; and event.channel == &amp;quot;jumpdrive&amp;quot; and event.msg.target then&lt;br /&gt;
 local jump = false&lt;br /&gt;
 local increment = ((event.msg.radius*2)+1)*mem.factor&lt;br /&gt;
 if mem.touch_event.lock then&lt;br /&gt;
  digiline_send(&amp;quot;touch&amp;quot;, { command = &amp;quot;clear&amp;quot; })&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.sethome then&lt;br /&gt;
  mem.home = event.msg.position&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.gohome and mem.home then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, x = mem.home.x, y = mem.home.y, z = mem.home.z})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.yplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;y&amp;quot;, value=event.msg.target.y+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.yminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;y&amp;quot;, value=event.msg.target.y-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.xplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;x&amp;quot;, value=event.msg.target.x+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.xminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;x&amp;quot;, value=event.msg.target.x-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.zplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;z&amp;quot;, value=event.msg.target.z+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.zminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;z&amp;quot;, value=event.msg.target.z-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.factorplus then&lt;br /&gt;
  mem.factor = mem.factor + 1&lt;br /&gt;
  update_touch()&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.factorminus then&lt;br /&gt;
  mem.factor = mem.factor - 1&lt;br /&gt;
  if mem.factor &amp;lt; 1 then&lt;br /&gt;
   mem.factor = 1&lt;br /&gt;
  end&lt;br /&gt;
  update_touch()&lt;br /&gt;
&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 if jump then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;jump&amp;quot;})&lt;br /&gt;
 end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;[[User:SwissalpS]]&amp;gt; Some more comments explaining what the convert function is about and why it is needed, would make understanding the formulas like &amp;quot;v*2*15/13*0.35&amp;quot; better.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;[[User:Huhhila]]&amp;gt; That particular formula is taken from https://minetest.gitlab.io/minetest/formspec/#migrating-to-real-coordinates and results in the following:&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
converted = {&lt;br /&gt;
		{&lt;br /&gt;
			command = &amp;quot;set&amp;quot;,&lt;br /&gt;
			height = 10.5,&lt;br /&gt;
			real_coordinates = true,&lt;br /&gt;
			locked = true,&lt;br /&gt;
			width = 13&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			command = &amp;quot;clear&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;X+&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 0.375,&lt;br /&gt;
			name = &amp;quot;xplus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;X-&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 1.625,&lt;br /&gt;
			name = &amp;quot;xminus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Y+&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 2.875,&lt;br /&gt;
			name = &amp;quot;yplus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Y-&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 4.125,&lt;br /&gt;
			name = &amp;quot;yminus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Z+&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 5.375,&lt;br /&gt;
			name = &amp;quot;zplus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Z-&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 6.625,&lt;br /&gt;
			name = &amp;quot;zminus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Factor+&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 7.875,&lt;br /&gt;
			name = &amp;quot;factorplus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Factor-&amp;quot;,&lt;br /&gt;
			X = 0.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 9.125,&lt;br /&gt;
			name = &amp;quot;factorminus&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Factor: 1&amp;quot;,&lt;br /&gt;
			X = 5.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			Y = 8.5,&lt;br /&gt;
			element = &amp;quot;label&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Set home&amp;quot;,&lt;br /&gt;
			X = 5.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 0.375,&lt;br /&gt;
			name = &amp;quot;sethome&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Go home&amp;quot;,&lt;br /&gt;
			X = 5.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 1.625,&lt;br /&gt;
			name = &amp;quot;gohome&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		},&lt;br /&gt;
		{&lt;br /&gt;
			label = &amp;quot;Lock&amp;quot;,&lt;br /&gt;
			X = 5.375,&lt;br /&gt;
			command = &amp;quot;add&amp;quot;,&lt;br /&gt;
			W = 4,&lt;br /&gt;
			Y = 6.625,&lt;br /&gt;
			name = &amp;quot;lock&amp;quot;,&lt;br /&gt;
			H = 0.80769230769231,&lt;br /&gt;
			element = &amp;quot;button_exit&amp;quot;&lt;br /&gt;
		}&lt;br /&gt;
	}&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
For example code related to jumpdrive digiline control such conversion is somewhat offtopic, and should be moved to another more touchscreen-focused page. But @[[User:BuckarooBanzai]], was the original layout of the UI significant / does preserving it matter?&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
	<entry>
		<id>https://pandorabox.io/index.php?title=Talk:Digiline_Jumpdrive_controller&amp;diff=2766</id>
		<title>Talk:Digiline Jumpdrive controller</title>
		<link rel="alternate" type="text/html" href="https://pandorabox.io/index.php?title=Talk:Digiline_Jumpdrive_controller&amp;diff=2766"/>
		<updated>2022-06-12T12:45:04Z</updated>

		<summary type="html">&lt;p&gt;Huhhila: updated home button regression bugfix on wiki too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Draft of modernized version for comments, before making version 1.2 out of it, any comments?&lt;br /&gt;
&lt;br /&gt;
&amp;lt;syntaxhighlight lang=&amp;quot;Lua&amp;quot;&amp;gt;&lt;br /&gt;
-- version 1.1.huhhila.2&lt;br /&gt;
&lt;br /&gt;
mem.factor = mem.factor or 1&lt;br /&gt;
&lt;br /&gt;
-- TODO actually use converted coordinates in table&lt;br /&gt;
local function c(v)&lt;br /&gt;
  return (v + 0)*5/4 + 3/8&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function c1(t)&lt;br /&gt;
  local r = {}&lt;br /&gt;
  for k, v in pairs(t) do&lt;br /&gt;
    r[k] = (k == &amp;quot;X&amp;quot; or k == &amp;quot;Y&amp;quot;) and c(v) or k == &amp;quot;H&amp;quot; and v*2*15/13*0.35 or v&lt;br /&gt;
  end&lt;br /&gt;
  return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function convert(t)&lt;br /&gt;
  local r = {}&lt;br /&gt;
  for _, v in ipairs(t) do&lt;br /&gt;
    table.insert(r, c1(v))&lt;br /&gt;
  end&lt;br /&gt;
  return r&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function draw_touch()&lt;br /&gt;
 digiline_send(&amp;quot;touch&amp;quot;, convert({&lt;br /&gt;
  { command = &amp;quot;set&amp;quot;, locked = true, real_coordinates = true, width = (10-1)*5/4+3/4+1, height = (8-1)*5/4+3/4+1 },&lt;br /&gt;
  { command = &amp;quot;clear&amp;quot; },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;xplus&amp;quot;,   label=&amp;quot;X+&amp;quot;,  X=0, Y=0, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;xminus&amp;quot;,  label=&amp;quot;X-&amp;quot;,  X=0, Y=1, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;yplus&amp;quot;,   label=&amp;quot;Y+&amp;quot;,  X=0, Y=2, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;yminus&amp;quot;,  label=&amp;quot;Y-&amp;quot;,  X=0, Y=3, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;zplus&amp;quot;,   label=&amp;quot;Z+&amp;quot;,  X=0, Y=4, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;zminus&amp;quot;,  label=&amp;quot;Z-&amp;quot;,  X=0, Y=5, W=4, H=1 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button&amp;quot;,  name=&amp;quot;factorplus&amp;quot;,  label=&amp;quot;Factor+&amp;quot;,   X=0, Y=6, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button&amp;quot;,  name=&amp;quot;factorminus&amp;quot;,  label=&amp;quot;Factor-&amp;quot;,  X=0, Y=7, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;label&amp;quot;,  label=&amp;quot;Factor: &amp;quot; .. mem.factor,  X=4, Y=6.5 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;sethome&amp;quot;,  label=&amp;quot;Set home&amp;quot;,  X=4, Y=0, W=4, H=1 },&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;gohome&amp;quot;,   label=&amp;quot;Go home&amp;quot;,   X=4, Y=1, W=4, H=1 },&lt;br /&gt;
&lt;br /&gt;
  { command = &amp;quot;add&amp;quot;, element=&amp;quot;button_exit&amp;quot;,  name=&amp;quot;lock&amp;quot;,  label=&amp;quot;Lock&amp;quot;,  X=4, Y=5, W=4, H=1 }}))&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
local function update_touch()&lt;br /&gt;
  digiline_send(&amp;quot;touch&amp;quot;, { command = &amp;quot;replace&amp;quot;, index = 9,&lt;br /&gt;
    element = &amp;quot;label&amp;quot;, label = &amp;quot;Factor: &amp;quot; .. mem.factor, X = 5.375, Y = 8.5 })&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;program&amp;quot; then&lt;br /&gt;
 draw_touch()&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;digiline&amp;quot; and event.channel == &amp;quot;touch&amp;quot; then&lt;br /&gt;
 mem.touch_event = event.msg&lt;br /&gt;
 digiline_send(&amp;quot;jumpdrive&amp;quot;,  {command=&amp;quot;get&amp;quot;})&lt;br /&gt;
end&lt;br /&gt;
&lt;br /&gt;
if event.type == &amp;quot;digiline&amp;quot; and event.channel == &amp;quot;jumpdrive&amp;quot; and event.msg.target then&lt;br /&gt;
 local jump = false&lt;br /&gt;
 local increment = ((event.msg.radius*2)+1)*mem.factor&lt;br /&gt;
 if mem.touch_event.lock then&lt;br /&gt;
  digiline_send(&amp;quot;touch&amp;quot;, { command = &amp;quot;clear&amp;quot; })&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.sethome then&lt;br /&gt;
  mem.home = event.msg.position&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.gohome and mem.home then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, x = mem.home.x, y = mem.home.y, z = mem.home.z})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.yplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;y&amp;quot;, value=event.msg.target.y+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.yminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;y&amp;quot;, value=event.msg.target.y-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.xplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;x&amp;quot;, value=event.msg.target.x+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.xminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;x&amp;quot;, value=event.msg.target.x-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.zplus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;z&amp;quot;, value=event.msg.target.z+increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.zminus then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;set&amp;quot;, key=&amp;quot;z&amp;quot;, value=event.msg.target.z-increment})&lt;br /&gt;
  jump = true&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.factorplus then&lt;br /&gt;
  mem.factor = mem.factor + 1&lt;br /&gt;
  update_touch()&lt;br /&gt;
&lt;br /&gt;
 elseif mem.touch_event.factorminus then&lt;br /&gt;
  mem.factor = mem.factor - 1&lt;br /&gt;
  if mem.factor &amp;lt; 1 then&lt;br /&gt;
   mem.factor = 1&lt;br /&gt;
  end&lt;br /&gt;
  update_touch()&lt;br /&gt;
&lt;br /&gt;
 end&lt;br /&gt;
&lt;br /&gt;
 if jump then&lt;br /&gt;
  digiline_send(&amp;quot;jumpdrive&amp;quot;, {command=&amp;quot;jump&amp;quot;})&lt;br /&gt;
 end&lt;br /&gt;
end&lt;br /&gt;
&amp;lt;/syntaxhighlight&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Some more comments explaining what the convert function is about and why it is needed, would make understanding the formulas like &amp;quot;v*2*15/13*0.35&amp;quot; better.&lt;/div&gt;</summary>
		<author><name>Huhhila</name></author>
	</entry>
</feed>