Compare commits
3 Commits
master
...
campfire_s
Author | SHA1 | Date |
---|---|---|
TheRandomLegoBrick | d4bfd1fc3c | |
TheRandomLegoBrick | d366608c28 | |
TheRandomLegoBrick | 5beb878ec6 |
|
@ -31,7 +31,6 @@
|
|||
* chmodsayshello
|
||||
* PrarieWind
|
||||
* RandomLegoBrick
|
||||
* SumianVoice
|
||||
|
||||
## Contributors
|
||||
* Laurent Rocher
|
||||
|
@ -80,8 +79,6 @@
|
|||
* MrRar
|
||||
* Lazerbeak12345
|
||||
* mrminer
|
||||
* Thunder1035
|
||||
* opfromthestart
|
||||
|
||||
## MineClone5
|
||||
* kay27
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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=
|
|
@ -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=
|
|
@ -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
|
||||
|
|
|
@ -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=
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
})
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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(
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -65,5 +65,3 @@ Nitwit=
|
|||
Cod=
|
||||
Salmon=
|
||||
Dolphin=
|
||||
Pillager=
|
||||
Tropical fish=
|
|
@ -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
|
||||
|
|
|
@ -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)
|
Before Width: | Height: | Size: 2.3 KiB |
Before Width: | Height: | Size: 477 B |
|
@ -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,
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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é
|
|
@ -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
|
||||
@1’s 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 !
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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",
|
||||
}},
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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=
|
||||
|
|
|
@ -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
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.=[Используйте] рычаг, чтобы перещёлкнуть его во включённое или выключенное положение .
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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")
|
||||
|
||||
|
|
|
@ -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
|
||||
|
||||
|
||||
|
|
|
@ -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=
|
|
@ -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
|
||||
|
|
|
@ -1,5 +0,0 @@
|
|||
# textdomain: mcl_beacons
|
||||
Beacon=Balise
|
||||
Beacon:=Balise :
|
||||
Primary Power:=Pouvoir Primaire :
|
||||
Inventory:=Inventaire :
|
|
@ -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
|
|
@ -1,2 +1,2 @@
|
|||
# textdomain: mcl_bells
|
||||
# textdomain: mcl_observers
|
||||
Bell=Cloche
|
||||
|
|
|
@ -1,2 +1,2 @@
|
|||
# textdomain: mcl_bells
|
||||
# textdomain: mcl_observers
|
||||
Bell=
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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=
|
|
@ -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
|
|
@ -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=
|
|
@ -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({
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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.
|
|
@ -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.=
|
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -1,4 +1,3 @@
|
|||
# textdomain: mcl_campfires
|
||||
Campfire=
|
||||
Soul Campfire=
|
||||
Cooks food and keeps bees happy.=
|
|
@ -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.
|
|
@ -0,0 +1,2 @@
|
|||
[LocalizedFileNames]
|
||||
big_smoke_4.png=@big_smoke_4.png,0
|
After Width: | Height: | Size: 235 B |
After Width: | Height: | Size: 266 B |
After Width: | Height: | Size: 203 B |
After Width: | Height: | Size: 165 B |
After Width: | Height: | Size: 303 B |
After Width: | Height: | Size: 294 B |
After Width: | Height: | Size: 308 B |
After Width: | Height: | Size: 298 B |
After Width: | Height: | Size: 298 B |
After Width: | Height: | Size: 256 B |
After Width: | Height: | Size: 259 B |
After Width: | Height: | Size: 240 B |
|
@ -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..
|
|
@ -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..=
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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ę.
|
||||
|
|
|
@ -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.=將水桶放入鍋釜中,使其充滿水。將一個空桶放在裝滿水的大鍋上,以取回水。將一個水瓶放入鍋釜內,使大鍋內增加三分之一的水。將一個玻璃瓶放在有水的鍋釜裡,取回三分之一的水。在有水的鍋釜上使用印有圖案的旗幟,以洗掉其上層。
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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.=Попытайтесь поместить ведро воды в котёл, чтобы наполнить его водой. Попытка поместить пустое ведро приведёт к освобождению котла. Поместите в котёл бутылку воды, чтобы наполнить его на треть.
|
||||
|
|