forked from VoxeLibre/VoxeLibre
Compare commits
4 Commits
master
...
water_dark
Author | SHA1 | Date |
---|---|---|
FossFanatic | 2c38877225 | |
FossFanatic | ef0565ccc9 | |
FossFanatic | 3c7fa0be05 | |
FossFanatic | b76757b857 |
|
@ -24,11 +24,6 @@ local spawn_protected = minetest.settings:get_bool("mobs_spawn_protected") ~= fa
|
||||||
local mobs_debug = minetest.settings:get_bool("mobs_debug", false) -- Shows helpful debug info above each mob
|
local mobs_debug = minetest.settings:get_bool("mobs_debug", false) -- Shows helpful debug info above each mob
|
||||||
local spawn_logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true)
|
local spawn_logging = minetest.settings:get_bool("mcl_logging_mobs_spawn",true)
|
||||||
|
|
||||||
local MAPGEN_LIMIT = mcl_vars.mapgen_limit
|
|
||||||
local MAPGEN_MOB_LIMIT = MAPGEN_LIMIT - 90
|
|
||||||
-- 30927 seems to be the edge of the world, so could be closer, but this is safer
|
|
||||||
|
|
||||||
|
|
||||||
-- Peaceful mode message so players will know there are no monsters
|
-- Peaceful mode message so players will know there are no monsters
|
||||||
if minetest.settings:get_bool("only_peaceful_mobs", false) then
|
if minetest.settings:get_bool("only_peaceful_mobs", false) then
|
||||||
minetest.register_on_joinplayer(function(player)
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
@ -333,37 +328,12 @@ local function update_timers (self, dtime)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
function mob_class:outside_limits()
|
|
||||||
local pos = self.object:get_pos()
|
|
||||||
if pos then
|
|
||||||
local posx = math.abs(pos.x)
|
|
||||||
local posy = math.abs(pos.y)
|
|
||||||
local posz = math.abs(pos.z)
|
|
||||||
if posx > MAPGEN_MOB_LIMIT or posy > MAPGEN_MOB_LIMIT or posz > MAPGEN_MOB_LIMIT then
|
|
||||||
--minetest.log("action", "Getting close to limits of worldgen: " .. minetest.pos_to_string(pos))
|
|
||||||
if posx > MAPGEN_LIMIT or posy > MAPGEN_LIMIT or posz > MAPGEN_LIMIT then
|
|
||||||
minetest.log("action", "Warning mob past limits of worldgen: " .. minetest.pos_to_string(pos))
|
|
||||||
else
|
|
||||||
if self.state ~= "stand" then
|
|
||||||
minetest.log("action", "Warning mob close to limits of worldgen: " .. minetest.pos_to_string(pos))
|
|
||||||
self.state = "stand"
|
|
||||||
self:set_animation("stand")
|
|
||||||
self.object:set_acceleration(vector.zero())
|
|
||||||
self.object:set_velocity(vector.zero())
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return true
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
-- main mob function
|
-- main mob function
|
||||||
function mob_class:on_step(dtime)
|
function mob_class:on_step(dtime)
|
||||||
local pos = self.object:get_pos()
|
local pos = self.object:get_pos()
|
||||||
if not pos then return end
|
if not pos then return end
|
||||||
|
|
||||||
if self:check_despawn(pos, dtime) then return true end
|
if self:check_despawn(pos, dtime) then return true end
|
||||||
if self:outside_limits() then return end
|
|
||||||
|
|
||||||
if self:check_death_and_slow_mob() then
|
if self:check_death_and_slow_mob() then
|
||||||
--minetest.log("action", "Mob is dying: ".. tostring(self.name))
|
--minetest.log("action", "Mob is dying: ".. tostring(self.name))
|
||||||
|
|
|
@ -172,7 +172,6 @@ local professions = {
|
||||||
{ { "mcl_mobitems:string", 15, 20 }, E1 },
|
{ { "mcl_mobitems:string", 15, 20 }, E1 },
|
||||||
{ E1, { "mcl_bows:arrow", 8, 12 } },
|
{ E1, { "mcl_bows:arrow", 8, 12 } },
|
||||||
{ { "mcl_core:gravel", 10, 10, "mcl_core:emerald", 1, 1 }, { "mcl_core:flint", 6, 10 } },
|
{ { "mcl_core:gravel", 10, 10, "mcl_core:emerald", 1, 1 }, { "mcl_core:flint", 6, 10 } },
|
||||||
{ { "mcl_core:stick", 32, 32 }, E1 },
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
{ { "mcl_core:flint", 26, 26 }, E1 },
|
{ { "mcl_core:flint", 26, 26 }, E1 },
|
||||||
|
|
|
@ -50,7 +50,7 @@ minetest.register_node("mcl_core:water_flowing", {
|
||||||
liquid_viscosity = WATER_VISC,
|
liquid_viscosity = WATER_VISC,
|
||||||
liquid_range = 7,
|
liquid_range = 7,
|
||||||
waving = 3,
|
waving = 3,
|
||||||
post_effect_color = {a=20, r=0x03, g=0x3C, b=0x5C},
|
post_effect_color = {a=60, r=0x03, g=0x3C, b=0x5C},
|
||||||
groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1},
|
groups = { water=3, liquid=3, puts_out_fire=1, not_in_creative_inventory=1, freezes=1, melt_around=1, dig_by_piston=1},
|
||||||
_mcl_blast_resistance = 100,
|
_mcl_blast_resistance = 100,
|
||||||
-- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
|
-- Hardness intentionally set to infinite instead of 100 (Minecraft value) to avoid problems in creative mode
|
||||||
|
|
|
@ -3,8 +3,6 @@ mcl_playerplus = {
|
||||||
is_pressing_jump = {},
|
is_pressing_jump = {},
|
||||||
}
|
}
|
||||||
|
|
||||||
local hud_water = {}
|
|
||||||
|
|
||||||
local get_connected_players = minetest.get_connected_players
|
local get_connected_players = minetest.get_connected_players
|
||||||
local dir_to_yaw = minetest.dir_to_yaw
|
local dir_to_yaw = minetest.dir_to_yaw
|
||||||
local get_item_group = minetest.get_item_group
|
local get_item_group = minetest.get_item_group
|
||||||
|
@ -27,26 +25,6 @@ local mcl_playerplus_internal = {}
|
||||||
local time = 0
|
local time = 0
|
||||||
local look_pitch = 0
|
local look_pitch = 0
|
||||||
|
|
||||||
|
|
||||||
local function calculate_water_depth(pos)
|
|
||||||
for i=1, 50 do
|
|
||||||
if get_item_group(minetest.get_node(vector.new(pos.x,pos.y+i,pos.z)).name, "water") == 0 then
|
|
||||||
return i
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return 50
|
|
||||||
end
|
|
||||||
|
|
||||||
local function remove_water_hud(player)
|
|
||||||
if hud_water[player] then
|
|
||||||
mcl_weather.skycolor.update_sky_color()
|
|
||||||
for i=1, #hud_water[player] do
|
|
||||||
player:hud_remove(hud_water[player][i])
|
|
||||||
end
|
|
||||||
hud_water[player] = nil
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
local function player_collision(player)
|
local function player_collision(player)
|
||||||
|
|
||||||
local pos = player:get_pos()
|
local pos = player:get_pos()
|
||||||
|
@ -417,23 +395,13 @@ minetest.register_globalstep(function(dtime)
|
||||||
set_bone_pos(player,"Body_Control", nil, vector.new(0, -player_vel_yaw + yaw, 0))
|
set_bone_pos(player,"Body_Control", nil, vector.new(0, -player_vel_yaw + yaw, 0))
|
||||||
end
|
end
|
||||||
|
|
||||||
if get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 then
|
local underwater
|
||||||
if not hud_water[player] or hud_water[player] and calculate_water_depth(player:get_pos()) ~= #hud_water[player] then
|
if get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 and underwater ~= true then
|
||||||
remove_water_hud(player)
|
mcl_weather.skycolor.update_sky_color()
|
||||||
hud_water[player] = {}
|
local underwater = true
|
||||||
for i=1, calculate_water_depth(player:get_pos()) do
|
elseif get_item_group(mcl_playerinfo[name].node_head, "water") == 0 and underwater == true then
|
||||||
table.insert(hud_water[player], player:hud_add({
|
mcl_weather.skycolor.update_sky_color()
|
||||||
hud_elem_type = "image",
|
local underwater = false
|
||||||
text = "mcl_playerplus_water.png",
|
|
||||||
position = {x = 0.5, y = 0.5},
|
|
||||||
scale = {x = 32, y = 16},
|
|
||||||
offset = {x = 0, y = 0},
|
|
||||||
z_index = -1002,
|
|
||||||
}))
|
|
||||||
end
|
|
||||||
end
|
|
||||||
else
|
|
||||||
remove_water_hud(player)
|
|
||||||
end
|
end
|
||||||
|
|
||||||
elytra.last_yaw = player:get_look_horizontal()
|
elytra.last_yaw = player:get_look_horizontal()
|
||||||
|
@ -643,7 +611,7 @@ minetest.register_globalstep(function(dtime)
|
||||||
local vi = area:indexp({x=x, y=y, z=z})
|
local vi = area:indexp({x=x, y=y, z=z})
|
||||||
local nodename = get_name_from_content_id(data[vi])
|
local nodename = get_name_from_content_id(data[vi])
|
||||||
local light_block_group = minetest.get_item_group(nodename, "light_block")
|
local light_block_group = minetest.get_item_group(nodename, "light_block")
|
||||||
|
|
||||||
local tex
|
local tex
|
||||||
if nodename == "mcl_core:barrier" then
|
if nodename == "mcl_core:barrier" then
|
||||||
tex = "mcl_core_barrier.png"
|
tex = "mcl_core_barrier.png"
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 9.2 KiB |
Loading…
Reference in New Issue