fixed drinks and ostriches.

master
NathanSalapat 2020-07-22 08:22:16 -05:00
parent ac7f8e8a24
commit ec18b0dc0f
10 changed files with 116 additions and 270 deletions

View File

@ -10,13 +10,13 @@ mobs:register_mob("desert_life:ostrich", {
hp_min = 5,
hp_max = 10,
armor = 200,
collisionbox = {-0.4, -0.5, -0.4, 0.4, 0.75, 0.4},
collisionbox = {-0.4, -0.575, -0.4, 0.4, 0.75, 0.4},
visual = "mesh",
mesh = "dl_ostrich.b3d",
textures = {
{'dl_ostrich.png'},
},
visual_size = {x=9, y=9},
visual_size = {x=11, y=11},
makes_footstep_sound = true,
walk_velocity = 1,
run_velocity = 3,
@ -49,109 +49,84 @@ mobs:register_mob("desert_life:ostrich", {
replace_what = {'group:flora', 'group:plant'},
replace_with = 'air',
replace_rate = 1,
do_custom = function(self, dtime)
do_custom = function(self, dtime)
-- set needed values if not already present
if not self.v2 then
self.v2 = 0
self.max_speed_forward = 6
self.max_speed_reverse = 2
self.accel = 6
self.terrain_type = 3
self.driver_attach_at = {x = 0, y = .5, z = -0.25}
self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = .09, y = .09}
end
-- if driver present allow control of ostrich
if self.driver then
mobs.drive(self, "walk", "stand", false, dtime)
return false -- skip rest of mob functions
end
return true
end,
on_die = function(self, pos)
-- drop saddle when ostrich is killed while riding
-- also detach from ostrich properly
if self.driver then
minetest.add_item(pos, "mobs:saddle")
mobs.detach(self.driver, {x = 1, y = 0, z = 1})
self.saddle = nil
end
-- drop any ostrichshoes added
if self.shoed then
minetest.add_item(pos, self.shoed)
end
-- set needed values if not already present
if not self.v2 then
self.v2 = 0
self.max_speed_forward = 6
self.max_speed_reverse = 2
self.accel = 6
self.terrain_type = 3
self.driver_attach_at = {x = 0, y = y_off, z = -0.5}
self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = .125, y = .125}
end
-- if driver present allow control of horse
if self.driver then
mobs.drive(self, "walk", "stand", false, dtime)
return false -- skip rest of mob functions
end
return true
end,
on_die = function(self, pos)
-- drop saddle when horse is killed while riding
-- also detach from horse properly
if self.driver then
minetest.add_item(pos, "mobs:saddle")
mobs.detach(self.driver, {x = 1, y = 0, z = 1})
self.saddle = nil
end
-- drop any horseshoes added
if self.shoed then
minetest.add_item(pos, self.shoed)
end
end,
on_rightclick = function(self, clicker)
-- make sure player is clicking
if not clicker or not clicker:is_player() then
return
end
-- feed, tame or heal horse
if mobs:feed_tame(self, clicker, 10, true, true) then
return
end
-- applying protection rune
if mobs:protect(self, clicker) then
return
end
-- make sure tamed horse is being clicked by owner only
if self.tamed and self.owner == clicker:get_player_name() then
local inv = clicker:get_inventory()
local tool = clicker:get_wielded_item()
local item = tool:get_name()
-- detatch player already riding horse
if self.driver and clicker == self.driver then
mobs.detach(clicker, {x = 1, y = 0, z = 1})
-- add saddle back to inventory
if inv:room_for_item("main", "mobs:saddle") then
inv:add_item("main", "mobs:saddle")
else
minetest.add_item(clicker:get_pos(), "mobs:saddle")
end
self.saddle = nil
-- attach player to horse
elseif (not self.driver and not self.child
and clicker:get_wielded_item():get_name() == "mobs:saddle")
or self.saddle then
self.object:set_properties()
print(self.object)
mobs.attach(self, clicker)
-- take saddle from inventory
if not self.saddle then
inv:remove_item("main", "mobs:saddle")
end
self.saddle = true
end
end
-- used to capture horse with magic lasso
mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
end
end,
on_rightclick = function(self, clicker)
-- make sure player is clicking
if not clicker or not clicker:is_player() then
return
end
-- feed, tame or heal ostrich
if mobs:feed_tame(self, clicker, 10, true, true) then
return
end
-- applying protection rune
if mobs:protect(self, clicker) then
return
end
-- make sure tamed ostrich is being clicked by owner only
if self.tamed and self.owner == clicker:get_player_name() then
local inv = clicker:get_inventory()
local tool = clicker:get_wielded_item()
local item = tool:get_name()
-- detatch player already riding ostrich
if self.driver and clicker == self.driver then
mobs.detach(clicker, {x = 1, y = 0, z = 1})
-- add saddle back to inventory
if inv:room_for_item("main", "mobs:saddle") then
inv:add_item("main", "mobs:saddle")
else
minetest.add_item(clicker:get_pos(), "mobs:saddle")
end
self.saddle = nil
-- attach player to ostrich
elseif (not self.driver and not self.child
and clicker:get_wielded_item():get_name() == "mobs:saddle")
or self.saddle then
--self.object:set_properties()
--print(self.object)
mobs.attach(self, clicker)
-- take saddle from inventory
if not self.saddle then
inv:remove_item("main", "mobs:saddle")
end
self.saddle = true
end
end
-- used to capture ostrich with magic lasso
mobs:capture_mob(self, clicker, 0, 0, 80, false, nil)
end
})
mobs:spawn({
@ -164,5 +139,4 @@ mobs:spawn({
active_object_count = 5,
})
mobs:register_egg("desert_life:ostrich", "Ostrich", "wool.png^[multiply:#40230f", 1)

View File

@ -1,13 +0,0 @@
bucket
default
vessels
stairs
hunger?
thirsty?
plantlife?
farming_plus?
crops?
farming?
minetest_doc_modpack?
fruits?
ethereal?

View File

@ -1 +0,0 @@
This mod adds a juice press and two juice storage containers. Most fruits and several veggies can be juiced. The resulting drinks can be 'ate' to gain health, or if you are using the thirsty mod, to regain hydration.

View File

@ -281,16 +281,24 @@ minetest.register_node('drinks:juice_press', {
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname == 'dst' then
if stack:get_name() == ('bucket:bucket_empty') then
return 1
elseif stack:get_name() == ('vessels:drinking_glass') then
return 1
elseif stack:get_name() == ('vessels:glass_bottle') then
return 1
elseif stack:get_name() == ('vessels:steel_bottle') then
return 1
elseif stack:get_name() == ('default:papyrus') then
return 1
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
local outstack = inv:get_stack("dst", 1)
local count = outstack:get_count()
if count < 1 then
if stack:get_name() == ('bucket:bucket_empty') then
return 1
elseif stack:get_name() == ('vessels:drinking_glass') then
return 1
elseif stack:get_name() == ('vessels:glass_bottle') then
return 1
elseif stack:get_name() == ('vessels:steel_bottle') then
return 1
elseif stack:get_name() == ('default:papyrus') then
return 1
else
return 0
end
else
return 0
end
@ -522,9 +530,7 @@ minetest.register_node('drinks:liquid_silo', {
fixed = {-.5, -.5, -.5, .5, 1.5, .5},
},
after_place_node = function(pos, placer, itemstack)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local top_node = minetest.get_node_or_nil(above)
if top_node.name ~= 'air' then
if not epic.space_on_top(pos) then
minetest.remove_node(pos)
return itemstack
end
@ -602,6 +608,9 @@ minetest.register_node('drinks:liquid_silo', {
return false
end
end,
after_dig_node = function(pos, oldnode, oldmetadata, digger)
epic.remove_top_node(pos)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
local meta = minetest.get_meta(pos)
if minetest.is_protected(pos, player:get_player_name()) and not minetest.check_player_privs(player, 'protection_bypass') then

View File

@ -5,7 +5,6 @@ for i in ipairs (drinks.drink_table) do
local color = drinks.drink_table[i][3]
local health = drinks.drink_table[i][4]
health = health or 1
-- The color of the drink is all done in code, so we don't need to have multiple images.
--Actual Node registration
minetest.register_node('drinks:jbu_'..desc..'', {
@ -26,37 +25,33 @@ minetest.register_node('drinks:jbu_'..desc..'', {
sounds = default.node_sound_defaults(),
})
drinks.register_item('drinks:jcu_'..desc, 'vessels:drinking_glass', {
drinks.register_item( 'drinks:jcu_'..desc, 'vessels:drinking_glass', {
description = 'Cup of '..craft..' Juice',
groups = {drink=1},
juice_type = craft,
inventory_image = 'drinks_glass_contents.png^[colorize:'..color..':200^drinks_drinking_glass.png',
on_use = function(itemstack, user, pointed_thing)
thirsty.drink(user, 4, 20)
local eat_func = minetest.item_eat(health, 'vessels:drinking_glass')
return eat_func(itemstack, user, pointed_thing)
end,
})
drinks.register_item('drinks:jbo_'..desc, 'vessels:glass_bottle',{
drinks.register_item( 'drinks:jbo_'..desc, 'vessels:glass_bottle', {
description = 'Bottle of '..craft..' Juice',
groups = {drink = 1},
groups = {drink=1},
juice_type = craft,
inventory_image = 'drinks_bottle_contents.png^[colorize:'..color..':200^drinks_glass_bottle.png',
on_use = function(itemstack, user, pointed_thing)
thirsty.drink(user, 8, 20)
local eat_func = minetest.item_eat((health*2), 'vessels:glass_bottle')
return eat_func(itemstack, user, pointed_thing)
end,
})
drinks.register_item('drinks:jsb_'..desc, 'vessels:steel_bottle',{
drinks.register_item( 'drinks:jsb_'..desc, 'vessels:steel_bottle', {
description = 'Heavy Steel Bottle ('..craft..' Juice)',
groups = {drink = 1},
groups = {drink=1},
juice_type = craft,
inventory_image = 'vessels_steel_bottle.png',
on_use = function(itemstack, user, pointed_thing)
thirsty.drink(user, 8, 20)
local eat_func = minetest.item_eat((health*2), 'vessels:steel_bottle')
return eat_func(itemstack, user, pointed_thing)
end,

View File

@ -1,61 +0,0 @@
-- This code is for if Thirst isn't enabled.
--Parse Table
for i in ipairs (drinks.drink_table) do
local desc = drinks.drink_table[i][1]
local craft = drinks.drink_table[i][2]
local color = drinks.drink_table[i][3]
local health = drinks.drink_table[i][4]
health = health or 1
--Actual Node registration
minetest.register_node('drinks:jbu_'..desc..'', {
description = 'Bucket of '..craft..' Juice',
drawtype = "plantlike",
tiles = {'bucket.png^(drinks_bucket_contents.png^[colorize:'..color..':200)'},
inventory_image = 'bucket.png^(drinks_bucket_contents.png^[colorize:'..color..':200)',
wield_image = 'bucket.png^(drinks_bucket_contents.png^[colorize:'..color..':200)',
paramtype = "light",
juice_type = craft,
is_ground_content = false,
walkable = false,
selection_box = {
type = "fixed",
fixed = {-0.25, -0.5, -0.25, 0.25, 0.4, 0.25}
},
groups = {vessel=1,dig_immediate=3,attached_node=1, drink = 1},
sounds = default.node_sound_defaults(),
})
drinks.register_item( 'drinks:jcu_'..desc, 'vessels:drinking_glass', {
description = 'Cup of '..craft..' Juice',
juice_type = craft,
inventory_image = 'drinks_glass_contents.png^[colorize:'..color..':200^drinks_drinking_glass.png',
on_use = function(itemstack, user, pointed_thing)
local eat_func = minetest.item_eat(health, 'vessels:drinking_glass')
return eat_func(itemstack, user, pointed_thing)
end,
})
drinks.register_item( 'drinks:jbo_'..desc, 'vessels:glass_bottle', {
description = 'Bottle of '..craft..' Juice',
groups = {drink=1},
juice_type = craft,
inventory_image = 'drinks_bottle_contents.png^[colorize:'..color..':200^drinks_glass_bottle.png',
on_use = function(itemstack, user, pointed_thing)
local eat_func = minetest.item_eat((health*2), 'vessels:glass_bottle')
return eat_func(itemstack, user, pointed_thing)
end,
})
drinks.register_item( 'drinks:jsb_'..desc, 'vessels:steel_bottle', {
description = 'Heavy Steel Bottle ('..craft..' Juice)',
groups = {drink=1},
juice_type = craft,
inventory_image = 'vessels_steel_bottle.png',
on_use = function(itemstack, user, pointed_thing)
local eat_func = minetest.item_eat((health*2), 'vessels:steel_bottle')
return eat_func(itemstack, user, pointed_thing)
end,
})
end

View File

@ -83,50 +83,6 @@ if minetest.get_modpath('default') then
table.insert(drinks.drink_table, {'blueberries', 'Blueberry', '#521dcb'})
end
if minetest.get_modpath('bushes_classic') then
drinks.juiceable['blackberry'] = true
drinks.juiceable['blueberry'] = true
drinks.juiceable['gooseberry'] = true
drinks.juiceable['raspberry'] = true
drinks.juiceable['strawberry'] = true
table.insert(drinks.drink_table, {'blackberry', 'Blackberry', '#581845'})
table.insert(drinks.drink_table, {'blueberry', 'Blueberry', '#521dcb'})
table.insert(drinks.drink_table, {'gooseberry', 'Gooseberry', '#9cf57c'})
table.insert(drinks.drink_table, {'raspberry', 'Raspberry', '#C70039'})
table.insert(drinks.drink_table, {'strawberry', 'Strawberry', '#ff3636'})
end
if minetest.get_modpath('farming_plus') then
drinks.juiceable['banana'] = true
drinks.juiceable['melon'] = true
drinks.juiceable['lemon_item'] = true
drinks.juiceable['orange_item'] = true
drinks.juiceable['peach_item'] = true
drinks.juiceable['rhubarb_item'] = true
drinks.juiceable['tomato_item'] = true
drinks.juiceable['strawberry_item'] = true
drinks.juiceable['raspberry_item'] = true
table.insert(drinks.drink_table, {'banana', 'Banana', '#eced9f'})
table.insert(drinks.drink_table, {'lemon', 'Lemon', '#feffaa'})
table.insert(drinks.drink_table, {'melon', 'Melon', '#ef4646'})
table.insert(drinks.drink_table, {'orange', 'Orange', '#ffc417'})
table.insert(drinks.drink_table, {'peach', 'Peach', '#f2bc1e'})
table.insert(drinks.drink_table, {'rhubarb', 'Rhubarb', '#fb8461'})
table.insert(drinks.drink_table, {'tomato', 'Tomato', '#d03a0e'})
table.insert(drinks.drink_table, {'strawberry', 'Strawberry', '#ff3636'})
table.insert(drinks.drink_table, {'raspberry', 'Raspberry', '#C70039'})
end
if minetest.get_modpath('crops') then
drinks.juiceable['melon'] = true
drinks.juiceable['melon_slice'] = true
drinks.juiceable['tomato'] = true
drinks.juiceable['pumpkin'] = true
table.insert(drinks.drink_table, {'melon', 'Melon', '#ef4646'})
table.insert(drinks.drink_table, {'tomato', 'Tomato', '#d03a0e'})
table.insert(drinks.drink_table, {'pumpkin', 'Pumpkin', '#ffc04c'})
end
if minetest.get_modpath('farming') then
drinks.juiceable['melon_8'] = true
drinks.juiceable['melon_slice'] = true
@ -150,26 +106,11 @@ if minetest.get_modpath('farming') then
table.insert(drinks.drink_table, {'pineapple', 'Pineapple', '#dcd611'})
end
if minetest.get_modpath('fruit') then
drinks.juiceable['pear'] = true
drinks.juiceable['plum'] = true
drinks.juiceable['peach'] = true
drinks.juiceable['orange'] = true
table.insert(drinks.drink_table, {'pear', 'Pear', '#ecff56'})
table.insert(drinks.drink_table, {'plum', 'Plum', '#8e4585'})
table.insert(drinks.drink_table, {'peach', 'Peach', '#f2bc1e'})
table.insert(drinks.drink_table, {'orange', 'Orange', '#ffc417'})
end
if minetest.get_modpath('ethereal') then
if minetest.get_modpath('epic_trees') then
drinks.juiceable['banana'] = true
drinks.juiceable['coconut'] = true
drinks.juiceable['orange'] = true
drinks.juiceable['strawberry'] = true
table.insert(drinks.drink_table, {'banana', 'Banana', '#eced9f'})
table.insert(drinks.drink_table, {'coconut', 'Coconut', '#ffffff'})
table.insert(drinks.drink_table, {'orange', 'Orange', '#ffc417'})
table.insert(drinks.drink_table, {'strawberry', 'Strawberry', '#ff3636'})
end
if minetest.get_modpath('desert_life') then
@ -207,11 +148,6 @@ drinks.register_item = function( name, template, def )
end
end
if minetest.get_modpath('thirsty') then
dofile(minetest.get_modpath('drinks')..'/drinks.lua')
else
dofile(minetest.get_modpath('drinks')..'/drinks2.lua')
end
dofile(minetest.get_modpath('drinks')..'/drinks.lua')
dofile(minetest.get_modpath('drinks')..'/drink_machines.lua')
dofile(minetest.get_modpath('drinks')..'/formspecs.lua')

View File

@ -81,7 +81,6 @@ end
function epic.space_on_top(pos)
local above = {x = pos.x, y = pos.y + 1, z = pos.z}
local top_node = minetest.get_node(above)
print ('top node is '..(top_node.name))
local top_def = minetest.registered_nodes[top_node.name] or nil
if not top_def.buildable_to then
return false

View File

@ -51,6 +51,7 @@ minetest.register_on_joinplayer(function(player)
local player_name = player:get_player_name()
minetest.chat_send_player(player_name, 'Read the rules for information on how to get interact. Para español visite https://www.nathansalapat.com/server/epic-server_es')
minetest.show_formspec(player_name, 'rules', spawn_rules_formspec)
--[[
else
local player_name = player:get_player_name()
local info_count = tonumber(spawn.storage:get_string(player_name..'_info_count')) or 10
@ -59,6 +60,7 @@ minetest.register_on_joinplayer(function(player)
spawn.storage:set_string(player_name..'_info_count', new_count)
minetest.show_formspec(player_name, '_info_message', spawn_info_formspec)
end
--]]
end
end)

View File

@ -1,4 +1,10 @@
local news = {
'7/22/20',
'You can ride tamed Ostriches.',
'',
'7/21/20',
'Oranges and Bananas can be turned into Juice.',
'',
'7/20/20',
'Cooling lava now has a few options of what node will place.',
'Cleaned up the hangglider mod.',