forked from VoxeLibre/VoxeLibre
Merge branch 'master' into chat-command-builder
This commit is contained in:
commit
698b107cb3
|
@ -4632,6 +4632,7 @@ function mobs:alias_mob(old_name, new_name)
|
||||||
|
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--[[
|
||||||
local timer = 0
|
local timer = 0
|
||||||
minetest.register_globalstep(function(dtime)
|
minetest.register_globalstep(function(dtime)
|
||||||
timer = timer + dtime
|
timer = timer + dtime
|
||||||
|
@ -4648,3 +4649,4 @@ minetest.register_globalstep(function(dtime)
|
||||||
end
|
end
|
||||||
timer = 0
|
timer = 0
|
||||||
end)
|
end)
|
||||||
|
]]--
|
|
@ -61,14 +61,26 @@ mobs:register_mob("mobs_mc:enderdragon", {
|
||||||
ignores_nametag = true,
|
ignores_nametag = true,
|
||||||
do_custom = function(self)
|
do_custom = function(self)
|
||||||
mcl_bossbars.update_boss(self, "Ender Dragon", "light_purple")
|
mcl_bossbars.update_boss(self, "Ender Dragon", "light_purple")
|
||||||
|
if self._portal_pos then
|
||||||
|
-- migrate old format
|
||||||
|
if type(self._portal_pos) == "string" then
|
||||||
|
self._portal_pos = minetest.string_to_pos(self._portal_pos)
|
||||||
|
end
|
||||||
|
local portal_center = vector.add(self._portal_pos, vector.new(3, 11, 3))
|
||||||
|
local pos = self.object:get_pos()
|
||||||
|
if vector.distance(pos, portal_center) > 50 then
|
||||||
|
self.object:set_pos(self._last_good_pos or portal_center)
|
||||||
|
else
|
||||||
|
self._last_good_pos = pos
|
||||||
|
end
|
||||||
|
end
|
||||||
end,
|
end,
|
||||||
on_die = function(self, pos)
|
on_die = function(self, pos)
|
||||||
if self._portal_pos then
|
if self._portal_pos then
|
||||||
local portal_pos = minetest.string_to_pos(self._portal_pos)
|
mcl_structures.call_struct(self._portal_pos, "end_exit_portal_open")
|
||||||
mcl_structures.call_struct(portal_pos, "end_exit_portal_open")
|
|
||||||
if self._initial then
|
if self._initial then
|
||||||
mcl_experience.throw_experience(pos, 11500) -- 500 + 11500 = 12000
|
mcl_experience.throw_experience(pos, 11500) -- 500 + 11500 = 12000
|
||||||
minetest.set_node(vector.add(portal_pos, vector.new(3, 5, 3)), {name = mobs_mc.items.dragon_egg})
|
minetest.set_node(vector.add(self._portal_pos, vector.new(3, 5, 3)), {name = mobs_mc.items.dragon_egg})
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end,
|
end,
|
||||||
|
|
|
@ -0,0 +1,209 @@
|
||||||
|
mcl_credits = {
|
||||||
|
players = {},
|
||||||
|
}
|
||||||
|
|
||||||
|
mcl_credits.description = "A faithful Open Source clone of Minecraft"
|
||||||
|
|
||||||
|
-- Sub-lists are sorted by number of commits, but the list should not be rearranged (-> new contributors are just added at the end of the list)
|
||||||
|
mcl_credits.people = {
|
||||||
|
{"Creator of MineClone", 0x0A9400, {
|
||||||
|
"davedevils",
|
||||||
|
}},
|
||||||
|
{"Creator of MineClone2", 0xFBF837, {
|
||||||
|
"Wuzzy",
|
||||||
|
}},
|
||||||
|
{"Maintainers", 0xFF51D5, {
|
||||||
|
"Fleckenstein",
|
||||||
|
"kay27",
|
||||||
|
"oilboi",
|
||||||
|
}},
|
||||||
|
{"Developers", 0xF84355, {
|
||||||
|
"bzoss",
|
||||||
|
"AFCMS",
|
||||||
|
"epCode",
|
||||||
|
"ryvnf",
|
||||||
|
"iliekprogrammar",
|
||||||
|
"MysticTempest",
|
||||||
|
"Rootyjr",
|
||||||
|
"Nicu",
|
||||||
|
"aligator",
|
||||||
|
}},
|
||||||
|
{"Contributors", 0x52FF00, {
|
||||||
|
"Code-Sploit",
|
||||||
|
"Laurent Rocher",
|
||||||
|
"HimbeerserverDE",
|
||||||
|
"TechDudie",
|
||||||
|
"Alexander Minges",
|
||||||
|
"ArTee3",
|
||||||
|
"ZeDique la Ruleta",
|
||||||
|
"pitchum",
|
||||||
|
"wuniversales",
|
||||||
|
"Bu-Gee",
|
||||||
|
"David McMackins II",
|
||||||
|
"Nicholas Niro",
|
||||||
|
"Wouters Dorian",
|
||||||
|
"Blue Blancmange",
|
||||||
|
"Jared Moody",
|
||||||
|
"Li0n",
|
||||||
|
"Midgard",
|
||||||
|
"NO11",
|
||||||
|
"Saku Laesvuori",
|
||||||
|
"Yukitty",
|
||||||
|
"ZedekThePD",
|
||||||
|
"aldum",
|
||||||
|
"dBeans",
|
||||||
|
"nickolas360",
|
||||||
|
"yutyo",
|
||||||
|
"ztianyang",
|
||||||
|
}},
|
||||||
|
{"MineClone5", 0xA60014, {
|
||||||
|
"kay27",
|
||||||
|
"Debiankaios",
|
||||||
|
"epCode",
|
||||||
|
"NO11",
|
||||||
|
"j45",
|
||||||
|
}},
|
||||||
|
{"3D Models", 0x0019FF, {
|
||||||
|
"22i",
|
||||||
|
"tobyplowy",
|
||||||
|
"epCode",
|
||||||
|
}},
|
||||||
|
{"Textures", 0xFF9705, {
|
||||||
|
"XSSheep",
|
||||||
|
"Wuzzy",
|
||||||
|
"kingoscargames",
|
||||||
|
"leorockway",
|
||||||
|
"xMrVizzy",
|
||||||
|
"yutyo"
|
||||||
|
}},
|
||||||
|
{"Translations", 0x00FF60, {
|
||||||
|
"Wuzzy",
|
||||||
|
"Rocher Laurent",
|
||||||
|
"wuniversales",
|
||||||
|
"kay27",
|
||||||
|
"pitchum",
|
||||||
|
}},
|
||||||
|
}
|
||||||
|
|
||||||
|
local function add_hud_element(def, huds, y)
|
||||||
|
def.alignment = {x = 0, y = 0}
|
||||||
|
def.position = {x = 0.5, y = 0}
|
||||||
|
def.offset = {x = 0, y = y}
|
||||||
|
def.z_index = 1001
|
||||||
|
local id = huds.player:hud_add(def)
|
||||||
|
table.insert(huds.ids, id)
|
||||||
|
huds.moving[id] = y
|
||||||
|
return id
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_credits.show(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
if mcl_credits.players[name] then
|
||||||
|
return
|
||||||
|
end
|
||||||
|
local huds = {
|
||||||
|
new = true, -- workaround for MT < 5.5 (sending hud_add and hud_remove in the same tick)
|
||||||
|
player = player,
|
||||||
|
moving = {},
|
||||||
|
ids = {
|
||||||
|
player:hud_add({
|
||||||
|
hud_elem_type = "image",
|
||||||
|
text = "menu_bg.png",
|
||||||
|
position = {x = 0, y = 0},
|
||||||
|
alignment = {x = 1, y = 1},
|
||||||
|
scale = {x = -100, y = -100},
|
||||||
|
z_index = 1000,
|
||||||
|
}),
|
||||||
|
player:hud_add({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
text = "Sneak to skip",
|
||||||
|
position = {x = 1, y = 1},
|
||||||
|
alignment = {x = -1, y = -1},
|
||||||
|
offset = {x = -5, y = -5},
|
||||||
|
z_index = 1001,
|
||||||
|
number = 0xFFFFFF,
|
||||||
|
})
|
||||||
|
},
|
||||||
|
}
|
||||||
|
add_hud_element({
|
||||||
|
hud_elem_type = "image",
|
||||||
|
text = "mineclone2_logo.png",
|
||||||
|
scale = {x = 1, y = 1},
|
||||||
|
}, huds, 300, 0)
|
||||||
|
add_hud_element({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
text = mcl_credits.description,
|
||||||
|
number = 0x757575,
|
||||||
|
scale = {x = 5, y = 5},
|
||||||
|
}, huds, 350, 0)
|
||||||
|
local y = 450
|
||||||
|
for _, group in ipairs(mcl_credits.people) do
|
||||||
|
add_hud_element({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
text = group[1],
|
||||||
|
number = group[2],
|
||||||
|
scale = {x = 3, y = 3},
|
||||||
|
}, huds, y, 0)
|
||||||
|
y = y + 25
|
||||||
|
for _, name in ipairs(group[3]) do
|
||||||
|
y = y + 25
|
||||||
|
add_hud_element({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
text = name,
|
||||||
|
number = 0xFFFFFF,
|
||||||
|
scale = {x = 1, y = 1},
|
||||||
|
}, huds, y, 0)
|
||||||
|
end
|
||||||
|
y = y + 200
|
||||||
|
end
|
||||||
|
huds.icon = add_hud_element({
|
||||||
|
hud_elem_type = "image",
|
||||||
|
text = "mineclone2_icon.png",
|
||||||
|
scale = {x = 1, y = 1},
|
||||||
|
}, huds, y)
|
||||||
|
mcl_credits.players[name] = huds
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_credits.hide(player)
|
||||||
|
local name = player:get_player_name()
|
||||||
|
local huds = mcl_credits.players[name]
|
||||||
|
if huds then
|
||||||
|
for _, id in pairs(huds.ids) do
|
||||||
|
player:hud_remove(id)
|
||||||
|
end
|
||||||
|
end
|
||||||
|
mcl_credits.players[name] = nil
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
mcl_credits.players[player:get_player_name()] = nil
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_globalstep(function(dtime)
|
||||||
|
for _, huds in pairs(mcl_credits.players) do
|
||||||
|
local player = huds.player
|
||||||
|
if not huds.new and player:get_player_control().sneak then
|
||||||
|
mcl_credits.hide(player)
|
||||||
|
else
|
||||||
|
local moving = {}
|
||||||
|
local any
|
||||||
|
for id, y in pairs(huds.moving) do
|
||||||
|
y = y - 1
|
||||||
|
if y > -100 then
|
||||||
|
if id == huds.icon then
|
||||||
|
y = math.max(400, y)
|
||||||
|
else
|
||||||
|
any = true
|
||||||
|
end
|
||||||
|
player:hud_change(id, "offset", {x = 0, y = y})
|
||||||
|
moving[id] = y
|
||||||
|
end
|
||||||
|
end
|
||||||
|
if not any then
|
||||||
|
mcl_credits.hide(player)
|
||||||
|
end
|
||||||
|
huds.moving = moving
|
||||||
|
end
|
||||||
|
huds.new = false
|
||||||
|
end
|
||||||
|
end)
|
|
@ -0,0 +1,3 @@
|
||||||
|
name = mcl_credits
|
||||||
|
author = Fleckenstein
|
||||||
|
description = Show a HUD containing the credits
|
Binary file not shown.
After Width: | Height: | Size: 3.9 KiB |
Binary file not shown.
After Width: | Height: | Size: 76 KiB |
|
@ -169,7 +169,16 @@ minetest.register_node("mcl_end:dragon_egg", {
|
||||||
sounds = mcl_sounds.node_sound_stone_defaults(),
|
sounds = mcl_sounds.node_sound_stone_defaults(),
|
||||||
_mcl_blast_resistance = 9,
|
_mcl_blast_resistance = 9,
|
||||||
_mcl_hardness = 3,
|
_mcl_hardness = 3,
|
||||||
-- TODO: Make dragon egg teleport on punching
|
on_punch = function(pos, node)
|
||||||
|
local max_dist = vector.new(15, 7, 15)
|
||||||
|
local positions = minetest.find_nodes_in_area(vector.subtract(pos, max_dist), vector.add(pos, max_dist), "air", false)
|
||||||
|
if #positions > 0 then
|
||||||
|
local tpos = positions[math.random(#positions)]
|
||||||
|
minetest.remove_node(pos)
|
||||||
|
minetest.set_node(tpos, node)
|
||||||
|
minetest.check_for_falling(tpos)
|
||||||
|
end
|
||||||
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -60,7 +60,7 @@ local function spawn_crystal(pos)
|
||||||
end
|
end
|
||||||
local portal_pos = vector.add(portal_center, vector.new(-3, -1, -3))
|
local portal_pos = vector.add(portal_center, vector.new(-3, -1, -3))
|
||||||
mcl_structures.call_struct(portal_pos, "end_exit_portal")
|
mcl_structures.call_struct(portal_pos, "end_exit_portal")
|
||||||
minetest.add_entity(vector.add(portal_pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon"):get_luaentity()._portal_pos = minetest.pos_to_string(portal_pos)
|
minetest.add_entity(vector.add(portal_pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon"):get_luaentity()._portal_pos = portal_pos
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_entity("mcl_end:crystal", {
|
minetest.register_entity("mcl_end:crystal", {
|
||||||
|
|
|
@ -211,6 +211,9 @@ function mcl_portals.end_teleport(obj, pos)
|
||||||
-- Look towards the main End island
|
-- Look towards the main End island
|
||||||
if dim ~= "end" then
|
if dim ~= "end" then
|
||||||
obj:set_look_horizontal(math.pi/2)
|
obj:set_look_horizontal(math.pi/2)
|
||||||
|
-- Show credits
|
||||||
|
else
|
||||||
|
mcl_credits.show(obj)
|
||||||
end
|
end
|
||||||
mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(target))
|
mcl_worlds.dimension_change(obj, mcl_worlds.pos_to_dimension(target))
|
||||||
minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}, true)
|
minetest.sound_play("mcl_portals_teleport", {pos=target, gain=0.5, max_hear_distance = 16}, true)
|
||||||
|
|
|
@ -1253,7 +1253,7 @@ end
|
||||||
local function generate_end_exit_portal(pos)
|
local function generate_end_exit_portal(pos)
|
||||||
local dragon_entity = minetest.add_entity(vector.add(pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon"):get_luaentity()
|
local dragon_entity = minetest.add_entity(vector.add(pos, vector.new(3, 11, 3)), "mobs_mc:enderdragon"):get_luaentity()
|
||||||
dragon_entity._initial = true
|
dragon_entity._initial = true
|
||||||
dragon_entity._portal_pos = minetest.pos_to_string(pos)
|
dragon_entity._portal_pos = pos
|
||||||
mcl_structures.call_struct(pos, "end_exit_portal")
|
mcl_structures.call_struct(pos, "end_exit_portal")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue