Compare commits

...

10 Commits

Author SHA1 Message Date
the-real-herowl a344e44518 Added spears 2024-05-20 22:21:12 +00:00
the-real-herowl d9a8e86b6d Fixed hoe descriptions 2024-05-20 22:21:12 +00:00
the-real-herowl d6cfdf3b56 Added hammers 2024-05-20 22:21:12 +00:00
syl bad8bc4c67 Improve blocks translation in French 2024-05-20 22:21:12 +00:00
the-real-herowl b43c65093f revert 2c25c94199
revert use math.ceil() instead of math.round()
2024-05-19 01:16:56 +00:00
the-real-herowl 2fb89285a0 Merge pull request 'Add remaining use of a tool/weapon in tooltips' (#4196) from Araca/MineClone2:durability-tooltip into dur_tooltip_adoption
Reviewed-on: VoxeLibre/VoxeLibre#4196
Reviewed-by: the-real-herowl <the-real-herowl@noreply.git.minetest.land>
2024-05-19 01:08:56 +00:00
Araca 2c25c94199 use math.ceil() instead of math.round() 2024-05-02 21:56:35 +02:00
Araca 50f3f2c5c8 Remove "Mining" word for durability in tooltip 2024-05-02 21:56:35 +02:00
Araca bb0080617a Add durability for bow & fishing rod 2024-05-02 21:56:35 +02:00
Araca c501ff6e1d Add remaining use of a tool/weapon in tooltips 2024-05-02 21:56:35 +02:00
71 changed files with 1115 additions and 233 deletions

View File

@ -534,6 +534,7 @@ end
function mcl_util.use_item_durability(itemstack, n) function mcl_util.use_item_durability(itemstack, n)
local uses = mcl_util.calculate_durability(itemstack) local uses = mcl_util.calculate_durability(itemstack)
itemstack:add_wear(65535 / uses * n) itemstack:add_wear(65535 / uses * n)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
function mcl_util.deal_damage(target, damage, mcl_reason) function mcl_util.deal_damage(target, damage, mcl_reason)

View File

@ -448,6 +448,7 @@ function minetest.node_dig(pos, node, digger)
end end
end end
end end
tt.reload_itemstack_description(wielded) -- update tooltip
digger:set_wielded_item(wielded) digger:set_wielded_item(wielded)
end end

View File

@ -524,10 +524,11 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
local is_player = hitter:is_player() local is_player = hitter:is_player()
local mob_pos = self.object:get_pos() local mob_pos = self.object:get_pos()
local player_pos = hitter:get_pos() local player_pos = hitter:get_pos()
local weapon = hitter:get_wielded_item()
if is_player then if is_player then
-- is mob out of reach? -- is mob out of reach?
if vector.distance(mob_pos, player_pos) > 3 then if vector.distance(mob_pos, player_pos) > (weapon:get_definition().range or 3) then
return return
end end
-- is mob protected? -- is mob protected?
@ -572,7 +573,6 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
-- punch interval -- punch interval
local weapon = hitter:get_wielded_item()
local punch_interval = 1.4 local punch_interval = 1.4
-- exhaust attacker -- exhaust attacker
@ -646,6 +646,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then if def.tool_capabilities and def.tool_capabilities.punch_attack_uses then
local wear = math.floor(65535/tool_capabilities.punch_attack_uses) local wear = math.floor(65535/tool_capabilities.punch_attack_uses)
weapon:add_wear(wear) weapon:add_wear(wear)
tt.reload_itemstack_description(weapon) -- update tooltip
hitter:set_wielded_item(weapon) hitter:set_wielded_item(weapon)
end end
end, hitter:get_player_name()) end, hitter:get_player_name())
@ -725,6 +726,7 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
if hitter and is_player then if hitter and is_player then
local wielditem = hitter:get_wielded_item() local wielditem = hitter:get_wielded_item()
kb = kb + 9 * mcl_enchanting.get_enchantment(wielditem, "knockback") kb = kb + 9 * mcl_enchanting.get_enchantment(wielditem, "knockback")
kb = kb + 9 * minetest.get_item_group(wielditem:get_name(), "hammer")
-- add player velocity to mob knockback -- add player velocity to mob knockback
local hv = hitter:get_velocity() local hv = hitter:get_velocity()
local dir_dot = (hv.x * dir.x) + (hv.z * dir.z) local dir_dot = (hv.x * dir.x) + (hv.z * dir.z)

View File

@ -122,6 +122,7 @@ mooshroom_def.on_rightclick = function(self, clicker)
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.shears_wear) item:add_wear(mobs_mc.shears_wear)
tt.reload_itemstack_description(item) -- update tooltip
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item) clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end end
-- Use bucket to milk -- Use bucket to milk

View File

@ -249,6 +249,7 @@ mcl_mobs.register_mob("mobs_mc:sheep", {
}) })
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.shears_wear) item:add_wear(mobs_mc.shears_wear)
tt.reload_itemstack_description(item) -- update tooltip
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item) clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end end
return return

View File

