From e8649f71fc8510635c20327543cb79d7d3e497ca Mon Sep 17 00:00:00 2001 From: DonBatman Date: Tue, 15 Mar 2016 20:17:36 -0700 Subject: [PATCH] First upload --- README.md | 11 + aliases.lua | 12 ++ concrete.lua | 220 +++++++++++++++++++ depends.txt | 1 + description.txt | 1 + init.lua | 6 + limestone.lua | 22 ++ manholes.lua | 197 +++++++++++++++++ mapgen.lua | 10 + mod.conf | 1 + models/myconcrete_cylinder.obj | 236 +++++++++++++++++++++ models/myconcrete_slope.obj | 35 +++ models/myconcrete_slope_long.obj | 75 +++++++ textures/myconcrete_concrete.png | Bin 0 -> 633 bytes textures/myconcrete_concrete1.png | Bin 0 -> 618 bytes textures/myconcrete_concrete2.png | Bin 0 -> 605 bytes textures/myconcrete_concrete3.png | Bin 0 -> 587 bytes textures/myconcrete_concrete4.png | Bin 0 -> 575 bytes textures/myconcrete_concrete_mesh.png | Bin 0 -> 7273 bytes textures/myconcrete_lime.png | Bin 0 -> 654 bytes textures/myconcrete_limestone.png | Bin 0 -> 575 bytes textures/myconcrete_sidewalk.png | Bin 0 -> 326 bytes textures/myconcrete_sidewalk_long_mesh.png | Bin 0 -> 401 bytes textures/myconcrete_sidewalk_mesh.png | Bin 0 -> 665 bytes 24 files changed, 827 insertions(+) create mode 100644 README.md create mode 100644 aliases.lua create mode 100644 concrete.lua create mode 100755 depends.txt create mode 100644 description.txt create mode 100755 init.lua create mode 100644 limestone.lua create mode 100644 manholes.lua create mode 100644 mapgen.lua create mode 100644 mod.conf create mode 100644 models/myconcrete_cylinder.obj create mode 100644 models/myconcrete_slope.obj create mode 100644 models/myconcrete_slope_long.obj create mode 100644 textures/myconcrete_concrete.png create mode 100644 textures/myconcrete_concrete1.png create mode 100644 textures/myconcrete_concrete2.png create mode 100644 textures/myconcrete_concrete3.png create mode 100644 textures/myconcrete_concrete4.png create mode 100644 textures/myconcrete_concrete_mesh.png create mode 100644 textures/myconcrete_lime.png create mode 100644 textures/myconcrete_limestone.png create mode 100644 textures/myconcrete_sidewalk.png create mode 100644 textures/myconcrete_sidewalk_long_mesh.png create mode 100644 textures/myconcrete_sidewalk_mesh.png diff --git a/README.md b/README.md new file mode 100644 index 0000000..65fc38e --- /dev/null +++ b/README.md @@ -0,0 +1,11 @@ +# myconcrete + +myconcrete adds concrete to minetest. + +Limestone is added to the mapgen. It is required in order to make concrete. +You will find limestone when mining. + +Concrete take time to dry. When you place concrete it will be darker then when it is dry. + + +Licence - WTFPL diff --git a/aliases.lua b/aliases.lua new file mode 100644 index 0000000..36e47a2 --- /dev/null +++ b/aliases.lua @@ -0,0 +1,12 @@ +minetest.register_alias("mystreets:sidewalk", "myconcrete:sidewalk") +minetest.register_alias("mystreets:concrete", "myconcrete:concrete") +minetest.register_alias("mystreets:fence_concrete", "myconcrete:fence_concrete") +minetest.register_alias("mystreets:precast_concrete_seperating_wall", "myconcrete:precast_concrete_seperating_wall") +minetest.register_alias("mystreets:precast_concrete_cylinder", "myconcrete:precast_concrete_cylinder") +minetest.register_alias("mystreets:ramp_sidewalk", "myconcrete:ramp_sidewalk") +minetest.register_alias("mystreets:ramp_sidewalk_long", "myconcrete:ramp_sidewalk_long") +minetest.register_alias("mystreets:ramp_concrete", "myconcrete:ramp_concrete") +minetest.register_alias("mystreets:ramp_concrete_long", "myconcrete:ramp_concrete_long") +minetest.register_alias("mystreets:manhole", "myconcrete:manhole") +minetest.register_alias("mystreets:manhole_open", "myconcrete:manhole_open") +minetest.register_alias("mystreets:manhole_shaft", "myconcrete:manhole_shaft") diff --git a/concrete.lua b/concrete.lua new file mode 100644 index 0000000..f8c0831 --- /dev/null +++ b/concrete.lua @@ -0,0 +1,220 @@ +local slope_cbox = { + type = "fixed", + fixed = { + {-0.5, -0.5, -0.5, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -0.25, 0.5, 0, 0.5}, + {-0.5, 0, 0, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0.25, 0.5, 0.5, 0.5} + } +} + +local slope_cbox_long = { + type = "fixed", + fixed = { + {-0.5, -0.5, -1.5, 0.5, -0.375, 0.5}, + {-0.5, -0.375, -1.25, 0.5, -0.25, 0.5}, + {-0.5, -0.25, -1, 0.5, -0.125, 0.5}, + {-0.5, -0.125, -0.75, 0.5, 0, 0.5}, + {-0.5, 0, -0.5, 0.5, 0.125, 0.5}, + {-0.5, 0.125, -0.25, 0.5, 0.25, 0.5}, + {-0.5, 0.25, 0, 0.5, 0.375, 0.5}, + {-0.5, 0.375, 0.25, 0.5, 0.5, 0.5}, + } +} + +local sep_wall_cbox = { + type = "fixed", + fixed = { + {-5/16, -1/2, -7/16, 5/16, -1/4, 7/16}, + {-1/16, -1/4, -7/16, 1/16, 1/2, 7/16}, + {-3/16, -1/2, -5/16, 3/16, 0, -1/4}, + {-3/16, -1/2, 1/4, 3/16, 0, 5/16} + } +} + +local cyl_cbox = { + type = "fixed", + fixed = { + {3/8, -1/2, -1/2, 1/2, 1/2, 1/2}, + {-1/2, -1/2, -1/2, -3/8, 1/2, 1/2}, + {-1/2, -1/2, 3/8, 1/2, 1/2, 1/2}, + {-1/2, -1/2, -1/2, 1/2, 1/2, -3/8} + } +} +local fence_cbox = { + type = "fixed", + fixed = {-1/8, -1/2, -1/8, 1/8, 1/2, 1/8}, +} + +local item_tab = { -- mat, descr, img, dtype, cbox +{"sidewalk","Sidewalk","sidewalk","","normal",""}, +{"concrete","Concrete","concrete","","normal",""}, + +{"ramp_sidewalk", "Sidewalk Ramp", "sidewalk_mesh", "myconcrete_slope.obj","mesh",slope_cbox}, +{"ramp_sidewalk_long", "Sidewalk Ramp Long", "sidewalk_long_mesh", "myconcrete_slope_long.obj","mesh",slope_cbox_long}, + +{"ramp_concrete","Concrete Ramp","concrete_mesh","myconcrete_slope.obj","mesh",slope_cbox}, +{"ramp_concrete_long","Concrete Ramp Long","concrete_mesh","myconcrete_slope_long.obj","mesh",slope_cbox_long}, + +{"precast_concrete_seperating_wall", "Seperation Wall", "concrete", "","nodebox",sep_wall_cbox}, +{"precast_concrete_cylinder", "Concrete Cylinder", "concrete", "","nodebox",cyl_cbox}, +{"fence_concrete", "Concrete Fence", "concrete", "","fencelike",fence_cbox}, +} +for i in ipairs (item_tab) do + local mat = item_tab[i][1] + local descr = item_tab[i][2] + local img = item_tab[i][3] + local obj = item_tab[i][4] + local dtype = item_tab[i][5] + local cbox = item_tab[i][6] + +local concrete_tab = { --num, desc, imgnum, gro +{"","","",{cracky = 1}}, +{"3","3","^[colorize:black:100",{cracky = 1, not_in_creative_inventory = 1}}, +{"2","2","^[colorize:black:50",{cracky = 1, not_in_creative_inventory = 1}}, +{"1","1","^[colorize:black:25",{cracky = 1, not_in_creative_inventory = 1}}, +} +for i in ipairs (concrete_tab) do + local num = concrete_tab[i][1] + local desc = concrete_tab[i][2] + local imgnum = concrete_tab[i][3] + local gro = concrete_tab[i][4] + + + +minetest.register_node("myconcrete:"..mat..num, { + description = descr..desc, + drawtype = dtype, + mesh = obj, + tiles = {"myconcrete_"..img..".png"..imgnum}, + paramtype = "light", + paramtype2 = "facedir", + drop = "myconcrete:"..mat, + groups = gro, +-- stack_max = 250, + sounds = default.node_sound_stone_defaults(), + node_box = cbox, + selection_box = cbox, + collision_box = cbox, + +after_place_node = function(pos, placer, itemstack, pointed_thing) + local node = minetest.get_node(pos) +-- if node == "myconcrete:"..mat then + minetest.set_node(pos, {name = "myconcrete:"..mat.."3", param2 = node.param2}) +-- end +end, +}) + + +minetest.register_abm({ + nodenames = {"myconcrete:"..mat.."3",}, + interval = 180.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.set_node(pos, {name = "myconcrete:"..mat.."2", param2 = node.param2}) + end, +}) +minetest.register_abm({ + nodenames = {"myconcrete:"..mat.."2"}, + interval = 180.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.set_node(pos, {name = "myconcrete:"..mat.."1", param2 = node.param2}) + end, +}) +minetest.register_abm({ + nodenames = {"myconcrete:"..mat.."1"}, + interval = 180.0, + chance = 1, + action = function(pos, node, active_object_count, active_object_count_wider) + minetest.set_node(pos, {name = "myconcrete:"..mat, param2 = node.param2}) + end, +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:sidewalk 2", + recipe = { + {"myconcrete:concrete", "",""}, + {"myconcrete:concrete", "",""}, + {"", "",""}, + } +}) +--Craft +minetest.register_craft({ + type = "shapeless", + output = "myconcrete:concrete", + recipe ={"myconcrete:lime", "default:gravel"}, +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:fence_concrete 6", + recipe = { + {'myconcrete:concrete', 'myconcrete:concrete', 'myconcrete:concrete'}, + {'myconcrete:concrete', 'myconcrete:concrete', 'myconcrete:concrete'} + } +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:precast_concrete_seperating_wall 5", + recipe = { + {'', 'myconcrete:concrete', ''}, + {'', 'myconcrete:concrete', ''}, + {'myconcrete:concrete', 'myconcrete:concrete', 'myconcrete:concrete'} + } +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:precast_concrete_cylinder 8", + recipe = { + {'myconcrete:concrete', 'myconcrete:concrete', 'myconcrete:concrete'}, + {'myconcrete:concrete', '', 'myconcrete:concrete'}, + {'myconcrete:concrete', 'myconcrete:concrete', 'myconcrete:concrete'} + } +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:ramp_sidewalk 2", + recipe = { + {"", "",""}, + {"", "","myconcrete:sidewalk"}, + {"", "myconcrete:sidewalk","myconcrete:sidewalk"}, + } +}) +--Craft +minetest.register_craft({ + output = "myconcrete:ramp_sidewalk_long 2", + recipe = { + {"", "",""}, + {"", "","myconcrete:sidewalk"}, + {"myconcrete:sidewalk", "myconcrete:sidewalk","myconcrete:sidewalk"}, + } +}) + +--Craft +minetest.register_craft({ + output = "myconcrete:ramp_concrete 2", + recipe = { + {"", "",""}, + {"", "","myconcrete:concrete"}, + {"", "myconcrete:concrete","myconcrete:concrete"}, + } +}) + + +--Craft +minetest.register_craft({ + output = "myconcrete:ramp_concrete_long 2", + recipe = { + {"", "",""}, + {"", "","myconcrete:concrete"}, + {"myconcrete:concrete", "myconcrete:concrete","myconcrete:concrete"}, + } +}) + +end +end diff --git a/depends.txt b/depends.txt new file mode 100755 index 0000000..4ad96d5 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default diff --git a/description.txt b/description.txt new file mode 100644 index 0000000..9681ed5 --- /dev/null +++ b/description.txt @@ -0,0 +1 @@ +Myconcrete adds concrete to Minetest diff --git a/init.lua b/init.lua new file mode 100755 index 0000000..9243801 --- /dev/null +++ b/init.lua @@ -0,0 +1,6 @@ +dofile(minetest.get_modpath("myconcrete").."/concrete.lua") +dofile(minetest.get_modpath("myconcrete").."/limestone.lua") +dofile(minetest.get_modpath("myconcrete").."/mapgen.lua") +dofile(minetest.get_modpath("myconcrete").."/aliases.lua") +--dofile(minetest.get_modpath("myconcrete").."/machine.lua") + diff --git a/limestone.lua b/limestone.lua new file mode 100644 index 0000000..89771f3 --- /dev/null +++ b/limestone.lua @@ -0,0 +1,22 @@ +minetest.register_node("myconcrete:limestone", { + description = "Limestone", + tile_images = { + "myconcrete_limestone.png" + }, + drawtype = "normal", + paramtype = "light", + drop = "myconcrete:lime", + groups = {cracky = 1}, + sounds = default.node_sound_stone_defaults(), +}) + +minetest.register_craftitem("myconcrete:lime", { + description = "Lime", + inventory_image = "myconcrete_lime.png", + +}) +minetest.register_craft({ + type = "shapeless", + output = "myconcrete:limestone", + recipe = {"myconcrete:lime"}, +}) diff --git a/manholes.lua b/manholes.lua new file mode 100644 index 0000000..24251e5 --- /dev/null +++ b/manholes.lua @@ -0,0 +1,197 @@ +minetest.register_node("myconcrete:manhole", { + description = "Manhole", + tile_images = { + "myconcrete_manhole_top_closed.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png" + }, + drawtype = "nodebox", + paramtype = "light", +-- paramtype2 = "facedir", + walkable = true, + climbable = false, + groups = {cracky=2}, + node_box = { + type = "fixed", + fixed = { + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, 0.4375, 0.5, 0.5, 0.5}, + {0.375, -0.5, -0.5, 0.5, 0.5, -0.1875}, + {0.1875, -0.5, -0.5, 0.5, 0.5, -0.375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {-0.5, -0.5, -0.5, -0.375, 0.5, -0.1875}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, -0.375}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {-0.5, -0.5, 0.375, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.5}, + {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, + {0.375, -0.5, 0.1875, 0.5, 0.5, 0.5}, + {0.1875, -0.5, 0.375, 0.5, 0.5, 0.5}, + {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {0.3125, 0.4375, -0.5, 0.5, 0.5, -0.125}, + {0.125, 0.4375, -0.5, 0.5, 0.5, -0.3125}, + {0.25, 0.4375, -0.5, 0.5, 0.5, -0.25}, + {-0.5, 0.4375, -0.5, -0.3125, 0.5, -0.125}, + {-0.5, 0.4375, -0.5, -0.1875, 0.5, -0.3125}, + {-0.5, 0.4375, -0.5, -0.25, 0.5, -0.25}, + {-0.5, 0.4375, 0.3125, -0.125, 0.5, 0.5}, + {-0.5, 0.4375, 0.125, -0.3125, 0.5, 0.5}, + {-0.5, 0.4375, 0.25, -0.25, 0.5, 0.5}, + {0.3125, 0.4375, 0.125, 0.5, 0.5, 0.5}, + {0.125, 0.4375, 0.3125, 0.5, 0.5, 0.5}, + {0.25, 0.4375, 0.25, 0.5, 0.5, 0.5}, + {0.375, 0.375, -0.5, 0.5, 0.5, 0.5}, + {-0.5, 0.4375, 0.375, 0.5, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, -0.375, 0.5, 0.5}, + {-0.5, 0.4375, -0.5, 0.5, 0.5, -0.375}, + {-0.0625, 0.4375, -0.5, 0.0625, 0.5, 0.5}, + {0.125, 0.4375, -0.5, 0.1875, 0.5, 0.5}, + {0.25, 0.4375, -0.5, 0.3125, 0.5, 0.5}, + {-0.1875, 0.4375, -0.5, -0.125, 0.5, 0.5}, + {-0.3125, 0.4375, -0.5, -0.25, 0.5, 0.5}, + {0.25, 0.1875, -0.5, 0.3125, 0.25, 0.5}, + {0.25, -0.3125, -0.5, 0.3125, -0.25, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + on_punch = function(pos, node, puncher, pointed_thing) + minetest.set_node(pos,{name = "mystreets:manhole_open", param2 = node.param2}) + end, + }) + +--Manhole open +minetest.register_node("myconcrete:manhole_open", { + description = "Manhole Open", + tile_images = { + "myconcrete_manhole_top_closed.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png" + }, + drawtype = "nodebox", + paramtype = "light", +-- paramtype2 = "facedir", + walkable = false, + climbable = true, + drop = "myconcrete:manhole", + groups = {cracky=2, not_in_creative_inventory = 1}, + node_box = { + type = "fixed", + fixed = { + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, 0.4375, 0.5, 0.5, 0.5}, + {0.375, -0.5, -0.5, 0.5, 0.5, -0.1875}, + {0.1875, -0.5, -0.5, 0.5, 0.5, -0.375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {-0.5, -0.5, -0.5, -0.375, 0.5, -0.1875}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, -0.375}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {-0.5, -0.5, 0.375, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.5}, + {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, + {0.375, -0.5, 0.1875, 0.5, 0.5, 0.5}, + {0.1875, -0.5, 0.375, 0.5, 0.5, 0.5}, + {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {0.4375, 0.5, -0.1875, 0.5, 0.5625, 0.1875}, + {0.4375, 0.625, -0.375, 0.5, 0.6875, 0.375}, + {0.4375, 0.5625, 0.125, 0.5, 0.625, 0.3125}, + {0.4375, 0.5625, -0.3125, 0.5, 0.625, -0.125}, + {0.4375, 0.75, -0.4375, 0.5, 0.8125, 0.4375}, + {0.4375, 0.6875, -0.375, 0.5, 0.75, -0.3125}, + {0.4375, 0.6875, 0.3125, 0.5, 0.75, 0.375}, + {0.4375, 0.875, -0.4375, 0.5, 0.9375, 0.4375}, + {0.4375, 0.8125, 0.375, 0.5, 0.9375, 0.4375}, + {0.4375, 0.8125, -0.4375, 0.5, 0.875, -0.375}, + {-0.5, 0.5, -0.1875, -0.4375, 0.5625, 0.1875}, + {-0.5, 0.625, -0.375, -0.4375, 0.6875, 0.375}, + {-0.5, 0.5625, 0.125, -0.4375, 0.625, 0.3125}, + {-0.5, 0.5625, -0.3125, -0.4375, 0.625, -0.125}, + {-0.5, 0.75, -0.4375, -0.4375, 0.8125, 0.4375}, + {-0.5, 0.6875, -0.375, -0.4375, 0.75, -0.3125}, + {-0.5, 0.6875, 0.3125, -0.4375, 0.75, 0.375}, + {-0.5, 0.875, -0.4375, -0.4375, 0.9375, 0.4375}, + {-0.5, 0.8125, 0.375, -0.4375, 0.9375, 0.4375}, + {-0.5, 0.8125, -0.4375, -0.4375, 0.875, -0.375}, + {0.25, 0.1875, -0.5, 0.3125, 0.25, 0.5}, + {0.25, -0.3125, -0.5, 0.3125, -0.25, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5} + }, + on_punch = function(pos, node, puncher, pointed_thing) + minetest.set_node(pos,{name = "myconcrete:manhole", param2 = node.param2}) + end, + on_construct = function(pos) + local timer = minetest.get_node_timer(pos) + timer:start(10) + end, + on_timer = function(pos, elapsed) + minetest.set_node(pos,{name = "myconcrete:manhole"}) + end, + }) + +--Manhole shaft +minetest.register_node("myconcrete:manhole_shaft", { + description = "Manhole Open", + tile_images = { + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png", + "myconcrete_concrete.png" + }, + drawtype = "nodebox", + paramtype = "light", +-- paramtype2 = "facedir", + walkable = false, + climbable = true, + groups = {cracky=2, not_in_creative_inventory = 0}, + node_box = { + type = "fixed", + fixed = { + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, 0.4375, 0.5, 0.5, 0.5}, + {0.375, -0.5, -0.5, 0.5, 0.5, -0.1875}, + {0.1875, -0.5, -0.5, 0.5, 0.5, -0.375}, + {0.3125, -0.5, -0.5, 0.5, 0.5, -0.3125}, + {-0.5, -0.5, -0.5, -0.375, 0.5, -0.1875}, + {-0.5, -0.5, -0.5, -0.1875, 0.5, -0.375}, + {-0.5, -0.5, -0.5, -0.3125, 0.5, -0.3125}, + {-0.5, -0.5, 0.375, -0.1875, 0.5, 0.5}, + {-0.5, -0.5, 0.1875, -0.375, 0.5, 0.5}, + {-0.5, -0.5, 0.3125, -0.3125, 0.5, 0.5}, + {0.375, -0.5, 0.1875, 0.5, 0.5, 0.5}, + {0.1875, -0.5, 0.375, 0.5, 0.5, 0.5}, + {0.3125, -0.5, 0.3125, 0.5, 0.5, 0.5}, + {0.25, 0.1875, -0.5, 0.3125, 0.25, 0.5}, + {0.25, -0.3125, -0.5, 0.3125, -0.25, 0.5}, + } + }, + selection_box = { + type = "fixed", + fixed = { + {0.4375, -0.5, -0.5, 0.5, 0.5, 0.5}, + {-0.5, -0.5, -0.5, -0.4375, 0.5, 0.5}, + {-0.5, -0.5, -0.5, 0.5, 0.5, -0.4375}, + {-0.5, -0.5, 0.4375, 0.5, 0.5, 0.5}, + } + }, + + }) diff --git a/mapgen.lua b/mapgen.lua new file mode 100644 index 0000000..f7fbb15 --- /dev/null +++ b/mapgen.lua @@ -0,0 +1,10 @@ +minetest.register_ore({ + ore_type = "sheet", + ore = "myconcrete:limestone", + wherein = "stone", + clust_scarcity = 60*60*60, + clust_num_ores = 30, + clust_size = 3, + height_min = -31000, + height_max = -50, +}) diff --git a/mod.conf b/mod.conf new file mode 100644 index 0000000..fe1f33e --- /dev/null +++ b/mod.conf @@ -0,0 +1 @@ +name = myconcrete diff --git a/models/myconcrete_cylinder.obj b/models/myconcrete_cylinder.obj new file mode 100644 index 0000000..e21e79a --- /dev/null +++ b/models/myconcrete_cylinder.obj @@ -0,0 +1,236 @@ +# Blender v2.69 (sub 0) OBJ File: 'slope_test_cylinder.blend' +# www.blender.org +mtllib slope_test_cylinder.mtl +o Cylinder_Cylinder.001 +v 0.000000 -0.500000 -0.500000 +v 0.000000 0.500000 -0.500000 +v 0.097545 -0.500000 -0.490393 +v 0.097545 0.500000 -0.490393 +v 0.191342 -0.500000 -0.461940 +v 0.191342 0.500000 -0.461940 +v 0.277785 -0.500000 -0.415735 +v 0.277785 0.500000 -0.415735 +v 0.353553 -0.500000 -0.353553 +v 0.353553 0.500000 -0.353553 +v 0.415735 -0.500000 -0.277785 +v 0.415735 0.500000 -0.277785 +v 0.461940 -0.500000 -0.191342 +v 0.461940 0.500000 -0.191342 +v 0.490393 -0.500000 -0.097545 +v 0.490393 0.500000 -0.097545 +v 0.500000 -0.500000 -0.000000 +v 0.500000 0.500000 -0.000000 +v 0.490393 -0.500000 0.097545 +v 0.490393 0.500000 0.097545 +v 0.461940 -0.500000 0.191342 +v 0.461940 0.500000 0.191342 +v 0.415735 -0.500000 0.277785 +v 0.415735 0.500000 0.277785 +v 0.353553 -0.500000 0.353553 +v 0.353553 0.500000 0.353553 +v 0.277785 -0.500000 0.415735 +v 0.277785 0.500000 0.415735 +v 0.191342 -0.500000 0.461940 +v 0.191342 0.500000 0.461940 +v 0.097545 -0.500000 0.490393 +v 0.097545 0.500000 0.490393 +v -0.000000 -0.500000 0.500000 +v -0.000000 0.500000 0.500000 +v -0.097545 -0.500000 0.490393 +v -0.097545 0.500000 0.490393 +v -0.191342 -0.500000 0.461940 +v -0.191342 0.500000 0.461940 +v -0.277785 -0.500000 0.415735 +v -0.277785 0.500000 0.415735 +v -0.353554 -0.500000 0.353553 +v -0.353554 0.500000 0.353553 +v -0.415735 -0.500000 0.277785 +v -0.415735 0.500000 0.277785 +v -0.461940 -0.500000 0.191341 +v -0.461940 0.500000 0.191341 +v -0.490393 -0.500000 0.097545 +v -0.490393 0.500000 0.097545 +v -0.500000 -0.500000 -0.000000 +v -0.500000 0.500000 -0.000000 +v -0.490393 -0.500000 -0.097546 +v -0.490393 0.500000 -0.097546 +v -0.461940 -0.500000 -0.191342 +v -0.461940 0.500000 -0.191342 +v -0.415734 -0.500000 -0.277786 +v -0.415734 0.500000 -0.277786 +v -0.353553 -0.500000 -0.353554 +v -0.353553 0.500000 -0.353554 +v -0.277785 -0.500000 -0.415735 +v -0.277785 0.500000 -0.415735 +v -0.191341 -0.500000 -0.461940 +v -0.191341 0.500000 -0.461940 +v -0.097544 -0.500000 -0.490393 +v -0.097544 0.500000 -0.490393 +vt 0.749998 0.500017 +vt 0.749997 0.749983 +vt 0.781246 0.749983 +vt 0.781247 0.500017 +vt 0.812495 0.749984 +vt 0.812496 0.500017 +vt 0.843744 0.749984 +vt 0.843744 0.500017 +vt 0.874993 0.749984 +vt 0.874993 0.500017 +vt 0.906242 0.749984 +vt 0.906242 0.500017 +vt 0.937491 0.749984 +vt 0.937491 0.500017 +vt 0.968740 0.749984 +vt 0.968740 0.500017 +vt 0.999989 0.749984 +vt 0.999989 0.500017 +vt 0.000002 0.500024 +vt 0.000000 0.749972 +vt 0.031247 0.749972 +vt 0.031249 0.500024 +vt 0.062493 0.749972 +vt 0.062495 0.500025 +vt 0.093740 0.749973 +vt 0.093742 0.500025 +vt 0.124986 0.749973 +vt 0.124989 0.500025 +vt 0.156233 0.749973 +vt 0.156235 0.500025 +vt 0.187479 0.749974 +vt 0.187482 0.500025 +vt 0.218726 0.749974 +vt 0.218729 0.500025 +vt 0.249973 0.749975 +vt 0.249976 0.500026 +vt 0.281220 0.749975 +vt 0.281222 0.500026 +vt 0.312467 0.749976 +vt 0.312469 0.500026 +vt 0.343714 0.749976 +vt 0.343716 0.500026 +vt 0.374961 0.749976 +vt 0.374963 0.500026 +vt 0.406208 0.749977 +vt 0.406209 0.500026 +vt 0.437455 0.749977 +vt 0.437457 0.500026 +vt 0.468702 0.749977 +vt 0.468703 0.500026 +vt 0.499950 0.749978 +vt 0.499950 0.500026 +vt 0.500011 0.500018 +vt 0.500011 0.749981 +vt 0.531259 0.749981 +vt 0.531259 0.500018 +vt 0.562507 0.749981 +vt 0.562507 0.500018 +vt 0.593755 0.749982 +vt 0.593756 0.500018 +vt 0.625003 0.749982 +vt 0.625004 0.500018 +vt 0.656252 0.749982 +vt 0.656253 0.500017 +vt 0.687500 0.749983 +vt 0.687501 0.500017 +vt 0.100620 0.752432 +vt 0.125004 0.750032 +vt 0.149386 0.752435 +vt 0.172832 0.759549 +vt 0.194439 0.771100 +vt 0.213378 0.786645 +vt 0.228920 0.805586 +vt 0.240469 0.827194 +vt 0.247579 0.850641 +vt 0.249979 0.875024 +vt 0.247576 0.899407 +vt 0.240462 0.922853 +vt 0.228911 0.944460 +vt 0.213367 0.963399 +vt 0.194426 0.978941 +vt 0.172817 0.990489 +vt 0.149371 0.997600 +vt 0.124987 1.000000 +vt 0.100604 0.997597 +vt 0.077159 0.990483 +vt 0.055551 0.978932 +vt 0.036613 0.963387 +vt 0.021071 0.944447 +vt 0.009522 0.922838 +vt 0.002412 0.899392 +vt 0.000011 0.875009 +vt 0.002415 0.850626 +vt 0.009528 0.827180 +vt 0.021079 0.805572 +vt 0.036624 0.786633 +vt 0.055565 0.771091 +vt 0.077174 0.759543 +vt 0.718750 0.500017 +vt 0.718749 0.749983 +vt 0.124977 0.500000 +vt 0.100598 0.497595 +vt 0.077156 0.490481 +vt 0.055553 0.478929 +vt 0.036619 0.463386 +vt 0.021080 0.444447 +vt 0.009535 0.422840 +vt 0.002427 0.399396 +vt 0.000030 0.375016 +vt 0.002434 0.350637 +vt 0.009549 0.327195 +vt 0.021100 0.305592 +vt 0.036644 0.286658 +vt 0.055583 0.271119 +vt 0.077190 0.259575 +vt 0.100634 0.252467 +vt 0.125014 0.250069 +vt 0.149393 0.252474 +vt 0.172835 0.259589 +vt 0.194438 0.271140 +vt 0.213372 0.286684 +vt 0.228911 0.305624 +vt 0.240455 0.327231 +vt 0.247563 0.350674 +vt 0.249961 0.375054 +vt 0.247556 0.399433 +vt 0.240441 0.422874 +vt 0.228890 0.444477 +vt 0.213346 0.463411 +vt 0.194407 0.478950 +vt 0.172800 0.490495 +vt 0.149357 0.497602 +usemtl None +s 1 +f 1/1 2/2 4/3 3/4 +f 3/4 4/3 6/5 5/6 +f 5/6 6/5 8/7 7/8 +f 7/8 8/7 10/9 9/10 +f 9/10 10/9 12/11 11/12 +f 11/12 12/11 14/13 13/14 +f 13/14 14/13 16/15 15/16 +f 15/16 16/15 18/17 17/18 +f 17/19 18/20 20/21 19/22 +f 19/22 20/21 22/23 21/24 +f 21/24 22/23 24/25 23/26 +f 23/26 24/25 26/27 25/28 +f 25/28 26/27 28/29 27/30 +f 27/30 28/29 30/31 29/32 +f 29/32 30/31 32/33 31/34 +f 31/34 32/33 34/35 33/36 +f 33/36 34/35 36/37 35/38 +f 35/38 36/37 38/39 37/40 +f 37/40 38/39 40/41 39/42 +f 39/42 40/41 42/43 41/44 +f 41/44 42/43 44/45 43/46 +f 43/46 44/45 46/47 45/48 +f 45/48 46/47 48/49 47/50 +f 47/50 48/49 50/51 49/52 +f 49/53 50/54 52/55 51/56 +f 51/56 52/55 54/57 53/58 +f 53/58 54/57 56/59 55/60 +f 55/60 56/59 58/61 57/62 +f 57/62 58/61 60/63 59/64 +f 59/64 60/63 62/65 61/66 +f 4/67 2/68 64/69 62/70 60/71 58/72 56/73 54/74 52/75 50/76 48/77 46/78 44/79 42/80 40/81 38/82 36/83 34/84 32/85 30/86 28/87 26/88 24/89 22/90 20/91 18/92 16/93 14/94 12/95 10/96 8/97 6/98 +f 63/99 64/100 2/2 1/1 +f 61/66 62/65 64/100 63/99 +f 1/101 3/102 5/103 7/104 9/105 11/106 13/107 15/108 17/109 19/110 21/111 23/112 25/113 27/114 29/115 31/116 33/117 35/118 37/119 39/120 41/121 43/122 45/123 47/124 49/125 51/126 53/127 55/128 57/129 59/130 61/131 63/132 diff --git a/models/myconcrete_slope.obj b/models/myconcrete_slope.obj new file mode 100644 index 0000000..97b8bb1 --- /dev/null +++ b/models/myconcrete_slope.obj @@ -0,0 +1,35 @@ +# Blender v2.69 (sub 0) OBJ File: 'slope_test_slope.blend' +# www.blender.org +mtllib slope_test_slope.mtl +o Cube_Cube.002 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +vt 0.546875 0.984375 +vt 0.296875 0.984375 +vt 0.296875 0.734375 +vt 0.546875 0.734375 +vt 0.578125 0.734375 +vt 0.828125 0.734375 +vt 0.828125 0.984375 +vt 0.578125 0.984375 +vt 0.546875 0.703125 +vt 0.296875 0.453125 +vt 0.546875 0.453125 +vt 0.578125 0.703125 +vt 0.578125 0.453125 +vt 0.828125 0.453125 +vt 0.265625 0.984375 +vt 0.015625 0.984375 +vt 0.015625 0.609375 +vt 0.265625 0.609375 +usemtl None +s off +f 1/1 2/2 3/3 4/4 +f 4/5 3/6 5/7 6/8 +f 2/9 5/10 3/11 +f 1/12 4/13 6/14 +f 2/15 1/16 6/17 5/18 diff --git a/models/myconcrete_slope_long.obj b/models/myconcrete_slope_long.obj new file mode 100644 index 0000000..25c11e9 --- /dev/null +++ b/models/myconcrete_slope_long.obj @@ -0,0 +1,75 @@ +# Blender v2.69 (sub 0) OBJ File: 'slope_test_slope_long.blend' +# www.blender.org +mtllib slope_test_slope_long.mtl +o Cube +v -0.500000 -0.500000 -1.500000 +v 0.500000 -0.500000 -1.500000 +v 0.500000 -0.500000 0.500000 +v -0.500000 -0.500000 0.500000 +v 0.500000 0.500000 0.500000 +v -0.500000 0.500000 0.500000 +v 0.000000 -0.500000 -1.500000 +v -0.500000 -0.500000 -0.500000 +v 0.500000 -0.500000 -0.500000 +v -0.000000 -0.500000 0.500000 +v 0.500000 0.000000 0.500000 +v -0.500000 0.000000 0.500000 +v 0.500000 0.000000 -0.500000 +v -0.000000 0.500000 0.500000 +v -0.500000 0.000000 -0.500000 +v 0.000000 -0.500000 -0.500000 +v 0.000000 0.000000 -0.500000 +v -0.000000 0.000000 0.500000 +vt 0.375000 0.625000 +vt 0.250000 0.625000 +vt 0.250000 0.250000 +vt 0.375000 0.250000 +vt 0.125000 0.625000 +vt 0.125000 1.000000 +vt 0.000000 1.000000 +vt 0.000000 0.625000 +vt 0.625000 0.375000 +vt 0.625000 0.250000 +vt 0.750000 0.250000 +vt 0.750000 0.375000 +vt 1.000000 0.750000 +vt 0.750000 0.875000 +vt 0.750000 0.750000 +vt 0.750000 0.625000 +vt 1.000000 0.625000 +vt 0.500000 0.625000 +vt 0.500000 0.250000 +vt 0.500000 1.000000 +vt 0.375000 1.000000 +vt 0.250000 1.000000 +vt 0.125000 0.250000 +vt 0.000000 0.250000 +vt 0.625000 0.500000 +vt 0.750000 0.500000 +vt 0.500000 0.500000 +vt 0.500000 0.375000 +vt 0.500000 0.875000 +vt 0.500000 0.750000 +vt 1.000000 0.500000 +usemtl Material +s off +f 16/1 9/2 3/3 10/4 +f 17/5 14/6 5/7 13/8 +f 18/9 14/10 6/11 12/12 +f 2/13 13/14 9/15 +f 6/13 15/16 12/17 +f 8/18 16/1 10/4 4/19 +f 1/20 7/21 16/1 8/18 +f 7/21 2/22 9/2 16/1 +f 7/23 17/5 13/8 2/24 +f 1/3 15/2 17/5 7/23 +f 15/2 6/22 14/6 17/5 +f 10/25 18/9 12/12 4/26 +f 3/27 11/28 18/9 10/25 +f 11/28 5/19 14/10 18/9 +f 9/15 11/29 3/30 +f 9/15 13/14 11/29 +f 13/14 5/20 11/29 +f 12/17 8/26 4/31 +f 12/17 15/16 8/26 +f 15/16 1/27 8/26 diff --git a/textures/myconcrete_concrete.png b/textures/myconcrete_concrete.png new file mode 100644 index 0000000000000000000000000000000000000000..a8e493ba88635cc180679588e86314f811e48638 GIT binary patch literal 633 zcmV-<0*3vGP)*#jy?OzHcG0o#SO`B8mb@)6+dYGktx&zFuErf7Y?@TeDiH zl%z2W(K*)MOMO(EZ2ntyJEosAY}4MyoLd`d45uBXYc9D~0Q%TRh*4|foc}yt6W(px zLJO_65Q1~g7()cXKc(8I)bWr4(VrAfrnmwAdmm96fLub59qhwP%d2 zS9bY-VT{xJeF`QZ86+aQ))=B5Be4Zh>&N9o2tj5t-x!(s`}_T@p;V`g@!mfkM@X)Y z(2rrF5n@I0oKw!Z;_~h7-$JRBa`M%2qX0l9t@V^nD^o%@qLdsJf#kNXD_e~>e+;=u zsZdzSrPUr?gul<{4t>Yba84PQT;7+NiBtImD`DC^(^fWg6LDj2rRJF8z7GH(X(cn9 zvcXxSCoPo?1-tL>9{@@zG5g~&g7e4)=P0Gu>&JY3U-ilig{{$^MmuPn^wEaziBv|YbuXXU~4F3J|8=RV`xJH-9V~aWOy|?Nwhr-D%Vtv+x2>>Wg zL_=z=_w6pdiG_GPN)u`O%XuOOfWXGVxz;v@ln_{vfqKjsA@shRnW1?=6}@k@9C8i} z;4$)PIbNT4s?zpW0h0qDqPv?J7>L+BXEYu%2#GoV`?#FTk%(+vmtabS(gy$#aOP|# z`~DZmH}X7e(q1Q_6Jdq$0**1FVMw_DvGPXy}QoyI=)`wk8O z;4W&muAD>M<*W8xwb?L3nC4~MT6sAW&jv*9o>CgBaf(Jcof1VjowK`!6y_;x^_olU zwb1}jFaU6b#Iv>tVhO#JqiRSgBjP5#9M)2DnleR8q~PxD*}%a?+`>K=eax{J0YtHXATT|ZKC2H0Dus>*5kV7iB$&m+J?cpF3X_+fV*YDN2A#{AYwLjU{{ER#7^-VoF82*Y*!l8tixb6|0#T+ZrbxY0o`W+h zC}K)6%8-R4D}Vw3A_h{mVXZbIBxbvQT%!A&l1BLIqt;3xPzX8kTw;nT&U47vb+p<^ zo!)-_A|f>-05i+;1RR|4a`~h{=WoaEUdrM7+Yb@>4`Cm0B6dp#%>V!Z07*qoM6N<$ Eg1dbZyq0x3KgWN)@26C?rj9Qyg=JA%8}49_u-<4mQrF}lXfrKTL7NS~T11K_+e zPgB*$d05x!lCD?lX1%@K78U@KA_&|nc&F1FezHV#IAiI!_`b^` zxy?U1nwk1=CoJoBo?8EUVObr_5s`D5W@*XJOTJ}FxZVojQe<8E)UQ%=Z^{#JH~(Qf)-f00000NkvXXu0mjfGQAov literal 0 HcmV?d00001 diff --git a/textures/myconcrete_concrete3.png b/textures/myconcrete_concrete3.png new file mode 100644 index 0000000000000000000000000000000000000000..30989dde5e38e72e1d0766f2144dec6a66dbb2df GIT binary patch literal 587 zcmV-R0<`^!P)nD<@`$A~?*Xxi{##(da?b5Ym2-#^$3V=&vUT$X3 zormX=`7Ox3bHv}sT)*Fu8ptpFiKTH|9pYS%f87Z3;lAQWvr6dsD~{o*dA zQ~-ys?Xve?ORKD*9!rXdV3@gk zrT}2Va=Y$(Z5qCK4)esmZ`-8<$jo6@OU;NeMlCfW=JeO+{alA(YTv8P1;U>{AEoeg z-}`p|IJ%=P)k zC?q?4YFk&8g2QFHfdZfp=M|EE{`W7MBQsIb`Sm`;%-0I<+hr5&7V^`T6aedBTIueu zeuw^*(&=WdgC*s9ifo;SzSH0sR|N&9jCUUIwIZuc)EX`1YXCB*SXHui3R{5t83qRhswB8x4Ja`glMjE|)aAhoXcPbtR7ScYOVM*)szlWQ9J#j3 zKBwt0)>0|}h%*47vb(qKDk2{r7b334CYo6*iW*#9V{GsDNhDP%CL-{N%z*-{u zd4H*qnK6;^5EYIf8{Eu=1XM+G<;EfnM>Fy*?l~{tfBco1e*leQU7k5g3CaKf N002ovPDHLkV1g^90;B){ literal 0 HcmV?d00001 diff --git a/textures/myconcrete_concrete_mesh.png b/textures/myconcrete_concrete_mesh.png new file mode 100644 index 0000000000000000000000000000000000000000..c3decec52c68cf7470d9b8681a855fe3c43e33a0 GIT binary patch literal 7273 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