diff --git a/goals.txt b/goals.txt index ef303ba..31d5bda 100644 --- a/goals.txt +++ b/goals.txt @@ -36,4 +36,11 @@ GOALS: # make drinks replenish stamina maybe +# diving outfit that slows down losing breath, or, stops you from losing breath while damaging suit over time + +# marijuana mod which allows player's to consume it, bongs, pipes, edibles, joints, different intakes do different things +#### + +# make lucky block spawn in the world + ]]-- diff --git a/mods/environment/sea/seaplants/init.lua b/mods/environment/sea/seaplants/init.lua index b9bc837..e6fd9e0 100644 --- a/mods/environment/sea/seaplants/init.lua +++ b/mods/environment/sea/seaplants/init.lua @@ -218,8 +218,20 @@ minetest.register_craft({ }) --- SEAPLANTS SAND AND DIRT GENERATION +-- SEAPLANTS GENERATION +minetest.register_ore({ + ore_type = "scatter", + ore = "moreblocks:super_glow_glass", + wherein = "default:water_source", + clust_scarcity = 8*8*8, + clust_num_ores = 8, + clust_size = 3, + height_min = -31000, + height_max = 64554, +}) + +--[[ minetest.register_ore({ ore_type = "scatter", @@ -536,4 +548,5 @@ minetest.register_alias("seaplants:chewstickgreen","seaplants:kelpgreen") minetest.register_alias("seaplants:chewstickbrown","seaplants:kelpbrown") minetest.register_alias("seaplants:leavysnackgreen","seaplants:seagrassgreen") minetest.register_alias("seaplants:leavysnackblue","seaplants:seagrassred") -minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") \ No newline at end of file +minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix") +]]-- diff --git a/mods/food/weed/VERSION b/mods/food/weed/VERSION new file mode 100644 index 0000000..4e379d2 --- /dev/null +++ b/mods/food/weed/VERSION @@ -0,0 +1 @@ +0.0.2 diff --git a/mods/food/weed/depends.txt b/mods/food/weed/depends.txt new file mode 100644 index 0000000..c99d85f --- /dev/null +++ b/mods/food/weed/depends.txt @@ -0,0 +1,3 @@ +default +farming + diff --git a/mods/food/weed/init.lua b/mods/food/weed/init.lua new file mode 100644 index 0000000..5f69657 --- /dev/null +++ b/mods/food/weed/init.lua @@ -0,0 +1,310 @@ +--[[ + +Weed mod (based on wheat and baking mods) +VERSION: 0.0.2 +LICENSE: GPLv3 +TODO: + +]] + +PLANTS_GROW_INTERVAL = 80 -- interval in ABMs for plants +PLANTS_GROW_CHANCE = 60 -- chance in ABMs for plants +PLANTS_VISUAL_SCALE = 1 -- visualscale for plants + + + + + + + +local LIGHT = 5 -- amount of light neded to weed grow + +-- ABMs +--[[ +minetest.register_abm({ + nodenames = {"weed:weed_1","weed:weed_2","weed:weed_3","weed:weed_4", + "weed:weed_5","weed:weed_6","weed:weed_7"}, + interval = PLANTS_GROW_INTERVAL/3*2, + chance = PLANTS_GROW_CHANCE/2, + action = function(pos, node, _, __) + local l = minetest.env:get_node_light(pos, nil) + local p = pos + local rnd = math.random(1, 3) + p.y = p.y - 1 -- it will change pos too, that cause using p.y = p.y + 1 + local under_node = minetest.env:get_node(p) + if (l >= LIGHT) and (under_node.name == "weed:dirt_bed") and (rnd == 1) then + local nname --= 'weed:weed_final' + if node.name == "weed:weed_1" then + + nname = 'weed:weed_2' + + elseif node.name == "weed:weed_2" then + + nname = 'weed:weed_3' + + elseif node.name == 'weed:weed_3' then + + nname = 'weed:weed_4' + + elseif node.name == 'weed:weed_4' then + + nname = 'weed:weed_5' + + elseif node.name == 'weed:weed_5' then + + nname = 'weed:weed_6' + + elseif node.name == 'weed:weed_6' then + + nname = 'weed:weed_7' + + else nname = 'weed:weed_final' end + p.y = p.y + 1 + minetest.env:remove_node(pos) + minetest.env:add_node(pos, { name = nname }) + end + end +}) + +minetest.register_abm({ + nodenames = NODES_TO_DELETE_IF_THEY_ABOVE_AIR, + interval = 3, + chance = 1, + action = function(pos, node, _, __) + local p = {x = pos.x,y = pos.y -1,z = pos.z} + --p.y = p.y - 1 -- it will change pos too, that cause using p.y = p.y + 1 + local under_node = minetest.env:get_node(p) + if (under_node.name == "air") then + --p.y = p.y + 1 + minetest.env:remove_node(pos) + minetest.env:add_node(p, {name = node.name}) + end + end +}) +minetest.register_abm({ + nodenames = "weed:dirt_bed", + interval = 40, + chance = 3, + action = function(pos, node, _, __) + local p = {x = pos.x,y = pos.y +1,z = pos.z} + local above_node = minetest.env:get_node(p) + + for i, plant in ipairs(DIRT_BED_TO_GRASS) do + if (above_node.name == plant) then return; end + end + minetest.env:remove_node(pos) + minetest.env:add_node(pos, {name = "weed:dirt_bed"}) + end +})-- ABMs end +]]-- + +-- nodes and abms +for i = 1,8 do + + -- the more grown the higher chance of crop - level 8 always has crop + local rarity = (14 - (i*2)) + 1 + + if i < 4 then + max_items = 0 + elseif i >= 4 and i < 7 then + max_items = 1 + elseif i == 7 then + max_items = 2 + elseif i == 8 then + max_items = 3 + end + + + minetest.register_node("weed:weed_" .. i, { + description = "Weed State " .. i, + drawtype = "plantlike", + tile_images = {"weed_state_" .. i .. ".png"}, + inventory_image = "weed_state_" .. i .. ".png", + paramtype = "light", + is_ground_content = true, + walkable = false, + groups = {snappy = 3,flammable = 2,flower = 1,flora = 1,attached_node = 1}, + drop = { + max_items = max_items, + items = { + { + items = {}, + rarity = rarity, + }, + { + items = {'default:dirt'}, + rarity = rarity, + } + } + }, + wall_mounted = false, + selection_box = { + type = "fixed", + fixed = {-1/2, -1/2, -1/2, 1/2, -0.4, 1/2}, + }, + }) + -- Fuel + minetest.register_craft({ + type = "fuel", + recipe = "weed:weed_" .. i, + burntime = 2, + }) +end + + + +minetest.register_node("weed:big_grass", { + drawtype = "plantlike", + paramtype = "facedir_simple", + tile_images = {"weed_weed_final.png"}, + inventory_image = "weed_weed_final.png", + paramtype = "light", + is_ground_content = true, + walkable = false, + groups = {dig_immediate=3,choppy=3}, + drop = { + max_items = 1, + items = { + { + items = {'weed:weed_nug'}, + rarity = 10, + }, + }, + }, + visual_scale = PLANTS_VISUAL_SCALE, + selection_box = { + type = "fixed", + fixed = {-1/2, -1/2, -1/2, 1/2, -0.3, 1/2}, + }, +}) + +--spawn weed in the world +minetest.register_decoration({ + deco_type = "simple", + place_on = {"default:dirt_with_grass"}, + sidelen = 16, + noise_params = { + offset = 0, + scale = 0.006, + spread = {x = 100, y = 100, z = 100}, + seed = 329, + octaves = 3, + persist = 0.6 + }, + y_min = min, + y_max = max, + decoration = "weed:weed_8", + --spawn_by = spawnby, + --num_spawn_by = num, +}) + +-- Nodes end +minetest.register_node("weed:wild_grass", { + drawtype = "plantlike", + paramtype = "facedir_simple", + tile_images = {"weed_weed_4.png"}, + inventory_image = "weed_weed_4.png", + paramtype = "light", + is_ground_content = true, + walkable = false, + groups = {dig_immediate=3,choppy=3}, + drop = { + max_items = 1, + items = { + { + items = {'weed:weed_nug'}, + rarity = 10, + }, + }, + }, + visual_scale = PLANTS_VISUAL_SCALE, + selection_box = { + type = "fixed", + fixed = {-1/2, -1/2, -1/2, 1/2, -0.3, 1/2}, + }, +}) + + + +------ + +minetest.register_craftitem("weed:flour", { + image = "weed_flour.png", + on_place = minetest.item_place +}) + +minetest.register_craftitem("weed:seeds", { + description = "Weed Seeds", + image = "weed_seeds.png", + on_place = minetest.item_place, + on_use = minetest.item_eat(-1) +}) + +minetest.register_craftitem("weed:brownie", { + description = "Weed Brownie", + image = "weed_brownie.png", + on_place = minetest.item_place, + on_use = minetest.item_eat(9) +}) +minetest.register_craftitem("weed:weed_cigarette", { + image = "cigarette.png", + on_place = minetest.item_place, + on_use = minetest.item_eat(1) +}) +minetest.register_craftitem("weed:brownie_dough", { + image = "weed_brownie_dough.png", + on_place = minetest.item_place, +}) + +minetest.register_craft({ + output = 'weed:flour 1', + recipe = { + {'weed:weed_nug', 'weed:weed_nug'}, + {'weed:weed_nug', 'weed:weed_nug'}, + } +}) + +minetest.register_craft({ + output = 'weed:brownie_dough 1', + recipe = { + {'weed:flour', 'weed:flour', 'weed:flour'}, + {'weed:flour', 'weed:weed_form_water', 'weed:flour'}, + {'weed:flour', 'weed:flour', 'weed:flour'}, + } +}) + +minetest.register_craft({ + output = 'weed:weed_form_empty 1', + recipe = { + {'default:wood', '', 'default:wood'}, + {'', 'default:wood', ''}, + } +}) +minetest.register_craft({ + output = 'weed:weed_cigarette', + recipe = { + {'default:paper'}, + {'weed:weed_nug'}, + } +}) + + + +minetest.register_craft({ + type = "cooking", + output = "weed:brownie", + recipe = "weed:brownie_dough", + cooktime = 10, + replacements = { + {"weed:brownie_dough", "weed:weed_form_empty"}, --- this is not work!!! + }, +}) + +minetest.register_node("weed:poop", { + description = "Weed poop", + drawtype = "plantlike", + tile_images = {"weed_state_1.png"}, + inventory_image = "weed_state_1.png", +}) + +print("[weed mod] Loaded!") diff --git a/mods/food/weed/textures/cigarette.png b/mods/food/weed/textures/cigarette.png new file mode 100644 index 0000000..dccba95 Binary files /dev/null and b/mods/food/weed/textures/cigarette.png differ diff --git a/mods/food/weed/textures/weed_bed.png b/mods/food/weed/textures/weed_bed.png new file mode 100644 index 0000000..67179de Binary files /dev/null and b/mods/food/weed/textures/weed_bed.png differ diff --git a/mods/food/weed/textures/weed_big_grass.png b/mods/food/weed/textures/weed_big_grass.png new file mode 100644 index 0000000..15e1ffc Binary files /dev/null and b/mods/food/weed/textures/weed_big_grass.png differ diff --git a/mods/food/weed/textures/weed_brownie.png b/mods/food/weed/textures/weed_brownie.png new file mode 100644 index 0000000..adb3c21 Binary files /dev/null and b/mods/food/weed/textures/weed_brownie.png differ diff --git a/mods/food/weed/textures/weed_brownie_dough.png b/mods/food/weed/textures/weed_brownie_dough.png new file mode 100644 index 0000000..eebb0a3 Binary files /dev/null and b/mods/food/weed/textures/weed_brownie_dough.png differ diff --git a/mods/food/weed/textures/weed_flour.png b/mods/food/weed/textures/weed_flour.png new file mode 100644 index 0000000..77844be Binary files /dev/null and b/mods/food/weed/textures/weed_flour.png differ diff --git a/mods/food/weed/textures/weed_seeds.png b/mods/food/weed/textures/weed_seeds.png new file mode 100644 index 0000000..1d770ae Binary files /dev/null and b/mods/food/weed/textures/weed_seeds.png differ diff --git a/mods/food/weed/textures/weed_state_1.png b/mods/food/weed/textures/weed_state_1.png new file mode 100644 index 0000000..530a169 Binary files /dev/null and b/mods/food/weed/textures/weed_state_1.png differ diff --git a/mods/food/weed/textures/weed_state_2.png b/mods/food/weed/textures/weed_state_2.png new file mode 100644 index 0000000..6705e33 Binary files /dev/null and b/mods/food/weed/textures/weed_state_2.png differ diff --git a/mods/food/weed/textures/weed_state_3.png b/mods/food/weed/textures/weed_state_3.png new file mode 100644 index 0000000..a946fda Binary files /dev/null and b/mods/food/weed/textures/weed_state_3.png differ diff --git a/mods/food/weed/textures/weed_state_4.png b/mods/food/weed/textures/weed_state_4.png new file mode 100644 index 0000000..fbd63af Binary files /dev/null and b/mods/food/weed/textures/weed_state_4.png differ diff --git a/mods/food/weed/textures/weed_state_5.png b/mods/food/weed/textures/weed_state_5.png new file mode 100644 index 0000000..8247f2b Binary files /dev/null and b/mods/food/weed/textures/weed_state_5.png differ diff --git a/mods/food/weed/textures/weed_state_6.png b/mods/food/weed/textures/weed_state_6.png new file mode 100644 index 0000000..855a951 Binary files /dev/null and b/mods/food/weed/textures/weed_state_6.png differ diff --git a/mods/food/weed/textures/weed_state_7.png b/mods/food/weed/textures/weed_state_7.png new file mode 100644 index 0000000..43424c6 Binary files /dev/null and b/mods/food/weed/textures/weed_state_7.png differ diff --git a/mods/food/weed/textures/weed_state_8.png b/mods/food/weed/textures/weed_state_8.png new file mode 100644 index 0000000..ef80c63 Binary files /dev/null and b/mods/food/weed/textures/weed_state_8.png differ diff --git a/mods/food/weed/textures/weed_weed_form.png b/mods/food/weed/textures/weed_weed_form.png new file mode 100644 index 0000000..7a28aff Binary files /dev/null and b/mods/food/weed/textures/weed_weed_form.png differ diff --git a/mods/food/weed/textures/weed_weed_form_water.png b/mods/food/weed/textures/weed_weed_form_water.png new file mode 100644 index 0000000..b0d5940 Binary files /dev/null and b/mods/food/weed/textures/weed_weed_form_water.png differ diff --git a/mods/food/weed/textures/weed_weed_nug.png b/mods/food/weed/textures/weed_weed_nug.png new file mode 100644 index 0000000..58c4d42 Binary files /dev/null and b/mods/food/weed/textures/weed_weed_nug.png differ diff --git a/mods/mechanic_changes/unified_inventory/depends.txt b/mods/mechanic_changes/unified_inventory/depends.txt index e99f07b..833f62c 100644 --- a/mods/mechanic_changes/unified_inventory/depends.txt +++ b/mods/mechanic_changes/unified_inventory/depends.txt @@ -2,3 +2,4 @@ creative? intllib? datastorage? default +weed diff --git a/mods/tools_and_machines/bvav/init.lua b/mods/tools_and_machines/bvav/init.lua new file mode 100644 index 0000000..2feef57 --- /dev/null +++ b/mods/tools_and_machines/bvav/init.lua @@ -0,0 +1,128 @@ +bvav_settings = {} +bvav_settings.attach_scaling = -30 +bvav_settings.scaling = 0.667 + +math.randomseed( os.time() ) +minetest.register_entity("bvav:bvav_element", { + initial_properties = { + physical = true, + collide_with_objects = true, + collisionbox = {-0.5,-0.5,-0.5, 0.5,0.5,0.5}, + visual = "wielditem", + textures = {}, + automatic_face_movement_dir = 0.0, + }, + + node = {}, + + set_node = function(self, node) + self.node = node + local prop = { + is_visible = true, + textures = {node.name}, + } + self.object:set_properties(prop) + end, + + get_staticdata = function(self) + return self.node.name + end, + + on_activate = function(self, staticdata) + self.object:set_armor_groups({immortal=1}) + if staticdata then + self:set_node({name=staticdata}) + end + minetest.after(0,function() + if self.parent ~= nil and self.relative ~= nil then + self.object:set_attach(self.parent, "", {x=self.relative.x,y=self.relative.y,z=self.relative.z}, {x=0,y=0,z=0}) + self.object:set_properties({visual_size = {x=bvav_settings.scaling*3, y=bvav_settings.scaling*3}}) + else + --this fixes issues with scaling + self.object:set_properties({visual_size = {x=bvav_settings.scaling, y=bvav_settings.scaling}}) + end + end) + end, + + -- maybe have cannons, anchors, trolling lines, etc + on_step = function(self, dtime) + if self.parent ~= nil then + + else + --self.object:setvelocity({x=math.random(-1,1)*math.random(),y=0,z=math.random(-1,1)*math.random()}) + end + end, + -- +}) + + +function spawn_bvav_element(p, node) + local obj = core.add_entity(p, "bvav:bvav_element") + obj:get_luaentity():set_node(node) + return obj +end + +minetest.register_chatcommand("bvav", { + params = "", + description = "Send text to chat", + func = function(name) + pos = minetest.get_player_by_name(name):getpos() + local parent = spawn_bvav_element(pos, {name="default:wood"}) + local basepos = parent:getpos() + + pos.y = pos.y + 1 + local child = spawn_bvav_element(pos, {name="default:wood"}) + child:get_luaentity().parent = parent + child:get_luaentity().relative = {x=(basepos.x - pos.x) * bvav_settings.attach_scaling,y=(basepos.y - pos.y) * bvav_settings.attach_scaling,z= (basepos.z - pos.z) * bvav_settings.attach_scaling} + + end, +}) + +function bvav_create_vessel(pos) + + local parent = spawn_bvav_element(pos, {name="default:wood"}) + local basepos = parent:getpos() + + local range = 2 + + + + local min = {x=pos.x-range,y=pos.y-range,z=pos.z-range} + local max = {x=pos.x+range,y=pos.y+range,z=pos.z+range} + local vm = minetest.get_voxel_manip() + local emin, emax = vm:read_from_map(min,max) + local area = VoxelArea:new{MinEdge=emin, MaxEdge=emax} + local data = vm:get_data() + + + --build the air ship + for x = range*-1,range do + for y = range*-1,range do + for z = range*-1,range do + local node = vm:get_node_at({x=pos.x+x,y=pos.y+y,z=pos.z+z}).name + + local child = spawn_bvav_element(pos, {name=node}) + child:get_luaentity().parent = parent + child:get_luaentity().relative = {x=(basepos.x - pos.x) * bvav_settings.attach_scaling,y=(basepos.y - pos.y) * bvav_settings.attach_scaling,z= (basepos.z - pos.z) * bvav_settings.attach_scaling} + + end + end + end + + + + vm:set_data(data) + vm:calc_lighting() + vm:write_to_map() + vm:update_map() +end + + +minetest.register_node("bvav:control_node", { + description = "Control Node", + tiles = {"default_stone.png"}, + groups = {cracky=3, stone=1}, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + bvav_create_vessel(pos) + end, +})