Compare commits
10 Commits
master
...
hammers_sp
Author | SHA1 | Date |
---|---|---|
the-real-herowl | a344e44518 | |
the-real-herowl | d9a8e86b6d | |
the-real-herowl | d6cfdf3b56 | |
syl | bad8bc4c67 | |
the-real-herowl | b43c65093f | |
the-real-herowl | 2fb89285a0 | |
Araca | 2c25c94199 | |
Araca | 50f3f2c5c8 | |
Araca | bb0080617a | |
Araca | c501ff6e1d |
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.=このブロックの回転は、置き方に影響されます:床や天井に置くと垂直方向、横に置くと水平方向になります。スニークしながら置くと、代わって直角の方向に向きます。
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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.=Поворот этого блока зависит от того как вы его ставите: поставьте его на пол или потолок для вертикальной ориентации; поместите на стену для горизонтальной ориентации. Удерживайте [Красться] при размещении для перпендикулярной ориентации.
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.=頭に装着することもできます。
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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.=Это можно носить на голове.
|
||||
|
|
|
@ -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.=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -41,7 +41,6 @@ Fast=速い
|
|||
Slow=遅い
|
||||
Very slow=とても遅い
|
||||
Painfully slow=苦痛レベルで遅い
|
||||
Mining durability: @1=採掘耐久度:@1
|
||||
Block breaking strength: @1=ブロック破壊力:@1
|
||||
@1 uses=@1 使用
|
||||
Unlimited uses=無限に使用可能
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -42,7 +42,6 @@ Fast=Высокая
|
|||
Slow=Низкая
|
||||
Very slow=Очень низкая
|
||||
Painfully slow=Крайне низкая
|
||||
Mining durability: @1=Прочность при добыче: @1
|
||||
Block breaking strength: @1=Сила добычи: @1
|
||||
@1 uses=@1
|
||||
Unlimited uses=не ограничено
|
||||
|
|
|
@ -41,7 +41,6 @@ Fast=
|
|||
Slow=
|
||||
Very slow=
|
||||
Painfully slow=
|
||||
Mining durability: @1=
|
||||
Block breaking strength: @1=
|
||||
@1 uses=
|
||||
Unlimited uses=
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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")
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -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)
|
||||
|
|
|
@ -1,3 +1,5 @@
|
|||
mcl_bows = {}
|
||||
|
||||
--Bow
|
||||
dofile(minetest.get_modpath("mcl_bows") .. "/arrow.lua")
|
||||
dofile(minetest.get_modpath("mcl_bows") .. "/bow.lua")
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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,
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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 }
|
||||
},
|
||||
})
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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é.
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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.
|
||||
|
|
|
@ -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,
|
||||
})
|
|
@ -0,0 +1,3 @@
|
|||
name = vl_weaponry
|
||||
author = Herowl
|
||||
depends = mcl_sounds, mcl_init, mcl_bows
|
|
@ -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
|
||||
|
|
After Width: | Height: | Size: 189 B |
After Width: | Height: | Size: 183 B |
After Width: | Height: | Size: 213 B |
After Width: | Height: | Size: 157 B |
After Width: | Height: | Size: 255 B |
After Width: | Height: | Size: 201 B |
After Width: | Height: | Size: 210 B |
After Width: | Height: | Size: 171 B |
After Width: | Height: | Size: 228 B |
After Width: | Height: | Size: 144 B |
After Width: | Height: | Size: 215 B |
After Width: | Height: | Size: 156 B |