From f12c3aafc74b37abdf7cb07638b03e785b0dba40 Mon Sep 17 00:00:00 2001 From: IamPyu Date: Fri, 12 Jul 2024 19:12:37 -0600 Subject: [PATCH] Floral Update --- CHANGELOG.md | 8 + mods/pyutest_core/blocks.lua | 104 ------------ mods/pyutest_core/crafts.lua | 32 ---- mods/pyutest_core/flowers.lua | 62 +++++++ mods/pyutest_core/init.lua | 5 +- mods/pyutest_core/mapgen.lua | 169 +++++++++++--------- mods/pyutest_core/textures/maybell.png | Bin 0 -> 230 bytes mods/pyutest_core/textures/orange-tulip.png | Bin 0 -> 182 bytes mods/pyutest_core/trees.lua | 6 +- mods/pyutest_core/utils.lua | 34 ++-- mods/pyutest_core/wool.lua | 37 +++-- mods/pyutest_inventory/init.lua | 9 +- 12 files changed, 223 insertions(+), 243 deletions(-) create mode 100644 mods/pyutest_core/flowers.lua create mode 100644 mods/pyutest_core/textures/maybell.png create mode 100644 mods/pyutest_core/textures/orange-tulip.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 9b4df34..a936dd1 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [Jun 12th 2024] Update: Floral Update + +- Add a bunch of flora to finish dyes +- Added `colored` group +- Black blocks no longer give players heart attacks (They were just too dark.) +- Rename grassy hills to meadow +- Flowers now spawn in meadows + ## [Jul 11th - Jul 12th 2024] Update: Smithing Update - Updated Unified Inventory and Mobs Redo diff --git a/mods/pyutest_core/blocks.lua b/mods/pyutest_core/blocks.lua index 9ef5823..b9acf1b 100644 --- a/mods/pyutest_core/blocks.lua +++ b/mods/pyutest_core/blocks.lua @@ -405,84 +405,6 @@ PyuTestCore.make_node("pyutest_core:glass", "Glass", { sunlight_propagates = true }) -PyuTestCore.make_node("pyutest_core:flower", "Rose", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"flower.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "flower.png" -}) - -PyuTestCore.make_node("pyutest_core:flower2", "Dandelion", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"flower2.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "flower2.png" -}) - -PyuTestCore.make_node("pyutest_core:flower3", "Blue Daisy", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"flower3.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "flower3.png" -}) - -PyuTestCore.make_node("pyutest_core:flower4", "Lavender", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"flower4.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "flower4.png" -}) - -PyuTestCore.make_node("pyutest_core:deadbush", "Deadbush", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"deadbush.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "deadbush.png" -}) - -PyuTestCore.make_node("pyutest_core:grass_plant", "Grass", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"grass-plant.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - buildable_to = true, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "grass-plant.png" -}) - PyuTestCore.make_node("pyutest_core:tree_sapling", "Tree Sapling", { block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, flammable = 1 @@ -522,18 +444,6 @@ PyuTestCore.make_node("pyutest_core:tree_sapling", "Tree Sapling", { end }) -PyuTestCore.make_node("pyutest_core:sugarcane", "Sugarcane", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, - flammable = 1 -}, {"sugarcane.png"}, { - drawtype = "plantlike", - walkable = false, - waving = 1, - paramtype = "light", - sunlight_propagates = true, - inventory_image = "sugarcane.png" -}) - PyuTestCore.make_node("pyutest_core:trapdoor", "Trapdoor", { block = PyuTestCore.BLOCK_BREAKABLE_CHOPPY, flammable = 1 @@ -655,20 +565,6 @@ PyuTestCore.make_node("pyutest_core:ladder", "Ladder", { } }) -PyuTestCore.make_node("pyutest_core:lilypad", "Lily Pad", { - block = PyuTestCore.BLOCK_BREAKABLE_INSTANT -}, {"lilypad.png"}, { - drawtype = "nodebox", - paramtype = "light", - paramtype2 = "facedir", - buildable_to = true, - sunlight_propagates = true, - node_box = { - type = "fixed", - fixed = {-0.5, -31/64, -0.5, 0.5, -15/32, 0.5} - }, -}) - PyuTestCore.make_liquid = function (name, desc, groups, texture, speed, extra_conf) local function make_liquid_flags(liquidtype) local drawtype = "" diff --git a/mods/pyutest_core/crafts.lua b/mods/pyutest_core/crafts.lua index c100d20..4fc0f84 100644 --- a/mods/pyutest_core/crafts.lua +++ b/mods/pyutest_core/crafts.lua @@ -144,38 +144,6 @@ minetest.register_craft({ } }) -minetest.register_craft({ - output = "pyutest_core:red_dye", - recipe = { - "pyutest_core:flower" - }, - type = "shapeless" -}) - -minetest.register_craft({ - output = "pyutest_core:yellow_dye", - recipe = { - "pyutest_core:flower2" - }, - type = "shapeless" -}) - -minetest.register_craft({ - output = "pyutest_core:blue_dye", - recipe = { - "pyutest_core:flower3" - }, - type = "shapeless" -}) - -minetest.register_craft({ - output = "pyutest_core:purple_dye", - recipe = { - "pyutest_core:flower4" - }, - type = "shapeless" -}) - minetest.register_craft({ output = "pyutest_core:wooden_block 4", recipe = { diff --git a/mods/pyutest_core/flowers.lua b/mods/pyutest_core/flowers.lua new file mode 100644 index 0000000..7a7e48f --- /dev/null +++ b/mods/pyutest_core/flowers.lua @@ -0,0 +1,62 @@ +PyuTestCore.registered_flowers = {} +PyuTestCore.make_flower = function (name, desc, texture, dye, add_to_registry, drawtype, econf) + PyuTestCore.make_node(name, desc, { + block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, + flammable = 1 + }, {texture}, PyuTestCore.util.tableconcat({ + drawtype = drawtype or "plantlike", + walkable = false, + waving = 1, + buildable_to = true, + paramtype = "light", + sunlight_propagates = true, + inventory_image = texture + }, econf or {})) + + if dye ~= nil then + minetest.register_craft({ + output = dye .. " 2", + recipe = {name}, + type = "shapeless" + }) + end + + -- This is for plants like deadbushes which I do not want spawning in for say, Forests. + if add_to_registry then + table.insert(PyuTestCore.registered_flowers, name) + end +end + +-- Plants from before the floral update +PyuTestCore.make_flower("pyutest_core:rose", "Rose", "flower.png", "pyutest_core:red_dye", true) +PyuTestCore.make_flower("pyutest_core:dandelion", "Dandelion", "flower2.png", "pyutest_core:yellow_dye", true) +PyuTestCore.make_flower("pyutest_core:blue_daisy", "Blue Daisy", "flower3.png", "pyutest_core:blue_dye", true) +PyuTestCore.make_flower("pyutest_core:lavender", "Lavender", "flower4.png", "pyutest_core:purple_dye", true) + +minetest.register_alias("pyutest_core:flower", "pyutest_core:rose") +minetest.register_alias("pyutest_core:flower2", "pyutest_core:dandelion") +minetest.register_alias("pyutest_core:flower3", "pyutest_core:blue_daisy") +minetest.register_alias("pyutest_core:flower4", "pyutest_core:lavender") + +PyuTestCore.make_flower("pyutest_core:deadbush", "Deadbush", "deadbush.png", "pyutest_core:brown_dye") +PyuTestCore.make_flower("pyutest_core:grass_plant", "Grass", "grass-plant.png", "pyutest_core:green_dye") +PyuTestCore.make_flower("pyutest_core:sugarcane", "Sugarcane", "sugarcane.png", "pyutest_core:green_dye") + +PyuTestCore.make_node("pyutest_core:lilypad", "Lily Pad", { + block = PyuTestCore.BLOCK_BREAKABLE_INSTANT +}, {"lilypad.png"}, { + drawtype = "nodebox", + paramtype = "light", + paramtype2 = "facedir", + buildable_to = true, + sunlight_propagates = true, + node_box = { + type = "fixed", + fixed = {-0.5, -31/64, -0.5, 0.5, -15/32, 0.5} + }, +}) + +-- Plants after the floral update + +PyuTestCore.make_flower("pyutest_core:maybell", "Maybell", "maybell.png", "pyutest_core:white_dye", true) +PyuTestCore.make_flower("pyutest_core:orange_tulip", "Orange Tulip", "orange-tulip.png", "pyutest_core:orange_dye", true) diff --git a/mods/pyutest_core/init.lua b/mods/pyutest_core/init.lua index 06843da..16c0a28 100644 --- a/mods/pyutest_core/init.lua +++ b/mods/pyutest_core/init.lua @@ -8,6 +8,8 @@ PyuTestCore = { BLOCK_BREAKABLE_VERYLONG = 2, -- Obsidian, etc. BLOCK_BREAKABLE_FOREVER = 1, -- Barriers. } +PyuTestCore_SurfaceBottom = 1 +PyuTestCore_WorldBottom = -31000 PyuTestCore.get_schem_path = function (name) return minetest.get_modpath("pyutest_core") .. "/schematics/"..name..".mts" @@ -20,10 +22,10 @@ dofile(PyuTestCore_Path.."/utils.lua") -- Utilities dofile(PyuTestCore_Path.."/blocks.lua") minetest.register_alias("mapgen_dirt", "pyutest_core:dirt_block") -dofile(PyuTestCore_Path.."/mapgen.lua") dofile(PyuTestCore_Path.."/items.lua") dofile(PyuTestCore_Path.."/tools.lua") dofile(PyuTestCore_Path.."/wool.lua") +dofile(PyuTestCore_Path.."/flowers.lua") dofile(PyuTestCore_Path.."/player.lua") dofile(PyuTestCore_Path.."/lootboxes.lua") dofile(PyuTestCore_Path.."/ores.lua") @@ -35,3 +37,4 @@ dofile(PyuTestCore_Path.."/crafts.lua") dofile(PyuTestCore_Path.."/furniture.lua") dofile(PyuTestCore_Path.."/furnace.lua") dofile(PyuTestCore_Path.."/overrides.lua") +dofile(PyuTestCore_Path.."/mapgen.lua") diff --git a/mods/pyutest_core/mapgen.lua b/mods/pyutest_core/mapgen.lua index 35fb0e5..f0438cf 100644 --- a/mods/pyutest_core/mapgen.lua +++ b/mods/pyutest_core/mapgen.lua @@ -12,10 +12,6 @@ PyuTestCore_OceanMin = -15 PyuTestCore_DeepOceanMax = PyuTestCore_OceanMin - 1 PyuTestCore_DeepOceanMin = -31 - -PyuTestCore_SurfaceBottom = 1 -PyuTestCore_WorldBottom = -31000 - PyuTestCore_BiomeTops = { grassland = 40, forest = 45, @@ -28,42 +24,55 @@ PyuTestCore_BiomeTops = { ice_spikes = 250 } -PyuTestCore.register_ocean = function(name, heat_point, top_node, water_node, ground_node) - minetest.register_biome({ - name = name.."_ocean", - node_water = water_node or "pyutest_core:water_source", - node_river_water = water_node or "pyutest_core:water_source", - node_riverbed = ground_node or "pyutest_core:gravel_block", - node_top = ground_node or "pyutest_core:gravel_block", - node_stone = ground_node or "pyutest_core:gravel_block", - depth_top = 3, - node_water_top = top_node or nil, - depth_water_top = top_node ~= nil and 5 or nil, - y_max = 0, - y_min = PyuTestCore_OceanMin, - heat_point = heat_point or 50, - humidity_point = 100 - }) +PyuTestCore.BIOME_TYPES = { + -- Normal biomes (Forests for example) + NORMAL = 1, - minetest.register_biome({ - name = name.."_deep_ocean", - node_water = water_node or "pyutest_core:water_source", - node_river_water = water_node or "pyutest_core:water_source", - node_riverbed = ground_node or "pyutest_core:gravel_block", - node_top = ground_node or "pyutest_core:gravel_block", - node_stone = ground_node or "pyutest_core:gravel_block", - depth_top = 3, - node_water_top = top_node or nil, - depth_water_top = top_node ~= nil and 5 or nil, - y_max = PyuTestCore_DeepOceanMax, - y_min = PyuTestCore_DeepOceanMin, - heat_point = heat_point or 50, - humidity_point = 100 - }) + -- Chilly biomes, but not snowy (Mushroom Fields for example) + CHILLY = 2, + + -- Snowy biomes (Frozen Plains for example) + COLD = 3, + + -- Warm biomes (Savannas for example) + WARM = 4, + + -- Hot biomes (Deserts for example) + DESERT = 5, + + -- Wasteland biomes (Wastelands and Volcano for example) + WASTELAND = 6, + + -- Wetland biomes (Oceans and Swamps for example) + WETLAND = 7 +} + +PyuTestCore.get_biomes_from_type = function(type) + local biomes = {} + + for k, v in pairs(minetest.registered_biomes) do + if v._pyutest_biome_type == type then + biomes[k] = v + end + end + + return biomes +end + +PyuTestCore.get_flowering_biomes = function () + local biomes = {} + + for k, v in pairs(minetest.registered_biomes) do + if v._pyutest_biome_flowering == true then + table.insert(biomes, k) + end + end + + return biomes end -- wrapper around minetest.register_biome but with defaults and caves -PyuTestCore.register_biome = function(name, opts) +PyuTestCore.register_biome = function(name, type, opts) local nopts = PyuTestCore.util.tablecopy(opts) or {} nopts["name"] = name nopts["depth_top"] = nopts["depth_top"] or 1 @@ -75,16 +84,18 @@ PyuTestCore.register_biome = function(name, opts) nopts["node_river_water"] = nopts["node_river_water"] or "pyutest_core:water_source" nopts["node_riverbed"] = nopts["node_riverbed"] or "pyutest_core:gravel_block" - minetest.register_biome(nopts) + minetest.register_biome(PyuTestCore.util.tableconcat(nopts, { + _pyutest_biome_type = type, + })) - minetest.register_biome({ + minetest.register_biome(PyuTestCore.util.tableconcat({ name = name.."_ocean", node_top = nopts["node_riverbed"], depth_top = 2, node_filler = nopts["node_riverbed"], depth_filler = 3, depth_riverbed = 2, - + node_water = nopts["node_water"], node_river_water = nopts["node_river_water"], @@ -93,17 +104,19 @@ PyuTestCore.register_biome = function(name, opts) y_max = 0, y_min = PyuTestCore_OceanMin - }) + }, { + _pyutest_biome_type = PyuTestCore.BIOME_TYPES.WETLAND + })) - minetest.register_biome({ + minetest.register_biome(PyuTestCore.util.tableconcat({ name = name.."_deep_ocean", - + node_top = nopts["node_riverbed"], depth_top = 2, node_filler = nopts["node_riverbed"], depth_filler = 3, depth_riverbed = 2, - + node_water = nopts["node_water"], node_river_water = nopts["node_river_water"], @@ -114,7 +127,9 @@ PyuTestCore.register_biome = function(name, opts) y_min = PyuTestCore_DeepOceanMin, vertical_blend = 5 - }) + }, { + _pyutest_biome_type = PyuTestCore.BIOME_TYPES.WETLAND + })) minetest.register_biome({ name = name.."_cave", @@ -125,7 +140,7 @@ PyuTestCore.register_biome = function(name, opts) }) end -PyuTestCore.register_biome("grassland", { +PyuTestCore.register_biome("grassland", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:grass_block", node_filler = "pyutest_core:dirt_block", @@ -133,10 +148,12 @@ PyuTestCore.register_biome("grassland", { y_min = PyuTestCore_SurfaceBottom, heat_point = 53, - humidity_point = 38, + humidity_point = 46, + + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("forest", { +PyuTestCore.register_biome("forest", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:dark_grass_block", node_filler = "pyutest_core:dirt_block", @@ -144,10 +161,11 @@ PyuTestCore.register_biome("forest", { y_min = PyuTestCore_SurfaceBottom, heat_point = 50, - humidity_point = 63 + humidity_point = 63, + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("stony_mountains", { +PyuTestCore.register_biome("stony_mountains", PyuTestCore.BIOME_TYPES.CHILLY, { node_top = "pyutest_core:stone_block", node_filler = "pyutest_core:stone_block", @@ -158,7 +176,7 @@ PyuTestCore.register_biome("stony_mountains", { humidity_point = 34 }) -PyuTestCore.register_biome("desert", { +PyuTestCore.register_biome("desert", PyuTestCore.BIOME_TYPES.DESERT, { node_top = "pyutest_core:sand_block", node_filler = "pyutest_core:sandstone_block", node_riverbed = "pyutest_core:sand_block", @@ -170,7 +188,7 @@ PyuTestCore.register_biome("desert", { humidity_point = 4 }) -PyuTestCore.register_biome("desert_mountains", { +PyuTestCore.register_biome("desert_mountains", PyuTestCore.BIOME_TYPES.DESERT, { node_top = "pyutest_core:sand_block", node_filler = "pyutest_core:sandstone_block", @@ -181,7 +199,7 @@ PyuTestCore.register_biome("desert_mountains", { humidity_point = 8 }) -PyuTestCore.register_biome("snowy_mountains", { +PyuTestCore.register_biome("snowy_mountains", PyuTestCore.BIOME_TYPES.COLD, { node_top = "pyutest_core:snow_block", node_filler = "pyutest_core:snow_block", @@ -192,7 +210,7 @@ PyuTestCore.register_biome("snowy_mountains", { humidity_point = 23 }) -PyuTestCore.register_biome("frozen_plains", { +PyuTestCore.register_biome("frozen_plains", PyuTestCore.BIOME_TYPES.COLD, { node_dust = "pyutest_core:snow_carpet", node_top = "pyutest_core:snow_block", @@ -205,7 +223,7 @@ PyuTestCore.register_biome("frozen_plains", { humidity_point = 32 }) -PyuTestCore.register_biome("wasteland", { +PyuTestCore.register_biome("wasteland", PyuTestCore.BIOME_TYPES.WASTELAND, { node_top = "pyutest_core:dirt_block", node_filler = "pyutest_core:dirt_block", @@ -215,7 +233,7 @@ PyuTestCore.register_biome("wasteland", { humidity_point = 9 }) -PyuTestCore.register_biome("mushroom_fields", { +PyuTestCore.register_biome("mushroom_fields", PyuTestCore.BIOME_TYPES.CHILLY, { node_top = "pyutest_core:mycelium_block", node_filler = "pyutest_core:dirt_block", @@ -226,7 +244,7 @@ PyuTestCore.register_biome("mushroom_fields", { humidity_point = 76 }) -PyuTestCore.register_biome("volcano", { +PyuTestCore.register_biome("volcano", PyuTestCore.BIOME_TYPES.WASTELAND, { node_top = "pyutest_core:molten_rock_block", node_filler = "pyutest_core:basalt_block", depth_filler = 9, @@ -238,7 +256,7 @@ PyuTestCore.register_biome("volcano", { humidity_point = 3 }) -PyuTestCore.register_biome("ice_spikes", { +PyuTestCore.register_biome("ice_spikes", PyuTestCore.BIOME_TYPES.COLD, { node_top = "pyutest_core:ice_block", node_filler = "pyutest_core:ice_block", @@ -248,7 +266,7 @@ PyuTestCore.register_biome("ice_spikes", { humidity_point = 28 }) -PyuTestCore.register_biome("grassy_hills", { +PyuTestCore.register_biome("meadow", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:dark_grass_block", node_filler = "pyutest_core:dirt_block", depth_filler = 4, @@ -257,10 +275,12 @@ PyuTestCore.register_biome("grassy_hills", { y_min = PyuTestCore_BiomeTops.grassland, heat_point = 36, - humidity_point = 54 + humidity_point = 54, + + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("old_growth_forest", { +PyuTestCore.register_biome("old_growth_forest", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:dark_grass_block", node_filler = "pyutest_core:dirt_block", @@ -268,10 +288,12 @@ PyuTestCore.register_biome("old_growth_forest", { y_min = PyuTestCore_SurfaceBottom, heat_point = 38, - humidity_point = 66 + humidity_point = 66, + + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("snowy_forest", { +PyuTestCore.register_biome("snowy_forest", PyuTestCore.BIOME_TYPES.COLD, { node_top = "pyutest_core:snow_block", node_filler = "pyutest_core:dirt_block", @@ -282,7 +304,7 @@ PyuTestCore.register_biome("snowy_forest", { humidity_point = 28 }) -PyuTestCore.register_biome("savanna", { +PyuTestCore.register_biome("savanna", PyuTestCore.BIOME_TYPES.WARM, { node_top = "pyutest_core:savanna_grass_block", node_filler = "pyutest_core:dirt_block", @@ -293,7 +315,7 @@ PyuTestCore.register_biome("savanna", { humidity_point = 38 }) -PyuTestCore.register_biome("taiga", { +PyuTestCore.register_biome("taiga", PyuTestCore.BIOME_TYPES.CHILLY, { node_top = "pyutest_core:dark_grass_block", node_filler = "pyutest_core:dirt_block", @@ -301,10 +323,12 @@ PyuTestCore.register_biome("taiga", { y_min = PyuTestCore_SurfaceBottom, heat_point = 28, - humidity_point = 53 + humidity_point = 53, + + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("birch_forest", { +PyuTestCore.register_biome("birch_forest", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:grass_block", node_filler = "pyutest_core:dirt_block", @@ -312,10 +336,12 @@ PyuTestCore.register_biome("birch_forest", { y_min = PyuTestCore_SurfaceBottom, heat_point = 40, - humidity_point = 70 + humidity_point = 70, + + _pyutest_biome_flowering = true }) -PyuTestCore.register_biome("cherry_grove", { +PyuTestCore.register_biome("cherry_grove", PyuTestCore.BIOME_TYPES.NORMAL, { node_top = "pyutest_core:grass_block", node_filler = "pyutest_core:dirt_block", @@ -323,11 +349,10 @@ PyuTestCore.register_biome("cherry_grove", { y_min = PyuTestCore_SurfaceBottom, heat_point = 36, - humidity_point = 64 -}) + humidity_point = 64, --- PyuTestCore.register_ocean("normal") --- PyuTestCore.register_ocean("volcanic", 160, nil, "pyutest_core:lava_source", "pyutest_core:basalt_block") + _pyutest_biome_flowering = true +}) PyuTestCore.BIOMES = {} for k, _ in pairs(minetest.registered_biomes) do diff --git a/mods/pyutest_core/textures/maybell.png b/mods/pyutest_core/textures/maybell.png new file mode 100644 index 0000000000000000000000000000000000000000..aa017cfdf884cca82efd58e70cc68bdb861a379f GIT binary patch literal 230 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`Ydu{YLo9laPTI(OM1jYZcURM- zsY+=Jm!xz}39p(aeA<9PRWwG}y=8_69dp4|3t8?6kOvy~QZ*)z8}dKp`% e^75jY|Cz5hR69p+c~}Q@ID@CFpUXO@geCwU4_prb literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/textures/orange-tulip.png b/mods/pyutest_core/textures/orange-tulip.png new file mode 100644 index 0000000000000000000000000000000000000000..6551b8ff2ece43ad1b8d2640566d2c3a79a5b2e2 GIT binary patch literal 182 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`wVp1HAr`&K2@eOPj-{kp1t^Cw*ohaCYguTOZSw#5?Co-tqqiXAL$idM*&Q)xuf)ra;Ur&ZZ6_ d>!w6ThMZfb5{sYiIRJDBgQu&X%Q~loCIDY(L{0zz literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/trees.lua b/mods/pyutest_core/trees.lua index ebd54b0..ed86d88 100644 --- a/mods/pyutest_core/trees.lua +++ b/mods/pyutest_core/trees.lua @@ -4,10 +4,10 @@ minetest.register_decoration({ place_on = {"pyutest_core:grass_block", "pyutest_core:dark_grass_block"}, sidelen = 16, fill_ratio = 0.009, - biomes = {"forest", "grassland", "old_growth_forest"}, - y_max = PyuTestCore_BiomeTops.grassland, + biomes = PyuTestCore.get_flowering_biomes(), + y_max = PyuTestCore_BiomeTops.mountains, y_min = 1, - decoration = {"pyutest_core:flower", "pyutest_core:flower2", "pyutest_core:flower3", "pyutest_core:flower4"} + decoration = PyuTestCore.registered_flowers }) minetest.register_decoration({ diff --git a/mods/pyutest_core/utils.lua b/mods/pyutest_core/utils.lua index e323584..62b4aa5 100644 --- a/mods/pyutest_core/utils.lua +++ b/mods/pyutest_core/utils.lua @@ -2,22 +2,6 @@ PyuTestCore.util = { toint = function (float) return tonumber(string.format("%d", float)) end, - - tableconcat = function (t1, t2) - local nt = t1 - for k, v in pairs(t2) do - nt[k] = v - end - return nt - end, - - tableconcat2 = function(t1, t2) - local nt = t1 - for i = i, #t2 do - nt[#nt+i] = t2[i] - end - return nt - end, tablecopy = function(t) if t == nil then return nil end @@ -26,7 +10,23 @@ PyuTestCore.util = { t2[k] = v end return t2 - end + end, + + tableconcat = function (t1, t2) + local nt = PyuTestCore.util.tablecopy(t1) + for k, v in pairs(t2) do + nt[k] = v + end + return nt + end, + + tableconcat2 = function(t1, t2) + local nt = PyuTestCore.util.tablecopy(t1) + for i = 1, #t2 do + nt[#nt+i] = t2[i] + end + return nt + end, } PyuTestCore.dorange = function(origin, range, action) diff --git a/mods/pyutest_core/wool.lua b/mods/pyutest_core/wool.lua index 28f4bf8..0811dc0 100644 --- a/mods/pyutest_core/wool.lua +++ b/mods/pyutest_core/wool.lua @@ -1,9 +1,15 @@ PyuTestCore.make_colored_blocks = function(name, desc, color) - PyuTestCore.make_building_blocks(name.."_wool", desc.." Wool", {"wool.png"}, color or "white") + PyuTestCore.make_building_blocks(name.."_wool", desc.." Wool", { + "wool.png" + }, color or "white", { + colored = 1 + }) + PyuTestCore.make_building_blocks(name.."_terracotta", desc .. " Terracotta", { "terracotta.png" }, color or "white", { - block = PyuTestCore.BLOCK_BREAKABLE_MIDDLE + block = PyuTestCore.BLOCK_BREAKABLE_MIDDLE, + colored = 1 }) PyuTestCore.make_item(name.."_dye", desc.." Dye", {}, "dye.png", { @@ -47,7 +53,7 @@ minetest.register_craft({ local colors = { white = {"White", nil}, - black = {"Black", "black"}, + black = {"Black", {r = 32, g = 32, b = 32}}, brown = {"Brown", "saddlebrown"}, red = {"Red", "indianred"}, orange = {"Orange", "coral"}, @@ -62,13 +68,18 @@ for k, v in pairs(colors) do PyuTestCore.make_colored_blocks("pyutest_core:"..k, v[1], v[2]) end --- PyuTestCore.make_colored_blocks("pyutest_core:black", "Black", "black") --- PyuTestCore.make_colored_blocks("pyutest_core:brown", "Brown", "saddlebrown") --- --- PyuTestCore.make_colored_blocks("pyutest_core:red", "Red", "red") --- PyuTestCore.make_colored_blocks("pyutest_core:orange", "Orange", "orange") --- PyuTestCore.make_colored_blocks("pyutest_core:yellow", "Yellow", "yellow") --- PyuTestCore.make_colored_blocks("pyutest_core:green", "Green", "green") --- PyuTestCore.make_colored_blocks("pyutest_core:blue", "Blue", "blue") --- PyuTestCore.make_colored_blocks("pyutest_core:purple", "Purple", "purple") --- PyuTestCore.make_colored_blocks("pyutest_core:pink", "Pink", "pink") +PyuTestCore.make_dye_mixing_recipe = function(c1, c2, out) + minetest.register_craft({ + type = "shapeless", + output = out .. " 2", + recipe = { + c1, c2 + } + }) +end + +PyuTestCore.make_dye_mixing_recipe("pyutest_core:red_dye", "pyutest_core:blue_dye", "pyutest_core:purple_dye") +PyuTestCore.make_dye_mixing_recipe("pyutest_core:red_dye", "pyutest_core:yellow_dye", "pyutest_core:orange_dye") +PyuTestCore.make_dye_mixing_recipe("pyutest_core:yellow_dye", "pyutest_core:blue_dye", "pyutest_core:green_dye") +PyuTestCore.make_dye_mixing_recipe("pyutest_core:red_dye", "pyutest_core:white_dye", "pyutest_core:pink_dye") +PyuTestCore.make_dye_mixing_recipe("pyutest_core:red_dye", "pyutest_core:green_dye", "pyutest_core:brown_dye") diff --git a/mods/pyutest_inventory/init.lua b/mods/pyutest_inventory/init.lua index c90ae2b..044b035 100644 --- a/mods/pyutest_inventory/init.lua +++ b/mods/pyutest_inventory/init.lua @@ -38,5 +38,12 @@ unified_inventory.register_category("pyutest_inventory:minerals", { symbol = "pyutest_core:diamond_ore", label = "Minerals", index = 6, - items = get_items_from_group("mineral") + items = get_items_from_group("mineral") +}) + +unified_inventory.register_category("pyutest_inventory:colored", { + symbol = "pyutest_core:yellow_wool_block", + label = "Colored Blocks", + index = 7, + items = get_items_from_group("colored") })