diff --git a/CHANGELOG.md b/CHANGELOG.md index 91f8c91..fb0aae3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +## [Nov 3rd - STILL UNDERDEVELOPMENT] Update: The "Another update with no special name" Update + +I should just start giving updates a version number to avoid naming updates. + +- Added various new sounds +- Give Fire an animated texture +- Added a Sky Dimension for people using `floatlands` mapgen setting in v7 + ## [Oct 20th - Nov 2nd] Update: The Something Update - Make some changes to world generation @@ -13,8 +21,8 @@ - Add Time Device, it is not craftable in Survival mode and is only for Creative mode. - Improve death messages - Added stats which can improve your defense and attack capabilities -- Defense stat is only applied when your health is greater than one fourth of it! -- Added upgrade runes which can be used to improve your defense and attack stats + - Defense stat is only applied when your health is greater than one fourth of it! + - Added upgrade runes which can be used to improve your defense and attack stats - Added buckets - Added beaches - Added various small overworld features diff --git a/mods/CORE/pyutest/damage.lua b/mods/CORE/pyutest/damage.lua new file mode 100644 index 0000000..cb728a9 --- /dev/null +++ b/mods/CORE/pyutest/damage.lua @@ -0,0 +1,23 @@ +PyuTest.deal_damage = function(target, damage, reason) + local hp = target:get_hp() + + if hp > 0 then + target:set_hp(hp - damage, reason) + end +end + +PyuTest.DAMAGE_TYPES = { + explosion = function (range) + return { + type = "set_hp", + _pyutest = { + type = "explosion", + range = range + } + } + end +} + +PyuTest.mt_damage_to_pyutest_damage = function(reason) + +end diff --git a/mods/CORE/pyutest/init.lua b/mods/CORE/pyutest/init.lua index d858c32..cb0069c 100644 --- a/mods/CORE/pyutest/init.lua +++ b/mods/CORE/pyutest/init.lua @@ -35,9 +35,10 @@ PyuTest.DEFAULT_EFFECTS = { PyuTest.WORLD_GRAVITY = minetest.settings:get("movement_gravity") -PyuTest.get_schem_path = function (name) +PyuTest.get_schematic_path = function (name) return minetest.get_modpath("pyutest") .. "/schematics/"..name..".mts" end local modpath = minetest.get_modpath("pyutest") +dofile(modpath.."/damage.lua") dofile(modpath.."/util.lua") diff --git a/mods/CORE/pyutest/sounds/pyutest-special1.ogg b/mods/CORE/pyutest/sounds/pyutest-special1.ogg new file mode 100644 index 0000000..9fbb409 Binary files /dev/null and b/mods/CORE/pyutest/sounds/pyutest-special1.ogg differ diff --git a/mods/CORE/pyutest/util.lua b/mods/CORE/pyutest/util.lua index 7766ff2..fee78ae 100644 --- a/mods/CORE/pyutest/util.lua +++ b/mods/CORE/pyutest/util.lua @@ -113,6 +113,7 @@ PyuTest.create_explosion = function (pos, range, rm_pos, dmg, damage_whitelist) v:punch(v, nil, { damage_groups = {fleshy = dmg} }, nil) + PyuTest.deal_damage(v, dmg, PyuTest.DAMAGE_TYPES.explosion(range)) end if damage_whitelist ~= nil then @@ -275,14 +276,6 @@ PyuTest.register_interval = function(fn, time) interval() end -PyuTest.deal_damage = function(target, damage, reason) - local hp = target:get_hp() - - if hp > 0 then - target:set_hp(hp - damage, reason) - end -end - PyuTest.give_item_or_drop = function(stack, inventory, listname, pos) local leftover = inventory:add_item(listname, stack) diff --git a/mods/ENTITIES/pyutest_entities/api.lua b/mods/ENTITIES/pyutest_entities/api.lua index 161234f..739da48 100644 --- a/mods/ENTITIES/pyutest_entities/api.lua +++ b/mods/ENTITIES/pyutest_entities/api.lua @@ -259,7 +259,11 @@ PyuTest.make_mob = function (name, properties, options) local pos = self.object:get_pos() for _, v in pairs(self.options.drops) do - minetest.add_item(pos, v) + local o = minetest.add_item(pos, v) + + if o then + o:add_velocity(vector.new(math.random(-2, 2), 5, math.random(-2, 2))) + end end end }, {__index = class})) diff --git a/mods/ENTITIES/pyutest_entities/init.lua b/mods/ENTITIES/pyutest_entities/init.lua index 7dc09d5..b01da66 100644 --- a/mods/ENTITIES/pyutest_entities/init.lua +++ b/mods/ENTITIES/pyutest_entities/init.lua @@ -28,4 +28,11 @@ PyuTest.make_mob("pyutest_entities:dummy", { "player.png", "player_back.png" }, nametag = "Dummy", -}, {}) +}, { + drops = { + "pyutest_tools:apple 3", + "pyutest_ores:diamond_shard 3", + "pyutest_ores:emerald_shard 3", + "pyutest_magic:windball 3" + } +}) diff --git a/mods/ENTITIES/pyutest_mobs/snowman.lua b/mods/ENTITIES/pyutest_mobs/snowman.lua index ac9fb90..9826083 100644 --- a/mods/ENTITIES/pyutest_mobs/snowman.lua +++ b/mods/ENTITIES/pyutest_mobs/snowman.lua @@ -9,7 +9,7 @@ mobs:register_arrow("pyutest_mobs:arrow_snowball", { visual_size = {x = 1, y = 1}, textures = {"pyutest-snowball.png"}, hit_node = function (self, pos) - PyuTest.create_explosion(pos, 1, false, 9, self.object, false) + PyuTest.create_explosion(pos, 1, false, 9, {self.object}) end, hit_player = snowball_hit_player, hit_mob = snowball_hit_player, diff --git a/mods/ITEMS/pyutest_blocks/api.lua b/mods/ITEMS/pyutest_blocks/api.lua index eae5ca2..5d48e0b 100644 --- a/mods/ITEMS/pyutest_blocks/api.lua +++ b/mods/ITEMS/pyutest_blocks/api.lua @@ -99,7 +99,7 @@ PyuTest.make_building_blocks = function(name, desc, tex, colortint, cgroups, ext }), drawtype = "nodebox", paramtype = "light", - paramtype2 = "facedir", + paramtype2 = "colorfacedir", node_box = PyuTest.NODE_BOXES.CARPET, sounds = PyuTest.make_node_sounds(), buildable_to = true, @@ -112,7 +112,7 @@ PyuTest.make_building_blocks = function(name, desc, tex, colortint, cgroups, ext groups = groups, drawtype = "nodebox", paramtype = "light", - paramtype2 = "facedir", + paramtype2 = "colorfacedir", node_box = PyuTest.NODE_BOXES.SLAB, sounds = PyuTest.make_node_sounds(), }, econf)) @@ -133,7 +133,7 @@ PyuTest.make_building_blocks = function(name, desc, tex, colortint, cgroups, ext groups = groups, drawtype = "nodebox", paramtype = "light", - paramtype2 = "facedir", + paramtype2 = "colorfacedir", node_box = PyuTest.NODE_BOXES.STAIRS, sounds = PyuTest.make_node_sounds(), }, econf)) diff --git a/mods/ITEMS/pyutest_blocks/basic.lua b/mods/ITEMS/pyutest_blocks/basic.lua index 35db89c..50f273a 100644 --- a/mods/ITEMS/pyutest_blocks/basic.lua +++ b/mods/ITEMS/pyutest_blocks/basic.lua @@ -144,7 +144,6 @@ PyuTest.make_building_blocks("pyutest_blocks:tuff_bricks", "Tuff Bricks", { cracky = PyuTest.BLOCK_NORMAL, }, { is_ground_content = false, - paramtype2 = "color", }) PyuTest.make_building_blocks("pyutest_blocks:sandstone", "Sandstone", { "pyutest-sandstone.png" }, nil, { diff --git a/mods/ITEMS/pyutest_blocks/special.lua b/mods/ITEMS/pyutest_blocks/special.lua index 988688a..97695bc 100644 --- a/mods/ITEMS/pyutest_blocks/special.lua +++ b/mods/ITEMS/pyutest_blocks/special.lua @@ -68,7 +68,17 @@ PyuTest.make_node("pyutest_blocks:fire", "Fire", { dig_immediate = 1, oddly_breakable_by_hand = PyuTest.BLOCK_FAST, emits_heat = 1 -}, { "pyutest-fire.png" }, { +}, { + { + name = "pyutest-fire-animated.png", + animation = { + type = "vertical_frames", + aspect_w = 16, + aspect_h = 16, + length = 1 + } + } +}, { drawtype = "firelike", walkable = false, buildable_to = true, @@ -159,7 +169,8 @@ PyuTest.make_node("pyutest_blocks:workbench", "Workbench", { }) PyuTest.make_node("pyutest_blocks:ladder", "Ladder", { - dig_immediate = 1 + dig_immediate = 1, + oddly_breakable_by_hand = PyuTest.BLOCK_FAST }, { "pyutest-ladder.png" }, { drawtype = "signlike", paramtype = "light", diff --git a/mods/ITEMS/pyutest_crafts/init.lua b/mods/ITEMS/pyutest_crafts/init.lua index 8da3d5d..ce3b232 100644 --- a/mods/ITEMS/pyutest_crafts/init.lua +++ b/mods/ITEMS/pyutest_crafts/init.lua @@ -268,6 +268,15 @@ minetest.register_craft({ } }) +minetest.register_craft({ + output = "pyutest_blocks:ladder 16", + recipe = { + {"pyutest_tools:stick", "", "pyutest_tools:stick"}, + {"pyutest_tools:stick", "pyutest_tools:stick", "pyutest_tools:stick"}, + {"pyutest_tools:stick", "", "pyutest_tools:stick"} + } +}) + minetest.register_craft({ output = "pyutest_tools:wheat 4", recipe = { diff --git a/mods/ITEMS/pyutest_tools/tools.lua b/mods/ITEMS/pyutest_tools/tools.lua index 953a9c2..b825f65 100644 --- a/mods/ITEMS/pyutest_tools/tools.lua +++ b/mods/ITEMS/pyutest_tools/tools.lua @@ -170,7 +170,7 @@ PyuTest.make_item("pyutest_tools:bomb", "Bomb", {}, "pyutest-bomb.png", { return end local pos = user:get_pos() - PyuTest.create_explosion(pos, 2, false, 6, user) + PyuTest.create_explosion(pos, 2, false, 6, {user}) local stack = user:get_wielded_item() stack:set_count(stack:get_count() - 1) diff --git a/mods/PLAYER/pyutest_cmds/fun.lua b/mods/PLAYER/pyutest_cmds/fun.lua index 3189556..c359701 100644 --- a/mods/PLAYER/pyutest_cmds/fun.lua +++ b/mods/PLAYER/pyutest_cmds/fun.lua @@ -17,7 +17,7 @@ minetest.register_chatcommand("explode", { return false, "Please use a number for the range." end - PyuTest.create_explosion(player:get_pos(), range, false, range, player, true) + PyuTest.create_explosion(player:get_pos(), range, false, range, {player}) end }) diff --git a/mods/PLAYER/pyutest_cmds/worldedit.lua b/mods/PLAYER/pyutest_cmds/worldedit.lua index 28ade16..63454ad 100644 --- a/mods/PLAYER/pyutest_cmds/worldedit.lua +++ b/mods/PLAYER/pyutest_cmds/worldedit.lua @@ -53,7 +53,7 @@ minetest.register_chatcommand("place", { func = function(name, param) local player = minetest.get_player_by_name(name) minetest.place_schematic(player:get_pos(), - PyuTest.get_schem_path(param), + PyuTest.get_schematic_path(param), "random", nil, false, @@ -61,3 +61,23 @@ minetest.register_chatcommand("place", { ) end }) + +minetest.register_chatcommand("drain", { + params = "", + description = "Drain all liquid in RANGE", + privs = { + builder = true + }, + func = function (name, param) + local player = minetest.get_player_by_name(name) + local range = tonumber(param) or 1 + + PyuTest.dorange(player:get_pos(), range, function (p) + local node = minetest.get_node(p) + + if minetest.get_item_group(node.name, "liquid") ~= 0 then + minetest.remove_node(p) + end + end) + end +}) diff --git a/mods/WORLD/pyutest_mapgen/api.lua b/mods/WORLD/pyutest_mapgen/api.lua index fdf774e..79162e8 100644 --- a/mods/WORLD/pyutest_mapgen/api.lua +++ b/mods/WORLD/pyutest_mapgen/api.lua @@ -32,7 +32,7 @@ PyuTest.register_structure = function (name, schematic, def) nodenames = {id}, action = function (pos, node) minetest.remove_node(pos) - minetest.place_schematic(pos, PyuTest.get_schem_path(schematic), def.rotation or "random", def.replacements or {}, def.force_placement or true, def.flags or "place_center_x, place_center_z") + minetest.place_schematic(pos, PyuTest.get_schematic_path(schematic), def.rotation or "random", def.replacements or {}, def.force_placement or true, def.flags or "place_center_x, place_center_z") end }) end @@ -153,6 +153,9 @@ PyuTest.register_overworld_biome = function(name, type, opts, only_base) nopts["node_riverbed"] = nopts["node_riverbed"] or "pyutest_blocks:gravel_block" nopts["node_sand"] = nopts["node_sand"] or "pyutest_blocks:sand_block" nopts["node_sandstone"] = nopts["node_sandstone"] or "pyutest_blocks:sandstone_block" + + nopts["_pyutest_biome_flowering"] = nopts["_pyutest_biome_flowering"] or false + nopts["_pyutest_biome_flowering_extra"] = nopts["_pyutest_biome_flowering_extra"] or false if nopts["enable_beaches"] == nil then nopts["enable_beaches"] = true diff --git a/mods/WORLD/pyutest_ores/api.lua b/mods/WORLD/pyutest_ores/api.lua index 85556dd..5665cfe 100644 --- a/mods/WORLD/pyutest_ores/api.lua +++ b/mods/WORLD/pyutest_ores/api.lua @@ -71,6 +71,8 @@ PyuTest.make_ore = function(id, desc, options) y_max = conf.y_max, y_min = conf.y_min, }) + + return conf end PyuTest.make_ore_and_item = function(id, desc, item_id_suffix, item_description_suffix, options) @@ -108,8 +110,8 @@ PyuTest.make_ore_and_item = function(id, desc, item_id_suffix, item_description_ local iid = id.."_"..item_id_suffix local rid = conf.make_raw and id.."_raw" or nil - PyuTest.make_ore(oid, desc .. " Ore", PyuTest.util.tableconcat(conf.ore_options, { - ore_drop = conf.ore_drop or (rid or iid) + local ore_conf = PyuTest.make_ore(oid, desc .. " Ore", PyuTest.util.tableconcat(conf.ore_options, { + ore_drop = conf.ore_options.ore_drop or (rid or iid) })) minetest.register_craftitem(iid, PyuTest.util.tableconcat({ @@ -140,7 +142,7 @@ PyuTest.make_ore_and_item = function(id, desc, item_id_suffix, item_description_ end PyuTest.make_building_blocks(id, desc, conf.block_tiles, conf.block_color, PyuTest.util.tableconcat({ - cracky = conf.ore_strength + cracky = ore_conf.ore_strength }, conf.block_groups), PyuTest.util.tableconcat(conf.block_conf, { overlay_tiles = conf.block_shiny and { "pyutest-shiny-metal-overlay.png" diff --git a/mods/WORLD/pyutest_ores/init.lua b/mods/WORLD/pyutest_ores/init.lua index 9683cc2..e224b4c 100644 --- a/mods/WORLD/pyutest_ores/init.lua +++ b/mods/WORLD/pyutest_ores/init.lua @@ -66,7 +66,8 @@ PyuTest.ORE_STONES = { "pyutest_blocks:granite_block", "pyutest_blocks:andesite_block", "pyutest_blocks:diorite_block", - "pyutest_blocks:tuff_block" + "pyutest_blocks:tuff_block", + "pyutest_blocks:calcite_block" } minetest.register_ore({ diff --git a/mods/WORLD/pyutest_overworld/biomes.lua b/mods/WORLD/pyutest_overworld/biomes.lua index 4627a41..53386cf 100644 --- a/mods/WORLD/pyutest_overworld/biomes.lua +++ b/mods/WORLD/pyutest_overworld/biomes.lua @@ -14,7 +14,7 @@ if PyuTest.is_flat() then end -- Plains like biomes -PyuTest.register_overworld_biome("grassland", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("Grassland", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -27,7 +27,7 @@ PyuTest.register_overworld_biome("grassland", PyuTest.BIOME_TYPES.NORMAL, { _pyutest_biome_flowering = true }) -PyuTest.register_overworld_biome("desert", PyuTest.BIOME_TYPES.HOT, { +PyuTest.register_overworld_biome("Desert", PyuTest.BIOME_TYPES.HOT, { node_top = "pyutest_blocks:sand_block", node_filler = "pyutest_blocks:sandstone_block", node_riverbed = "pyutest_blocks:sand_block", @@ -41,7 +41,7 @@ PyuTest.register_overworld_biome("desert", PyuTest.BIOME_TYPES.HOT, { enable_beaches = false }) -PyuTest.register_overworld_biome("frozen_plains", PyuTest.BIOME_TYPES.COLD, { +PyuTest.register_overworld_biome("FrozenPlains", PyuTest.BIOME_TYPES.COLD, { node_dust = "pyutest_blocks:snow_carpet", node_top = "pyutest_blocks:snow_block", node_filler = "pyutest_blocks:snow_block", @@ -56,7 +56,7 @@ PyuTest.register_overworld_biome("frozen_plains", PyuTest.BIOME_TYPES.COLD, { humidity_point = 60 }) -PyuTest.register_overworld_biome("savanna", PyuTest.BIOME_TYPES.WARM, { +PyuTest.register_overworld_biome("Savanna", PyuTest.BIOME_TYPES.WARM, { node_top = "pyutest_grass:savanna_grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -68,7 +68,7 @@ PyuTest.register_overworld_biome("savanna", PyuTest.BIOME_TYPES.WARM, { }) -- Forest like biomes -PyuTest.register_overworld_biome("forest", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("Forest", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:dark_grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -81,7 +81,7 @@ PyuTest.register_overworld_biome("forest", PyuTest.BIOME_TYPES.NORMAL, { _pyutest_biome_flowering = true }) -PyuTest.register_overworld_biome("mushroom_fields", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("MushroomFields", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_blocks:mycelium_block", node_filler = "pyutest_blocks:dirt_block", @@ -95,7 +95,7 @@ PyuTest.register_overworld_biome("mushroom_fields", PyuTest.BIOME_TYPES.NORMAL, _pyutest_fog_distance = 40, }) -PyuTest.register_overworld_biome("large_mushroom_forest", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("LargeMushroomForest", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_blocks:mycelium_block", node_filler = "pyutest_blocks:dirt_block", @@ -109,7 +109,7 @@ PyuTest.register_overworld_biome("large_mushroom_forest", PyuTest.BIOME_TYPES.NO _pyutest_fog_distance = 40, }) -PyuTest.register_overworld_biome("snowy_forest", PyuTest.BIOME_TYPES.COLD, { +PyuTest.register_overworld_biome("SnowyForest", PyuTest.BIOME_TYPES.COLD, { node_dust = "pyutest_blocks:snow_carpet", node_top = "pyutest_blocks:snow_block", node_filler = "pyutest_blocks:dirt_block", @@ -124,7 +124,7 @@ PyuTest.register_overworld_biome("snowy_forest", PyuTest.BIOME_TYPES.COLD, { humidity_point = 60 }) -PyuTest.register_overworld_biome("taiga", PyuTest.BIOME_TYPES.CHILLY, { +PyuTest.register_overworld_biome("Taiga", PyuTest.BIOME_TYPES.CHILLY, { node_top = "pyutest_grass:dark_grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -137,7 +137,7 @@ PyuTest.register_overworld_biome("taiga", PyuTest.BIOME_TYPES.CHILLY, { _pyutest_biome_flowering = true }) -PyuTest.register_overworld_biome("cherry_grove", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("CherryGrove", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -152,7 +152,7 @@ PyuTest.register_overworld_biome("cherry_grove", PyuTest.BIOME_TYPES.NORMAL, { }) -PyuTest.register_overworld_biome("birch_forest", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("BirchForest", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -165,7 +165,7 @@ PyuTest.register_overworld_biome("birch_forest", PyuTest.BIOME_TYPES.NORMAL, { _pyutest_biome_flowering = true }) -PyuTest.register_overworld_biome("old_growth_birch_forest", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("OldGrowthBirchForest", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -179,7 +179,7 @@ PyuTest.register_overworld_biome("old_growth_birch_forest", PyuTest.BIOME_TYPES. _pyutest_biome_flowering_extra = true }) -PyuTest.register_overworld_biome("aspen_forest", PyuTest.BIOME_TYPES.CHILLY, { +PyuTest.register_overworld_biome("AspenForest", PyuTest.BIOME_TYPES.CHILLY, { node_top = "pyutest_grass:aspen_grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -193,7 +193,7 @@ PyuTest.register_overworld_biome("aspen_forest", PyuTest.BIOME_TYPES.CHILLY, { _pyutest_fog_distance = 40, }) -PyuTest.register_overworld_biome("redwood_forest", PyuTest.BIOME_TYPES.CHILLY, { +PyuTest.register_overworld_biome("RedwoodForest", PyuTest.BIOME_TYPES.CHILLY, { node_top = "pyutest_blocks:podzol_block", node_filler = "pyutest_blocks:podzol_block", @@ -208,7 +208,7 @@ PyuTest.register_overworld_biome("redwood_forest", PyuTest.BIOME_TYPES.CHILLY, { }) -- Marsh biomes -PyuTest.register_overworld_biome("swamp", PyuTest.BIOME_TYPES.WETLAND, { +PyuTest.register_overworld_biome("Swamp", PyuTest.BIOME_TYPES.WETLAND, { node_top = "pyutest_grass:swampy_grass_block", node_filler = "pyutest_blocks:dirt_block", @@ -224,7 +224,7 @@ PyuTest.register_overworld_biome("swamp", PyuTest.BIOME_TYPES.WETLAND, { -- Mountainous biomes -PyuTest.register_overworld_biome("stony_mountains", PyuTest.BIOME_TYPES.WARM, { +PyuTest.register_overworld_biome("StonyMountains", PyuTest.BIOME_TYPES.WARM, { node_top = "pyutest_blocks:stone_block", node_filler = "pyutest_blocks:stone_block", @@ -235,7 +235,7 @@ PyuTest.register_overworld_biome("stony_mountains", PyuTest.BIOME_TYPES.WARM, { humidity_point = 10 }, true) -PyuTest.register_overworld_biome("desert_mountains", PyuTest.BIOME_TYPES.HOT, { +PyuTest.register_overworld_biome("DesertMountains", PyuTest.BIOME_TYPES.HOT, { node_top = "pyutest_blocks:sand_block", node_filler = "pyutest_blocks:sandstone_block", @@ -246,7 +246,7 @@ PyuTest.register_overworld_biome("desert_mountains", PyuTest.BIOME_TYPES.HOT, { humidity_point = 5 }, true) -PyuTest.register_overworld_biome("snowy_mountains", PyuTest.BIOME_TYPES.COLD, { +PyuTest.register_overworld_biome("SnowyMountains", PyuTest.BIOME_TYPES.COLD, { node_dust = "pyutest_blocks:snow_carpet", node_top = "pyutest_blocks:snow_block", node_filler = "pyutest_blocks:snow_block", @@ -258,7 +258,7 @@ PyuTest.register_overworld_biome("snowy_mountains", PyuTest.BIOME_TYPES.COLD, { humidity_point = 60 }, true) -PyuTest.register_overworld_biome("ice_spikes", PyuTest.BIOME_TYPES.COLD, { +PyuTest.register_overworld_biome("IceSpikes", PyuTest.BIOME_TYPES.COLD, { node_top = "pyutest_blocks:ice_block", node_filler = "pyutest_blocks:ice_block", @@ -272,7 +272,7 @@ PyuTest.register_overworld_biome("ice_spikes", PyuTest.BIOME_TYPES.COLD, { humidity_point = 60 }) -PyuTest.register_overworld_biome("meadow", PyuTest.BIOME_TYPES.NORMAL, { +PyuTest.register_overworld_biome("Meadow", PyuTest.BIOME_TYPES.NORMAL, { node_top = "pyutest_grass:dark_grass_block", node_filler = "pyutest_blocks:dirt_block", depth_filler = 4, diff --git a/mods/WORLD/pyutest_overworld/mod.conf b/mods/WORLD/pyutest_overworld/mod.conf index 6bd0ee3..d81086b 100644 --- a/mods/WORLD/pyutest_overworld/mod.conf +++ b/mods/WORLD/pyutest_overworld/mod.conf @@ -1 +1 @@ -depends = pyutest_mapgen,pyutest_blocks,pyutest_flowers,pyutest_lootboxes,pyutest_ores +depends = pyutest_mapgen,pyutest_blocks,pyutest_flowers,pyutest_lootboxes,pyutest_ores,pyutest_worlds diff --git a/mods/WORLD/pyutest_overworld/structures.lua b/mods/WORLD/pyutest_overworld/structures.lua index 8b1f397..73278a8 100644 --- a/mods/WORLD/pyutest_overworld/structures.lua +++ b/mods/WORLD/pyutest_overworld/structures.lua @@ -9,7 +9,7 @@ minetest.register_decoration({ PyuTest.register_structure("igloo", "Igloo", { place_on = {"pyutest_blocks:snow_block"}, fill_ratio = 0.00004, - biomes = {"frozen_plains"}, + biomes = {"FrozenPlains"}, rotation = "random", flags = "place_center_x, place_center_z", place_offset_y = 1 @@ -18,7 +18,7 @@ PyuTest.register_structure("igloo", "Igloo", { PyuTest.register_structure("desert_well", "DesertWell", { place_on = {"pyutest_blocks:sand_block"}, fill_ratio = 0.00006, - biomes = {"desert"}, + biomes = {"Desert"}, rotation = "random" }) @@ -28,7 +28,7 @@ PyuTest.register_structure("ice_spike", "IceSpike", { "pyutest_blocks:ice_block", }, biomes = { - "ice_spikes", + "IceSpikes", }, }) diff --git a/mods/WORLD/pyutest_overworld/trees.lua b/mods/WORLD/pyutest_overworld/trees.lua index cbbd6e8..88c68fa 100644 --- a/mods/WORLD/pyutest_overworld/trees.lua +++ b/mods/WORLD/pyutest_overworld/trees.lua @@ -22,7 +22,7 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.048, - biomes = {"grassland"}, + biomes = {"Grassland"}, decoration = "pyutest_grass:grass_plant" }) @@ -31,7 +31,7 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.0018, - biomes = {"grassland"}, + biomes = {"Grassland"}, decoration = "pyutest_blocks:haybale_block" }) @@ -40,7 +40,7 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:dirt_block", "pyutest_blocks:sand_block"}, sidelen = 16, fill_ratio = 0.019, - biomes = {"desert"}, + biomes = {"Desert"}, decoration = "pyutest_flowers:deadbush" }) @@ -49,7 +49,7 @@ minetest.register_decoration({ sidelen = 16, fill_ratio = 0.03, place_on = {"pyutest_blocks:water_source"}, - biomes = {"swamp", "swamp_ocean"}, + biomes = {"Swamp", "Swamp_ocean"}, y_max = PyuTest.OVERWORLD_TOP, y_min = 0, decoration = "pyutest_flowers:lilypad", @@ -76,8 +76,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.03, - biomes = {"forest"}, - schematic = PyuTest.get_schem_path("Tree"), + biomes = {"Forest"}, + schematic = PyuTest.get_schematic_path("Tree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -88,8 +88,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.00045, - biomes = {"grassland"}, - schematic = PyuTest.get_schem_path("Tree"), + biomes = {"Grassland"}, + schematic = PyuTest.get_schematic_path("Tree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -100,8 +100,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.00085, - biomes = {"savanna"}, - schematic = PyuTest.get_schem_path("SavannaTree"), + biomes = {"Savanna"}, + schematic = PyuTest.get_schematic_path("SavannaTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true, @@ -113,8 +113,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:mycelium_block"}, sidelen = 16, fill_ratio = 0.003, - biomes = {"mushroom_fields", "large_mushroom_forest"}, - schematic = PyuTest.get_schem_path("Mushroom"), + biomes = {"MushroomFields", "LargeMushroomForest"}, + schematic = PyuTest.get_schematic_path("Mushroom"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true, @@ -126,8 +126,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.005, - biomes = {"taiga"}, - schematic = PyuTest.get_schem_path("TaigaTree"), + biomes = {"Taiga"}, + schematic = PyuTest.get_schematic_path("TaigaTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true, @@ -139,8 +139,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.03, - biomes = {"birch_forest"}, - schematic = PyuTest.get_schem_path("BirchTree"), + biomes = {"BirchForest"}, + schematic = PyuTest.get_schematic_path("BirchTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -151,8 +151,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.02, - biomes = {"birch_forest", "old_growth_birch_forest"}, - schematic = PyuTest.get_schem_path("TallBirchTree"), + biomes = {"BirchForest", "OldGrowthBirchForest"}, + schematic = PyuTest.get_schematic_path("TallBirchTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -163,8 +163,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.005, - biomes = {"cherry_grove"}, - schematic = PyuTest.get_schem_path("CherryTree"), + biomes = {"CherryGrove"}, + schematic = PyuTest.get_schematic_path("CherryTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true, @@ -176,8 +176,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:snow_block"}, sidelen = 16, fill_ratio = 0.004, - biomes = {"snowy_forest"}, - schematic = PyuTest.get_schem_path("SnowyTree1"), + biomes = {"SnowyForest"}, + schematic = PyuTest.get_schematic_path("SnowyTree1"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -188,8 +188,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:snow_block"}, sidelen = 16, fill_ratio = 0.004, - biomes = {"snowy_forest"}, - schematic = PyuTest.get_schem_path("SnowyTree2"), + biomes = {"SnowyForest"}, + schematic = PyuTest.get_schematic_path("SnowyTree2"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true, @@ -201,8 +201,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.004, - biomes = {"swamp"}, - schematic = PyuTest.get_schem_path("SwampTree"), + biomes = {"Swamp"}, + schematic = PyuTest.get_schematic_path("SwampTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -213,8 +213,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.004, - biomes = {"old_growth_birch_forest"}, - schematic = PyuTest.get_schem_path("VeryTallBirchTree"), + biomes = {"OldGrowthBirchForest"}, + schematic = PyuTest.get_schematic_path("VeryTallBirchTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -225,8 +225,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.016, - biomes = {"aspen_forest"}, - schematic = PyuTest.get_schem_path("AspenTree1"), + biomes = {"AspenForest"}, + schematic = PyuTest.get_schematic_path("AspenTree1"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -237,8 +237,8 @@ minetest.register_decoration({ place_on = {"group:grass"}, sidelen = 16, fill_ratio = 0.008, - biomes = {"aspen_forest"}, - schematic = PyuTest.get_schem_path("AspenTree2"), + biomes = {"AspenForest"}, + schematic = PyuTest.get_schematic_path("AspenTree2"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -249,8 +249,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:podzol_block"}, sidelen = 16, fill_ratio = 0.019, - biomes = {"redwood_forest"}, - schematic = PyuTest.get_schem_path("RedwoodTree"), + biomes = {"RedwoodForest"}, + schematic = PyuTest.get_schematic_path("RedwoodTree"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -261,8 +261,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:mycelium_block"}, sidelen = 16, fill_ratio = 0.006, - biomes = {"large_mushroom_forest"}, - schematic = PyuTest.get_schem_path("TallMushroom"), + biomes = {"LargeMushroomForest"}, + schematic = PyuTest.get_schematic_path("TallMushroom"), rotation = "random", flags = "place_center_x, place_center_z", force_placement = true @@ -273,8 +273,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:mycelium_block"}, sidelen = 16, fill_ratio = 0.002, - biomes = {"large_mushroom_forest"}, - schematic = PyuTest.get_schem_path("SmallMushroom"), + biomes = {"LargeMushroomForest"}, + schematic = PyuTest.get_schematic_path("SmallMushroom"), rotation = "random", flags = "place_center_x, place_center_z", place_offset_y = 1, @@ -286,8 +286,8 @@ minetest.register_decoration({ place_on = {"pyutest_blocks:mycelium_block"}, sidelen = 16, fill_ratio = 0.007, - biomes = {"large_mushroom_forest"}, - schematic = PyuTest.get_schem_path("FallenMushroom"), + biomes = {"LargeMushroomForest"}, + schematic = PyuTest.get_schematic_path("FallenMushroom"), rotation = "random", flags = "place_center_x, place_center_z", place_offset_y = 1, diff --git a/mods/WORLD/pyutest_worlds/api.lua b/mods/WORLD/pyutest_worlds/api.lua index 26bb0e5..b56ff13 100644 --- a/mods/WORLD/pyutest_worlds/api.lua +++ b/mods/WORLD/pyutest_worlds/api.lua @@ -49,7 +49,7 @@ PyuTest.register_world = function (options) biome_names = {} } - function World:register_biome(name, type, opts) + function World:register_biome(name, type, opts, overworld) local newname = conf.name .. "-" .. name if opts["_pyutest_sky"] == nil then @@ -60,14 +60,14 @@ PyuTest.register_world = function (options) opts["_pyutest_sky_base_color"] = opts["_pyutest_sky_base_color"] or conf.sky_color or "#000000" PyuTest.register_overworld_biome(newname, type, PyuTest.util.tableconcat(opts, { - depth_top = 0, - depth_filler = 0, - y_max = conf.y_max, - y_min = conf.y_min, + depth_top = opts.depth_top or 0, + depth_filler = opts.depth_filler or 0, + y_max = opts.y_max or conf.y_max, + y_min = opts.y_min or conf.y_min, node_water = opts.node_water or "air", node_river_water = opts.node_water or "air", node_cave_liquid = opts.node_water or "air", - }), true) + }), not overworld) self.biome_names[#self.biome_names+1] = newname return name diff --git a/mods/WORLD/pyutest_worlds/ice.lua b/mods/WORLD/pyutest_worlds/ice.lua index 3bf2368..8903fb0 100644 --- a/mods/WORLD/pyutest_worlds/ice.lua +++ b/mods/WORLD/pyutest_worlds/ice.lua @@ -1,12 +1,12 @@ PyuTest.IceWorld = PyuTest.register_world({ - name = "ice_world", + name = "IceWorld", y_max = -1000, y_min = -1999, sky_color = "#555588" }) PyuTest.IceWorld:create_token("pyutest_worlds:ice_world_token", "Ice World", "#cbdbfc", "pyutest_blocks:ice_block") -local icy_cavern = PyuTest.IceWorld:register_biome("icy_cavern", PyuTest.BIOME_TYPES.COLD, { +local icy_cavern = PyuTest.IceWorld:register_biome("IcyCavern", PyuTest.BIOME_TYPES.COLD, { node_stone = "pyutest_blocks:ice_block", heat_point = -10, humidity_point = 0 diff --git a/mods/WORLD/pyutest_worlds/init.lua b/mods/WORLD/pyutest_worlds/init.lua index c3f1f41..f716ce0 100644 --- a/mods/WORLD/pyutest_worlds/init.lua +++ b/mods/WORLD/pyutest_worlds/init.lua @@ -4,3 +4,4 @@ dofile(modpath.."/api.lua") dofile(modpath.."/ice.lua") dofile(modpath.."/lava.lua") +dofile(modpath.."/sky.lua") diff --git a/mods/WORLD/pyutest_worlds/lava.lua b/mods/WORLD/pyutest_worlds/lava.lua index 036f2bb..9d1d727 100644 --- a/mods/WORLD/pyutest_worlds/lava.lua +++ b/mods/WORLD/pyutest_worlds/lava.lua @@ -1,5 +1,5 @@ PyuTest.LavaWorld = PyuTest.register_world({ - name = "lava_world", + name = "LavaWorld", y_max = -3000, y_min = -3999, sky_color = "#330000" @@ -11,13 +11,13 @@ local node_stones = { "pyutest_blocks:basalt_block" } -local lava_cavern = PyuTest.LavaWorld:register_biome("lava_cavern", PyuTest.BIOME_TYPES.HOT, { +local lava_cavern = PyuTest.LavaWorld:register_biome("LavaCavern", PyuTest.BIOME_TYPES.HOT, { node_stone = "pyutest_blocks:molten_rock_block", heat_point = 100, humidity_point = 0, }) -local basalt_volcano = PyuTest.LavaWorld:register_biome("basalt_volcano", PyuTest.BIOME_TYPES.HOT, { +local basalt_volcano = PyuTest.LavaWorld:register_biome("BasaltVolcano", PyuTest.BIOME_TYPES.HOT, { node_stone = "pyutest_blocks:basalt_block", heat_point = 100, humidity_point = 0, diff --git a/mods/WORLD/pyutest_worlds/sky.lua b/mods/WORLD/pyutest_worlds/sky.lua new file mode 100644 index 0000000..a6fd9a6 --- /dev/null +++ b/mods/WORLD/pyutest_worlds/sky.lua @@ -0,0 +1,25 @@ +PyuTest.SkyWorld = PyuTest.register_world({ + name = "SkyWorld", + y_max = 4096, + y_min = 1024, + sky_color = "#8888cc" +}) +PyuTest.SkyWorld:create_token("pyutest_worlds:sky_world_token", "Sky World", "#ffffff", "pyutest_magic:windball") + +PyuTest.SkyWorld:register_biome("SkyMeadow", PyuTest.BIOME_TYPES.NORMAL, { + node_top = "pyutest_grass:dark_grass_block", + depth_top = 1, + node_filler = "pyutest_blocks:dirt_block", + depth_filler = 3, + node_stone = "pyutest_blocks:stone_block", + heat_point = 50, + humidity_point = 50, + _pyutest_flowering = true, + _pyutest_extra_flowering = true +}) + +PyuTest.SkyWorld:register_biome("CalciteGrove", PyuTest.BIOME_TYPES.NORMAL, { + node_stone = "pyutest_blocks:calcite_block", + heat_point = 50, + humidity_point = 50, +}) diff --git a/textures/pyutest-coin.png b/textures/pyutest-coin.png index b2ff957..ea61f6c 100644 Binary files a/textures/pyutest-coin.png and b/textures/pyutest-coin.png differ diff --git a/textures/pyutest-fire-animated.png b/textures/pyutest-fire-animated.png new file mode 100644 index 0000000..97a8be7 Binary files /dev/null and b/textures/pyutest-fire-animated.png differ