diff --git a/CHANGELOG.md b/CHANGELOG.md index 45ccb72..1e2ecc9 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Game Changes: - Improved Slabs - Fixed Infinite Liquids - Remove Glowshrooms +- Added Doors! Code Changes: diff --git a/mods/CORE/pyutest/models/pyutest-door.obj b/mods/CORE/pyutest/models/pyutest-door.obj new file mode 100644 index 0000000..843400b --- /dev/null +++ b/mods/CORE/pyutest/models/pyutest-door.obj @@ -0,0 +1,417 @@ +# Made in Blockbench 4.11.1 +mtllib pyutest-door.mtl + +o cube +v 0.5 -0.375 -0.375 +v 0.5 -0.375 -0.5 +v 0.5 -0.5 -0.375 +v 0.5 -0.5 -0.5 +v -0.5 -0.375 -0.5 +v -0.5 -0.375 -0.375 +v -0.5 -0.5 -0.5 +v -0.5 -0.5 -0.375 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 4/4/1 7/3/1 5/2/1 2/1/1 +f 3/8/2 4/7/2 2/6/2 1/5/2 +f 8/12/3 3/11/3 1/10/3 6/9/3 +f 7/16/4 8/15/4 6/14/4 5/13/4 +f 6/20/5 1/19/5 2/18/5 5/17/5 +f 7/24/6 4/23/6 3/22/6 8/21/6 +o cube +v 0.5 1.375 -0.375 +v 0.5 1.375 -0.5 +v 0.5 -0.375 -0.375 +v 0.5 -0.375 -0.5 +v 0.375 1.375 -0.5 +v 0.375 1.375 -0.375 +v 0.375 -0.375 -0.5 +v 0.375 -0.375 -0.375 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 12/28/7 15/27/7 13/26/7 10/25/7 +f 11/32/8 12/31/8 10/30/8 9/29/8 +f 16/36/9 11/35/9 9/34/9 14/33/9 +f 15/40/10 16/39/10 14/38/10 13/37/10 +f 14/44/11 9/43/11 10/42/11 13/41/11 +f 15/48/12 12/47/12 11/46/12 16/45/12 +o cube +v -0.375 1.375 -0.375 +v -0.375 1.375 -0.5 +v -0.375 -0.375 -0.375 +v -0.375 -0.375 -0.5 +v -0.5 1.375 -0.5 +v -0.5 1.375 -0.375 +v -0.5 -0.375 -0.5 +v -0.5 -0.375 -0.375 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 20/52/13 23/51/13 21/50/13 18/49/13 +f 19/56/14 20/55/14 18/54/14 17/53/14 +f 24/60/15 19/59/15 17/58/15 22/57/15 +f 23/64/16 24/63/16 22/62/16 21/61/16 +f 22/68/17 17/67/17 18/66/17 21/65/17 +f 23/72/18 20/71/18 19/70/18 24/69/18 +o cube +v 0.5 1.5 -0.375 +v 0.5 1.5 -0.5 +v 0.5 1.375 -0.375 +v 0.5 1.375 -0.5 +v -0.5 1.5 -0.5 +v -0.5 1.5 -0.375 +v -0.5 1.375 -0.5 +v -0.5 1.375 -0.375 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vt 0 1 +vt 1 1 +vt 1 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 28/76/19 31/75/19 29/74/19 26/73/19 +f 27/80/20 28/79/20 26/78/20 25/77/20 +f 32/84/21 27/83/21 25/82/21 30/81/21 +f 31/88/22 32/87/22 30/86/22 29/85/22 +f 30/92/23 25/91/23 26/90/23 29/89/23 +f 31/96/24 28/95/24 27/94/24 32/93/24 +o cube +v 0.375 0.875 -0.375 +v 0.375 0.875 -0.5 +v 0.375 -0.375 -0.375 +v 0.375 -0.375 -0.5 +v -0.375 0.875 -0.5 +v -0.375 0.875 -0.375 +v -0.375 -0.375 -0.5 +v -0.375 -0.375 -0.375 +vt 0 1 +vt 0.75 1 +vt 0.75 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.75 1 +vt 0.75 0 +vt 0 0 +vt 0 1 +vt 0.125 1 +vt 0.125 0 +vt 0 0 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 36/100/25 39/99/25 37/98/25 34/97/25 +f 35/104/26 36/103/26 34/102/26 33/101/26 +f 40/108/27 35/107/27 33/106/27 38/105/27 +f 39/112/28 40/111/28 38/110/28 37/109/28 +f 38/116/29 33/115/29 34/114/29 37/113/29 +f 39/120/30 36/119/30 35/118/30 40/117/30 +o cube +v 0.375 1 -0.375 +v 0.375 1 -0.5 +v 0.375 0.875 -0.375 +v 0.375 0.875 -0.5 +v -0.375 1 -0.5 +v -0.375 1 -0.375 +v -0.375 0.875 -0.5 +v -0.375 0.875 -0.375 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 44/124/31 47/123/31 45/122/31 42/121/31 +f 43/128/32 44/127/32 42/126/32 41/125/32 +f 48/132/33 43/131/33 41/130/33 46/129/33 +f 47/136/34 48/135/34 46/134/34 45/133/34 +f 46/140/35 41/139/35 42/138/35 45/137/35 +f 47/144/36 44/143/36 43/142/36 48/141/36 +o cube +v 0.375 1.25 -0.375 +v 0.375 1.25 -0.5 +v 0.375 1 -0.375 +v 0.375 1 -0.5 +v 0.25 1.25 -0.5 +v 0.25 1.25 -0.375 +v 0.25 1 -0.5 +v 0.25 1 -0.375 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 52/148/37 55/147/37 53/146/37 50/145/37 +f 51/152/38 52/151/38 50/150/38 49/149/38 +f 56/156/39 51/155/39 49/154/39 54/153/39 +f 55/160/40 56/159/40 54/158/40 53/157/40 +f 54/164/41 49/163/41 50/162/41 53/161/41 +f 55/168/42 52/167/42 51/166/42 56/165/42 +o cube +v -0.25 1.25 -0.375 +v -0.25 1.25 -0.5 +v -0.25 1 -0.375 +v -0.25 1 -0.5 +v -0.375 1.25 -0.5 +v -0.375 1.25 -0.375 +v -0.375 1 -0.5 +v -0.375 1 -0.375 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.75 +vt 0 0.75 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 60/172/43 63/171/43 61/170/43 58/169/43 +f 59/176/44 60/175/44 58/174/44 57/173/44 +f 64/180/45 59/179/45 57/178/45 62/177/45 +f 63/184/46 64/183/46 62/182/46 61/181/46 +f 62/188/47 57/187/47 58/186/47 61/185/47 +f 63/192/48 60/191/48 59/190/48 64/189/48 +o cube +v 0.375 1.375 -0.375 +v 0.375 1.375 -0.5 +v 0.375 1.25 -0.375 +v 0.375 1.25 -0.5 +v -0.375 1.375 -0.5 +v -0.375 1.375 -0.375 +v -0.375 1.25 -0.5 +v -0.375 1.25 -0.375 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.125 1 +vt 0.125 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vt 0 1 +vt 0.75 1 +vt 0.75 0.875 +vt 0 0.875 +vn 0 0 -1 +vn 1 0 0 +vn 0 0 1 +vn -1 0 0 +vn 0 1 0 +vn 0 -1 0 +usemtl none +f 68/196/49 71/195/49 69/194/49 66/193/49 +f 67/200/50 68/199/50 66/198/50 65/197/50 +f 72/204/51 67/203/51 65/202/51 70/201/51 +f 71/208/52 72/207/52 70/206/52 69/205/52 +f 70/212/53 65/211/53 66/210/53 69/209/53 +f 71/216/54 68/215/54 67/214/54 72/213/54 \ No newline at end of file diff --git a/mods/ITEMS/pyutest_blocks/api.lua b/mods/ITEMS/pyutest_blocks/api.lua index 0cf7905..88f92a8 100644 --- a/mods/ITEMS/pyutest_blocks/api.lua +++ b/mods/ITEMS/pyutest_blocks/api.lua @@ -69,6 +69,7 @@ PyuTest.make_building_blocks = function(name, desc, tex, colortint, cgroups, ext local id_pillar = name .. "_pillar" local id_stairs = name .. "_stairs" local id_fence = name .. "_fence" + local id_door = name .. "_door" table.insert(PyuTest.building_blocks, { ns = name:split(":")[1], @@ -126,7 +127,8 @@ PyuTest.make_building_blocks = function(name, desc, tex, colortint, cgroups, ext sounds = PyuTest.make_node_sounds(), }, econf)) - PyuTest.make_fence(id_fence, Translate(desc .. " Fence"), id_block, tex, groups, econf) + PyuTest.make_fence(id_fence, desc .. " Fence", id_block, tex, groups, econf) + PyuTest.make_door(id_door, desc .. " Door", id_block, tex, groups, econf) core.register_craft({ output = id_carpet .. " 2", diff --git a/mods/ITEMS/pyutest_blocks/api/doors.lua b/mods/ITEMS/pyutest_blocks/api/doors.lua new file mode 100644 index 0000000..6474bbe --- /dev/null +++ b/mods/ITEMS/pyutest_blocks/api/doors.lua @@ -0,0 +1,68 @@ +PyuTest.DOOR_NODEBOX = { + type = "fixed", + fixed = { -0.5, -0.5, -0.38, 0.5, 1.5, -0.5 } +} + +local function door_toggle_param2(start, current) + if start == 3 and current + 1 > start then + return start - 1 + elseif start >= 0 and current > start then + return current - 1 + else + return current + 1 + end +end +local DOOR_META_PARAM2_NAME = "door_start_param2" + +PyuTest.make_door = function(name, desc, craftitem, texture, groups, extra) + local e = extra or {} + + core.register_node(name, PyuTest.util.tableconcat({ + description = Translate(desc), + groups = PyuTest.util.tableconcat(groups, { + door = 1 + }), + tiles = texture, + sounds = PyuTest.make_node_sounds(), + paramtype = "light", + paramtype2 = "facedir", + drawtype = "mesh", + mesh = "pyutest-door.obj", + + selection_box = PyuTest.DOOR_NODEBOX, + collision_box = PyuTest.DOOR_NODEBOX, + + after_place_node = function(pos, placer) + local node = core.get_node(pos) + local meta = core.get_meta(pos) + meta:set_int(DOOR_META_PARAM2_NAME, node.param2) + end, + + on_rightclick = function (pos, node, clicker) + local meta = core.get_meta(pos) + + core.swap_node(pos, { + name = name, + param2 = door_toggle_param2(meta:get_int(DOOR_META_PARAM2_NAME), node.param2) + }) + + core.sound_play({ + name = "crate_open", + gain = 1, + pos = pos + }) + end + }, e)) + + + if craftitem ~= nil then + core.register_craft({ + output = name, + recipe = { + {craftitem, craftitem}, + {craftitem, craftitem}, + {craftitem, craftitem}, + } + }) + end +end diff --git a/mods/ITEMS/pyutest_blocks/api/fences.lua b/mods/ITEMS/pyutest_blocks/api/fences.lua index e4cdb99..76fbb8b 100644 --- a/mods/ITEMS/pyutest_blocks/api/fences.lua +++ b/mods/ITEMS/pyutest_blocks/api/fences.lua @@ -1,6 +1,6 @@ PyuTest.make_fence = function(name, desc, craftitem, texture, groups, extra) core.register_node(name, PyuTest.util.tableconcat({ - description = desc, + description = Translate(desc), groups = PyuTest.util.tableconcat(groups, { block = 1, fence = 1, diff --git a/mods/ITEMS/pyutest_blocks/api/stairs.lua b/mods/ITEMS/pyutest_blocks/api/stairs.lua index c7bc5b7..5c683b6 100644 --- a/mods/ITEMS/pyutest_blocks/api/stairs.lua +++ b/mods/ITEMS/pyutest_blocks/api/stairs.lua @@ -2,24 +2,24 @@ PyuTest.make_slab = function(name, desc, craftitem, texture, groups, extra) local e = extra or {} core.register_node(name, PyuTest.util.tableconcat({ - description = Translate(desc), - groups = PyuTest.util.tableconcat(groups, { - block = 1, - slab = 1, - }), - tiles = texture, - sounds = PyuTest.make_node_sounds(), - paramtype = "light", - paramtype2 = "colorfacedir", + description = Translate(desc), + groups = PyuTest.util.tableconcat(groups, { + block = 1, + slab = 1, + }), + tiles = texture, + sounds = PyuTest.make_node_sounds(), + paramtype = "light", + paramtype2 = "colorfacedir", - drawtype = "nodebox", - node_box = { - type = "fixed", - fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, - }, - on_place = function (itemstack, placer, pointed_thing) - return PyuTest.rotate_and_place(itemstack, placer, pointed_thing) - end + drawtype = "nodebox", + node_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0, 0.5}, + }, + on_place = function (itemstack, placer, pointed_thing) + return PyuTest.rotate_and_place(itemstack, placer, pointed_thing) + end }, e)) if craftitem ~= nil then diff --git a/mods/ITEMS/pyutest_blocks/init.lua b/mods/ITEMS/pyutest_blocks/init.lua index 285d768..33da1c0 100644 --- a/mods/ITEMS/pyutest_blocks/init.lua +++ b/mods/ITEMS/pyutest_blocks/init.lua @@ -2,9 +2,9 @@ local modpath = core.get_modpath("pyutest_blocks") dofile(modpath .. "/api/fences.lua") dofile(modpath .. "/api/stairs.lua") +dofile(modpath .. "/api/doors.lua") dofile(modpath .. "/api.lua") - dofile(modpath .. "/basic.lua") dofile(modpath .. "/liquid.lua") dofile(modpath .. "/special.lua")