@ -131,6 +131,7 @@ mcl_mobs.register_mob("mobs_mc:snowman", {
-- Wear out -- Wear out
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
item:add_wear(mobs_mc.shears_wear) item:add_wear(mobs_mc.shears_wear)
tt.reload_itemstack_description(item) -- update tooltip
clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item) clicker:get_inventory():set_stack("main", clicker:get_wield_index(), item)
end end
end end

View File

@ -255,7 +255,7 @@ local function factoid_toolcaps(tool_capabilities, check_uses)
formstring = formstring .. miningtimesstr formstring = formstring .. miningtimesstr
end end
if useslines > 0 then if useslines > 0 then
formstring = formstring .. S("Mining durability:") .. "\n" formstring = formstring .. S("Durability:") .. "\n"
formstring = formstring .. miningusesstr formstring = formstring .. miningusesstr
end end
if caplines > 0 or useslines > 0 or timelines > 0 then if caplines > 0 or useslines > 0 or timelines > 0 then

View File

@ -134,7 +134,7 @@ Unknown item (@1)=Unbekannter Gegenstand (@1)
Itemstring: "@1"=Itemstring: „@1“ Itemstring: "@1"=Itemstring: „@1“
Durability: @1 uses=Haltbarkeit: @1 Benutzungen Durability: @1 uses=Haltbarkeit: @1 Benutzungen
Durability: @1=Haltbarkeit: @1 Durability: @1=Haltbarkeit: @1
Mining durability:=Grabehaltbarkeit: Durability:=Haltbarkeit:
• @1, level @2: @3 uses=• @1, Stufe @2: @3 Benutzungen • @1, level @2: @3 uses=• @1, Stufe @2: @3 Benutzungen
• @1, level @2: Unlimited=• @1, Stufe @2: Unbegrenzt • @1, level @2: Unlimited=• @1, Stufe @2: Unbegrenzt
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Die Rotation dieses Blocks hängt davon ab, wie sie ihn platzieren: Platzieren Sie ihn auf den Boden oder an die Decke, um ihn vertikal aufzustellen; platzieren Sie in an der Seite für eine horizontale Ausrichtung. Wenn Sie während des Bauens schleichen, wird der Block stattdessen senkrecht zur üblichen Ausrichtung rotiert. This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Die Rotation dieses Blocks hängt davon ab, wie sie ihn platzieren: Platzieren Sie ihn auf den Boden oder an die Decke, um ihn vertikal aufzustellen; platzieren Sie in an der Seite für eine horizontale Ausrichtung. Wenn Sie während des Bauens schleichen, wird der Block stattdessen senkrecht zur üblichen Ausrichtung rotiert.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=ukendt genstand (@1)
Itemstring: "@1"=Genstandsstreng: "@1" Itemstring: "@1"=Genstandsstreng: "@1"
Durability: @1 uses=Holdbarhed: @1 anvendelser Durability: @1 uses=Holdbarhed: @1 anvendelser
Durability: @1=Holdbarhed: @1 Durability: @1=Holdbarhed: @1
Mining durability:=Udvindingsholdbarhed: Durability:=Holdbarhed:
• @1, level @2: @3 uses=• @1, level @2: @3 anvendelser • @1, level @2: @3 uses=• @1, level @2: @3 anvendelser
• @1, level @2: Unlimited=• @1, level @2: Uendelig • @1, level @2: Unlimited=• @1, level @2: Uendelig
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Denne bloks rotation påvirkes af måden du placerer den på: Placér den på gulvet eller loftet for en lodret orientering; placér den på siden for en horisontal orientering. Hvis du sniger dig mens den placeres den vinkelret i stedet. This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Denne bloks rotation påvirkes af måden du placerer den på: Placér den på gulvet eller loftet for en lodret orientering; placér den på siden for en horisontal orientering. Hvis du sniger dig mens den placeres den vinkelret i stedet.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Objet inconnu (@1)
Itemstring: "@1"=Identifiant d'objet : "@1" Itemstring: "@1"=Identifiant d'objet : "@1"
Durability: @1 uses=Durabilité : @1 utilisations Durability: @1 uses=Durabilité : @1 utilisations
Durability: @1=Durabilité : @1 Durability: @1=Durabilité : @1
Mining durability:=Durabilité de minage : Durability:=Durabilité :
• @1, level @2: @3 uses=• @1, niveau @2 : @3 utilisations • @1, level @2: @3 uses=• @1, niveau @2 : @3 utilisations
• @1, level @2: Unlimited=• @1, niveau @2 : Illimité • @1, level @2: Unlimited=• @1, niveau @2 : Illimité
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=La manière dont vous placez ce bloc affecte sa rotation : placez-le au sol ou au plafond pour une orientation verticale ; placez-le sur un coté pour une orientation horizontale. Pour le placer de manière perpendiculaire, utilisez la touche déplacement discrêt en le plaçant. This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=La manière dont vous placez ce bloc affecte sa rotation : placez-le au sol ou au plafond pour une orientation verticale ; placez-le sur un coté pour une orientation horizontale. Pour le placer de manière perpendiculaire, utilisez la touche déplacement discrêt en le plaçant.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=不明なアイテム (@1)
Itemstring: "@1"=アイテム文字列:"@1" Itemstring: "@1"=アイテム文字列:"@1"
Durability: @1 uses=耐久度:@1回 使用 Durability: @1 uses=耐久度:@1回 使用
Durability: @1=耐久度:@1 Durability: @1=耐久度:@1
Mining durability:=採掘耐久度: Durability:=耐久度:
• @1, level @2: @3 uses=・@1, レベル @2@3回 使用 • @1, level @2: @3 uses=・@1, レベル @2@3回 使用
• @1, level @2: Unlimited=・@1, レベル @2無限 • @1, level @2: Unlimited=・@1, レベル @2無限
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=このブロックの回転は、置き方に影響されます:床や天井に置くと垂直方向、横に置くと水平方向になります。スニークしながら置くと、代わって直角の方向に向きます。 This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=このブロックの回転は、置き方に影響されます:床や天井に置くと垂直方向、横に置くと水平方向になります。スニークしながら置くと、代わって直角の方向に向きます。

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Nieznany przedmiot (@1)
Itemstring: "@1"=Id przedmiotu: "@1" Itemstring: "@1"=Id przedmiotu: "@1"
Durability: @1 uses=Wytrzymałość: @1 użyć Durability: @1 uses=Wytrzymałość: @1 użyć
Durability: @1=Wytrzymałość: @1 Durability: @1=Wytrzymałość: @1
Mining durability:=Wytrzymałość kopania: Durability:=Wytrzymałość:
• @1, level @2: @3 uses=• @1, poziom @2: @3 użyć • @1, level @2: @3 uses=• @1, poziom @2: @3 użyć
• @1, level @2: Unlimited=• @1, poziom @2: Nielimitowane • @1, level @2: Unlimited=• @1, poziom @2: Nielimitowane
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Na rotację tego bloku wpływa sposób postawienia: Postaw go na podłodze lub suficie aby uzyskać pionową orientację; postaw go na boku by uzyskać poziomą orientację. Skradanie się podczas postawiania sprawia, że zostanie postawiony prostopadle. This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Na rotację tego bloku wpływa sposób postawienia: Postaw go na podłodze lub suficie aby uzyskać pionową orientację; postaw go na boku by uzyskać poziomą orientację. Skradanie się podczas postawiania sprawia, że zostanie postawiony prostopadle.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Item desconhecido (@1)
Itemstring: "@1"= Itemstring: "@1"=
Durability: @1 uses= Durability: @1 uses=
Durability: @1= Durability: @1=
Mining durability:= Durability:=
• @1, level @2: @3 uses= • @1, level @2: @3 uses=
• @1, level @2: Unlimited= • @1, level @2: Unlimited=
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Item desconhecido (@1)
Itemstring: "@1"= Itemstring: "@1"=
Durability: @1 uses=Durabilidade: @1 usos Durability: @1 uses=Durabilidade: @1 usos
Durability: @1=Durabilidade: @1 Durability: @1=Durabilidade: @1
Mining durability:= Durability:=Durabilidade:
• @1, level @2: @3 uses= • @1, level @2: @3 uses=
• @1, level @2: Unlimited= • @1, level @2: Unlimited=
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Неизвестный предмет (@1)
Itemstring: "@1"=Техническое название: "@1" Itemstring: "@1"=Техническое название: "@1"
Durability: @1 uses=Прочность: @1 использований Durability: @1 uses=Прочность: @1 использований
Durability: @1=Прочность: @1 Durability: @1=Прочность: @1
Mining durability:=Прочность при добыче: Durability:=Прочность:
• @1, level @2: @3 uses=• @1, уровень @2: @3 раз(а) • @1, level @2: @3 uses=• @1, уровень @2: @3 раз(а)
• @1, level @2: Unlimited=• @1, уровень @2: Неограниченно • @1, level @2: Unlimited=• @1, уровень @2: Неограниченно
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Поворот этого блока зависит от того как вы его ставите: поставьте его на пол или потолок для вертикальной ориентации; поместите на стену для горизонтальной ориентации. Удерживайте [Красться] при размещении для перпендикулярной ориентации. This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=Поворот этого блока зависит от того как вы его ставите: поставьте его на пол или потолок для вертикальной ориентации; поместите на стену для горизонтальной ориентации. Удерживайте [Красться] при размещении для перпендикулярной ориентации.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=
Itemstring: "@1"= Itemstring: "@1"=
Durability: @1 uses= Durability: @1 uses=
Durability: @1= Durability: @1=
Mining durability:= Durability:=
• @1, level @2: @3 uses= • @1, level @2: @3 uses=
• @1, level @2: Unlimited= • @1, level @2: Unlimited=
This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.= This block's rotation is affected by the way you place it: Place it on the floor or ceiling for a vertical orientation; place it at the side for a horizontal orientation. Sneaking while placing it leads to a perpendicular orientation instead.=

View File

@ -374,7 +374,7 @@ doc.sub.items.register_factoid("tools", "misc", function(itemstring, def)
capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n" capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n"
end end
if miningusesstr ~= "" then if miningusesstr ~= "" then
capstr = capstr .. S("Mining durability: @1", miningusesstr) .. "\n" capstr = capstr .. S("Durability: @1", miningusesstr) .. "\n"
end end
-- Only show one group at max -- Only show one group at max

View File

@ -70,7 +70,7 @@ Instantaneous=Unmittelbar
@1 uses=@1 Verwendungen @1 uses=@1 Verwendungen
Unlimited uses=Unbegrenzte Verwendungen Unlimited uses=Unbegrenzte Verwendungen
Block breaking strength: @1=Blockbruchstärke: @1 Block breaking strength: @1=Blockbruchstärke: @1
Mining durability: @1=Grabehaltbarkeit: @1 Durability: @1=Haltbarkeit: @1
Armor points: @1=Rüstungspunkte: @1 Armor points: @1=Rüstungspunkte: @1
Armor durability: @1=Rüstungshaltbarkeit: @1 Armor durability: @1=Rüstungshaltbarkeit: @1
It can be worn on the head.=Es kann auf dem Kopf getragen werden. It can be worn on the head.=Es kann auf dem Kopf getragen werden.

View File

@ -70,7 +70,7 @@ Instantaneous=Momentan
@1 uses=@1 anvendelser @1 uses=@1 anvendelser
Unlimited uses=Uendelige anvendelser Unlimited uses=Uendelige anvendelser
Block breaking strength: @1=Blokkens brudstyrke: @1 Block breaking strength: @1=Blokkens brudstyrke: @1
Mining durability: @1=Udvindingsholdbarhed: @1 Durability: @1=Holdbarhed: @1
Armor points: @1=Rustningspoint: @1 Armor points: @1=Rustningspoint: @1
Armor durability: @1=Rustningens holdbarhed: @1 Armor durability: @1=Rustningens holdbarhed: @1
It can be worn on the head.=Den kan bæres på hovedet. It can be worn on the head.=Den kan bæres på hovedet.

View File

@ -6,7 +6,7 @@ This block can be turned into grass path with a shovel.=Ce bloc peut être trans
This block acts as a soil for all saplings.=Ce bloc agit comme un sol pour tous les pousses arbres. This block acts as a soil for all saplings.=Ce bloc agit comme un sol pour tous les pousses arbres.
This block acts as a soil for some saplings.=Ce bloc agit comme un sol pour certains pousses arbres. This block acts as a soil for some saplings.=Ce bloc agit comme un sol pour certains pousses arbres.
Sugar canes will grow on this block.=Les cannes à sucre pousseront sur ce bloc. Sugar canes will grow on this block.=Les cannes à sucre pousseront sur ce bloc.
Nether wart will grow on this block.=La verrue du Néant se développera sur ce bloc. Nether wart will grow on this block.=La verrue du Nether se développera sur ce bloc.
This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. En décomposition, il disparaît et peut lâcher un des ses objets habituels. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur. This block quickly decays when there is no wood block of any species within a distance of @1. When decaying, it disappears and may drop one of its regular drops. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. En décomposition, il disparaît et peut lâcher un des ses objets habituels. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur.
This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement et disparaît lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur. This block quickly decays and disappears when there is no wood block of any species within a distance of @1. The block does not decay when the block has been placed by a player.=Ce bloc se désintègre rapidement et disparaît lorsqu'il n'y a aucun bloc de bois de n'importe quel espèce à une distance de @1. Le bloc ne se désintègre pas lorsque le bloc a été placé par un joueur.
This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Cette plante ne peut pousser que sur des blocs d'herbe et de terre. Pour survivre, il doit avoir une vue dégagée sur le ciel au-dessus ou être exposé à un niveau de lumière de 8 ou plus. This plant can only grow on grass blocks and dirt. To survive, it needs to have an unobstructed view to the sky above or be exposed to a light level of 8 or higher.=Cette plante ne peut pousser que sur des blocs d'herbe et de terre. Pour survivre, il doit avoir une vue dégagée sur le ciel au-dessus ou être exposé à un niveau de lumière de 8 ou plus.
@ -71,7 +71,7 @@ Instantaneous=Instantané
@1 uses=@1 utilisations @1 uses=@1 utilisations
Unlimited uses=Utilisations illimitées Unlimited uses=Utilisations illimitées
Block breaking strength: @1=Résistance de rupture de bloc : @1 Block breaking strength: @1=Résistance de rupture de bloc : @1
Mining durability: @1=Durabilité de minage : @1 Durability: @1=Durabilité : @1
Armor points: @1=Point d'armure : @1 Armor points: @1=Point d'armure : @1
Armor durability: @1=Durabilité de l'armure : @1 Armor durability: @1=Durabilité de l'armure : @1
It can be worn on the head.=Il peut être porté sur la tête. It can be worn on the head.=Il peut être porté sur la tête.

View File

@ -70,7 +70,7 @@ Instantaneous=瞬間的
@1 uses=@1 使用 @1 uses=@1 使用
Unlimited uses=無限に使用可能 Unlimited uses=無限に使用可能
Block breaking strength: @1=ブロック破壊力:@1 Block breaking strength: @1=ブロック破壊力:@1
Mining durability: @1=採掘耐久度@1 Durability: @1=耐久性@1
Armor points: @1=防具値:@1 Armor points: @1=防具値:@1
Armor durability: @1=防具耐久度:@1 Armor durability: @1=防具耐久度:@1
It can be worn on the head.=頭に装着することもできます。 It can be worn on the head.=頭に装着することもできます。

View File

@ -70,7 +70,7 @@ Instantaneous=Natychmiastowe
@1 uses=@1 użyć @1 uses=@1 użyć
Unlimited uses=Nielimitowane użycia Unlimited uses=Nielimitowane użycia
Block breaking strength: @1=Siła niszczenia bloku: @1 Block breaking strength: @1=Siła niszczenia bloku: @1
Mining durability: @1=Wytrzymałość kopania: @1 Durability: @1=Wytrzymałość: @1
Armor points: @1=Punkty zbroi: @1 Armor points: @1=Punkty zbroi: @1
Armor durability: @1=Wytrzymałość zbroi: @1 Armor durability: @1=Wytrzymałość zbroi: @1
It can be worn on the head.=Może być noszony na głowie. It can be worn on the head.=Może być noszony na głowie.

View File

@ -70,7 +70,7 @@ Instantaneous=мгновенно
@1 uses=@1 @1 uses=@1
Unlimited uses=не ограничено Unlimited uses=не ограничено
Block breaking strength: @1=Сила добычи: @1 Block breaking strength: @1=Сила добычи: @1
Mining durability: @1=Прочность при добыче: @1 Durability: @1=Прочность: @1
Armor points: @1=Очки брони: @1 Armor points: @1=Очки брони: @1
Armor durability: @1=Прочность брони: @1 Armor durability: @1=Прочность брони: @1
It can be worn on the head.=Это можно носить на голове. It can be worn on the head.=Это можно носить на голове.

View File

@ -71,7 +71,7 @@ Instantaneous=
@1 uses= @1 uses=
Unlimited uses= Unlimited uses=
Block breaking strength: @1= Block breaking strength: @1=
Mining durability: @1= Durability: @1=
Armor points: @1= Armor points: @1=
Armor durability: @1= Armor durability: @1=
It can be worn on the head.= It can be worn on the head.=

View File

@ -41,7 +41,6 @@ Fast=Schnell
Slow=Langsam Slow=Langsam
Very slow=Sehr langsam Very slow=Sehr langsam
Painfully slow=Furchtbar langsam Painfully slow=Furchtbar langsam
Mining durability: @1=Grabehaltbarkeit: @1
Block breaking strength: @1=Blockbruchstärke: @1 Block breaking strength: @1=Blockbruchstärke: @1
@1 uses=@1 Verwendungen @1 uses=@1 Verwendungen
Unlimited uses=Unbegrenzte Verwendungen Unlimited uses=Unbegrenzte Verwendungen

View File

@ -41,7 +41,6 @@ Fast=Rápido
Slow=Lento Slow=Lento
Very slow=Muy lento Very slow=Muy lento
Painfully slow=Dolorosamente lento Painfully slow=Dolorosamente lento
Mining durability: @1=Durabilidad de minería: @1
Block breaking strength: @1=Fuerza para romper bloques: @1 Block breaking strength: @1=Fuerza para romper bloques: @1
@1 uses=@1 usos @1 uses=@1 usos
Unlimited uses=Usos ilimitados Unlimited uses=Usos ilimitados

View File

@ -41,7 +41,6 @@ Fast=Rapide
Slow=Lent Slow=Lent
Very slow=Très lent Very slow=Très lent
Painfully slow=Péniblement lent Painfully slow=Péniblement lent
Mining durability: @1=Durabilité de minage : @1
Block breaking strength: @1=Résistance à la rupture : @1 Block breaking strength: @1=Résistance à la rupture : @1
@1 uses=@1 utilisations @1 uses=@1 utilisations
Unlimited uses=Utilisations illimitées Unlimited uses=Utilisations illimitées

View File

@ -41,7 +41,6 @@ Fast=速い
Slow=遅い Slow=遅い
Very slow=とても遅い Very slow=とても遅い
Painfully slow=苦痛レベルで遅い Painfully slow=苦痛レベルで遅い
Mining durability: @1=採掘耐久度:@1
Block breaking strength: @1=ブロック破壊力:@1 Block breaking strength: @1=ブロック破壊力:@1
@1 uses=@1 使用 @1 uses=@1 使用
Unlimited uses=無限に使用可能 Unlimited uses=無限に使用可能

View File

@ -41,7 +41,7 @@ Fast=Szybkie
Slow=Wolne Slow=Wolne
Very slow=Bardzo wolne Very slow=Bardzo wolne
Painfully slow=Boleśnie wolne Painfully slow=Boleśnie wolne
Mining durability: @1=Wytrzymałość kopania: @1 Durability: @1=Wytrzymałość: @1
Block breaking strength: @1=Siła niszczenia bloku: @1 Block breaking strength: @1=Siła niszczenia bloku: @1
@1 uses=@1 użyć @1 uses=@1 użyć
Unlimited uses=Nielimitowane użycia Unlimited uses=Nielimitowane użycia

View File

@ -41,7 +41,6 @@ Fast=Rápido
Slow=Lento Slow=Lento
Very slow=Muito lento Very slow=Muito lento
Painfully slow=Dolorosamente lento Painfully slow=Dolorosamente lento
Mining durability: @1=Durabilidade de mineração: @1
Block breaking strength: @1=Força de quebra do bloco: @1 Block breaking strength: @1=Força de quebra do bloco: @1
@1 uses=@1 usos @1 uses=@1 usos
Unlimited uses=Usos ilimitados Unlimited uses=Usos ilimitados

View File

@ -42,7 +42,6 @@ Fast=Высокая
Slow=Низкая Slow=Низкая
Very slow=Очень низкая Very slow=Очень низкая
Painfully slow=Крайне низкая Painfully slow=Крайне низкая
Mining durability: @1=Прочность при добыче: @1
Block breaking strength: @1=Сила добычи: @1 Block breaking strength: @1=Сила добычи: @1
@1 uses=@1 @1 uses=@1
Unlimited uses=не ограничено Unlimited uses=не ограничено

View File

@ -41,7 +41,6 @@ Fast=
Slow= Slow=
Very slow= Very slow=
Painfully slow= Painfully slow=
Mining durability: @1=
Block breaking strength: @1= Block breaking strength: @1=
@1 uses= @1 uses=
Unlimited uses= Unlimited uses=

View File

@ -35,7 +35,7 @@ local function newline(str)
end end
-- Digging capabilities of tool -- Digging capabilities of tool
tt.register_snippet(function(itemstring, toolcaps) tt.register_snippet(function(itemstring, toolcaps, itemstack)
local def = minetest.registered_items[itemstring] local def = minetest.registered_items[itemstring]
if not toolcaps then if not toolcaps then
return return
@ -85,7 +85,12 @@ tt.register_snippet(function(itemstring, toolcaps)
if def._doc_items_durability == nil and base_uses > 0 then if def._doc_items_durability == nil and base_uses > 0 then
local real_uses = base_uses * math.pow(3, maxlevel) local real_uses = base_uses * math.pow(3, maxlevel)
if real_uses < 65535 then if real_uses < 65535 then
miningusesstr = S("@1 uses", real_uses) if itemstack then
local remaining_uses = math.round(real_uses - (itemstack:get_wear() * base_uses) / 65535)
miningusesstr = remaining_uses .. "/" .. real_uses
else
miningusesstr = S("@1 uses", real_uses)
end
else else
miningusesstr = S("Unlimited uses") miningusesstr = S("Unlimited uses")
end end
@ -95,7 +100,7 @@ tt.register_snippet(function(itemstring, toolcaps)
capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n" capstr = capstr .. S("Mining speed: @1", speedstr) .. "\n"
end end
if miningusesstr ~= "" then if miningusesstr ~= "" then
capstr = capstr .. S("Mining durability: @1", miningusesstr) .. "\n" capstr = capstr .. S("Durability: @1", miningusesstr) .. "\n"
end end
-- Only show one group at max -- Only show one group at max

View File

@ -25,6 +25,7 @@ tt.register_snippet(function(itemstring)
end end
return s return s
end) end)
tt.register_snippet(function(itemstring, _, itemstack) tt.register_snippet(function(itemstring, _, itemstack)
--local def = minetest.registered_items[itemstring] --local def = minetest.registered_items[itemstring]
local s = "" local s = ""
@ -34,13 +35,18 @@ tt.register_snippet(function(itemstring, _, itemstack)
s = s .. S("Armor points: @1", pts) s = s .. S("Armor points: @1", pts)
s = s .. "\n" s = s .. "\n"
end end
local remaining_uses = use
if itemstack then if itemstack then
local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking")
if unbreaking > 0 then if unbreaking > 0 then
use = math.floor(use / (0.6 + 0.4 / (unbreaking + 1))) use = math.floor(use / (0.6 + 0.4 / (unbreaking + 1)))
end end
remaining_uses = math.round(use - (itemstack:get_wear() * use) / 65535)
end end
if use > 0 then if use > 0 then
if use ~= remaining_uses then
use = remaining_uses .. "/" .. use -- implicit conversion from number to string
end
s = s .. S("Armor durability: @1", use) s = s .. S("Armor durability: @1", use)
end end
if s == "" then if s == "" then
@ -109,6 +115,9 @@ end)
tt.register_snippet(function(itemstring, _, itemstack) tt.register_snippet(function(itemstring, _, itemstack)
if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then if itemstring:sub(1, 23) == "mcl_fishing:fishing_rod" or itemstring:sub(1, 12) == "mcl_bows:bow" then
return S("Durability: @1", S("@1 uses", mcl_util.calculate_durability(itemstack or ItemStack(itemstring)))) local stack = itemstack or ItemStack(itemstring)
local use = mcl_util.calculate_durability(stack)
local remaining_use = math.round(use - (stack:get_wear() * use) / 65535)
return S("Durability: @1", S("@1 uses", remaining_use .."/".. use))
end end
end) end)

View File

@ -227,6 +227,7 @@ local dispenserdef = {
entity.gotten = true entity.gotten = true
minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true) minetest.sound_play("mcl_tools_shears_cut", { pos = pos }, true)
stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses) stack:add_wear(65535 / stackdef._mcl_diggroups.shearsy.uses)
tt.reload_itemstack_description(stack) -- update tooltip
inv:set_stack("main", stack_id, stack) inv:set_stack("main", stack_id, stack)
break break
end end

View File

@ -35,6 +35,7 @@ local function random_arrow_positions(positions, placement)
end end
return 0 return 0
end end
mcl_bows.random_arrow_positions = random_arrow_positions
local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements") local mod_awards = minetest.get_modpath("awards") and minetest.get_modpath("mcl_achievements")
local mod_button = minetest.get_modpath("mesecons_button") local mod_button = minetest.get_modpath("mesecons_button")

View File

@ -1,6 +1,5 @@
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
mcl_bows = {}
-- local arrows = { -- local arrows = {
-- ["mcl_bows:arrow"] = "mcl_bows:arrow_entity", -- ["mcl_bows:arrow"] = "mcl_bows:arrow_entity",
@ -300,6 +299,7 @@ controls.register_on_release(function(player, key, time)
durability = durability * (unbreaking + 1) durability = durability * (unbreaking + 1)
end end
wielditem:add_wear(65535/durability) wielditem:add_wear(65535/durability)
tt.reload_itemstack_description(wielditem) -- update tooltip
end end
player:set_wielded_item(wielditem) player:set_wielded_item(wielditem)
reset_bow_state(player, true) reset_bow_state(player, true)

View File

@ -350,6 +350,7 @@ controls.register_on_press(function(player, key, time)
durability = durability / 3 durability = durability / 3
end end
wielditem:add_wear(65535/durability) wielditem:add_wear(65535/durability)
tt.reload_itemstack_description(wielditem) -- update tooltip
end end
player:set_wielded_item(wielditem) player:set_wielded_item(wielditem)
reset_bow_state(player, true) reset_bow_state(player, true)

View File

@ -1,3 +1,5 @@
mcl_bows = {}
--Bow --Bow
dofile(minetest.get_modpath("mcl_bows") .. "/arrow.lua") dofile(minetest.get_modpath("mcl_bows") .. "/arrow.lua")
dofile(minetest.get_modpath("mcl_bows") .. "/bow.lua") dofile(minetest.get_modpath("mcl_bows") .. "/bow.lua")

View File

@ -323,6 +323,7 @@ function mcl_campfires.register_campfire(name, def)
local wear = mcl_autogroup.get_wear(toolname, "shovely") local wear = mcl_autogroup.get_wear(toolname, "shovely")
if wear then if wear then
itemstack:add_wear(wear) itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
end end
node.name = name node.name = name

View File

@ -1,94 +1,94 @@
# textdomain: mcl_colorblocks # textdomain: mcl_colorblocks
White Terracotta=Terre cuite blanche White Terracotta=Terre cuite blanche
White Glazed Terracotta=Terre cuite emaillée blanche White Glazed Terracotta=Terre cuite émaillée blanche
White Glazed Terracotta Pillar=Pilier de terre cuite emaillée blanche White Glazed Terracotta Pillar=Pilier de terre cuite émaillée blanche
White Concrete Powder=Béton en poudre blanc White Concrete Powder=Béton en poudre blanc
White Concrete=Béton blanc White Concrete=Béton blanc
Grey Terracotta=Terre cuite grise Grey Terracotta=Terre cuite grise
Grey Glazed Terracotta=Terre cuite emaillée grise Grey Glazed Terracotta=Terre cuite émaillée grise
Grey Glazed Terracotta Pillar=Pilier de terre cuite emaillée grise Grey Glazed Terracotta Pillar=Pilier de terre cuite émaillée grise
Grey Concrete Powder=Béton en goudre gris Grey Concrete Powder=Béton en poudre gris
Grey Concrete=Béton gris Grey Concrete=Béton gris
Light Grey Terracotta=Terre cuite gris clair Light Grey Terracotta=Terre cuite gris clair
Light Grey Glazed Terracotta=Terre cuite emaillée gris clair Light Grey Glazed Terracotta=Terre cuite émaillée gris clair
Light Grey Glazed Terracotta Pillar=Pilier de terre cuite emaillée gris clair Light Grey Glazed Terracotta Pillar=Pilier de terre cuite émaillée gris clair
Light Grey Concrete Powder=Béton en poudre gris clair Light Grey Concrete Powder=Béton en poudre gris clair
Light Grey Concrete=Béton gris clair Light Grey Concrete=Béton gris clair
Black Terracotta=Terre cuite noir Black Terracotta=Terre cuite noire
Black Glazed Terracotta=Terre cuite emaillée noir Black Glazed Terracotta=Terre cuite émaillée noire
Black Glazed Terracotta Pillar=Pilier de terre cuite emaillée noir Black Glazed Terracotta Pillar=Pilier de terre cuite émaillée noire
Black Concrete Powder=Béton en poudre noir Black Concrete Powder=Béton en poudre noir
Black Concrete=Béton noir Black Concrete=Béton noir
Red Terracotta=Terre cuite rouge Red Terracotta=Terre cuite rouge
Red Glazed Terracotta=Terre cuite emaillée rouge Red Glazed Terracotta=Terre cuite émaillée rouge
Red Glazed Terracotta Pillar=Pilier de terre cuite emaillée rouge Red Glazed Terracotta Pillar=Pilier de terre cuite émaillée rouge
Red Concrete Powder=Béton en poudre rouge Red Concrete Powder=Béton en poudre rouge
Red Concrete=Béton rouge Red Concrete=Béton rouge
Yellow Terracotta=Terre cuite jaune Yellow Terracotta=Terre cuite jaune
Yellow Glazed Terracotta=Terre cuite emaillée jaune Yellow Glazed Terracotta=Terre cuite émaillée jaune
Yellow Glazed Terracotta Pillar=Pilier de terre cuite emaillée jaune Yellow Glazed Terracotta Pillar=Pilier de terre cuite émaillée jaune
Yellow Concrete Powder=Béton en poudre jaune Yellow Concrete Powder=Béton en poudre jaune
Yellow Concrete=Béton jaune Yellow Concrete=Béton jaune
Green Terracotta=Terre cuite verte Green Terracotta=Terre cuite verte
Green Glazed Terracotta=Terre cuite emaillée verte Green Glazed Terracotta=Terre cuite émaillée verte
Green Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte Green Glazed Terracotta Pillar=Pilier de terre cuite émaillée verte
Green Concrete Powder=Béton en poudre vert Green Concrete Powder=Béton en poudre vert
Green Concrete=Béton vert Green Concrete=Béton vert
Cyan Terracotta=Terre cuite cyan Cyan Terracotta=Terre cuite cyan
Cyan Glazed Terracotta=Terre cuite emaillée cyan Cyan Glazed Terracotta=Terre cuite émaillée cyan
Cyan Glazed Terracotta Pillar=Pilier de terre cuite emaillée cyan Cyan Glazed Terracotta Pillar=Pilier de terre cuite émaillée cyan
Cyan Concrete Powder=Béton en poudre cyan Cyan Concrete Powder=Béton en poudre cyan
Cyan Concrete=Béton cyan Cyan Concrete=Béton cyan
Blue Terracotta=Terre cuite bleue Blue Terracotta=Terre cuite bleue
Blue Glazed Terracotta=Terre cuite emaillée bleue Blue Glazed Terracotta=Terre cuite émaillée bleue
Blue Glazed Terracotta Pillar=Pilier de terre cuite emaillée bleue Blue Glazed Terracotta Pillar=Pilier de terre cuite émaillée bleue
Blue Concrete Powder=Béton en poudre bleu Blue Concrete Powder=Béton en poudre bleu
Blue Concrete=Béton bleu Blue Concrete=Béton bleu
Magenta Terracotta=Terre cuite magenta Magenta Terracotta=Terre cuite magenta
Magenta Glazed Terracotta=Terre cuite emaillée magenta Magenta Glazed Terracotta=Terre cuite émaillée magenta
Magenta Glazed Terracotta Pillar=Pilier de terre cuite emaillée magenta Magenta Glazed Terracotta Pillar=Pilier de terre cuite émaillée magenta
Magenta Concrete Powder=Béton en poudre magenta Magenta Concrete Powder=Béton en poudre magenta
Magenta Concrete=Béton magenta Magenta Concrete=Béton magenta
Orange Terracotta=Terre cuite orange Orange Terracotta=Terre cuite orange
Orange Glazed Terracotta=Terre cuite emaillée orange Orange Glazed Terracotta=Terre cuite émaillée orange
Orange Glazed Terracotta Pillar=Pilier de terre cuite emaillée orange Orange Glazed Terracotta Pillar=Pilier de terre cuite émaillée orange
Orange Concrete Powder=Béton en poudre orange Orange Concrete Powder=Béton en poudre orange
Orange Concrete=Béton orange Orange Concrete=Béton orange
Purple Terracotta=Terre cuite violette Purple Terracotta=Terre cuite violette
Purple Glazed Terracotta=Terre cuite emaillée violette Purple Glazed Terracotta=Terre cuite émaillée violette
Purple Glazed Terracotta Pillar=Pilier de terre cuite emaillée violette Purple Glazed Terracotta Pillar=Pilier de terre cuite émaillée violette
Purple Concrete Powder=Béton en poudre violet Purple Concrete Powder=Béton en poudre violet
Purple Concrete=Béton violet Purple Concrete=Béton violet
Brown Terracotta=Terre cuite marron Brown Terracotta=Terre cuite marron
Brown Glazed Terracotta=Terre cuite emaillée marron Brown Glazed Terracotta=Terre cuite émaillée marron
Brown Glazed Terracotta Pillar=Pilier de terre cuite emaillée marron Brown Glazed Terracotta Pillar=Pilier de terre cuite émaillée marron
Brown Concrete Powder=Béton en poudre marron Brown Concrete Powder=Béton en poudre marron
Brown Concrete=Béton marron Brown Concrete=Béton marron
Pink Terracotta=Terre cuite rose Pink Terracotta=Terre cuite rose
Pink Glazed Terracotta=Terre cuite emaillée rose Pink Glazed Terracotta=Terre cuite émaillée rose
Pink Glazed Terracotta Pillar=Pilier de terre cuite emaillée rose Pink Glazed Terracotta Pillar=Pilier de terre cuite émaillée rose
Pink Concrete Powder=Béton en poudre rose Pink Concrete Powder=Béton en poudre rose
Pink Concrete=Béton rose Pink Concrete=Béton rose
Lime Terracotta=Terre cuite verte clair Lime Terracotta=Terre cuite verte clair
Lime Glazed Terracotta=Terre cuite emaillée verte clair Lime Glazed Terracotta=Terre cuite émaillée verte clair
Lime Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte clair Lime Glazed Terracotta Pillar=Pilier de terre cuite émaillée verte clair
Lime Concrete Powder=Béton en poudre vert clair Lime Concrete Powder=Béton en poudre vert clair
Lime Concrete=Béton vert clair Lime Concrete=Béton vert clair
Light Blue Terracotta=Terre cuite bleu clair Light Blue Terracotta=Terre cuite bleu clair
Light Blue Glazed Terracotta=Terre cuite emaillée bleu clair Light Blue Glazed Terracotta=Terre cuite émaillée bleu clair
Light Blue Glazed Terracotta Pillar=Pilier de terre cuite emaillée bleu clair Light Blue Glazed Terracotta Pillar=Pilier de terre cuite émaillée bleu clair
Light Blue Concrete Powder=Béton en poudre bleu clair Light Blue Concrete Powder=Béton en poudre bleu clair
Light Blue Concrete=Béton bleu clair Light Blue Concrete=Béton bleu clair
Terracotta is a basic building material. It comes in many different colors.=La terre cuite est un matériau de construction de base. Il est disponible dans de nombreuses couleurs différentes. Terracotta is a basic building material. It comes in many different colors.=La terre cuite est un matériau de construction de base. Elle est disponible dans de nombreuses couleurs différentes.
Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=La terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être tourné en le plaçant dans différentes directions. Glazed terracotta is a decorative block with a complex pattern. It can be rotated by placing it in different directions.=La terre cuite émaillée est un bloc décoratif au motif complexe. Elle peut être tournée en la plaçant dans différentes directions.
Glazed terracotta pillar is a decorative block with a complex pattern. It can be used with Glazed terracotta to make uneven patterns.=Le pilier de terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être utilisé avec la terre cuite émaillée pour réaliser des motifs impairs. Glazed terracotta pillar is a decorative block with a complex pattern. It can be used with Glazed terracotta to make uneven patterns.=Le pilier de terre cuite émaillée est un bloc décoratif au motif complexe. Il peut être utilisé avec la terre cuite émaillée pour réaliser des motifs irréguliers.
Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=La poudre de béton est utilisée pour créer du béton, mais elle peut également être utilisée comme décoration elle-même. Il est disponible en différentes couleurs. La poudre de béton se transforme en béton de la même couleur au contact de l'eau. Concrete powder is used for creating concrete, but it can also be used as decoration itself. It comes in different colors. Concrete powder turns into concrete of the same color when it comes in contact with water.=La poudre de béton est utilisée pour créer du béton, mais elle peut également être utilisée comme décoration elle-même. Elle est disponible en différentes couleurs. La poudre de béton se transforme en béton de la même couleur au contact de l'eau.
Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Le béton est un bloc décoratif qui se décline en de nombreuses couleurs différentes. Il est remarquable pour avoir une couleur très forte et propre. Concrete is a decorative block which comes in many different colors. It is notable for having a very strong and clean color.=Le béton est un bloc décoratif qui se décline en de nombreuses couleurs différentes. Il est remarquable pour avoir une couleur très forte et nette.
Terracotta=Terre cuite Terracotta=Terre cuite
Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=La terre cuite est un matériau de construction de base qui se décline en de nombreuses couleurs différentes. Ce bloc particulier n'est pas coloré. Terracotta is a basic building material which comes in many different colors. This particular block is uncolored.=La terre cuite est un matériau de construction de base qui se décline en de nombreuses couleurs différentes. Ce bloc particulier n'est pas coloré.
Colored Terracotta=Terre cuite colorée Colored Terracotta=Terre cuite colorée
Glazed Terracotta=Terre cuite emaillée Glazed Terracotta=Terre cuite émaillée
Glazed Terracotta Pillar=Pilier de terre cuite emaillée Glazed Terracotta Pillar=Pilier de terre cuite émaillée
Concrete Powder=Béton en poudre Concrete Powder=Béton en poudre
Concrete=Béton Concrete=Béton
Turns into concrete on water contact=Se transforme en béton au contact de l'eau Turns into concrete on water contact=Se transforme en béton au contact de l'eau

View File

@ -132,8 +132,8 @@ Jungle leaves are grown from jungle trees.=Les feuilles d'acajou poussent sur le
Ladder=Échelle Ladder=Échelle
Lapis Lazuli=Lapis-lazuli Lapis Lazuli=Lapis-lazuli
Lapis Lazuli are required for enchanting items on an enchanting table.=Les lapis-lazuli sont nécessaires pour enchanter des objets sur une table d'enchantement. Lapis Lazuli are required for enchanting items on an enchanting table.=Les lapis-lazuli sont nécessaires pour enchanter des objets sur une table d'enchantement.
Lapis Lazuli Block=Bloc de lapis-Lazuli Lapis Lazuli Block=Bloc de lapis-lazuli
Lapis Lazuli Ore=Minerai de lapis-Lazuli Lapis Lazuli Ore=Minerai de lapis-lazuli
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Le minerai de lapis-lazuli produit du lapis-lazuli. Il peut être rarement trouvé dans des filons près du fond du monde. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Le minerai de lapis-lazuli produit du lapis-lazuli. Il peut être rarement trouvé dans des filons près du fond du monde.
Lava Source=Source de Lave Lava Source=Source de Lave
Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=La lave est chaude et plutôt dangereuse. Ne le touchez pas, cela vous fera beaucoup de mal et il est difficile d'en sortir. Lava is hot and rather dangerous. Don't touch it, it will hurt you a lot and it is hard to get out.=La lave est chaude et plutôt dangereuse. Ne le touchez pas, cela vous fera beaucoup de mal et il est difficile d'en sortir.
@ -208,8 +208,8 @@ Stripped Acacia Log=Bûche d'acacia écorcée
Stripped Acacia Wood=Bois d'acacia écorcé Stripped Acacia Wood=Bois d'acacia écorcé
Stripped Birch Log=Bûche de bouleau écorcée Stripped Birch Log=Bûche de bouleau écorcée
Stripped Birch Wood=Bois de bouleau écorcé Stripped Birch Wood=Bois de bouleau écorcé
Stripped Dark Oak Log=Bûche de Chêne Noir Stripped Dark Oak Log=Bûche de chêne noir
Stripped Dark Oak Wood=Bois de Chêne Noir Stripped Dark Oak Wood=Bois de chêne noir
Stripped Jungle Log=Bûche d'acajou écorcée Stripped Jungle Log=Bûche d'acajou écorcée
Stripped Jungle Wood=Bois d'acajou écorcé Stripped Jungle Wood=Bois d'acajou écorcé
Stripped Oak Log=Bûche de chêne écorcée Stripped Oak Log=Bûche de chêne écorcée

View File

@ -12,7 +12,7 @@ minetest.register_node("mcl_core:glass", {
paramtype2 = "glasslikeliquidlevel", paramtype2 = "glasslikeliquidlevel",
sunlight_propagates = true, sunlight_propagates = true,
stack_max = 64, stack_max = 64,
groups = {handy=1, glass=1, building_block=1, material_glass=1}, groups = {handy=1, glass=1, building_block=1, material_glass=1, crushable=1},
sounds = mcl_sounds.node_sound_glass_defaults(), sounds = mcl_sounds.node_sound_glass_defaults(),
drop = "", drop = "",
_mcl_blast_resistance = 0.3, _mcl_blast_resistance = 0.3,

View File

@ -18,8 +18,8 @@ Deepslate coal ore is a variant of coal ore that can generate in deepslate and t
Deepslate Coal Ore=Minerai de charbon de l'ardoise des abîmes Deepslate Coal Ore=Minerai de charbon de l'ardoise des abîmes
Deepslate copper ore is a variant of copper ore that can generate in deepslate and tuff blobs.=Le minerai de cuivre de l'ardoise des abîmes est une variante de minerai de cuivre qui apparaît dans l'ardoise des abîmes et les filons de tuf. Deepslate copper ore is a variant of copper ore that can generate in deepslate and tuff blobs.=Le minerai de cuivre de l'ardoise des abîmes est une variante de minerai de cuivre qui apparaît dans l'ardoise des abîmes et les filons de tuf.
Deepslate Copper Ore=Minerai de cuivre de l'ardoise des abîmes Deepslate Copper Ore=Minerai de cuivre de l'ardoise des abîmes
Deepslate diamond ore is a variant of diamond ore that can generate in deepslate and tuff blobs.=Le minerai de diamand de l'ardoise des abîmes est une variante de minerai de diamand qui apparaît dans l'ardoise des abîmes et les filons de tuf. Deepslate diamond ore is a variant of diamond ore that can generate in deepslate and tuff blobs.=Le minerai de diamant de l'ardoise des abîmes est une variante de minerai de diamant qui apparaît dans l'ardoise des abîmes et les filons de tuf.
Deepslate Diamond Ore=Minerai de diamand de l'ardoise des abîmes Deepslate Diamond Ore=Minerai de diamant de l'ardoise des abîmes
Deepslate emerald ore is a variant of emerald ore that can generate in deepslate and tuff blobs.=Le minerai d'émeraude de l'ardoise des abîmes est une variante de minerai d'émeraude qui apparaît dans l'ardoise des abîmes et les filons de tuf. Deepslate emerald ore is a variant of emerald ore that can generate in deepslate and tuff blobs.=Le minerai d'émeraude de l'ardoise des abîmes est une variante de minerai d'émeraude qui apparaît dans l'ardoise des abîmes et les filons de tuf.
Deepslate Emerald Ore=Minerai d'émeraude de l'ardoise des abîmes Deepslate Emerald Ore=Minerai d'émeraude de l'ardoise des abîmes
Deepslate gold ore is a variant of gold ore that can generate in deepslate and tuff blobs.=Le minerai d'or de l'ardoise des abîmes est une variante de minerai d'or qui apparaît dans l'ardoise des abîmes et les filons de tuf. Deepslate gold ore is a variant of gold ore that can generate in deepslate and tuff blobs.=Le minerai d'or de l'ardoise des abîmes est une variante de minerai d'or qui apparaît dans l'ardoise des abîmes et les filons de tuf.

View File

@ -284,7 +284,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool
local wielditem = hitter:get_wielded_item() local wielditem = hitter:get_wielded_item()
--knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") --knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback")
local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback")
knockback = knockback + 3.22 * enchant local hammer = minetest.get_item_group(wielditem:get_name(), "hammer")
knockback = knockback + 3.22 * enchant + 3.22 * hammer
-- add vertical lift to knockback -- add vertical lift to knockback
local v = player:get_velocity() local v = player:get_velocity()
local added_v = 0 local added_v = 0
@ -485,6 +486,7 @@ mcl_experience.register_on_add_xp(function(player, xp)
end end
stack:set_wear(math.floor(new_wear)) stack:set_wear(math.floor(new_wear))
tt.reload_itemstack_description(stack) -- update tooltip
inv:set_stack(list, index, stack) inv:set_stack(list, index, stack)
end end

View File

@ -36,7 +36,7 @@ Increases mob loot.=Augmente le butin des mobs.
Increases rate of good loot (enchanting books, etc.)=Augmente le taux de bon butin (livres enchanteurs, etc.) Increases rate of good loot (enchanting books, etc.)=Augmente le taux de bon butin (livres enchanteurs, etc.)
Increases sweeping attack damage.=Augmente les dégâts de l'épée Increases sweeping attack damage.=Augmente les dégâts de l'épée
Increases underwater movement speed.=Augmente la vitesse de déplacement sous l'eau. Increases underwater movement speed.=Augmente la vitesse de déplacement sous l'eau.
Increases walking speed on soul sand.=Augmente la vitesse de marche sur le sable de l'âme. Increases walking speed on soul sand.=Augmente la vitesse de marche sur le sable des âmes.
Infinity=Infinité Infinity=Infinité
Item destroyed on death.=Objet détruit à la mort. Item destroyed on death.=Objet détruit à la mort.
Knockback=Recul Knockback=Recul

View File

@ -43,6 +43,7 @@ local hoe_on_place_function = function(wear_divisor)
if create_soil(pointed_thing.under, user:get_inventory()) then if create_soil(pointed_thing.under, user:get_inventory()) then
if not minetest.is_creative_enabled(user:get_player_name()) then if not minetest.is_creative_enabled(user:get_player_name()) then
itemstack:add_wear(65535/wear_divisor) itemstack:add_wear(65535/wear_divisor)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
return itemstack return itemstack
end end
@ -64,7 +65,7 @@ local hoe_usagehelp = S("Use the hoe on a cultivatable block (by rightclicking i
minetest.register_tool("mcl_farming:hoe_wood", { minetest.register_tool("mcl_farming:hoe_wood", {
description = S("Wood Hoe"), description = S("Wood Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.wood), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
_doc_items_hidden = false, _doc_items_hidden = false,
@ -108,7 +109,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_stone", { minetest.register_tool("mcl_farming:hoe_stone", {
description = S("Stone Hoe"), description = S("Stone Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.stone), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_stonehoe.png", inventory_image = "farming_tool_stonehoe.png",
@ -146,7 +147,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_iron", { minetest.register_tool("mcl_farming:hoe_iron", {
description = S("Iron Hoe"), description = S("Iron Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.iron), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_steelhoe.png", inventory_image = "farming_tool_steelhoe.png",
@ -192,7 +193,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_gold", { minetest.register_tool("mcl_farming:hoe_gold", {
description = S("Golden Hoe"), description = S("Golden Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.gold), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_goldhoe.png", inventory_image = "farming_tool_goldhoe.png",
@ -239,7 +240,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_diamond", { minetest.register_tool("mcl_farming:hoe_diamond", {
description = S("Diamond Hoe"), description = S("Diamond Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.diamond), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_diamondhoe.png", inventory_image = "farming_tool_diamondhoe.png",
@ -279,7 +280,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_netherite", { minetest.register_tool("mcl_farming:hoe_netherite", {
description = S("Netherite Hoe"), description = S("Netherite Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.netherite), _tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc, _doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp, _doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_netheritehoe.png", inventory_image = "farming_tool_netheritehoe.png",

View File

@ -1,18 +1,18 @@
# textdomain: mcl_fences # textdomain: mcl_fences
Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Les barrières sont des structures qui bloquent le chemin. Les barrières se connecteront les unes aux autres et aux blocs solides. Ils ne peuvent pas être sautés par un simple saut. Fences are structures which block the way. Fences will connect to each other and solid blocks. They cannot be jumped over with a simple jump.=Les barrières sont des structures qui bloquent le chemin. Les barrières se connecteront les unes aux autres et aux blocs solides. Elles ne peuvent pas être sautées par un simple saut.
Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Les portillons peuvent être ouvertes ou fermées et ne peuvent pas être sautées. Les barrières se connecteront bien aux portillions. Fence gates can be opened or closed and can't be jumped over. Fences will connect nicely to fence gates.=Les portillons peuvent être ouverts ou fermés et ne peuvent pas être sautés. Les barrières se connecteront bien aux portillons.
Right-click the fence gate to open or close it.=Cliquez avec le bouton droit sur le portillon pour l'ouvrir ou la fermer. Right-click the fence gate to open or close it.=Cliquez avec le bouton droit sur le portillon pour l'ouvrir ou le fermer.
Oak Fence=Barrière en bois de Chêne Oak Fence=Barrière en bois de chêne
Oak Fence Gate=Portillon en bois de Chêne Oak Fence Gate=Portillon en bois de chêne
Spruce Fence=Barrière en bois de Sapin Spruce Fence=Barrière en bois de sapin
Spruce Fence Gate=Portillon en bois de Sapin Spruce Fence Gate=Portillon en bois de sapin
Birch Fence=Barrière en bois de Bouleau Birch Fence=Barrière en bois de bouleau
Birch Fence Gate=Portillon en bois de Bouleau Birch Fence Gate=Portillon en bois de bouleau
Jungle Fence=Barrière en bois d'Acajou Jungle Fence=Barrière en bois d'acajou
Jungle Fence Gate=Portillon en bois d'Acajou Jungle Fence Gate=Portillon en bois d'acajou
Dark Oak Fence=Barrière en bois de Chêne Noir Dark Oak Fence=Barrière en bois de chêne noir
Dark Oak Fence Gate=Portillon en bois de Chêne Noir Dark Oak Fence Gate=Portillon en bois de chêne noir
Acacia Fence=Barrière en bois d'Acacia Acacia Fence=Barrière en bois d'acacia
Acacia Fence Gate=Portillon en bois d'Acacia Acacia Fence Gate=Portillon en bois d'acacia
Nether Brick Fence=Barrière en Brique du Nether Nether Brick Fence=Barrière en brique du Nether
Openable by players and redstone power=Ouvrable par les joueurs et la puissance redstone Openable by players and redstone power=Ouvrable par les joueurs et la puissance redstone

View File

@ -1,6 +1,7 @@
--Fishing Rod, Bobber, and Flying Bobber mechanics and Bobber artwork by Rootyjr. --Fishing Rod, Bobber, and Flying Bobber mechanics and Bobber artwork by Rootyjr.
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
local FISHING_ROD_DURABILITY = 65
local bobber_ENTITY={ local bobber_ENTITY={
physical = false, physical = false,
@ -38,7 +39,7 @@ local fish = function(itemstack, player, pointed_thing)
local ent = nil local ent = nil
local noent = true local noent = true
local durability = 65 local durability = FISHING_ROD_DURABILITY
local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking")
if unbreaking > 0 then if unbreaking > 0 then
durability = durability * (unbreaking + 1) durability = durability * (unbreaking + 1)
@ -140,6 +141,7 @@ local fish = function(itemstack, player, pointed_thing)
if not minetest.is_creative_enabled(player:get_player_name()) then if not minetest.is_creative_enabled(player:get_player_name()) then
local idef = itemstack:get_definition() local idef = itemstack:get_definition()
itemstack:add_wear(65535/durability) -- 65 uses itemstack:add_wear(65535/durability) -- 65 uses
tt.reload_itemstack_description(itemstack) -- update tooltip
if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then
minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true)
end end
@ -154,6 +156,7 @@ local fish = function(itemstack, player, pointed_thing)
if not minetest.is_creative_enabled(player:get_player_name()) then if not minetest.is_creative_enabled(player:get_player_name()) then
local idef = itemstack:get_definition() local idef = itemstack:get_definition()
itemstack:add_wear((65535/durability)*2) -- if so and not creative then wear double like in MC. itemstack:add_wear((65535/durability)*2) -- if so and not creative then wear double like in MC.
tt.reload_itemstack_description(itemstack) -- update tooltip
if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then if itemstack:get_count() == 0 and idef.sound and idef.sound.breaks then
minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true) minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true)
end end

View File

@ -102,7 +102,7 @@ A warped fungus on a stick can be used on saddled striders to ride them.=Un cham
Place it on a saddled strider to mount it. You can now ride the strider like a horse. Striders will also walk towards you when you just wield the fungus on a stick.=Placez-le sur un arpenteur sellé pour le monter. Vous pouvez maintenant monter l'arpenteur comme un cheval. Les arpenteurs marcheront également vers vous lorsque vous brandirez le champignon sur un bâton. Place it on a saddled strider to mount it. You can now ride the strider like a horse. Striders will also walk towards you when you just wield the fungus on a stick.=Placez-le sur un arpenteur sellé pour le monter. Vous pouvez maintenant monter l'arpenteur comme un cheval. Les arpenteurs marcheront également vers vous lorsque vous brandirez le champignon sur un bâton.
Nautilus Shell=Coquille de nautile Nautilus Shell=Coquille de nautile
Used to craft a conduit=Utilisé pour fabriquer un conduit. Used to craft a conduit=Utilisé pour fabriquer un conduit
The Nautilus Shell is used to craft a conduit. They can be obtained by fishing or killing a drowned that is wielding a shell.=La Coquille de nautile est utilisée pour fabriquer un conduit. Elles peuvent être obtenues en pêchant ou en tuant un noyé qui tient une coquille. The Nautilus Shell is used to craft a conduit. They can be obtained by fishing or killing a drowned that is wielding a shell.=La Coquille de nautile est utilisée pour fabriquer un conduit. Elles peuvent être obtenues en pêchant ou en tuant un noyé qui tient une coquille.
Heart of the Sea=Coeur de la Mer Heart of the Sea=Coeur de la Mer
The Heart of the Sea is used to craft a conduit. They can be obtained by finding them in a buried treasure chest.=Le Cœur de la Mer est utilisé pour fabriquer un conduit. Il peut être obtenu dans un coffre au trésor enterré. The Heart of the Sea is used to craft a conduit. They can be obtained by finding them in a buried treasure chest.=Le Cœur de la Mer est utilisé pour fabriquer un conduit. Il peut être obtenu dans un coffre au trésor enterré.

View File

@ -9,7 +9,7 @@ Huge brown mushroom blocks are the cap parts of huge brown mushrooms. It consist
The stem part of a huge brown mushroom.=La partie tige d'un énorme champignon brun. The stem part of a huge brown mushroom.=La partie tige d'un énorme champignon brun.
Huge Brown Mushroom Block=Bloc de champignon marron géant Huge Brown Mushroom Block=Bloc de champignon marron géant
Huge Brown Mushroom Stem=Tige de champignon marron géant Huge Brown Mushroom Stem=Tige de champignon marron géant
Huge Brown Mushroom All-Faces Stem=Tige de Champignon marron géant avec pores Huge Brown Mushroom All-Faces Stem=Tige de champignon marron géant avec pores
Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons bruns sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments. Brown mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons bruns sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments.
Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons rouges sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments. Red mushrooms are fungi which grow and spread in darkness, but are sensitive to light. They are inedible as such, but they can be used to craft food items.=Les champignons rouges sont des champignons qui poussent et se propagent dans l'obscurité, mais sont sensibles à la lumière. Ils sont non comestibles en tant que tels, mais ils peuvent être utilisés pour fabriquer des aliments.
A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Un seul champignon de cette espèce se propagera lentement au fil du temps vers un bloc opaque solide aléatoire avec un niveau de lumière de 12 ou moins dans un cube 3×3×3 autour du champignon. Il cesse de se propager lorsqu'il y a 5 champignons ou plus de la même espèce dans une zone de 9×3×9 blocs autour du champignon. A single mushroom of this species will slowly spread over time towards a random solid opaque block with a light level of 12 or lower in a 3×3×3 cube around the mushroom. It stops spreading when there are 5 or more mushrooms of the same species within an area of 9×3×9 blocks around the mushroom.=Un seul champignon de cette espèce se propagera lentement au fil du temps vers un bloc opaque solide aléatoire avec un niveau de lumière de 12 ou moins dans un cube 3×3×3 autour du champignon. Il cesse de se propager lorsqu'il y a 5 champignons ou plus de la même espèce dans une zone de 9×3×9 blocs autour du champignon.

View File

@ -1,42 +1,42 @@
# textdomain: mcl_nether # textdomain: mcl_nether
Glowstone=Pierre Lumineuse Glowstone=Pierre lumineuse
Glowstone is a naturally-glowing block which is home to the Nether.=La Pierre Lumineuse est un bloc naturellement brillant originaire du Nether. Glowstone is a naturally-glowing block which is home to the Nether.=La pierre lumineuse est un bloc naturellement brillant originaire du Nether.
Nether Quartz Ore=Minerai de quartz du Nether Nether Quartz Ore=Minerai de quartz du Nether
Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=Le minerai de quartz du Nether est un minerai contenant du quartz du Nether. Il se trouve généralement autour de la netherrack dans le Nether. Nether quartz ore is an ore containing nether quartz. It is commonly found around netherrack in the Nether.=Le minerai de quartz du Nether est un minerai contenant du quartz du Nether. Il se trouve généralement autour de la netherrack dans le Nether.
Netherrack=Netherrack Netherrack=Netherrack
Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=La netherrack est un bloc de pierre originaire du Nether. Démarrer un feu sur ce bloc créera un feu éternel. Netherrack is a stone-like block home to the Nether. Starting a fire on this block will create an eternal fire.=La netherrack est un bloc de pierre originaire du Nether. Démarrer un feu sur ce bloc créera un feu éternel.
Magma Block=Bloc de Magma Magma Block=Bloc de magma
Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Les blocs de magma sont des blocs solides chauds qui blessent quiconque s'y tient, à moins d'avoir une résistance au feu. Démarrer un feu sur ce bloc créera un feu éternel. Magma blocks are hot solid blocks which hurt anyone standing on it, unless they have fire resistance. Starting a fire on this block will create an eternal fire.=Les blocs de magma sont des blocs solides chauds qui blessent quiconque s'y tient, à moins d'avoir une résistance au feu. Démarrer un feu sur ce bloc créera un feu éternel.
@1 stood too long on a magma block.=@1 s'est tenu trop longtemps sur un bloc de magma. @1 stood too long on a magma block.=@1 s'est tenu trop longtemps sur un bloc de magma.
Soul Sand=Sable des âmes Soul Sand=Sable des âmes
Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=Le sable de l'âme est un bloc du Nether. On ne peut marcher que lentement sur le sable de l'âme. L'effet de ralentissement est amplifié lorsque le sable de l'âme est au-dessus de la glace, de la glace tassée ou d'un bloc de slime. Soul sand is a block from the Nether. One can only slowly walk on soul sand. The slowing effect is amplified when the soul sand is on top of ice, packed ice or a slime block.=Le sable des âmes est un bloc du Nether. On ne peut marcher que lentement sur le sable des âmes. L'effet de ralentissement est amplifié lorsque le sable des âmes est au-dessus de la glace, de la glace tassée ou d'un bloc de slime.
Nether Brick Block=Bloc de Briques du Nether Nether Brick Block=Bloc de briques du Nether
Red Nether Brick Block=Bloc de Briques Rouges du Nether Red Nether Brick Block=Bloc de briques rouges du Nether
Nether Wart Block=Bloc de Verrues du Nether Nether Wart Block=Bloc de verrues du Nether
A nether wart block is a purely decorative block made from nether wart.=Un bloc de verrues du Nether est un bloc purement décoratif fabriqué à partir de verrues du Nether. A nether wart block is a purely decorative block made from nether wart.=Un bloc de verrues du Nether est un bloc purement décoratif fabriqué à partir de verrues du Nether.
Block of Quartz=Bloc de Quartz Block of Quartz=Bloc de quartz
Chiseled Quartz Block=Bloc de Quartz sculpté Chiseled Quartz Block=Bloc de quartz sculpté
Pillar Quartz Block=Bloc de Quartz rayé Pillar Quartz Block=Bloc de quartz rayé
Smooth Quartz=Quartz Lisse Smooth Quartz=Quartz lisse
Glowstone Dust=Poudre Lumineuse Glowstone Dust=Poudre lumineuse
Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=La poudre lumineuse est la poussière qui sort des pierres lumineuses brisées. Elle est principalement utilisée dans l'artisanat. Glowstone dust is the dust which comes out of broken glowstones. It is mainly used in crafting.=La poudre lumineuse est la poussière qui sort des pierres lumineuses brisées. Elle est principalement utilisée dans l'artisanat.
Nether Quartz=Quartz du Nether Nether Quartz=Quartz du Nether
Nether quartz is a versatile crafting ingredient.=Le quartz du Nether est un ingrédient artisanal polyvalent. Nether quartz is a versatile crafting ingredient.=Le quartz du Nether est un ingrédient artisanal polyvalent.
Nether Brick=Brique du Nether Nether Brick=Brique du Nether
Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Les briques du Nether sont le principal ingrédient pour la fabrication de blocs de briques et de clôtures du Nether. Nether bricks are the main crafting ingredient for crafting nether brick blocks and nether fences.=Les briques du Nether sont le principal ingrédient pour la fabrication de blocs de briques et de clôtures du Nether.
Nether Lava Source=Source de Lave du Nether Nether Lava Source=Source de lave du Nether
Flowing Nether Lava=Lave du Nether en mouvement Flowing Nether Lava=Lave du Nether en mouvement
Premature Nether Wart (Stage 1)=Verrue du Néant prématurée (étape 1) Premature Nether Wart (Stage 1)=Verrue du Nether prématurée (étape 1)
A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Une verrue du Nether prématurée vient d'être plantée sur du sable d'âme. La verrue du Nether pousse lentement sur le sable de l'âme en 4 étapes (les deuxième et troisième étapes semblent identiques). Bien que la verrue du Nether soit originaire du Nether, elle se développe dans toutes les dimensions. A premature nether wart has just recently been planted on soul sand. Nether wart slowly grows on soul sand in 4 stages (the second and third stages look identical). Although nether wart is home to the Nether, it grows in any dimension.=Une verrue du Nether prématurée vient d'être plantée sur du sable des âmes. La verrue du Nether pousse lentement sur le sable des âmes en 4 étapes (les deuxième et troisième étapes semblent identiques). Bien que la verrue du Nether soit originaire du Nether, elle se développe dans toutes les dimensions.
Premature Nether Wart (Stage 2)=Verrue du Nether prématurée (étape 2) Premature Nether Wart (Stage 2)=Verrue du Nether prématurée (étape 2)
Premature Nether Wart (Stage 3)=Verrue du Nether prématurée (étape 3) Premature Nether Wart (Stage 3)=Verrue du Nether prématurée (étape 3)
Mature Nether Wart=Verrue du Nether Mature Mature Nether Wart=Verrue du Nether mature
The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=La verrue du Nether mature est une plante du Nether qui a atteint sa taille maximale et ne poussera plus. Elle est prête à être récoltée. The mature nether wart is a plant from the Nether and reached its full size and won't grow any further. It is ready to be harvested for its items.=La verrue du Nether mature est une plante du Nether qui a atteint sa taille maximale et ne poussera plus. Elle est prête à être récoltée.
Nether Wart=Verrues du Nether Nether Wart=Verrues du Nether
Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Les verrues du Nether sont des plantes originaires du Nether. Elles peuvent être plantées sur du sable d'âme et se développer en 4 étapes. Nether warts are plants home to the Nether. They can be planted on soul sand and grow in 4 stages.=Les verrues du Nether sont des plantes originaires du Nether. Elles peuvent être plantées sur du sable des âmes et se développer en 4 étapes.
Place this item on soul sand to plant it and watch it grow.=Placez cet article sur du sable d'âme pour le planter et regardez-le grandir. Place this item on soul sand to plant it and watch it grow.=Placez cet article sur du sable des âmes pour le planter et regardez-le grandir.
Burns your feet=Vous brûle les pieds Burns your feet=Vous brûle les pieds
Grows on soul sand=Pousse sur le sable de l'âme Grows on soul sand=Pousse sur le sable des âmes
Reduces walking speed=Réduit la vitesse de marche Reduces walking speed=Réduit la vitesse de marche
Netherite Scrap=Fragments de netherite Netherite Scrap=Fragments de netherite
Netherite Ingot=Lingot de netherite Netherite Ingot=Lingot de netherite

View File

@ -1,51 +1,51 @@
# textdomain: mcl_ocean # textdomain: mcl_ocean
Sea Lantern=Lanterne aquatique Sea Lantern=Lanterne aquatique
Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Les lanternes marines sont des sources lumineuses décoratives qui ont fière allure sous l'eau mais peuvent être placées n'importe où. Sea lanterns are decorative light sources which look great underwater but can be placed anywhere.=Les lanternes aquatiques sont des sources lumineuses décoratives qui ont fière allure sous l'eau mais peuvent être placées n'importe où.
Prismarine=Prismarine Prismarine=Prismarine
Prismarine is used as a building block. It slowly changes its color.=La prismarine est utilisée comme bloc de construction. Il change lentement de couleur. Prismarine is used as a building block. It slowly changes its color.=La prismarine est utilisée comme bloc de construction. Elle change lentement de couleur.
Prismarine Bricks=Prismarine Taillée Prismarine Bricks=Prismarine taillée
Dark Prismarine=Prismarine Sombre Dark Prismarine=Prismarine sombre
Prismarine Crystals=Cristaux de Prismarine Prismarine Crystals=Cristaux de prismarine
Prismarine Shard=Éclat de Prismarine Prismarine Shard=Éclat de prismarine
Dried Kelp=Algue Séchée Dried Kelp=Algue séchée
Dried Kelp Block=Bloc d'Algue Séchée Dried Kelp Block=Bloc d'algue séchée
Brain Coral Block=Bloc de Corail Brain Coral Block=Bloc de corail cerveau
Brain Coral Fan=Gorgone de Corail Brain Coral Fan=Gorgone de corail cerveau
Brain Coral=Corail Brain Coral=Corail cerveau
Bubble Coral Block=Bloc de Corail Bulles Bubble Coral Block=Bloc de corail bulles
Bubble Coral Fan=Gorgone de Corail Bulles Bubble Coral Fan=Gorgone de corail bulles
Bubble Coral=Corail Bulles Bubble Coral=Corail bulles
Fire Coral Block=Bloc Corail de Feu Fire Coral Block=Bloc de corail de feu
Fire Coral Fan=Gorgone Corail de Feu Fire Coral Fan=Gorgone de corail de feu
Fire Coral=Corail de Feu Fire Coral=Corail de feu
Horn Coral Block=Bloc de Corail Corné Horn Coral Block=Bloc de corail corné
Horn Coral Fan=Gorgone de Corail Corné Horn Coral Fan=Gorgone de corail corné
Horn Coral=Corail Corné Horn Coral=Corail corné
Tube Coral Block=Bloc de Corail Tubulaire Tube Coral Block=Bloc de corail tubulaire
Tube Coral Fan=Gorgone de Corail Tubulaire Tube Coral Fan=Gorgone de corail tubulaire
Tube Coral=Corail Tubulaire Tube Coral=Corail tubulaire
Dead Brain Coral Block=Bloc de Corail Mort Dead Brain Coral Block=Bloc de corail cerveau mort
Dead Brain Coral Fan=Gorgone de Corail Mort Dead Brain Coral Fan=Gorgone de corail cerveau mort
Dead Brain Coral=Corail Mort Dead Brain Coral=Corail cerveau mort
Dead Bubble Coral Block=Bloc de Corail Bulles Mort Dead Bubble Coral Block=Bloc de corail bulles mort
Dead Bubble Coral Fan=Gorgone de Corail Bulles Mort Dead Bubble Coral Fan=Gorgone de corail bulles mort
Dead Bubble Coral=Corail Bulles Mort Dead Bubble Coral=Corail bulles mort
Dead Fire Coral Block=Bloc de Corail de Feu Mort Dead Fire Coral Block=Bloc de corail de feu mort
Dead Fire Coral Fan=Gorgone de Corail de Feu Mort Dead Fire Coral Fan=Gorgone de corail de feu mort
Dead Fire Coral=Corail de Feu Mort Dead Fire Coral=Corail de feu mort
Dead Horn Coral Block=Bloc de Corail Corné Mort Dead Horn Coral Block=Bloc de corail corné mort
Dead Horn Coral Fan=Gorgone de Corail Corné Mort Dead Horn Coral Fan=Gorgone de corail corné mort
Dead Horn Coral=Corail Corné Mort Dead Horn Coral=Corail corné mort
Dead Tube Coral Block=Bloc de Corail Tubulaire Mort Dead Tube Coral Block=Bloc de corail tubulaire mort
Dead Tube Coral Fan=Gorgone de Corail Tubulaire Mort Dead Tube Coral Fan=Gorgone de corail tubulaire mort
Dead Tube Coral=Corail Tubulaire Mort Dead Tube Coral=Corail tubulaire mort
Seagrass=Herbe aquatique Seagrass=Herbe aquatique
Kelp=Algue Kelp=Algue
Kelp grows inside water on top of dirt, sand or gravel.=Les Algues pousse à l'intérieur de l'eau sur la terre, le sable ou le gravier. Kelp grows inside water on top of dirt, sand or gravel.=Les algues poussent dans l'eau sur la terre, le sable ou le gravier.
Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Les blocs de corail vivent dans les océans et ont besoin d'une source d'eau à côté d'eux pour survivre. Sans eau, ils meurent. Coral blocks live in the oceans and need a water source next to them to survive. Without water, they die off.=Les blocs de corail vivent dans les océans et ont besoin d'une source d'eau à côté d'eux pour survivre. Sans eau, ils meurent.
Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les coraux se développent au-dessus des blocs de corail et doivent être à l'intérieur d'une source d'eau pour survivre. Sans eau, il mourra, ainsi que le bloc de corail en dessous. Corals grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les coraux se développent au-dessus des blocs de corail et doivent être dans une source d'eau pour survivre. Sans eau, il mourra, ainsi que le bloc de corail en dessous.
Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les gorgones de coraux se développent au-dessus des blocs de corail et doivent être à l'intérieur d'une source d'eau pour survivre. Sans eau, il mourra, ainsi que le bloc de corail en dessous. Corals fans grow on top of coral blocks and need to be inside a water source to survive. Without water, it will die off, as well as the coral block below.=Les gorgones de corail se développent au-dessus des blocs de corail et doivent être dans une source d'eau pour survivre. Sans eau, elle mourra, ainsi que le bloc de corail en dessous.
Seagrass grows inside water on top of dirt, sand or gravel.=Les herbiers aquatique poussent à l'intérieur de l'eau sur la terre, le sable ou le gravier. Seagrass grows inside water on top of dirt, sand or gravel.=Les herbiers aquatique poussent dans l'eau sur la terre, le sable ou le gravier.
A decorative block that serves as a great furnace fuel.=Un bloc décoratif qui sert de bon combustible pour le four. A decorative block that serves as a great furnace fuel.=Un bloc décoratif qui sert de bon combustible pour le four.
Dried kelp is a food item.=L'algue séchée est un aliment. Dried kelp is a food item.=L'algue séchée est un aliment.
Grows on coral block of same species=Pousse sur un bloc de corail de la même espèce Grows on coral block of same species=Pousse sur un bloc de corail de la même espèce
@ -53,7 +53,7 @@ Needs water to live=A besoin d'eau pour vivre
Grows in water on dirt, sand, gravel=Pousse dans l'eau sur la terre, le sable et le gravier Grows in water on dirt, sand, gravel=Pousse dans l'eau sur la terre, le sable et le gravier
Glows in the water=Brille dans l'eau Glows in the water=Brille dans l'eau
4 possible sizes=4 tailles possibles 4 possible sizes=4 tailles possibles
Grows on dead brain coral block=Pousse sur un bloc de corail mort Grows on dead brain coral block=Pousse sur un bloc de corail cerveau mort
Sea Pickle=Cornichon de mer Sea Pickle=Cornichon de mer
Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.=Les cornichons de mer poussent sur des blocs de corail morts et fournissent de la lumière lorsqu'ils sont sous l'eau. Ils viennent en 4 tailles qui varient en luminosité. Sea pickles grow on dead brain coral blocks and provide light when underwater. They come in 4 sizes that vary in brightness.=Les cornichons de mer poussent sur des blocs de corail cerveau mort et fournissent de la lumière lorsqu'ils sont sous l'eau. Ils viennent en 4 tailles qui varient en luminosité.
It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.=Il ne peut être placé que sur des blocs de corail morts. Placer un cornichon sur un autre cornichon le rendra plus brillant et plus brillant. It can only be placed on top of dead brain coral blocks. Placing a sea pickle on another sea pickle will make it grow and brighter.=Il ne peut être placé que sur des blocs de corail cerveau mort. Placer un cornichon sur un autre cornichon le rendra plus grand et plus brillant.

View File

@ -2,9 +2,9 @@
Sponge=Éponge Sponge=Éponge
Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Les éponges sont des blocs qui éliminent l'eau autour d'eux lorsqu'ils sont placés ou entrent en contact avec l'eau, la transformant en une éponge humide. Sponges are blocks which remove water around them when they are placed or come in contact with water, turning it into a wet sponge.=Les éponges sont des blocs qui éliminent l'eau autour d'eux lorsqu'ils sont placés ou entrent en contact avec l'eau, la transformant en une éponge humide.
Waterlogged Sponge=Éponge gorgée d'eau Waterlogged Sponge=Éponge gorgée d'eau
A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Une éponge gorgée d'eau peut être séchée dans le four pour la transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible d'un four, l'eau se déversera dans le seau. A waterlogged sponge can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of a furnace, the water will pour into the bucket.=Une éponge gorgée d'eau peut être séchée dans le four pour la transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible du four, l'eau se déversera dans le seau.
Riverwaterlogged Sponge=Éponge gorgée d'eau de rivière Riverwaterlogged Sponge=Éponge gorgée d'eau de rivière
This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Il s'agit d'une éponge trempée d'eau de rivière. Elle peut être séché dans le four pour le transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible du four, l'eau de la rivière se déversera dans le seau. This is a sponge soaking wet with river water. It can be dried in the furnace to turn it into (dry) sponge. When there's an empty bucket in the fuel slot of the furnace, the river water will pour into the bucket.=Il s'agit d'une éponge trempée d'eau de rivière. Elle peut être séchée dans le four pour la transformer en éponge (sèche). Lorsqu'il y a un seau vide dans la fente de combustible du four, l'eau de la rivière se déversera dans le seau.
A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Une éponge devient gorgée d'eau de rivière (au lieu d'être gorgée d'eau) si elle aspire plus d'eau de rivière que d'eau (normale). A sponge becomes riverwaterlogged (instead of waterlogged) if it sucks up more river water than (normal) water.=Une éponge devient gorgée d'eau de rivière (au lieu d'être gorgée d'eau) si elle aspire plus d'eau de rivière que d'eau (normale).
Removes water on contact=Élimine l'eau au contact Removes water on contact=Élimine l'eau au contact
Can be dried in furnace=Peut être séché au four Can be dried in furnace=Peut être séchée au four

View File

@ -22,9 +22,13 @@ dig_speed_class group:
-- Help texts -- Help texts
local pickaxe_longdesc = S("Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.") local pickaxe_longdesc = S("Pickaxes are mining tools to mine hard blocks, such as stone. A pickaxe can also be used as weapon, but it is rather inefficient.")
local axe_longdesc = S("An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.") local axe_longdesc = S("An axe is your tool of choice to cut down trees, wood-based blocks and other blocks. Axes deal a lot of damage as well, but they are rather slow.")
local sword_longdesc = S("Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.") local sword_longdesc = S("Swords are great in melee combat, as they are fast, deal high damage and can endure countless battles. Swords can also be used to cut down a few particular blocks, such as cobwebs.")
local sword_use = S("To slash multiple enemies, hold the sword in your hand, then use (rightclick) an enemy.")
local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.") local shovel_longdesc = S("Shovels are tools for digging coarse blocks, such as dirt, sand and gravel. They can also be used to turn grass blocks to grass paths. Shovels can be used as weapons, but they are very weak.")
local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.") local shovel_use = S("To turn a grass block into a grass path, hold the shovel in your hand, then use (rightclick) the top or side of a grass block. This only works when there's air above the grass block.")
local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.") local shears_longdesc = S("Shears are tools to shear sheep and to mine a few block types. Shears are a special mining tool and can be used to obtain the original item from grass, leaves and similar blocks that require cutting.")
local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.") local shears_use = S("To shear sheep or carve faceless pumpkins, use the “place” key on them. Faces can only be carved at the side of faceless pumpkins. Mining works as usual, but the drops are different for a few blocks.")
@ -186,6 +190,7 @@ local make_grass_path = function(itemstack, placer, pointed_thing)
local wear = mcl_autogroup.get_wear(toolname, "shovely") local wear = mcl_autogroup.get_wear(toolname, "shovely")
if wear then if wear then
itemstack:add_wear(wear) itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
end end
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true) minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true)
@ -209,6 +214,7 @@ local make_grass_path = function(itemstack, placer, pointed_thing)
local wear = mcl_autogroup.get_wear(toolname, "shovely") local wear = mcl_autogroup.get_wear(toolname, "shovely")
if wear then if wear then
itemstack:add_wear(wear) itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
end end
minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true) minetest.sound_play({name="default_grass_footstep", gain=1}, {pos = above, max_hear_distance = 16}, true)
@ -240,6 +246,7 @@ if minetest.get_modpath("mcl_farming") then
local wear = mcl_autogroup.get_wear(toolname, "shearsy") local wear = mcl_autogroup.get_wear(toolname, "shearsy")
if wear then if wear then
itemstack:add_wear(wear) itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
end end
@ -420,6 +427,7 @@ local function make_stripped_trunk(itemstack, placer, pointed_thing)
local wear = mcl_autogroup.get_wear(toolname, "axey") local wear = mcl_autogroup.get_wear(toolname, "axey")
if wear then if wear then
itemstack:add_wear(wear) itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end end
end end
end end

View File

@ -1,37 +1,37 @@
# textdomain: mcl_wool # textdomain: mcl_wool
Wool=Laine Wool=Laine
Carpet=Tapis Carpet=Tapis
White Wool=Laine Blanche White Wool=Laine blanche
White Carpet=Tapis Blanc White Carpet=Tapis blanc
Grey Wool=Laine Grise Grey Wool=Laine grise
Grey Carpet=Tapis Gris Grey Carpet=Tapis gris
Light Grey Wool=Laine Gris Clair Light Grey Wool=Laine gris clair
Light Grey Carpet=Tapis Gris Clair Light Grey Carpet=Tapis gris clair
Black Wool=Laine Noire Black Wool=Laine noire
Black Carpet=Tapis Noir Black Carpet=Tapis noir
Red Wool=Laine Rouge Red Wool=Laine rouge
Red Carpet=Tapis Rouge Red Carpet=Tapis rouge
Yellow Wool=Laine Jaune Yellow Wool=Laine jaune
Yellow Carpet=Tapis Jaune Yellow Carpet=Tapis jaune
Green Wool=Laine Verte Green Wool=Laine verte
Green Carpet=Tapis Vert Green Carpet=Tapis vert
Cyan Wool=Lain Cyan Cyan Wool=Lain cyan
Cyan Carpet=Tapis Cyan Cyan Carpet=Tapis cyan
Blue Wool=Laine Bleue Blue Wool=Laine bleue
Blue Carpet=Tapis Bleu Blue Carpet=Tapis bleu
Magenta Wool=Laine Magenta Magenta Wool=Laine magenta
Magenta Carpet=Tapis Magenta Magenta Carpet=Tapis magenta
Orange Wool=Laine Orange Orange Wool=Laine orange
Orange Carpet=Tapis Orange Orange Carpet=Tapis orange
Purple Wool=Laine Violette Purple Wool=Laine violette
Purple Carpet=Tapis Violet Purple Carpet=Tapis violet
Brown Wool=Laine Marron Brown Wool=Laine marron
Brown Carpet=Tapis Marron Brown Carpet=Tapis marron
Pink Wool=Laine Rose Pink Wool=Laine rose
Pink Carpet=Tapis Rose Pink Carpet=Tapis rose
Lime Wool=Laine Vert Clair Lime Wool=Laine vert clair
Lime Carpet=Tapis Vert Clair Lime Carpet=Tapis vert clair
Light Blue Wool=Laine Bleu Clair Light Blue Wool=Laine bleu clair
Light Blue Carpet=Tapis Bleu Clair Light Blue Carpet=Tapis bleu clair
Wool is a decorative block which comes in many different colors.=La laine est un bloc décoratif disponible en différentes couleurs. Wool is a decorative block which comes in many different colors.=La laine est un bloc décoratif disponible en différentes couleurs.
Carpets are thin floor covers which come in many different colors.=Les tapis sont des revêtements de sol minces qui viennent dans de nombreuses couleurs différentes. Carpets are thin floor covers which come in many different colors.=Les tapis sont des revêtements de sol minces qui viennent dans de nombreuses couleurs différentes.

View File

@ -0,0 +1,844 @@
local modname = minetest.get_current_modname()
local modpath = minetest.get_modpath(modname)
local S = minetest.get_translator(modname)
local hammer_tt = S("Can crush blocks") .. "\n" .. S("Increased knockback")
local hammer_longdesc = S("Hammers are great in melee combat, as they deal high damage with increased knockback and can endure countless battles. Hammers can also be used to crush things.")
local hammer_use = S("To crush a block, hold the hammer in your hand, then use (rightclick) the block. This only works with some blocks.")
local spear_tt = S("Reaches farther") .. "\n" .. S("Can be thrown")
local spear_longdesc = S("Spears are great in melee combat, as they have an increased reach. They can also be thrown.")
local spear_use = S("To throw a spear, hold it in your hand, then hold use (rightclick) in the air.")
local wield_scale = mcl_vars.tool_wield_scale
local function crush(pos)
if pos == nil then
return false
end
local node = minetest.get_node(pos)
local name = node.name
if minetest.get_item_group(name, "crushable") == 2 then
node.name = minetest.registered_nodes[name]._mcl_crushed_into
if node.name then
minetest.set_node(pos, node)
minetest.sound_play("default_dig_cracky", { pos = pos, gain = 0.5 }, true)
return true
end
elseif minetest.get_item_group(name, "crushable") == 1 then
minetest.set_node(pos, {name="air"})
minetest.sound_play(mcl_sounds.node_sound_glass_defaults().dug, { pos = pos, gain = 0.5 }, true)
return true
end
return false
end
local hammer_on_place = function(wear_divisor)
return function(itemstack, user, pointed_thing)
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if user and not user:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack
end
end
if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
minetest.record_protection_violation(pointed_thing.under, user:get_player_name())
return itemstack
end
if crush(pointed_thing.under) then
if not minetest.is_creative_enabled(user:get_player_name()) then
itemstack:add_wear(65535/wear_divisor)
end
return itemstack
end
end
end
local GRAVITY = 9.81
local YAW_OFFSET = -math.pi/2
local function dir_to_pitch(dir)
--local dir2 = vector.normalize(dir)
local xz = math.abs(dir.x) + math.abs(dir.z)
return -math.atan2(-dir.y, xz)
end
-- Time after which stuck spear is rechecked for being stuck
local STUCK_RECHECK_TIME = 5
-- Time in seconds after which a stuck spear is deleted
local SPEAR_TIMEOUT = 180
local SPEAR_ENTITY={
physical = true,
pointable = false,
visual = "item",
visual_size = {x=-0.5, y=-0.5},
textures = {"vl_weaponry:spear_wood"},
collisionbox = {-0.19, -0.125, -0.19, 0.19, 0.125, 0.19},
collide_with_objects = false,
_fire_damage_resistant = true,
_lastpos={},
_startpos=nil,
_damage=1, -- Damage on impact
_is_critical=false, -- Whether this spear would deal critical damage
_stuck=false, -- Whether spear is stuck
_stucktimer=nil,-- Amount of time (in seconds) the spear has been stuck so far
_stuckrechecktimer=nil,-- An additional timer for periodically re-checking the stuck status of an spear
_stuckin=nil, --Position of node in which spear is stuck.
_shooter=nil, -- ObjectRef of player or mob who threw it
_is_arrow = true,
_in_player = false,
_blocked = false,
_viscosity = 0, -- Viscosity of node the spear is currently in
_deflection_cooloff = 0, -- Cooloff timer after an spear deflection, to prevent many deflections in quick succession
_itemstack = nil, -- ItemStack of the original object
}
-- Destroy spear entity self at pos and drops it as an item
local function spawn_item(self, pos)
if not minetest.is_creative_enabled("") then
local item = minetest.add_item(pos, self._itemstack)
item:set_velocity(vector.new(0, 0, 0))
item:set_yaw(self.object:get_yaw())
end
mcl_burning.extinguish(self.object)
self.object:remove()
end
local function damage_particles(pos, is_critical)
if is_critical then
minetest.add_particlespawner({
amount = 15,
time = 0.1,
minpos = vector.offset(pos, -0.5, -0.5, -0.5),
maxpos = vector.offset(pos, 0.5, 0.5, 0.5),
minvel = vector.new(-0.1, -0.1, -0.1),
maxvel = vector.new(0.1, 0.1, 0.1),
minexptime = 1,
maxexptime = 2,
minsize = 1.5,
maxsize = 1.5,
collisiondetection = false,
vertical = false,
texture = "mcl_particles_crit.png^[colorize:#bc7a57:127",
})
end
end
function SPEAR_ENTITY.on_step(self, dtime)
mcl_burning.tick(self.object, dtime, self)
-- mcl_burning.tick may remove object immediately
if not self.object:get_pos() then return end
self._time_in_air = self._time_in_air + .001
local pos = self.object:get_pos()
local dpos = vector.round(vector.new(pos)) -- digital pos
local node = minetest.get_node(dpos)
if self._stuck then
self._stucktimer = self._stucktimer + dtime
self._stuckrechecktimer = self._stuckrechecktimer + dtime
if self._stucktimer > SPEAR_TIMEOUT then
spawn_item(self, pos)
return
end
-- Drop spear as item when it is no longer stuck
if self._stuckrechecktimer > STUCK_RECHECK_TIME then
local stuckin_def
if self._stuckin then
stuckin_def = minetest.registered_nodes[minetest.get_node(self._stuckin).name]
end
-- TODO: fall down without turning into an item?
if stuckin_def and stuckin_def.walkable == false then
spawn_item(self, pos)
return
end
self._stuckrechecktimer = 0
end
-- Pickup spear if player is nearby (not in Creative Mode)
local objects = minetest.get_objects_inside_radius(pos, 1)
for _,obj in ipairs(objects) do
if obj:is_player() then
if self._collectable and not minetest.is_creative_enabled(obj:get_player_name()) then
if obj:get_inventory():room_for_item("main", self._itemstack) then
obj:get_inventory():add_item("main", self._itemstack)
minetest.sound_play("item_drop_pickup", {
pos = pos,
max_hear_distance = 16,
gain = 1.0,
}, true)
mcl_burning.extinguish(self.object)
self.object:remove()
end
else
spawn_item(self, pos)
end
return
end
end
-- Check for object "collision". Done every tick (hopefully this is not too stressing)
else
if self._damage >= 9 and self._in_player == false then
minetest.add_particlespawner({
amount = 20,
time = .2,
minpos = vector.new(0,0,0),
maxpos = vector.new(0,0,0),
minvel = vector.new(-0.1,-0.1,-0.1),
maxvel = vector.new(0.1,0.1,0.1),
minexptime = 0.5,
maxexptime = 0.5,
minsize = 2,
maxsize = 2,
attached = self.object,
collisiondetection = false,
vertical = false,
texture = "mobs_mc_arrow_particle.png",
glow = 1,
})
end
local closest_object
local closest_distance
if self._deflection_cooloff > 0 then
self._deflection_cooloff = self._deflection_cooloff - dtime
end
local spear_dir = self.object:get_velocity()
--create a raycast from the spear based on the velocity of the spear to deal with lag
local raycast = minetest.raycast(pos, vector.add(pos, vector.multiply(spear_dir, 0.1)), true, false)
for hitpoint in raycast do
if hitpoint.type == "object" then
-- find the closest object that is in the way of the spear
local ok = false
if hitpoint.ref:is_player() and enable_pvp then
ok = true
elseif not hitpoint.ref:is_player() and hitpoint.ref:get_luaentity() then
if (hitpoint.ref:get_luaentity().is_mob or hitpoint.ref:get_luaentity()._hittable_by_projectile) then
ok = true
end
end
if ok then
local dist = vector.distance(hitpoint.ref:get_pos(), pos)
if not closest_object or not closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
elseif dist < closest_distance then
closest_object = hitpoint.ref
closest_distance = dist
end
end
end
end
if closest_object then
local obj = closest_object
local is_player = obj:is_player()
local lua = obj:get_luaentity()
if obj == self._shooter and self._time_in_air > 1.02 or obj ~= self._shooter and (is_player or (lua and (lua.is_mob or lua._hittable_by_projectile))) then
if obj:get_hp() > 0 then
-- Check if there is no solid node between spear and object
local ray = minetest.raycast(self.object:get_pos(), obj:get_pos(), true)
for pointed_thing in ray do
if pointed_thing.type == "object" and pointed_thing.ref == closest_object then
-- Target reached! We can proceed now.
break
elseif pointed_thing.type == "node" then
local nn = minetest.get_node(minetest.get_pointed_thing_position(pointed_thing)).name
local def = minetest.registered_nodes[nn]
if (not def) or def.walkable then
-- There's a node in the way. Delete spear without damage
spawn_item(self, pos)
return
end
end
end
-- Punch target object but avoid hurting enderman.
if not lua or lua.name ~= "mobs_mc:enderman" then
if not self._in_player then
damage_particles(vector.add(pos, vector.multiply(self.object:get_velocity(), 0.1)), self._is_critical)
end
if mcl_burning.is_burning(self.object) then
mcl_burning.set_on_fire(obj, 5)
end
if not self._in_player and not self._blocked then
obj:punch(self.object, 1.0, {
full_punch_interval=1.0,
damage_groups={fleshy=self._damage},
}, self.object:get_velocity())
if obj:is_player() then
if not mcl_shields.is_blocking(obj) then
spawn_item(self, pos)
else
self._blocked = true
self.object:set_velocity(vector.multiply(self.object:get_velocity(), -0.25))
end
minetest.after(150, function()
spawn_item(self, pos)
end)
else
spawn_item(self, pos)
end
end
end
if is_player then
if self._shooter and self._shooter:is_player() and not self._in_player and not self._blocked then
-- “Ding” sound for hitting another player
minetest.sound_play({name="mcl_bows_hit_player", gain=0.1}, {to_player=self._shooter:get_player_name()}, true)
end
end
if not self._in_player and not self._blocked then
minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true)
end
end
if not obj:is_player() then
mcl_burning.extinguish(self.object)
if self._piercing == 0 then
spawn_item(self, pos)
end
end
return
end
end
end
-- Check for node collision
if self._lastpos.x~=nil and not self._stuck then
local def = minetest.registered_nodes[node.name]
local vel = self.object:get_velocity()
-- Spear has stopped in one axis, so it probably hit something.
-- This detection is a bit clunky, but sadly, MT does not offer a direct collision detection for us. :-(
if (math.abs(vel.x) < 0.0001) or (math.abs(vel.z) < 0.0001) or (math.abs(vel.y) < 0.00001) then
-- Check for the node to which the spear is pointing
local dir
if math.abs(vel.y) < 0.00001 then
if self._lastpos.y < pos.y then
dir = vector.new(0, 1, 0)
else
dir = vector.new(0, -1, 0)
end
else
dir = minetest.facedir_to_dir(minetest.dir_to_facedir(minetest.yaw_to_dir(self.object:get_yaw()-YAW_OFFSET)))
end
self._stuckin = vector.add(dpos, dir)
local snode = minetest.get_node(self._stuckin)
local sdef = minetest.registered_nodes[snode.name]
-- If node is non-walkable, unknown or ignore, don't make spear stuck.
-- This causes a deflection in the engine.
if not sdef or sdef.walkable == false or snode.name == "ignore" then
self._stuckin = nil
if self._deflection_cooloff <= 0 then
-- Lose 1/3 of velocity on deflection
local newvel = vector.multiply(vel, 0.6667)
self.object:set_velocity(newvel)
-- Reset deflection cooloff timer to prevent many deflections happening in quick succession
self._deflection_cooloff = 1.0
end
else
-- Node was walkable, make spear stuck
self._stuck = true
self._stucktimer = 0
self._stuckrechecktimer = 0
self.object:set_velocity(vector.new(0, 0, 0))
self.object:set_acceleration(vector.new(0, 0, 0))
minetest.sound_play({name="mcl_bows_hit_other", gain=0.3}, {pos=self.object:get_pos(), max_hear_distance=16}, true)
if mcl_burning.is_burning(self.object) and snode.name == "mcl_tnt:tnt" then
tnt.ignite(self._stuckin)
end
-- Ignite Campfires
if mod_campfire and mcl_burning.is_burning(self.object) and minetest.get_item_group(snode.name, "campfire") ~= 0 then
mcl_campfires.light_campfire(self._stuckin)
end
-- Activate target
if mod_target and snode.name == "mcl_target:target_off" then
mcl_target.hit(self._stuckin, 1) --10 redstone ticks
end
-- Push the button! Push, push, push the button!
if mod_button and minetest.get_item_group(node.name, "button") > 0 and minetest.get_item_group(node.name, "button_push_by_arrow") == 1 then
local bdir = minetest.wallmounted_to_dir(node.param2)
-- Check the button orientation
if vector.equals(vector.add(dpos, bdir), self._stuckin) then
mesecon.push_button(dpos, node)
end
end
end
elseif (def and def.liquidtype ~= "none") then
-- Slow down spear in liquids
local v = def.liquid_viscosity
if not v then
v = 0
end
--local old_v = self._viscosity
self._viscosity = v
local vpenalty = math.max(0.1, 0.98 - 0.1 * v)
if math.abs(vel.x) > 0.001 then
vel.x = vel.x * vpenalty
end
if math.abs(vel.z) > 0.001 then
vel.z = vel.z * vpenalty
end
self.object:set_velocity(vel)
end
end
-- Update yaw
if not self._stuck then
local vel = self.object:get_velocity()
local yaw = minetest.dir_to_yaw(vel)+YAW_OFFSET
local pitch = dir_to_pitch(vel)
self.object:set_rotation({ x = 0, y = yaw, z = pitch })
end
-- Update internal variable
self._lastpos = pos
end
-- Force recheck of stuck spears when punched.
-- Otherwise, punching has no effect.
function SPEAR_ENTITY.on_punch(self)
if self._stuck then
self._stuckrechecktimer = STUCK_RECHECK_TIME
end
end
function SPEAR_ENTITY.get_staticdata(self)
local out = {
lastpos = self._lastpos,
startpos = self._startpos,
damage = self._damage,
is_critical = self._is_critical,
stuck = self._stuck,
stuckin = self._stuckin,
stuckin_player = self._in_player,
}
if self._stuck then
-- If _stucktimer is missing for some reason, assume the maximum
if not self._stucktimer then
self._stucktimer = SPEAR_TIMEOUT
end
out.stuckstarttime = minetest.get_gametime() - self._stucktimer
end
if self._shooter and self._shooter:is_player() then
out.shootername = self._shooter:get_player_name()
end
return minetest.serialize(out)
end
function SPEAR_ENTITY.on_activate(self, staticdata, dtime_s)
self._time_in_air = 1.0
local data = minetest.deserialize(staticdata)
if data then
self._stuck = data.stuck
if data.stuck then
if data.stuckstarttime then
-- First, check if the stuck spear is aleady past its life timer.
-- If yes, delete it.
self._stucktimer = minetest.get_gametime() - data.stuckstarttime
if self._stucktimer > SPEAR_TIMEOUT then
spawn_item(self, pos)
return
end
end
-- Perform a stuck recheck on the next step.
self._stuckrechecktimer = STUCK_RECHECK_TIME
self._stuckin = data.stuckin
end
-- Get the remaining spear state
self._lastpos = data.lastpos
self._startpos = data.startpos
self._damage = data.damage
self._is_critical = data.is_critical
if data.shootername then
local shooter = minetest.get_player_by_name(data.shootername)
if shooter and shooter:is_player() then
self._shooter = shooter
end
end
if data.stuckin_player then
spawn_item(self, pos)
end
end
self.object:set_armor_groups({ immortal = 1 })
end
minetest.register_entity("vl_weaponry:spear_entity", SPEAR_ENTITY)
local spear_throw_power = 25
local spear_on_place = function(wear_divisor)
return function(itemstack, user, pointed_thing)
if pointed_thing.type == "node" then
-- Call on_rightclick if the pointed node defines it
local node = minetest.get_node(pointed_thing.under)
if user and not user:get_player_control().sneak then
if minetest.registered_nodes[node.name] and minetest.registered_nodes[node.name].on_rightclick then
return minetest.registered_nodes[node.name].on_rightclick(pointed_thing.under, node, user, itemstack) or itemstack
end
end
end
if minetest.is_protected(pointed_thing.under, user:get_player_name()) then
minetest.record_protection_violation(pointed_thing.under, user:get_player_name())
return itemstack
end
local pos = user:get_pos()
pos.y = pos.y + 1.5
local dir = user:get_look_dir()
local yaw = user:get_look_horizontal()
local obj = minetest.add_entity({x=pos.x,y=pos.y,z=pos.z}, "vl_weaponry:spear_entity")
obj:set_velocity({x=dir.x*spear_throw_power, y=dir.y*spear_throw_power, z=dir.z*spear_throw_power})
obj:set_acceleration({x=0, y=-GRAVITY, z=0})
obj:set_yaw(yaw-math.pi/2)
obj:set_properties({textures = {itemstack:get_name()}})
local le = obj:get_luaentity()
le._shooter = user
le._source_object = user
le._damage = itemstack:get_definition()._mcl_spear_thrown_damage
le._is_critical = false
le._startpos = pos
le._collectable = true
le._itemstack = itemstack
minetest.sound_play("mcl_bows_bow_shoot", {pos=pos, max_hear_distance=16}, true)
if user and user:is_player() then
if obj:get_luaentity().player == "" then
obj:get_luaentity().player = user
end
-- obj:get_luaentity().node = shooter:get_inventory():get_stack("main", 1):get_name()
end
return ItemStack()
end
end
local uses = {
wood = 60,
stone = 132,
iron = 251,
gold = 33,
diamond = 1562,
netherite = 2031,
}
local SPEAR_RANGE = 4.5
--Hammers
minetest.register_tool("vl_weaponry:hammer_wood", {
description = S("Wooden Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
_doc_items_hidden = false,
inventory_image = "vl_tool_woodhammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.wood),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=15 },
tool_capabilities = {
full_punch_interval = 1.2,
max_drop_level=1,
damage_groups = {fleshy=4},
punch_attack_uses = 60,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 60 }
},
})
minetest.register_tool("vl_weaponry:hammer_stone", {
description = S("Stone Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
inventory_image = "vl_tool_stonehammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.stone),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=5 },
tool_capabilities = {
full_punch_interval = 1.3,
max_drop_level=3,
damage_groups = {fleshy=5},
punch_attack_uses = 132,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 132 }
},
})
minetest.register_tool("vl_weaponry:hammer_iron", {
description = S("Iron Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
inventory_image = "vl_tool_steelhammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.iron),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=14 },
tool_capabilities = {
full_punch_interval = 1.2,
max_drop_level=4,
damage_groups = {fleshy=6},
punch_attack_uses = 251,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 251 }
},
})
minetest.register_tool("vl_weaponry:hammer_gold", {
description = S("Golden Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
inventory_image = "vl_tool_goldhammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.gold),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=22 },
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=2,
damage_groups = {fleshy=5},
punch_attack_uses = 33,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 33 }
},
})
minetest.register_tool("vl_weaponry:hammer_diamond", {
description = S("Diamond Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
inventory_image = "vl_tool_diamondhammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.diamond),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=10 },
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=5,
damage_groups = {fleshy=7},
punch_attack_uses = 1562,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 1562 }
},
_mcl_upgradable = true,
_mcl_upgrade_item = "vl_weaponry:hammer_netherite"
})
minetest.register_tool("vl_weaponry:hammer_netherite", {
description = S("Netherite Hammer"),
_tt_help = hammer_tt,
_doc_items_longdesc = hammer_longdesc,
_doc_items_usagehelp = hammer_use,
inventory_image = "vl_tool_netheritehammer.png",
wield_scale = wield_scale,
on_place = hammer_on_place(uses.netherite),
groups = { weapon=1, hammer=1, dig_speed_class=2, enchantability=10, fire_immune=1 },
tool_capabilities = {
full_punch_interval = 1.0,
max_drop_level=5,
damage_groups = {fleshy=9},
punch_attack_uses = 2031,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_nether:netherite_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
pickaxey = { speed = 2, level = 1, uses = 2031 }
},
})
--Spears
minetest.register_tool("vl_weaponry:spear_wood", {
description = S("Wooden Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
_doc_items_hidden = false,
inventory_image = "vl_tool_woodspear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.wood),
on_secondary_use = spear_on_place(uses.wood),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=15 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=1,
damage_groups = {fleshy=3},
punch_attack_uses = 60,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 60 },
swordy_cobweb = { speed = 2, level = 1, uses = 60 }
},
_mcl_spear_thrown_damage = 5,
})
minetest.register_tool("vl_weaponry:spear_stone", {
description = S("Stone Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
inventory_image = "vl_tool_stonespear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.stone),
on_secondary_use = spear_on_place(uses.stone),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=5 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=3,
damage_groups = {fleshy=4},
punch_attack_uses = 132,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:cobble",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 132 },
swordy_cobweb = { speed = 2, level = 1, uses = 132 }
},
_mcl_spear_thrown_damage = 6,
})
minetest.register_tool("vl_weaponry:spear_iron", {
description = S("Iron Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
inventory_image = "vl_tool_steelspear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.iron),
on_secondary_use = spear_on_place(uses.iron),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=14 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=4,
damage_groups = {fleshy=5},
punch_attack_uses = 251,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 251 },
swordy_cobweb = { speed = 2, level = 1, uses = 251 }
},
_mcl_spear_thrown_damage = 7,
})
minetest.register_tool("vl_weaponry:spear_gold", {
description = S("Golden Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
inventory_image = "vl_tool_goldspear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.gold),
on_secondary_use = spear_on_place(uses.gold),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=22 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=2,
damage_groups = {fleshy=3},
punch_attack_uses = 33,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 33 },
swordy_cobweb = { speed = 2, level = 1, uses = 33 }
},
_mcl_spear_thrown_damage = 5,
})
minetest.register_tool("vl_weaponry:spear_diamond", {
description = S("Diamond Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
inventory_image = "vl_tool_diamondspear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.diamond),
on_secondary_use = spear_on_place(uses.diamond),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=10 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=5,
damage_groups = {fleshy=6},
punch_attack_uses = 1562,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 1562 },
swordy_cobweb = { speed = 2, level = 1, uses = 1562 }
},
_mcl_spear_thrown_damage = 8,
_mcl_upgradable = true,
_mcl_upgrade_item = "vl_weaponry:spear_netherite"
})
minetest.register_tool("vl_weaponry:spear_netherite", {
description = S("Netherite Spear"),
_tt_help = spear_tt,
_doc_items_longdesc = spear_longdesc,
_doc_items_usagehelp = spear_use,
inventory_image = "vl_tool_netheritespear.png",
wield_scale = wield_scale,
on_place = spear_on_place(uses.netherite),
on_secondary_use = spear_on_place(uses.netherite),
groups = { weapon=1, spear=1, dig_speed_class=2, enchantability=10, fire_immune=1 },
range = SPEAR_RANGE,
tool_capabilities = {
full_punch_interval = 0.75,
max_drop_level=5,
damage_groups = {fleshy=8},
punch_attack_uses = 2031,
},
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_nether:netherite_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
swordy = { speed = 2, level = 1, uses = 2031 },
swordy_cobweb = { speed = 2, level = 1, uses = 2031 }
},
_mcl_spear_thrown_damage = 12,
})

View File

@ -0,0 +1,3 @@
name = vl_weaponry
author = Herowl
depends = mcl_sounds, mcl_init, mcl_bows

View File

@ -732,9 +732,10 @@ end, -200)
minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage) minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, tool_capabilities, dir, damage)
-- attack reach limit -- attack reach limit
if hitter and hitter:is_player() then if hitter and hitter:is_player() then
local weapon = hitter:get_wielded_item()
local player_pos = player:get_pos() local player_pos = player:get_pos()
local hitter_pos = hitter:get_pos() local hitter_pos = hitter:get_pos()
if vector.distance(player_pos, hitter_pos) > 3 then if vector.distance(player_pos, hitter_pos) > (weapon:get_definition().range or 3) then
damage = 0 damage = 0
return damage return damage
end end

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 183 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 157 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 255 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 210 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 228 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 156 B