From d979293f1448882e3a2eb0f7a3ecbaaf6b189d36 Mon Sep 17 00:00:00 2001
From: Auke Kok <sofar@foo-projects.org>
Date: Mon, 14 Dec 2015 21:49:20 -0800
Subject: [PATCH] Convert fences to NDT_CONNECTED.

This changes the drawtype of fences to NDT_CONNECTED nodebox drawtype.

These nodes are drawn by the client with the needed connections on
the fly as the scene is drawn. There is no logic needed by mods to
modify the nodes.

These fences connect to (1) other fences, (2) planks and (3) tree
trunks, but nothing else. They do not connect to stone, dirt, wool,
etc. This is done by the "connects_to" parameter, which takes groups
and node names.

Due to the way textures are wrapped, we can make these nodes look a
lot better by giving them a special tile.

This change requires minetest/minetest#3503.
---
 mods/default/functions.lua                    |  23 +++++++++++++-----
 mods/default/nodes.lua                        |  10 ++++----
 .../textures/default_fence_acacia_wood.png    | Bin 0 -> 232 bytes
 .../textures/default_fence_aspen_wood.png     | Bin 0 -> 450 bytes
 .../textures/default_fence_junglewood.png     | Bin 0 -> 231 bytes
 .../textures/default_fence_pine_wood.png      | Bin 0 -> 233 bytes
 mods/default/textures/default_fence_wood.png  | Bin 0 -> 230 bytes
 7 files changed, 22 insertions(+), 11 deletions(-)
 create mode 100644 mods/default/textures/default_fence_acacia_wood.png
 create mode 100644 mods/default/textures/default_fence_aspen_wood.png
 create mode 100644 mods/default/textures/default_fence_junglewood.png
 create mode 100644 mods/default/textures/default_fence_pine_wood.png
 create mode 100644 mods/default/textures/default_fence_wood.png

diff --git a/mods/default/functions.lua b/mods/default/functions.lua
index 29506c40..a85009bf 100644
--- a/mods/default/functions.lua
+++ b/mods/default/functions.lua
@@ -213,16 +213,27 @@ function default.register_fence(name, def)
 	-- Allow almost everything to be overridden
 	local default_fields = {
 		paramtype = "light",
-		drawtype = "fencelike",
+		drawtype = "nodebox",
+		node_box = {
+			type = "connected",
+			fixed = {{-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}},
+			-- connect_top =
+			-- connect_bottom =
+			connect_front = {{-1/16,3/16,-1/2,1/16,5/16,-1/8},
+				{-1/16,-5/16,-1/2,1/16,-3/16,-1/8}},
+			connect_left = {{-1/2,3/16,-1/16,-1/8,5/16,1/16},
+				{-1/2,-5/16,-1/16,-1/8,-3/16,1/16}},
+			connect_back = {{-1/16,3/16,1/8,1/16,5/16,1/2},
+				{-1/16,-5/16,1/8,1/16,-3/16,1/2}},
+			connect_right = {{1/8,3/16,-1/16,1/2,5/16,1/16},
+				{1/8,-5/16,-1/16,1/2,-3/16,1/16}},
+		},
+		connects_to = {"group:fence", "group:wood", "group:tree"},
 		inventory_image = fence_texture,
 		wield_image = fence_texture,
-		tiles = { def.texture },
+		tiles = {def.texture},
 		sunlight_propagates = true,
 		is_ground_content = false,
-		selection_box = {
-			type = "fixed",
-			fixed = {-1/7, -1/2, -1/7, 1/7, 1/2, 1/7},
-		},
 		groups = {},
 	}
 	for k, v in pairs(default_fields) do
