forked from MineClone5/MineClone5
Merge pull request 'master' (#7) from MineClone2/MineClone2:master into master
Reviewed-on: NO11/MineClone2#7
This commit is contained in:
commit
6c6d40eb9d
|
@ -84,7 +84,7 @@ local function attach_object(self, obj)
|
||||||
end
|
end
|
||||||
end, name)
|
end, name)
|
||||||
obj:set_look_horizontal(yaw)
|
obj:set_look_horizontal(yaw)
|
||||||
mcl_tmp_message.message(obj, S("Sneak to dismount"))
|
mcl_title.set(obj, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60})
|
||||||
else
|
else
|
||||||
obj:get_luaentity()._old_visual_size = visual_size
|
obj:get_luaentity()._old_visual_size = visual_size
|
||||||
end
|
end
|
||||||
|
|
|
@ -6,6 +6,7 @@ Boats are used to travel on the surface of water.=Les bateaux sont utilisés pou
|
||||||
Dark Oak Boat=Bateau en Chêne Noir
|
Dark Oak Boat=Bateau en Chêne Noir
|
||||||
Jungle Boat=Bateau en Acajou
|
Jungle Boat=Bateau en Acajou
|
||||||
Oak Boat=Bateau en Chêne
|
Oak Boat=Bateau en Chêne
|
||||||
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Cliquez de nouveau avec le bouton droit sur le bateau pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet.
|
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=Faites un clic droit sur une source d'eau pour placer le bateau. Faites un clic droit sur le bateau pour y entrer. Utilisez [Gauche] et [Droite] pour diriger, [Avant] pour accélérer et [Arrière] pour ralentir ou reculer. Utilisez [Sneak] pour le quitter, frappez le bateau pour le faire tomber en tant qu'objet.
|
||||||
Spruce Boat=Bateau en Sapin
|
Spruce Boat=Bateau en Sapin
|
||||||
Water vehicle=Véhicule aquatique
|
Water vehicle=Véhicule aquatique
|
||||||
|
Sneak to dismount=
|
|
@ -1,7 +1,7 @@
|
||||||
name = mcl_boats
|
name = mcl_boats
|
||||||
author = PilzAdam
|
author = PilzAdam
|
||||||
description = Adds drivable boats.
|
description = Adds drivable boats.
|
||||||
depends = mcl_player, flowlib
|
depends = mcl_player, flowlib, mcl_title
|
||||||
optional_depends = mcl_core, doc_identifier
|
optional_depends = mcl_core, doc_identifier
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -646,7 +646,7 @@ register_minecart(
|
||||||
if player then
|
if player then
|
||||||
mcl_player.player_set_animation(player, "sit" , 30)
|
mcl_player.player_set_animation(player, "sit" , 30)
|
||||||
player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0})
|
player:set_eye_offset({x=0, y=-5.5, z=0},{x=0, y=-4, z=0})
|
||||||
mcl_tmp_message.message(clicker, S("Sneak to dismount"))
|
mcl_title.set(clicker, "actionbar", {text=S("Sneak to dismount"), color="white", stay=60})
|
||||||
end
|
end
|
||||||
end, name)
|
end, name)
|
||||||
end
|
end
|
||||||
|
|
|
@ -33,3 +33,4 @@ Activates minecarts when powered=Active les wagonnets lorsqu'il est alimenté
|
||||||
Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté
|
Emits redstone power when a minecart is detected=Émet de l'énergie redstone lorsqu'un wagonnet est détecté
|
||||||
Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails
|
Vehicle for fast travel on rails=Véhicule pour voyager rapidement sur rails
|
||||||
Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé
|
Can be ignited by tools or powered activator rail=Peut être allumé par des outils ou un rail d'activation motorisé
|
||||||
|
Sneak to dismount=
|
|
@ -1,6 +1,6 @@
|
||||||
name = mcl_minecarts
|
name = mcl_minecarts
|
||||||
author = Krock
|
author = Krock
|
||||||
description = Minecarts are vehicles to move players quickly on rails.
|
description = Minecarts are vehicles to move players quickly on rails.
|
||||||
depends = mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons
|
depends = mcl_title, mcl_explosions, mcl_core, mcl_sounds, mcl_player, mcl_achievements, mcl_chests, mcl_furnaces, mesecons_commandblock, mcl_hoppers, mcl_tnt, mesecons
|
||||||
optional_depends = doc_identifier, mcl_wip
|
optional_depends = doc_identifier, mcl_wip
|
||||||
|
|
||||||
|
|
|
@ -28,6 +28,7 @@ Pig=
|
||||||
Polar Bear=
|
Polar Bear=
|
||||||
Rabbit=
|
Rabbit=
|
||||||
Killer Bunny=
|
Killer Bunny=
|
||||||
|
The Killer Bunny=
|
||||||
Sheep=
|
Sheep=
|
||||||
Shulker=
|
Shulker=
|
||||||
Silverfish=
|
Silverfish=
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
Using it as fuel turns it into: @1.=L'utiliser comme combustible le transforme en : @1.
|
Using it as fuel turns it into: @1.=L'utiliser comme combustible le transforme en : @1.
|
||||||
@1 seconds=@1 secondes
|
@1 seconds=@1 secondes
|
||||||
# Item count times item name
|
# Item count times item name
|
||||||
%@1×@2=%@1×@
|
@1×@2=@1×@
|
||||||
# Itemname (25%)
|
# Itemname (25%)
|
||||||
@1 (@2%)=@1 (@2%)
|
@1 (@2%)=@1 (@2%)
|
||||||
# Itemname (<0.5%)
|
# Itemname (<0.5%)
|
||||||
|
|
|
@ -7,6 +7,7 @@ Creator of MineClone2=Schöpfer von MineClone2
|
||||||
Developers=Entwickler
|
Developers=Entwickler
|
||||||
Jump to speed up (additionally sprint)=Springen, um zu beschleunigen (zusätzlich sprinten)
|
Jump to speed up (additionally sprint)=Springen, um zu beschleunigen (zusätzlich sprinten)
|
||||||
Maintainers=Betreuer
|
Maintainers=Betreuer
|
||||||
|
MineClone5=MineClone5
|
||||||
Original Mod Authors=Original-Mod-Autoren
|
Original Mod Authors=Original-Mod-Autoren
|
||||||
Sneak to skip=Schleichen zum Überspringen
|
Sneak to skip=Schleichen zum Überspringen
|
||||||
Textures=Texturen
|
Textures=Texturen
|
||||||
|
|
|
@ -0,0 +1,14 @@
|
||||||
|
# textdomain: mcl_credits
|
||||||
|
3D Models=
|
||||||
|
A faithful Open Source clone of Minecraft=
|
||||||
|
Contributors=
|
||||||
|
Creator of MineClone=
|
||||||
|
Creator of MineClone2=
|
||||||
|
Developers=
|
||||||
|
Jump to speed up (additionally sprint)=
|
||||||
|
Maintainers=
|
||||||
|
MineClone5=
|
||||||
|
Original Mod Authors=
|
||||||
|
Sneak to skip=
|
||||||
|
Textures=
|
||||||
|
Translations=
|
|
@ -0,0 +1,14 @@
|
||||||
|
# textdomain: mcl_credits
|
||||||
|
3D Models=Modèles 3D
|
||||||
|
A faithful Open Source clone of Minecraft=Un clone open source de Minecraft
|
||||||
|
Contributors=Contributeurs
|
||||||
|
Creator of MineClone=Créateur de MineClone
|
||||||
|
Creator of MineClone2=Créateur de MineClone2
|
||||||
|
Developers=Développeurs
|
||||||
|
Jump to speed up (additionally sprint)=Saut pour accélérer (peut être combiné avec sprint)
|
||||||
|
Maintainers=Mainteneurs
|
||||||
|
MineClone5=MineClone5
|
||||||
|
Original Mod Authors=Auteurs des mods originaux
|
||||||
|
Sneak to skip=Shift pour passer
|
||||||
|
Textures=Textures
|
||||||
|
Translations=Traductions
|
|
@ -0,0 +1,14 @@
|
||||||
|
# textdomain: mcl_credits
|
||||||
|
3D Models=
|
||||||
|
A faithful Open Source clone of Minecraft=
|
||||||
|
Contributors=
|
||||||
|
Creator of MineClone=
|
||||||
|
Creator of MineClone2=
|
||||||
|
Developers=
|
||||||
|
Jump to speed up (additionally sprint)=
|
||||||
|
Maintainers=
|
||||||
|
MineClone5=
|
||||||
|
Original Mod Authors=
|
||||||
|
Sneak to skip=
|
||||||
|
Textures=
|
||||||
|
Translations=
|
|
@ -0,0 +1,14 @@
|
||||||
|
# textdomain: mcl_credits
|
||||||
|
3D Models=
|
||||||
|
A faithful Open Source clone of Minecraft=
|
||||||
|
Contributors=
|
||||||
|
Creator of MineClone=
|
||||||
|
Creator of MineClone2=
|
||||||
|
Developers=
|
||||||
|
Jump to speed up (additionally sprint)=
|
||||||
|
Maintainers=
|
||||||
|
MineClone5=
|
||||||
|
Original Mod Authors=
|
||||||
|
Sneak to skip=
|
||||||
|
Textures=
|
||||||
|
Translations=
|
|
@ -0,0 +1,50 @@
|
||||||
|
# mcl_title
|
||||||
|
|
||||||
|
Allow mods to show messages in the hud of players.
|
||||||
|
|
||||||
|
## mcl_title.set(player, type, data)
|
||||||
|
|
||||||
|
Show a hud message of `type` to player `player` with `data` as params.
|
||||||
|
|
||||||
|
The element will stay for the per-player param `stay` or `data.stay` (in gametick which is 1/20 second).
|
||||||
|
|
||||||
|
Here is a usage exemple:
|
||||||
|
|
||||||
|
```lua
|
||||||
|
--show a title in the HUD with minecraft color "gold"
|
||||||
|
mcl_title.set(player, "title", {text="dummy text", color="gold"})
|
||||||
|
|
||||||
|
--show a subtitle in the HUD with hex color "#612D2D"
|
||||||
|
mcl_title.set(player, "subtitle", {text="dummy subtitle", color="#612D2D"})
|
||||||
|
|
||||||
|
--show an actionbar in the HUD (above the hotbar) with minecraft color "red"
|
||||||
|
mcl_title.set(player, "subtitle", {text="dummy actionbar", color="red"})
|
||||||
|
|
||||||
|
--show a title in the HUD with minecraft color "gold" staying for 3 seconds (override stay setting)
|
||||||
|
mcl_title.set(player, "title", {text="dummy text", color="gold", stay=60})
|
||||||
|
```
|
||||||
|
|
||||||
|
## mcl_title.remove(player, type)
|
||||||
|
|
||||||
|
Hide HUD element of type `type` for player `player`.
|
||||||
|
|
||||||
|
## mcl_title.clear(player)
|
||||||
|
|
||||||
|
Remove every title/subtitle/actionbar from a player.
|
||||||
|
Basicaly run `mcl_title.remove(player, type)` for every type.
|
||||||
|
|
||||||
|
## mcl_title.params_set(player, params)
|
||||||
|
|
||||||
|
Allow mods to set `stay` and upcomming `fadeIn`/`fadeOut` params.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
mcl_title.params_set(player, {stay = 600}) --elements with no 'data.stay' field will stay during 30s (600/20)
|
||||||
|
```
|
||||||
|
|
||||||
|
## mcl_title.params_get(player)
|
||||||
|
|
||||||
|
Get `stay` and upcomming `fadeIn` and `fadeOut` params of a player as a table.
|
||||||
|
|
||||||
|
```lua
|
||||||
|
mcl_title.params_get(player)
|
||||||
|
```
|
|
@ -0,0 +1,236 @@
|
||||||
|
--Based on:
|
||||||
|
--https://www.digminecraft.com/game_commands/title_command.php
|
||||||
|
--https://youtu.be/oVrtQRO2hpY
|
||||||
|
|
||||||
|
--TODO: use SSCSM to reduce lag and network trafic (just send modchannel messages)
|
||||||
|
--TODO: fadeIn and fadeOut animation (needs engine change: SSCSM or native support)
|
||||||
|
--TODO: allow obfuscating text (needs engine change: SSCSM or native support)
|
||||||
|
--TODO: allow colorizing and styling of part of the text (NEEDS ENGINE CHANGE!!!)
|
||||||
|
--TODO: exactly mc like layout
|
||||||
|
|
||||||
|
--Note that the table storing timeouts use playername as index insteed of player objects (faster)
|
||||||
|
--This is intended in order to speedup the process of removing HUD elements the the timeout is up
|
||||||
|
|
||||||
|
local huds_idx = {}
|
||||||
|
|
||||||
|
local hud_hide_timeouts = {}
|
||||||
|
|
||||||
|
hud_hide_timeouts.title = {}
|
||||||
|
hud_hide_timeouts.subtitle = {}
|
||||||
|
hud_hide_timeouts.actionbar = {}
|
||||||
|
|
||||||
|
huds_idx.title = {}
|
||||||
|
huds_idx.subtitle = {}
|
||||||
|
huds_idx.actionbar = {}
|
||||||
|
|
||||||
|
mcl_title = {}
|
||||||
|
mcl_title.defaults = {fadein = 10, stay = 70, fadeout = 20}
|
||||||
|
mcl_title.layout = {}
|
||||||
|
mcl_title.layout.title = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = -1.3}, size = 7}
|
||||||
|
mcl_title.layout.subtitle = {position = {x = 0.5, y = 0.5}, alignment = {x = 0, y = 1.7}, size = 4}
|
||||||
|
mcl_title.layout.actionbar = {position = {x = 0.5, y = 1}, alignment = {x = 0, y = 0}, size = 1}
|
||||||
|
|
||||||
|
local get_color = mcl_util.get_color
|
||||||
|
|
||||||
|
--local string = string
|
||||||
|
local pairs = pairs
|
||||||
|
|
||||||
|
local function gametick_to_secondes(gametick)
|
||||||
|
if gametick then
|
||||||
|
return gametick / 20
|
||||||
|
else
|
||||||
|
return nil
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
--https://github.com/minetest/minetest/blob/b3b075ea02034306256b486dd45410aa765f035a/doc/lua_api.txt#L8477
|
||||||
|
--[[
|
||||||
|
local function style_to_bits(bold, italic)
|
||||||
|
if bold then
|
||||||
|
if italic then
|
||||||
|
return 3
|
||||||
|
else
|
||||||
|
return 1
|
||||||
|
end
|
||||||
|
else
|
||||||
|
if italic then
|
||||||
|
return 2
|
||||||
|
else
|
||||||
|
return 0
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
]]
|
||||||
|
|
||||||
|
--PARAMS SYSTEM
|
||||||
|
local player_params = {}
|
||||||
|
|
||||||
|
minetest.register_on_joinplayer(function(player)
|
||||||
|
--local playername = player:get_player_name()
|
||||||
|
player_params[player] = {
|
||||||
|
stay = mcl_title.defaults.stay,
|
||||||
|
--fadeIn = mcl_title.defaults.fadein,
|
||||||
|
--fadeOut = mcl_title.defaults.fadeout,
|
||||||
|
}
|
||||||
|
local _, hex_color = get_color("white")
|
||||||
|
huds_idx.title[player] = player:hud_add({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
position = mcl_title.layout.title.position,
|
||||||
|
alignment = mcl_title.layout.title.alignment,
|
||||||
|
text = "",
|
||||||
|
--style = 0,
|
||||||
|
size = {x = mcl_title.layout.title.size},
|
||||||
|
number = hex_color,
|
||||||
|
z_index = 100,
|
||||||
|
})
|
||||||
|
huds_idx.subtitle[player] = player:hud_add({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
position = mcl_title.layout.subtitle.position,
|
||||||
|
alignment = mcl_title.layout.subtitle.alignment,
|
||||||
|
text = "",
|
||||||
|
--style = 0,
|
||||||
|
size = {x = mcl_title.layout.subtitle.size},
|
||||||
|
number = hex_color,
|
||||||
|
z_index = 100,
|
||||||
|
})
|
||||||
|
huds_idx.actionbar[player] = player:hud_add({
|
||||||
|
hud_elem_type = "text",
|
||||||
|
position = mcl_title.layout.actionbar.position,
|
||||||
|
offset = {x = 0, y = -210},
|
||||||
|
alignment = mcl_title.layout.actionbar.alignment,
|
||||||
|
--style = 0,
|
||||||
|
text = "",
|
||||||
|
size = {x = mcl_title.layout.actionbar.size},
|
||||||
|
number = hex_color,
|
||||||
|
z_index = 100,
|
||||||
|
})
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_on_leaveplayer(function(player)
|
||||||
|
local playername = player:get_player_name()
|
||||||
|
|
||||||
|
--remove player params from the list
|
||||||
|
player_params[player] = nil
|
||||||
|
|
||||||
|
--remove HUD idx from the list (HUD elements are removed by the engine)
|
||||||
|
huds_idx.title[player] = nil
|
||||||
|
huds_idx.subtitle[player] = nil
|
||||||
|
huds_idx.actionbar[player] = nil
|
||||||
|
|
||||||
|
--remove timers from list
|
||||||
|
hud_hide_timeouts.title[playername] = nil
|
||||||
|
hud_hide_timeouts.subtitle[playername] = nil
|
||||||
|
hud_hide_timeouts.actionbar[playername] = nil
|
||||||
|
end)
|
||||||
|
|
||||||
|
function mcl_title.params_set(player, data)
|
||||||
|
player_params[player] = {
|
||||||
|
stay = data.stay or mcl_title.defaults.stay,
|
||||||
|
--fadeIn = data.fadeIn or mcl_title.defaults.fadein,
|
||||||
|
--fadeOut = data.fadeOut or mcl_title.defaults.fadeout,
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_title.params_get(player)
|
||||||
|
return player_params[player]
|
||||||
|
end
|
||||||
|
|
||||||
|
--API FUNCTIONS
|
||||||
|
|
||||||
|
function mcl_title.set(player, type, data)
|
||||||
|
if not data.color then
|
||||||
|
data.color = "white"
|
||||||
|
end
|
||||||
|
local _, hex_color = get_color(data.color)
|
||||||
|
if not hex_color then
|
||||||
|
return false
|
||||||
|
end
|
||||||
|
|
||||||
|
player:hud_change(huds_idx[type][player], "text", data.text)
|
||||||
|
player:hud_change(huds_idx[type][player], "number", hex_color)
|
||||||
|
|
||||||
|
--apply bold and italic
|
||||||
|
--player:hud_change(huds_idx[type][player], "style", style_to_bits(data.bold, data.italic))
|
||||||
|
|
||||||
|
hud_hide_timeouts[type][player:get_player_name()] = gametick_to_secondes(data.stay) or gametick_to_secondes(mcl_title.params_get(player).stay)
|
||||||
|
return true
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_title.remove(player, type)
|
||||||
|
if player then
|
||||||
|
player:hud_change(huds_idx[type][player], "text", "")
|
||||||
|
--player:hud_change(huds_idx[type][player], "style", 0) --no styling
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
function mcl_title.clear(player)
|
||||||
|
mcl_title.remove(player, "title")
|
||||||
|
mcl_title.remove(player, "subtitle")
|
||||||
|
mcl_title.remove(player, "actionbar")
|
||||||
|
end
|
||||||
|
|
||||||
|
minetest.register_on_dieplayer(function(player)
|
||||||
|
mcl_title.clear(player)
|
||||||
|
end)
|
||||||
|
|
||||||
|
minetest.register_globalstep(function(dtime)
|
||||||
|
local new_timeouts = {
|
||||||
|
title = {},
|
||||||
|
subtitle = {},
|
||||||
|
actionbar = {},
|
||||||
|
}
|
||||||
|
for element, content in pairs(hud_hide_timeouts) do
|
||||||
|
for name, timeout in pairs(content) do
|
||||||
|
timeout = timeout - dtime
|
||||||
|
if timeout <= 0 then
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.remove(player, element)
|
||||||
|
else
|
||||||
|
new_timeouts[element][name] = timeout
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
hud_hide_timeouts = new_timeouts
|
||||||
|
end)
|
||||||
|
|
||||||
|
|
||||||
|
--DEBUG STUFF!!
|
||||||
|
--[[
|
||||||
|
minetest.register_chatcommand("title", {
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.set(player, "title", {text=param, color="gold", bold=true, italic=true})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("subtitle", {
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.set(player, "subtitle", {text=param, color="gold"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("actionbar", {
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.set(player, "actionbar", {text=param, color="gold"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("timeout", {
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.params_set(player, {stay = 600})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
|
||||||
|
minetest.register_chatcommand("all", {
|
||||||
|
func = function(name, param)
|
||||||
|
local player = minetest.get_player_by_name(name)
|
||||||
|
mcl_title.params_set(player, {stay = 600})
|
||||||
|
mcl_title.set(player, "title", {text=param, color="gold"})
|
||||||
|
mcl_title.set(player, "subtitle", {text=param, color="gold"})
|
||||||
|
mcl_title.set(player, "actionbar", {text=param, color="gold"})
|
||||||
|
end,
|
||||||
|
})
|
||||||
|
]]
|
|
@ -0,0 +1,4 @@
|
||||||
|
name = mcl_title
|
||||||
|
description = Add an API to add in HUD title
|
||||||
|
depends = mcl_colors
|
||||||
|
author = AFCMS
|
|
@ -1,7 +0,0 @@
|
||||||
# mcl_temp_message
|
|
||||||
|
|
||||||
Allow mods to show short messages in the hud of players.
|
|
||||||
|
|
||||||
## mcl_tmp_message.message(player, message)
|
|
||||||
|
|
||||||
Show above the hotbar a hud message <message> to player <player>.
|
|
|
@ -1,44 +0,0 @@
|
||||||
mcl_tmp_message = {}
|
|
||||||
|
|
||||||
local huds = {}
|
|
||||||
local hud_hide_timeouts = {}
|
|
||||||
|
|
||||||
function mcl_tmp_message.message(player, message)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
player:hud_change(huds[name], "text", message)
|
|
||||||
hud_hide_timeouts[name] = 3
|
|
||||||
end
|
|
||||||
|
|
||||||
minetest.register_on_joinplayer(function(player)
|
|
||||||
huds[player:get_player_name()] = player:hud_add({
|
|
||||||
hud_elem_type = "text",
|
|
||||||
position = {x=0.5, y=1},
|
|
||||||
offset = {x = 0, y = -210},
|
|
||||||
alignment = {x=0, y=0},
|
|
||||||
number = 0xFFFFFF ,
|
|
||||||
text = "",
|
|
||||||
z_index = 100,
|
|
||||||
})
|
|
||||||
end)
|
|
||||||
|
|
||||||
minetest.register_on_leaveplayer(function(player)
|
|
||||||
local name = player:get_player_name()
|
|
||||||
huds[name] = nil
|
|
||||||
hud_hide_timeouts[name] = nil
|
|
||||||
end)
|
|
||||||
|
|
||||||
minetest.register_globalstep(function(dtime)
|
|
||||||
local new_timeouts = {}
|
|
||||||
for name, timeout in pairs(hud_hide_timeouts) do
|
|
||||||
timeout = timeout - dtime
|
|
||||||
if timeout <= 0 then
|
|
||||||
local player = minetest.get_player_by_name(name)
|
|
||||||
if player then
|
|
||||||
player:hud_change(huds[name], "text", "")
|
|
||||||
end
|
|
||||||
else
|
|
||||||
new_timeouts[name] = timeout
|
|
||||||
end
|
|
||||||
end
|
|
||||||
hud_hide_timeouts = new_timeouts
|
|
||||||
end)
|
|
|
@ -1,3 +0,0 @@
|
||||||
name = mcl_tmp_message
|
|
||||||
author = Fleckenstein
|
|
||||||
description = A simple API to show a temporary message to a player
|
|
|
@ -284,6 +284,12 @@ local function damage_anvil_by_falling(pos, distance)
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
|
local anvilbox = {
|
||||||
|
type = "fixed",
|
||||||
|
fixed = {
|
||||||
|
{ -8 / 16, -8 / 16, -6 / 16, 8 / 16, 8 / 16, 6 / 16 },
|
||||||
|
},
|
||||||
|
}
|
||||||
local anvildef = {
|
local anvildef = {
|
||||||
groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, anvil=1},
|
groups = {pickaxey=1, falling_node=1, falling_node_damage=1, crush_after_fall=1, deco_block=1, anvil=1},
|
||||||
tiles = {"mcl_anvils_anvil_top_damaged_0.png^[transformR90", "mcl_anvils_anvil_base.png", "mcl_anvils_anvil_side.png"},
|
tiles = {"mcl_anvils_anvil_top_damaged_0.png^[transformR90", "mcl_anvils_anvil_base.png", "mcl_anvils_anvil_side.png"},
|
||||||
|
@ -297,11 +303,14 @@ local anvildef = {
|
||||||
node_box = {
|
node_box = {
|
||||||
type = "fixed",
|
type = "fixed",
|
||||||
fixed = {
|
fixed = {
|
||||||
{-8/16, 2/16, -5/16, 8/16, 8/16, 5/16}, -- top
|
{ -6 / 16, -8 / 16, -6 / 16, 6 / 16, -4 / 16, 6 / 16 },
|
||||||
{-5/16, -4/16, -2/16, 5/16, 5/16, 2/16}, -- middle
|
{ -5 / 16, -4 / 16, -4 / 16, 5 / 16, -3 / 16, 4 / 16 },
|
||||||
{-8/16, -8/16, -5/16, 8/16, -4/16, 5/16}, -- base
|
{ -4 / 16, -3 / 16, -2 / 16, 4 / 16, 2 / 16, 2 / 16 },
|
||||||
|
{ -8 / 16, 2 / 16, -5 / 16, 8 / 16, 8 / 16, 5 / 16 },
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
selection_box = anvilbox,
|
||||||
|
collision_box = anvilbox,
|
||||||
sounds = mcl_sounds.node_sound_metal_defaults(),
|
sounds = mcl_sounds.node_sound_metal_defaults(),
|
||||||
_mcl_blast_resistance = 1200,
|
_mcl_blast_resistance = 1200,
|
||||||
_mcl_hardness = 5,
|
_mcl_hardness = 5,
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 195 B After Width: | Height: | Size: 5.9 KiB |
Binary file not shown.
Before Width: | Height: | Size: 209 B After Width: | Height: | Size: 5.7 KiB |
Binary file not shown.
Before Width: | Height: | Size: 220 B After Width: | Height: | Size: 5.7 KiB |
|
@ -330,7 +330,7 @@ function mcl_beds.on_rightclick(pos, player, is_top)
|
||||||
message = select(2, lay_down(player, ppos, other))
|
message = select(2, lay_down(player, ppos, other))
|
||||||
end
|
end
|
||||||
if message then
|
if message then
|
||||||
mcl_tmp_message.message(player, message)
|
mcl_title.set(player, "actionbar", {text=message, color="white", stay=60})
|
||||||
end
|
end
|
||||||
else
|
else
|
||||||
lay_down(player, nil, nil, false)
|
lay_down(player, nil, nil, false)
|
||||||
|
|
|
@ -1133,7 +1133,7 @@ for color, desc in pairs(boxtypes) do
|
||||||
if mod_doc then
|
if mod_doc then
|
||||||
if is_canonical then
|
if is_canonical then
|
||||||
longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.")
|
longdesc = S("A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.")
|
||||||
usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.")
|
usagehelp = S("To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.")
|
||||||
entry_name = S("Shulker Box")
|
entry_name = S("Shulker Box")
|
||||||
else
|
else
|
||||||
create_entry = false
|
create_entry = false
|
||||||
|
|
|
@ -24,7 +24,7 @@ Red Shulker Box=
|
||||||
Grey Shulker Box=
|
Grey Shulker Box=
|
||||||
Black Shulker Box=
|
Black Shulker Box=
|
||||||
A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=
|
A shulker box is a portable container which provides 27 inventory slots for any item except shulker boxes. Shulker boxes keep their inventory when broken, so shulker boxes as well as their contents can be taken as a single item. Shulker boxes come in many different colors.=
|
||||||
To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out.=
|
To access the inventory of a shulker box, place and right-click it. To take a shulker box and its contents with you, just break and collect it, the items will not fall out. Place the shulker box again to be able to retrieve its contents.=
|
||||||
Shulker Box=
|
Shulker Box=
|
||||||
Large Chest=
|
Large Chest=
|
||||||
Inventory=
|
Inventory=
|
||||||
|
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_fireworks
|
||||||
|
Firework Rocket=
|
||||||
|
Flight Duration:=
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_fireworks
|
||||||
|
Firework Rocket=Fusée
|
||||||
|
Flight Duration:=Durée de vol :
|
|
@ -0,0 +1,3 @@
|
||||||
|
# textdomain: mcl_fireworks
|
||||||
|
Firework Rocket=
|
||||||
|
Flight Duration:=
|
|
@ -1,5 +1,8 @@
|
||||||
# textdomain: mcl_maps
|
# textdomain: mcl_maps
|
||||||
Empty Map=Carte Vierge
|
Empty Map=Carte Vierge
|
||||||
Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Les cartes vierges ne sont pas utiles en tant que cartes, mais elles peuvent être empilées et transformées en cartes utilisables.
|
Empty maps are not useful as maps, but they can be stacked and turned to maps which can be used.=Les cartes vierges ne sont pas utiles en tant que cartes, mais elles peuvent être empilées et transformées en cartes utilisables.
|
||||||
Rightclick to start using the map (which can't be stacked anymore).=Clic droit pour commencer à utiliser la carte (qui ne peut plus être empilée).
|
Rightclick to create a filled map (which can't be stacked anymore).=Clic droit pour créer une carte remplie (qui ne peut plus être empilée).
|
||||||
Map=Carte
|
Map=Carte
|
||||||
|
Shows a map image.=Affiche une carte.
|
||||||
|
When created, the map saves the nearby area as an image that can be viewed any time by holding the map.=Lors de sa création, la carte sauvegarde le terrain proche sous forme d'image qui peut être consultée n'importe quand en tenant la carte dans la main.
|
||||||
|
Hold the map in your hand. This will display a map on your screen.=Tenez la carte dans votre main. Cela affichera la carte à l'écran.
|
||||||
|
|
Loading…
Reference in New Issue