Merge branch 'master' into elytra-overhaul

This commit is contained in:
SumianVoice 2022-08-08 00:19:26 +00:00
commit eeca224f7b
12 changed files with 23 additions and 8 deletions

@ -337,7 +337,6 @@ local function trace_explode(pos, strength, raydirs, radius, info, direct, sourc
if not obj:is_player() then if not obj:is_player() then
return return
end end
mcl_util.deal_damage(obj, damage, {type = "explosion", direct = direct, source = source}) mcl_util.deal_damage(obj, damage, {type = "explosion", direct = direct, source = source})
obj:add_velocity(vector.multiply(punch_dir, impact * 20)) obj:add_velocity(vector.multiply(punch_dir, impact * 20))

@ -202,6 +202,8 @@ end
function boat.on_step(self, dtime, moveresult) function boat.on_step(self, dtime, moveresult)
mcl_burning.tick(self.object, dtime, self) mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._v = get_v(self.object:get_velocity()) * get_sign(self._v) self._v = get_v(self.object:get_velocity()) * get_sign(self._v)
local v_factor = 1 local v_factor = 1

@ -3618,6 +3618,8 @@ local mob_step = function(self, dtime)
check_aggro(self,dtime) check_aggro(self,dtime)
if not self.fire_resistant then if not self.fire_resistant then
mcl_burning.tick(self.object, dtime, self) mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
end end
local pos = self.object:get_pos() local pos = self.object:get_pos()

@ -120,9 +120,10 @@ function lightning.strike(pos)
if not pos then if not pos then
return false return false
end end
local objects = get_objects_inside_radius(pos2, 3.5)
if lightning.on_strike_functions then if lightning.on_strike_functions then
for _, func in pairs(lightning.on_strike_functions) do for _, func in pairs(lightning.on_strike_functions) do
-- allow on_strike callbacks to destroy entities by re-obtaining objects for each callback
local objects = get_objects_inside_radius(pos2, 3.5)
func(pos, pos2, objects) func(pos, pos2, objects)
end end
end end
@ -174,6 +175,7 @@ lightning.register_on_strike(function(pos, pos2, objects)
elseif lua and lua.name == "mobs_mc:creeper" then elseif lua and lua.name == "mobs_mc:creeper" then
mcl_util.replace_mob(obj, "mobs_mc:creeper_charged") mcl_util.replace_mob(obj, "mobs_mc:creeper_charged")
else else
-- WARNING: unsafe entity handling. object may be removed immediately
mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" }) mcl_util.deal_damage(obj, 5, { type = "lightning_bolt" })
end end
end end

@ -90,6 +90,8 @@ mcl_damage.register_modifier(function(obj, damage, reason)
if thorns_damage > 0 and reason.type ~= "thorns" and reason.source ~= obj then if thorns_damage > 0 and reason.type ~= "thorns" and reason.source ~= obj then
mcl_util.deal_damage(reason.source, thorns_damage, {type = "thorns", direct = obj}) mcl_util.deal_damage(reason.source, thorns_damage, {type = "thorns", direct = obj})
-- mcl_util.deal_damage may remove object immediately
if not reason.source:get_pos() then return end
local thorns_item = thorns_pieces[math.random(#thorns_pieces)] local thorns_item = thorns_pieces[math.random(#thorns_pieces)]

@ -98,7 +98,7 @@ minetest.register_node("mcl_beacons:beacon_beam", {
} }
}, },
pointable= false, pointable= false,
light_source = 15, light_source = 14,
walkable = false, walkable = false,
groups = {not_in_creative_inventory=1}, groups = {not_in_creative_inventory=1},
_mcl_blast_resistance = 1200, _mcl_blast_resistance = 1200,
@ -226,6 +226,7 @@ minetest.register_node("mcl_beacons:beacon", {
collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5}, collisionbox = {-0.5, -0.5, -0.5, 0.5, 0.5, 0.5},
mesh = "mcl_beacon.b3d", mesh = "mcl_beacon.b3d",
tiles = {"beacon_UV.png"}, tiles = {"beacon_UV.png"},
use_texture_alpha = "clip",
on_construct = function(pos) on_construct = function(pos)
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local inv = meta:get_inventory() local inv = meta:get_inventory()
@ -333,7 +334,7 @@ minetest.register_node("mcl_beacons:beacon", {
end end
end end
end, end,
light_source = 15, light_source = 14,
groups = {handy=1}, groups = {handy=1},
drop = "mcl_beacons:beacon", drop = "mcl_beacons:beacon",
sounds = mcl_sounds.node_sound_glass_defaults(), sounds = mcl_sounds.node_sound_glass_defaults(),

@ -115,6 +115,8 @@ end
function ARROW_ENTITY.on_step(self, dtime) function ARROW_ENTITY.on_step(self, dtime)
mcl_burning.tick(self.object, dtime, self) mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._time_in_air = self._time_in_air + .001 self._time_in_air = self._time_in_air + .001

@ -313,6 +313,8 @@ end
function ARROW_ENTITY.on_step(self, dtime) function ARROW_ENTITY.on_step(self, dtime)
mcl_burning.tick(self.object, dtime, self) mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._time_in_air = self._time_in_air + .001 self._time_in_air = self._time_in_air + .001

@ -11,7 +11,7 @@
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
local campfires = { local campfires = {
{ name = "Campfire", lightlevel = 15, techname = "campfire", damage = 1, drops = "mcl_core:charcoal_lump 2" }, { name = "Campfire", lightlevel = 14, techname = "campfire", damage = 1, drops = "mcl_core:charcoal_lump 2" },
{ name = "Soul Campfire", lightlevel = 10, techname = "soul_campfire", damage = 2, drops = "mcl_blackstone:soul_soil" }, { name = "Soul Campfire", lightlevel = 10, techname = "soul_campfire", damage = 2, drops = "mcl_blackstone:soul_soil" },
} }
@ -25,6 +25,7 @@ for _, campfire in pairs(campfires) do
drawtype = "mesh", drawtype = "mesh",
mesh = "mcl_campfires_campfire.obj", mesh = "mcl_campfires_campfire.obj",
tiles = {{name="mcl_campfires_log.png"},}, tiles = {{name="mcl_campfires_log.png"},},
use_texture_alpha = "clip",
groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, }, groups = { handy=1, axey=1, material_wood=1, not_in_creative_inventory=1, campfire=1, },
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",
@ -73,6 +74,7 @@ for _, campfire in pairs(campfires) do
length=2.0 length=2.0
}} }}
}, },
use_texture_alpha = "clip",
groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 }, groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 },
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",

