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)
local uses = mcl_util.calculate_durability(itemstack)
itemstack:add_wear(65535 / uses * n)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
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
tt.reload_itemstack_description(wielded) -- update tooltip
digger:set_wielded_item(wielded)
end

View File

@ -524,10 +524,11 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
local is_player = hitter:is_player()
local mob_pos = self.object:get_pos()
local player_pos = hitter:get_pos()
local weapon = hitter:get_wielded_item()
if is_player then
-- 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
end
-- is mob protected?
@ -572,7 +573,6 @@ function mob_class:on_punch(hitter, tflp, tool_capabilities, dir)
-- punch interval
local weapon = hitter:get_wielded_item()
local punch_interval = 1.4
-- 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
local wear = math.floor(65535/tool_capabilities.punch_attack_uses)
weapon:add_wear(wear)
tt.reload_itemstack_description(weapon) -- update tooltip
hitter:set_wielded_item(weapon)
end
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
local wielditem = hitter:get_wielded_item()
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
local hv = hitter:get_velocity()
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
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)
end
-- 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
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)
end
return

View File

@ -131,6 +131,7 @@ mcl_mobs.register_mob("mobs_mc:snowman", {
-- Wear out
if not minetest.is_creative_enabled(clicker:get_player_name()) then
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)
end
end

View File

@ -255,7 +255,7 @@ local function factoid_toolcaps(tool_capabilities, check_uses)
formstring = formstring .. miningtimesstr
end
if useslines > 0 then
formstring = formstring .. S("Mining durability:") .. "\n"
formstring = formstring .. S("Durability:") .. "\n"
formstring = formstring .. miningusesstr
end
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“
Durability: @1 uses=Haltbarkeit: @1 Benutzungen
Durability: @1=Haltbarkeit: @1
Mining durability:=Grabehaltbarkeit:
Durability:=Haltbarkeit:
• @1, level @2: @3 uses=• @1, Stufe @2: @3 Benutzungen
• @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.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=ukendt genstand (@1)
Itemstring: "@1"=Genstandsstreng: "@1"
Durability: @1 uses=Holdbarhed: @1 anvendelser
Durability: @1=Holdbarhed: @1
Mining durability:=Udvindingsholdbarhed:
Durability:=Holdbarhed:
• @1, level @2: @3 uses=• @1, level @2: @3 anvendelser
• @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.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Objet inconnu (@1)
Itemstring: "@1"=Identifiant d'objet : "@1"
Durability: @1 uses=Durabilité : @1 utilisations
Durability: @1=Durabilité : @1
Mining durability:=Durabilité de minage :
Durability:=Durabilité :
• @1, level @2: @3 uses=• @1, niveau @2 : @3 utilisations
• @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.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=不明なアイテム (@1)
Itemstring: "@1"=アイテム文字列:"@1"
Durability: @1 uses=耐久度:@1回 使用
Durability: @1=耐久度:@1
Mining durability:=採掘耐久度:
Durability:=耐久度:
• @1, level @2: @3 uses=・@1, レベル @2@3回 使用
• @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.=このブロックの回転は、置き方に影響されます:床や天井に置くと垂直方向、横に置くと水平方向になります。スニークしながら置くと、代わって直角の方向に向きます。

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Nieznany przedmiot (@1)
Itemstring: "@1"=Id przedmiotu: "@1"
Durability: @1 uses=Wytrzymałość: @1 użyć
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: 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.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Item desconhecido (@1)
Itemstring: "@1"=
Durability: @1 uses=
Durability: @1=
Mining durability:=
Durability:=
• @1, level @2: @3 uses=
• @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.=

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Item desconhecido (@1)
Itemstring: "@1"=
Durability: @1 uses=Durabilidade: @1 usos
Durability: @1=Durabilidade: @1
Mining durability:=
Durability:=Durabilidade:
• @1, level @2: @3 uses=
• @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.=

View File

@ -135,7 +135,7 @@ Unknown item (@1)=Неизвестный предмет (@1)
Itemstring: "@1"=Техническое название: "@1"
Durability: @1 uses=Прочность: @1 использований
Durability: @1=Прочность: @1
Mining durability:=Прочность при добыче:
Durability:=Прочность:
• @1, level @2: @3 uses=• @1, уровень @2: @3 раз(а)
• @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.=Поворот этого блока зависит от того как вы его ставите: поставьте его на пол или потолок для вертикальной ориентации; поместите на стену для горизонтальной ориентации. Удерживайте [Красться] при размещении для перпендикулярной ориентации.

View File

@ -135,7 +135,7 @@ Unknown item (@1)=
Itemstring: "@1"=
Durability: @1 uses=
Durability: @1=
Mining durability:=
Durability:=
• @1, level @2: @3 uses=
• @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.=

View File

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

View File

@ -70,7 +70,7 @@ Instantaneous=Unmittelbar
@1 uses=@1 Verwendungen
Unlimited uses=Unbegrenzte Verwendungen
Block breaking strength: @1=Blockbruchstärke: @1
Mining durability: @1=Grabehaltbarkeit: @1
Durability: @1=Haltbarkeit: @1
Armor points: @1=Rüstungspunkte: @1
Armor durability: @1=Rüstungshaltbarkeit: @1
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
Unlimited uses=Uendelige anvendelser
Block breaking strength: @1=Blokkens brudstyrke: @1
Mining durability: @1=Udvindingsholdbarhed: @1
Durability: @1=Holdbarhed: @1
Armor points: @1=Rustningspoint: @1
Armor durability: @1=Rustningens holdbarhed: @1
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 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.
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 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.
@ -71,7 +71,7 @@ Instantaneous=Instantané
@1 uses=@1 utilisations
Unlimited uses=Utilisations illimitées
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 durability: @1=Durabilité de l'armure : @1
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 使用
Unlimited uses=無限に使用可能
Block breaking strength: @1=ブロック破壊力:@1
Mining durability: @1=採掘耐久度@1
Durability: @1=耐久性@1
Armor points: @1=防具値:@1
Armor durability: @1=防具耐久度:@1
It can be worn on the head.=頭に装着することもできます。

View File

@ -70,7 +70,7 @@ Instantaneous=Natychmiastowe
@1 uses=@1 użyć
Unlimited uses=Nielimitowane użycia
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 durability: @1=Wytrzymałość zbroi: @1
It can be worn on the head.=Może być noszony na głowie.

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -41,7 +41,7 @@ Fast=Szybkie
Slow=Wolne
Very slow=Bardzo 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
@1 uses=@1 użyć
Unlimited uses=Nielimitowane użycia

View File

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

View File

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

View File

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

View File

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

View File

@ -25,6 +25,7 @@ tt.register_snippet(function(itemstring)
end
return s
end)
tt.register_snippet(function(itemstring, _, itemstack)
--local def = minetest.registered_items[itemstring]
local s = ""
@ -34,13 +35,18 @@ tt.register_snippet(function(itemstring, _, itemstack)
s = s .. S("Armor points: @1", pts)
s = s .. "\n"
end
local remaining_uses = use
if itemstack then
local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking")
if unbreaking > 0 then
use = math.floor(use / (0.6 + 0.4 / (unbreaking + 1)))
end
remaining_uses = math.round(use - (itemstack:get_wear() * use) / 65535)
end
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)
end
if s == "" then
@ -109,6 +115,9 @@ end)
tt.register_snippet(function(itemstring, _, itemstack)
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)

View File

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

View File

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

View File

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

View File

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

View File

@ -1,3 +1,5 @@
mcl_bows = {}
--Bow
dofile(minetest.get_modpath("mcl_bows") .. "/arrow.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")
if wear then
itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
end
node.name = name

View File

@ -1,94 +1,94 @@
# textdomain: mcl_colorblocks
White Terracotta=Terre cuite blanche
White Glazed Terracotta=Terre cuite emaillée blanche
White Glazed Terracotta Pillar=Pilier de terre cuite emaillée blanche
White Glazed Terracotta=Terre cuite émaillée blanche
White Glazed Terracotta Pillar=Pilier de terre cuite émaillée blanche
White Concrete Powder=Béton en poudre blanc
White Concrete=Béton blanc
Grey Terracotta=Terre cuite grise
Grey Glazed Terracotta=Terre cuite emaillée grise
Grey Glazed Terracotta Pillar=Pilier de terre cuite emaillée grise
Grey Concrete Powder=Béton en goudre gris
Grey Glazed Terracotta=Terre cuite émaillée grise
Grey Glazed Terracotta Pillar=Pilier de terre cuite émaillée grise
Grey Concrete Powder=Béton en poudre gris
Grey Concrete=Béton gris
Light Grey Terracotta=Terre cuite gris clair
Light Grey Glazed Terracotta=Terre cuite emaillée gris clair
Light Grey Glazed Terracotta Pillar=Pilier de 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 émaillée gris clair
Light Grey Concrete Powder=Béton en poudre gris clair
Light Grey Concrete=Béton gris clair
Black Terracotta=Terre cuite noir
Black Glazed Terracotta=Terre cuite emaillée noir
Black Glazed Terracotta Pillar=Pilier de terre cuite emaillée noir
Black Terracotta=Terre cuite noire
Black Glazed Terracotta=Terre cuite émaillée noire
Black Glazed Terracotta Pillar=Pilier de terre cuite émaillée noire
Black Concrete Powder=Béton en poudre noir
Black Concrete=Béton noir
Red Terracotta=Terre cuite rouge
Red Glazed Terracotta=Terre cuite emaillée rouge
Red Glazed Terracotta Pillar=Pilier de terre cuite emaillée rouge
Red Glazed Terracotta=Terre cuite émaillée rouge
Red Glazed Terracotta Pillar=Pilier de terre cuite émaillée rouge
Red Concrete Powder=Béton en poudre rouge
Red Concrete=Béton rouge
Yellow Terracotta=Terre cuite jaune
Yellow Glazed Terracotta=Terre cuite emaillée jaune
Yellow Glazed Terracotta Pillar=Pilier de terre cuite emaillée jaune
Yellow Glazed Terracotta=Terre cuite émaillée jaune
Yellow Glazed Terracotta Pillar=Pilier de terre cuite émaillée jaune
Yellow Concrete Powder=Béton en poudre jaune
Yellow Concrete=Béton jaune
Green Terracotta=Terre cuite verte
Green Glazed Terracotta=Terre cuite emaillée verte
Green Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte
Green Glazed Terracotta=Terre cuite émaillée verte
Green Glazed Terracotta Pillar=Pilier de terre cuite émaillée verte
Green Concrete Powder=Béton en poudre vert
Green Concrete=Béton vert
Cyan Terracotta=Terre cuite cyan
Cyan Glazed Terracotta=Terre cuite emaillée cyan
Cyan Glazed Terracotta Pillar=Pilier de terre cuite emaillée cyan
Cyan Glazed Terracotta=Terre cuite émaillée cyan
Cyan Glazed Terracotta Pillar=Pilier de terre cuite émaillée cyan
Cyan Concrete Powder=Béton en poudre cyan
Cyan Concrete=Béton cyan
Blue Terracotta=Terre cuite bleue
Blue Glazed Terracotta=Terre cuite emaillée bleue
Blue Glazed Terracotta Pillar=Pilier de terre cuite emaillée bleue
Blue Glazed Terracotta=Terre cuite émaillée bleue
Blue Glazed Terracotta Pillar=Pilier de terre cuite émaillée bleue
Blue Concrete Powder=Béton en poudre bleu
Blue Concrete=Béton bleu
Magenta Terracotta=Terre cuite magenta
Magenta Glazed Terracotta=Terre cuite emaillée magenta
Magenta Glazed Terracotta Pillar=Pilier de terre cuite emaillée magenta
Magenta Glazed Terracotta=Terre cuite émaillée magenta
Magenta Glazed Terracotta Pillar=Pilier de terre cuite émaillée magenta
Magenta Concrete Powder=Béton en poudre magenta
Magenta Concrete=Béton magenta
Orange Terracotta=Terre cuite orange
Orange Glazed Terracotta=Terre cuite emaillée orange
Orange Glazed Terracotta Pillar=Pilier de terre cuite emaillée orange
Orange Glazed Terracotta=Terre cuite émaillée orange
Orange Glazed Terracotta Pillar=Pilier de terre cuite émaillée orange
Orange Concrete Powder=Béton en poudre orange
Orange Concrete=Béton orange
Purple Terracotta=Terre cuite violette
Purple Glazed Terracotta=Terre cuite emaillée violette
Purple Glazed Terracotta Pillar=Pilier de terre cuite emaillée violette
Purple Glazed Terracotta=Terre cuite émaillée violette
Purple Glazed Terracotta Pillar=Pilier de terre cuite émaillée violette
Purple Concrete Powder=Béton en poudre violet
Purple Concrete=Béton violet
Brown Terracotta=Terre cuite marron
Brown Glazed Terracotta=Terre cuite emaillée marron
Brown Glazed Terracotta Pillar=Pilier de terre cuite emaillée marron
Brown Glazed Terracotta=Terre cuite émaillée marron
Brown Glazed Terracotta Pillar=Pilier de terre cuite émaillée marron
Brown Concrete Powder=Béton en poudre marron
Brown Concrete=Béton marron
Pink Terracotta=Terre cuite rose
Pink Glazed Terracotta=Terre cuite emaillée rose
Pink Glazed Terracotta Pillar=Pilier de terre cuite emaillée rose
Pink Glazed Terracotta=Terre cuite émaillée rose
Pink Glazed Terracotta Pillar=Pilier de terre cuite émaillée rose
Pink Concrete Powder=Béton en poudre rose
Pink Concrete=Béton rose
Lime Terracotta=Terre cuite verte clair
Lime Glazed Terracotta=Terre cuite emaillée verte clair
Lime Glazed Terracotta Pillar=Pilier de terre cuite emaillée verte clair
Lime Glazed Terracotta=Terre cuite émaillé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=Béton vert clair
Light Blue Terracotta=Terre cuite bleu clair
Light Blue Glazed Terracotta=Terre cuite emaillée bleu clair
Light Blue Glazed Terracotta Pillar=Pilier de 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 émaillée bleu clair
Light Blue Concrete Powder=Béton en poudre 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.
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 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.
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 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.
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. 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 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. 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 nette.
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é.
Colored Terracotta=Terre cuite colorée
Glazed Terracotta=Terre cuite emaillée
Glazed Terracotta Pillar=Pilier de terre cuite emaillée
Glazed Terracotta=Terre cuite émaillée
Glazed Terracotta Pillar=Pilier de terre cuite émaillée
Concrete Powder=Béton en poudre
Concrete=Béton
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
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 Block=Bloc de lapis-Lazuli
Lapis Lazuli Ore=Minerai de lapis-Lazuli
Lapis Lazuli Block=Bloc 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.
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.
@ -208,8 +208,8 @@ Stripped Acacia Log=Bûche d'acacia écorcée
Stripped Acacia Wood=Bois d'acacia écorcé
Stripped Birch Log=Bûche de bouleau écorcée
Stripped Birch Wood=Bois de bouleau écorcé
Stripped Dark Oak Log=Bûche de Chêne Noir
Stripped Dark Oak Wood=Bois de Chêne Noir
Stripped Dark Oak Log=Bûche de chêne noir
Stripped Dark Oak Wood=Bois de chêne noir
Stripped Jungle Log=Bûche d'acajou écorcée
Stripped Jungle Wood=Bois d'acajou écorcé
Stripped Oak Log=Bûche de chêne écorcée

View File

@ -12,7 +12,7 @@ minetest.register_node("mcl_core:glass", {
paramtype2 = "glasslikeliquidlevel",
sunlight_propagates = true,
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(),
drop = "",
_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 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 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=Minerai de diamand 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 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 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=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.

View File

@ -284,7 +284,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool
local wielditem = hitter:get_wielded_item()
--knockback = knockback + 3 * 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
local v = player:get_velocity()
local added_v = 0
@ -485,6 +486,7 @@ mcl_experience.register_on_add_xp(function(player, xp)
end
stack:set_wear(math.floor(new_wear))
tt.reload_itemstack_description(stack) -- update tooltip
inv:set_stack(list, index, stack)
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 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 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é
Item destroyed on death.=Objet détruit à la mort.
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 not minetest.is_creative_enabled(user:get_player_name()) then
itemstack:add_wear(65535/wear_divisor)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
return itemstack
end
@ -54,7 +55,7 @@ local uses = {
stone = 132,
iron = 251,
gold = 33,
diamond = 1562,
diamond = 1562,
netherite = 2031,
}
@ -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", {
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_usagehelp = hoe_usagehelp,
_doc_items_hidden = false,
@ -108,7 +109,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_stone", {
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_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_stonehoe.png",
@ -146,7 +147,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_iron", {
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_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_steelhoe.png",
@ -192,7 +193,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_gold", {
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_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_goldhoe.png",
@ -239,7 +240,7 @@ minetest.register_craft({
minetest.register_tool("mcl_farming:hoe_diamond", {
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_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_diamondhoe.png",
@ -274,26 +275,26 @@ minetest.register_craft({
{"mcl_core:diamond", "mcl_core:diamond"},
{"mcl_core:stick", ""},
{"mcl_core:stick", ""}
}
})
minetest.register_tool("mcl_farming:hoe_netherite", {
description = S("Netherite Hoe"),
_tt_help = hoe_tt.."\n"..S("Uses: @1", uses.netherite),
_doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_netheritehoe.png",
wield_scale = mcl_vars.tool_wield_scale,
on_place = hoe_on_place_function(uses.netherite),
groups = { tool=1, hoe=1, enchantability=10, fire_immune=1 },
tool_capabilities = {
full_punch_interval = 0.25,
damage_groups = { fleshy = 4, },
punch_attack_uses = uses.netherite,
},
_repair_material = "mcl_nether:netherite_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
hoey = { speed = 8, level = 5, uses = uses.netherite }
},
})
}
})
minetest.register_tool("mcl_farming:hoe_netherite", {
description = S("Netherite Hoe"),
_tt_help = hoe_tt,
_doc_items_longdesc = hoe_longdesc,
_doc_items_usagehelp = hoe_usagehelp,
inventory_image = "farming_tool_netheritehoe.png",
wield_scale = mcl_vars.tool_wield_scale,
on_place = hoe_on_place_function(uses.netherite),
groups = { tool=1, hoe=1, enchantability=10, fire_immune=1 },
tool_capabilities = {
full_punch_interval = 0.25,
damage_groups = { fleshy = 4, },
punch_attack_uses = uses.netherite,
},
_repair_material = "mcl_nether:netherite_ingot",
_mcl_toollike_wield = true,
_mcl_diggroups = {
hoey = { speed = 8, level = 5, uses = uses.netherite }
},
})

View File

@ -1,18 +1,18 @@
# 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.
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.
Right-click the fence gate to open or close it.=Cliquez avec le bouton droit sur le portillon pour l'ouvrir ou la fermer.
Oak Fence=Barrière en bois de Chêne
Oak Fence Gate=Portillon en bois de Chêne
Spruce Fence=Barrière en bois de Sapin
Spruce Fence Gate=Portillon en bois de Sapin
Birch Fence=Barrière en bois de Bouleau
Birch Fence Gate=Portillon en bois de Bouleau
Jungle Fence=Barrière 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 Gate=Portillon en bois de Chêne Noir
Acacia Fence=Barrière en bois d'Acacia
Acacia Fence Gate=Portillon en bois d'Acacia
Nether Brick Fence=Barrière en Brique du Nether
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 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 le fermer.
Oak Fence=Barrière en bois de chêne
Oak Fence Gate=Portillon en bois de chêne
Spruce Fence=Barrière en bois de sapin
Spruce Fence Gate=Portillon en bois de sapin
Birch Fence=Barrière en bois de bouleau
Birch Fence Gate=Portillon en bois de bouleau
Jungle Fence=Barrière 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 Gate=Portillon en bois de chêne noir
Acacia Fence=Barrière en bois d'acacia
Acacia Fence Gate=Portillon en bois d'acacia
Nether Brick Fence=Barrière en brique du Nether
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.
local S = minetest.get_translator(minetest.get_current_modname())
local FISHING_ROD_DURABILITY = 65
local bobber_ENTITY={
physical = false,
@ -38,7 +39,7 @@ local fish = function(itemstack, player, pointed_thing)
local ent = nil
local noent = true
local durability = 65
local durability = FISHING_ROD_DURABILITY
local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking")
if unbreaking > 0 then
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
local idef = itemstack:get_definition()
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
minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true)
end
@ -154,6 +156,7 @@ local fish = function(itemstack, player, pointed_thing)
if not minetest.is_creative_enabled(player:get_player_name()) then
local idef = itemstack:get_definition()
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
minetest.sound_play(idef.sound.breaks, {pos=player:get_pos(), gain=0.5}, true)
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.
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.
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é.

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.
Huge Brown Mushroom Block=Bloc 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.
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.

View File

@ -1,42 +1,42 @@
# textdomain: mcl_nether
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=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.
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.
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.
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.
@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 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.
Nether Brick Block=Bloc de Briques du Nether
Red Nether Brick Block=Bloc de Briques Rouges du Nether
Nether Wart Block=Bloc de Verrues du Nether
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
Red Nether Brick Block=Bloc de briques rouges 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.
Block of Quartz=Bloc de Quartz
Chiseled Quartz Block=Bloc de Quartz sculpté
Pillar Quartz Block=Bloc de Quartz rayé
Smooth Quartz=Quartz Lisse
Glowstone Dust=Poudre Lumineuse
Block of Quartz=Bloc de quartz
Chiseled Quartz Block=Bloc de quartz sculpté
Pillar Quartz Block=Bloc de quartz rayé
Smooth Quartz=Quartz lisse
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.
Nether Quartz=Quartz du Nether
Nether quartz is a versatile crafting ingredient.=Le quartz du Nether est un ingrédient artisanal polyvalent.
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 Lava Source=Source de Lave du Nether
Flowing Nether Lava=Lave du Nether en mouvement
Premature Nether Wart (Stage 1)=Verrue du Néant 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.
Nether Lava Source=Source de lave du Nether
Flowing Nether Lava=Lave du Nether en mouvement
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 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 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.
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.
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.
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 des âmes pour le planter et regardez-le grandir.
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
Netherite Scrap=Fragments de netherite
Netherite Ingot=Lingot de netherite

View File

@ -1,51 +1,51 @@
# textdomain: mcl_ocean
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 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 Bricks=Prismarine Taillée
Dark Prismarine=Prismarine Sombre
Prismarine Crystals=Cristaux de Prismarine
Prismarine Shard=Éclat de Prismarine
Dried Kelp=Algue Séchée
Dried Kelp Block=Bloc d'Algue Séchée
Brain Coral Block=Bloc de Corail
Brain Coral Fan=Gorgone de Corail
Brain Coral=Corail
Bubble Coral Block=Bloc de Corail Bulles
Bubble Coral Fan=Gorgone de Corail Bulles
Bubble Coral=Corail Bulles
Fire Coral Block=Bloc Corail de Feu
Fire Coral Fan=Gorgone Corail de Feu
Fire Coral=Corail de Feu
Horn Coral Block=Bloc de Corail Corné
Horn Coral Fan=Gorgone de Corail Corné
Horn Coral=Corail Corné
Tube Coral Block=Bloc de Corail Tubulaire
Tube Coral Fan=Gorgone de Corail Tubulaire
Tube Coral=Corail Tubulaire
Dead Brain Coral Block=Bloc de Corail Mort
Dead Brain Coral Fan=Gorgone de Corail Mort
Dead Brain Coral=Corail Mort
Dead Bubble Coral Block=Bloc de Corail Bulles Mort
Dead Bubble Coral Fan=Gorgone de Corail Bulles Mort
Dead Bubble Coral=Corail Bulles Mort
Dead Fire Coral Block=Bloc de Corail de Feu Mort
Dead Fire Coral Fan=Gorgone de Corail de Feu Mort
Dead Fire Coral=Corail de Feu Mort
Dead Horn Coral Block=Bloc de Corail Corné Mort
Dead Horn Coral Fan=Gorgone de Corail Corné Mort
Dead Horn Coral=Corail Corné Mort
Dead Tube Coral Block=Bloc de Corail Tubulaire Mort
Dead Tube Coral Fan=Gorgone de Corail Tubulaire Mort
Dead Tube Coral=Corail Tubulaire Mort
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
Dark Prismarine=Prismarine sombre
Prismarine Crystals=Cristaux de prismarine
Prismarine Shard=Éclat de prismarine
Dried Kelp=Algue séchée
Dried Kelp Block=Bloc d'algue séchée
Brain Coral Block=Bloc de corail cerveau
Brain Coral Fan=Gorgone de corail cerveau
Brain Coral=Corail cerveau
Bubble Coral Block=Bloc de corail bulles
Bubble Coral Fan=Gorgone de corail bulles
Bubble Coral=Corail bulles
Fire Coral Block=Bloc de corail de feu
Fire Coral Fan=Gorgone de corail de feu
Fire Coral=Corail de feu
Horn Coral Block=Bloc de corail corné
Horn Coral Fan=Gorgone de corail corné
Horn Coral=Corail corné
Tube Coral Block=Bloc de corail tubulaire
Tube Coral Fan=Gorgone de corail tubulaire
Tube Coral=Corail tubulaire
Dead Brain Coral Block=Bloc de corail cerveau mort
Dead Brain Coral Fan=Gorgone de corail cerveau mort
Dead Brain Coral=Corail cerveau mort
Dead Bubble Coral Block=Bloc de corail bulles mort
Dead Bubble Coral Fan=Gorgone de corail bulles mort
Dead Bubble Coral=Corail bulles mort
Dead Fire Coral Block=Bloc de corail de feu mort
Dead Fire Coral Fan=Gorgone de corail de feu mort
Dead Fire Coral=Corail de feu mort
Dead Horn Coral Block=Bloc de corail corné mort
Dead Horn Coral Fan=Gorgone de corail corné mort
Dead Horn Coral=Corail corné mort
Dead Tube Coral Block=Bloc de corail tubulaire mort
Dead Tube Coral Fan=Gorgone de corail tubulaire mort
Dead Tube Coral=Corail tubulaire mort
Seagrass=Herbe aquatique
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.
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 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.
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.
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 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 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.
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
@ -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
Glows in the water=Brille dans l'eau
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 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é.
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.
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 cerveau mort. Placer un cornichon sur un autre cornichon le rendra plus grand et plus brillant.

View File

@ -2,9 +2,9 @@
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.
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
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).
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
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 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_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_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")
if wear then
itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
end
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")
if wear then
itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
end
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")
if wear then
itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
end
@ -420,6 +427,7 @@ local function make_stripped_trunk(itemstack, placer, pointed_thing)
local wear = mcl_autogroup.get_wear(toolname, "axey")
if wear then
itemstack:add_wear(wear)
tt.reload_itemstack_description(itemstack) -- update tooltip
end
end
end

View File

@ -1,37 +1,37 @@
# textdomain: mcl_wool
Wool=Laine
Carpet=Tapis
White Wool=Laine Blanche
White Carpet=Tapis Blanc
Grey Wool=Laine Grise
Grey Carpet=Tapis Gris
Light Grey Wool=Laine Gris Clair
Light Grey Carpet=Tapis Gris Clair
Black Wool=Laine Noire
Black Carpet=Tapis Noir
Red Wool=Laine Rouge
Red Carpet=Tapis Rouge
Yellow Wool=Laine Jaune
Yellow Carpet=Tapis Jaune
Green Wool=Laine Verte
Green Carpet=Tapis Vert
Cyan Wool=Lain Cyan
Cyan Carpet=Tapis Cyan
Blue Wool=Laine Bleue
Blue Carpet=Tapis Bleu
Magenta Wool=Laine Magenta
Magenta Carpet=Tapis Magenta
Orange Wool=Laine Orange
Orange Carpet=Tapis Orange
Purple Wool=Laine Violette
Purple Carpet=Tapis Violet
Brown Wool=Laine Marron
Brown Carpet=Tapis Marron
Pink Wool=Laine Rose
Pink Carpet=Tapis Rose
Lime Wool=Laine Vert Clair
Lime Carpet=Tapis Vert Clair
Light Blue Wool=Laine Bleu Clair
Light Blue Carpet=Tapis Bleu Clair
White Wool=Laine blanche
White Carpet=Tapis blanc
Grey Wool=Laine grise
Grey Carpet=Tapis gris
Light Grey Wool=Laine gris clair
Light Grey Carpet=Tapis gris clair
Black Wool=Laine noire
Black Carpet=Tapis noir
Red Wool=Laine rouge
Red Carpet=Tapis rouge
Yellow Wool=Laine jaune
Yellow Carpet=Tapis jaune
Green Wool=Laine verte
Green Carpet=Tapis vert
Cyan Wool=Lain cyan
Cyan Carpet=Tapis cyan
Blue Wool=Laine bleue
Blue Carpet=Tapis bleu
Magenta Wool=Laine magenta
Magenta Carpet=Tapis magenta
Orange Wool=Laine orange
Orange Carpet=Tapis orange
Purple Wool=Laine violette
Purple Carpet=Tapis violet
Brown Wool=Laine marron
Brown Carpet=Tapis marron
Pink Wool=Laine rose
Pink Carpet=Tapis rose
Lime Wool=Laine vert clair
Lime Carpet=Tapis vert clair
Light Blue Wool=Laine 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.
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)
-- attack reach limit
if hitter and hitter:is_player() then
local weapon = hitter:get_wielded_item()
local player_pos = player: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
return damage
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