diff --git a/mods/default/nodes.lua b/mods/default/nodes.lua
index 6ebf1a6a..7b03383d 100644
--- a/mods/default/nodes.lua
+++ b/mods/default/nodes.lua
@@ -1713,7 +1713,7 @@ minetest.register_node("default:ladder_steel", {
 
 default.register_fence("default:fence_wood", {
 	description = "Wooden Fence",
-	texture = "default_wood.png",
+	texture = "default_fence_wood.png",
 	material = "default:wood",
 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 	sounds = default.node_sound_wood_defaults()
@@ -1721,7 +1721,7 @@ default.register_fence("default:fence_wood", {
 
 default.register_fence("default:fence_acacia_wood", {
 	description = "Acacia Fence",
-	texture = "default_acacia_wood.png",
+	texture = "default_fence_acacia_wood.png",
 	material = "default:acacia_wood",
 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 	sounds = default.node_sound_wood_defaults()
@@ -1729,7 +1729,7 @@ default.register_fence("default:fence_acacia_wood", {
 
 default.register_fence("default:fence_junglewood", {
 	description = "Junglewood Fence",
-	texture = "default_junglewood.png",
+	texture = "default_fence_junglewood.png",
 	material = "default:junglewood",
 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 	sounds = default.node_sound_wood_defaults()
@@ -1737,7 +1737,7 @@ default.register_fence("default:fence_junglewood", {
 
 default.register_fence("default:fence_pine_wood", {
 	description = "Pine Fence",
-	texture = "default_pine_wood.png",
+	texture = "default_fence_pine_wood.png",
 	material = "default:pine_wood",
 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 	sounds = default.node_sound_wood_defaults()
@@ -1745,7 +1745,7 @@ default.register_fence("default:fence_pine_wood", {
 
 default.register_fence("default:fence_aspen_wood", {
 	description = "Aspen Fence",
-	texture = "default_aspen_wood.png",
+	texture = "default_fence_aspen_wood.png",
 	material = "default:aspen_wood",
 	groups = {choppy = 2, oddly_breakable_by_hand = 2, flammable = 2},
 	sounds = default.node_sound_wood_defaults()
diff --git a/mods/default/textures/default_fence_acacia_wood.png b/mods/default/textures/default_fence_acacia_wood.png
new file mode 100644
index 0000000000000000000000000000000000000000..3b973f34fbaf1d6d9351fe4e24b3da9e614ff666
GIT binary patch
literal 232
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYjZ>9K){rdHk(p>FJJmvd
zx|8-yC+#^-TAMxe_xc*|@He{o`^IIU;wDcQ#}JO|qNfeH4mpUhT!>tgG&R(|qW`_v
zNzNmeN+-x1a9*-?OZ=1Ny&SJK|K8@|`OLN_^lpu3i^TQZ7mT9Q^weFS?JW6{88U70
zOw-TzOdmfj-w--+#paBn<nx{<cofbFCAWNvTe{bcf2FsZqVKx(jCSEKn`Z~leX^J<
fTJG?_q;Kpw8fw4!&TQZXx`x5i)z4*}Q$iB}HyK)A

literal 0
HcmV?d00001

diff --git a/mods/default/textures/default_fence_aspen_wood.png b/mods/default/textures/default_fence_aspen_wood.png
new file mode 100644
index 0000000000000000000000000000000000000000..7fb624dc61a53ba56dad4774846c2cc07bc2f08d
GIT binary patch
literal 450
zcmV;z0X_bSP)<h;3K|Lk000e1NJLTq000mG000mO1^@s6AM^iV0004rNkl<ZILn2T
zQBT`26oo&hmR6D!monH0q5=u+0g2zv@7Oca_Bahhrw%2=UD6at>^%fKO&7HDbbWn&
z>~rq5xcz!#aWHH4;v<4UQs@N$I!jTrL&C{1)w*OCGJm{71S1e_Lg!BaB=ajz603xV
zAGd8CU`^8zsM#R^E1jbbK7o*aQ;Z@Y1z>tK$2O(UyI8t~nw@$X<8a0hTEc!TZBr6X
zj#>Zt?Kd`?4N?4|T?ZqY`k5$JgQQYtDXTp99zYI26f1<VARt}d^ZHT^dvJPjJ;-cK
z&3G?v$@UM3CYL^66^~fkHcu9M(bMM431mnZP2U7}ZFMr;gQa_}LsO4Qm-j>}de^}1
z%cRaybe497Z!;l;?G@|nVc0}B2fY>v>-9S%^Q&P3H);QaF*QNZ4Ov;}Rzj>2%0mBh
zV7Kp8sVP@ad^|b#`eT(K7kA$VZ`>u&*%E6Se*OIJeOl=pxv!>M+J*m(Wubc{pU=MZ
s`tLp1)^AMhzic}X%EwjFef4ep1?f_*GKfbTk^lez07*qoM6N<$f|}jMmH+?%

literal 0
HcmV?d00001

diff --git a/mods/default/textures/default_fence_junglewood.png b/mods/default/textures/default_fence_junglewood.png
new file mode 100644
index 0000000000000000000000000000000000000000..c390941ce54ff75c8b4c2b4ffcbbe4fc040f8088
GIT binary patch
literal 231
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYl@?%-6Jk^qXE9Y~H&f-b
z)Znwy;<wh~cQ+F8G!^wR6AQH|y8~3*=;`7Z!f{>nv?13a2N9MFk!yUWuCMzbcVBms
zaK>vZj+c8~ysTe$JowiAWd5bQX$dpTAL!nG=B(7AbNd4GGM(72wj;$aBbFbG=zDkX
zO#XEr-TTe@Z633)CYk=5GsTA?B}}mK<GihV+oWb)Z*kfc7q9$k&Q|`bb3QG}H~#TU
d;=A~F`z2>I7<INT(gr$)!PC{xWt~$(69DU7R;mC1

literal 0
HcmV?d00001

diff --git a/mods/default/textures/default_fence_pine_wood.png b/mods/default/textures/default_fence_pine_wood.png
new file mode 100644
index 0000000000000000000000000000000000000000..74609d99daca4717e6e2c424f984f3886e2ee8ec
GIT binary patch
literal 233
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMVy}PI5#mRXOca&dTnsk0q
z!n2dJE-p@bw6pU5zRssdr{3Mwa%E*sHn+MOP<?}^i(?4Kb<u7^E+#_}*7WTcjp7A#
zCi5r#HoP0<>Xa3%Q_ZmbBZJtqYQFvls=l+>`)4-BUj5CiVJH_AX>9fI(u=7R`@MS$
z!tQvx>?+<>x_oZsB-f8G(q1W^C^v|j{JD6ugz~9<QR|(gR~tQYcw^2kB^K>ntXI0h
gRn$^wUH(M--J3)<y;_?Y4|EHIr>mdKI;Vst02}LGZ2$lO

literal 0
HcmV?d00001

diff --git a/mods/default/textures/default_fence_wood.png b/mods/default/textures/default_fence_wood.png
new file mode 100644
index 0000000000000000000000000000000000000000..1e76430d2f54f3b259598fb396df4aaf8b30b39e
GIT binary patch
literal 230
zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnYZOyb<*60=PtXh{~5M-~s
zu+F0~*?4ZHYiG7?vbR=yw(ZwzhqeM0H+Z@@hHzXL?Kb2(<RIW$A0hCztgGRv0o&2M
z!|LB6uQTg7a#w$35u3KN)4g=t&kvRF8E2n*E$m<xomZ)`K<S*KAme)r>w_*wCU=;m
z*XQ-k{~ai%)VSJcr}BNjhrXKIR?Td@5te)P$>Od29Stwu86PUVs<^v&<y<=tkN?vA
b`V;LVe+l=8ESEh6bPI#0tDnm{r-UW|X5Cn?

literal 0
HcmV?d00001