From b6167af5dc0315d5d25d287839c5947aadfdbd10 Mon Sep 17 00:00:00 2001 From: IamPyu Date: Fri, 14 Jun 2024 18:19:12 -0600 Subject: [PATCH] Major Update: 'Items and Utilities': Add Gunpowder, Coins, Sugar, and Ash. Add replacenear Chat Command, New Colored Blocks, New Grass, Revamp Light Texture, New Flower Type, New TNT Crafting Recipe, Add Crying Obsidian, and more! --- mods/pyutest_cmds/init.lua | 40 +++++ mods/pyutest_core/abms.lua | 2 +- mods/pyutest_core/blocks.lua | 165 ++++++++++++------ mods/pyutest_core/crafts.lua | 8 + mods/pyutest_core/init.lua | 7 + mods/pyutest_core/player.lua | 15 -- mods/pyutest_core/sounds/coin.ogg | Bin 0 -> 4359 bytes mods/pyutest_core/textures/coin.png | Bin 0 -> 175 bytes mods/pyutest_core/textures/crate.png | Bin 0 -> 220 bytes .../pyutest_core/textures/crying-obsidian.png | Bin 0 -> 339 bytes mods/pyutest_core/textures/flower4.png | Bin 0 -> 160 bytes mods/pyutest_core/textures/grass-plant.png | Bin 0 -> 246 bytes mods/pyutest_core/textures/light.png | Bin 110 -> 251 bytes mods/pyutest_core/textures/powder.png | Bin 0 -> 211 bytes mods/pyutest_core/textures/water.png | Bin 266 -> 268 bytes mods/pyutest_core/textures/water_bak.png | Bin 0 -> 266 bytes mods/pyutest_core/tools.lua | 34 +++- mods/pyutest_core/trees.lua | 15 +- 18 files changed, 213 insertions(+), 73 deletions(-) create mode 100644 mods/pyutest_core/sounds/coin.ogg create mode 100644 mods/pyutest_core/textures/coin.png create mode 100644 mods/pyutest_core/textures/crate.png create mode 100644 mods/pyutest_core/textures/crying-obsidian.png create mode 100644 mods/pyutest_core/textures/flower4.png create mode 100644 mods/pyutest_core/textures/grass-plant.png create mode 100644 mods/pyutest_core/textures/powder.png create mode 100644 mods/pyutest_core/textures/water_bak.png diff --git a/mods/pyutest_cmds/init.lua b/mods/pyutest_cmds/init.lua index e69de29..484642f 100644 --- a/mods/pyutest_cmds/init.lua +++ b/mods/pyutest_cmds/init.lua @@ -0,0 +1,40 @@ +-- Building tools +minetest.register_chatcommand("replacenear", { + privs = { + creative = true + }, + func = function (name, param) + local parts = param:split(" ") + if #parts == 3 then + local player = minetest.get_player_by_name(name) + local pos = player:get_pos() + local range = tonumber(parts[1]) or 5 + local from = parts[2]:split(",") + local to = parts[3] + local replaced = 0 + + local function replace(p) + for _, v in pairs(from) do + local name = minetest.get_node(p).name + local anyblock_match = (v == "anyblock" and name ~= "air" and name ~= "ignore") + + if name == v or v == "any" or anyblock_match then + minetest.set_node(p, {name = to}) + replaced = replaced + 1 + end + end + end + + for dx = -range, range do + for dz = -range, range do + for dy = -range, range do + local npos = {x = pos.x + dx, y = pos.y + dy, z = pos.z + dz} + replace(npos) + end + end + end + return true, string.format("Replaced %d blocks", replaced) + end + return false, "Requires 3 arguments" + end +}) diff --git a/mods/pyutest_core/abms.lua b/mods/pyutest_core/abms.lua index e49c833..4985873 100644 --- a/mods/pyutest_core/abms.lua +++ b/mods/pyutest_core/abms.lua @@ -14,7 +14,7 @@ minetest.register_abm({ nodenames = PyuTestCore.building_blocks, neighbors = {"pyutest_core:contagious_acid"}, interval = 3.4, - chance = 8.7, + chance = 3.7, catchup = true, action = function (pos) minetest.set_node(pos, {name = "pyutest_core:contagious_acid"}) diff --git a/mods/pyutest_core/blocks.lua b/mods/pyutest_core/blocks.lua index 4b118d8..109c0b0 100644 --- a/mods/pyutest_core/blocks.lua +++ b/mods/pyutest_core/blocks.lua @@ -41,67 +41,62 @@ PyuTestCore.node_boxes = { PyuTestCore.building_blocks = {} -PyuTestCore.make_colored_blocks = function (color, dcolor, tex, colorspec, cgroups, bdrawtype, light) +PyuTestCore.make_building_blocks = function (color, dcolor, tex, colortint, cgroups, extra_conf) local groups = cgroups or { block = PyuTestCore.BLOCK_BREAKABLE_NORMAL } + local econf = extra_conf or {} local id_block = "pyutest_core:"..color.."_block" local id_carpet = "pyutest_core:"..color.."_carpet" local id_slab = "pyutest_core:"..color.."_slab" local id_pillar = "pyutest_core:"..color.."_pillar" - minetest.register_node(id_block, { + minetest.register_node(id_block, PyuTestCore.util.tableconcat({ description = Translate(dcolor.." Block"), - drawtype = bdrawtype, tiles = {tex}, - color = colorspec, + color = colortint, groups = groups, sounds = PyuTestCore.make_node_sounds(), - paramtype = light and "light" or nil, - sunlight_propagates = light and true or nil - }) + }, econf)) table.insert(PyuTestCore.building_blocks, id_block) - minetest.register_node(id_carpet, { + minetest.register_node(id_carpet, PyuTestCore.util.tableconcat({ description = Translate(dcolor .. " Carpet"), tiles = {tex}, groups = groups, - color = colorspec, + color = colortint, drawtype = "nodebox", paramtype = "light", - paramtyp2 = "facedir", + paramtype2 = "facedir", node_box = PyuTestCore.node_boxes.CARPET, sounds = PyuTestCore.make_node_sounds(), - sunlight_propagates = light and true or nil - }) + }, econf)) table.insert(PyuTestCore.building_blocks, id_carpet) - minetest.register_node(id_slab, { + minetest.register_node(id_slab, PyuTestCore.util.tableconcat({ description = Translate(dcolor.." Slab"), tiles = {tex}, groups = groups, - color = colorspec, + color = colortint, drawtype = "nodebox", paramtype = "light", - paramtyp2 = "facedir", + paramtype2 = "facedir", node_box = PyuTestCore.node_boxes.SLAB, sounds = PyuTestCore.make_node_sounds(), - sunlight_propagates = light and true or nil - }) + }, econf)) table.insert(PyuTestCore.building_blocks, id_slab) - minetest.register_node(id_pillar, { + minetest.register_node(id_pillar, PyuTestCore.util.tableconcat({ description = Translate(dcolor.." Pillar"), tiles = {tex}, groups = groups, - color = colorspec, + color = colortint, drawtype = "nodebox", paramtype = "light", - paramtyp2 = "facedir", + paramtype2 = "facedir", node_box = PyuTestCore.node_boxes.PILLAR, sounds = PyuTestCore.make_node_sounds(), - sunlight_propagates = light and true or nil - }) + }, econf)) table.insert(PyuTestCore.building_blocks, id_pillar) minetest.register_craft({ @@ -144,11 +139,13 @@ PyuTestCore.make_liquid = function (nsname, sname, desc, groups, tiles) walkable = false, pointable = false, buildable_to = true, + is_ground_content = false, use_texture_alpha = "blend", paramtype = "light", drop = "", drowning = 1, liquidtype = liquidtype, + liquid_viscosity = 1, liquid_alternative_flowing = nsname.."_flowing", liquid_alternative_source = nsname.."_source" } @@ -159,34 +156,45 @@ PyuTestCore.make_liquid = function (nsname, sname, desc, groups, tiles) PyuTestCore.make_node(nsname.."_flowing", sname.."_flowing", "Flowing " .. desc, groups, tiles, make_liquid_flags("flowing")) end -PyuTestCore.make_colored_blocks("grass", "Grass", "grass.png", nil) -PyuTestCore.make_colored_blocks("dirt", "Dirt", "dirt.png", nil) -PyuTestCore.make_colored_blocks("stone", "Stone", "stone.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) -PyuTestCore.make_colored_blocks("iron", "Iron", "iron.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) -PyuTestCore.make_colored_blocks("wooden", "Wooden", "wood.png", nil) -PyuTestCore.make_colored_blocks("snow", "Snow", "snow.png", nil) -PyuTestCore.make_colored_blocks("sand", "Sand", "sand.png", nil) -PyuTestCore.make_colored_blocks("sandstone", "Sandstone", "sandstone.png", nil) -PyuTestCore.make_colored_blocks("ice", "Ice", "ice.png", nil) -PyuTestCore.make_colored_blocks("leaves", "Leaves", "leaves.png", nil) -PyuTestCore.make_colored_blocks("mushroom", "Mushroom", "mushroom.png", nil) -PyuTestCore.make_colored_blocks("mushroom_stem", "Mushroom Stem", "mushroom-stem.png", nil) -PyuTestCore.make_colored_blocks("mycelium", "Mycelium", "mycelium.png", nil) -PyuTestCore.make_colored_blocks("hellstone", "Hellstone", "hellstone.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) -PyuTestCore.make_colored_blocks("basalt", "Basalt", "basalt.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) -PyuTestCore.make_colored_blocks("obsidian", "Obsidian", "obsidian.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_FOREVER}) -PyuTestCore.make_colored_blocks("haybale", "Haybale", "haybale.png", nil) +PyuTestCore.make_building_blocks("grass", "Grass", "grass.png", nil, nil, {drop = "pyutest_core:dirt_block"}) +PyuTestCore.make_building_blocks("dirt", "Dirt", "dirt.png", nil) +PyuTestCore.make_building_blocks("stone", "Stone", "stone.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) +PyuTestCore.make_building_blocks("iron", "Iron", "iron.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) +PyuTestCore.make_building_blocks("wooden", "Wooden", "wood.png", nil) +PyuTestCore.make_building_blocks("snow", "Snow", "snow.png", nil) +PyuTestCore.make_building_blocks("sand", "Sand", "sand.png", nil) +PyuTestCore.make_building_blocks("sandstone", "Sandstone", "sandstone.png", nil) +PyuTestCore.make_building_blocks("ice", "Ice", "ice.png", nil) +PyuTestCore.make_building_blocks("leaves", "Leaves", "leaves.png", nil) +PyuTestCore.make_building_blocks("mushroom", "Mushroom", "mushroom.png", nil) +PyuTestCore.make_building_blocks("mushroom_stem", "Mushroom Stem", "mushroom-stem.png", nil) +PyuTestCore.make_building_blocks("mycelium", "Mycelium", "mycelium.png", nil) +PyuTestCore.make_building_blocks("hellstone", "Hellstone", "hellstone.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) +PyuTestCore.make_building_blocks("basalt", "Basalt", "basalt.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_LONG}) +PyuTestCore.make_building_blocks("obsidian", "Obsidian", "obsidian.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_FOREVER}) +PyuTestCore.make_building_blocks("haybale", "Haybale", "haybale.png", nil) +PyuTestCore.make_building_blocks("crying_obsidian", "Crying Obsidian", "crying-obsidian.png", nil, {block = PyuTestCore.BLOCK_BREAKABLE_FOREVER}) -PyuTestCore.make_colored_blocks("white", "White", "wool.png", "white") -PyuTestCore.make_colored_blocks("red", "Red", "wool.png", "red") -PyuTestCore.make_colored_blocks("orange", "Orange", "wool.png", "orange") -PyuTestCore.make_colored_blocks("yellow", "Yellow", "wool.png", "yellow") -PyuTestCore.make_colored_blocks("green", "Green", "wool.png", "green") -PyuTestCore.make_colored_blocks("blue", "Blue", "wool.png", "blue") -PyuTestCore.make_colored_blocks("purple", "Purple", "wool.png", "purple") -PyuTestCore.make_colored_blocks("black", "Black", "wool.png", "black") -PyuTestCore.make_colored_blocks("pink", "Pink", "wool.png", "hotpink") -PyuTestCore.make_colored_blocks("cherry", "Cherry", "wool.png", "lightpink") +PyuTestCore.make_building_blocks("color_white", "White", "wool.png", "white") +PyuTestCore.make_building_blocks("color_red", "Red", "wool.png", "red") +PyuTestCore.make_building_blocks("color_orange", "Orange", "wool.png", "orange") +PyuTestCore.make_building_blocks("color_yellow", "Yellow", "wool.png", "yellow") +PyuTestCore.make_building_blocks("color_green", "Green", "wool.png", "green") +PyuTestCore.make_building_blocks("color_blue", "Blue", "wool.png", "blue") +PyuTestCore.make_building_blocks("color_purple", "Purple", "wool.png", "purple") +PyuTestCore.make_building_blocks("color_black", "Black", "wool.png", "black") +PyuTestCore.make_building_blocks("color_pink", "Pink", "wool.png", "hotpink") +PyuTestCore.make_building_blocks("color_cherry", "Cherry", "wool.png", "lightpink") +PyuTestCore.make_building_blocks("color_brown", "Brown", "wool.png", "brown") +PyuTestCore.make_building_blocks("color_gray", "Gray", "wool.png", "gray") +PyuTestCore.make_building_blocks("color_teal", "Teal", "wool.png", "teal") +PyuTestCore.make_building_blocks("color_cyan", "Cyan", "wool.png", "cyan") +PyuTestCore.make_building_blocks("color_yellowgreen", "Yellow Green", "wool.png", "yellowgreen") +PyuTestCore.make_building_blocks("color_plum", "Plum", "wool.png", "plum") +PyuTestCore.make_building_blocks("color_gold", "Gold", "wool.png", "gold") +PyuTestCore.make_building_blocks("color_skyblue", "Sky Blue", "wool.png", "skyblue") +PyuTestCore.make_building_blocks("color_darkviolet", "Dark Violet", "wool.png", "darkviolet") +PyuTestCore.make_building_blocks("color_violet", "Violet", "wool.png", "violet") PyuTestCore.make_node("pyutest_core:light", "light", "Light", { snappy = 1, @@ -195,6 +203,10 @@ PyuTestCore.make_node("pyutest_core:light", "light", "Light", { }, { "light.png" }, { + drawtype = "torchlike", + walkable = false, + paramtype = "light", + sunlight_propagates = true, light_source = minetest.LIGHT_MAX, on_rightclick = function () if minetest.get_timeofday() >= 0.5 then @@ -216,7 +228,7 @@ PyuTestCore.make_node("pyutest_core:torch", "torch", "Torch", { walkable = false, drawtype = "torchlike", paramtype = "light", - inventory_image = "torch.png" + inventory_image = "torch.png", }) PyuTestCore.make_node("pyutest_core:sponge", "sponge", "Sponge", { @@ -272,6 +284,20 @@ PyuTestCore.make_node("pyutest_core:flower3", "blue_daisy", "Blue Daisy", { inventory_image = "flower3.png" }) +PyuTestCore.make_node("pyutest_core:flower4", "lavender", "Lavender", { + snappy = 1, + block = PyuTestCore.BLOCK_BREAKABLE_INSTANT, +}, {"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", "Deadbush", { snappy = 1, block = PyuTestCore.BLOCK_BREAKABLE_INSTANT @@ -285,6 +311,19 @@ PyuTestCore.make_node("pyutest_core:deadbush", "deadbush", "Deadbush", { inventory_image = "deadbush.png" }) +PyuTestCore.make_node("pyutest_core:grass_plant", "grass_plant", "Grass", { + snappy = 1, + block = PyuTestCore.BLOCK_BREAKABLE_INSTANT +}, {"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", "Tree Sapling", { snappy = 1, block = PyuTestCore.BLOCK_BREAKABLE_INSTANT @@ -298,9 +337,17 @@ PyuTestCore.make_node("pyutest_core:tree_sapling", "tree_sapling", "Tree Sapling inventory_image = "sapling.png", on_timer = function (pos) + local trees = { + "tree", + "tree2" + } + + math.randomseed(os.time()) + local selected_tree = trees[math.random(#trees)] + minetest.remove_node(pos) pos.y = pos.y - 1 - minetest.place_schematic(pos, PyuTestCore.get_schem_path("tree"), "random", nil, false, "place_center_x, place_center_z") + minetest.place_schematic(pos, PyuTestCore.get_schem_path(selected_tree), "random", nil, false, "place_center_x, place_center_z") end, on_rightclick = function (pos) @@ -369,6 +416,22 @@ PyuTestCore.make_node("pyutest_core:tnt", "tnt", "TNT", { end }) +PyuTestCore.make_node("pyutest_core:crate", "crate", "Crate", { + block = PyuTestCore.BLOCK_BREAKABLE_NORMAL +}, {"crate.png"}, { + on_rightclick = function (pos, node, clicker) + local barrel_name = string.format("crate_x%d_y%d_z%d", pos.x, pos.y, pos.z) + local inventory = minetest.get_inventory({type="detached", name = barrel_name}) + if inventory == nil then + inventory = minetest.create_detached_inventory(barrel_name) + inventory:set_size("main", 64) + inventory:set_width("main", 8) + + end + + end +}) + PyuTestCore.make_liquid("pyutest_core:water", "water", "Water", {}, {"water.png"}) PyuTestCore.make_liquid("pyutest_core:lava", "lava", "Lava", {}, {"lava.png"}) PyuTestCore.make_liquid("pyutest_core:oil", "oil", "Oil", {}, {"oil.png"}) diff --git a/mods/pyutest_core/crafts.lua b/mods/pyutest_core/crafts.lua index b4bb085..8fb945a 100644 --- a/mods/pyutest_core/crafts.lua +++ b/mods/pyutest_core/crafts.lua @@ -31,3 +31,11 @@ minetest.register_craft({ {"pyutest_core:torch", "pyutest_core:torch"} } }) + +minetest.register_craft({ + output = "pyutest_core:tnt 3", + recipe = { + {"pyutest_core:sand_block", "pyutest_core:gunpowder"}, + {"pyutest_core:gunpowder", "pyutest_core:sand_block"} + } +}) diff --git a/mods/pyutest_core/init.lua b/mods/pyutest_core/init.lua index 9738136..b61a319 100644 --- a/mods/pyutest_core/init.lua +++ b/mods/pyutest_core/init.lua @@ -8,6 +8,13 @@ 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 } } diff --git a/mods/pyutest_core/player.lua b/mods/pyutest_core/player.lua index 403274c..1e742b0 100644 --- a/mods/pyutest_core/player.lua +++ b/mods/pyutest_core/player.lua @@ -1,18 +1,3 @@ --- player privs -minetest.register_on_joinplayer(function(player) - minetest.set_player_privs(player:get_player_name(), { - interact = true, - shout = true, - fly = true, - fast = true, - noclip = true, - give = true, - teleport = true, - bring = true, - settime = true - }) -end) - -- player hand minetest.register_item(":", { type = "none", diff --git a/mods/pyutest_core/sounds/coin.ogg b/mods/pyutest_core/sounds/coin.ogg new file mode 100644 index 0000000000000000000000000000000000000000..6c4a8b782865a33122ac5bf51746e43ed4c98715 GIT binary patch literal 4359 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 Sn=J)&E`z75pUXO@geCx13sXe^ literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/textures/crying-obsidian.png b/mods/pyutest_core/textures/crying-obsidian.png new file mode 100644 index 0000000000000000000000000000000000000000..6455ebf993965697623e636af4a8517137bdc226 GIT binary patch literal 339 zcmV-Z0j&OsP)ixF4254Vpo69ZlGP>G?Uqjb|KE|R3tP!jSz>5q#jc0HoVRXN7Fi*Ar`&K2@>}f_$~ilKiBVl zeNC3c$4s#w>SsPQzSNCb^U}+(t!fS10h7ZA*q3dOFcp5v literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/textures/grass-plant.png b/mods/pyutest_core/textures/grass-plant.png new file mode 100644 index 0000000000000000000000000000000000000000..0ac1d950c6ff0fc9480253ffc4f5279a0cde37b4 GIT binary patch literal 246 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`dp%toLo9le6C_x#Fy4H<_upgT z!)oz6?|!onoW&`{G`V4R$C0*^f+hm%g%^H0A(j~2f0cCyk9*kRmNgP;A78TT`yJl+ z(U4`+_3FRJpK;BQXagHE{e9PgSFAa4j%E`C)g*SGcxErJFV74FhnJt9FClhZHqqtV zr7H(=3${Mpt@O|MZ|$iI?90mjtb5oIJXJ(l!00~&5sH6q}P~|Rjh&Xpd{9ab1{)3Q1)E^bBQS^F#lFs8) zMnXf YzV@qnOD9OoBme*a07*qoM6N<$g4Q2jEdT%j delta 80 zcmey(m^VSi%hc1wF~p)bc~3>q3wvhPhEAcgJV2mh&^B!um#5VF*!|A3;yqFZSqB~% iFw7HA$ejI7kAWdkoFk%Yx64EZAns<|LD$MhYsuDr~IO1>HMhM}U zYe_w*Dlx{F_YS|5nKe;A`GaW$0T7YnYR;Kb3INNpOm6`_XjgB%k)E^a*q8IfxSjw2 N002ovPDHLkV1k0URSy6F literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/textures/water.png b/mods/pyutest_core/textures/water.png index 3d5d93054e03b102280a6534ed617524b7a6471b..c7fd30a1428d780a83c73a2a386d6b75afd2f5ec 100644 GIT binary patch delta 240 zcmVgHa@0Andz)-@WbZdb>a5#K_n0MJ>9vmZ~gdc)sF%@ge?;$U6VL#X;2c zodQ|RWAQ;2AEfEK6$da*^Iw7upNUmjC=!d{i214jNC5Uk)@fZV;M)3^$&hSsY%vD_ znV2MU+#40a3hg@M+#A({R1|9+u2caCQc+S)504RcQ~5U$>@l(SOiDRR|P-ST5PU2OCZLIc0*M_MB7KI-KG`9X3qWa@fFg2IpmXjYj3VIzVc*^R?rmq++x;Ua zM!tS8YSFc|RAnK<;~D3{kMUnb*7^G-4x*;-6v$#8!H*LBC{5q3IDlzh{t|5XOsvX6 zkyr#r%vS|K0OeCaR2}S literal 0 HcmV?d00001 diff --git a/mods/pyutest_core/tools.lua b/mods/pyutest_core/tools.lua index 53f13cf..aa0cda7 100644 --- a/mods/pyutest_core/tools.lua +++ b/mods/pyutest_core/tools.lua @@ -51,10 +51,6 @@ PyuTestCore.make_tool("pyutest_core:pickaxe", "pickaxe", "Pickaxe", {}, "pickaxe } }) -PyuTestCore.make_item("pyutest_core:stick", "stick", "Stick", {}, "stick.png", { - stack_max = 99 -}) - PyuTestCore.make_tool("pyutest_core:bomb", "bomb", "Bomb", {}, "bomb.png", { on_use = function (_, user) if user == nil then @@ -64,3 +60,33 @@ PyuTestCore.make_tool("pyutest_core:bomb", "bomb", "Bomb", {}, "bomb.png", { PyuTestCore.create_explosion(pos, 2) end }) + +PyuTestCore.make_item("pyutest_core:stick", "stick", "Stick", {}, "stick.png", { + stack_max = 99 +}) + +PyuTestCore.make_item("pyutest_core:gunpowder", "gunpowder", "Gunpowder", {}, "powder.png", { + color = "dimgray", + stack_max = 99 +}) + +PyuTestCore.make_item("pyutest_core:ash", "ash", "Ash", {}, "powder.png", { + color = "gray", + stack_max = 99 +}) + +PyuTestCore.make_item("pyutest_core:sugar", "sugar", "Sugar", {}, "powder.png", { + stack_max = 99 +}) + +PyuTestCore.make_item("pyutest_core:coin", "coin", "Coin", {}, "coin.png", { + stack_max = 99, + on_secondary_use = function (_, user) + local pos = user:get_pos() + minetest.sound_play({name = "coin", gain = 1}, { + pos = pos + }) + + return nil + end +}) diff --git a/mods/pyutest_core/trees.lua b/mods/pyutest_core/trees.lua index 370cfe3..7573b6b 100644 --- a/mods/pyutest_core/trees.lua +++ b/mods/pyutest_core/trees.lua @@ -6,12 +6,23 @@ minetest.register_decoration({ biomes = {"forest", "grassland"}, y_max = PyuTestCore_BiomeTops.grassland, y_min = 1, - decoration = {"pyutest_core:flower", "pyutest_core:flower2", "pyutest_core:flower3"} + decoration = {"pyutest_core:flower", "pyutest_core:flower2", "pyutest_core:flower3", "pyutest_core:flower4"} }) minetest.register_decoration({ deco_type = "simple", - place_on = {"pyutest_core:dirt_block"}, + place_on = {"pyutest_core:grass_block"}, + sidelen = 16, + fill_ratio = 0.048, + biomes = {"grassland"}, + y_max = PyuTestCore_BiomeTops.grassland, + y_min = 1, + decoration = "pyutest_core:grass_plant" +}) + +minetest.register_decoration({ + deco_type = "simple", + place_on = {"pyutest_core:dirt_block", "pyutest_core:sand_block"}, sidelen = 16, fill_ratio = 0.019, biomes = {"wasteland", "desert"},