@ -1053,7 +1053,7 @@ for i=1,8 do
mcl_core.clear_snow_dirt(npos, node) mcl_core.clear_snow_dirt(npos, node)
end, end,
node_box = node_box, node_box = node_box,
groups = {shovely=1, attached_node=1,deco_block=1, dig_by_piston=1, snow_cover=1, top_snow=i}, groups = {shovely=2, attached_node=1,deco_block=1, dig_by_piston=1, snow_cover=1, top_snow=i},
sounds = mcl_sounds.node_sound_snow_defaults(), sounds = mcl_sounds.node_sound_snow_defaults(),
on_construct = mcl_core.on_snow_construct, on_construct = mcl_core.on_snow_construct,
on_place = on_place, on_place = on_place,
@ -1072,7 +1072,7 @@ minetest.register_node("mcl_core:snowblock", {
tiles = {"default_snow.png"}, tiles = {"default_snow.png"},
is_ground_content = true, is_ground_content = true,
stack_max = 64, stack_max = 64,
groups = {shovely=1, building_block=1, snow_cover=1}, groups = {shovely=2, building_block=1, snow_cover=1},
sounds = mcl_sounds.node_sound_snow_defaults(), sounds = mcl_sounds.node_sound_snow_defaults(),
on_construct = mcl_core.on_snow_construct, on_construct = mcl_core.on_snow_construct,
after_destruct = mcl_core.after_snow_destruct, after_destruct = mcl_core.after_snow_destruct,

@ -31,6 +31,7 @@ minetest.register_node("mcl_stonecutter:stonecutter", {
length=1 length=1
}} }}
}, },
use_texture_alpha = "clip",
drawtype = "nodebox", drawtype = "nodebox",
paramtype = "light", paramtype = "light",
paramtype2 = "facedir", paramtype2 = "facedir",

@ -288,7 +288,7 @@ minetest.register_tool("mcl_tools:shovel_wood", {
_repair_material = "group:wood", _repair_material = "group:wood",
_mcl_toollike_wield = true, _mcl_toollike_wield = true,
_mcl_diggroups = { _mcl_diggroups = {
shovely = { speed = 2, level = 1, uses = 60 } shovely = { speed = 2, level = 2, uses = 60 }
}, },
}) })
minetest.register_tool("mcl_tools:shovel_stone", { minetest.register_tool("mcl_tools:shovel_stone", {