forked from VoxeLibre/VoxeLibre
Compare commits
2 Commits
master
...
repeat_unt
Author | SHA1 | Date |
---|---|---|
kay27 | d710539ff2 | |
kay27 | 38d89edeb6 |
|
@ -61,22 +61,6 @@ mobs:register_mob("mobs_mc:enderdragon", {
|
|||
ignores_nametag = true,
|
||||
do_custom = function(self)
|
||||
mcl_bossbars.update_boss(self, "Ender Dragon", "light_purple")
|
||||
for _, obj in ipairs(minetest.get_objects_inside_radius(self.object:get_pos(), 80)) do
|
||||
local luaentity = obj:get_luaentity()
|
||||
if luaentity and luaentity.name == "mcl_end:crystal" then
|
||||
if luaentity.beam then
|
||||
if luaentity.beam == self.beam then
|
||||
break
|
||||
end
|
||||
else
|
||||
if self.beam then
|
||||
self.beam:remove()
|
||||
end
|
||||
minetest.add_entity(self.object:get_pos(), "mcl_end:crystal_beam"):get_luaentity():init(self.object, obj)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
if self._portal_pos then
|
||||
-- migrate old format
|
||||
if type(self._portal_pos) == "string" then
|
||||
|
|
|
@ -36,12 +36,12 @@ end
|
|||
|
||||
local last_id = 0
|
||||
|
||||
function mcl_bossbars.add_bar(player, def, dynamic, priority)
|
||||
function mcl_bossbars.add_bar(player, def)
|
||||
local name = player:get_player_name()
|
||||
local bars = mcl_bossbars.bars[name]
|
||||
local bar = {text = def.text, priority = priority or 0}
|
||||
local bar = {text = def.text}
|
||||
bar.color, bar.image = get_color_info(def.color, def.percentage)
|
||||
if dynamic then
|
||||
if def.dynamic then
|
||||
for _, other in pairs(bars) do
|
||||
if not other.id and other.color == bar.color and (other.original_text or other.text) == bar.text and other.image == bar.image then
|
||||
if not other.count then
|
||||
|
@ -55,7 +55,7 @@ function mcl_bossbars.add_bar(player, def, dynamic, priority)
|
|||
end
|
||||
end
|
||||
table.insert(bars, bar)
|
||||
if not dynamic then
|
||||
if not def.dynamic then
|
||||
bar.raw_color = def.color
|
||||
bar.id = last_id + 1
|
||||
last_id = bar.id
|
||||
|
@ -69,11 +69,10 @@ function mcl_bossbars.remove_bar(id)
|
|||
mcl_bossbars.static[id] = nil
|
||||
end
|
||||
|
||||
function mcl_bossbars.update_bar(id, def, priority)
|
||||
function mcl_bossbars.update_bar(id, def)
|
||||
local old = mcl_bossbars.static[id]
|
||||
old.color = get_color_info(def.color or old.raw_color, def.percentage or old.percentage)
|
||||
old.text = def.text or old.text
|
||||
old.priority = priority or old.priority
|
||||
end
|
||||
|
||||
function mcl_bossbars.update_boss(luaentity, name, color)
|
||||
|
@ -82,15 +81,14 @@ function mcl_bossbars.update_boss(luaentity, name, color)
|
|||
text = luaentity.nametag,
|
||||
percentage = math.floor(luaentity.health / luaentity.hp_max * 100),
|
||||
color = color,
|
||||
dynamic = true,
|
||||
}
|
||||
if not bardef.text or bardef.text == "" then
|
||||
bardef.text = name
|
||||
end
|
||||
local pos = object:get_pos()
|
||||
for _, player in pairs(minetest.get_connected_players()) do
|
||||
local d = vector.distance(pos, player:get_pos())
|
||||
if d <= 80 then
|
||||
mcl_bossbars.add_bar(player, bardef, true, d)
|
||||
for _, obj in pairs(minetest.get_objects_inside_radius(object:get_pos(), 128)) do
|
||||
if obj:is_player() then
|
||||
mcl_bossbars.add_bar(obj, bardef)
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -117,7 +115,6 @@ minetest.register_globalstep(function()
|
|||
local name = player:get_player_name()
|
||||
local bars = mcl_bossbars.bars[name]
|
||||
local huds = mcl_bossbars.huds[name]
|
||||
table.sort(bars, function(a, b) return a.priority < b.priority end)
|
||||
local huds_new = {}
|
||||
local bars_new = {}
|
||||
local i = 0
|
||||
|
|
|
@ -79,54 +79,6 @@ minetest.register_entity("mcl_end:crystal", {
|
|||
_hittable_by_projectile = true
|
||||
})
|
||||
|
||||
minetest.register_entity("mcl_end:crystal_beam", {
|
||||
initial_properties = {
|
||||
physical = false,
|
||||
visual = "cube",
|
||||
visual_size = {x = 1, y = 1, z = 1},
|
||||
textures = {
|
||||
"mcl_end_crystal_beam.png^[transformR90",
|
||||
"mcl_end_crystal_beam.png^[transformR90",
|
||||
"mcl_end_crystal_beam.png",
|
||||
"mcl_end_crystal_beam.png",
|
||||
"blank.png",
|
||||
"blank.png",
|
||||
},
|
||||
static_save = false,
|
||||
},
|
||||
spin = 0,
|
||||
init = function(self, dragon, crystal)
|
||||
self.dragon, self.crystal = dragon, crystal
|
||||
crystal:get_luaentity().beam = self.object
|
||||
dragon:get_luaentity().beam = self.object
|
||||
end,
|
||||
on_deactivate = function(self)
|
||||
if self.crystal and self.crystal:get_luaentity() then
|
||||
self.crystal:get_luaentity().beam = nil
|
||||
end
|
||||
if self.dragon and self.dragon:get_luaentity() then
|
||||
self.dragon:get_luaentity().beam = nil
|
||||
end
|
||||
end,
|
||||
on_step = function(self, dtime)
|
||||
if self.dragon and self.dragon:get_luaentity() and self.crystal and self.crystal:get_luaentity() then
|
||||
self.spin = self.spin + dtime * math.pi * 2 / 4
|
||||
local dragon_pos, crystal_pos = self.dragon:get_pos(), self.crystal:get_pos()
|
||||
|
||||
dragon_pos.y = dragon_pos.y + 4
|
||||
crystal_pos.y = crystal_pos.y + 2
|
||||
|
||||
self.object:set_pos(vector.divide(vector.add(dragon_pos, crystal_pos), 2))
|
||||
local rot = vector.dir_to_rotation(vector.direction(dragon_pos, crystal_pos))
|
||||
rot.z = self.spin
|
||||
self.object:set_rotation(rot)
|
||||
self.object:set_properties({visual_size = {x = 0.5, y = 0.5, z = vector.distance(dragon_pos, crystal_pos)}})
|
||||
else
|
||||
self.object:remove()
|
||||
end
|
||||
end,
|
||||
})
|
||||
|
||||
minetest.register_craftitem("mcl_end:crystal", {
|
||||
inventory_image = "mcl_end_crystal_item.png",
|
||||
description = S("End Crystal"),
|
||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 2.0 KiB |
|
@ -32,8 +32,8 @@ local player_collision = function(player)
|
|||
|
||||
for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do
|
||||
|
||||
if object and (object:is_player()
|
||||
or (object:get_luaentity()._cmi_is_mob == true and object ~= player)) then
|
||||
if object:is_player()
|
||||
or (object:get_luaentity()._cmi_is_mob == true and object ~= player) then
|
||||
|
||||
local pos2 = object:get_pos()
|
||||
local vec = {x = pos.x - pos2.x, z = pos.z - pos2.z}
|
||||
|
@ -46,7 +46,7 @@ local player_collision = function(player)
|
|||
end
|
||||
end
|
||||
|
||||
return({x,z})
|
||||
return({x * 5,z * 5})
|
||||
end
|
||||
|
||||
-- converts yaw to degrees
|
||||
|
@ -119,37 +119,6 @@ end
|
|||
|
||||
local pitch, name, node_stand, node_stand_below, node_head, node_feet, pos
|
||||
|
||||
|
||||
minetest.register_on_punchplayer(function(player, hitter, damage)
|
||||
if hitter:is_player() then
|
||||
if hitter:get_player_control().aux1 then
|
||||
player:add_velocity(hitter:get_velocity())
|
||||
end
|
||||
if hitter:get_velocity().y < -6 then
|
||||
player:set_hp(player:get_hp() - (damage * math.random(0.50 , 0.75)))
|
||||
local pos = player:get_pos()
|
||||
minetest.add_particlespawner({
|
||||
amount = 15,
|
||||
time = 0.1,
|
||||
minpos = {x=pos.x-0.5, y=pos.y-0.5, z=pos.z-0.5},
|
||||
maxpos = {x=pos.x+0.5, y=pos.y+0.5, z=pos.z+0.5},
|
||||
minvel = {x=-0.1, y=-0.1, z=-0.1},
|
||||
maxvel = {x=0.1, y=0.1, z=0.1},
|
||||
minacc = {x=0, y=0, z=0},
|
||||
maxacc = {x=0, y=0, z=0},
|
||||
minexptime = 1,
|
||||
maxexptime = 2,
|
||||
minsize = 1.5,
|
||||
maxsize = 1.5,
|
||||
collisiondetection = false,
|
||||
vertical = false,
|
||||
texture = "mcl_particles_crit.png^[colorize:#bc7a57:127",
|
||||
})
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
|
||||
minetest.register_globalstep(function(dtime)
|
||||
|
||||
time = time + dtime
|
||||
|
@ -210,26 +179,26 @@ minetest.register_globalstep(function(dtime)
|
|||
|
||||
if parent then
|
||||
local parent_yaw = degrees(parent:get_yaw())
|
||||
player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch, -limit_vel_yaw(yaw, parent_yaw) + parent_yaw, 0))
|
||||
player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0))
|
||||
elseif controls.sneak then
|
||||
-- controls head pitch when sneaking
|
||||
player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch+36,0,0))
|
||||
-- sets eye height, and nametag color accordingly
|
||||
player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 0, g = 225 }})
|
||||
player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.35, nametag_color = { r = 225, b = 225, a = 0, g = 225 }})
|
||||
-- sneaking body conrols
|
||||
player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0,0,0))
|
||||
elseif get_item_group(mcl_playerinfo[name].node_head, "water") ~= 0 and is_sprinting(name) == true then
|
||||
-- set head pitch and yaw when swimming
|
||||
player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch+90-degrees(dir_to_pitch(player_velocity)),player_vel_yaw - yaw,0))
|
||||
-- sets eye height, and nametag color accordingly
|
||||
player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,0.8,0.312}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,0.8,0.35}, eye_height = 0.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
-- control body bone when swimming
|
||||
player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(degrees(dir_to_pitch(player_velocity)) - 90,-player_vel_yaw + yaw + 180,0))
|
||||
else
|
||||
-- sets eye height, and nametag color accordingly
|
||||
player:set_properties({collisionbox = {-0.312,0,-0.312,0.312,1.8,0.312}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
player:set_properties({collisionbox = {-0.35,0,-0.35,0.35,1.8,0.35}, eye_height = 1.5, nametag_color = { r = 225, b = 225, a = 225, g = 225 }})
|
||||
|
||||
player:set_bone_position("Head", vector.new(0,6.3,0), vector.new(pitch, player_vel_yaw - yaw, 0))
|
||||
player:set_bone_position("Body_Control", vector.new(0,6.3,0), vector.new(0, -player_vel_yaw + yaw, 0))
|
||||
|
|
Loading…
Reference in New Issue