Compare commits

..

3 Commits

177 changed files with 1319 additions and 2616 deletions

View File

@ -31,7 +31,6 @@
* chmodsayshello
* PrarieWind
* RandomLegoBrick
* SumianVoice
## Contributors
* Laurent Rocher
@ -80,8 +79,6 @@
* MrRar
* Lazerbeak12345
* mrminer
* Thunder1035
* opfromthestart
## MineClone5
* kay27

View File

@ -2,7 +2,7 @@
An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils.
Developed by many people. Not developed or endorsed by Mojang AB.
Version: 0.79 (in development)
Version: 0.78 (in development)
### Gameplay
You start in a randomly-generated world made entirely of cubes. You can explore

View File

@ -1,170 +0,0 @@
# MineClone2
Un jeu non-officiel similaire à Minecraft pour Minetest. Forké depuis Mineclone par davedevils. Développé par de nombreuses personnes. Ni développé ou supporté par Mojang AB.
Version: 0.79 (en dévelopment)
### Gameplay
Vous atterissez dans un monde fait entièrement de cubes et généré aléatoirement. Vous pouvez explorer le monde, miner et construire presque n'importe quel bloc pour créer de nouvelles structures. Vous pouvez choisir de jouer en "mode survie" dans lequel vous devez combattre des monstres et la faim et progresser lentement dans différents aspects du jeu, comme l'extraction de minerai, l'agriculture, la construction de machines et ainsi de suite. Ou alors vous pouvez jouer en "mode créatif" où vous pouvez construire à peu près n'importe quoi instantanément.
### Résumé du Gameplay
* Jeu de type bac-à-sable, sans objetifs
* Survie : combattre des monstres hostiles et la faim
* Creuser pour du minerai et d'autres trésors
* Magie : gagner de l'expérience et enchanter les outils
* Utiliser les blocs ramassés pour construire de magnifiques bâtiments, votre imagination est la limite
* Ramasser des fleurs (et d'autres sources de teinture) et colorez votre monde
* Trouvez des graines et commencez à cultiver
* Trouvez ou fabriquez des centaines d'objets
* Construisez un réseau ferroviaire complexe et amusez vous avec les wagonnets
* En mode créatif vous pouvez construire presque n'importe quoi gratuitement et sans limite
## Comment jouer (démarrer rapidement)
### Commencer
* **Frappez un arbre** jusqu'à ce qu'il casse et donne du bois
* Placez le **bois dans la grille 2x2** (la "grille de fabrication" de votre menu d'inventaire) et fabriquez 4 planches de bois
* Placer les 4 planches de bois dans la grille 2x2 et **fabriquez une table d'artisanat**
* **Cliquez droit la table d'artisanat** (icone livre) pour apprendre toutes les recettes possibles
* **Fabriquez une pioche de bois** pour miner la pierre
* Différents outils minent différentes sortes de blocs. Essayez les !
* Continuez à jouer comme vous voulez. Amusez vous !
### Agriculture
* Trouvez des graines
* Fabriquez une houe
* Cliquez droit la terre ou des blocs similaires avec la houe pour créer des terres agricoles
* Placer des graines sur des terres agricoles et regardez les pousser
* Récoltez les plantes une fois matûres
* Les terres agricoles proche de l'eau deviennent humides et accélèrent la croissance
### Four
* Fabriquer un Four
* Le four permet d'obtenir plus d'objets
* L'emplacement du haut doit contienir un objet fondable (par ex : minerai de fer)
* L'emplacement du bas doit contienir un objet combustible (par ex : charbon)
* Voir le guide d'artisanat pour en apprendre plus sur les objets fondables et combustibles
### Aide supplémentaire
Plus d'aide à propos du jeu, des blocs, objets et plus encore peuvent être trouvés dans le jeu. Vous pouvez accéder à l'aide depuis le menu inventaire.
### Objets spéciaux
Les objets suivants sont intéressants pour le mode Créatif et pour les constructeurs de cartes d'aventure. Ils ne peuvent être obtenus dans le jeu ou dans l'inventaire créatif.
* Barrière : `mcl_core:barrier`
Utilisez la commande de chat `/giveme` pour les obtenir. Voir l'aide interne au jeu pour une explication.
## Installation
Ce jeu nécessite [Minetest](http://minetest.net) pour fonctionner (version 5.4.1 ou plus). Vous devez donc installer Minetest d'abord. Seules les versions stables de Minetest sont officielement supportées.
Il n'y a pas de support de MineClone2 dans les versions développement de Minetest.
Pour installer MineClone2 (si ce n'est pas déjà fait), déplacez ce dossier dans le dossier “games” de Minetest. Consultez l'aide de Minetest pour en apprendre plus.
## Liens utiles
Le dépôt de MineClone2 est hébergé sur Mesehub. Pour contribuer ou rapporter des problèmes, aller là-bas.
* Mesehub: <https://git.minetest.land/MineClone2/MineClone2>
* Discord: <https://discord.gg/xE4z8EEpDC>
* YouTube <https://www.youtube.com/channel/UClI_YcsXMF3KNeJtoBfnk9A>
* IRC: <https://web.libera.chat/#mineclone2>
* Matrix: <https://app.element.io/#/room/#mc2:matrix.org>
* Reddit: <https://www.reddit.com/r/MineClone2/>
* Minetest forums: <https://forum.minetest.net/viewtopic.php?f=50&t=16407>
* ContentDB: <https://content.minetest.net/packages/wuzzy/mineclone2/>
* OpenCollective: <https://opencollective.com/mineclone2>
## Objectif
* Créer un clone stable, moddable, libre et gratuit basé sur le moteur de jeu Minetest avec des fonctionalités abouties, utilisable à la fois en mode solo et multijoueur. Actuellement, beaucoup des fonctionalités de **Minecraft Java Edition** sont déjà implémentées et leur amélioration est prioritaire sur les nouvelles demandes.
* Avec une priorité moindre, implémenter les fonctionalités des versions **Minecraft + OptiFine** (OtiFine autant que supporté par le moteur Minetest). Cela signifie que les fonctionalités présentes dans les versions listées sont priorisées.
* Dans l'idéal, créer une expérience performante qui tourne bien sur des ordinateurs à basse performance. Malheureusement, en raison des mécanismes de Minecraft et des limitations du moteur Minetest ainsi que de la petite taille de la communauté de joueurs sur des ordinateurs à basse performances, les optimisations sont difficiles à explorer.
## Statut de complétion
Ce jeu est actuellement au stade **beta**.
Il est jouable mais incomplet en fonctionalités.
La rétro-compatibilité n'est pas entièrement garantie, mettre votre monde à jour peut causer de petits bugs.
Si vous voulez utiliser la version de développement de MineClone2 en production, la branche master est habituellement relativement stable. Les branches de test fusionnent souvent des pull requests expérimentales et doivent être considérées comme moins stable.
Les principales fonctionalités suivantes sont disponibles :
* Outils, armes
* Armure
* Système de fabrication : grille 2x2, table d'artisanat (grille 3x3), four, incluant un guide de fabrication
* Coffres, grands coffres, coffre ender, boite de shulker
* Fours, entonnoirs
* Faim
* La plupart des monstres et animaux
* Tout les minerais de Minecraft
* La plupart des blocs de l'overworld
* Eau et lave
* Météo
* 28 biomes + 5 biomes du nether
* Le Nether, monde souterrain brûlant dans une autre dimension
* Circuits Redstone (partiel)
* Effets de Statut (partiel)
* Expérience
* Enchantement
* Brassage, potions, flèches trempées (partiel)
* Bâteaux
* Feu
* Blocs de construction : escaliers, dalles, portes, trappes, barrière, portillon, muret
* Horloge
* Boussole
* Eponge
* Bloc de slime
* Petites plantes et pousses
* Teintures
* Bannières
* Blocs de décoration : verre, verre teinté, vitres, barres de fer, terre cuites (et couleurs), têtes et plus
* Cadres d'objets
* Juke-boxes
* Livres pour écrire
* Commandes
* Villages
* L'End
* et plus !
Les fonctionalités suivantes sont incomplètes :
* certains monstres et animaux
* certains composants de Redstone
* Wagonnets spéciaux
* quelques blocs et objets non-triviaux
Fonctionalités bonus (absentes de Minecraft) :
* Guide d'artisanat intégré au jeu qui montre les recettes d'artisanat et de cuisson
* Système d'aide intégré au jeu contenant des informations à propos des techniques de base, blocs, objets et plus
* Recettes d'artisanat temporaires. Elles existent uniquement pour rendre des objets accessibles qui ne le seraient pas autrement sauf en mode créatif. Elles seront retirées au cours de l'avancement du développement et de l'ajout de nouvelles fonctionalités.
* Pousses dans les coffres en mapgen v6
* Entièrement moddable (grâce la puissante API lua de Minetest)
* Nouveaux blocs et objets :
* Outil de recherche, montre l'aide de ce qu'il touche
* Plus de dalles et d'escaliers
* Portillon en briques du Nether
* Barrière en briques du Nether rouges
* Portillon en briques du Nether rouges
* Structures de remplacement - ces petites variantes de structures de Minecraft servent de remplacement en attendant qu'on arrive à en faire fonctionner de plus grandes :
* Cabine dans les bois (Manoir des bois)
* Avant-poste du Nether (Forteresse)
Différences techniques avec Minecraft :
* Limite en hauteur de 31000 blocs (bien plus grand que Minecraft)
* Taille horizontale du monde 62000×62000 blocs (bien plus petit que Minecraft mais toujours très grand)
* Toujours assez incomplet et buggé
* Des blocs, objets, ennemis et fonctionalités manquent
* Quelques objets ont des noms légèrement différents pour être plus faciles à distinguer
* Des musiques différentes pour le juke-boxe
* Des textures différentes (Pixel Perfection)
* Des sons différents (sources diverses)
* Un moteur de jeu différent (Minetest)
* Des bonus cachés différents
...et enfin MineClone2 est un logiciel libre !
## Autres fichiers readme
* `LICENSE.txt`: Le texte de la license GPLv3
* `CONTRIBUTING.md`: Information pour ceux qui veulent contribuer
* `API.md`: Pour les modders Minetest qui veulent modder ce jeu
* `LEGAL.md`: Information légale
* `CREDITS.md`: Liste des contributeurs

View File

@ -161,9 +161,9 @@ minetest.register_on_dieplayer(function(player, mt_reason)
if mt_reason.approved then
mcl_damage.run_death_callbacks(player, mcl_damage.from_mt(mt_reason))
end
minetest.log("action","Player "..player:get_player_name().." died at "..minetest.pos_to_string(vector.round(player:get_pos())))
end)
minetest.register_on_mods_loaded(function()
table.sort(mcl_damage.modifiers, function(a, b) return a.priority < b.priority end)
end)

View File

@ -9,5 +9,4 @@ 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. 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
Water vehicle=Véhicule aquatique
Sneak to dismount=Se baisser pour descendre
Obsidian Boat=Bateau en Obsidienne
Sneak to dismount=

View File

@ -10,4 +10,3 @@ Rightclick on a water source to place the boat. Rightclick the boat to enter it.
Spruce Boat=
Water vehicle=
Sneak to dismount=
Obsidian Boat=

View File

@ -847,16 +847,15 @@ minetest.register_entity(":__builtin:item", {
elseif self._flowing == true and not is_in_water and not is_floating then
-- Disable flowing physics if not on/in flowing liquid
self._flowing = false
enable_physics(self.object, self, true)
disable_physics(self.object, self, true)
return
end
-- If node is not registered or node is walkably solid and resting on nodebox
local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name
local def = minetest.registered_nodes[nn]
local v = self.object:get_velocity()
local is_on_floor = def and (def.walkable
and not def.groups.slippery and v.y == 0)
local is_on_floor = (minetest.registered_nodes[nn].walkable
and not minetest.registered_nodes[nn].groups.slippery and v.y == 0)
if not minetest.registered_nodes[nn]
or is_floating or is_on_floor then

View File

@ -33,4 +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é
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é
Sneak to dismount=Se baisser pour descendre
Sneak to dismount=

View File

@ -213,11 +213,11 @@ end
local collision = function(self)
local pos = self.object:get_pos()
if not pos then return {0,0} end
local vel = self.object:get_velocity()
local x = 0
local z = 0
local width = -self.collisionbox[1] + self.collisionbox[4] + 0.5
for _,object in pairs(minetest.get_objects_inside_radius(pos, width)) do
local ent = object:get_luaentity()
@ -254,14 +254,12 @@ local set_velocity = function(self, v)
end
local yaw = (self.object:get_yaw() or 0) + self.rotate
local vv = self.object:get_velocity()
if vv then
self.object:set_velocity({
x = (sin(yaw) * -v) + c_x,
y = vv.y,
z = (cos(yaw) * v) + c_y,
})
end
self.object:set_velocity({
x = (sin(yaw) * -v) + c_x,
y = self.object:get_velocity().y,
z = (cos(yaw) * v) + c_y,
})
end
@ -409,15 +407,15 @@ local set_animation = function(self, anim, fixed_frame)
if flight_check(self) and self.fly and anim == "walk" then anim = "fly" end
self._current_animation = self._current_animation or ""
self.animation.current = self.animation.current or ""
if (anim == self._current_animation
if (anim == self.animation.current
or not self.animation[anim .. "_start"]
or not self.animation[anim .. "_end"]) and self.state ~= "die" then
return
end
self._current_animation = anim
self.animation.current = anim
local a_start = self.animation[anim .. "_start"]
local a_end
@ -3004,7 +3002,6 @@ end
local function check_entity_cramming(self)
local p = self.object:get_pos()
if not p then return end
local oo = minetest.get_objects_inside_radius(p,1)
local mobs = {}
for _,o in pairs(oo) do
@ -3470,10 +3467,7 @@ local mob_activate = function(self, staticdata, def, dtime)
def.textures = {def.textures}
end
local c = 1
if #def.textures > c then c = #def.textures end
self.base_texture = def.textures[math.random(c)]
self.base_texture = def.textures[random(1, #def.textures)]
self.base_mesh = def.mesh
self.base_size = self.visual_size
self.base_colbox = self.collisionbox

View File

@ -23,8 +23,7 @@ local table_copy = table.copy
local table_remove = table.remove
local pairs = pairs
local dbg_spawn_attempts = 0
local dbg_spawn_succ = 0
-- range for mob count
local aoc_range = 136
@ -417,87 +416,47 @@ local function get_water_spawn(p)
end
end
local function spawn_check(pos,spawn_def)
if not spawn_def then return end
dbg_spawn_attempts = dbg_spawn_attempts + 1
local dimension = mcl_worlds.pos_to_dimension(pos)
local mob_type = minetest.registered_entities[spawn_def.name].type
local gotten_node = get_node(pos).name
local gotten_biome = minetest.get_biome_data(pos)
if not gotten_node or not gotten_biome then return end
gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with
local is_ground = minetest.get_item_group(gotten_node,"solid") ~= 0
if not is_ground then
pos.y = pos.y - 1
gotten_node = get_node(pos).name
is_ground = minetest.get_item_group(gotten_node,"solid") ~= 0
end
pos.y = pos.y + 1
local is_water = get_item_group(gotten_node, "water") ~= 0
local is_lava = get_item_group(gotten_node, "lava") ~= 0
local is_leaf = get_item_group(gotten_node, "leaves") ~= 0
local is_bedrock = gotten_node == "mcl_core:bedrock"
local is_grass = minetest.get_item_group(gotten_node,"grass_block") ~= 0
local mob_count_wide = count_mobs(pos,aoc_range,mob_type)
local mob_count = count_mobs(pos,32,mob_type)
if pos and spawn_def
and mob_count_wide < (mob_cap[mob_type] or 15)
and mob_count < 5
and pos.y >= spawn_def.min_height
and pos.y <= spawn_def.max_height
and spawn_def.dimension == dimension
and biome_check(spawn_def.biomes, gotten_biome)
and (is_ground or spawn_def.type_of_spawning ~= "ground")
and (spawn_def.type_of_spawning ~= "ground" or not is_leaf)
and (spawn_def.check_position and spawn_def.check_position(pos) or true)
and (not is_farm_animal(spawn_def.name) or is_grass)
and (spawn_def.type_of_spawning ~= "water" or is_water)
and not is_bedrock then
--only need to poll for node light if everything else worked
local gotten_light = get_node_light(pos)
if gotten_light >= spawn_def.min_light and gotten_light <= spawn_def.max_light then
return true
end
end
return false
end
local dbg_spawn_attempts = 0
local dbg_spawn_succ = 0
local function spawn_group(p,mob,spawn_on,group_max,group_min)
if not group_min then group_min = 1 end
local nn= minetest.find_nodes_in_area_under_air(vector.offset(p,-5,-3,-5),vector.offset(p,5,3,5),spawn_on)
local o
table.shuffle(nn)
if not nn or #nn < 1 then
nn = {}
table.insert(nn,p)
end
for i = 1, math.random(group_min,group_max) do
local sp = vector.offset(nn[math.random(#nn)],0,1,0)
if spawn_check(nn[math.random(#nn)],mob) then
if mob.type_of_spawning == "water" then
sp = get_water_spawn(sp)
end
o = minetest.add_entity(sp,mob.name)
if o then dbg_spawn_succ = dbg_spawn_succ + 1 end
if mob.type_of_spawning == "water" then
sp = get_water_spawn(sp)
end
o = minetest.add_entity(sp,mob.name)
if o then dbg_spawn_succ = dbg_spawn_succ + 1 end
end
return o
end
minetest.register_chatcommand("mobstats",{
privs = { debug = true },
func = function(n,param)
local pos = minetest.get_player_by_name(n):get_pos()
minetest.chat_send_player(n,"mobs within 32 radius of player:"..count_mobs(pos,32))
minetest.chat_send_player(n,"total mobs:"..count_mobs_total())
minetest.chat_send_player(n,"spawning attempts since server start:"..dbg_spawn_attempts)
minetest.chat_send_player(n,"successful spawns since server start:"..dbg_spawn_succ)
end
})
if mobs_spawn then
local perlin_noise
local function spawn_a_mob(pos, dimension, y_min, y_max)
--create a disconnected clone of the spawn dictionary
--prevents memory leak
local mob_library_worker_table = table_copy(spawn_dictionary)
dbg_spawn_attempts = dbg_spawn_attempts + 1
local dimension = dimension or mcl_worlds.pos_to_dimension(pos)
local goal_pos = get_next_mob_spawn_pos(pos)
--grab mob that fits into the spawning location
--randomly grab a mob, don't exclude any possibilities
local spawning_position_list = find_nodes_in_area_under_air(
{x = goal_pos.x, y = y_min, z = goal_pos.z},
{x = goal_pos.x, y = y_max, z = goal_pos.z},
@ -506,6 +465,37 @@ if mobs_spawn then
if #spawning_position_list <= 0 then return end
local spawning_position = spawning_position_list[math_random(1, #spawning_position_list)]
local gotten_node = get_node(spawning_position).name
local gotten_biome = minetest.get_biome_data(spawning_position)
if not gotten_node or not gotten_biome then return end
gotten_biome = get_biome_name(gotten_biome.biome) --makes it easier to work with
--add this so mobs don't spawn inside nodes
spawning_position.y = spawning_position.y + 1
--only need to poll for node light if everything else worked
local gotten_light = get_node_light(spawning_position)
local is_water = get_item_group(gotten_node, "water") ~= 0
local is_lava = get_item_group(gotten_node, "lava") ~= 0
local is_leaf = get_item_group(gotten_node, "leaves") ~= 0
local is_bedrock = gotten_node == "mcl_core:bedrock"
local is_ground = not (is_water or is_lava)
local is_grass = minetest.get_item_group(gotten_node,"grass_block") ~= 0
local has_bed = minetest.find_node_near(pos,25,{"group:bed"})
if not is_ground then
spawning_position.y = spawning_position.y - 1
end
local mob_def
--create a disconnected clone of the spawn dictionary
--prevents memory leak
local mob_library_worker_table = table_copy(spawn_dictionary)
--grab mob that fits into the spawning location
--randomly grab a mob, don't exclude any possibilities
perlin_noise = perlin_noise or minetest_get_perlin(noise_params)
local noise = perlin_noise:get_3d(spawning_position)
local current_summary_chance = summary_chance
@ -521,10 +511,27 @@ if mobs_spawn then
step_chance = step_chance + mob_chance
end
local mob_def = mob_library_worker_table[mob_index]
local spawn_in_group = minetest.registered_entities[mob_def.name].spawn_in_group or 4
local spawn_in_group_min = minetest.registered_entities[mob_def.name].spawn_in_group_min or 1
local mob_type = minetest.registered_entities[mob_def.name].type
if spawn_check(spawning_position,mob_def) then
local spawn_in_group = minetest.registered_entities[mob_def.name].spawn_in_group or 4
local mob_count_wide = count_mobs(pos,aoc_range,mob_type)
local mob_count = count_mobs(spawning_position,32,mob_type)
if mob_def
and mob_count_wide < (mob_cap[mob_type] or 15)
and mob_count < 5
and spawning_position.y >= mob_def.min_height
and spawning_position.y <= mob_def.max_height
and mob_def.dimension == dimension
and biome_check(mob_def.biomes, gotten_biome)
and gotten_light >= mob_def.min_light
and gotten_light <= mob_def.max_light
and (is_ground or mob_def.type_of_spawning ~= "ground")
and (mob_def.type_of_spawning ~= "ground" or not is_leaf)
and (mob_def.check_position and mob_def.check_position(spawning_position) or true)
and (not is_farm_animal(mob_def.name) or is_grass)
and (mob_type ~= "npc" or has_bed)
and (mob_def.type_of_spawning ~= "water" or is_water)
and not is_bedrock
then
if mob_def.type_of_spawning == "water" then
spawning_position = get_water_spawn(spawning_position)
if not spawning_position then
@ -536,10 +543,9 @@ if mobs_spawn then
end
--everything is correct, spawn mob
local object
if spawn_in_group and ( mob_type ~= "monster" or math.random(5) == 1 ) then
object = spawn_group(spawning_position,mob_def,{minetest.get_node(vector.offset(spawning_position,0,-1,0)).name},spawn_in_group,spawn_in_group_min)
else
object = minetest.add_entity(spawning_position, mob_def.name)
if spawn_in_group then
object = spawn_group(spawning_position,mob_def,{gotten_node},spawn_in_group,spawn_in_group_min)
else object = minetest.add_entity(spawning_position, mob_def.name)
end
@ -573,14 +579,3 @@ if mobs_spawn then
end
end)
end
minetest.register_chatcommand("mobstats",{
privs = { debug = true },
func = function(n,param)
local pos = minetest.get_player_by_name(n):get_pos()
minetest.chat_send_player(n,"mobs within 32 radius of player:"..count_mobs(pos,32))
minetest.chat_send_player(n,"total mobs:"..count_mobs_total())
minetest.chat_send_player(n,"spawning attempts since server start:"..dbg_spawn_attempts)
minetest.chat_send_player(n,"successful spawns since server start:"..dbg_spawn_succ)
end
})

View File

@ -12,7 +12,6 @@ local S = minetest.get_translator("mobs_mc")
mcl_mobs:register_mob("mobs_mc:creeper", {
type = "monster",
spawn_class = "hostile",
spawn_in_group = 1,
hp_min = 20,
hp_max = 20,
xp_min = 5,

View File

@ -219,7 +219,6 @@ local select_enderman_animation = function(animation_type)
end
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
local spawners = {}
mcl_mobs:register_mob("mobs_mc:enderman", {
description = S("Enderman"),
@ -264,42 +263,20 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
do_custom = function(self, dtime)
-- PARTICLE BEHAVIOUR HERE.
local enderpos = self.object:get_pos()
if self._particle_timer and self._particle_timer >= 1 then
for _,player in pairs(minetest.get_connected_players()) do
if not spawners[player] then spawners[player] = {} end
local dst = vector.distance(player:get_pos(),enderpos)
if dst < 128 and not spawners[player][self.object] then
self._particle_timer = 0
spawners[player][self.object] = minetest.add_particlespawner({
amount = 5,
minpos = vector.new(-0.6,0,-0.6),
maxpos = vector.new(0.6,3,0.6),
minvel = vector.new(-0.25,-0.25,-0.25),
maxvel = vector.new(0.25,0.25,0.25),
minacc = vector.new(-0.5,-0.5,-0.5),
maxacc = vector.new(0.5,0.5,0.5),
minexptime = 0.2,
maxexptime = 3,
minsize = 0.2,
maxsize = 1.2,
collisiondetection = true,
vertical = false,
time = 0,
texture = "mcl_portals_particle"..math.random(1, 5)..".png",
attached = self.object,
playername = player:get_player_name(),
})
elseif dst > 128 and spawners[player][self.object] then
minetest.delete_particlespawner(spawners[player][self.object])
spawners[player][self.object] = nil
end
end
elseif not self._particle_timer then
self._particle_timer = 0
local chanceOfParticle = math.random(0, 1)
if chanceOfParticle == 1 then
minetest.add_particle({
pos = {x=enderpos.x+math.random(-1,1)*math.random()/2,y=enderpos.y+math.random(0,3),z=enderpos.z+math.random(-1,1)*math.random()/2},
velocity = {x=math.random(-.25,.25), y=math.random(-.25,.25), z=math.random(-.25,.25)},
acceleration = {x=math.random(-.5,.5), y=math.random(-.5,.5), z=math.random(-.5,.5)},
expirationtime = math.random(),
size = math.random(),
collisiondetection = true,
vertical = false,
texture = "mcl_portals_particle"..math.random(1, 5)..".png",
})
end
self._particle_timer = self._particle_timer + dtime
-- RAIN DAMAGE / EVASIVE WARP BEHAVIOUR HERE.
enderpos = self.object:get_pos()
local dim = mcl_worlds.pos_to_dimension(enderpos)
if dim == "overworld" then
if mcl_weather.state == "rain" or mcl_weather.state == "lightning" then
@ -335,24 +312,24 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
else return end
-- AGRESSIVELY WARP/CHASE PLAYER BEHAVIOUR HERE.
if self.state == "attack" then
if self.attack then
local target = self.attack
local pos = target:get_pos()
if pos ~= nil then
if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then
self:teleport(target)
--if (minetest.get_timeofday() * 24000) > 5001 and (minetest.get_timeofday() * 24000) < 19000 then
--self:teleport(nil)
--self.state = ""
--else
if self.attack then
local target = self.attack
local pos = target:get_pos()
if pos ~= nil then
if vector.distance(self.object:get_pos(), target:get_pos()) > 10 then
self:teleport(target)
end
end
end
end
else --if not attacking try to tp to the dark
if minetest.get_node_light(enderpos) > minetest.LIGHT_MAX then
self:teleport(nil)
end
--end
end
-- ARROW / DAYTIME PEOPLE AVOIDANCE BEHAVIOUR HERE.
-- Check for arrows and people nearby.
enderpos = self.object:get_pos()
local enderpos = self.object:get_pos()
enderpos.y = enderpos.y + 1.5
local objs = minetest.get_objects_inside_radius(enderpos, 2)
for n = 1, #objs do
@ -616,13 +593,6 @@ mcl_mobs:register_mob("mobs_mc:enderman", {
attack_type = "dogfight",
})
minetest.register_on_leaveplayer(function(player)
for _,s in pairs(spawners[player]) do
minetest.delete_particlespawner(s)
end
spawners[player] = nil
end)
-- End spawn
mcl_mobs:spawn_specific(

View File

@ -114,7 +114,6 @@ dofile(path .. "/squid.lua") -- Animation, sound and egg texture by daufinsyd
dofile(path .. "/villager.lua") -- KrupnoPavel Mesh and animation by toby109tt / https://github.com/22i
-- Illagers and witch
dofile(path .. "/pillager.lua") -- Mesh by KrupnoPavel and MrRar, animation by MrRar
dofile(path .. "/villager_evoker.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/villager_vindicator.lua") -- Mesh and animation by toby109tt / https://github.com/22i
dofile(path .. "/villager_zombie.lua") -- Mesh and animation by toby109tt / https://github.com/22i

View File

@ -62,8 +62,3 @@ Weapon Smith=Fabriquant d'arme
Tool Smith=Fabriquant d'outil
Cleric=Clerc
Nitwit=Crétin
Cod=Morue
Salmon=Saumon
Dolphin=Dauphin
Pillager=Pilleur
Tropical fish=Poisson tropical

View File

@ -65,5 +65,3 @@ Nitwit=
Cod=
Salmon=
Dolphin=
Pillager=
Tropical fish=

View File

@ -13,20 +13,12 @@ local shoulders = {
right = vector.new(3.75,10.5,0)
}
local function table_get_rand(tbl)
local keys = {}
for k in pairs(tbl) do
table.insert(keys, k)
end
return tbl[keys[math.random(#keys)]]
end
local function get_random_mob_sound()
local t = table.copy(minetest.registered_entities)
table.shuffle(t)
for _,e in pairs(t) do
if e.is_mob and e.sounds and #e.sounds > 0 then
return table_get_rand(e.sounds)
if e.is_mob and e.sounds then
return e.sounds[math.random(#e.sounds)]
end
end
return minetest.registered_entities["mobs_mc:parrot"].sounds.random

View File

@ -1,122 +0,0 @@
local S = minetest.get_translator("mobs_mc")
local function reload(self)
if not self.object:get_pos() then return end
minetest.sound_play("mcl_bows_crossbow_drawback_1", {object = self.object, max_hear_distance=16}, true)
local props = self.object:get_properties()
if not props then return end
props.textures[2] = "mcl_bows_crossbow_3.png^[resize:16x16"
self.object:set_properties(props)
end
local function reset_animation(self, animation)
if not self.object:get_pos() or self._current_animation ~= animation then return end
self._current_animation = "stand_reload" -- Mobs Redo won't set the animation unless we do this
mcl_mobs:set_animation(self, animation)
end
pillager = {
description = S("Pillager"),
type = "monster",
spawn_class = "hostile",
hp_min = 24,
hp_max = 24,
xp_min = 6,
xp_max = 6,
breath_max = -1,
eye_height = 1.5,
shoot_interval = 3,
shoot_offset = 1.5,
armor = {fleshy = 100},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
pathfinding = 1,
group_attack = true,
visual = "mesh",
mesh = "mobs_mc_pillager.b3d",
visual_size = {x=2.75, y=2.75},
makes_footstep_sound = true,
walk_velocity = 1.2,
run_velocity = 4,
view_range = 16,
fear_height = 4,
arrow = "mcl_bows:arrow_entity",
attack_type = "dogshoot", -- Alternate punching/shooting
reach = 0, -- Punching max distance
damage = 0, -- Punching damage
dogshoot_switch = 1, -- Start of shooting
dogshoot_count_max = 5, -- Max time spent shooting (standing)
dogshoot_count2_max = 1, -- Max time spent punching (running)
sounds = {
random = "mobs_mc_pillager_grunt2",
war_cry = "mobs_mc_pillager_grunt1",
death = "mobs_mc_pillager_ow2",
damage = "mobs_mc_pillager_ow1",
distance = 16,
},
textures = {
{
"mobs_mc_pillager.png", -- Skin
"mcl_bows_crossbow_3.png^[resize:16x16", -- Wielded item
}
},
drops = {
{
name = "mcl_bows:arrow",
chance = 1,
min = 0,
max = 2,
looting = "common",
},
{
name = "mcl_bows:crossbow",
chance = 100 / 8.5,
min = 1,
max = 1,
looting = "rare",
},
},
animation = {
unloaded_walk_start = 1, unloaded_walk_end = 40,
unloaded_stand_start = 41, unloaded_stand_end = 60,
reload_stand_start = 61, reload_stand_end = 100, reload_stand_speed = 20,
stand_start = 101, stand_end = 109, stand_speed = 6,
walk_start = 111, walk_end = 150, walk_speed = 30,
run_start = 111, run_end = 150, run_speed = 50,
reload_run_start = 151, reload_run_end = 190, reload_run_speed = 20,
die_start = 191, die_end = 192, die_speed = 15,
stand_unloaded_start = 40, stand_unloaded_end = 59,
die_loop = false,
},
shoot_arrow = function(self, pos, dir)
minetest.sound_play("mcl_bows_crossbow_shoot", {object = self.object, max_hear_distance=16}, true)
local props = self.object:get_properties()
props.textures[2] = "mcl_bows_crossbow_0.png^[resize:16x16"
self.object:set_properties(props)
local old_anim = self._current_animation
if old_anim == "run" or old_anim == "walk" then
mcl_mobs:set_animation(self, "reload_run")
end
if old_anim == "stand" then
mcl_mobs:set_animation(self, "reload_stand")
end
self._current_animation = old_anim -- Mobs Redo will imediately reset the animation otherwise
minetest.after(1, reload, self)
minetest.after(2, reset_animation, self, old_anim)
-- 2-4 damage per arrow
local dmg = math.max(4, math.random(2, 8))
mcl_bows_s.shoot_arrow_crossbow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg)
-- While we are at it, change the sounds since there is no way to do this in Mobs Redo
if self.sounds and self.sounds.random then
self.sounds = table.copy(self.sounds)
self.sounds.random = "mobs_mc_pillager_grunt" .. math.random(2)
end
-- Randomize reload time
self.shoot_interval = math.random(3, 4)
end,
}
mcl_mobs:register_mob("mobs_mc:pillager", pillager)
mcl_mobs:register_egg("mobs_mc:pillager", S("Pillager"), "mobs_mc_spawn_icon_pillager.png", 0)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 477 B

View File

@ -72,7 +72,7 @@ local tropical_fish = {
collisionbox = {-0.2, 0.0, -0.2, 0.2, 0.1, 0.2},
visual = "mesh",
mesh = "extra_mobs_tropical_fish_a.b3d",
textures = { "extra_mobs_tropical_fish_a.png" }, -- to be populated on_spawn
textures = {}, -- to be populated on_spawn
sounds = {},
animation = {
stand_start = 0,

View File

@ -591,51 +591,6 @@ local function go_home(entity)
end)
end
local function has_golem(pos)
local r = false
for _,o in pairs(minetest.get_objects_inside_radius(pos,16)) do
local l = o:get_luaentity()
if l and l.name == "mobs_mc:iron_golem" then return true end
end
end
local function has_summon_participants(self)
local r = 0
for _,o in pairs(minetest.get_objects_inside_radius(self.object:get_pos(),10)) do
local l = o:get_luaentity()
--TODO check for panicking or gossiping
if l and l.name == "mobs_mc:villager" then r = r + 1 end
end
return r > 2
end
local function summon_golem(self)
vector.offset(self.object:get_pos(),-10,-10,-10)
local nn = minetest.find_nodes_in_area_under_air(vector.offset(self.object:get_pos(),-10,-10,-10),vector.offset(self.object:get_pos(),10,10,10),{"group:solid","group:water"})
table.shuffle(nn)
for _,n in pairs(nn) do
local up = minetest.find_nodes_in_area(vector.offset(n,0,1,0),vector.offset(n,0,3,0),{"air"})
if up and #up >= 3 then
minetest.sound_play("mcl_portals_open_end_portal", {pos=n, gain=0.5, max_hear_distance = 16}, true)
return minetest.add_entity(vector.offset(n,0,1,0),"mobs_mc:iron_golem")
end
end
end
local function check_summon(self,dtime)
-- TODO has selpt in last 20?
if self._summon_timer and self._summon_timer > 30 then
local pos = self.object:get_pos()
self._summon_timer = 0
if has_golem(pos) then return false end
if not has_summon_participants(self) then return end
summon_golem(self)
elseif self._summon_timer == nil then
self._summon_timer = 0
end
self._summon_timer = self._summon_timer + dtime
end
----- JOBSITE LOGIC
local function get_profession_by_jobsite(js)
for k,v in pairs(professions) do
@ -861,7 +816,7 @@ local function show_trade_formspec(playername, trader, tradenum)
.."listring[current_player;main]"
.."listring["..tradeinv..";input]"
.."listring[current_player;main]"
minetest.sound_play("mobs_mc_villager_trade", {to_player = playername,object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_trade", {to_player = playername}, true)
minetest.show_formspec(playername, tradeinv_name, formspec)
end
@ -923,13 +878,13 @@ local function update_offer(inv, player, sound)
(trade.locked == false)) then
inv:set_stack("output", 1, inv:get_stack("offered", 1))
if sound then
minetest.sound_play("mobs_mc_villager_accept", {to_player = name,object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true)
end
return true
else
inv:set_stack("output", 1, ItemStack(""))
if sound then
minetest.sound_play("mobs_mc_villager_deny", {to_player = name,object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true)
end
return false
end
@ -1129,8 +1084,7 @@ local trade_inventory = {
if not wanted2:is_empty() then
inv:remove_item("input", inv:get_stack("wanted", 2))
end
local trader = player_trading_with[name]
minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name(),object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_accept", {to_player = player:get_player_name()}, true)
end
update_offer(inv, player, true)
end,
@ -1240,11 +1194,10 @@ local trade_inventory = {
elseif listname == "input" then
update_offer(inv, player, false)
end
local trader = player_trading_with[name]
if accept then
minetest.sound_play("mobs_mc_villager_accept", {to_player = name,object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_accept", {to_player = name}, true)
else
minetest.sound_play("mobs_mc_villager_deny", {to_player = name,object=trader.object}, true)
minetest.sound_play("mobs_mc_villager_deny", {to_player = name}, true)
end
end,
}
@ -1382,7 +1335,6 @@ mcl_mobs:register_mob("mobs_mc:villager", {
_player_scan_timer = 0,
_trading_players = {}, -- list of playernames currently trading with villager (open formspec)
do_custom = function(self, dtime)
check_summon(self,dtime)
-- Stand still if player is nearby.
if not self._player_scan_timer then
self._player_scan_timer = 0

View File

@ -55,7 +55,7 @@ local zombie = {
xp_max = 5,
breath_max = -1,
armor = {undead = 90, fleshy = 90},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.8, 0.3},
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.94, 0.3},
visual = "mesh",
mesh = "mobs_mc_zombie.b3d",
textures = {
@ -65,6 +65,7 @@ local zombie = {
"mobs_mc_empty.png", -- wielded_item
}
},
visual_size = {x=3, y=3},
makes_footstep_sound = true,
sounds = {
random = "mobs_mc_zombie_growl",
@ -84,23 +85,16 @@ local zombie = {
group_attack = { "mobs_mc:zombie", "mobs_mc:baby_zombie", "mobs_mc:husk", "mobs_mc:baby_husk" },
drops = drops_zombie,
animation = {
stand_start = 40, stand_end = 49, stand_speed = 2,
walk_start = 0, walk_end = 39, speed_normal = 25,
run_start = 0, run_end = 39, speed_run = 50,
punch_start = 50, punch_end = 59, punch_speed = 20,
speed_normal = 25, speed_run = 50,
stand_start = 40, stand_end = 80,
walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40,
},
ignited_by_sunlight = true,
sunlight_damage = 2,
view_range = 16,
attack_type = "dogfight",
harmed_by_heal = true,
on_spawn = function(self)
-- Remove saved visual_size on old existing entites.
-- Old entities were 3 now it's 1.
self.visual_size = nil
self.object:set_properties({visual_size = self.visual_size})
self.base_size = self.visual_size
end,
}
mcl_mobs:register_mob("mobs_mc:zombie", zombie)
@ -110,20 +104,13 @@ mcl_mobs:register_mob("mobs_mc:zombie", zombie)
local baby_zombie = table.copy(zombie)
baby_zombie.description = S("Baby Zombie")
baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 1, 0.25}
baby_zombie.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
baby_zombie.xp_min = 12
baby_zombie.xp_max = 12
baby_zombie.visual_size = {x = 1 / 2, y = 1 / 2}
baby_zombie.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2}
baby_zombie.walk_velocity = 1.2
baby_zombie.run_velocity = 2.4
baby_zombie.child = 1
baby_zombie.reach = 1
baby_zombie.animation = {
stand_start = 100, stand_end = 109, stand_speed = 2,
walk_start = 60, walk_end = 99, speed_normal = 40,
run_start = 60, run_end = 99, speed_run = 80,
punch_start = 109, punch_end = 119
}
mcl_mobs:register_mob("mobs_mc:baby_zombie", baby_zombie)
@ -147,16 +134,15 @@ mcl_mobs:register_mob("mobs_mc:husk", husk)
-- Baby husk.
-- A smaller and more dangerous variant of the husk
local baby_husk = table.copy(baby_zombie)
local baby_husk = table.copy(husk)
baby_husk.description = S("Baby Husk")
baby_husk.textures = {{
"mobs_mc_empty.png", -- armor
"mobs_mc_husk.png", -- texture
"mobs_mc_empty.png", -- wielded_item
}}
baby_husk.ignited_by_sunlight = false
baby_husk.sunlight_damage = 0
baby_husk.drops = drops_common
baby_husk.collisionbox = {-0.25, -0.01, -0.25, 0.25, 0.94, 0.25}
baby_husk.xp_min = 12
baby_husk.xp_max = 12
baby_husk.visual_size = {x=zombie.visual_size.x/2, y=zombie.visual_size.y/2}
baby_husk.walk_velocity = 1.2
baby_husk.run_velocity = 2.4
baby_husk.child = 1
mcl_mobs:register_mob("mobs_mc:baby_husk", baby_husk)

View File

@ -1,3 +1,4 @@
# textdomain: lightning
Let lightning strike at the specified position or player. No parameter will strike yourself.=Fait frapper la foudre à la position spécifiée ou sur le joueur. Sans paramètre vous vous frapperez vous-même.
@1 was struck by lightning.=@1 a été frappé par la foudre.
Let lightning strike at the specified position or yourself=Laissez la foudre frapper à la position spécifiée ou sur vous-même
No position specified and unknown player=Aucune position spécifiée et joueur inconnu

View File

@ -276,11 +276,6 @@ minetest.register_globalstep(function(dtime)
end)
local function initsky(player)
if player.set_lighting then
player:set_lighting({ shadows = { intensity = tonumber(minetest.settings:get("mcl_default_shadow_intensity") or 0.33) } })
end
if (mcl_weather.skycolor.active) then
mcl_weather.skycolor.force_update = true
end

View File

@ -45,4 +45,3 @@ Mining durability: @1=Durabilité de minage: @1
Block breaking strength: @1=Résistance à la rupture: @1
@1 uses=@1 utilisations
Unlimited uses=Utilisations illimitées
Durability: @1=Durabilité

View File

@ -1,24 +1,25 @@
# textdomain:awards
@1/@2 chat messages=@1/@2 chat messages
@1/@2 crafted=@1/@2 fabriqués
@1/@2 deaths=@1/@2 morts
@1/@2 crafted=@1/@2 fabrication
@1/@2 deaths=@1/@2 Mort
@1/@2 dug=@1/@2 creusé
@1/@2 game joins=@1/@2 sessions
@1/@2 placed=@1/@2 placé
@1/@2 placed=@1/@2 mis
@1 (got)=@1 (obtenu)
@1: @2=@1 : @2
@1: @1=@1: @1
@1s awards:=Récompenses de @1:
(Secret Award)=(Récompense Secrètte)
<achievement ID>=<Succès ID>
<name>=<nom>
A Cat in a Pop-Tart?!=A Cat in a Pop-Tart?!
Achievement gotten!=Succès obtenu !
Achievement gotten:=Succès obtenu :
Achievement gotten: @1=Succès obtenu : @1
Achievement not found.=Succès inconnu
All your awards and statistics have been cleared. You can now start again.=Toutes vos récompenses et statistiques ont été effacées. Vous pouvez maintenant recommencer.
Awards=Récompenses
Craft: @1×@2=Fabrication: @1×@2
Craft: @1=Fabrication: @1
Craft: @1×@2=Frabrication: @1×@2
Craft: @1=Frabrication: @1
Die @1 times.=Mort @1 fois.
Die.=Mort.
Get the achievements statistics for the given player or yourself=Obtenez les statistiques de succès pour le joueur donné ou vous-même
@ -27,9 +28,9 @@ Join the game.=Rejoignez le jeu.
List awards in chat (deprecated)=Liste des récompenses dans le chat (obsolète)
Place a block: @1=Placer un bloc: @1
Place blocks: @1×@2=Placer des blocs: @1×@2
Secret achievement gotten!=Succès secret obtenu !
Secret achievement gotten:=Succès secret obtenu :
Secret achievement gotten: @1=Succès secret obtenu : @1
Secret Achievement gotten!=Succès secret obtenu !
Secret Achievement gotten:=Succès secret obtenu :
Secret Achievement gotten: @1=Succès secret obtenu : @1
Show details of an achievement=Afficher les détails d'un succès
Show, clear, disable or enable your achievements=Affichez, effacez, désactivez ou activez vos succès
Get this achievement to find out what it is.=Obtenez ce succès pour découvrir de quoi il s'agit.
@ -58,7 +59,3 @@ Invalid action.=Action invalide.
Player is not online.=Le joueur n'est pas en ligne.
Done.=Terminé.
Achievement “@1” does not exist.=Le succès «@1» n'existe pas.
@1 has made the achievement @2=@1 a obtenu le succès
Mine a block: @1=Miner un bloc : @1
Mine blocks: @1×@2=Miner des blocs : @1×@2
Awards are disabled, enable them first by using /awards enable!=Les succès sont désactivés, activez les d'abord en utilisant /awards enable !

View File

@ -19,7 +19,7 @@ Getting an Upgrade=Obtenir une augmentaton de niveau
Hit a skeleton, wither skeleton or stray by bow and arrow from a distance of at least 20 meters.=Frappez un squelette, wither squelette ou stray à l'arc et à la flèche à une distance d'au moins 20 mètres.
Hot Topic=Sujet brûlant
Into Fire=Dans le feu
We Need to Go Deeper=Aller au fond des choses
Into the Nether=Dans le Nether
Iron Belly=Ventre de fer
Librarian=Bibliothécaire
Mine emerald ore.=Mine de minerai d'émeraude.
@ -47,35 +47,3 @@ Use a crafting table to craft a wooden hoe from wooden planks and sticks.=Utilis
Use a crafting table to craft a wooden pickaxe from wooden planks and sticks.=Utilisez un établi pour fabriquer une pioche en bois à partir de planches et de bâtons en bois.
Use obsidian and a fire starter to construct a Nether portal.=Utilisez de l'obsidienne et un briquet pour construire un portail du Nether.
Use wheat to craft a bread.=Utilisez du blé pour fabriquer un pain.
Who is Cutting Onions?=Qui épluche des oignons ?
Pick up a crying obsidian from the floor.=Ramasser une obsidienne pleureuse sur le sol.
Hidden in the Depths=Caché dans les profondeurs
Pick up an Ancient Debris from the floor.=Ramasser un Ancien Débris par terre.
The Nether=Le Nether
Bring summer clothes.@nHint: Enter the Nether.=Apportez des vêtements d'été.@nAstuce : Entrez dans le Nether
Isn't It Iron Pick=Bonne Pioche !
Craft a iron pickaxe using sticks and iron.=Fabriquer une pioche de fer avec des batons et du fer.
Postmortal=Aux frontières de la mort
Use a Totem of Undying to cheat death.=Utiliser un Totem d'imortalité pour tromper la mort.
Sweet Dreams=Bonne nuit les petits
Sleep in a bed to change your respawn point.=Dormez dans un lit pour changer votre point de réapparition.
Not Quite "Nine" Lives=Presque "neuf" vies
Charge a Respawn Anchor to the maximum.=Charger une Ancre de Réapparition au maximum.
What A Deal!=Adjugé, Vendu !
Successfully trade with a Villager.=Commercez avec succès avec un villageois.
Withering Heights=Les Witherables
Summon the wither from the dead.=Invoquez le Wither d'entre les morts.
Fishy Business=Merci pour le poisson
Catch a fish.@nHint: Catch a fish, salmon, clownfish, or pufferfish.=Attrapez un poisson. \nAstuce : attrapez un poisson, saumon, poisson-clown, ou poisson-globe.
Country Lode,@nTake Me Home=Petit Poucet
Use a compass on a Lodestone.=utiliser une boussole sur une magnétite.
Serious Dedication=Sérieux dévouement
Use a Netherite Ingot to upgrade a hoe, and then completely reevaluate your life choices.=Utilisez un lingot de netherite pour améliorez une houe, puis réévaluez complètement vos choix de vie.
Local Brewery=Apprenti chimiste
Brew a Potion.@nHint: Take a potion or glass bottle out of the brewing stand.=Concotez une potion.@nAstuce : Retirez une potion ou bouteille d'eau d'un alambic.
Enchanter=Enchanté !
Enchant an item using an Enchantment Table.=Enchanter un objet avec la table d'enchantement.
Bring Home the Beacon=Fais ta balise
Use a beacon.=Utilisez une balise.
Beaconator=Phare allumé
Use a fully powered beacon.=Utilisez une balise à pleine puissance.

View File

@ -28,11 +28,6 @@ return {
"Code-Sploit",
"NO11",
"kabou",
"rudzik8",
"chmodsayshello",
"PrarieWind",
"RandomLegoBrick",
"SumianVoice",
}},
{S("Contributors"), 0x52FF00, {
"Laurent Rocher",
@ -77,12 +72,6 @@ return {
"Sven792",
"aldum",
"Dieter44",
"Pepebotella",
"MrRar",
"Lazerbeak12345",
"mrminer",
"Thunder1035",
"opfromthestart",
}},
{S("MineClone5"), 0xA60014, {
"kay27",
@ -90,12 +79,10 @@ return {
"epCode",
"NO11",
"j45",
"chmodsayshello",
"3raven",
"PrarieWind",
"Gustavo1",
"CableGuy67",
"MrRar",
}},
{S("Mineclonia"), 0xFFFFFF, {
"erlehmann",
@ -148,9 +135,6 @@ return {
"yutyo",
"NO11",
"kay27",
"MysticTempest",
"RandomLegoBrick",
"cora",
}},
{S("Translations"), 0x00FF60, {
"Wuzzy",
@ -160,8 +144,6 @@ return {
"pitchum",
"todoporlalibertad",
"Marcin Serwin",
"Pepebotella",
"Emojigit",
}},
{S("Funders"), 0xF7FF00, {
"40W",
@ -169,8 +151,7 @@ return {
{S("Special thanks"), 0x00E9FF, {
"celeron55 for creating Minetest",
"Jordach for the jukebox music compilation from Big Freaking Dig",
"wsor for working tirelessly in the shadows for the good of all of us, particularly helping with solving contentDB and copyright issues.",
"The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game",
"Notch and Jeb for being the major forces behind Minecraft",
}},
}
}

View File

@ -1,55 +1,59 @@
# textdomain: mcl_death_messages
@1 went up in flames=@1 est parti(e) en fumée
@1 walked into fire whilst fighting @2=@1 a marché dans le feu en combattant @2
@1 was struck by lightning=@1 a été frappé(e) par la foudre
@1 was struck by lightning whilst fighting @2=@1 a été frappé(e) par la foudre en combattant @2
@1 burned to death=@1 est mort(e) brûlé vif(ve)
@1 was burnt to a crisp whilst fighting @2=@1 a été grillé comme une saucisse en combattant @2
@1 tried to swim in lava=@1 a essayé de nager dans la lave
@1 tried to swim in lava to escape @2=1 a essayé de nager dans la lave pour échapper à @2
@1 discovered the floor was lava=@1 a découvert que le sol était en lave
@1 walked into danger zone due to @2=@1 a marché dans une zone de danger à cause de @2
@1 suffocated in a wall=@1 a étouffé dans un mur
@1 suffocated in a wall whilst fighting @2=@1 a étouffé dans un mur en combattant @2
@1 drowned=@1 s'est noyé(e)
@1 drowned whilst trying to escape @2=@1 s'est noyé(e) en tentant d'échapper à @2
@1 starved to death=@1 est mort(e) de faim
@1 starved to death whilst fighting @2=@1 est mort(e) de faim en combattant @2
@1 was pricked to death=@1 a été piqué(e) à mort
@1 walked into a cactus whilst trying to escape @2=@1 est rentré(e) dans un cactus en tentant d'échapper @2
@1 hit the ground too hard=@1 a heurté le sol trop fort
@1 hit the ground too hard whilst trying to escape @2=@1 a heurté le sol trop fort en tentant d'échapper à @2
@1 experienced kinetic energy=@1 a fait l'expérience de l'énergie cinétique
@1 experienced kinetic energy whilst trying to escape @2=@1 a fait l'expérience de l'énergie cinétique en tentant d'échapper à @2
@1 fell out of the world=@1 est tombé(e) hors du monde
@1 didn't want to live in the same world as @2=@1 ne voulait pas vivre dans le même monde que @2
@1 died=@1 est mort.
@1 died because of @2=@1 est mort à cause de @2
@1 was killed by magic=@1 a été tué(e) par magie
@1 was killed by magic whilst trying to escape @2=@1 a été tué(e) par magie en tentant d'échapper à @2
@1 was killed by @2 using magic=@1 a été tué(e) par @2 en utilisant la magie
@1 was killed by @2 using @3=@1 a été tué(e) par @2 en utilisant @3
@1 was roasted in dragon breath=@1 a été rôti(e) dans le souffle du dragon
@1 was roasted in dragon breath by @2=@1 a été rôti(e) dans le souffle du dragon par @2
@1 withered away=@1 s'est flétri(e)
@1 withered away whilst fighting @2=@1 s'est flétri(e) en combattant @2
@1 was shot by a skull from @2=@1 a été abattu(e) par un crâne lancé par @2
@1 was squashed by a falling anvil=@1 a été écrasé(e) par la chute d'une enclume
@1 was squashed by a falling anvil whilst fighting @2=@1 a été écrasé(e) par la chute d'une enclume en combattant @2
@1 was squashed by a falling block=@1 a été écrasé(e) par la chute d'un bloc
@1 was squashed by a falling block whilst fighting @2=@1 a été écrasé(e) par la chute d'un bloc en combattant @2
@1 was slain by @2=@1 a été occis par @2
@1 was slain by @2 using @3=@1 a été occis par @2 en utilisant @3
@1 was shot by @2=@1 a été abattu(e) par @2
@1 was shot by @2 using @3=@1 a été abattu(e) par @2 en utilisant @3
@1 was fireballed by @2=@1 a reçu une balle de feu lancée par @2
@1 was fireballed by @2 using @3=@1 a reçu une balle de feu lancée par @2 en utilisant @3
@1 was killed trying to hurt @2=@1 a été tué(e) en essayant de blesser @2
@1 was killed by @3 trying to hurt @2=@1 a été tué(e) par @3 en essayant de blesser @2
@1 blew up=@1 a explosé
@1 was blown up by @2=@2 a fait exploser @1
@1 was blown up by @2 using @3=@2 a fait exploser @1 en utilisant @3
@1 was squished too much=@1 a été pressé(e) un peu trop
@1 was squashed by @2=@1 a été écrasé(e) par @2
@1 went off with a bang=@1 est parti(e) avec un bang
@1 went off with a bang due to a firework fired from @3 by @2=@1 est parti(e) avec un bang dû à un feu d'artifice tiré depuis @3 par @2
@1 was fatally hit by an arrow.=@1 a été mortellement touché par une flèche.
@1 has been killed with an arrow.=@1 a été tué avec une flèche.
@1 was shot by an arrow from @2.=@1 a été abattu par une flèche de @2.
@1 was shot by an arrow from a skeleton.=@1 a été abattu par une flèche d'un squelette.
@1 was shot by an arrow from a stray.=@1 a été abattu par une flèche d'un vagabond.
@1 was shot by an arrow from an illusioner.=@1 a été abattu par une flèche d'un illusionniste.
@1 was shot by an arrow.=@1 a été abattu par une flèche.
@1 forgot to breathe.=@1 a oublié de respirer.
@1 drowned.=@1 s'est noyé.
@1 ran out of oxygen.=@1 a manqué d'oxygène.
@1 was killed by @2.=@1 a été tué par @2.
@1 was killed.=@1 a été tué.
@1 was killed by a mob.=@1 a été tué par un mob.
@1 was burned to death by a blaze's fireball.=@1 a été brûlé vif par la boule de feu d'un blaze.
@1 was killed by a fireball from a blaze.=@1 a été tué par une boule de feu lors d'un blaze.
@1 was burned by a fire charge.=@1 a été brûlé par un incendie.
A ghast scared @1 to death.=Un ghast a éffrayé @1 à mort.
@1 has been fireballed by a ghast.=@1 a été pétrifié par un ghast.
@1 fell from a high cliff.=@1 est tombé d'une haute falaise.
@1 took fatal fall damage.=@1 a succombé à un chute mortelle.
@1 fell victim to gravity.=@1 a été victime de la gravité.
@1 died.=@1 est mort.
@1 was killed by a zombie.=@1 a été tué par un zombie.
@1 was killed by a baby zombie.=@1 a été tué par un bébé zombie.
@1 was killed by a blaze.=@1 a été tué par un blaze.
@1 was killed by a slime.=@1 a été tué par un slime.
@1 was killed by a witch.=@1 a été tué par un sorcier.
@1 was killed by a magma cube.=@1 a été tué par un cube de magma.
@1 was killed by a wolf.=@1 a été tué par un loup.
@1 was killed by a cat.=@1 a été tué par un chat.
@1 was killed by an ocelot.=@1 a été tué par un ocelot.
@1 was killed by an ender dragon.=@1 a été tué par un ender dragon.
@1 was killed by a wither.=@1 a été tué par un wither.
@1 was killed by an enderman.=@1 a été tué par un enderman.
@1 was killed by an endermite.=@1 a été tué par un endermite.
@1 was killed by a ghast.=@1 a été tué par un ghast.
@1 was killed by an elder guardian.=@1 a été tué par un grand gardien.
@1 was killed by a guardian.=@1 a été tué par un gardien.
@1 was killed by an iron golem.=@1 a été tué par un golem de fer.
@1 was killed by a polar_bear.=@1 a été tué par un ours blanc.
@1 was killed by a killer bunny.=@1 a été tué par un lapin tueur.
@1 was killed by a shulker.=@1 a été tué par un shulker.
@1 was killed by a silverfish.=@1 a été tué par un poisson d'argent.
@1 was killed by a skeleton.=@1 a été tué par un squelette.
@1 was killed by a stray.=@1 a été tué par un vagabond.
@1 was killed by a slime.=@1 a été tué par un slime.
@1 was killed by a spider.=@1 a été tué par une araignée.
@1 was killed by a cave spider.=@1 a été tué par une araignée venimeuse.
@1 was killed by a vex.=@1 a été tué par un vex.
@1 was killed by an evoker.=@1 a été tué par un invocateur.
@1 was killed by an illusioner.=@1 a été tué par un illusionniste.
@1 was killed by a vindicator.=@1 a été tué par un vindicateur.
@1 was killed by a zombie villager.=@1 a été tué par un villageois zombie.
@1 was killed by a husk.=@1 a été tué par un zombie momie.
@1 was killed by a baby husk.=@1 a été tué par un bébé zombie momie.
@1 was killed by a zombie pigman.=@1 a été tué par un zombie-couchon.
@1 was killed by a baby zombie pigman.=@1 a été tué par un bébé zombie-couchon
@1 was slain by @2.=

View File

@ -33,6 +33,7 @@
@1 was roasted in dragon breath by @2=
@1 withered away=
@1 withered away whilst fighting @2=
@1 was killed by magic=
@1 was shot by a skull from @2=
@1 was squashed by a falling anvil=
@1 was squashed by a falling anvil whilst fighting @2=
@ -40,6 +41,8 @@
@1 was squashed by a falling block whilst fighting @2=
@1 was slain by @2=
@1 was slain by @2 using @3=
@1 was slain by @2=
@1 was slain by @2 using @3=
@1 was shot by @2=
@1 was shot by @2 using @3=
@1 was fireballed by @2=

View File

@ -1,4 +0,0 @@
# textdomain: mcl_info
Set debug bit mask: 0 @= disable, 1 @= biome name, 2 @= coordinates, 3 @= all=Régler le masque de bits pour débuguer : 0 @= pour désactiver, 1 @= nom du biome, 2 @= coordonnées, 3 @= tout=
Error! Possible values are integer numbers from @1 to @2=Erreur ! Les valeurs possibles sont des nombres entiers de @1 à @2
Debug bit mask set to @1=Masque de bits de débuguage réglé à @1

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=Hebel
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Ein Hebel ist eine Redstonekomponente, die ein- und ausgeschaltet werden kann. Er versorgt seine benachbarten Blöcke mit Redstoneenergie, solange er sich im eingeschalteten Zustand befindet.
Use the lever to flip it on or off.=Benutzen Sie den Hebel, um ihn ein- oder auszuschalten.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=Palanca
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=EUna palanca es un componente de redstone que se puede activar y desactivar. Suministra energía redstone a bloques adyacentes mientras está en el estado "encendido".
Use the lever to flip it on or off.=Use la palanca para encenderlo o apagarlo.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=Levier
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Un levier est un composant de redstone qui peut être activé et désactivé. Il fournit de l'énergie redstone aux blocs adjacents pendant qu'il est à l'état "activé".
Use the lever to flip it on or off.=Utilisez le levier pour l'activer ou le désactiver.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=Dźwignia
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Dźwignia jest czerwienitowym elementem, który można przełączać między stanem włączonym i wyłączonym. Wysyła ona czerwienitową energię gdy jest w stanie włączonym.
Use the lever to flip it on or off.=Użyj dźwigni by przełączyć ją między stanami.

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=Рычаг
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=Рычаг это компонент редстоуна, который можно включать и выключать. Он подаёт энергию редстоуна на соседние блоки, пока он находится во «включённом» состоянии.
Use the lever to flip it on or off.=[Используйте] рычаг, чтобы перещёлкнуть его во включённое или выключенное положение .

View File

@ -1,4 +1,4 @@
# textdomain: mesecons_walllever
# textdomain: mesecons_wallever
Lever=
A lever is a redstone component which can be flipped on and off. It supplies redstone power to adjacent blocks while it is in the “on” state.=
Use the lever to flip it on or off.=

View File

@ -33,7 +33,7 @@ mcl_damage.register_modifier(function(obj, damage, reason)
local itemname = itemstack:get_name()
local enchantments = mcl_enchanting.get_enchantments(itemstack)
if not flags.bypasses_armor and minetest.get_item_group(itemname, "non_combat_armor") == 0 then
if not flags.bypasses_armor then
points = points + minetest.get_item_group(itemname, "mcl_armor_points")
toughness = toughness + minetest.get_item_group(itemname, "mcl_armor_toughness")

View File

@ -6,45 +6,18 @@ Iron Helmet=Casque de Fer
Golden Helmet=Casque d'Or
Diamond Helmet=Casque de Diamant
Chain Helmet=Casque de Mailles
Netherite Helmet=Casque de Netherite
Leather Tunic=Tunique en Cuir
Iron Chestplate=Plastron de Fer
Golden Chestplate=Plastron d'Or
Diamond Chestplate=Plastron de Diamant
Chain Chestplate=Cotte de Mailles
Netherite Chestplate=Plastron de Netherite
Leather Pants=Pantalon de Cuir
Iron Leggings=Jambières de Fer
Golden Leggings=Jambières d'Or
Diamond Leggings=Jambières de Diamant
Chain Leggings=Jambières de Mailles
Netherite Leggings=Jambières de Netherite
Leather Boots=Bottes de Cuir
Iron Boots=Bottes de Fer
Golden Boots=Bottes d'Or
Diamond Boots=Bottes de Diamant
Chain Boots=Bottes de Mailles
Netherite Boots=Bottes de Netherite
Elytra=Élytres
#Translations of enchantements
Increases underwater mining speed.=Augmente la vitesse de minage sous-marine.
Blast Protection=Protection contre les explosions
Reduces explosion damage and knockback.=Réduit les dégâts d'explosion et de recul.
Curse of Binding=Malédiction du lien éternel
Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=L'objet ne peut pas être retiré des emplacements d'armure sauf en cas de mort, de rupture ou en mode créatif.
Feather Falling=Chute amortie
Reduces fall damage.=Réduit les dégats de chute.
Fire Protection=Protection contre le feu
Reduces fire damage.=Reduit les dégats de feu.
Shooting consumes no regular arrows.=Le tir ne consomme pas de flèches standard.
Shoot 3 arrows at the cost of one.=Tirez sur 3 flèches au prix d'une.
Projectile Protection=Protection contre les projectiles
Reduces projectile damage.=Réduit les dommages causés par les projectiles.
Protection=Protection
Reduces most types of damage by 4% for each level.=Réduit la plupart des types de dégâts de 4% pour chaque niveau.
Thorns=Épines
Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=Reflète une partie des dégâts subis lors de la frappe, au prix d'une réduction de la durabilité à chaque déclenchement.
Aqua Affinity=Affinité aquatique

View File

@ -6,43 +6,18 @@ Iron Helmet=
Golden Helmet=
Diamond Helmet=
Chain Helmet=
Netherite Helmet=
Leather Tunic=
Iron Chestplate=
Golden Chestplate=
Diamond Chestplate=
Chain Chestplate=
Netherite Chestplate=
Leather Pants=
Iron Leggings=
Golden Leggings=
Diamond Leggings=
Chain Leggings=
Netherite Leggings=
Leather Boots=
Iron Boots=
Golden Boots=
Diamond Boots=
Chain Boots=
Netherite Boots=
Elytra=
#Translations of enchantements
Increases underwater mining speed.=
Blast Protection=
Reduces explosion damage and knockback.=
Curse of Binding=Malédiction du lien éternel
Item cannot be removed from armor slots except due to death, breaking or in Creative Mode.=
Feather Falling=
Reduces fall damage.=
Fire Protection=
Reduces fire damage.=
Shooting consumes no regular arrows.=
Shoot 3 arrows at the cost of one.=
Projectile Protection=
Reduces projectile damage.=
Protection=
Reduces most types of damage by 4% for each level.=
Thorns=
Reflects some of the damage taken when hit, at the cost of reducing durability with each proc.=
Aqua Affinity=

View File

@ -344,6 +344,9 @@ minetest.register_node("mcl_beacons:beacon", {
mesecon.register_mvps_stopper("mcl_beacons:beacon")
mcl_wip.register_wip_item("mcl_beacons:beacon")
beacon_blocklist = {"mcl_core:diamondblock","mcl_core:ironblock","mcl_core:goldblock","mcl_core:emeraldblock","mcl_nether:netheriteblock"}--this is supposed to be a global, don't change that!
beacon_fuellist ={"mcl_core:diamond","mcl_core:emerald","mcl_core:iron_ingot","mcl_core:gold_ingot","mcl_nether:netherite_ingot"}
function register_beaconblock (itemstring)--API function for other mods
table.insert(beacon_blocklist, itemstring)
end

View File

@ -1,5 +0,0 @@
# textdomain: mcl_beacons
Beacon=Balise
Beacon:=Balise :
Primary Power:=Pouvoir Primaire :
Inventory:=Inventaire :

View File

@ -37,7 +37,5 @@ Players in bed: @1/@2=Joueurs au lit: @1/@2
Note: Night skip is disabled.=Remarque: Le saut de nuit est désactivé.
You're sleeping.=Tu dors.
You will fall asleep when all players are in bed.=Vous vous endormirez lorsque tous les joueurs seront au lit.
You will fall asleep when @1% of all players are in bed.=Vous vous endormirez lorsque @1% de tous les joueurs seront au lit.
You're in bed.=Tu es au lit.
Allows you to sleep=Vous permet de dormir
Respawn Anchor=Ancre de réapparition

View File

@ -1,2 +1,2 @@
# textdomain: mcl_bells
# textdomain: mcl_observers
Bell=Cloche

View File

@ -1,2 +1,2 @@
# textdomain: mcl_bells
# textdomain: mcl_observers
Bell=

View File

@ -186,10 +186,10 @@ minetest.registered_nodes["mcl_fire:fire"].on_construct=function(pos)
end
--slabs/stairs
mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", S("Blackstone Stair"), S("Blackstone Slab"), S("Double Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", S("Polished Blackstone Stair"), S("Polished Blackstone Slab"), S("Polished Double Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", S("Chiseled Polished Blackstone Stair"), S("Chiseled Polished Blackstone Slab"), S("Double Chiseled Polished Blackstone Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", S("Polished Blackstone Brick Stair"), S("Polished Blackstone Brick Slab"), S("Double Polished Blackstone Brick Slab"))
mcl_stairs.register_stair_and_slab_simple("blackstone", "mcl_blackstone:blackstone", "Blackstone Stair", "Blackstone Slab", "Double Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_polished", "mcl_blackstone:blackstone_polished", "Polished Blackstone Stair", "Polished Blackstone Slab", "Polished Double Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_chiseled_polished", "mcl_blackstone:blackstone_chiseled_polished", "Polished Chiseled Blackstone Stair", "Chiseled Polished Blackstone Slab", "Double Polished Chiseled Blackstone Slab")
mcl_stairs.register_stair_and_slab_simple("blackstone_brick_polished", "mcl_blackstone:blackstone_brick_polished", "Polished Blackstone Brick Stair", "Polished Blackstone Brick Slab", "Double Polished Blackstone Brick Slab")
--Wall
mcl_walls.register_wall("mcl_blackstone:wall", S("Blackstone Wall"), "mcl_blackstone:blackstone")

View File

@ -1,17 +1,17 @@
# textdomain: mcl_blackstone
Blackstone=Schwarzstein
Polished Blackstone=Polierter Schwarzstein
Chiseled Polished Blackstone=Gemeißelter polierter Schwarzstein
Chieseled Polished Blackstone=Gemeißelter polierter Schwarzstein
Polished Blackstone Bricks=Polierter Schwarzsteinziegel
Basalt=Basalt
Polished Basalt=Polierter Basalt
Blackstone Slab=Schwarzstein Stufe
Polished Blackstone Slab=Polierte Schwarzstein Stufe
Chiseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe
Chieseled Polished Blackstone Slab=Gemeißelte Polierte Schwarzstein Stufe
Polished Blackstone Brick Slab=Polierte Schwarzsteinziegel Stufe
Blackstone Stairs=Schwarzstein Treppe
Polished Blackstone Stairs=Polierte Schwarzstein Treppe
Chiseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe
Chieseled Polished Blackstone Stairs=Gemeißelte Polierte Schwarzstein Treppe
Polished Blackstone Brick Stairs=Polierte Schwarzsteinziegel Treppe
Quartz Bricks=Quartz Ziegel
Soul Torch=Seelenfakel

View File

@ -1,28 +0,0 @@
# textdomain: mcl_blackstone
Blackstone=Roche noire
Polished Blackstone=Pierre noire
Chiseled Polished Blackstone=Pierre noire sculptée
Polished Blackstone Bricks=Briques de pierre noire
Basalt=Basalte
Polished Basalt=Basalte taillé
Blackstone Slab=Dalle de roche noire
Polished Blackstone Slab=Dalle de pierre noire
Chiseled Polished Blackstone Slab=Dalle de pierre noire sculptée
Polished Blackstone Brick Slab=Dalle de briques de pierre noire
Blackstone Stair=Escalier de roche noire
Polished Blackstone Stair=Escalier de pierre noire
Chiseled Polished Blackstone Stair=Escalier de pierre noire sculptée
Polished Blackstone Brick Stair=Escalier de briques de pierre noire
Quartz Bricks=Briques de quartz
Soul Torch=Torche des âmes
Soul Lantern=Lanterne des âmes
Soul Soil=Terre des âmes
Eternal Soul Fire=Feu éternel des âmes
Gilded Blackstone=Roche noire dorée
Nether Gold Ore=Minerai d'or du Nether
Smooth Basalt=Basalte lisse
Blackstone Wall=Muret de Roche noire
Double Blackstone Slab=Double Dalle de roche noire
Polished Double Blackstone Slab=Double Dalle de pierre noire
Double Chiseled Polished Blackstone Slab=Double Dalle de pierre noire sculptée
Double Polished Blackstone Brick Slab=Double Dalle de briques de pierre noire

View File

@ -1,18 +1,18 @@
# textdomain: mcl_blackstone
Blackstone=
Polished Blackstone=
Chiseled Polished Blackstone=
Chieseled Polished Blackstone=
Polished Blackstone Bricks=
Basalt=
Polished Basalt=
Blackstone Slab=
Polished Blackstone Slab=
Chiseled Polished Blackstone Slab=
Chieseled Polished Blackstone Slab=
Polished Blackstone Brick Slab=
Blackstone Stair=
Polished Blackstone Stair=
Chiseled Polished Blackstone Stair=
Polished Blackstone Brick Stair=
Blackstone Stairs=
Polished Blackstone Stairs=
Chieseled Polished Blackstone Stairs=
Polished Blackstone Brick Stairs=
Quartz Bricks=
Soul Torch=
Soul Lantern=
@ -21,8 +21,3 @@ Eternal Soul Fire=
Gilded Blackstone=
Nether Gold Ore=
Smooth Basalt=
Blackstone Wall=
Double Blackstone Slab=
Polished Double Blackstone Slab=
Double Chiseled Polished Blackstone Slab=
Double Polished Blackstone Brick Slab=

View File

@ -1,8 +0,0 @@
# textdomain: mcl_blast_furnace
Inventory=Inventaire
Blast Furnace=Haut Fourneau
Smelts ores faster than furnace=fond le minerai plus vite que le fourneau
Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=Utiliser le livre de recettes pour voir ce que vous pouvez fondre, ce que vous pouvez utiliser comme combustible et combien de temps ça va brûler.
Use the furnace to open the furnace menu.\nPlace a furnace fuel in the lower slot and the source material in the upper slot.\nThe furnace will slowly use its fuel to smelt the item.\nThe result will be placed into the output slot at the right side.=Utiliser le fourneau pour ouvrir le menu.\nPlacer le combustible dans la case en bas et le matériau source dans la case du haut.\nLe fourneau utilisera son combustible pour fondre lentement l'objet.\nLe résultat sera placé dans la case de sortie à droite.
Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else.=Les hauts fourneaux fondent plusieurs objets, principalement du minerai et des pièces d'armure, en quelque chose d'autre.
Active Blast Furnace=Haut Fourneau Actif

View File

@ -1,8 +0,0 @@
# textdomain: mcl_blast_furnace
Inventory=
Blast Furnace=
Smelts ores faster than furnace=
Use the recipe book to see what you can smelt, what you can use as fuel and how long it will burn.=
Use the furnace to open the furnace menu.\nPlace a furnace fuel in the lower slot and the source material in the upper slot.\nThe furnace will slowly use its fuel to smelt the item.\nThe result will be placed into the output slot at the right side.=
Blast Furnaces smelt several items, mainly ores and armor, using a furnace fuel, into something else.=
Active Blast Furnace=

View File

@ -1,12 +1,8 @@
local S = minetest.get_translator(minetest.get_current_modname())
local F = minetest.formspec_escape
local C = minetest.colorize
local max_text_length = 4500 -- TODO: Increase to 12800 when scroll bar was added to written book
local max_title_length = 64
local bookshelf_inv = minetest.settings:get_bool("mcl_bookshelf_inventories",true)
local header = ""
if minetest.get_modpath("mcl_init") then
header = "no_prepend[]" .. mcl_vars.gui_nonbg .. mcl_vars.gui_bg_color ..
@ -335,76 +331,6 @@ if minetest.get_modpath("mcl_sounds") then
wood_sound = mcl_sounds.node_sound_wood_defaults()
end
-- Bookshelf GUI
local drop_content = mcl_util.drop_items_from_meta_container("main")
local function on_blast(pos)
local node = minetest.get_node(pos)
drop_content(pos, node)
minetest.remove_node(pos)
end
-- Simple protection checking functions
local function protection_check_move(pos, from_list, from_index, to_list, to_index, count, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
else
return count
end
end
local function protection_check_put_take(pos, listname, index, stack, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
elseif minetest.get_item_group(stack:get_name(), "book") ~= 0 or stack:get_name() == "mcl_enchanting:book_enchanted" then
return stack:get_count()
else
return 0
end
end
local function bookshelf_gui(pos, node, clicker)
if not bookshelf_inv then return end
local name = minetest.get_meta(pos):get_string("name")
if name == "" then
name = S("Bookshelf")
end
local playername = clicker:get_player_name()
minetest.show_formspec(playername,
"mcl_books:bookshelf_"..pos.x.."_"..pos.y.."_"..pos.z,
table.concat({
"size[9,8.75]",
"label[0,0;"..F(C("#313131", name)).."]",
"list[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main;0,0.5;9,3;]",
mcl_formspec.get_itemslot_bg(0, 0.5, 9, 3),
"label[0,4.0;"..F(C("#313131", S("Inventory"))).."]",
"list[current_player;main;0,4.5;9,3;9]",
mcl_formspec.get_itemslot_bg(0, 4.5, 9, 3),
"list[current_player;main;0,7.74;9,1;]",
mcl_formspec.get_itemslot_bg(0, 7.74, 9, 1),
"listring[nodemeta:"..pos.x..","..pos.y..","..pos.z..";main]",
"listring[current_player;main]",
})
)
end
local function close_forms(pos)
local players = minetest.get_connected_players()
local formname = "mcl_books:bookshelf_"..pos.x.."_"..pos.y.."_"..pos.z
for p = 1, #players do
if vector.distance(players[p]:get_pos(), pos) <= 30 then
minetest.close_formspec(players[p]:get_player_name(), formname)
end
end
end
-- Bookshelf
minetest.register_node("mcl_books:bookshelf", {
description = S("Bookshelf"),
@ -414,40 +340,13 @@ minetest.register_node("mcl_books:bookshelf", {
is_ground_content = false,
groups = {
handy=1, axey=1, deco_block=1, material_wood=1,
flammable=3, fire_encouragement=30, fire_flammability=20, container=1
flammable=3, fire_encouragement=30, fire_flammability=20
},
drop = "mcl_books:book 3",
sounds = wood_sound,
_mcl_blast_resistance = 1.5,
_mcl_hardness = 1.5,
_mcl_silk_touch_drop = true,
on_construct = function(pos)
local meta = minetest.get_meta(pos)
local inv = meta:get_inventory()
inv:set_size("main", 9*3)
end,
after_place_node = function(pos, placer, itemstack, pointed_thing)
minetest.get_meta(pos):set_string("name", itemstack:get_meta():get_string("name"))
end,
allow_metadata_inventory_move = protection_check_move,
allow_metadata_inventory_take = protection_check_put_take,
allow_metadata_inventory_put = protection_check_put_take,
on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player)
minetest.log("action", player:get_player_name()..
" moves stuff in bookshelf at "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_put = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" moves stuff to bookshelf at "..minetest.pos_to_string(pos))
end,
on_metadata_inventory_take = function(pos, listname, index, stack, player)
minetest.log("action", player:get_player_name()..
" takes stuff from bookshelf at "..minetest.pos_to_string(pos))
end,
after_dig_node = drop_content,
on_blast = on_blast,
on_rightclick = bookshelf_gui,
on_destruct = close_forms,
})
minetest.register_craft({

View File

@ -1,6 +1,6 @@
# textdomain: mcl_books
Book=Livre
Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres avec unes plumes.
Books are used to make bookshelves and book and quills.=Les livres sont utilisés pour fabriquer des étagères et des livres et des plumes.
“@1”="@1"
Copy of “@1”=Copie de "@1"
Copy of Copy of “@1”=Copie de Copie de "@1"
@ -9,8 +9,8 @@ by @1=ar @1
# as in “to sign a book”
Sign=Signer
Done=Terminé
This item can be used to write down some notes.=Cet élément peut être utilisé pour prendre quelques notes.
Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Tenez-le dans la main, puis faites un clic droit pour lire les notes actuelles et modifiez-les ensuite. Vous pouvez modifier le texte aussi souvent que vous le souhaitez. Vous pouvez également signer le livre ce qui le transforme en livre écrit que vous pouvez empiler, mais il ne peut plus être édité.
This item can be used to write down some notes.=Cet élément peut être utilisé pour écrire certaines notes.
Hold it in the hand, then rightclick to read the current notes and edit then. You can edit the text as often as you like. You can also sign the book which turns it into a written book which you can stack, but it can't be edited anymore.=Tenez-le dans la main, puis faites un clic droit pour lire les notes actuelles et modifiez-les ensuite. Vous pouvez modifier le texte aussi souvent que vous le souhaitez. Vous pouvez également signer le livre qui le transforme en livre écrit que vous pouvez empiler, mais il ne peut plus être édité.
A book can hold up to 4500 characters. The title length is limited to 64 characters.=Un livre peut contenir jusqu'à 4500 caractères. La longueur du titre est limitée à 64 caractères.
Enter book title:=Entrez le titre du livre:
by @1=par @1
@ -21,8 +21,8 @@ Nameless Book=Livre sans nom
Written Book=Livre écrit
Written books contain some text written by someone. They can be read and copied, but not edited.=Les livres écrits contiennent du texte écrit par quelqu'un. Ils peuvent être lus et copiés, mais pas modifiés.
Hold it in your hand, then rightclick to read the book.=Tenez-le dans votre main, puis faites un clic droit pour lire le livre.
To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Pour copier le texte du livre écrit, placez-le dans la grille d'artisanat avec un livre et une plume (ou plusieurs) et récupérez le résultat. Le livre copié ne sera pas consommé. Les copies de copies ne peuvent pas être copiées.
To copy the text of the written book, place it into the crafting grid together with a book and quill (or multiple of those) and craft. The written book will not be consumed. Copies of copies can not be copied.=Pour copier le texte du livre écrit, placez-le dans la grille d'artisanat avec un livre et une plume (ou plusieurs de ceux-ci) et de l'artisanat. Le livre écrit ne sera pas consommé. Les copies de copies ne peuvent pas être copiées.
Bookshelf=Bibliothèque
Bookshelves are used for decoration.=Les bibliothèques sont utilisées pour la décoration.
Book and Quill=Livre et Plume
Write down some notes=Prenez quelques notes
Write down some notes=Notez quelques notes

View File

@ -1,5 +1,4 @@
name = mcl_books
author = celeron55
description = Books mod for MCL2
depends = mcl_util, mcl_formspec
optional_depends = mcl_init, mcl_core, mcl_sounds, mcl_mobitems, mcl_dye, mcl_colors

View File

@ -118,9 +118,9 @@ end
minetest.register_tool("mcl_bows:crossbow", {
description = S("Crossbow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Crossbows are ranged weapons to shoot arrows at your foes.").."\n"..
_doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
_doc_items_usagehelp = S("To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."),
_doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."),
_doc_items_durability = BOW_DURABILITY,
inventory_image = "mcl_bows_crossbow.png",
wield_scale = mcl_vars.tool_wield_scale,
@ -153,9 +153,9 @@ S("The speed and damage of the arrow increases the longer you charge. The regula
minetest.register_tool("mcl_bows:crossbow_loaded", {
description = S("Crossbow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Crossbows are ranged weapons to shoot arrows at your foes.").."\n"..
_doc_items_longdesc = S("Corssbow are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
_doc_items_usagehelp = S("To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."),
_doc_items_usagehelp = S("To use the corssbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to load an arrow into the chamber, then to shoot press left mouse."),
_doc_items_durability = BOW_DURABILITY,
inventory_image = "mcl_bows_crossbow_3.png",
wield_scale = mcl_vars.tool_wield_scale,

View File

@ -13,6 +13,3 @@ Ammunition=Munition
Damage from bow: 1-10=Dégâts de l'arc: 1-10
Damage from dispenser: 3=Dégâts du distributeur: 3
Launches arrows=Lance des flèches
Crossbow=Arbalète
Crossbows are ranged weapons to shoot arrows at your foes.=Les arbalètes sont des armes à distance pour tirer des flèches sur vos ennemis.
To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Pour utiliser l'arbalète, vous devez d'abord avoir au moins une flèche n'importe où dans votre inventaire (sauf en mode créatif). Maintenez enfoncé le bouton droit de la souris pour charger, relâchez pour tirer.

View File

@ -13,6 +13,3 @@ Ammunition=
Damage from bow: 1-10=
Damage from dispenser: 3=
Launches arrows=
Crossbow=
Crossbows are ranged weapons to shoot arrows at your foes.=
To use the crossbow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=

View File

@ -3,7 +3,7 @@ Empty Bucket=Seau Vide
A bucket can be used to collect and release liquids.=Un seau peut être utilisé pour recueillir et libérer les liquides.
Punch a liquid source to collect it. You can then use the filled bucket to place the liquid somewhere else.=Frappez une source de liquide pour la collecter. Vous pouvez ensuite utiliser le seau rempli pour placer le liquide ailleurs.
Lava Bucket=Seau de Lave
A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli de lave chaude, contenue en toute sécurité à l'intérieur. À utiliser avec précaution.
A bucket can be used to collect and release liquids. This one is filled with hot lava, safely contained inside. Use with caution.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli de lave chaude, contenue en toute sécurité à l'intérieur. Utiliser avec précaution.
Get in a safe distance and place the bucket to empty it and create a lava source at this spot. Don't burn yourself!=Eloignez-vous et placez le seau pour le vider et créez une source de lave à cet endroit. Ne vous brûlez pas!
Water Bucket=Seau d'Eau
A bucket can be used to collect and release liquids. This one is filled with water.=Un seau peut être utilisé pour recueillir et libérer les liquides. Celui-ci est rempli d'eau.
@ -15,10 +15,3 @@ Collects liquids=Collecte des liquides
Places a lava source=Place une source de lave
Places a water source=Place une source d'eau
Places a river water source=Place une source d'eau de rivière
Cod=Morue
Salmon=Saumon
Tropical Fish=Poisson Tropical
Bucket of @1=Seau de @1
This bucket is filled with water and @1.=Ce seau est rempli d'eau et de @1.
Place it to empty the bucket and place a @1. Obtain by right clicking on a @2 fish with a bucket of water.=Le placer pour vider le seau et placer un @1.
Places a water source and a @1 fish.=Placer une source d'eau et un poisson @1.

View File

@ -3,13 +3,84 @@
-- ||||||||||||||||||||||||||||||||
-- TO-DO:
-- * Add Smoke Particles
-- * Add Spark Particles
-- * Add Cooking Meat
-- * Add Working Sounds
local S = minetest.get_translator(minetest.get_current_modname())
mcl_campfires = {}
function mcl_campfires.register_smoke(pos)
local meta = minetest.get_meta(pos)
-- delete existing spawner
local existing_spawner = meta:get_int("smoke_particlespawner")
if existing_spawner ~= 0 then
minetest.delete_particlespawner(existing_spawner)
end
-- velocity: 0.5
-- acceleration: 0.1
------------------------
-- 7 seconds ~= 10 nodes
-- 12 seconds ~= 20 nodes
local time = 7
if minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}).name == "mcl_farming:hay_block" then
time = 12
end
-- create new spawner
local smokeID = minetest.add_particlespawner({
time = 0,
ammount = 0.2,
collisiondetection = true,
texture = "mcl_campfires_smoke_4.png",
texpool = {
{ name = "mcl_campfires_smoke_0.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_2.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_3.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_4.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_5.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_7.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_8.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_9.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_1.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_10.png", alpha_tween = {1, 0}},
{ name = "mcl_campfires_smoke_11.png", alpha_tween = {1, 0}},
},
minpos = {x=pos.x - 0.25, y=pos.y + 0.25, z=pos.z - 0.25},
maxpos = {x=pos.x + 0.25, y=pos.y + 0.25, z=pos.z + 0.25},
minvel = {x=0, y=1, z=0},
maxvel = {x=0, y=1, z=0},
minacc = {x=0, y=0.1, z=0},
maxacc = {x=0, y=0.1, z=0},
minexptime = time,
maxexptime = time,
minsize = 12,
maxsize = 12,
})
-- save the id in meta
meta:set_int("smoke_particlespawner", smokeID)
return smokeID
end
function mcl_campfires.remove_smoke(pos)
local meta = minetest.get_meta(pos)
local smokeID = meta:get_int("smoke_particlespawner")
-- end function if smoke doesnt exist
if not smokeID then return 0 end
return minetest.delete_particlespawner(smokeID)
end
local campfires = {
{ 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" },
@ -78,11 +149,14 @@ for _, campfire in pairs(campfires) do
groups = { handy=1, axey=1, material_wood=1, campfire=1, lit_campfire=1 },
paramtype = "light",
paramtype2 = "facedir",
on_construct = mcl_campfires.register_smoke,
on_destruct = mcl_campfires.remove_smoke,
on_rightclick = function (pos, node, player, itemstack, pointed_thing)
if player:get_wielded_item():get_name():find("shovel") then
node.name = "mcl_campfires:" .. campfire.techname
minetest.set_node(pos, node)
minetest.sound_play("fire_extinguish_flame", {pos = pos, gain = 0.25, max_hear_distance = 16}, true)
mcl_campfires.remove_smoke(pos)
end
end,
drop = campfire.drops,

View File

@ -1,4 +1,3 @@
# textdomain: mcl_campfires
Campfire=
Soul Campfire=
Cooks food and keeps bees happy.=

View File

@ -1,5 +0,0 @@
# textdomain: mcl_campfires
Campfire=Feu de camp
Soul Campfire=Feu de camp des âmes
Cooks food and keeps bees happy.=Cuit la nourriture et garde les abeilles heureuses
Campfires have multiple uses, including keeping bees happy, cooking raw meat and fish, and as a trap.=Les feux de camp ont des usages multiples, incluant garder les abeilles heureuses, cuisiner de la viande crue et du poisson, et comme piège.

View File

@ -0,0 +1,2 @@
[LocalizedFileNames]
big_smoke_4.png=@big_smoke_4.png,0

Binary file not shown.

After

Width:  |  Height:  |  Size: 235 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 266 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 303 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 294 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 308 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 259 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 240 B

View File

@ -1,4 +0,0 @@
# textdomain: mcl_cartography_table
Cartography Table=Table de Cartographie
Used to create or copy maps=Utilisée pour créer ou copier des cartes
Is used to create or copy maps for use..=Est utilisée pour créer ou copier des cartes..

View File

@ -1,4 +0,0 @@
# textdomain: mcl_cartography_table
Cartography Table=
Used to create or copy maps=
Is used to create or copy maps for use..=

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldrons
# textdomain: mcl_cauldron
Cauldron=Kessel
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kessel werden benutzt, um Wasser zu lagern, im Regen werden sie langsam aufgefüllt. Kessel können auch verwendet werden, um Banner abzuwaschen.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Platzieren Sie einen Wassereinmer in den Kessel, um ihn mit Wasser zu füllen. Platzieren Sie einen leeren Eimer auf einen vollen Kessel, um das Wasser aufzusammeln. Platzieren Sie eine Wasserflasche in den Kessel, um ihn zu einem Drittel mit Wasser zu füllen. Benutzen Sie ein bemaltes Banner auf den Kessel, um die oberste Schicht abzuwaschen.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldrons
# textdomain: mcl_cauldron
Cauldron=Caldera
Cauldrons are used to store water and slowly fill up under rain.=Los calderos se usan para almacenar agua y llenarse lentamente bajo la lluvia.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water.=Coloque un cubo de agua en el caldero para llenarlo con agua. Coloque un cubo vacío en un caldero lleno para recuperar el agua. Coloque una botella de agua en el caldero para llenar el caldero hasta un tercio con agua. Coloque una botella de vidrio en un caldero con agua para recuperar un tercio del agua.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldrons
# textdomain: mcl_cauldron
Cauldron=Kocioł
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Kotły są wykorzystywane do przechowywania wody oraz powoli wypełniają się podczas deszczu.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Umieść wiadro wody w kotle by wypełnić go wodą. Umieść puste wiadro na pełnym kotle by odzyskać wodę. Umieść szklaną butelkę w kotle z wodą aby odzyskać jedną trzecią wody. Użyj upiększonego sztandaru na kotle z wodą aby zmyć górną warstwę.

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldrons
# textdomain: mcl_cauldron
Cauldron=鍋釜
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=鍋釜是用來儲水的,在雨水的作用下慢慢填滿。它們也可以用來清洗旗幟。
Place a water pucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=將水桶放入鍋釜中,使其充滿水。將一個空桶放在裝滿水的大鍋上,以取回水。將一個水瓶放入鍋釜內,使大鍋內增加三分之一的水。將一個玻璃瓶放在有水的鍋釜裡,取回三分之一的水。在有水的鍋釜上使用印有圖案的旗幟,以洗掉其上層。

View File

@ -1,5 +1,5 @@
# textdomain: mcl_cauldrons
Cauldron=Chaudron
# textdomain: mcl_cauldron
Cauldron=Chaudrons
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Les chaudrons sont utilisés pour stocker l'eau et se remplissent lentement sous la pluie. Ils peuvent également être utilisés pour laver les bannières.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Placez une marmite d'eau dans le chaudron pour le remplir d'eau. Placez un seau vide sur un chaudron plein pour récupérer l'eau. Placez une bouteille d'eau dans le chaudron pour remplir le chaudron au tiers avec de l'eau. Placez une bouteille en verre dans un chaudron avec de l'eau pour récupérer un tiers de l'eau. Utilisez une bannière blasonnée sur un chaudron avec de l'eau pour laver sa couche supérieure.
Cauldron (1/3 Water)=Chaudron (1/3 d'eau)

View File

@ -1,4 +1,4 @@
# textdomain: mcl_cauldrons
# textdomain: mcl_cauldron
Cauldron=Котёл
Cauldrons are used to store water and slowly fill up under rain. They can also be used to wash off banners.=Котлы используются для хранения воды и медленного наполнения под дождём. Они также могут использоваться для промывания флагов.
Place a water bucket into the cauldron to fill it with water. Place an empty bucket on a full cauldron to retrieve the water. Place a water bottle into the cauldron to fill the cauldron to one third with water. Place a glass bottle in a cauldron with water to retrieve one third of the water. Use an emblazoned banner on a cauldron with water to wash off its top layer.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть.

Some files were not shown because too many files have changed in this diff Show More