push weed and bu buildable vessels and vehicles mod

master
jordan4ibanez 2016-02-18 22:23:15 -05:00
parent 65ae7146b8
commit e94c23b2c1
25 changed files with 465 additions and 2 deletions

View File

@ -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
]]--

View File

@ -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")
minetest.register_alias("seaplants:seasalad","seaplants:seasaladmix")
]]--

1
mods/food/weed/VERSION Normal file
View File

@ -0,0 +1 @@
0.0.2

View File

@ -0,0 +1,3 @@
default
farming

310
mods/food/weed/init.lua Normal file
View File

@ -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!")

Binary file not shown.

After

Width:  |  Height:  |  Size: 167 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 788 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 609 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 351 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 398 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 309 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 324 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 345 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 526 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 522 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 329 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 357 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 701 B

View File

@ -2,3 +2,4 @@ creative?
intllib?
datastorage?
default
weed

View File

@ -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,
})