From 76b25d3ff4692f6d4aa572f91d0a9bc60a97de93 Mon Sep 17 00:00:00 2001 From: v-rob <31123645+v-rob@users.noreply.github.com> Date: Fri, 4 Jan 2019 22:54:28 -0800 Subject: [PATCH] Cleanup code and adhere to correct code conventions --- depends.txt | 4 +- init.lua | 374 ++++++++++++++++++++++++++- mod.conf | 3 + textures/glass_stained_1.png | Bin 0 -> 253 bytes textures/glass_stained_10.png | Bin 0 -> 237 bytes textures/glass_stained_11.png | Bin 0 -> 292 bytes textures/glass_stained_12.png | Bin 0 -> 289 bytes textures/glass_stained_13.png | Bin 0 -> 323 bytes textures/glass_stained_14.png | Bin 0 -> 311 bytes textures/glass_stained_15.png | Bin 0 -> 234 bytes textures/glass_stained_16.png | Bin 0 -> 231 bytes textures/glass_stained_17.png | Bin 0 -> 232 bytes textures/glass_stained_18.png | Bin 0 -> 235 bytes textures/glass_stained_2.png | Bin 0 -> 277 bytes textures/glass_stained_3.png | Bin 0 -> 271 bytes textures/glass_stained_4.png | Bin 0 -> 267 bytes textures/glass_stained_5.png | Bin 0 -> 306 bytes textures/glass_stained_6.png | Bin 0 -> 283 bytes textures/glass_stained_7.png | Bin 0 -> 339 bytes textures/glass_stained_8.png | Bin 0 -> 336 bytes textures/glass_stained_9.png | Bin 0 -> 242 bytes textures/glass_stained_bar_fancy.png | Bin 0 -> 316 bytes textures/glass_stained_edge.png | Bin 0 -> 249 bytes textures/glass_stained_palette.png | Bin 0 -> 187 bytes textures/xpanes_edge_obsidian.png | Bin 0 -> 215 bytes 25 files changed, 373 insertions(+), 8 deletions(-) create mode 100644 mod.conf create mode 100644 textures/glass_stained_1.png create mode 100644 textures/glass_stained_10.png create mode 100644 textures/glass_stained_11.png create mode 100644 textures/glass_stained_12.png create mode 100644 textures/glass_stained_13.png create mode 100644 textures/glass_stained_14.png create mode 100644 textures/glass_stained_15.png create mode 100644 textures/glass_stained_16.png create mode 100644 textures/glass_stained_17.png create mode 100644 textures/glass_stained_18.png create mode 100644 textures/glass_stained_2.png create mode 100644 textures/glass_stained_3.png create mode 100644 textures/glass_stained_4.png create mode 100644 textures/glass_stained_5.png create mode 100644 textures/glass_stained_6.png create mode 100644 textures/glass_stained_7.png create mode 100644 textures/glass_stained_8.png create mode 100644 textures/glass_stained_9.png create mode 100644 textures/glass_stained_bar_fancy.png create mode 100644 textures/glass_stained_edge.png create mode 100644 textures/glass_stained_palette.png create mode 100644 textures/xpanes_edge_obsidian.png diff --git a/depends.txt b/depends.txt index 0ed2c46..9cde094 100644 --- a/depends.txt +++ b/depends.txt @@ -1,5 +1,3 @@ default xpanes -dye -pkarcs? -moreblocks? \ No newline at end of file +dye \ No newline at end of file diff --git a/init.lua b/init.lua index 662924e..ae9dc2e 100644 --- a/init.lua +++ b/init.lua @@ -1,3 +1,367 @@ +local alias = { + "one", + "two", + "three", + "four", + "five", + "six", + "seven", + "eight", + "nine", + "ten", + "eleven", + "twelve" +} + +local crafting = { + {"blue", "blue", "blue"}, + {"red", "blue", "white"}, + {"yellow", "blue", "blue"}, + {"yellow", "red", "red"}, + {"violet", "red", "blue"}, + {"violet", "blue", "blue"}, + {"red", "violet", "blue"}, + {"blue", "yellow", "dark_green"}, + {"blue", "red", "yellow"}, + {"dark_green", "cyan", "yellow"}, + {"blue", "dark_green", "dark_green"}, + {"yellow", "cyan", "cyan"}, + {"blue", "dark_green", "yellow"}, + {"dark_green", "blue", "white"}, + {"red", "red", "dark_green"}, + {"blue", "blue", "cyan"}, + {"red", "dark_green", "yellow"}, + {"violet", "yellow", "dark_green"}, +} + +local nodeboxes = { + single = {{-0.5, -0.5, 0, 0.5, 0.5, 0}}, + double = {{-0.5, -0.5, 0, 0.5, 1.5, 0}}, + triple = {{-0.5, -0.5, 0, 0.5, 1.5, 0}, {0.5, -0.5, 0, 1.5, 0.5, 0}}, + quadruple = {{-0.5, -0.5, 0, 1.5, 1.5, 0}}, + noncuple = {{-1.5, -1.5, 0, 1.5, 1.5, 0}}, + offset = {{-0.5, -0.5, 1, 0.5, 0.5, 1}} +} + +local thick_nodeboxes = { + single = {{-0.5, -0.5, -0.03125, 0.5, 0.5, 0.03125}}, + double = {{-0.5, -0.5, -0.03125, 0.5, 1.5, 0.03125}}, + triple = {{-0.5, -0.5, -0.03125, 0.5, 1.5, 0.03125}, {-0.5, -0.5, -0.03125, 1.5, 0.5, 0.03125}}, + quadruple = {{-0.5, -0.5, -0.03125, 1.5, 1.5, 0.03125}}, + noncuple = {{-1.5, -1.5, -0.03125, 1.5, 1.5, 0.03125}}, + offset = {{-0.5, -0.5, 0.96875, 0.5, 0.5, 1.03125}} +} + +local selection_boxes = { + single = {{-0.5, -0.5, -0.25, 0.5, 0.5, 0.25}}, + double = {{-0.5, -0.5, -0.25, 0.5, 1.5, 0.25}}, + triple = {{-0.5, -0.5, -0.25, 0.5, 1.5, 0.25}, {-0.5, -0.5, -0.25, 1.5, 0.5, 0.25}}, + quadruple = {{-0.5, -0.5, -0.25, 1.5, 1.5, 0.25}}, + noncuple = {{-1.5, -1.5, -0.25, 1.5, 1.5, 0.25}}, + offset = {{-0.5, -0.5, 0.75, 0.5, 0.5, 1.25}} +} + +local panes = { + { + "glass", + "Glass Pane", + "default_glass.png", + "glass_stained_edge.png", + default.node_sound_glass_defaults(), + { + {"xpanes:pane_flat", "xpanes:pane_flat"}, + {"xpanes:pane_flat", "xpanes:pane_flat"} + }, + "4" + }, + { + "obsidian_glass", + "Obsidian Glass Pane", + "default_obsidian_glass.png", + "xpanes_edge_obsidian.png", + default.node_sound_glass_defaults(), + { + {"xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat"}, + {"xpanes:obsidian_pane_flat", "xpanes:obsidian_pane_flat"} + }, + "4" + }, + { + "bar", + "Steel Bars", + "xpanes_bar.png", + "xpanes_bar_top.png", + default.node_sound_metal_defaults(), + { + {"xpanes:bar_flat", "xpanes:bar_flat"}, + {"xpanes:bar_flat", "xpanes:bar_flat"} + }, + "4" + }, +} + +local function define_crafts(pane, main_craft, main_output) + single_pane = pane.."_single" + + minetest.register_craft({ + output = single_pane.." "..main_output, + recipe = main_craft, + }) + + minetest.register_craft({ + output = pane.."_double", + recipe = { + {single_pane}, + {single_pane} + }, + }) + + minetest.register_craft({ + output = single_pane.." 2", + recipe = { + {pane.."_double"} + }, + }) + + minetest.register_craft({ + output = pane.."_triple", + recipe = { + {single_pane, ""}, + {single_pane, single_pane} + }, + }) + + minetest.register_craft({ + output = single_pane.." 3", + recipe = { + {pane.."_triple"} + }, + }) + + minetest.register_craft({ + output = pane.."_quadruple", + recipe = { + {single_pane, single_pane}, + {single_pane, single_pane} + }, + }) + + minetest.register_craft({ + output = single_pane.." 4", + recipe = { + {pane.."_quadruple"} + }, + }) + + minetest.register_craft({ + output = pane.."_noncuple", + recipe = { + {single_pane, single_pane, single_pane}, + {single_pane, single_pane, single_pane}, + {single_pane, single_pane, single_pane} + }, + }) + + minetest.register_craft({ + output = single_pane.." 9", + recipe = { + {pane.."_noncuple"} + }, + }) + + minetest.register_craft({ + output = pane.."_offset", + recipe = { + {single_pane} + }, + }) + + minetest.register_craft({ + output = single_pane, + recipe = { + {pane.."_offset"} + }, + }) +end + +for name, selection_box in pairs(selection_boxes) do + for node = 1, 18 do + minetest.register_node("glass_stained:glass_"..node.."_"..name, { + description = "Stained Glass "..node.." ("..name:sub(1, 1):upper()..name:sub(2, -1)..")", + drawtype = "nodebox", + tiles = {"glass_stained_"..node..".png"}, + wield_image = "glass_stained_"..node..".png", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + node_box = { + type = "fixed", + fixed = nodeboxes[name], + }, + selection_box = { + type = "fixed", + fixed = selection_box, + }, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + use_texture_alpha = true, + sounds = default.node_sound_glass_defaults() + }) + + if name == "noncuple" then + define_crafts("glass_stained:glass_"..node, { + {"dye:"..crafting[node][1], "xpanes:pane_flat"}, + {"dye:"..crafting[node][2], "xpanes:pane_flat"}, + {"dye:"..crafting[node][3], "xpanes:pane_flat"} + }, "3") + end + + if node <= 12 then + minetest.register_alias("glass_stained:glass_number_"..alias[node], "glass_stained:glass_"..node.."single") + minetest.register_alias("glass_stained:glass_number_"..alias[node].."top", "glass_stained:glass_"..node.."double") + end + end + + for _, pane in ipairs(panes) do + minetest.register_node("glass_stained:pane_"..pane[1].."_"..name, { + description = pane[2].." ("..name:sub(1, 1):upper()..name:sub(2, -1)..")", + drawtype = "nodebox", + tiles = {pane[4], pane[4], pane[3]}, + wield_image = pane[3], + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + node_box = { + type = "fixed", + fixed = thick_nodeboxes[name], + }, + selection_box = { + type = "fixed", + fixed = selection_box, + }, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + sounds = pane[5] + }) + + if name == "noncuple" then + define_crafts("glass_stained:pane_"..pane[1], pane[6], pane[7]) + end + end +end + +minetest.register_alias("glass_stained:glass_normal", "glass_stained:pane_glass_single") +minetest.register_alias("glass_stained:glass_normal_top", "glass_stained:pane_glass_double") +minetest.register_alias("glass_stained:obsidian_glass_normal", "glass_stained:pane_obsidian_glass_single") +minetest.register_alias("glass_stained:obsidian_glass_normal_top", "glass_stained:pane_obsidian_glass_double") +minetest.register_alias("glass_stained:steel_bars_normal", "glass_stained:pane_bar_single") +minetest.register_alias("glass_stained:steel_bars_normal_top", "glass_stained:pane_bar_double") +minetest.register_alias("glass_stained:steel_bars_fancy", "glass_stained:pane_bar_top_pane_single") + +xpanes.register_pane("bar_top", { + description = "Spiked Steel Railing", + textures = {"glass_stained_bar_fancy.png", "xpanes_pane_half.png", "default_glass_detail.png"}, + inventory_image = "glass_stained_bar_fancy.png", + wield_image = "glass_stained_bar_fancy.png", + groups = {cracky = 2}, + sounds = default.node_sound_metal_defaults(), + recipe = { + {"", "default:steel_ingot", ""}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"}, + {"default:steel_ingot", "default:steel_ingot", "default:steel_ingot"} + } +}) + +xpanes.register_pane("pane", { + description = "Glass Pane", + textures = {"default_glass.png","xpanes_pane_half.png","glass_stained_edge.png"}, + inventory_image = "default_glass.png", + wield_image = "default_glass.png", + sounds = default.node_sound_glass_defaults(), + groups = {snappy = 2, cracky = 3, oddly_breakable_by_hand = 3}, + recipe = { + {"default:glass", "default:glass", "default:glass"}, + {"default:glass", "default:glass", "default:glass"} + } +}) + +xpanes.register_pane("obsidian_pane", { + description = "Obsidian Glass Pane", + textures = {"default_obsidian_glass.png","xpanes_pane_half.png","xpanes_edge_obsidian.png"}, + inventory_image = "default_obsidian_glass.png", + wield_image = "default_obsidian_glass.png", + sounds = default.node_sound_glass_defaults(), + groups = {snappy = 2, cracky = 3}, + recipe = { + {"default:obsidian_glass", "default:obsidian_glass", "default:obsidian_glass"}, + {"default:obsidian_glass", "default:obsidian_glass", "default:obsidian_glass"} + } +}) + +minetest.register_node("glass_stained:pane_bar_top_pane_single", { + description = "Spiked Steel Railing Pane (Single)", + drawtype = "nodebox", + tiles = {"glass_stained_bar_fancy.png"}, + wield_image = "glass_stained_bar_fancy.png", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + node_box = { + type = "fixed", + fixed = nodeboxes["single"], + }, + selection_box = { + type = "fixed", + fixed = selection_boxes["single"], + }, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_metal_defaults(), +}) + +minetest.register_node("glass_stained:pane_bar_top_pane_offset", { + description = "Spiked Steel Railing Pane (Offset)", + drawtype = "nodebox", + tiles = {"glass_stained_bar_fancy.png"}, + wield_image = "glass_stained_bar_fancy.png", + paramtype = "light", + paramtype2 = "facedir", + sunlight_propagates = true, + is_ground_content = false, + node_box = { + type = "fixed", + fixed = nodeboxes["offset"], + }, + selection_box = { + type = "fixed", + fixed = selection_boxes["offset"], + }, + groups = {cracky = 3, oddly_breakable_by_hand = 3}, + sounds = default.node_sound_metal_defaults(), +}) + +minetest.register_craft({ + output = "glass_stained:pane_bar_top_pane_single", + recipe = { + {"xpanes:bar_top_flat"} + }, +}) + +minetest.register_craft({ + output = "glass_stained:pane_bar_top_pane_offset", + recipe = { + {"glass_stained:pane_bar_top_pane_single"} + }, +}) + +minetest.register_craft({ + output = "glass_stained:pane_bar_top_pane_single", + recipe = { + {"glass_stained:pane_bar_top_pane_offset"} + }, +}) + +--[[ minetest.register_node("glass_stained:glass_normal", { description = "Normal Glass", drawtype = "nodebox", @@ -70,7 +434,7 @@ minetest.register_node("glass_stained:steel_bars_normal", { minetest.register_node("glass_stained:steel_bars_fancy", { description = "Fancy Steel Bars", drawtype = "nodebox", - tiles = {"xpanes_bar_fancy.png"}, + tiles = {"glass_stained_bar_fancy.png"}, paramtype = "light", paramtype2 = "facedir", sunlight_propagates = true, @@ -92,9 +456,9 @@ minetest.register_node("glass_stained:steel_bars_fancy", { xpanes.register_pane("bar_top", { description = "Iron bar fancy top", - textures = {"xpanes_bar_fancy.png","xpanes_bar_fancy.png","default_glass_detail.png"}, - inventory_image = "xpanes_bar_fancy.png", - wield_image = "xpanes_bar_fancy.png", + textures = {"glass_stained_bar_fancy.png","glass_stained_bar_fancy.png","default_glass_detail.png"}, + inventory_image = "glass_stained_bar_fancy.png", + wield_image = "glass_stained_bar_fancy.png", groups = {cracky=2}, sounds = default.node_sound_metal_defaults(), recipe = { @@ -1076,4 +1440,4 @@ minetest.register_craft({output = "glass_stained:steel_bars_normal_top", {"glass_stained:steel_bars_normal"}, {"glass_stained:steel_bars_normal"}, }, -}) \ No newline at end of file +})--]] \ No newline at end of file diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..54d7fe1 --- /dev/null +++ b/mod.conf @@ -0,0 +1,3 @@ +name=glass_stained +description=A mod that adds fancy stained glass and spike iron railing. +depends=default,xpanes,dye \ No newline at end of file diff --git a/textures/glass_stained_1.png b/textures/glass_stained_1.png new file mode 100644 index 0000000000000000000000000000000000000000..4a64576c4e0de264aa9c13e4ba6848324d88cd55 GIT binary patch literal 253 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)0$gg$y$t3?4HAMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`$IN17DGj|Tji&LLQati{gRIC#t}5#BZvD;iG=)oo1=OOB|39<&Yu$CK7F~L1P>o`M{jva m<*OYHQ!0QWHnKbwc`OWvv}4pxG@kVZxx&-c&t;ucLK6UbWKMGc literal 0 HcmV?d00001 diff --git a/textures/glass_stained_10.png b/textures/glass_stained_10.png new file mode 100644 index 0000000000000000000000000000000000000000..66aadeb6839ff08c84ee6f95d005de8cef5f636b GIT binary patch literal 237 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt8wZQ1^2x^yML;2`%#er@=ltB<)VvZPmw~}IF(p-@ zJhLQ2!QIn0;6&G+6rf;;r;B5V#p$<~H*y{@5OBVj{ypw)cSWc4K|NdFOKeUG4@5X! zmIf65ZxJ%%J{7P^BecQtkPPGA&U@$n8P3<$vTZ7O{zm)1Do6Rg+Sbq8KZqRKzI_9; X@3TVZ7YmDigKYJ5^>bP0l+XkKW6n=) literal 0 HcmV?d00001 diff --git a/textures/glass_stained_11.png b/textures/glass_stained_11.png new file mode 100644 index 0000000000000000000000000000000000000000..3c715e9100c8ab2cf213f2c6cccd37d6a563ab74 GIT binary patch literal 292 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt8wV?cA&+jYBv42yGbEzKIX^cyHLnE7Wnl14Oi5KJ z&n(GMaQE~LIMKBy1t{3<>Eak-aeC?Gje-pdJg)mKqstFvu1FPFGncKbh+*xag+fAK z%VXZzDokKJ&?qm-m=L$^j@GiP)@%JHS+2e3D_GfeLMN-W%3yu9(4_=lC$SysirPA! zY;|tjG3opTNy7JAe$2g@ad+;2H_OJ*pu_#z8I!EUWilgu!?8U3;xSb cR|CR8-&p;um%#er@=ltB<)VvZPmw~}IF(p-@ zJhLQ2!QIn0;6&G+6rf;-r;B5V#p$J!4+=IY@UZmv?ENuCD5FU$w@K)Ur|B<7w$=$N zzMp-=KO`}mU{aW%!Y3(PW0`ZcqCeyZQ+(%Sa*-^9+hHnV0( zC~R@E?Ou62@XTlH4@KXql;Y0C`TtwM4x)~nzWLg7#@}=KmD?s}R66aN2J(xitDnm{ Hr-UW|8g_ZT literal 0 HcmV?d00001 diff --git a/textures/glass_stained_14.png b/textures/glass_stained_14.png new file mode 100644 index 0000000000000000000000000000000000000000..968069d0dcf258b582f547eb20e5e1e73d3bdd3d GIT binary patch literal 311 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-BP%1T1rx8$BcPCMW=KSdbAE1aYF-JD%fR4Vl$uzQ znxasiS(2gP?&%wlqL<1J6rb(s;uvCa`e^V*QD;RCn-@1?4J)yE-`KNySq6bZhia>TS;bsg4pO~0G+-Ajyu3wya47?wBk#l&7) Q77en`)78&qol`;+0Mx`t5dZ)H literal 0 HcmV?d00001 diff --git a/textures/glass_stained_17.png b/textures/glass_stained_17.png new file mode 100644 index 0000000000000000000000000000000000000000..23a02c8ff930cab207d7b6d3d25b4646d5b64b16 GIT binary patch literal 232 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-BP)Y}#lnA6l7T`}nIRD+&iT2ysd*(pE(3#aVoIt) zd1gt5g1e`0z=^IsDL_GgPZ!4!i_^&|2?;;WJ1{0BCL|=x&{im5h&1?ln4SHe9h=C; z^R7I6;$e%sBwLIu3=9J}*zPg7tzuEy#-MDL;La>4)o~+8Vk4uqR0j_a!}km&`Gx)q Qsz4Tcy85}Sb4q9e0K9ZS7ytkO literal 0 HcmV?d00001 diff --git a/textures/glass_stained_18.png b/textures/glass_stained_18.png new file mode 100644 index 0000000000000000000000000000000000000000..f76007874f8d00b9ed64bb3b97045ad834b7b924 GIT binary patch literal 235 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-BP)ZEEx7zgdgV}7!wi`5)xJ<-Y8~>+|YXP=)*%< zY$Aru0c`B|>_Rr4cje*p;Sp(SG;f%w)!3nXpo90uMTZtPrEMZ^IS2aKl$ebP0l+XkKWbH(+ literal 0 HcmV?d00001 diff --git a/textures/glass_stained_2.png b/textures/glass_stained_2.png new file mode 100644 index 0000000000000000000000000000000000000000..c84c2dfed99c86c3053f10df045ca5573928dce0 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-Ba66+Cg1nPtUw{D%#er@=ltB<)VvZPmw~}IF(p-@ zJhLQ2!QIn0;6&G+6rf;@r;B5V#p$DyHwrc=@VLtRO_*39#+|LUaa)0yUl3i{t;gq%U(;G1IVWw>_7b|E=BQjXA@Lh!qnVfyCa#o`a_!Ij)aL z`4!RppI_(tQ%3e3#nFGOFQ)MoY_qZ(lU=tn?*D&GdddlFMb6&~VnMF+ MboFyt=akR{0I14fy#N3J literal 0 HcmV?d00001 diff --git a/textures/glass_stained_3.png b/textures/glass_stained_3.png new file mode 100644 index 0000000000000000000000000000000000000000..f8017a641f8520cabfdb397d9831285237c534b5 GIT binary patch literal 271 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)0$gg$y$t3?4HAMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`$IN17Cpmf=9z{-A*sxeh!W@g+}zZ>5+Ij>!8b7_ zRiQkyBtya7(>LHm*PaxhV40_jV~EA+x0g2xHYo74K9oP#D8txRz?QAPF^#RwKsiNO z*Q8vgJ?O$OtsVT6)Cy-=Rv78CFr4M+-BP1vnCJQKv(zi4{CC+b9nnIsuNAY;QJrS_ z&GbgQ`FEaY`X9s@KFkuFy`$=siL&kYZLv?4op;yol#YGQ{q$DQ!J21xd_nH=boFyt I=akR{0A8(EV*mgE literal 0 HcmV?d00001 diff --git a/textures/glass_stained_4.png b/textures/glass_stained_4.png new file mode 100644 index 0000000000000000000000000000000000000000..3dd14f9aeb530f01c1bd8445f021531a1726b73f GIT binary patch literal 267 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)0$gg$y$t3?4HAMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`$IN17CmLrK8Z@8kW^+!M2T~LZfwIf4CVJY9O zr8`d-PT^a#hj*V!uu#^+Cug@!X2^1Ux#amH!{aL~-L@Xuw)6R;i*~mcO=N%Y?L~1+ z_@*{}akb5CYZw`VxU;0M=SAwinBN^cUEgTS_Y;TTSlaWf4V-w=P3j=XO`fiPF6*2U FngCvzSor_| literal 0 HcmV?d00001 diff --git a/textures/glass_stained_5.png b/textures/glass_stained_5.png new file mode 100644 index 0000000000000000000000000000000000000000..deaf5cae7aa3bc4edf540de03c0931960d418c21 GIT binary patch literal 306 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)0$gg$y$t3?4HAMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`$IN17CpXzKo=gMkW^+!M2T~LZf;w1@OzfF5yCfm){E2xp7n*m9 z$ahL_@m3ZTaSDB`*)``!{m#!vj%*j3^TD}t(X-FV|9_bB?8>jno6XSkIqHu7LC=3n zjz`pH?^0i-p2ZdHm^&x@Y{^*;s|U4admr>pUM!~RQ^emi&DUKdRPZcE)}1V=D_b@_ ue{kyg>Nz(|Pn<4!X6&G?{$24$`CR*_Y>^99N~3&0PWN>6b6Mw<&;$VJ2W)l# literal 0 HcmV?d00001 diff --git a/textures/glass_stained_6.png b/textures/glass_stained_6.png new file mode 100644 index 0000000000000000000000000000000000000000..33b6710f7356a55cd9b7534156d9443717cc5dab GIT binary patch literal 283 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)0$gg$y$t3?4HAMK}vQ zB8wRqxP?KOkzv*x37{Z*iKnkC`$IN17CpuT?;_^{g`_e=B1)X|b8}PkN`PDj2H(V# zRE6@)k_-iRPv3wOU3*f1f=!+-jv*GOuTD1PYfuni5r1@8;i3MuFH^o;`P16+d!|`j zlZ(UAV{17W^YZ#d`7|F-Xb;?>*zU3??$qg9Zd&}$HfS-d_+D$!B|mY-lsBQ}9#1B8 zct+fEdsMcZlciy8=-(^l&7Y*3?#;;R@)rL8wo&G6Lu7RT literal 0 HcmV?d00001 diff --git a/textures/glass_stained_7.png b/textures/glass_stained_7.png new file mode 100644 index 0000000000000000000000000000000000000000..6735f5d466702e046bff3669d412aade1f403767 GIT binary patch literal 339 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt8wU%InZ4cFMxc;XW=KSdbAE1aYF-JD%fR59n3Aec zo>`Ki;O^-gaH4BZ3Q%yDr;B5V#p$)d8+nf?@YpD^eemd<;v2NY@4u>TDVJF#Xa5nl z|3^W*gEsh ain;rZQ)>)Q)EKyf{O0NE=d#Wzp$PyMYJNKa literal 0 HcmV?d00001 diff --git a/textures/glass_stained_8.png b/textures/glass_stained_8.png new file mode 100644 index 0000000000000000000000000000000000000000..7159bcfbbe90bb0ccbd3fc38136cbfe1ac264476 GIT binary patch literal 336 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt8wZPkV2!itcA$_{W=KSdbAE1aYF-JD%fR59n3Aec zo>`Ki;O^-gaH4BZ3Q%ynr;B5V#p$J!5Aq&X;Bl1~y#8jA;30vTis?okRcUQ}f^IML zBp2AaM>(XI5=su^IxqCuH`B7Z|AGsHSU=A zURU)}t>wozZMqBF^Z}lzzf4lXy=4$Q@Embp}-doi( Xcvh9TF3fE!0(s2S)z4*}Q$iB}f$@B- literal 0 HcmV?d00001 diff --git a/textures/glass_stained_9.png b/textures/glass_stained_9.png new file mode 100644 index 0000000000000000000000000000000000000000..a2879f95ef06bc5aa5c164b76f4283ce36006541 GIT binary patch literal 242 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmPt8wZQ9^8B6ZUw}eVnIRD+&iT2ysd*(pE(3#aVoIt) zd1gt5g1e`0z=^IsDL}zUPZ!4!i_^&|2?;;WJ1{0BB_t#i=*+1+u(9A7BO4oA+fF7X z_GeriGC=W!9UEpnJkWZTN8-_mS2HCvSb9P}GU=r&TZ>LFXX_O2C^XaicrjwZH1W2w aI0l9#r_**HQqbH0vf9(t&t;ucLK6U@AWFRe literal 0 HcmV?d00001 diff --git a/textures/glass_stained_bar_fancy.png b/textures/glass_stained_bar_fancy.png new file mode 100644 index 0000000000000000000000000000000000000000..9f3c02fdc2f15e5f3a5a15bdebcff9a27feff215 GIT binary patch literal 316 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!60wlNoGJgf6n3BBRT^Rni_n+Ah4nJ za0`PlBg3pY5H=O_J?fj3?|Y>B2!y|LT5c)978nDmtIixKk6XB^5Fd}F26ad zj(h*N9-WZR$!XsZ{ERo1+b0Myb=l_gZr*ix>%H(jE+^hC_CL+*@Ay?f^WxLD6Y`TU z&lQQx4=FL-;mdkH^RDfZ$geYIERKKk=UvR(wd+sw87@lVS+!asT5i4L@o?@g?-cRb zzl3G;Gr!hP=4$KZU-{#C+h&<*9`~aiT<^NhTNc4~&g=5uqw?2XJoB1Pc~k&B#^CAd K=d#Wzp$P!Kn|qr8 literal 0 HcmV?d00001 diff --git a/textures/glass_stained_edge.png b/textures/glass_stained_edge.png new file mode 100644 index 0000000000000000000000000000000000000000..75aa84b679c4c41ba889859e6c79ac195f8c8c1d GIT binary patch literal 249 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-BP$!H?1Rr6b$~*$nIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P(0St#WBRT~% z%X{E?$s(SH)`JHs8zu4$9)uC%zE i5NL{1m?EXg$IS4UOHNkoF7IlP3p`!@T-G@yGywokh)0(I literal 0 HcmV?d00001 diff --git a/textures/glass_stained_palette.png b/textures/glass_stained_palette.png new file mode 100644 index 0000000000000000000000000000000000000000..732c750a7eb39c02953898ccd9bb6588c8755fd3 GIT binary patch literal 187 zcmeAS@N?(olHy`uVBq!ia0vp^Y(UJ&0V4mNy#E0tkmT*|!tfsi7wla=87RV8;1OBO zz`!jG!i)^F=12eq*-JcqUD+QqvNEU}-d(sN5GW*-84^+AoS&PUnpXnkGBEfirlcyA zXO?6rxO@5roaow<0u)s8ba4#fxSl*mTVX@JXOenz>3*ZbN9@Gg&fgQ4)Qh>4&cIM; V#A$QyOG6dN3{O`-mvv4FO#n6`H4Xp( literal 0 HcmV?d00001 diff --git a/textures/xpanes_edge_obsidian.png b/textures/xpanes_edge_obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..c91b8ade46d772076b679ea08242a926b3a5778b GIT binary patch literal 215 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Y)RhkE)4%caKYZ?lYt_f1s;*b z3=G`DAk4@xYmNj^kiEpy*OmP-BP$y#kJ`6;mw-aDnIRD+&iT2ysd*(pE(3#eQEFmI zYKlU6W=V#EyQgnJie4%^P~6(n#WBRo6|j0s5#1Rj_+#QRKajQ0^-&)Cy^ yoBNAt!wd%JFmF@w2feH_eC6Zs%J&{~%w=GRW#%+rZ+PP*$b3&%KbLh*2~7ZVIXq(k literal 0 HcmV?d00001