Compare commits

..

57 Commits

Author SHA1 Message Date
NO11 eb96200d62 Merge branch 'master' into master 2021-07-07 10:40:53 +00:00
cora 9f086a9242 Merge pull request 'PLAYER/mcl_sprint: Send FOV packets only when necessary' (#106) from reduce-fov-packet-spam into master
Reviewed-on: Mineclonia/Mineclonia#106
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-07-06 20:35:12 +00:00
Nils Dagsson Moskopp 275f0826ed
Send FOV packets only when necessary
Before this change, about 10 to 30 FOV packets were sent from the server
to each connected client each second. This patch only sends FOV packets
when the FOV actually needs to be changed, i.e. when the player starts
or stops sprinting.
2021-07-04 03:25:05 +02:00
cora 00ee2d5013 Merge pull request 'ITEMS/mcl_chests: Fix Ender chests from MineClone2' (#103) from fix-ender-chests-from-mineclone2 into master
Reviewed-on: Mineclonia/Mineclonia#103
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-29 21:25:37 +00:00
Nils Dagsson Moskopp f8c58262bc
Fix Ender chests from MineClone2
Commit 819dbc6224c3b96ad4094cccf3d9150f3ef61d45 of MineClone2 introduced
an LBM that removed Ender chest formspecs stored in the node meta. That
change makes Ender chests that were loaded in MineClone2 versions past
that commit not show the Ender chest inventory form on right-click.

This patch makes those broken Ender chests work by introducing an LBM
that writes the formspec to the node meta for Ender chest nodes once.

Since the LBM name is suffixed with a hash of the Ender chest formspec,
changes to the Ender chest formspec (even removing it entirely) should
not require manual adjustment of the LBM code.
2021-06-28 22:54:00 +02:00
cora 926d5e2c37 Merge pull request 'mcl_inventory: Remove _mcl_autogroup dependency from mcl_inventory' (#76) from fix_inventory_depends into master
Reviewed-on: Mineclonia/Mineclonia#76
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-25 15:25:45 +00:00
cora f1ac39eaad Merge branch 'master' into fix_inventory_depends 2021-06-25 15:12:05 +00:00
cora 58fe08332f Merge pull request 'ITEMS/mcl_core: Fix snow dupe' (#102) from fix-snow-dupe into master
Reviewed-on: Mineclonia/Mineclonia#102
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-24 21:46:04 +00:00
Nils Dagsson Moskopp 1e42c37895
Reduce snow layer silk touch drop amount
It was possible to duplicate snow layers by placing them and then mining
them using a tool enchanted with silk touch. This commit fixes the “snow
dupe” by reducing the amount of snow layers dropped in this case by one.
2021-06-23 03:06:24 +02:00
cora 0816ee38b4 Merge pull request 'ITEMS/screwdriver: Show screwdriver in creative inventory' (#99) from show-screwdriver-in-creative-inventory into master
Reviewed-on: Mineclonia/Mineclonia#99
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-21 22:43:59 +00:00
Nils Dagsson Moskopp 0b92dc1f26
Show screwdriver in creative inventory 2021-06-22 00:16:57 +02:00
cora 87761bf454 Merge pull request 'Make fully grown beetroot drop 1 to 4 seeds when harvested' (#96) from fix-beetroot-seed-drops into master
Reviewed-on: Mineclonia/Mineclonia#96
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-20 22:13:45 +00:00
Elias Åström 725bf517ca Merge remote-tracking branch 'n_to/bow_increase_critical_chance_to_25'
Reviewed-on: #34
Reviewed-by: Elias Åström <ryvnf@riseup.net>
Reviewed-by: E <e@noreply.git.minetest.land>
2021-06-20 23:55:44 +02:00
Elias Åström fc61c71df5 Merge remote-tracking branch 'n_to/nametag_death_german'
Reviewed-on: #32
Reviewed-by: Li0n <li0nsdichachu@outlook.com>
Reviewed-by: Elias Åström <ryvnf@riseup.net>
2021-06-20 23:54:18 +02:00
Elias Åström 7bfd28cd75 Merge remote-tracking branch 'n_to/update_template.txt'
Reviewed-on: #17
Reviewed-by: Lion <li0nsdichachu@outlook.com>
2021-06-20 23:52:15 +02:00
NO11 c41bdbb9e9 Merge branch 'master' into master 2021-06-20 20:32:18 +00:00
Nils Dagsson Moskopp eb7b99d59e
Make fully grown beetroot drop 1 to 4 seeds when harvested
As beetroot often did not drop seeds, players could end up with no seeds when
trying to farm beetroot. This patch guarantees that at least one beetroot seed
is dropped when harvesting beetroot.
2021-06-20 19:02:35 +02:00
My favourite Minetest cheat clients are Dragonfire and Waspsaliva. b96dad7852 Merge pull request 'ITEMS/mcl_banners: Allow more layers for banners with gradients' (#74) from e/Mineclonia:banner-gradient-limits into master
Reviewed-on: Mineclonia/Mineclonia#74
Reviewed-by: Elias Åström <ryvnf@riseup.net>
Reviewed-by: erlehmann <nils+git.minetest.land@dieweltistgarnichtso.net>
2021-06-19 13:01:11 +00:00
NO11 3ed60836ed Merge branch 'master' into master 2021-06-19 08:01:11 +00:00
E 2feab24dd3 Allow more layers for banners with gradients
At some point in the past, Minetest had a bug that caused rendering
issues with transparent textures, like those used for banner gradients.
As a workaround, the number of allowed layers was reduced for banners
containing gradients. The engine bug has since been fixed, but the limit
was never removed.

This commit removes the limit.

See also: Mineclonia/Mineclonia#72 (comment)
and https://github.com/minetest/minetest/issues/6210
2021-06-19 01:43:36 -04:00
cora c9a8ef0ac2 Merge pull request 'ITEMS/REDSTONE/mcl_dispensers: Fix server crash when dispensing an unknown item' (#93) from fix-dispenser-unknown-item-crash into master
Reviewed-on: Mineclonia/Mineclonia#93
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-19 01:32:26 +00:00
Nils Dagsson Moskopp 2aafb2f2d0
Fix server crash when dispensing an unknown item 2021-06-19 02:04:59 +02:00
My favourite Minetest cheat clients are Dragonfire and Waspsaliva. 86c1f37296 Merge pull request 'ENTITIES/mcl_boats: Fix server crash when boat passenger sneaks' (#91) from fix-boat-passenger-sneaking-crash into master
Reviewed-on: Mineclonia/Mineclonia#91
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-18 22:01:35 +00:00
NO11 7ec4f43b29 Add german translation for stripped wood 2021-06-18 19:25:18 +00:00
NO11 167a95a494 Add template for stripped wood translation 2021-06-18 19:18:28 +00:00
NO11 670467c0ab Fix typos 2021-06-18 19:08:02 +00:00
NO11 d6942f4a5b Add specific help text for stripped wood 2021-06-18 19:01:50 +00:00
Lizzy Fleckenstein 764ff5512a
Fix server crash when boat passenger sneaks
The crash occured when a player who is not a driver of a boat sneaked.
2021-06-18 19:08:19 +02:00
NO11 972237a474 Merge branch 'master' into master 2021-06-18 14:09:32 +00:00
cora 6c311d5528 Merge pull request 'CORE/_mcl_autogroup: Prevent server crash on digging unknown' (#85) from fix-dig-unknown-crash into master
Reviewed-on: Mineclonia/Mineclonia#85
Reviewed-by: erlehmann <nils+git.minetest.land@dieweltistgarnichtso.net>
2021-06-17 21:51:55 +00:00
cora 79766bff23
Fix server crash when players dig unknown nodes
Digging unknown nodes crashes the Clamity Minetest server, which
runs modified Minetest: https://github.com/ClamityAnarchy/minetest
Crashes did occur with commit d5434bf008 of that Minetest version.

This commit makes unknown nodes explicitly not harvestable.
2021-06-17 23:39:13 +02:00
My favourite Minetest cheat clients are Dragonfire and Waspsaliva. 031ae5fcb5 Merge pull request 'ITEMS/mcl_jukebox: backport mcl_jukebox API' (#83) from backport_mcl_jukebox_api into master
Reviewed-on: Mineclonia/Mineclonia#83
Reviewed-by: Elias Åström <ryvnf@riseup.net>
Reviewed-by: cora <cora@noreply.git.minetest.land>
2021-06-16 07:10:18 +00:00
Nils Dagsson Moskopp 7ccdbc5905
Document that music_record group, if it exists, is always 1 2021-06-15 23:22:45 +02:00
NO11 6a5f31a1e2 Remove misspellings part2 2021-06-15 17:29:38 +00:00
NO11 5a6f216e51 Remove misspellings part1 2021-06-15 17:27:35 +00:00
NO11 0ef713bf5f Add some spaces 2021-06-15 17:24:53 +00:00
NO11 144de8ed5d Add stripped wood part6 2021-06-15 16:42:42 +00:00
NO11 b0a202fdd0 Add stripped wood part5 2021-06-15 16:42:07 +00:00
NO11 05269e36f3 Add stripped wood part4 2021-06-15 16:41:17 +00:00
NO11 67c3927684 Add stripped wood part3 2021-06-15 16:39:54 +00:00
NO11 3caf27bce3 Add stripped wood part2 2021-06-15 16:35:04 +00:00
NO11 2de615a1f4 Add stripped wood part1 2021-06-15 16:26:32 +00:00
Nils Dagsson Moskopp 5f0710a486
Make jukebox accept and play old music records
With the introduction of the mcl_jukebox API, all music record items
were given new names. Old music record items were aliased, but never
worked with the jukebox. Apparently no one tested existing records.

By explicitly looking up the item name in minetest.registered_aliases,
the jukebox accepts old records, plays them, and gives out new records.
2021-06-15 17:46:03 +02:00
My favourite Minetest cheat clients are Dragonfire and Waspsaliva. 811b6d7058 Merge branch 'master' into backport_mcl_jukebox_api 2021-06-14 22:03:28 +00:00
AFCMS e858ea6233
Add backward compatibility for mcl_jukeboxes 2021-06-14 23:42:25 +02:00
AFCMS 20b7b6ff99
Add API documentation for mcl_jukeboxe 2021-06-14 23:40:24 +02:00
AFCMS b6fc888559
Add API for mcl_jukebox 2021-06-14 23:35:30 +02:00
Elias Åström ab389e9995 Merge pull request 'tools: set up luacheck' (#57) from e/Mineclonia:luacheck-setup into master
Reviewed-on: Mineclonia/Mineclonia#57
Reviewed-by: Elias Åström <ryvnf@riseup.net>
2021-06-14 21:31:23 +00:00
E e14265ff8e luacheck: remove luacheck generator, generate rules in .luacheckrc 2021-05-29 18:45:22 -04:00
E b1fbbfdd35 tools: remove inline scripting from make-luacheck-files
- the awk script was moved to its own file (deps-to-luacheck.awk) with
  minor changes, including added commentary, slightly more rigorous error
  checking, and using a different separator model to avoid a second
  stage to remove trailing commas
- SED_MODCONF2DEPS was moved to a containing function, and commented
- the awk command itself is now easier on the eyes
2021-05-29 18:45:22 -04:00
E 02a8496b5f luacheck: include a generated luacheck config 2021-05-29 18:45:22 -04:00
E 0c13293f43 tools: add a luacheckrc generator
tools/make-luacheck-files.sh will generate a .luacheckrc with the
following rules:
 - any rules set in the project header (.luacheck.head)
 - each mod is allowed to use a single global sharing its mod name
 - mod dependency information is parsed, and those mods' globals are
   permitted for read access
2021-05-29 18:45:22 -04:00
Elias Åström 4b4d40f158 Use register_on_mods_loaded in mcl_inventory
This removes the need to include _mcl_autogroup as a dependency for
mcl_inventory (which should be avoided) and decreases the likelihood
that the code used for populating item tables is executed before all
other mods are loaded.
2021-05-23 20:35:10 +02:00
Benjamin Schötz 9f61cfffaa mcl_bows: Cleanup translation files with script
Reordered translation-strings
Duplicates were removed
Gaps were detected for spanish and filled with machine-translation
2021-04-26 12:09:19 +02:00
Benjamin Schötz 7d44596c6d mcl_bows: Increase chance for critical from 20% to 25%
bow.lua Increase chance from 20% to 25%
bow.lua Adjust helptexts
arrow.lua Adjust helptexts
mcl_bows.(de,es,fr,ru).tr template.txt: Adjust helptexts
2021-04-26 11:11:18 +02:00
Benjamin Schötz 48091cecab mcl_enchanting: Add missing translation strings for enchantment table to template.txt and german, french, russian translations. 2021-04-24 09:06:56 +02:00
Benjamin Schötz adbb2f037a Adds string for '@1 was slain by @2' (deathmessage for mob with nametag) to template.txt and mcl_death_messages.de.tr 2021-04-20 22:19:35 +02:00
46 changed files with 479 additions and 175 deletions

102
.luacheckrc Normal file
View File

@ -0,0 +1,102 @@
std = "min"
read_globals = {
"ItemStack",
"dump", "dump2",
"vector",
"VoxelArea",
"minetest",
"PseudoRandom",
"PerlinNoise",
"PcgRandom",
string = {fields = {"split", "trim"}},
table = {fields = {"copy", "getn", "indexof", "insert_all"}},
math = {fields = {"hypot", "round"}},
}
-- A config option to allow r/w access to mods which contain
-- this one. It only avoids a couple warnings, and may not be
-- the behavior we want, so it's disabled by default.
local allow_parents=false
local lfs = require "lfs"
-- Seed the queue with the mods/ directory
local queue={ {"mods"} }
local function check(dir)
-- Get the string of the directory path
local sdir=table.concat(dir, "/")
-- Save the top-level directory name as a
-- fallback in case there's no mod.conf,
-- or no name= directive.
local name=dir[#dir]
-- Is there a mod.conf?
if lfs.attributes(sdir.."/mod.conf", "mode") == "file" then
local deps={}
for line in io.lines(sdir.."/mod.conf") do
-- Use name= if it's there
name=string.match(line, "name *= *([a-zA-Z0-9_]+)") or name
-- Get the dependency entries (if they're there)
local ents=string.match(line, "depends *=(.*)$")
if ents then
-- Split them in to the comma-separated names
for m in string.gmatch(ents, "([a-zA-Z0-9_]+),?") do
table.insert(deps, m)
end
end
end
local glb={ name }
if allow_parents then
for _, v in pairs(dir) do
-- Skip ALL-CAPS names since those tend
-- to be collections of mods instead of
-- mods themselves.
if not string.match(v, "^[A-Z]+$") then
table.insert(glb, v)
end
end
end
-- Tell Luacheck what the directory is allowed to do
files[sdir]={
globals = glb,
read_globals = deps,
}
elseif lfs.attributes(sdir.."/init.lua", "mode") == "file" then
-- No mod.conf, but there's an init.lua here.
local glb={ name }
if allow_parents then
for _, v in pairs(dir) do
-- Again, skip ALL-CAPS.
if not string.match(v, "^[A-Z]+$") then
table.insert(glb, v)
end
end
end
files[sdir]={ globals=glb }
end
-- Queue any child directories
for d in lfs.dir(sdir) do
-- Skip hidden directories and parent/current directories.
if lfs.attributes(sdir.."/"..d, "mode") == "directory" and not string.match(d, "^%.") then
-- Copy dir in to nd (New Dir)
local nd={}
for k, v in pairs(dir) do
nd[k]=v
end
nd[#nd+1]=d
table.insert(queue, nd)
end
end
end
while #queue > 0 do
-- Pop an entry and process it.
check(table.remove(queue, 1))
end

View File

@ -149,7 +149,7 @@ These groups are used mostly for informational purposes
* `trapdoor=2`: Open trapdoor
* `glass=1`: Glass (full cubes only)
* `rail=1`: Rail
* `music_record`: Music Disc (rating is track ID)
* `music_record=1`: Music Disc
* `tnt=1`: Block is TNT
* `boat=1`: Boat
* `minecart=1`: Minecart

View File

@ -207,6 +207,10 @@ end
function mcl_autogroup.can_harvest(nodename, toolname)
local ndef = minetest.registered_nodes[nodename]
if not ndef then
return false
end
if minetest.get_item_group(nodename, "dig_immediate") >= 2 then
return true
end

View File

@ -243,7 +243,7 @@ function boat.on_step(self, dtime, moveresult)
else
local ctrl = self._passenger:get_player_control()
if ctrl and ctrl.sneak then
detach_player(self._passenger, true)
detach_object(self._passenger, true)
self._passenger = nil
end
end

View File

@ -10,6 +10,7 @@
@1 drowned.=@1 ertrank.
@1 ran out of oxygen.=@1 ging die Luft aus.
@1 was killed by @2.=@1 wurde von @2 getötet.
@1 was slain by @2.=@1 wurde von @2 getötet.
@1 was killed.=@1 wurde getötet.
@1 was killed by a mob.=@1 wurde von einem Mob getötet.
@1 was burned to death by a blaze's fireball.=@1 wurde von einem Feuerball einer Lohe zu Tode verbrannt.

View File

@ -10,6 +10,7 @@
@1 drowned.=
@1 ran out of oxygen.=
@1 was killed by @2.=
@1 was slain by @2.=
@1 was killed.=
@1 was killed by a mob.=
@1 was burned to death by a blaze's fireball.=

View File

@ -28,10 +28,9 @@ local function replace_enchanted_books(tbl)
end
end
--[[ Populate all the item tables. We only do this once. Note this mod must be
loaded after _mcl_autogroup for this to work, because it required certain
groups to be set. ]]
do
--[[ Populate all the item tables. We only do this once. Note this code must be
executed after loading all the other mods in order to work. ]]
minetest.register_on_mods_loaded(function()
for name,def in pairs(minetest.registered_items) do
if (not def.groups.not_in_creative_inventory or def.groups.not_in_creative_inventory == 0) and def.description and def.description ~= "" then
local is_redstone = function(def)
@ -109,7 +108,7 @@ do
table.sort(to_sort)
replace_enchanted_books(to_sort)
end
end
end)
local function filter_item(name, description, lang, filter)
local desc

View File

@ -1,4 +1,4 @@
name = mcl_inventory
description = Adds the player inventory and creative inventory.
depends = mcl_init, mcl_formspec, mcl_enchanting
optional_depends = mcl_player, _mcl_autogroup, mcl_armor, mcl_brewing, mcl_potions
optional_depends = mcl_player, mcl_armor, mcl_brewing, mcl_potions

View File

@ -129,6 +129,19 @@ local dispenserdef = {
local stack_id = stacks[r].stackpos
local stackdef = stack:get_definition()
local iname = stack:get_name()
if not minetest.registered_items[iname] then
minetest.log(
"warning",
"Trying to dispense unknown item " ..
"" .. iname .. "" ..
"near (" ..
pos.x .. ", " ..
pos.y .. ", " ..
pos.z ..
")"
)
return
end
local igroups = minetest.registered_items[iname].groups
--[===[ Dispense item ]===]

View File

@ -387,15 +387,13 @@ for colorid, colortab in pairs(mcl_banners.colors) do
-- redraw the pattern textures as low-resolution pixel
-- art and use that instead.
local layer = "(([combine:20x40:-2,-2=" .. pattern .. "^[resize:16x24^[colorize:" .. color .. ":" .. layer_ratio .. "))"
local mask = "(([combine:20x40:-2,-2=" .. pattern .. "^[resize:16x24" .. "))"
local layer = "(([combine:20x40:-2,-2="..pattern.."^[resize:16x24^[colorize:"..color..":"..layer_ratio.."))"
function escape(text)
return text:gsub("%^", "\\%^"):gsub(":", "\\:") -- :gsub("%(", "\\%("):gsub("%)", "\\%)")
end
local layer_masked = layer .. "^[mask:" .. escape(mask)
finished_banner = "[combine:32x32:0,0=" .. escape(base) .. ":8,4=" .. escape(layer_masked)
finished_banner = "[combine:32x32:0,0=" .. escape(base) .. ":8,4=" .. escape(layer)
end
inv = finished_banner

View File

@ -8,9 +8,6 @@ local N = function(s) return s end
-- Maximum number of layers which can be put on a banner by crafting.
local max_layers_crafting = 12
-- Maximum number of layers when banner includes a gradient (workaround, see below).
local max_layers_gradient = 3
-- Max. number lines in the descriptions for the banner layers.
-- This is done to avoid huge tooltips.
local max_layer_lines = 6
@ -398,16 +395,6 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
if #layers >= max_layers_crafting then
return ItemStack("")
end
-- Lower layer limit when banner includes any gradient.
-- Workaround to circumvent Minetest bug (https://github.com/minetest/minetest/issues/6210)
-- TODO: Remove this restriction when bug #6210 is fixed.
if #layers >= max_layers_gradient then
for l=1, #layers do
if layers[l].pattern == "gradient" or layers[l].pattern == "gradient_up" then
return ItemStack("")
end
end
end
local matching_pattern
local max_i = player:get_inventory():get_size("craft")

View File

@ -22,7 +22,7 @@ minetest.register_craftitem("mcl_bows:arrow", {
description = S("Arrow"),
_tt_help = S("Ammunition").."\n"..S("Damage from bow: 1-10").."\n"..S("Damage from dispenser: 3"),
_doc_items_longdesc = S("Arrows are ammunition for bows and dispensers.").."\n"..
S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n"..
S("An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.").."\n"..
S("Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons."),
_doc_items_usagehelp = S("To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it."),
inventory_image = "mcl_bows_arrow_inv.png",

View File

@ -129,7 +129,7 @@ minetest.register_tool("mcl_bows:bow", {
description = S("Bow"),
_tt_help = S("Launches arrows"),
_doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes.").."\n"..
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead."),
S("The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead."),
_doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot."),
_doc_items_durability = BOW_DURABILITY,
inventory_image = "mcl_bows_bow.png",
@ -256,9 +256,9 @@ controls.register_on_release(function(player, key, time)
local is_critical = false
if charge >= BOW_CHARGE_TIME_FULL then
speed = BOW_MAX_SPEED
local r = math.random(1,5)
local r = math.random(1,4)
if r == 1 then
-- 20% chance for critical hit
-- 25% chance for critical hit
damage = 10
is_critical = true
else

View File

@ -1,15 +1,14 @@
# textdomain: mcl_bows
Arrow=Pfeil
Arrows are ammunition for bows and dispensers.=Pfeile sind Munition für Bögen und Werfer.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Ein Bogen von einem Pfeil richtet regulär 1-9 Schaden an. Mit voller Zugkraft gibt es eine 20%-ige Chance auf einen kritischen Treffer mit 10 Schaden. Ein Pfeil aus einem Werfer richtet immer 3 Schaden an.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Pfeile können in festen Blöcken stecken bleiben und wieder aufgesammelt werden. Sie können auf Holzknöpfe drücken.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Um Pfeile als Munition für dne Bogen zu benutzen, platzieren Sie sie einfach irgendwo im Inventar, sie werden automatisch benutzt. Um Pfeile als Munition für Werfer zu benutzen, platzieren Sie sie ins Inventar eines Werferr. Um einen steckengebliebenen Pfeil aufzusammeln, gehen Sie einfach zu ihm hin.
Bow=Bogen
Bows are ranged weapons to shoot arrows at your foes.=Bogen sind Fernwaffen, um Pfeile auf Ihre Feinde zu schießen.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=Die Geschwindigkeit und der Schaden des Bogens erhöht sich, je länger sie den Bogen spannen. Der reguläre Schaden des Pfeiles ist zwischen 1 und 9. Ist der Bogen voll gespannt, gibt es eine 20%-ig Change für einen kritischen Treffer, der 10 Schaden anrichtet.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Um den Bogen zu benutzen, muss sich im Inventar mindestens ein Pfeil befinden (außer im Kreativmodus). Halten sie die rechte Maustaste gedrückt zum Spannen, lassen Sie sie los zum Schießen.
Bow=Bogen
Ammunition=Munition
Damage from bow: 1-10=Schaden vom Bogen: 1-10
Damage from dispenser: 3=Schaden vom Werfer: 3
Arrows are ammunition for bows and dispensers.=Pfeile sind Munition für Bögen und Werfer.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Ein Bogen von einem Pfeil richtet regulär 1-9 Schaden an. Mit voller Zugkraft gibt es eine 25%-ige Chance auf einen kritischen Treffer mit 10 Schaden. Ein Pfeil aus einem Werfer richtet immer 3 Schaden an.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Pfeile können in festen Blöcken stecken bleiben und wieder aufgesammelt werden. Sie können auf Holzknöpfe drücken.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Um Pfeile als Munition für dne Bogen zu benutzen, platzieren Sie sie einfach irgendwo im Inventar, sie werden automatisch benutzt. Um Pfeile als Munition für Werfer zu benutzen, platzieren Sie sie ins Inventar eines Werferr. Um einen steckengebliebenen Pfeil aufzusammeln, gehen Sie einfach zu ihm hin.
Bow=Bogen
Launches arrows=Verschießt Pfeile
Bows are ranged weapons to shoot arrows at your foes.=Bogen sind Fernwaffen, um Pfeile auf Ihre Feinde zu schießen.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead.=Die Geschwindigkeit und der Schaden des Bogens erhöht sich, je länger sie den Bogen spannen. Der reguläre Schaden des Pfeiles ist zwischen 1 und 9. Ist der Bogen voll gespannt, gibt es eine 25%-ig Change für einen kritischen Treffer, der 10 Schaden anrichtet.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Um den Bogen zu benutzen, muss sich im Inventar mindestens ein Pfeil befinden (außer im Kreativmodus). Halten sie die rechte Maustaste gedrückt zum Spannen, lassen Sie sie los zum Schießen.

View File

@ -1,11 +1,14 @@
# textdomain: mcl_bows
Arrow=Flecha
Ammunition=Munición
Damage from bow: 1-10=Daño del arco: 1-10
Damage from dispenser: 3=Daño del dispensador: 3
Arrows are ammunition for bows and dispensers.=Las flechas son municiones para arcos y dispensadores.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Una flecha disparada desde un arco tiene un daño regular de 1-9. A plena carga, hay un 20% de posibilidades de que un golpe crítico inflija 10 daños en su lugar. Una flecha disparada desde un dispensador siempre causa 3 de daño.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Una flecha disparada desde un arco tiene un daño regular de 1-9. A plena carga, hay un 25% de posibilidades de que un golpe crítico inflija 10 daños en su lugar. Una flecha disparada desde un dispensador siempre causa 3 de daño.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Las flechas pueden atascarse en bloques sólidos y pueden recuperarse nuevamente. También son capaces de presionar botones de madera.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Para usar flechas como municiones para un arco, simplemente colóquelas en cualquier parte de su inventario, se usarán automáticamente. Para usar flechas como municiones para un dispensador, colóquelas en el inventario del dispensador. Para recuperar una flecha que se pega en un bloque, simplemente camine cerca de ella.
Bow=Arco
Launches arrows=Dispara flechas
Bows are ranged weapons to shoot arrows at your foes.=Los arcos son armas a distancia para disparar flechas a tus enemigos.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=La velocidad y el daño de la flecha aumentan cuanto más tiempo tenses. El daño regular de la flecha está entre 1 y 9. A plena carga, también hay un 20% de un golpe crítico, que en vez de eso causa 10 de daño.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead.=La velocidad y el daño de la flecha aumentan cuanto más tiempo tenses. El daño regular de la flecha está entre 1 y 9. A plena carga, también hay un 25% de un golpe crítico, que en vez de eso causa 10 de daño.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Para usar el arco, primero debes de tener al menos una flecha en cualquier parte de su inventario (a menos que esté en modo creativo). Mantenga presionado el botón derecho del mouse para tensar, suelte para disparar.
Bow=Arco

View File

@ -1,15 +1,14 @@
# textdomain: mcl_bows
Arrow=Flèche
Arrows are ammunition for bows and dispensers.=Les flèches sont des munitions pour les arcs et les distributeurs.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Une flèche tirée d'un arc a des dégâts réguliers de 1 à 9. À pleine charge, il y a 20% de chances qu'un coup critique inflige 10 dégâts à la place. Une flèche tirée depuis un distributeur inflige toujours 3 dégâts.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Les flèches peuvent se coincer sur des blocs solides et peuvent être récupérées à nouveau. Ils sont également capables de pousser des boutons en bois.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Pour utiliser des flèches comme munitions pour un arc, il suffit de les placer n'importe où dans votre inventaire, elles seront utilisées automatiquement. Pour utiliser des flèches comme munitions pour un distributeur, placez-les dans l'inventaire du distributeur. Pour récupérer une flèche qui colle dans un bloc, il vous suffit de vous en approcher.
Bow=Arc
Bows are ranged weapons to shoot arrows at your foes.=Les arcs sont des armes à distance pour tirer des flèches sur vos ennemis.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=La vitesse et les dégâts de la flèche augmentent plus vous chargez. Les dégâts réguliers de la flèche sont compris entre 1 et 9. À pleine charge, il y a également 20% d'un coup critique, infligeant 10 dégâts à la place.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Pour utiliser l'arc, vous devez d'abord avoir au moins une flèche n'importe où dans votre inventaire (sauf en mode créatif). Maintenez enfoncé le bouton droit de la souris pour charger, relâchez pour tirer.
Bow=Arc
Ammunition=Munition
Damage from bow: 1-10=Dégâts de l'arc: 1-10
Damage from dispenser: 3=Dégâts du distributeur: 3
Arrows are ammunition for bows and dispensers.=Les flèches sont des munitions pour les arcs et les distributeurs.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Une flèche tirée d'un arc a des dégâts réguliers de 1 à 9. À pleine charge, il y a 25% de chances qu'un coup critique inflige 10 dégâts à la place. Une flèche tirée depuis un distributeur inflige toujours 3 dégâts.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Les flèches peuvent se coincer sur des blocs solides et peuvent être récupérées à nouveau. Ils sont également capables de pousser des boutons en bois.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Pour utiliser des flèches comme munitions pour un arc, il suffit de les placer n'importe où dans votre inventaire, elles seront utilisées automatiquement. Pour utiliser des flèches comme munitions pour un distributeur, placez-les dans l'inventaire du distributeur. Pour récupérer une flèche qui colle dans un bloc, il vous suffit de vous en approcher.
Bow=Arc
Launches arrows=Lance des flèches
Bows are ranged weapons to shoot arrows at your foes.=Les arcs sont des armes à distance pour tirer des flèches sur vos ennemis.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead.=La vitesse et les dégâts de la flèche augmentent plus vous chargez. Les dégâts réguliers de la flèche sont compris entre 1 et 9. À pleine charge, il y a également 25% d'un coup critique, infligeant 10 dégâts à la place.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Pour utiliser l'arc, vous devez d'abord avoir au moins une flèche n'importe où dans votre inventaire (sauf en mode créatif). Maintenez enfoncé le bouton droit de la souris pour charger, relâchez pour tirer.

View File

@ -1,15 +1,14 @@
# textdomain: mcl_bows
Arrow=Стрела
Arrows are ammunition for bows and dispensers.=Стрелы - это боеприпасы для луков и диспенсеров.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть 20-процентный шанс критического удара с уроном 10. Стрела из диспенсера всегда наносит урон уровня 3.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Стрелы могут застревать в твёрдых блоках, их можно подбирать для повторного использования. Они также способны нажимать деревянные кнопки.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Чтобы использовать стрелы в качестве боеприпасов для лука, просто положите их в любую ячейку вашего инвентаря, и они будут использоваться автоматически. Чтобы использовать стрелы в качестве боеприпасов для диспенсера, поместите их в инвентарь диспенсера. Чтобы взять стрелу, застрявшую в блоке, просто пройдите рядом с ней.
Bow=Лук
Bows are ranged weapons to shoot arrows at your foes.=Лук - это оружие дальнего боя, чтобы стрелять стрелами по вашим врагам.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=Скорость и урон стрелы увеличиваются, пока вы её натягиваете. Обычный урон стрелы находится между 1 и 9. При полном натяжении есть 20-процентный шанс критического удара с уроном 10.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Чтобы использовать лук, нужно иметь хотя бы одну стрелу в вашем инвентаре (за исключением творческого режима). Удерживайте правую клавишу мыши, чтобы натягивать тетиву, затем отпустите, чтобы выстрелить.
Bow=Лук
Ammunition=Боеприпасы
Damage from bow: 1-10=Урон от лука: 1-10
Damage from dispenser: 3=Урон от диспенсера: 3
Arrows are ammunition for bows and dispensers.=Стрелы - это боеприпасы для луков и диспенсеров.
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=Стрела, выпущенная из лука, обычно наносит урон 1-9. При полном натяжении есть 25-процентный шанс критического удара с уроном 10. Стрела из диспенсера всегда наносит урон уровня 3.
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=Стрелы могут застревать в твёрдых блоках, их можно подбирать для повторного использования. Они также способны нажимать деревянные кнопки.
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=Чтобы использовать стрелы в качестве боеприпасов для лука, просто положите их в любую ячейку вашего инвентаря, и они будут использоваться автоматически. Чтобы использовать стрелы в качестве боеприпасов для диспенсера, поместите их в инвентарь диспенсера. Чтобы взять стрелу, застрявшую в блоке, просто пройдите рядом с ней.
Bow=Лук
Launches arrows=Пускает стрелы
Bows are ranged weapons to shoot arrows at your foes.=Лук - это оружие дальнего боя, чтобы стрелять стрелами по вашим врагам.
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead.=Скорость и урон стрелы увеличиваются, пока вы её натягиваете. Обычный урон стрелы находится между 1 и 9. При полном натяжении есть 25-процентный шанс критического удара с уроном 10.
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=Чтобы использовать лук, нужно иметь хотя бы одну стрелу в вашем инвентаре (за исключением творческого режима). Удерживайте правую клавишу мыши, чтобы натягивать тетиву, затем отпустите, чтобы выстрелить.

View File

@ -1,15 +1,14 @@
# textdomain: mcl_bows
Arrow=
Arrows are ammunition for bows and dispensers.=
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 20% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=
Bow=
Bows are ranged weapons to shoot arrows at your foes.=
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 20% of a critical hit, dealing 10 damage instead.=
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=
Bow=
Ammunition=
Damage from bow: 1-10=
Damage from dispenser: 3=
Arrows are ammunition for bows and dispensers.=
An arrow fired from a bow has a regular damage of 1-9. At full charge, there's a 25% chance of a critical hit dealing 10 damage instead. An arrow fired from a dispenser always deals 3 damage.=
Arrows might get stuck on solid blocks and can be retrieved again. They are also capable of pushing wooden buttons.=
To use arrows as ammunition for a bow, just put them anywhere in your inventory, they will be used up automatically. To use arrows as ammunition for a dispenser, place them in the dispenser's inventory. To retrieve an arrow that sticks in a block, simply walk close to it.=
Bow=
Launches arrows=
Bows are ranged weapons to shoot arrows at your foes.=
The speed and damage of the arrow increases the longer you charge. The regular damage of the arrow is between 1 and 9. At full charge, there's also a 25% of a critical hit, dealing 10 damage instead.=
To use the bow, you first need to have at least one arrow anywhere in your inventory (unless in Creative Mode). Hold down the right mouse button to charge, release to shoot.=

View File

@ -1401,6 +1401,22 @@ minetest.register_lbm({
end,
})
-- The following LBM allows the Ender chests from MineClone2 post-0.71
-- (after commit 819dbc6224c3b96ad4094cccf3d9150f3ef61d45) to work in
-- Mineclonia. It also ensures that any Ender chest formspec changes
-- (even a removal of the formspec) get applied in future versions.
minetest.register_lbm({
label = "Update ender chest formspecs (MineClone2 compatibility)",
name = "mcl_chests:update_ender_chest_formspecs_" ..
minetest.sha1(formspec_ender_chest),
nodenames = { "mcl_chests:ender_chest_small" },
run_at_every_load = false,
action = function(pos, node)
local meta = minetest.get_meta(pos)
meta:set_string("formspec", formspec_ender_chest)
end,
})
minetest.register_lbm({
label = "Update shulker box formspecs (0.60.0)",
name = "mcl_chests:update_shulker_box_formspecs_0_60_0",

View File

@ -4,47 +4,30 @@
-- Crafting definition
--
minetest.register_craft({
output = 'mcl_core:wood 4',
recipe = {
{'mcl_core:tree'},
}
})
local function craft_planks(output, input)
minetest.register_craft({
output = "mcl_core:"..output.."wood 4",
recipe = {
{"mcl_core:"..input},
}
})
end
minetest.register_craft({
output = 'mcl_core:darkwood 4',
recipe = {
{'mcl_core:darktree'},
}
})
local planks = {
{"", "oak"},
{"dark", "dark_oak"},
{"jungle", "jungle"},
{"acacia", "acacia"},
{"spruce", "spruce"},
{"birch", "birch"}
}
minetest.register_craft({
output = 'mcl_core:junglewood 4',
recipe = {
{'mcl_core:jungletree'},
}
})
minetest.register_craft({
output = 'mcl_core:acaciawood 4',
recipe = {
{'mcl_core:acaciatree'},
}
})
minetest.register_craft({
output = 'mcl_core:sprucewood 4',
recipe = {
{'mcl_core:sprucetree'},
}
})
minetest.register_craft({
output = 'mcl_core:birchwood 4',
recipe = {
{'mcl_core:birchtree'},
}
})
for _, p in pairs(planks) do
craft_planks(p[1], p[1].."tree")
craft_planks(p[1], p[1].."tree_bark")
craft_planks(p[1], "stripped_"..p[2])
craft_planks(p[1], "stripped_"..p[2].."_bark")
end
minetest.register_craft({
type = 'shapeless',

View File

@ -202,18 +202,42 @@ Stained glass is a decorative and mostly transparent block which comes in variou
Stick=Stock
Sticks are a very versatile crafting material; used in countless crafting recipes.=Stöcke sind ein vielseitiges Material, sie werden in zahllosen Fertigungsrezepten gebraucht.
Stone=Stein
Stripped Acacia Log=Entrindeter Akazienstamm
Stripped Acacia Wood=Entrindetes Akazienholz
Stripped Birch Log=Entrindeter Birkenstamm
Stripped Birch Wood=Entrindetes Birkenholz
Stripped Dark Oak Log=Entrindeter Schwarzeichenstamm
Stripped Dark Oak Wood=Entrindetes Schwarzeichenholz
Stripped Jungle Log=Entrindeter Dschungelbaumstamm
Stripped Jungle Wood=Entrindetes Dschungelholz
Stripped Oak Log=Entrindeter Eichenstamm
Stripped Oak Wood=Entrindetes Eichenholz
Stripped Spruce Log=Entrindeter Fichtenstamm
Stripped Spruce Wood=Entrindetes Fichtenholz
Stone Bricks=Steinziegel
Sugar=Zucker
Sugar Canes=Zuckerrohr
Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=Zuckerrohr ist eine Pflanze, die in der Herstellung gebraucht wird. Zuckerrohr wird in der Nähe von Wasser bis zu 3 zusätzliche Blöcke wachsen lassen, wenn sie sich neben Wasser befinden und auf einem Grasblock, auf Erde, Sand, roten Sand, Podsol oder grobe Erde platziert wurden. Wird ein Zuckerrohr abgebrochen, werden alle verbundenen Zuckerrohrblöcke ebenfalls abbrechen.
Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=Zuckerrohr kann nur auf Zuckerrohr platziert werden und auf Blöcken, auf denen Zuckerrohr wachsen würde.
Sugar comes from sugar canes and is used to make sweet foods.=Zucker kommt von Zuckerrohr und wird benutzt, um süße Lebensmittel zu machen.
The stripped trunk of an acacia tree.=Der entrindete Stamm einer Akazie.
The stripped trunk of a birch tree.=Der entrindete Stamm einer Birke.
The stripped trunk of a dark oak tree.=Der entrindete Stamm einer Schwarzeiche.
The stripped trunk of a jungle tree.=Der entrindete Stamm eines Dschungelbaums.
The stripped trunk of an oak tree.=Der entrindete Stamm einer Eiche.
The stripped trunk of a spruce tree.=Der entrindete Stamm einer Fichte.
The trunk of a birch tree.=Der Baumstamm einer Birke.
The trunk of a dark oak tree.=Der Baumstamm einer Schwarzeiche.
The trunk of a jungle tree.=Der Baumstamm eines Dschungelbaums.
The trunk of a spruce tree.=Der Baumstamm einer Fichte.
The trunk of an acacia.=Der Baumstamm einer Akazie.
The trunk of an oak tree.=Der Baumstamm einer Eiche.
The stripped wood of an acacia tree.=Das entrindete Holz einer Akazie.
The stripped wood of a birch tree.=Das entrindete Holz einer Birke.
The stripped wood of a dark oak tree.=Das entrindete Holz einer Schwarzeiche.
The stripped wood of a jungle tree.=Das entrindete Holz eines Dschungelbaums.
The stripped wood of an oak tree.=Das entrindete Holz einer Eiche.
The stripped wood of a spruce tree.=Das entrindete Holz einer Fichte.
This block consists of a couple of loose stones and can't support itself.=Diser Block besteht aus ein paar losen Steinchen und kann sich nicht selbst tragen.
This is a decorative block surrounded by the bark of a tree trunk.=Dies ist ein dekorativer Block, der von der Rinde eines Baumstamms umgeben ist.
This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=Ein ganzer Block aus Schnee. Schnee von dieser Dicke wird üblicherweise in Gebieten extremer Kälte gefunden.

View File

@ -202,18 +202,42 @@ Stained glass is a decorative and mostly transparent block which comes in variou
Stick=
Sticks are a very versatile crafting material; used in countless crafting recipes.=
Stone=
Stripped Acacia Log=
Stripped Acacia Wood=
Stripped Birch Log=
Stripped Birch Wood=
Stripped Dark Oak Log=
Stripped Dark Oak Wood=
Stripped Jungle Log=
Stripped Jungle Wood=
Stripped Oak Log=
Stripped Oak Wood=
Stripped Spruce Log=
Stripped Spruce Wood=
Stone Bricks=
Sugar=
Sugar Canes=
Sugar canes are a plant which has some uses in crafting. Sugar canes will slowly grow up to 3 blocks when they are next to water and are placed on a grass block, dirt, sand, red sand, podzol or coarse dirt. When a sugar cane is broken, all sugar canes connected above will break as well.=
Sugar canes can only be placed top of other sugar canes and on top of blocks on which they would grow.=
Sugar comes from sugar canes and is used to make sweet foods.=
The stripped trunk of an acacia tree.=
The stripped trunk of a birch tree.=
The stripped trunk of a dark oak tree.=
The stripped trunk of a jungle tree.=
The stripped trunk of an oak tree.=
The stripped trunk of a spruce tree.=
The trunk of a birch tree.=
The trunk of a dark oak tree.=
The trunk of a jungle tree.=
The trunk of a spruce tree.=
The trunk of an acacia.=
The trunk of an oak tree.=
The stripped wood of an acacia tree.=
The stripped wood of a birch tree.=
The stripped wood of a dark oak tree.=
The stripped wood of a jungle tree.=
The stripped wood of an oak tree.=
The stripped wood of a spruce tree.=
This block consists of a couple of loose stones and can't support itself.=
This is a decorative block surrounded by the bark of a tree trunk.=
This is a full block of snow. Snow of this thickness is usually found in areas of extreme cold.=

View File

@ -1032,7 +1032,7 @@ for i=1,8 do
drop = "mcl_throwing:snowball "..(i+1),
_mcl_blast_resistance = 0.1,
_mcl_hardness = 0.1,
_mcl_silk_touch_drop = {"mcl_core:snow " .. (i+1)},
_mcl_silk_touch_drop = {"mcl_core:snow " .. i},
})
end

View File

@ -8,7 +8,7 @@ if mod_screwdriver then
end
-- Register tree trunk (wood) and bark
local register_tree_trunk = function(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark)
local function register_tree_trunk(subname, description_trunk, description_bark, longdesc, tile_inner, tile_bark, stripped_variant)
minetest.register_node("mcl_core:"..subname, {
description = description_trunk,
_doc_items_longdesc = longdesc,
@ -17,11 +17,12 @@ local register_tree_trunk = function(subname, description_trunk, description_bar
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
stack_max = 64,
groups = {handy=1,axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = mcl_sounds.node_sound_wood_defaults(),
on_rotate = on_rotate,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = stripped_variant,
})
minetest.register_node("mcl_core:"..subname.."_bark", {
@ -31,7 +32,49 @@ local register_tree_trunk = function(subname, description_trunk, description_bar
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
stack_max = 64,
groups = {handy=1,axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
groups = {handy=1, axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
on_rotate = on_rotate,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
_mcl_stripped_variant = stripped_variant.."_bark",
})
minetest.register_craft({
output = "mcl_core:"..subname.."_bark 3",
recipe = {
{ "mcl_core:"..subname, "mcl_core:"..subname },
{ "mcl_core:"..subname, "mcl_core:"..subname },
}
})
end
-- Register stripped trunk and stripped wood
local function register_stripped_trunk(subname, description_stripped_trunk, description_stripped_bark, longdesc, longdesc_wood, tile_stripped_inner, tile_stripped_bark)
minetest.register_node("mcl_core:"..subname, {
description = description_stripped_trunk,
_doc_items_longdesc = longdesc,
_doc_items_hidden = false,
tiles = {tile_stripped_inner, tile_stripped_inner, tile_stripped_bark},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
stack_max = 64,
groups = {handy=1, axey=1, tree=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = mcl_sounds.node_sound_wood_defaults(),
on_rotate = on_rotate,
_mcl_blast_resistance = 2,
_mcl_hardness = 2,
})
minetest.register_node("mcl_core:"..subname.."_bark", {
description = description_stripped_bark,
_doc_items_longdesc = longdesc_wood,
tiles = {tile_stripped_bark},
paramtype2 = "facedir",
on_place = mcl_util.rotate_axis,
stack_max = 64,
groups = {handy=1, axey=1, bark=1, flammable=2, building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=5},
sounds = mcl_sounds.node_sound_wood_defaults(),
is_ground_content = false,
on_rotate = on_rotate,
@ -48,7 +91,7 @@ local register_tree_trunk = function(subname, description_trunk, description_bar
})
end
local register_wooden_planks = function(subname, description, tiles)
local function register_wooden_planks(subname, description, tiles)
minetest.register_node("mcl_core:"..subname, {
description = description,
_doc_items_longdesc = doc.sub.items.temp.build,
@ -56,7 +99,7 @@ local register_wooden_planks = function(subname, description, tiles)
tiles = tiles,
stack_max = 64,
is_ground_content = false,
groups = {handy=1,axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
groups = {handy=1, axey=1, flammable=3,wood=1,building_block=1, material_wood=1, fire_encouragement=5, fire_flammability=20},
sounds = mcl_sounds.node_sound_wood_defaults(),
_mcl_blast_resistance = 3,
_mcl_hardness = 2,
@ -70,7 +113,7 @@ local register_leaves = function(subname, description, longdesc, tiles, sapling,
end
local apple_chances = {200, 180, 160, 120, 40}
local stick_chances = {50, 45, 30, 35, 10}
local function get_drops(fortune_level)
local drop = {
max_items = 1,
@ -108,7 +151,7 @@ local register_leaves = function(subname, description, longdesc, tiles, sapling,
tiles = tiles,
paramtype = "light",
stack_max = 64,
groups = {handy=1,shearsy=1,swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60},
groups = {handy=1, shearsy=1, swordy=1, leafdecay=leafdecay_distance, flammable=2, leaves=1, deco_block=1, dig_by_piston=1, fire_encouragement=30, fire_flammability=60},
drop = get_drops(0),
_mcl_shears_drop = true,
sounds = mcl_sounds.node_sound_leaves_defaults(),
@ -119,7 +162,7 @@ local register_leaves = function(subname, description, longdesc, tiles, sapling,
})
end
local register_sapling = function(subname, description, longdesc, tt_help, texture, selbox)
local function register_sapling(subname, description, longdesc, tt_help, texture, selbox)
minetest.register_node("mcl_core:"..subname, {
description = description,
_tt_help = tt_help,
@ -139,7 +182,7 @@ local register_sapling = function(subname, description, longdesc, tt_help, textu
fixed = selbox
},
stack_max = 64,
groups = {dig_immediate=3, plant=1,sapling=1,non_mycelium_plant=1,attached_node=1,dig_by_water=1,dig_by_piston=1,destroy_by_lava_flow=1,deco_block=1},
groups = {dig_immediate=3, plant=1, sapling=1, non_mycelium_plant=1, attached_node=1, dig_by_water=1, dig_by_piston=1, destroy_by_lava_flow=1, deco_block=1},
sounds = mcl_sounds.node_sound_leaves_defaults(),
on_construct = function(pos)
local meta = minetest.get_meta(pos)
@ -161,12 +204,19 @@ end
---------------------
register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png")
register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png")
register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png")
register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png")
register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png")
register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png")
register_tree_trunk("tree", S("Oak Wood"), S("Oak Bark"), S("The trunk of an oak tree."), "default_tree_top.png", "default_tree.png", "mcl_core:stripped_oak")
register_tree_trunk("darktree", S("Dark Oak Wood"), S("Dark Oak Bark"), S("The trunk of a dark oak tree."), "mcl_core_log_big_oak_top.png", "mcl_core_log_big_oak.png", "mcl_core:stripped_dark_oak")
register_tree_trunk("acaciatree", S("Acacia Wood"), S("Acacia Bark"), S("The trunk of an acacia."), "default_acacia_tree_top.png", "default_acacia_tree.png", "mcl_core:stripped_acacia")
register_tree_trunk("sprucetree", S("Spruce Wood"), S("Spruce Bark"), S("The trunk of a spruce tree."), "mcl_core_log_spruce_top.png", "mcl_core_log_spruce.png", "mcl_core:stripped_spruce")
register_tree_trunk("birchtree", S("Birch Wood"), S("Birch Bark"), S("The trunk of a birch tree."), "mcl_core_log_birch_top.png", "mcl_core_log_birch.png", "mcl_core:stripped_birch")
register_tree_trunk("jungletree", S("Jungle Wood"), S("Jungle Bark"), S("The trunk of a jungle tree."), "default_jungletree_top.png", "default_jungletree.png", "mcl_core:stripped_jungle")
register_stripped_trunk("stripped_oak", S("Stripped Oak Log"), S("Stripped Oak Wood"), S("The stripped trunk of an oak tree."), S("The stripped wood of an oak tree."), "mcl_core_stripped_oak_top.png", "mcl_core_stripped_oak_side.png")
register_stripped_trunk("stripped_acacia", S("Stripped Acacia Log"), S("Stripped Acacia Wood"), S("The stripped trunk of an acacia tree."), S("The stripped wood of an acacia tree."), "mcl_core_stripped_acacia_top.png", "mcl_core_stripped_acacia_side.png")
register_stripped_trunk("stripped_dark_oak", S("Stripped Dark Oak Log"), S("Stripped Dark Oak Wood"), S("The stripped trunk of a dark oak tree."), S("The stripped wood of a dark oak tree."), "mcl_core_stripped_dark_oak_top.png", "mcl_core_stripped_dark_oak_side.png")
register_stripped_trunk("stripped_birch", S("Stripped Birch Log"), S("Stripped Birch Wood"), S("The stripped trunk of a birch tree."), S("The stripped wood of a birch tree."), "mcl_core_stripped_birch_top.png", "mcl_core_stripped_birch_side.png")
register_stripped_trunk("stripped_spruce", S("Stripped Spruce Log"), S("Stripped Spruce Wood"), S("The stripped trunk of a spruce tree."), S("The stripped wood of a spruce tree."), "mcl_core_stripped_spruce_top.png", "mcl_core_stripped_spruce_side.png")
register_stripped_trunk("stripped_jungle", S("Stripped Jungle Log"), S("Stripped Jungle Wood"), S("The stripped trunk of a jungle tree."), S("The stripped wood of a jungle tree."),"mcl_core_stripped_jungle_top.png", "mcl_core_stripped_jungle_side.png")
register_wooden_planks("wood", S("Oak Wood Planks"), {"default_wood.png"})
register_wooden_planks("darkwood", S("Dark Oak Wood Planks"), {"mcl_core_planks_big_oak.png"})
@ -214,4 +264,4 @@ register_leaves("birchleaves", S("Birch Leaves"), S("Birch leaves are grown from
-- Node aliases
minetest.register_alias("default:acacia_tree", "mcl_core:acaciatree")
minetest.register_alias("default:acacia_leaves", "mcl_core:acacialeaves")
minetest.register_alias("default:acacia_leaves", "mcl_core:acacialeaves")

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 611 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 681 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 695 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 650 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 637 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 729 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 733 B

View File

@ -97,4 +97,12 @@ The target item is not enchantable.=Der Zielgegenstand ist nicht verzauberbar.
'@1' is not a valid number.='@1' ist keine gültige Zahl.
Enchanted Book=Verzaubertes Buch
Enchanting Table=Zaubertisch
Spend experience, and lapis to enchant various items.=Verbrauche Erfahrung und Lapislazuli, um verschiedene Gegenstände zu verzaubern.
Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=Mit Zaubertischen kannst Du Rüstungen, Werkzeuge, Waffen und Bücher mit verschiedenen Fähigkeiten verzaubern. Das kostet aber Erfahrung und Lapislazuli.
Rightclick the Enchanting Table to open the enchanting menu.=Rechtsklick auf den Zaubertisch öffnet das Verzaubern-Menü
Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Platziere ein Werkzeug, eine Waffe oder ein Buch im oberen linken Slot und platziere dann 1-3 Lapislazuli im rechten Slot.
After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=Nachdem Du Deine Gegenstände in den Slots platziert hast, werden die Verzauberungs-Optionen angezeigt. Fahre mit der Maus über die Optionen, um die angebotenen Verzauberungen zu sehen.
These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Die Auswahl wird zufällig generiert und hängt von Deinem Erfahrungslevel ab; Du kannst die Stärker der Verzauberung aber erhöhen.
To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Um die Stärker der Verzauberung zu erhöhen, platziere Bücherregale um den Zaubertisch. Damit die Verstärkung funktioniert, muss zwischen Tisch und Bücherregalen aber ein Block Freiraum sein.
After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=Nachdem Du Deine Verzauberung ausgewählt hast, klicke links auf die Auswahl. Nun werden Lapislazuli und Erfahrung verbraucht und durch einen verzauberten Gegenstand ersetzt.
Enchant=Verzaubern

View File

@ -1,4 +1,5 @@
# textdomain: mcl_enchanting
# Disclaimer: Some of these texts were machine-translated and should be reviewed by someone competent
Aqua Affinity=Affinité aquatique
Increases underwater mining speed.=Augmente la vitesse de minage sous-marine.
Bane of Arthropods=Fléau des arthropodes
@ -76,8 +77,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w
Unbreaking=Solidité
Increases item durability.=Augmente la durabilité des objets.
Inventory=Inventaire
@1 × Lapis Lazuli=@1 × Lapis Lazuli
Enchantment levels: @1=Niveaux d'enchantement: @1
@1 Lapis Lazuli=@1 Lapis Lazuli
@1 Enchantment Levels=Niveaux d'enchantement: @1
Level requirement: @1=Niveau requis: @1
Enchant an item=Enchanter un objet
<player> <enchantment> [<level>]=<joueur> <enchantement> [<niveau>]
@ -97,4 +98,12 @@ The target item is not enchantable.=L'objet cible n'est pas enchantable.
'@1' is not a valid number.='@1' n'est pas un nombre valide.
Enchanted Book=Livre enchanté
Enchanting Table=Table d'enchantement
Spend experience, and lapis to enchant various items.=Dépensez de l'expérience et du lapis pour enchanter divers objets.
Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=Les tables d'enchantement vous permettront d'enchanter des armures, des outils, des armes et des livres avec diverses capacités. Mais, au prix d'un peu d'expérience, et de lapis-lazuli.
Rightclick the Enchanting Table to open the enchanting menu.=Faites un clic droit sur la table d'enchantement pour ouvrir le menu d'enchantement.
Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Placez un outil, une armure, une arme ou un livre dans la fente supérieure gauche, puis placez 1-3 Lapis Lazuli dans la fente de droite.
After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=Après avoir placé vos objets dans les emplacements, les options d'enchantement s'afficheront. Passez la souris sur les options pour lire ce qui est disponible pour vous.
These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Ces options sont aléatoires et dépendent du niveau d'expérience, mais la force de l'enchantement peut être augmentée.
To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Pour augmenter la puissance de l'enchantement, placez des étagères autour de la table d'enchantement. Cependant, vous devrez garder un nœud aérien entre la table et les étagères pour renforcer la table d'enchantement.
After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=Après avoir finalement sélectionné votre enchantement, cliquez avec le bouton gauche de la souris sur la sélection, et vous verrez le lapis-lazuli et vos niveaux d'expérience consommés. Et, un objet enchanté laissé à sa place.
Enchant=Enchantement

View File

@ -1,4 +1,5 @@
# textdomain: mcl_enchanting
# Disclaimer: Some of these texts were machine-translated and should be reviewed by someone competent
Aqua Affinity=Родство с водой
Increases underwater mining speed.=Увеличивает скорость добычи под водой.
Bane of Arthropods=Бич членистоногих
@ -76,8 +77,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w
Unbreaking=Нерушимость
Increases item durability.=Увеличивает прочность предмета.
Inventory=Инвентарь
@1 × Lapis Lazuli=@1 × Ляпис-лазурь
Enchantment levels: @1=Уровень зачаровывания: @1
@1 Lapis Lazuli=@1 Ляпис-лазурь
@1 Enchantment Levels=@1 Уровень зачаровывания
Level requirement: @1=Требуемый уровень: @1
Enchant an item=Зачаровать предмет
<player> <enchantment> [<level>]=<игрок> <зачарование> [<уровень>]
@ -97,4 +98,18 @@ The target item is not enchantable.=Указана незачаровываем
'@1' is not a valid number.='@1' не является допустимым числом.
Enchanted Book=Зачарованная книга
Enchanting Table=Стол зачаровывания
Spend experience, and lapis to enchant various items.=Проведите время, и ляпис, чтобы очаровать различные предметы.
Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=Волшебные столы позволят вам очаровать доспехами, инструментами, оружием и книгами с различными способностями. Но, ценой некоторого опыта, и ляпис-лазурь.
Rightclick the Enchanting Table to open the enchanting menu.=Щелкните правой кнопкой мыши Зачаровывающий стол, чтобы открыть зачаровывающее меню.
Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=Поместите инструмент, броню, оружие или книгу в верхний левый паз, а затем поместите 1-3 лазурита в паз справа.
After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=После размещения Ваших элементов в слотах, будут показаны волшебные опции. Наведите курсор на опции, чтобы прочитать, что доступно для вас.
These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=Эти варианты рандомизированы и зависят от уровня опыта; но сила очарования может быть увеличена.
To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=Чтобы увеличить силу очарования, разместите книжные полки вокруг очаровательного стола. Однако, вам нужно будет держать 1 воздушный узел между столом и книжными полками, чтобы придать силу очаровательному столу.
After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=После того, как вы, наконец, выбрали свое очарование; щелкните левой кнопкой мыши по выбору, и вы увидите, как лазурь ляпис и ваш уровень опыта потребляется. И очарованная вещь, оставленная на своем месте.
Enchant=Зачарование
##### not used anymore #####
@1 × Lapis Lazuli=@1 × Ляпис-лазурь
Enchantment levels: @1=Уровень зачаровывания: @1

View File

@ -76,8 +76,8 @@ Reflects some of the damage taken when hit, at the cost of reducing durability w
Unbreaking=
Increases item durability.=
Inventory=
@1 × Lapis Lazuli=
Enchantment levels: @1=
@1 Lapis Lazuli=
@1 Enchantment Levels=
Level requirement: @1=
Enchant an item=
<player> <enchantment> [<level>]=
@ -97,4 +97,12 @@ The target item is not enchantable.=
'@1' is not a valid number.=
Enchanted Book=
Enchanting Table=
Spend experience, and lapis to enchant various items.=
Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli.=
Rightclick the Enchanting Table to open the enchanting menu.=
Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.=
After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.=
These options are randomized, and dependent on experience level; but the enchantment strength can be increased.=
To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.=
After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place.=
Enchant=

View File

@ -98,14 +98,15 @@ minetest.register_node("mcl_farming:beetroot", {
drawtype = "plantlike",
drop = {
--[[ drops 1 beetroot guaranteed.
drops 0-3 beetroot seeds:
0 seeds: 42.18%
1 seed: 14.06%
2 seeds: 18.75%
3 seeds: 25% ]]
max_items = 2,
drops 1-4 beetroot seeds:
1 seed: 42.18%
2 seeds: 14.06%
3 seeds: 18.75%
4 seeds: 25% ]]
max_items = 3,
items = {
{ items = {"mcl_farming:beetroot_item"}, rarity = 1 },
{ items = {"mcl_farming:beetroot_seeds 1"}, rarity = 1 },
{ items = {"mcl_farming:beetroot_seeds 3"}, rarity = 4 },
{ items = {"mcl_farming:beetroot_seeds 2"}, rarity = 4 },
{ items = {"mcl_farming:beetroot_seeds 1"}, rarity = 4 },

View File

@ -0,0 +1,18 @@
# mcl_jukebox
## mcl_jukebox.register_record(title, author, identifier, image, sound)
* title: title of the track
* author: author of the track
* identifier: short string used in the item registration
* image: the texture of the track
* sound: sound file of the track
## mcl_jukebox.registered_records
Table indexed by item name containing:
* title: title of the track
* author: author of the track
* identifier: short string used in the item registration
* image: the texture of the track
* sound: sound file of the track

View File

@ -1,5 +1,8 @@
local S = minetest.get_translator("mcl_jukebox")
mcl_jukebox = {}
mcl_jukebox.registered_records = {}
-- Player name-indexed table containing the currently heard track
local active_tracks = {}
@ -10,47 +13,30 @@ local active_huds = {}
-- Used to make sure that minetest.after only applies to the latest HUD change event
local hud_sequence_numbers = {}
-- List of music
local recorddata = {
-- { title, author, identifier }
{ "The Evil Sister (Jordach's Mix)", "SoundHelix", "13" } ,
{ "The Energetic Rat (Jordach's Mix)", "SoundHelix", "wait" },
{ "Eastern Feeling", "Jordach", "blocks"},
{ "Minetest", "Jordach", "far" },
{ "Credit Roll (Jordach's HD Mix)", "Junichi Masuda", "chirp" },
{ "Winter Feeling", "Tom Peter", "strad" },
{ "Synthgroove (Jordach's Mix)", "HeroOfTheWinds", "mellohi" },
{ "The Clueless Frog (Jordach's Mix)", "SoundHelix", "mall" },
}
local records = #recorddata
for r=1, records do
local doc = false
local entryname, longdesc, usagehelp
if r == 1 then
doc = true
entryname = S("Music Disc")
longdesc = S("A music disc holds a single music track which can be used in a jukebox to play music.")
usagehelp = S("Place a music disc into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.")
end
minetest.register_craftitem("mcl_jukebox:record_"..r, {
function mcl_jukebox.register_record(title, author, identifier, image, sound)
mcl_jukebox.registered_records["mcl_jukebox:record_"..identifier] = {title, author, identifier, image, sound}
local entryname = S("Music Disc")
local longdesc = S("A music disc holds a single music track which can be used in a jukebox to play music.")
local usagehelp = S("Place a music disc into an empty jukebox to play the music. Use the jukebox again to retrieve the music disc. The music can only be heard by you, not by other players.")
minetest.register_craftitem(":mcl_jukebox:record_"..identifier, {
description =
core.colorize("#55FFFF", S("Music Disc")) .. "\n" ..
core.colorize("#989898", S("@1—@2", recorddata[r][2], recorddata[r][1])),
_doc_items_create_entry = doc,
core.colorize("#989898", S("@1—@2", author, title)),
_doc_items_create_entry = true,
_doc_items_entry_name = entryname,
_doc_items_longdesc = longdesc,
_doc_items_usagehelp = usagehelp,
inventory_image = "mcl_jukebox_record_"..recorddata[r][3]..".png",
--inventory_image = "mcl_jukebox_record_"..recorddata[r][3]..".png",
inventory_image = image,
stack_max = 1,
groups = { music_record = r },
groups = { music_record = 1 },
})
end
local function now_playing(player, track_id)
local function now_playing(player, name)
local playername = player:get_player_name()
local hud = active_huds[playername]
local text = S("Now playing: @1—@2", recorddata[track_id][2], recorddata[track_id][1])
local text = S("Now playing: @1—@2", mcl_jukebox.registered_records[name][2], mcl_jukebox.registered_records[name][1])
if not hud_sequence_numbers[playername] then
hud_sequence_numbers[playername] = 1
@ -106,18 +92,20 @@ minetest.register_craft({
})
local play_record = function(pos, itemstack, player)
local record_id = minetest.get_item_group(itemstack:get_name(), "music_record")
if record_id ~= 0 then
local item_name = itemstack:get_name()
-- ensure the jukebox uses the new record names for old records
local name = minetest.registered_aliases[item_name] or item_name
if mcl_jukebox.registered_records[name] then
local cname = player:get_player_name()
if active_tracks[cname] ~= nil then
minetest.sound_stop(active_tracks[cname])
active_tracks[cname] = nil
end
active_tracks[cname] = minetest.sound_play("mcl_jukebox_track_"..record_id, {
active_tracks[cname] = minetest.sound_play(mcl_jukebox.registered_records[name][5], {
to_player = cname,
gain = 1,
})
now_playing(player, record_id)
now_playing(player, name)
return true
end
return false
@ -239,3 +227,22 @@ minetest.register_craft({
recipe = "mcl_jukebox:jukebox",
burntime = 15,
})
mcl_jukebox.register_record("The Evil Sister (Jordach's Mix)", "SoundHelix", "13", "mcl_jukebox_record_13.png", "mcl_jukebox_track_1")
mcl_jukebox.register_record("The Energetic Rat (Jordach's Mix)", "SoundHelix", "wait", "mcl_jukebox_record_wait.png", "mcl_jukebox_track_2")
mcl_jukebox.register_record("Eastern Feeling", "Jordach", "blocks", "mcl_jukebox_record_blocks.png", "mcl_jukebox_track_3")
mcl_jukebox.register_record("Minetest", "Jordach", "far", "mcl_jukebox_record_far.png", "mcl_jukebox_track_4")
mcl_jukebox.register_record("Credit Roll (Jordach's HD Mix)", "Junichi Masuda", "chirp", "mcl_jukebox_record_chirp.png", "mcl_jukebox_track_5")
mcl_jukebox.register_record("Winter Feeling", "Tom Peter", "strad", "mcl_jukebox_record_strad.png", "mcl_jukebox_track_6")
mcl_jukebox.register_record("Synthgroove (Jordach's Mix)", "HeroOfTheWinds", "mellohi", "mcl_jukebox_record_mellohi.png", "mcl_jukebox_track_7")
mcl_jukebox.register_record("The Clueless Frog (Jordach's Mix)", "SoundHelix", "mall", "mcl_jukebox_record_mall.png", "mcl_jukebox_track_8")
--add backward compatibility
minetest.register_alias("mcl_jukebox:record_1", "mcl_jukebox:record_13")
minetest.register_alias("mcl_jukebox:record_2", "mcl_jukebox:record_wait")
minetest.register_alias("mcl_jukebox:record_3", "mcl_jukebox:record_blocks")
minetest.register_alias("mcl_jukebox:record_4", "mcl_jukebox:record_far")
minetest.register_alias("mcl_jukebox:record_5", "mcl_jukebox:record_chirp")
minetest.register_alias("mcl_jukebox:record_6", "mcl_jukebox:record_strad")
minetest.register_alias("mcl_jukebox:record_7", "mcl_jukebox:record_mellohi")
minetest.register_alias("mcl_jukebox:record_8", "mcl_jukebox:record_mall")

View File

@ -351,6 +351,34 @@ minetest.register_tool("mcl_tools:shovel_diamond", {
})
-- Axes
local function make_stripped_trunk(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then return end
local node = minetest.get_node(pointed_thing.under)
local noddef = minetest.registered_nodes[minetest.get_node(pointed_thing.under).name]
if not placer:get_player_control().sneak and noddef.on_rightclick then
return minetest.item_place(itemstack, placer, pointed_thing)
end
if minetest.is_protected(pointed_thing.under, placer:get_player_name()) then
minetest.record_protection_violation(pointed_thing.under, placer:get_player_name())
return itemstack
end
if noddef._mcl_stripped_variant == nil then
return itemstack
else
minetest.swap_node(pointed_thing.under, {name=noddef._mcl_stripped_variant, param2=node.param2})
if not minetest.is_creative_enabled(placer:get_player_name()) then
-- Add wear (as if digging a axey node)
local toolname = itemstack:get_name()
local wear = mcl_autogroup.get_wear(toolname, "axey")
itemstack:add_wear(wear)
end
end
return itemstack
end
minetest.register_tool("mcl_tools:axe_wood", {
description = S("Wooden Axe"),
_doc_items_longdesc = axe_longdesc,
@ -364,6 +392,7 @@ minetest.register_tool("mcl_tools:axe_wood", {
damage_groups = {fleshy=7},
punch_attack_uses = 30,
},
on_place = make_stripped_trunk,
sound = { breaks = "default_tool_breaks" },
_repair_material = "group:wood",
_mcl_toollike_wield = true,
@ -383,6 +412,7 @@ minetest.register_tool("mcl_tools:axe_stone", {
damage_groups = {fleshy=9},
punch_attack_uses = 66,
},
on_place = make_stripped_trunk,
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:cobble",
_mcl_toollike_wield = true,
@ -403,6 +433,7 @@ minetest.register_tool("mcl_tools:axe_iron", {
damage_groups = {fleshy=9},
punch_attack_uses = 126,
},
on_place = make_stripped_trunk,
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:iron_ingot",
_mcl_toollike_wield = true,
@ -422,6 +453,7 @@ minetest.register_tool("mcl_tools:axe_gold", {
damage_groups = {fleshy=7},
punch_attack_uses = 17,
},
on_place = make_stripped_trunk,
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:gold_ingot",
_mcl_toollike_wield = true,
@ -441,6 +473,7 @@ minetest.register_tool("mcl_tools:axe_diamond", {
damage_groups = {fleshy=9},
punch_attack_uses = 781,
},
on_place = make_stripped_trunk,
sound = { breaks = "default_tool_breaks" },
_repair_material = "mcl_core:diamond",
_mcl_toollike_wield = true,

View File

@ -176,7 +176,7 @@ minetest.register_tool("screwdriver:screwdriver", {
description = S("Screwdriver"),
inventory_image = "screwdriver.png",
wield_image = "screwdriver.png^[transformFX",
groups = { tool = 1, not_in_creative_inventory = 1 },
groups = { tool = 1 },
on_use = function(itemstack, user, pointed_thing)
screwdriver.handler(itemstack, user, pointed_thing, screwdriver.ROTATE_FACE, 200)
return itemstack

View File

@ -45,15 +45,19 @@ local function setSprinting(playerName, sprinting) --Sets the state of a player
local player = minetest.get_player_by_name(playerName)
if players[playerName] then
players[playerName].sprinting = sprinting
local fov_old = players[playerName].fov
local fov_new
if sprinting == true then
players[playerName].fov = math.min(players[playerName].fov + 0.05, 1.2)
player:set_fov(players[playerName].fov, true, 0.15)
fov_new = math.min(players[playerName].fov + 0.05, 1.2)
playerphysics.add_physics_factor(player, "speed", "mcl_sprint:sprint", mcl_sprint.SPEED)
elseif sprinting == false then
players[playerName].fov = math.max(players[playerName].fov - 0.05, 1.0)
player:set_fov(players[playerName].fov, true, 0.15)
fov_new = math.max(players[playerName].fov - 0.05, 1.0)
playerphysics.remove_physics_factor(player, "speed", "mcl_sprint:sprint")
end
if fov_new ~= fov_old then
players[playerName].fov = fov_new
player:set_fov(fov_new, true, 0.15)
end
return true
end
return false