Merge branch 'master' into csm-enabled

This commit is contained in:
iliekprogrammar 2022-12-31 05:52:22 +00:00
commit 08e2daefb9
425 changed files with 6423 additions and 1010 deletions

12
.editorconfig Normal file
View File

@ -0,0 +1,12 @@
root = true
[*]
end_of_line = lf
[*.lua]
charset = utf8
indent_style = tab
insert_final_newline = true
trim_trailing_whitespace = true
keep_one_space_between_table_and_bracket = false
spaces_around_operators = true

View File

@ -60,7 +60,7 @@ representative at an online or offline event.
Instances of abusive, harassing, or otherwise unacceptable behavior may be Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at reported to the community leaders responsible for enforcement at
eliasfleckenstein@web.de. ancientmariner_dev@proton.me.
All complaints will be reviewed and investigated promptly and fairly. All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the All community leaders are obligated to respect the privacy and security of the

View File

@ -8,12 +8,13 @@
## Maintainers ## Maintainers
* AncientMariner
* Nicu * Nicu
* cora
## Previous Maintainers ## Previous Maintainers
* Fleckenstein * Fleckenstein
* jordan4ibanez * jordan4ibanez
* cora
## Developers ## Developers
* bzoss * bzoss
@ -35,7 +36,6 @@
* MrRar * MrRar
* talamh * talamh
* Faerraven * Faerraven
* AncientMariner
## Contributors ## Contributors
* Laurent Rocher * Laurent Rocher
@ -95,6 +95,7 @@
* anarquimico * anarquimico
* TheOnlyJoeEnderman * TheOnlyJoeEnderman
* Ranko Saotome * Ranko Saotome
* Gregor Parzefall
## MineClone5 ## MineClone5
* kay27 * kay27
@ -178,6 +179,7 @@
* Emojigit * Emojigit
* snowyu * snowyu
* 3raven * 3raven
* SakuraRiu
## Funders ## Funders
* 40W * 40W
@ -188,3 +190,4 @@
* wsor for working tirelessly in the shadows for the good of all of us, particularly helping with solving contentDB and copyright issues. * wsor for working tirelessly in the shadows for the good of all of us, particularly helping with solving contentDB and copyright issues.
* The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game * The workaholics who spent way too much time writing for the Minecraft Wiki. It's an invaluable resource for creating this game
* Notch and Jeb for being the major forces behind Minecraft * Notch and Jeb for being the major forces behind Minecraft
* Dark Reaven Music (https://soundcloud.com/dark-reaven-music) for the main menu theme (Calmed Cube), which is licensed under https://creativecommons.org/licenses/by-sa/3.0/

View File

@ -74,6 +74,8 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
* `coral_species=X`: Specifies the species of a coral; equal X means equal species * `coral_species=X`: Specifies the species of a coral; equal X means equal species
* `set_on_fire=X`: Sets any (not fire-resistant) mob or player on fire for X seconds when touching * `set_on_fire=X`: Sets any (not fire-resistant) mob or player on fire for X seconds when touching
* `compostability=X`: Item can be used on a composter block; X (1-100) is the % chance of adding a level of compost * `compostability=X`: Item can be used on a composter block; X (1-100) is the % chance of adding a level of compost
* `leaves=X`: Node will spotaneously decay if no tree trunk nodes remain within 6 blocks distance.
* `leaves_orphan`: See above, these nodes are in the process of decayed.
#### Footnotes #### Footnotes

19
RELEASE.md Normal file
View File

@ -0,0 +1,19 @@
#File to document release steps with a view to evolving into a script
#Update CREDITS.md
#Update version in README.md (soon to be game.conf from of 0.82.0)
lua tools/generate_ingame_credits.lua
git add CREDITS.md
git add mods/HUD/mcl_credits/people.lua
git add README.md
# To uncomment when applicable
#git add game.conf
git commit -m "Pre-release update credits and set version 0.81.1"
git tag 0.81.1
git push origin 0.81.1

BIN
menu/HeaderTemplate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 83 KiB

BIN
menu/background.1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
menu/background.10.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 990 KiB

BIN
menu/background.2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
menu/background.3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.1 MiB

BIN
menu/background.4.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 MiB

BIN
menu/background.5.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.3 MiB

BIN
menu/background.6.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 MiB

BIN
menu/background.7.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.0 MiB

BIN
menu/background.8.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 865 KiB

BIN
menu/background.9.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 916 KiB

BIN
menu/background.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 606 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 628 B

After

Width:  |  Height:  |  Size: 1.4 KiB

BIN
menu/header.1.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

BIN
menu/header.2.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 KiB

BIN
menu/header.3.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 76 KiB

After

Width:  |  Height:  |  Size: 82 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 68 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 119 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 121 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 118 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 122 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 91 KiB

BIN
menu/theme.ogg Normal file

Binary file not shown.

View File

@ -102,6 +102,7 @@ function check_events(dtime)
for _,e in pairs(mcl_events.registered_events) do for _,e in pairs(mcl_events.registered_events) do
local pp = e.cond_start() local pp = e.cond_start()
if pp then if pp then
--minetest.log("It's gonna start the raid maybe")
for _,p in pairs(pp) do for _,p in pairs(pp) do
local start = true local start = true
if e.exclusive_to_area then if e.exclusive_to_area then
@ -110,11 +111,14 @@ function check_events(dtime)
end end
end end
if start then if start then
--minetest.log("It's gonna start the raid definitely")
start_event(p,e) start_event(p,e)
elseif DBG then elseif DBG then
mcl_log("[mcl_events] Event "..e.readable_name.." already active at "..minetest.pos_to_string(vector.round(p.pos))) mcl_log("[mcl_events] Event "..e.readable_name.." already active at "..minetest.pos_to_string(vector.round(p.pos)))
end end
end end
else
--minetest.log("Do not start this raid")
end end
end end
for idx,ae in pairs(active_events) do for idx,ae in pairs(active_events) do

View File

@ -0,0 +1,2 @@
# textdomain:mcl_explosions
@1 was caught in an explosion.=@1は爆発に巻き込まれた。

View File

@ -3,26 +3,26 @@ mcl_vars = {}
mcl_vars.redstone_tick = 0.1 mcl_vars.redstone_tick = 0.1
--- GUI / inventory menu settings -- GUI / inventory menu settings
mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]" mcl_vars.gui_slots = "listcolors[#9990;#FFF7;#FFF0;#000;#FFF]"
-- nonbg is added as formspec prepend in mcl_formspec_prepend -- nonbg is added as formspec prepend in mcl_formspec_prepend
mcl_vars.gui_nonbg = mcl_vars.gui_slots .. mcl_vars.gui_nonbg = table.concat({
"style_type[image_button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]".. mcl_vars.gui_slots,
"style_type[button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]".. "style_type[image_button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]",
"style_type[field;textcolor=#323232]".. "style_type[button;border=false;bgimg=mcl_inventory_button9.png;bgimg_pressed=mcl_inventory_button9_pressed.png;bgimg_middle=2,2]",
"style_type[label;textcolor=#323232]".. "style_type[field;textcolor=#323232]",
"style_type[textarea;textcolor=#323232]".. "style_type[label;textcolor=#323232]",
"style_type[checkbox;textcolor=#323232]" "style_type[textarea;textcolor=#323232]",
"style_type[checkbox;textcolor=#323232]",
})
-- Background stuff must be manually added by mods (no formspec prepend) -- Background stuff must be manually added by mods (no formspec prepend)
mcl_vars.gui_bg_color = "bgcolor[#00000000]" mcl_vars.gui_bg_color = "bgcolor[#00000000]"
mcl_vars.gui_bg_img = "background9[1,1;1,1;mcl_base_textures_background9.png;true;7]" mcl_vars.gui_bg_img = "background9[1,1;1,1;mcl_base_textures_background9.png;true;7]"
-- Legacy
mcl_vars.inventory_header = ""
-- Tool wield size -- Tool wield size
mcl_vars.tool_wield_scale = { x = 1.8, y = 1.8, z = 1 } mcl_vars.tool_wield_scale = vector.new(1.8, 1.8, 1)
-- Mapgen variables -- Mapgen variables
local mg_name = minetest.get_mapgen_setting("mg_name") local mg_name = minetest.get_mapgen_setting("mg_name")
@ -35,55 +35,69 @@ mcl_vars.chunksize = math.max(1, tonumber(minetest.get_mapgen_setting("chunksize
mcl_vars.MAP_BLOCKSIZE = math.max(1, minetest.MAP_BLOCKSIZE or 16) mcl_vars.MAP_BLOCKSIZE = math.max(1, minetest.MAP_BLOCKSIZE or 16)
mcl_vars.mapgen_limit = math.max(1, tonumber(minetest.get_mapgen_setting("mapgen_limit")) or 31000) mcl_vars.mapgen_limit = math.max(1, tonumber(minetest.get_mapgen_setting("mapgen_limit")) or 31000)
mcl_vars.MAX_MAP_GENERATION_LIMIT = math.max(1, minetest.MAX_MAP_GENERATION_LIMIT or 31000) mcl_vars.MAX_MAP_GENERATION_LIMIT = math.max(1, minetest.MAX_MAP_GENERATION_LIMIT or 31000)
local central_chunk_offset = -math.floor(mcl_vars.chunksize / 2) local central_chunk_offset = -math.floor(mcl_vars.chunksize / 2)
mcl_vars.central_chunk_offset_in_nodes = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE mcl_vars.central_chunk_offset_in_nodes = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE
mcl_vars.chunk_size_in_nodes = mcl_vars.chunksize * mcl_vars.MAP_BLOCKSIZE mcl_vars.chunk_size_in_nodes = mcl_vars.chunksize * mcl_vars.MAP_BLOCKSIZE
local central_chunk_min_pos = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE local central_chunk_min_pos = central_chunk_offset * mcl_vars.MAP_BLOCKSIZE
local central_chunk_max_pos = central_chunk_min_pos + mcl_vars.chunk_size_in_nodes - 1 local central_chunk_max_pos = central_chunk_min_pos + mcl_vars.chunk_size_in_nodes - 1
local ccfmin = central_chunk_min_pos - mcl_vars.MAP_BLOCKSIZE -- Fullminp/fullmaxp of central chunk, in nodes local ccfmin = central_chunk_min_pos - mcl_vars.MAP_BLOCKSIZE -- Fullminp/fullmaxp of central chunk, in nodes
local ccfmax = central_chunk_max_pos + mcl_vars.MAP_BLOCKSIZE local ccfmax = central_chunk_max_pos + mcl_vars.MAP_BLOCKSIZE
local mapgen_limit_b = math.floor(math.min(mcl_vars.mapgen_limit, mcl_vars.MAX_MAP_GENERATION_LIMIT) / mcl_vars.MAP_BLOCKSIZE) local mapgen_limit_b = math.floor(math.min(mcl_vars.mapgen_limit, mcl_vars.MAX_MAP_GENERATION_LIMIT) /
mcl_vars.MAP_BLOCKSIZE)
local mapgen_limit_min = -mapgen_limit_b * mcl_vars.MAP_BLOCKSIZE local mapgen_limit_min = -mapgen_limit_b * mcl_vars.MAP_BLOCKSIZE
local mapgen_limit_max = (mapgen_limit_b + 1) * mcl_vars.MAP_BLOCKSIZE - 1 local mapgen_limit_max = (mapgen_limit_b + 1) * mcl_vars.MAP_BLOCKSIZE - 1
local numcmin = math.max(math.floor((ccfmin - mapgen_limit_min) / mcl_vars.chunk_size_in_nodes), 0) -- Number of complete chunks from central chunk local numcmin = math.max(math.floor((ccfmin - mapgen_limit_min) / mcl_vars.chunk_size_in_nodes), 0) -- Number of complete chunks from central chunk
local numcmax = math.max(math.floor((mapgen_limit_max - ccfmax) / mcl_vars.chunk_size_in_nodes), 0) -- fullminp/fullmaxp to effective mapgen limits. local numcmax = math.max(math.floor((mapgen_limit_max - ccfmax) / mcl_vars.chunk_size_in_nodes), 0) -- fullminp/fullmaxp to effective mapgen limits.
mcl_vars.mapgen_edge_min = central_chunk_min_pos - numcmin * mcl_vars.chunk_size_in_nodes mcl_vars.mapgen_edge_min = central_chunk_min_pos - numcmin * mcl_vars.chunk_size_in_nodes
mcl_vars.mapgen_edge_max = central_chunk_max_pos + numcmax * mcl_vars.chunk_size_in_nodes mcl_vars.mapgen_edge_max = central_chunk_max_pos + numcmax * mcl_vars.chunk_size_in_nodes
---@param x integer
---@return integer
local function coordinate_to_block(x) local function coordinate_to_block(x)
return math.floor(x / mcl_vars.MAP_BLOCKSIZE) return math.floor(x / mcl_vars.MAP_BLOCKSIZE)
end end
---@param x integer
---@return integer
local function coordinate_to_chunk(x) local function coordinate_to_chunk(x)
return math.floor((coordinate_to_block(x) - central_chunk_offset) / mcl_vars.chunksize) return math.floor((coordinate_to_block(x) - central_chunk_offset) / mcl_vars.chunksize)
end end
---@param pos Vector
---@return Vector
function mcl_vars.pos_to_block(pos) function mcl_vars.pos_to_block(pos)
return { return vector.new(
x = coordinate_to_block(pos.x), coordinate_to_block(pos.x),
y = coordinate_to_block(pos.y), coordinate_to_block(pos.y),
z = coordinate_to_block(pos.z) coordinate_to_block(pos.z)
} )
end end
---@param pos Vector
---@return Vector
function mcl_vars.pos_to_chunk(pos) function mcl_vars.pos_to_chunk(pos)
return { return vector.new(
x = coordinate_to_chunk(pos.x), coordinate_to_chunk(pos.x),
y = coordinate_to_chunk(pos.y), coordinate_to_chunk(pos.y),
z = coordinate_to_chunk(pos.z) coordinate_to_chunk(pos.z)
} )
end end
local k_positive = math.ceil(mcl_vars.MAX_MAP_GENERATION_LIMIT / mcl_vars.chunk_size_in_nodes) local k_positive = math.ceil(mcl_vars.MAX_MAP_GENERATION_LIMIT / mcl_vars.chunk_size_in_nodes)
local k_positive_z = k_positive * 2 local k_positive_z = k_positive * 2
local k_positive_y = k_positive_z * k_positive_z local k_positive_y = k_positive_z * k_positive_z
---@param pos Vector
---@return integer
function mcl_vars.get_chunk_number(pos) -- unsigned int function mcl_vars.get_chunk_number(pos) -- unsigned int
local c = mcl_vars.pos_to_chunk(pos) local c = mcl_vars.pos_to_chunk(pos)
return return (c.y + k_positive) * k_positive_y +
(c.y + k_positive) * k_positive_y +
(c.z + k_positive) * k_positive_z + (c.z + k_positive) * k_positive_z +
c.x + k_positive c.x + k_positive
end end
if not superflat and not singlenode then if not superflat and not singlenode then
@ -117,11 +131,8 @@ elseif singlenode then
mcl_vars.mg_bedrock_is_rough = false mcl_vars.mg_bedrock_is_rough = false
else else
-- Classic superflat -- Classic superflat
local ground = minetest.get_mapgen_setting("mgflat_ground_level") local ground = tonumber(minetest.get_mapgen_setting("mgflat_ground_level")) or 8
ground = tonumber(ground)
if not ground then
ground = 8
end
mcl_vars.mg_overworld_min = ground - 3 mcl_vars.mg_overworld_min = ground - 3
mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit mcl_vars.mg_overworld_max_official = mcl_vars.mg_overworld_min + minecraft_height_limit
mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min mcl_vars.mg_bedrock_overworld_min = mcl_vars.mg_overworld_min
@ -181,14 +192,16 @@ minetest.craftitemdef_default.stack_max = 64
math.randomseed(os.time()) math.randomseed(os.time())
local chunks = {} -- intervals of chunks generated local chunks = {} -- intervals of chunks generated
---@param pos Vector
function mcl_vars.add_chunk(pos) function mcl_vars.add_chunk(pos)
local n = mcl_vars.get_chunk_number(pos) -- unsigned int local n = mcl_vars.get_chunk_number(pos) -- unsigned int
local prev local prev
for i, d in pairs(chunks) do for i, d in pairs(chunks) do
if n <= d[2] then -- we've found it if n <= d[2] then -- we've found it
if (n == d[2]) or (n >= d[1]) then return end -- already here if (n == d[2]) or (n >= d[1]) then return end -- already here
if n == d[1]-1 then -- right before: if n == d[1] - 1 then -- right before:
if prev and (prev[2] == n-1) then if prev and (prev[2] == n - 1) then
prev[2] = d[2] prev[2] = d[2]
table.remove(chunks, i) table.remove(chunks, i)
return return
@ -196,17 +209,20 @@ function mcl_vars.add_chunk(pos)
d[1] = n d[1] = n
return return
end end
if prev and (prev[2] == n-1) then --join to previous if prev and (prev[2] == n - 1) then --join to previous
prev[2] = n prev[2] = n
return return
end end
table.insert(chunks, i, {n, n}) -- insert new interval before i table.insert(chunks, i, { n, n }) -- insert new interval before i
return return
end end
prev = d prev = d
end end
chunks[#chunks+1] = {n, n} chunks[#chunks + 1] = { n, n }
end end
---@param pos Vector
---@return boolean
function mcl_vars.is_generated(pos) function mcl_vars.is_generated(pos)
local n = mcl_vars.get_chunk_number(pos) -- unsigned int local n = mcl_vars.get_chunk_number(pos) -- unsigned int
for i, d in pairs(chunks) do for i, d in pairs(chunks) do
@ -217,47 +233,46 @@ function mcl_vars.is_generated(pos)
return false return false
end end
-- "Trivial" (actually NOT) function to just read the node and some stuff to not just return "ignore", like mt 5.4 does. ---"Trivial" (actually NOT) function to just read the node and some stuff to not just return "ignore", like mt 5.4 does.
-- p: Position, if it's wrong, {name="error"} node will return. ---@param pos Vector Position, if it's wrong, `{name="error"}` node will return.
-- force: optional (default: false) - Do the maximum to still read the node within us_timeout. ---@param force? boolean Optional (default: `false`), Do the maximum to still read the node within us_timeout.
-- us_timeout: optional (default: 244 = 0.000244 s = 1/80/80/80), set it at least to 3000000 to let mapgen to finish its job. ---@param us_timeout? number Optional (default: `244 = 0.000244 s = 1/80/80/80`), set it at least to `3000000` to let mapgen to finish its job
-- ---@return node # Node definition, eg. `{name="air"}`. Unfortunately still can return `{name="ignore"}`.
-- returns node definition, eg. {name="air"}. Unfortunately still can return {name="ignore"}. ---@nodiscard
function mcl_vars.get_node(p, force, us_timeout) function mcl_vars.get_node(pos, force, us_timeout)
-- check initial circumstances -- check initial circumstances
if not p or not p.x or not p.y or not p.z then return {name="error"} end if not pos or not pos.x or not pos.y or not pos.z then return { name = "error" } end
-- try common way -- try common way
local node = minetest.get_node(p) local node = minetest.get_node(pos)
if node.name ~= "ignore" then if node.name ~= "ignore" then
return node return node
end end
-- copy table to get sure it won't changed by other threads -- copy vector to get sure it won't changed by other threads
local pos = {x=p.x,y=p.y,z=p.z} local pos_copy = vector.copy(pos)
-- try LVM -- try LVM
minetest.get_voxel_manip():read_from_map(pos, pos) minetest.get_voxel_manip():read_from_map(pos_copy, pos_copy)
node = minetest.get_node(pos) node = minetest.get_node(pos_copy)
if node.name ~= "ignore" or not force then if node.name ~= "ignore" or not force then
return node return node
end end
-- all ways failed - need to emerge (or forceload if generated) -- all ways failed - need to emerge (or forceload if generated)
local us_timeout = us_timeout or 244 if mcl_vars.is_generated(pos_copy) then
if mcl_vars.is_generated(pos) then
minetest.chat_send_all("IMPOSSIBLE! Please report this to MCL2 issue tracker!") minetest.chat_send_all("IMPOSSIBLE! Please report this to MCL2 issue tracker!")
minetest.forceload_block(pos) minetest.forceload_block(pos_copy)
else else
minetest.emerge_area(pos, pos) minetest.emerge_area(pos_copy, pos_copy)
end end
local t = minetest.get_us_time() local t = minetest.get_us_time()
node = minetest.get_node(pos) node = minetest.get_node(pos_copy)
while (not node or node.name == "ignore") and (minetest.get_us_time() - t < us_timeout) do while (not node or node.name == "ignore") and (minetest.get_us_time() - t < (us_timeout or 244)) do
node = minetest.get_node(pos) node = minetest.get_node(pos_copy)
end end
return node return node

View File

@ -11,42 +11,22 @@ Creative Commons Attribution 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by/3.0/ http://creativecommons.org/licenses/by/3.0/
Glass breaking sounds (CC BY 3.0): Glass breaking sounds (CC BY 3.0):
1: http://www.freesound.org/people/cmusounddesign/sounds/71947/ 1: http://www.freesound.org/people/cmusounddesign/sounds/71947/
2: http://www.freesound.org/people/Tomlija/sounds/97669/ 2: http://www.freesound.org/people/Tomlija/sounds/97669/
3: http://www.freesound.org/people/lsprice/sounds/88808/ 3: http://www.freesound.org/people/lsprice/sounds/88808/
default_tool_breaks.ogg by EdgardEdition (CC BY 3.0), http://www.freesound.org/people/EdgardEdition default_tool_breaks.ogg by EdgardEdition (CC BY 3.0), http://www.freesound.org/people/EdgardEdition
Mito551 (sounds) (CC BY-SA 3.0): Mito551 (sounds) (CC BY-SA 3.0):
default_dig_choppy.ogg default_dig_crumbly.ogg
default_dig_cracky.ogg
default_dig_crumbly.1.ogg
default_dig_crumbly.2.ogg
default_dig_oddly_breakable_by_hand.ogg default_dig_oddly_breakable_by_hand.ogg
default_dug_node.1.ogg default_dug_node.*.ogg
default_dug_node.2.ogg default_grass_footstep.*.ogg
default_grass_footstep.1.ogg default_gravel_footstep.*.ogg
default_grass_footstep.2.ogg default_place_node.*.ogg
default_grass_footstep.3.ogg default_place_node_hard.*.ogg
default_gravel_footstep.1.ogg default_wood_footstep.*.ogg
default_gravel_footstep.2.ogg default_dirt_footstep.*.ogg
default_gravel_footstep.3.ogg
default_gravel_footstep.4.ogg
default_grass_footstep.1.ogg
default_place_node.1.ogg
default_place_node.2.ogg
default_place_node.3.ogg
default_place_node_hard.1.ogg
default_place_node_hard.2.ogg
default_hard_footstep.1.ogg
default_hard_footstep.2.ogg
default_hard_footstep.3.ogg
default_sand_footstep.1.ogg
default_sand_footstep.2.ogg
default_wood_footstep.1.ogg
default_wood_footstep.2.ogg
default_dirt_footstep.1.ogg
default_dirt_footstep.2.ogg
default_glass_footstep.ogg default_glass_footstep.ogg
Metal sounds: Metal sounds:
@ -54,35 +34,64 @@ Metal sounds:
- https://www.freesound.org/people/yadronoff/sounds/320397/ - https://www.freesound.org/people/yadronoff/sounds/320397/
default_dug_metal.*.ogg - Iwan Gabovitch - qubodup - CC0 default_dug_metal.*.ogg - Iwan Gabovitch - qubodup - CC0
- http://opengameart.org/users/qubodup - http://opengameart.org/users/qubodup
default_metal_footstep.*.ogg - Ottomaani138 - CC0 default_metal_footstep.*.ogg - (CC0 1.0) - CC0 1.0
- https://www.freesound.org/people/Ottomaani138/sounds/232692/ - https://freesound.org/people/mypantsfelldown/sounds/398937/
default_place_node_metal.*.ogg - Ogrebane - CC0 default_place_node_metal.*.ogg - Ogrebane - CC0
- http://opengameart.org/content/wood-and-metal-sound-effects-volume-2 - http://opengameart.org/content/wood-and-metal-sound-effects-volume-2
AGFX (CC BY 3.0) AGFX (CC BY 3.0):
https://www.freesound.org/people/AGFX/packs/1253/ https://www.freesound.org/people/AGFX/packs/1253/
default_water_footstep.1.ogg default_water_footstep.*.ogg
default_water_footstep.2.ogg
default_water_footstep.3.ogg
(default_water_footstep.4.ogg is silent)
blukotek (CC0 1.0) blukotek (CC0 1.0):
https://www.freesound.org/people/blukotek/sounds/251660/ https://www.freesound.org/people/blukotek/sounds/251660/
default_dig_snappy.ogg default_dig_snappy.ogg
sonictechtonic (CC BY 3.0) sonictechtonic (CC BY 3.0):
https://www.freesound.org/people/sonictechtonic/sounds/241872/ https://www.freesound.org/people/sonictechtonic/sounds/241872/
player_damage.ogg player_damage.ogg
Voxelands project <http://www.voxelands.com/> (CC BY-SA 3.0) Sheyvan (CC0 1.0):
https://freesound.org/people/Sheyvan/sounds/476113/
default_dig_choppy.*.ogg
lolamadeus (CC0 1.0):
https://freesound.org/people/lolamadeus/sounds/179341/
default_gravel_dig.*.ogg
default_gravel_dug.*.ogg
Benboncan (CC BY 3.0):
https://freesound.org/people/Benboncan/sounds/71823/
default_dig_cracky.*.ogg
Erdie (CC BY 3.0):
https://freesound.org/people/Erdie/sounds/41579/
default_hard_footstep.*.ogg
worthahep88 (CC0 1.0):
https://freesound.org/people/worthahep88/sounds/319224/
default_sand_footstep.*.ogg
dheming (CC BY 3.0):
https://freesound.org/people/dheming/sounds/268023/
default_ice_dig.*.ogg
InspectorJ (CC BY 3.0):
https://freesound.org/people/InspectorJ/sounds/416967/
default_ice_footstep.*.ogg
Angel_Perez_Grandi (CC BY 3.0):
https://freesound.org/people/Angel_Perez_Grandi/sounds/49190/
default_ice_dug.ogg
Voxelands project <http://www.voxelands.com/> (CC BY-SA 3.0):
mcl_sounds_place_node_water.ogg mcl_sounds_place_node_water.ogg
mcl_sounds_dug_water.ogg mcl_sounds_dug_water.ogg
(Note: Artists from the Voxelands project include: sdzen, darkrose, sapier, (Note: Artists from the Voxelands project include: sdzen, darkrose, sapier,
Tom Peter, Telaron, juskiddink) Tom Peter, Telaron, juskiddink)
Michel Baradari <https://opengameart.org/content/lava-splash> (CC BY 3.0) Michel Baradari <https://opengameart.org/content/lava-splash> (CC BY 3.0):
default_place_node_lava.ogg default_place_node_lava.ogg
Adam_N (CC0 1.0): Adam_N (CC0 1.0):
@ -90,7 +99,7 @@ Adam_N (CC0 1.0):
Source: <https://www.freesound.org/people/Adam_N/sounds/346692/> Source: <https://www.freesound.org/people/Adam_N/sounds/346692/>
Alecia Shepherd (CC BY-SA 4.0): Alecia Shepherd (CC BY-SA 4.0):
mcl_sounds_cloth.ogg mcl_sounds_cloth.*.ogg
Source: SnowSong sound and music pack <https://opengameart.org/content/snowsong-sound-and-music-pack> Source: SnowSong sound and music pack <https://opengameart.org/content/snowsong-sound-and-music-pack>
Unknown authors (WTFPL): Unknown authors (WTFPL):

View File

@ -11,7 +11,7 @@ function mcl_sounds.node_sound_defaults(table)
table.dug = table.dug or table.dug = table.dug or
{name="default_dug_node", gain=0.25} {name="default_dug_node", gain=0.25}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_oddly_breakable_by_hand", gain=1.0} {name="default_dig_oddly_breakable_by_hand", gain=0.5}
table.place = table.place or table.place = table.place or
{name="default_place_node_hard", gain=1.0} {name="default_place_node_hard", gain=1.0}
return table return table
@ -20,11 +20,11 @@ end
function mcl_sounds.node_sound_stone_defaults(table) function mcl_sounds.node_sound_stone_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_hard_footstep", gain=0.5} {name="default_hard_footstep", gain=0.2}
table.dug = table.dug or table.dug = table.dug or
{name="default_hard_footstep", gain=1.0} {name="default_hard_footstep", gain=1.0}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_cracky", gain=1.0} {name="default_dig_cracky", gain=0.5}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
return table return table
end end
@ -32,13 +32,13 @@ end
function mcl_sounds.node_sound_metal_defaults(table) function mcl_sounds.node_sound_metal_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_metal_footstep", gain=0.5} {name="default_metal_footstep", gain=0.2}
table.dug = table.dug or table.dug = table.dug or
{name="default_dug_metal", gain=1.0} {name="default_dug_metal", gain=0.5}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_metal", gain=1.0} {name="default_dig_metal", gain=0.5}
table.place = table.place or table.place = table.place or
{name="default_place_node_metal", gain=1.0} {name="default_place_node_metal", gain=0.5}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
return table return table
end end
@ -46,11 +46,11 @@ end
function mcl_sounds.node_sound_dirt_defaults(table) function mcl_sounds.node_sound_dirt_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_dirt_footstep", gain=1.0} {name="default_dirt_footstep", gain=0.25}
table.dug = table.dug or table.dug = table.dug or
{name="default_dirt_footstep", gain=1.5} {name="default_dirt_footstep", gain=1.0}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_crumbly", gain=1.0} {name="default_dig_crumbly", gain=0.4}
table.place = table.place or table.place = table.place or
{name="default_place_node", gain=1.0} {name="default_place_node", gain=1.0}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
@ -60,11 +60,25 @@ end
function mcl_sounds.node_sound_sand_defaults(table) function mcl_sounds.node_sound_sand_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_sand_footstep", gain=0.5} {name="default_sand_footstep", gain=0.05}
table.dug = table.dug or table.dug = table.dug or
{name="default_sand_footstep", gain=1.0} {name="default_sand_footstep", gain=0.15}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_crumbly", gain=1.0} {name="default_dig_crumbly", gain=0.4}
table.place = table.place or
{name="default_place_node", gain=1.0}
mcl_sounds.node_sound_defaults(table)
return table
end
function mcl_sounds.node_sound_gravel_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name="default_gravel_footstep", gain=0.25}
table.dug = table.dug or
{name="default_gravel_dug", gain=1.0}
table.dig = table.dig or
{name="default_gravel_dig", gain=0.35}
table.place = table.place or table.place = table.place or
{name="default_place_node", gain=1.0} {name="default_place_node", gain=1.0}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
@ -78,21 +92,33 @@ function mcl_sounds.node_sound_snow_defaults(table)
table.dug = table.dug or table.dug = table.dug or
{name="pedology_snow_soft_footstep", gain=1.0} {name="pedology_snow_soft_footstep", gain=1.0}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_crumbly", gain=1.0} {name="pedology_snow_soft_footstep", gain=1.0}
table.place = table.place or table.place = table.place or
{name="default_place_node", gain=1.0} {name="default_place_node", gain=1.0}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
return table return table
end end
function mcl_sounds.node_sound_ice_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name="default_ice_footstep", gain=0.15}
table.dug = table.dug or
{name="default_ice_dug", gain=0.5}
table.dig = table.dig or
{name="default_ice_dig", gain=0.5}
mcl_sounds.node_sound_defaults(table)
return table
end
function mcl_sounds.node_sound_wood_defaults(table) function mcl_sounds.node_sound_wood_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_wood_footstep", gain=0.5} {name="default_wood_footstep", gain=0.15}
table.dug = table.dug or table.dug = table.dug or
{name="default_wood_footstep", gain=1.0} {name="default_wood_footstep", gain=1.0}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_choppy", gain=1.0} {name="default_dig_choppy", gain=0.4}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
return table return table
end end
@ -128,11 +154,11 @@ end
function mcl_sounds.node_sound_glass_defaults(table) function mcl_sounds.node_sound_glass_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or
{name="default_glass_footstep", gain=0.5} {name="default_glass_footstep", gain=0.3}
table.dug = table.dug or table.dug = table.dug or
{name="default_break_glass", gain=1.0} {name="default_break_glass", gain=1.0}
table.dig = table.dig or table.dig = table.dig or
{name="default_dig_cracky", gain=1.0} {name="default_dig_cracky", gain=0.5}
mcl_sounds.node_sound_defaults(table) mcl_sounds.node_sound_defaults(table)
return table return table
end end

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -0,0 +1,13 @@
# textdomain: mcl_boats
Acacia Boat=アカシアのボート
Birch Boat=シラカバのボート
Boat=ボート
Boats are used to travel on the surface of water.=ボートは、水面を移動するために使われます。
Dark Oak Boat=ダークオークのボート
Jungle Boat=ジャングルのボート
Oak Boat=オークのボート
Rightclick on a water source to place the boat. Rightclick the boat to enter it. Use [Left] and [Right] to steer, [Forwards] to speed up and [Backwards] to slow down or move backwards. Use [Sneak] to leave the boat, punch the boat to make it drop as an item.=水源を右クリックすると、ボートが配置されます。ボートを右クリックすると、乗り込みます。[左][右]で舵取り、[前]で加速、[後]で減速または後退します。[スニーク]でボートから離れ、ボートをパンチするとアイテムとしてドロップします。
Spruce Boat=トウヒのボート
Water vehicle=水上用の乗物
Sneak to dismount=スニークで降りる
Obsidian Boat=黒曜石のボート

View File

@ -7,31 +7,24 @@ local pool = {}
local tick = false local tick = false
local LOGGING_ON = minetest.settings:get_bool("mcl_logging_item_entities",false) local LOGGING_ON = minetest.settings:get_bool("mcl_logging_item_entities", false)
local function mcl_log (message) local function mcl_log(message)
if LOGGING_ON then if LOGGING_ON then
mcl_util.mcl_log (message, "[Item Entities]", true) mcl_util.mcl_log(message, "[Item Entities]", true)
end end
end end
minetest.register_on_joinplayer(function(player) minetest.register_on_joinplayer(function(player)
local name pool[player:get_player_name()] = 0
name = player:get_player_name()
pool[name] = 0
end) end)
minetest.register_on_leaveplayer(function(player) minetest.register_on_leaveplayer(function(player)
local name pool[player:get_player_name()] = nil
name = player:get_player_name()
pool[name] = nil
end) end)
local has_awards = minetest.get_modpath("awards") local has_awards = minetest.get_modpath("awards")
local mcl_item_entity = {} mcl_item_entity = {}
--basic settings --basic settings
local item_drop_settings = {} --settings table local item_drop_settings = {} --settings table
@ -46,22 +39,29 @@ item_drop_settings.random_item_velocity = true --this sets random item velocity
item_drop_settings.drop_single_item = false --if true, the drop control drops 1 item instead of the entire stack, and sneak+drop drops the stack item_drop_settings.drop_single_item = false --if true, the drop control drops 1 item instead of the entire stack, and sneak+drop drops the stack
-- drop_single_item is disabled by default because it is annoying to throw away items from the intentory screen -- drop_single_item is disabled by default because it is annoying to throw away items from the intentory screen
item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up item_drop_settings.magnet_time = 0.75 -- how many seconds an item follows the player before giving up
local function get_gravity() local function get_gravity()
return tonumber(minetest.settings:get("movement_gravity")) or 9.81 return tonumber(minetest.settings:get("movement_gravity")) or 9.81
end end
local registered_pickup_achievement = {} mcl_item_entity.registered_pickup_achievement = {}
--TODO: remove limitation of 1 award per itemname ---Register an achievement that will be unlocked on pickup.
---
---TODO: remove limitation of 1 award per itemname
---@param itemname string
---@param award string
function mcl_item_entity.register_pickup_achievement(itemname, award) function mcl_item_entity.register_pickup_achievement(itemname, award)
if not has_awards then if not has_awards then
minetest.log("warning", "[mcl_item_entity] Trying to register pickup achievement ["..award.."] for ["..itemname.."] while awards missing") minetest.log("warning",
elseif registered_pickup_achievement[itemname] then "[mcl_item_entity] Trying to register pickup achievement [" .. award .. "] for [" ..
minetest.log("error", "[mcl_item_entity] Trying to register already existing pickup achievement ["..award.."] for ["..itemname.."]") itemname .. "] while awards missing")
elseif mcl_item_entity.registered_pickup_achievement[itemname] then
minetest.log("error",
"[mcl_item_entity] Trying to register already existing pickup achievement [" .. award .. "] for [" .. itemname .. "]")
else else
registered_pickup_achievement[itemname] = award mcl_item_entity.registered_pickup_achievement[itemname] = award
end end
end end
@ -74,11 +74,13 @@ mcl_item_entity.register_pickup_achievement("mcl_nether:ancient_debris", "mcl:hi
mcl_item_entity.register_pickup_achievement("mcl_end:dragon_egg", "mcl:PickUpDragonEgg") mcl_item_entity.register_pickup_achievement("mcl_end:dragon_egg", "mcl:PickUpDragonEgg")
mcl_item_entity.register_pickup_achievement("mcl_armor:elytra", "mcl:skysTheLimit") mcl_item_entity.register_pickup_achievement("mcl_armor:elytra", "mcl:skysTheLimit")
---@param object ObjectRef
---@param player ObjectRef
local function check_pickup_achievements(object, player) local function check_pickup_achievements(object, player)
if has_awards then if has_awards then
local itemname = ItemStack(object:get_luaentity().itemstring):get_name() local itemname = ItemStack(object:get_luaentity().itemstring):get_name()
local playername = player:get_player_name() local playername = player:get_player_name()
for name,award in pairs(registered_pickup_achievement) do for name, award in pairs(mcl_item_entity.registered_pickup_achievement) do
if itemname == name or minetest.get_item_group(itemname, name) ~= 0 then if itemname == name or minetest.get_item_group(itemname, name) ~= 0 then
awards.unlock(playername, award) awards.unlock(playername, award)
end end
@ -86,16 +88,23 @@ local function check_pickup_achievements(object, player)
end end
end end
---@param object ObjectRef
---@param luaentity Luaentity
---@param ignore_check? boolean
local function enable_physics(object, luaentity, ignore_check) local function enable_physics(object, luaentity, ignore_check)
if luaentity.physical_state == false or ignore_check == true then if luaentity.physical_state == false or ignore_check == true then
luaentity.physical_state = true luaentity.physical_state = true
object:set_properties({ object:set_properties({
physical = true physical = true
}) })
object:set_acceleration({x=0,y=-get_gravity(),z=0}) object:set_acceleration(vector.new(0, -get_gravity(), 0))
end end
end end
---@param object ObjectRef
---@param luaentity Luaentity
---@param ignore_check? boolean
---@param reset_movement? boolean
local function disable_physics(object, luaentity, ignore_check, reset_movement) local function disable_physics(object, luaentity, ignore_check, reset_movement)
if luaentity.physical_state == true or ignore_check == true then if luaentity.physical_state == true or ignore_check == true then
luaentity.physical_state = false luaentity.physical_state = false
@ -103,17 +112,16 @@ local function disable_physics(object, luaentity, ignore_check, reset_movement)
physical = false physical = false
}) })
if reset_movement ~= false then if reset_movement ~= false then
object:set_velocity({x=0,y=0,z=0}) object:set_velocity(vector.zero())
object:set_acceleration({x=0,y=0,z=0}) object:set_acceleration(vector.zero())
end end
end end
end end
minetest.register_globalstep(function(_)
minetest.register_globalstep(function(dtime)
tick = not tick tick = not tick
for _,player in pairs(minetest.get_connected_players()) do for _, player in pairs(minetest.get_connected_players()) do
if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then if player:get_hp() > 0 or not minetest.settings:get_bool("enable_damage") then
local name = player:get_player_name() local name = player:get_player_name()
@ -125,7 +133,7 @@ minetest.register_globalstep(function(dtime)
pos = pos, pos = pos,
gain = 0.3, gain = 0.3,
max_hear_distance = 16, max_hear_distance = 16,
pitch = math.random(70,110)/100 pitch = math.random(70, 110) / 100
}) })
if pool[name] > 6 then if pool[name] > 6 then
pool[name] = 6 pool[name] = 6
@ -135,15 +143,18 @@ minetest.register_globalstep(function(dtime)
end end
local inv = player:get_inventory() local inv = player:get_inventory()
local checkpos = {x=pos.x,y=pos.y + item_drop_settings.player_collect_height,z=pos.z} local checkpos = vector.offset(pos, 0, item_drop_settings.player_collect_height, 0)
--magnet and collection --magnet and collection
for _,object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do for _, object in pairs(minetest.get_objects_inside_radius(checkpos, item_drop_settings.xp_radius_magnet)) do
if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then if not object:is_player() and vector.distance(checkpos, object:get_pos()) < item_drop_settings.radius_magnet and
object:get_luaentity() and object:get_luaentity().name == "__builtin:item" and object:get_luaentity()._magnet_timer
and (object:get_luaentity()._insta_collect or (object:get_luaentity().age > item_drop_settings.age)) then
if object:get_luaentity()._magnet_timer >= 0 and object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then if object:get_luaentity()._magnet_timer >= 0 and
object:get_luaentity()._magnet_timer < item_drop_settings.magnet_time and inv and
inv:room_for_item("main", ItemStack(object:get_luaentity().itemstring)) then
-- Collection -- Collection
if not object:get_luaentity()._removed then if not object:get_luaentity()._removed then
@ -158,8 +169,8 @@ minetest.register_globalstep(function(dtime)
object:get_luaentity().target = checkpos object:get_luaentity().target = checkpos
object:get_luaentity()._removed = true object:get_luaentity()._removed = true
object:set_velocity({x=0,y=0,z=0}) object:set_velocity(vector.zero())
object:set_acceleration({x=0,y=0,z=0}) object:set_acceleration(vector.zero())
object:move_to(checkpos) object:move_to(checkpos)
@ -179,7 +190,6 @@ minetest.register_globalstep(function(dtime)
local entity = object:get_luaentity() local entity = object:get_luaentity()
entity.collector = player:get_player_name() entity.collector = player:get_player_name()
entity.collected = true entity.collected = true
end end
end end
@ -194,6 +204,11 @@ end)
local tmp_id = 0 local tmp_id = 0
---@param drop string|drop_definition
---@param toolname string
---@param param2 integer
---@param paramtype2 paramtype2
---@return string[]
local function get_drops(drop, toolname, param2, paramtype2) local function get_drops(drop, toolname, param2, paramtype2)
tmp_id = tmp_id + 1 tmp_id = tmp_id + 1
local tmp_node_name = "mcl_item_entity:" .. tmp_id local tmp_node_name = "mcl_item_entity:" .. tmp_id
@ -202,7 +217,7 @@ local function get_drops(drop, toolname, param2, paramtype2)
drop = drop, drop = drop,
paramtype2 = paramtype2 paramtype2 = paramtype2
} }
local drops = minetest.get_node_drops({name = tmp_node_name, param2 = param2}, toolname) local drops = minetest.get_node_drops({ name = tmp_node_name, param2 = param2 }, toolname)
minetest.registered_nodes[tmp_node_name] = nil minetest.registered_nodes[tmp_node_name] = nil
return drops return drops
end end
@ -265,7 +280,7 @@ function minetest.handle_node_drops(pos, drops, digger)
* table: Drop every itemstring in this table when dug by shears _mcl_silk_touch_drop * table: Drop every itemstring in this table when dug by shears _mcl_silk_touch_drop
]] ]]
local enchantments = tool and mcl_enchanting.get_enchantments(tool, "silk_touch") local enchantments = tool and mcl_enchanting.get_enchantments(tool)
local silk_touch_drop = false local silk_touch_drop = false
local nodedef = minetest.registered_nodes[dug_node.name] local nodedef = minetest.registered_nodes[dug_node.name]
@ -294,7 +309,8 @@ function minetest.handle_node_drops(pos, drops, digger)
local max_count = fortune_drop.max_count + fortune_level * (fortune_drop.factor or 1) local max_count = fortune_drop.max_count + fortune_level * (fortune_drop.factor or 1)
local chance = fortune_drop.chance or fortune_drop.get_chance and fortune_drop.get_chance(fortune_level) local chance = fortune_drop.chance or fortune_drop.get_chance and fortune_drop.get_chance(fortune_level)
if not chance or math.random() < chance then if not chance or math.random() < chance then
drops = discrete_uniform_distribution(fortune_drop.multiply and drops or fortune_drop.items, min_count, max_count, fortune_drop.cap) drops = discrete_uniform_distribution(fortune_drop.multiply and drops or fortune_drop.items, min_count, max_count,
fortune_drop.cap)
elseif fortune_drop.override then elseif fortune_drop.override then
drops = {} drops = {}
end end
@ -306,13 +322,13 @@ function minetest.handle_node_drops(pos, drops, digger)
end end
if digger and mcl_experience.throw_xp and not silk_touch_drop then if digger and mcl_experience.throw_xp and not silk_touch_drop then
local experience_amount = minetest.get_item_group(dug_node.name,"xp") local experience_amount = minetest.get_item_group(dug_node.name, "xp")
if experience_amount > 0 then if experience_amount > 0 then
mcl_experience.throw_xp(pos, experience_amount) mcl_experience.throw_xp(pos, experience_amount)
end end
end end
for _,item in ipairs(drops) do for _, item in ipairs(drops) do
local count local count
if type(item) == "string" then if type(item) == "string" then
count = ItemStack(item):get_count() count = ItemStack(item):get_count()
@ -321,7 +337,7 @@ function minetest.handle_node_drops(pos, drops, digger)
end end
local drop_item = ItemStack(item) local drop_item = ItemStack(item)
drop_item:set_count(1) drop_item:set_count(1)
for i=1,count do for i = 1, count do
local dpos = table.copy(pos) local dpos = table.copy(pos)
-- Apply offset for plantlike_rooted nodes because of their special shape -- Apply offset for plantlike_rooted nodes because of their special shape
if nodedef and nodedef.drawtype == "plantlike_rooted" and nodedef.walkable then if nodedef and nodedef.drawtype == "plantlike_rooted" and nodedef.walkable then
@ -348,7 +364,7 @@ end
function minetest.item_drop(itemstack, dropper, pos) function minetest.item_drop(itemstack, dropper, pos)
if dropper and dropper:is_player() then if dropper and dropper:is_player() then
local v = dropper:get_look_dir() local v = dropper:get_look_dir()
local p = {x=pos.x, y=pos.y+1.2, z=pos.z} local p = vector.offset(pos, 0, 1.2, 0)
local cs = itemstack:get_count() local cs = itemstack:get_count()
if dropper:get_player_control().sneak then if dropper:get_player_control().sneak then
cs = 1 cs = 1
@ -356,9 +372,9 @@ function minetest.item_drop(itemstack, dropper, pos)
local item = itemstack:take_item(cs) local item = itemstack:take_item(cs)
local obj = minetest.add_item(p, item) local obj = minetest.add_item(p, item)
if obj then if obj then
v.x = v.x*4 v.x = v.x * 4
v.y = v.y*4 + 2 v.y = v.y * 4 + 2
v.z = v.z*4 v.z = v.z * 4
obj:set_velocity(v) obj:set_velocity(v)
-- Force collection delay -- Force collection delay
obj:get_luaentity()._insta_collect = false obj:get_luaentity()._insta_collect = false
@ -376,16 +392,16 @@ end
local function cxcz(o, cw, one, zero) local function cxcz(o, cw, one, zero)
if cw < 0 then if cw < 0 then
table.insert(o, { [one]=1, y=0, [zero]=0 }) table.insert(o, { [one] = 1, y = 0, [zero] = 0 })
table.insert(o, { [one]=-1, y=0, [zero]=0 }) table.insert(o, { [one] = -1, y = 0, [zero] = 0 })
else else
table.insert(o, { [one]=-1, y=0, [zero]=0 }) table.insert(o, { [one] = -1, y = 0, [zero] = 0 })
table.insert(o, { [one]=1, y=0, [zero]=0 }) table.insert(o, { [one] = 1, y = 0, [zero] = 0 })
end end
return o return o
end end
local function hopper_take_item (self, pos) local function hopper_take_item(self, pos)
--mcl_log("self.itemstring: ".. self.itemstring) --mcl_log("self.itemstring: ".. self.itemstring)
--mcl_log("self.itemstring: ".. minetest.pos_to_string(pos)) --mcl_log("self.itemstring: ".. minetest.pos_to_string(pos))
@ -394,17 +410,17 @@ local function hopper_take_item (self, pos)
if objs and self.itemstring then if objs and self.itemstring then
--mcl_log("there is an itemstring. Number of objs: ".. #objs) --mcl_log("there is an itemstring. Number of objs: ".. #objs)
for k,v in pairs(objs) do for k, v in pairs(objs) do
local ent = v:get_luaentity() local ent = v:get_luaentity()
-- Don't forget actual hoppers -- Don't forget actual hoppers
if ent and ent.name == "mcl_minecarts:hopper_minecart" then if ent and ent.name == "mcl_minecarts:hopper_minecart" then
local taken_items = false local taken_items = false
mcl_log("ent.name: ".. tostring(ent.name)) mcl_log("ent.name: " .. tostring(ent.name))
mcl_log("ent pos: ".. tostring(ent.object:get_pos())) mcl_log("ent pos: " .. tostring(ent.object:get_pos()))
local inv = mcl_entity_invs.load_inv(ent,5) local inv = mcl_entity_invs.load_inv(ent, 5)
if not inv then if not inv then
mcl_log("No inv") mcl_log("No inv")
@ -428,7 +444,7 @@ local function hopper_take_item (self, pos)
local items_remaining = current_itemstack:get_count() local items_remaining = current_itemstack:get_count()
-- This will take part of a floating item stack if no slot can hold the full amount -- This will take part of a floating item stack if no slot can hold the full amount
for i = 1, ent._inv_size,1 do for i = 1, ent._inv_size, 1 do
local stack = inv:get_stack("main", i) local stack = inv:get_stack("main", i)
mcl_log("i: " .. tostring(i)) mcl_log("i: " .. tostring(i))
@ -500,13 +516,13 @@ minetest.register_entity(":__builtin:item", {
hp_max = 1, hp_max = 1,
physical = true, physical = true,
collide_with_objects = false, collide_with_objects = false,
collisionbox = {-0.3, -0.3, -0.3, 0.3, 0.3, 0.3}, collisionbox = { -0.3, -0.3, -0.3, 0.3, 0.3, 0.3 },
pointable = false, pointable = false,
visual = "wielditem", visual = "wielditem",
visual_size = {x = 0.4, y = 0.4}, visual_size = { x = 0.4, y = 0.4 },
textures = {""}, textures = { "" },
spritediv = {x = 1, y = 1}, spritediv = { x = 1, y = 1 },
initial_sprite_basepos = {x = 0, y = 0}, initial_sprite_basepos = { x = 0, y = 0 },
is_visible = false, is_visible = false,
infotext = "", infotext = "",
}, },
@ -544,11 +560,11 @@ minetest.register_entity(":__builtin:item", {
if vel and vel.x == 0 and vel.z == 0 and self.random_velocity > 0 then if vel and vel.x == 0 and vel.z == 0 and self.random_velocity > 0 then
local v = self.random_velocity local v = self.random_velocity
local x = math.random(5, 10) / 10 * v local x = math.random(5, 10) / 10 * v
if math.random(0,10) < 5 then x = -x end if math.random(0, 10) < 5 then x = -x end
local z = math.random(5, 10) / 10 * v local z = math.random(5, 10) / 10 * v
if math.random(0,10) < 5 then z = -z end if math.random(0, 10) < 5 then z = -z end
local y = math.random(2,4) local y = math.random(2, 4)
self.object:set_velocity({x=x, y=y, z=z}) self.object:set_velocity(vector.new(x, y, z))
end end
self.random_velocity = 0 self.random_velocity = 0
end, end,
@ -576,7 +592,7 @@ minetest.register_entity(":__builtin:item", {
local max_count = stack:get_stack_max() local max_count = stack:get_stack_max()
if count > max_count then if count > max_count then
count = max_count count = max_count
self.itemstring = stack:get_name().." "..max_count self.itemstring = stack:get_name() .. " " .. max_count
end end
local itemtable = stack:to_table() local itemtable = stack:to_table()
local itemname = nil local itemname = nil
@ -597,9 +613,9 @@ minetest.register_entity(":__builtin:item", {
local prop = { local prop = {
is_visible = true, is_visible = true,
visual = "wielditem", visual = "wielditem",
textures = {itemname}, textures = { itemname },
visual_size = {x = s, y = s}, visual_size = { x = s, y = s },
collisionbox = {-c, -c, -c, c, c, c}, collisionbox = { -c, -c, -c, c, c, c },
automatic_rotate = math.pi * 0.5, automatic_rotate = math.pi * 0.5,
infotext = description, infotext = description,
glow = glow, glow = glow,
@ -695,9 +711,9 @@ minetest.register_entity(":__builtin:item", {
self._forcestart = nil self._forcestart = nil
self._forcetimer = 0 self._forcetimer = 0
self.object:set_armor_groups({immortal = 1}) self.object:set_armor_groups({ immortal = 1 })
-- self.object:set_velocity({x = 0, y = 2, z = 0}) -- self.object:set_velocity(vector.new(0, 2, 0))
self.object:set_acceleration({x = 0, y = -get_gravity(), z = 0}) self.object:set_acceleration(vector.new(0, -get_gravity(), 0))
self:set_item(self.itemstring) self:set_item(self.itemstring)
end, end,
@ -710,9 +726,9 @@ minetest.register_entity(":__builtin:item", {
local stack = ItemStack(entity.itemstring) local stack = ItemStack(entity.itemstring)
local name = stack:get_name() local name = stack:get_name()
if own_stack:get_name() ~= name or if own_stack:get_name() ~= name or
own_stack:get_meta() ~= stack:get_meta() or own_stack:get_meta() ~= stack:get_meta() or
own_stack:get_wear() ~= stack:get_wear() or own_stack:get_wear() ~= stack:get_wear() or
own_stack:get_free_space() == 0 then own_stack:get_free_space() == 0 then
-- Can not merge different or full stack -- Can not merge different or full stack
return false return false
end end
@ -745,8 +761,8 @@ minetest.register_entity(":__builtin:item", {
self.object:set_properties({ self.object:set_properties({
physical = false physical = false
}) })
self.object:set_velocity({x=0,y=0,z=0}) self.object:set_velocity(vector.zero())
self.object:set_acceleration({x=0,y=0,z=0}) self.object:set_acceleration(vector.zero())
return return
end end
self.age = self.age + dtime self.age = self.age + dtime
@ -761,21 +777,22 @@ minetest.register_entity(":__builtin:item", {
-- Delete corrupted item entities. The itemstring MUST be non-empty on its first step, -- Delete corrupted item entities. The itemstring MUST be non-empty on its first step,
-- otherwise there might have some data corruption. -- otherwise there might have some data corruption.
if self.itemstring == "" then if self.itemstring == "" then
minetest.log("warning", "Item entity with empty itemstring found at "..minetest.pos_to_string(self.object:get_pos()).. "! Deleting it now.") minetest.log("warning",
"Item entity with empty itemstring found at " .. minetest.pos_to_string(self.object:get_pos()) ..
"! Deleting it now.")
self._removed = true self._removed = true
self.object:remove() self.object:remove()
return return
end end
local p = self.object:get_pos() local p = self.object:get_pos()
-- If hopper has taken item, it has gone, and no operations should be conducted on this item -- If hopper has taken item, it has gone, and no operations should be conducted on this item
if hopper_take_item(self, p) then if hopper_take_item(self, p) then
return return
end end
local node = minetest.get_node_or_nil(p) local node = minetest.get_node(p)
local in_unloaded = (node == nil) local in_unloaded = node.name == "ignore"
if in_unloaded then if in_unloaded then
-- Don't infinetly fall into unloaded map -- Don't infinetly fall into unloaded map
@ -785,27 +802,27 @@ minetest.register_entity(":__builtin:item", {
if self.is_clock then if self.is_clock then
self.object:set_properties({ self.object:set_properties({
textures = {"mcl_clock:clock_" .. (mcl_worlds.clock_works(p) and mcl_clock.old_time or mcl_clock.random_frame)} textures = { "mcl_clock:clock_" .. (mcl_worlds.clock_works(p) and mcl_clock.old_time or mcl_clock.random_frame) }
}) })
end end
local nn = node.name local nn = node.name
local is_in_water = (minetest.get_item_group(nn, "liquid") ~= 0) local is_in_water = (minetest.get_item_group(nn, "liquid") ~= 0)
local nn_above = minetest.get_node({x=p.x, y=p.y+0.1, z=p.z}).name local nn_above = minetest.get_node(vector.offset(p, 0, 0.1, 0)).name
-- make sure it's more or less stationary and is at water level -- make sure it's more or less stationary and is at water level
local sleep_threshold = 0.3 local sleep_threshold = 0.3
local is_floating = false local is_floating = false
local is_stationary = math.abs(self.object:get_velocity().x) < sleep_threshold local is_stationary = math.abs(self.object:get_velocity().x) < sleep_threshold
and math.abs(self.object:get_velocity().y) < sleep_threshold and math.abs(self.object:get_velocity().y) < sleep_threshold
and math.abs(self.object:get_velocity().z) < sleep_threshold and math.abs(self.object:get_velocity().z) < sleep_threshold
if is_in_water and is_stationary then if is_in_water and is_stationary then
is_floating = (is_in_water is_floating = (is_in_water
and (minetest.get_item_group(nn_above, "liquid") == 0)) and (minetest.get_item_group(nn_above, "liquid") == 0))
end end
if is_floating and self.physical_state == true then if is_floating and self.physical_state == true then
self.object:set_velocity({x = 0, y = 0, z = 0}) self.object:set_velocity(vector.zero())
self.object:set_acceleration({x = 0, y = 0, z = 0}) self.object:set_acceleration(vector.zero())
disable_physics(self.object, self) disable_physics(self.object, self)
end end
-- If no collector was found for a long enough time, declare the magnet as disabled -- If no collector was found for a long enough time, declare the magnet as disabled
@ -825,7 +842,7 @@ minetest.register_entity(":__builtin:item", {
--Wait 2 seconds to allow mob drops to be cooked, & picked up instead of instantly destroyed. --Wait 2 seconds to allow mob drops to be cooked, & picked up instead of instantly destroyed.
if self.age > 2 and minetest.get_item_group(self.itemstring, "fire_immune") == 0 then if self.age > 2 and minetest.get_item_group(self.itemstring, "fire_immune") == 0 then
if dg ~= 2 then if dg ~= 2 then
minetest.sound_play("builtin_item_lava", {pos = self.object:get_pos(), gain = 0.5}) minetest.sound_play("builtin_item_lava", { pos = self.object:get_pos(), gain = 0.5 })
end end
self._removed = true self._removed = true
self.object:remove() self.object:remove()
@ -865,7 +882,7 @@ minetest.register_entity(":__builtin:item", {
end end
-- Check which one of the 4 sides is free -- Check which one of the 4 sides is free
for o=1, #order do for o = 1, #order do
local nn = minetest.get_node(vector.add(p, order[o])).name local nn = minetest.get_node(vector.add(p, order[o])).name
local def = minetest.registered_nodes[nn] local def = minetest.registered_nodes[nn]
if def and def.walkable == false and nn ~= "ignore" then if def and def.walkable == false and nn ~= "ignore" then
@ -875,7 +892,7 @@ minetest.register_entity(":__builtin:item", {
end end
-- If none of the 4 sides is free, shoot upwards -- If none of the 4 sides is free, shoot upwards
if shootdir == nil then if shootdir == nil then
shootdir = { x=0, y=1, z=0 } shootdir = vector.new(0, 1, 0)
local nn = minetest.get_node(vector.add(p, shootdir)).name local nn = minetest.get_node(vector.add(p, shootdir)).name
if nn == "ignore" then if nn == "ignore" then
-- Do not push into ignore -- Do not push into ignore
@ -885,7 +902,7 @@ minetest.register_entity(":__builtin:item", {
-- Set new item moving speed accordingly -- Set new item moving speed accordingly
local newv = vector.multiply(shootdir, 3) local newv = vector.multiply(shootdir, 3)
self.object:set_acceleration({x = 0, y = 0, z = 0}) self.object:set_acceleration(vector.zero())
self.object:set_velocity(newv) self.object:set_velocity(newv)
disable_physics(self.object, self, false, false) disable_physics(self.object, self, false, false)
@ -907,10 +924,10 @@ minetest.register_entity(":__builtin:item", {
if self._forcetimer > 0 then if self._forcetimer > 0 then
local cbox = self.object:get_properties().collisionbox local cbox = self.object:get_properties().collisionbox
local ok = false local ok = false
if self._force.x > 0 and (p.x > (self._forcestart.x + 0.5 + (cbox[4] - cbox[1])/2)) then ok = true if self._force.x > 0 and (p.x > (self._forcestart.x + 0.5 + (cbox[4] - cbox[1]) / 2)) then ok = true
elseif self._force.x < 0 and (p.x < (self._forcestart.x + 0.5 - (cbox[4] - cbox[1])/2)) then ok = true elseif self._force.x < 0 and (p.x < (self._forcestart.x + 0.5 - (cbox[4] - cbox[1]) / 2)) then ok = true
elseif self._force.z > 0 and (p.z > (self._forcestart.z + 0.5 + (cbox[6] - cbox[3])/2)) then ok = true elseif self._force.z > 0 and (p.z > (self._forcestart.z + 0.5 + (cbox[6] - cbox[3]) / 2)) then ok = true
elseif self._force.z < 0 and (p.z < (self._forcestart.z + 0.5 - (cbox[6] - cbox[3])/2)) then ok = true end elseif self._force.z < 0 and (p.z < (self._forcestart.z + 0.5 - (cbox[6] - cbox[3]) / 2)) then ok = true end
-- Item was successfully forced out. No more pushing -- Item was successfully forced out. No more pushing
if ok then if ok then
self._forcetimer = -1 self._forcetimer = -1
@ -941,7 +958,7 @@ minetest.register_entity(":__builtin:item", {
-- Set new item moving speed into the direciton of the liquid -- Set new item moving speed into the direciton of the liquid
local newv = vector.multiply(vec, f) local newv = vector.multiply(vec, f)
-- Swap to acceleration instead of a static speed to better mimic MC mechanics. -- Swap to acceleration instead of a static speed to better mimic MC mechanics.
self.object:set_acceleration({x = newv.x, y = -0.22, z = newv.z}) self.object:set_acceleration(vector.new(newv.x, -0.22, newv.z))
self.physical_state = true self.physical_state = true
self._flowing = true self._flowing = true
@ -954,9 +971,10 @@ minetest.register_entity(":__builtin:item", {
local cur_vec = self.object:get_velocity() local cur_vec = self.object:get_velocity()
-- apply some acceleration in the opposite direction so it doesn't slide forever -- apply some acceleration in the opposite direction so it doesn't slide forever
local vec = { local vec = {
x = 0 -cur_vec.x*0.9, x = 0 - cur_vec.x * 0.9,
y = 3 -cur_vec.y*0.9, y = 3 - cur_vec.y * 0.9,
z = 0 -cur_vec.z*0.9} z = 0 - cur_vec.z * 0.9
}
self.object:set_acceleration(vec) self.object:set_acceleration(vec)
-- slow down the item in water -- slow down the item in water
local vel = self.object:get_velocity() local vel = self.object:get_velocity()
@ -980,20 +998,20 @@ minetest.register_entity(":__builtin:item", {
end end
-- If node is not registered or node is walkably solid and resting on nodebox -- If node is not registered or node is walkably solid and resting on nodebox
local nn = minetest.get_node({x=p.x, y=p.y-0.5, z=p.z}).name local nn = minetest.get_node(vector.offset(p, 0, -0.5, 0)).name
local def = minetest.registered_nodes[nn] local def = minetest.registered_nodes[nn]
local v = self.object:get_velocity() local v = self.object:get_velocity()
local is_on_floor = def and (def.walkable local is_on_floor = def and (def.walkable
and not def.groups.slippery and v.y == 0) and not def.groups.slippery and v.y == 0)
if not minetest.registered_nodes[nn] if not minetest.registered_nodes[nn]
or is_floating or is_on_floor then or is_floating or is_on_floor then
local own_stack = ItemStack(self.object:get_luaentity().itemstring) local own_stack = ItemStack(self.object:get_luaentity().itemstring)
-- Merge with close entities of the same item -- Merge with close entities of the same item
for _, object in pairs(minetest.get_objects_inside_radius(p, 0.8)) do for _, object in pairs(minetest.get_objects_inside_radius(p, 0.8)) do
local obj = object:get_luaentity() local obj = object:get_luaentity()
if obj and obj.name == "__builtin:item" if obj and obj.name == "__builtin:item"
and obj.physical_state == false then and obj.physical_state == false then
if self:try_merge_with(own_stack, object, obj) then if self:try_merge_with(own_stack, object, obj) then
return return
end end

View File

@ -0,0 +1,36 @@
# textdomain: mcl_minecarts
Minecart=トロッコ
Minecarts can be used for a quick transportion on rails.=トロッコは、レールを使った高速輸送を可能にします。
Minecarts only ride on rails and always follow the tracks. At a T-junction with no straight way ahead, they turn left. The speed is affected by the rail type.=トロッコはレール上にしか乗らない為、常に線路に沿って走ります。直進できない丁字路では、取り敢えず左折します。速度はレールの種類によって異なります。
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=レールの上にトロッコを置けます。右クリックで乗り込みます。パンチすると動き出します。
To obtain the minecart, punch it while holding down the sneak key.=トロッコを入手するには、スニークキーを押しながらパンチします。
A minecart with TNT is an explosive vehicle that travels on rail.=TNT付きトロッコは、レール上を行きかう爆薬車両です。
Place it on rails. Punch it to move it. The TNT is ignited with a flint and steel or when the minecart is on an powered activator rail.=レール上に配置。パンチで移動。TNTが着火するのは、火打石と打金を使った時か、稼動中のアクティベーターレール上にトロッコが乗った時です。
To obtain the minecart and TNT, punch them while holding down the sneak key. You can't do this if the TNT was ignited.=トロッコとTNTを入手するには、スニークキーを押しながらパンチしてください。TNTに火が着いていた場合は、無理です。
A minecart with furnace is a vehicle that travels on rails. It can propel itself with fuel.=かまど付きトロッコは、レール上を走行する車両です。燃料で自走できます。
Place it on rails. If you give it some coal, the furnace will start burning for a long time and the minecart will be able to move itself. Punch it to get it moving.=レールの上に置きます。石炭を与えると、かまどが長時間燃え続け、トロッコが自走可能になります。パンチすると動き出します。
To obtain the minecart and furnace, punch them while holding down the sneak key.=トロッコとかまどを入手するには、スニークキーを押しながらパンチします。
Minecart with Chest=チェスト付きトロッコ
Minecart with Furnace=かまど付きトロッコ
Minecart with Command Block=コマンドブロック付きトロッコ
Minecart with Hopper=ホッパー付きトロッコ
Minecart with TNT=TNT付きトロッコ
Place them on the ground to build your railway, the rails will automatically connect to each other and will turn into curves, T-junctions, crossings and slopes as needed.=地面に置いて線路を作ると、レール同士が自動的につながり、必要に応じてカーブや丁字路、踏切、坂道などに変化します。
Rail=レール
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=レールを利用して、トロッコの輸送路が敷けます。普通のレールは、摩擦の関係でトロッコが少しずつ減速していきます。
Powered Rail=パワードレール
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=レールを利用して、トロッコの輸送路が敷けます。パワードレールは、トロッコを加速させたり、ブレーキをかけたりできます。
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=レッドストーン動力なしだと、このレールはトロッコにブレーキをかけます。このレールでトロッコを加速させるには、レッドストーン動力を供給してください。
Activator Rail=アクティベーターレール
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=レールを利用して、トロッコの輸送路が敷けます。アクティベーターレールは、特殊なトロッコを作動させるために使われます。
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=このレールでトロッコを作動させるには、レッドストーン動力を与えたレール上にトロッコを送り込みます。
Detector Rail=
Rails can be used to build transport tracks for minecarts. A detector rail is able to detect a minecart above it and powers redstone mechanisms.=レールを利用して、トロッコの輸送路が敷けます。ディテクターレールは、その上にあるトロッコを検知でき、その際レッドストーン機構の動力源となります。
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=トロッコを検知してレッドストーン動力を供給するには、レッドストーン導線またはレッドストーン機構に接続し、任意のトロッコをレール上に送り込みます。
Track for minecarts=トロッコ用の線路
Speed up when powered, slow down when not powered=稼動中は加速、非稼動中は減速
Activates minecarts when powered=稼動中はトロッコを作動
Emits redstone power when a minecart is detected=トロッコを検知するとレッドストーン動力を放出
Vehicle for fast travel on rails=レール上を快速移動するための車両
Can be ignited by tools or powered activator rail=道具や稼動中のアクティベーターレールにより着火が可能
Sneak to dismount=スニークで降りる

View File

@ -0,0 +1,11 @@
# textdomain: mcl_mobs
Peaceful mode active! No monsters will spawn.=ピースフルモード有効! モンスターは出現しません。
This allows you to place a single mob.=これにより、1体のMOBを配置できます。
Just place it where you want the mob to appear. Animals will spawn tamed, unless you hold down the sneak key while placing. If you place this on a mob spawner, you change the mob it spawns.=MOBを出現させたい場所に、置くだけです。スニークキーを押しながら配置しない限り、動物は飼いならされた状態でスポーンします。MOBスポナーに設置すると、スポーンするMOBが変わります。
You need the “maphack” privilege to change the mob spawner.=MOBスポナーを変更するには、"maphack"権限が必要です。
Name Tag=名札
A name tag is an item to name a mob.=名札は、MOBに名前をつけるためのアイテムです。
Before you use the name tag, you need to set a name at an anvil. Then you can use the name tag to name a mob. This uses up the name tag.=名札を使用する前に、金床で名前の設定をする必要があります。その後、MOBに名前をつけるために名札が使えます。これで名札は使い切ります。
Only peaceful mobs allowed!=平和的なMOBのみ許可
Give names to mobs=MOBに名前を付与
Set name at anvil=金床で名前の設定

View File

@ -274,7 +274,6 @@ function mob_class:do_jump()
if not self.jump if not self.jump
or self.jump_height == 0 or self.jump_height == 0
or self.fly or self.fly
or (self.child and self.type ~= "monster")
or self.order == "stand" then or self.order == "stand" then
return false return false
end end
@ -1398,7 +1397,7 @@ function mob_class:check_smooth_rotation(dtime)
yaw = yaw + (math.random() * 2 - 1) * 5 * dtime yaw = yaw + (math.random() * 2 - 1) * 5 * dtime
end end
self.object:set_yaw(yaw) self.object:set_yaw(yaw)
self:update_roll() --self:update_roll()
end end
-- end rotation -- end rotation
end end

View File

@ -354,7 +354,7 @@ function mob_class:set_yaw(yaw, delay, dtime)
if self.shaking and dtime then if self.shaking and dtime then
yaw = yaw + (math.random() * 2 - 1) * 5 * dtime yaw = yaw + (math.random() * 2 - 1) * 5 * dtime
end end
self:update_roll() --self:update_roll()
return yaw return yaw
end end

View File

@ -402,11 +402,9 @@ local two_pi = 2 * math.pi
local function get_next_mob_spawn_pos(pos) local function get_next_mob_spawn_pos(pos)
local distance = math_random(25, 32) local distance = math_random(25, 32)
local angle = math_random() * two_pi local angle = math_random() * two_pi
return { local xoff = math_round(distance * math_cos(angle))
x = math_round(pos.x + distance * math_cos(angle)), local yoff = math_round(distance * math_sin(angle))
y = pos.y, return vector.offset(pos, xoff, 0, yoff)
z = math_round(pos.z + distance * math_sin(angle))
}
end end
local function decypher_limits(posy) local function decypher_limits(posy)
@ -559,7 +557,7 @@ local S = minetest.get_translator("mcl_mobs")
minetest.register_chatcommand("spawn_mob",{ minetest.register_chatcommand("spawn_mob",{
privs = { debug = true }, privs = { debug = true },
description=S("spawn_mob is a chatcommand that allows you to type in the name of a mob without 'typing mobs_mc:' all the time like so; 'spawn_mob spider'. however, there is more you can do with this special command, currently you can edit any number, boolian, and string variable you choose with this format: spawn_mob 'any_mob:var<mobs_variable=variable_value>:'. any_mob being your mob of choice, mobs_variable being the variable, and variable value being the value of the chosen variable. and example of this format: \n spawn_mob skeleton:var<passive=true>:\n this would spawn a skeleton that wouldn't attack you. REMEMBER-THIS> when changing a number value always prefix it with 'NUM', example: \n spawn_mob skeleton:var<jump_height=NUM10>:\n this setting the skelly's jump height to 10. if you want to make multiple changes to a mob, you can, example: \n spawn_mob skeleton:var<passive=true>::var<jump_height=NUM10>::var<fly_in=air>::var<fly=true>:\n etc."), description=S("spawn_mob is a chatcommand that allows you to type in the name of a mob without 'typing mobs_mc:' all the time like so; 'spawn_mob spider'. however, there is more you can do with this special command, currently you can edit any number, boolean, and string variable you choose with this format: spawn_mob 'any_mob:var<mobs_variable=variable_value>:'. any_mob being your mob of choice, mobs_variable being the variable, and variable value being the value of the chosen variable. and example of this format: \n spawn_mob skeleton:var<passive=true>:\n this would spawn a skeleton that wouldn't attack you. REMEMBER-THIS> when changing a number value always prefix it with 'NUM', example: \n spawn_mob skeleton:var<jump_height=NUM10>:\n this setting the skelly's jump height to 10. if you want to make multiple changes to a mob, you can, example: \n spawn_mob skeleton:var<passive=true>::var<jump_height=NUM10>::var<fly_in=air>::var<fly=true>:\n etc."),
func = function(n,param) func = function(n,param)
local pos = minetest.get_player_by_name(n):get_pos() local pos = minetest.get_player_by_name(n):get_pos()
@ -579,15 +577,14 @@ minetest.register_chatcommand("spawn_mob",{
local mob = mcl_mobs.spawn(pos,mobname) local mob = mcl_mobs.spawn(pos,mobname)
for c=1, #modifiers do if mob then
modifs = modifiers[c] for c=1, #modifiers do
modifs = modifiers[c]
local mod1 = string.find(modifs, ":") local mod1 = string.find(modifs, ":")
local mod_start = string.find(modifs, "<") local mod_start = string.find(modifs, "<")
local mod_vals = string.find(modifs, "=") local mod_vals = string.find(modifs, "=")
local mod_end = string.find(modifs, ">") local mod_end = string.find(modifs, ">")
local mod_end = string.find(modifs, ">")
if mob then
local mob_entity = mob:get_luaentity() local mob_entity = mob:get_luaentity()
if string.sub(modifs, mod1+1, mod1+3) == "var" then if string.sub(modifs, mod1+1, mod1+3) == "var" then
if mod1 and mod_start and mod_vals and mod_end then if mod1 and mod_start and mod_vals and mod_end then
@ -618,14 +615,12 @@ minetest.register_chatcommand("spawn_mob",{
minetest.log("warning", n.." couldn't modify "..mobname.." at "..minetest.pos_to_string(pos).. ", missing modification type") minetest.log("warning", n.." couldn't modify "..mobname.." at "..minetest.pos_to_string(pos).. ", missing modification type")
end end
end end
end
if mob then
return true, mobname.." spawned at "..minetest.pos_to_string(pos),
minetest.log("action", n.." spawned "..mobname.." at "..minetest.pos_to_string(pos)) minetest.log("action", n.." spawned "..mobname.." at "..minetest.pos_to_string(pos))
return true, mobname.." spawned at "..minetest.pos_to_string(pos)
else
return false, "Couldn't spawn "..mobname
end end
return false, "Couldn't spawn "..mobname
end end
}) })

View File

@ -0,0 +1,2 @@
# textdomain:mcl_paintings
Painting=絵画

View File

@ -64,7 +64,7 @@ local cod = {
chance = 1, chance = 1,
min = 1, min = 1,
max = 1,}, max = 1,},
{name = "mcl_dye:white", {name = "mcl_bone_meal:bone_meal",
chance = 20, chance = 20,
min = 1, min = 1,
max = 1,}, max = 1,},

View File

@ -12,7 +12,7 @@ local cow_def = {
xp_min = 1, xp_min = 1,
xp_max = 3, xp_max = 3,
collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.39, 0.45}, collisionbox = {-0.45, -0.01, -0.45, 0.45, 1.39, 0.45},
spawn_in_group = 8, spawn_in_group = 4,
spawn_in_group_min = 3, spawn_in_group_min = 3,
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_cow.b3d", mesh = "mobs_mc_cow.b3d",

View File

@ -0,0 +1,70 @@
# textdomain: mobs_mc
Agent=エージェント
Axolotl=ウーパールーパー
Bat=コウモリ
Blaze=ブレイズ
Chicken=ニワトリ
Cow=ウシ
Mooshroom=ムーシュルーム
Creeper=クリーパー
Ender Dragon=エンダードラゴン
Enderman=エンダーマン
Endermite=エンダーマイト
Ghast=ガスト
Elder Guardian=エルダーガーディアン
Guardian=ガーディアン
Horse=ウマ
Skeleton Horse=スケルトンホース
Zombie Horse=ゾンビホース
Donkey=ロバ
Mule=ラバ
Iron Golem=アイアンゴーレム
Llama=ラマ
Ocelot=ヤマネコ
Parrot=オウム
Pig=ブタ
Polar Bear=シロクマ
Rabbit=ウサギ
Killer Bunny=殺人ウサギ
Sheep=ヒツジ
Shulker=シュルカー
Silverfish=シルバーフィッシュ
Skeleton=スケルトン
Stray=ストレイ
Wither Skeleton=ウィザースケルトン
Magma Cube=マグマキューブ
Slime=スライム
Snow Golem=スノーゴーレム
Spider=クモ
Cave Spider=洞窟グモ
Squid=イカ
Vex=ヴェックス
Evoker=エヴォーカー
Illusioner=イリュージョナー
Villager=村人
Vindicator=ヴィンディケーター
Zombie Villager=村人ゾンビ
Witch=魔女
Wither=ウィザー
Wolf=オオカミ
Husk=ハスク
Zombie=ゾンビ
Zombie Pigman=ゾンビピッグマン
Farmer=農民
Fisherman=漁師
Fletcher=矢師
Shepherd=羊飼い
Librarian=司書
Cartographer=製図家
Armorer=防具鍛冶
Leatherworker=革職人
Butcher=肉屋
Weapon Smith=武器鍛冶
Tool Smith=道具鍛冶
Cleric=聖職者
Nitwit=求職者
Cod=タラ
Salmon=サケ
Dolphin=イルカ
Pillager=ピリジャー
Tropical fish=クマノミ

View File

@ -2,4 +2,4 @@ name = mobs_mc
author = maikerumine author = maikerumine
description = Adds Minecraft-like monsters and animals. description = Adds Minecraft-like monsters and animals.
depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip, mcl_core, mcl_util depends = mcl_init, mcl_particles, mcl_mobs, mcl_wip, mcl_core, mcl_util
optional_depends = default, mcl_tnt, mcl_bows, mcl_throwing, mcl_fishing, bones, mesecons_materials, mobs_mc_gameconfig, doc_items optional_depends = default, mcl_tnt, mcl_bows, mcl_throwing, mcl_fishing, bones, mesecons_materials, doc_items

View File

@ -42,7 +42,7 @@ local salmon = {
chance = 1, chance = 1,
min = 1, min = 1,
max = 1,}, max = 1,},
{name = "mcl_dye:white", {name = "mcl_bone_meal:bone_meal",
chance = 20, chance = 20,
min = 1, min = 1,
max = 1,}, max = 1,},

View File

@ -1,5 +1,8 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- FIXME: Slimes should spawn only in "slime chunks" which make up only
-- 10% of the map.
--
local S = minetest.get_translator("mobs_mc") local S = minetest.get_translator("mobs_mc")
-- Returns a function that spawns children in a circle around pos. -- Returns a function that spawns children in a circle around pos.
@ -7,46 +10,47 @@ local S = minetest.get_translator("mobs_mc")
-- self: mob reference -- self: mob reference
-- pos: position of "mother" mob -- pos: position of "mother" mob
-- child_mod: Mob to spawn -- child_mod: Mob to spawn
-- children_count: Number of children to spawn
-- spawn_distance: Spawn distance from "mother" mob -- spawn_distance: Spawn distance from "mother" mob
-- eject_speed: Initial speed of child mob away from "mother" mob -- eject_speed: Initial speed of child mob away from "mother" mob
local spawn_children_on_die = function(child_mob, children_count, spawn_distance, eject_speed) local spawn_children_on_die = function(child_mob, spawn_distance, eject_speed)
return function(self, pos) return function(self, pos)
local angle, posadd, newpos, dir local posadd, newpos, dir
if not eject_speed then if not eject_speed then
eject_speed = 1 eject_speed = 1
end end
local mndef = minetest.registered_nodes[minetest.get_node(pos).name] local mndef = minetest.registered_nodes[minetest.get_node(pos).name]
local mother_stuck = mndef and mndef.walkable local mother_stuck = mndef and mndef.walkable
angle = math.random(0, math.pi*2) local angle = math.random(0, math.pi*2)
local children = {} local children = {}
for i=1,children_count do local spawn_count = math.random(2, 4)
dir = {x=math.cos(angle),y=0,z=math.sin(angle)} for i = 1, spawn_count do
posadd = vector.multiply(vector.normalize(dir), spawn_distance) dir = vector.new(math.cos(angle), 0, math.sin(angle))
newpos = vector.add(pos, posadd) posadd = vector.normalize(dir) * spawn_distance
newpos = pos + posadd
-- If child would end up in a wall, use position of the "mother", unless -- If child would end up in a wall, use position of the "mother", unless
-- the "mother" was stuck as well -- the "mother" was stuck as well
local speed_penalty = 1 if not mother_stuck then
local cndef = minetest.registered_nodes[minetest.get_node(newpos).name] local cndef = minetest.registered_nodes[minetest.get_node(newpos).name]
if (not mother_stuck) and cndef and cndef.walkable then if cndef and cndef.walkable then
newpos = pos newpos = pos
speed_penalty = 0.5 eject_speed = eject_speed * 0.5
end
end end
local mob = minetest.add_entity(newpos, child_mob) local mob = minetest.add_entity(newpos, child_mob)
if (not mother_stuck) then if not mother_stuck then
mob:set_velocity(vector.multiply(dir, eject_speed * speed_penalty)) mob:set_velocity(dir * eject_speed)
end end
mob:set_yaw(angle - math.pi/2) mob:set_yaw(angle - math.pi/2)
table.insert(children, mob) table.insert(children, mob)
angle = angle + (math.pi*2)/children_count angle = angle + (math.pi*2) / spawn_count
end end
-- If mother was murdered, children attack the killer after 1 second -- If mother was murdered, children attack the killer after 1 second
if self.state == "attack" then if self.state == "attack" then
minetest.after(1.0, function(children, enemy) minetest.after(1.0, function(children, enemy)
for c=1, #children do local le
local child = children[c] for c = 1, #children do
local le = child:get_luaentity() le = children[c]:get_luaentity()
if le ~= nil then if le then
le.state = "attack" le.state = "attack"
le.attack = enemy le.attack = enemy
end end
@ -106,7 +110,7 @@ local slime_big = {
jump_height = 5.2, jump_height = 5.2,
fear_height = 0, fear_height = 0,
spawn_small_alternative = "mobs_mc:slime_small", spawn_small_alternative = "mobs_mc:slime_small",
on_die = spawn_children_on_die("mobs_mc:slime_small", 4, 1.0, 1.5), on_die = spawn_children_on_die("mobs_mc:slime_small", 1.0, 1.5),
use_texture_alpha = true, use_texture_alpha = true,
} }
mcl_mobs.register_mob("mobs_mc:slime_big", slime_big) mcl_mobs.register_mob("mobs_mc:slime_big", slime_big)
@ -125,7 +129,7 @@ slime_small.walk_velocity = 1.3
slime_small.run_velocity = 1.3 slime_small.run_velocity = 1.3
slime_small.jump_height = 4.3 slime_small.jump_height = 4.3
slime_small.spawn_small_alternative = "mobs_mc:slime_tiny" slime_small.spawn_small_alternative = "mobs_mc:slime_tiny"
slime_small.on_die = spawn_children_on_die("mobs_mc:slime_tiny", 4, 0.6, 1.0) slime_small.on_die = spawn_children_on_die("mobs_mc:slime_tiny", 0.6, 1.0)
mcl_mobs.register_mob("mobs_mc:slime_small", slime_small) mcl_mobs.register_mob("mobs_mc:slime_small", slime_small)
local slime_tiny = table.copy(slime_big) local slime_tiny = table.copy(slime_big)
@ -153,140 +157,127 @@ slime_tiny.on_die = nil
mcl_mobs.register_mob("mobs_mc:slime_tiny", slime_tiny) mcl_mobs.register_mob("mobs_mc:slime_tiny", slime_tiny)
local smin = mcl_vars.mg_overworld_min local water_level = mobs_mc.water_level
local smax = mobs_mc.water_level - 23
local cave_biomes = {
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
"MangroveSwamp_underground"
}
local cave_min = mcl_vars.mg_overworld_min
local cave_max = water_level - 23
local swampy_biomes = {"Swampland", "MangroveSwamp"}
local swamp_light_max = 7
local swamp_min = water_level
local swamp_max = water_level + 27
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:slime_tiny", "mobs_mc:slime_tiny",
"overworld", "overworld",
"ground", "ground",
{ cave_biomes,
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
12000, 12000,
4, 4,
smin, cave_min,
smax) cave_max)
mcl_mobs:spawn_specific(
"mobs_mc:slime_tiny",
"overworld",
"ground",
swampy_biomes,
0,
swamp_light_max,
30,
12000,
4,
swamp_min,
swamp_max)
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:slime_small", "mobs_mc:slime_small",
"overworld", "overworld",
"ground", "ground",
{ cave_biomes,
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
8500, 8500,
4, 4,
smin, cave_min,
smax) cave_max)
mcl_mobs:spawn_specific(
"mobs_mc:slime_small",
"overworld",
"ground",
swampy_biomes,
0,
swamp_light_max,
30,
8500,
4,
swamp_min,
swamp_max)
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:slime_big", "mobs_mc:slime_big",
"overworld", "overworld",
"ground", "ground",
{ cave_biomes,
"FlowerForest_underground",
"JungleEdge_underground",
"StoneBeach_underground",
"MesaBryce_underground",
"Mesa_underground",
"RoofedForest_underground",
"Jungle_underground",
"Swampland_underground",
"MushroomIsland_underground",
"BirchForest_underground",
"Plains_underground",
"MesaPlateauF_underground",
"ExtremeHills_underground",
"MegaSpruceTaiga_underground",
"BirchForestM_underground",
"SavannaM_underground",
"MesaPlateauFM_underground",
"Desert_underground",
"Savanna_underground",
"Forest_underground",
"SunflowerPlains_underground",
"ColdTaiga_underground",
"IcePlains_underground",
"IcePlainsSpikes_underground",
"MegaTaiga_underground",
"Taiga_underground",
"ExtremeHills+_underground",
"JungleM_underground",
"ExtremeHillsM_underground",
"JungleEdgeM_underground",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
10000, 10000,
4, 4,
smin, cave_min,
smax) cave_max)
mcl_mobs:spawn_specific(
"mobs_mc:slime_big",
"overworld",
"ground",
swampy_biomes,
0,
swamp_light_max,
30,
10000,
4,
swamp_min,
swamp_max)
-- Magma cube -- Magma cube
local magma_cube_big = { local magma_cube_big = {
@ -345,7 +336,7 @@ local magma_cube_big = {
walk_chance = 0, walk_chance = 0,
fear_height = 0, fear_height = 0,
spawn_small_alternative = "mobs_mc:magma_cube_small", spawn_small_alternative = "mobs_mc:magma_cube_small",
on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 3, 0.8, 1.5), on_die = spawn_children_on_die("mobs_mc:magma_cube_small", 0.8, 1.5),
fire_resistant = true, fire_resistant = true,
} }
mcl_mobs.register_mob("mobs_mc:magma_cube_big", magma_cube_big) mcl_mobs.register_mob("mobs_mc:magma_cube_big", magma_cube_big)
@ -368,7 +359,7 @@ magma_cube_small.damage = 4
magma_cube_small.reach = 2.75 magma_cube_small.reach = 2.75
magma_cube_small.armor = 66 magma_cube_small.armor = 66
magma_cube_small.spawn_small_alternative = "mobs_mc:magma_cube_tiny" magma_cube_small.spawn_small_alternative = "mobs_mc:magma_cube_tiny"
magma_cube_small.on_die = spawn_children_on_die("mobs_mc:magma_cube_tiny", 4, 0.6, 1.0) magma_cube_small.on_die = spawn_children_on_die("mobs_mc:magma_cube_tiny", 0.6, 1.0)
mcl_mobs.register_mob("mobs_mc:magma_cube_small", magma_cube_small) mcl_mobs.register_mob("mobs_mc:magma_cube_small", magma_cube_small)
local magma_cube_tiny = table.copy(magma_cube_big) local magma_cube_tiny = table.copy(magma_cube_big)
@ -394,59 +385,52 @@ magma_cube_tiny.on_die = nil
mcl_mobs.register_mob("mobs_mc:magma_cube_tiny", magma_cube_tiny) mcl_mobs.register_mob("mobs_mc:magma_cube_tiny", magma_cube_tiny)
local mmin = mcl_vars.mg_nether_min local magma_cube_biomes = {"Nether", "BasaltDelta"}
local mmax = mcl_vars.mg_nether_max local nether_min = mcl_vars.mg_nether_min
local nether_max = mcl_vars.mg_nether_max
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:magma_cube_tiny", "mobs_mc:magma_cube_tiny",
"nether", "nether",
"ground", "ground",
{ magma_cube_biomes,
"Nether",
"BasaltDelta",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15000, 15000,
4, 4,
mmin, nether_min,
mmax) nether_max)
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:magma_cube_small", "mobs_mc:magma_cube_small",
"nether", "nether",
"ground", "ground",
{ magma_cube_biomes,
"Nether",
"BasaltDelta",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
15500, 15500,
4, 4,
mmin, nether_min,
mmax) nether_max)
mcl_mobs:spawn_specific( mcl_mobs:spawn_specific(
"mobs_mc:magma_cube_big", "mobs_mc:magma_cube_big",
"nether", "nether",
"ground", "ground",
{ magma_cube_biomes,
"Nether",
"BasaltDelta",
},
0, 0,
minetest.LIGHT_MAX+1, minetest.LIGHT_MAX+1,
30, 30,
16000, 16000,
4, 4,
mmin, nether_min,
mmax) nether_max)
-- spawn eggs -- spawn eggs
mcl_mobs.register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "#350000", "#fcfc00") mcl_mobs.register_egg("mobs_mc:magma_cube_big", S("Magma Cube"), "#350000", "#fcfc00")
mcl_mobs.register_egg("mobs_mc:slime_big", S("Slime"), "#52a03e", "#7ebf6d") mcl_mobs.register_egg("mobs_mc:slime_big", S("Slime"), "#52a03e", "#7ebf6d")
-- FIXME: add spawn eggs for small and tiny slimes and magma cubes

View File

@ -40,7 +40,7 @@ mcl_mobs.register_mob("mobs_mc:squid", {
run_end = 60, run_end = 60,
}, },
drops = { drops = {
{name = "mcl_dye:black", {name = "mcl_mobitems:ink_sac",
chance = 1, chance = 1,
min = 1, min = 1,
max = 3, max = 3,

Binary file not shown.

Before

Width:  |  Height:  |  Size: 702 B

View File

@ -87,7 +87,7 @@ local tropical_fish = {
chance = 1, chance = 1,
min = 1, min = 1,
max = 1,}, max = 1,},
{name = "mcl_dye:white", {name = "mcl_bone_meal:bone_meal",
chance = 20, chance = 20,
min = 1, min = 1,
max = 1,}, max = 1,},

View File

@ -479,7 +479,7 @@ local professions = {
}, },
{ {
{ { "mcl_core:gold_ingot", 3, 3 }, E1 }, { { "mcl_core:gold_ingot", 3, 3 }, E1 },
{ E1, { "mcl_dye:blue", 1, 1 } }, { E1, { "mcl_core:lapis", 1, 1 } },
}, },
{ {
{ { "mcl_mobitems:rabbit_foot", 2, 2 }, E1 }, { { "mcl_mobitems:rabbit_foot", 2, 2 }, E1 },

View File

@ -0,0 +1,3 @@
# textdomain: lightning
Let lightning strike at the specified position or player. No parameter will strike yourself.=指定された位置またはプレイヤーに落雷させます。 どのパラメータも自身を攻撃しません。
No position specified and unknown player=位置指定なし、プレイヤー不明

View File

@ -218,7 +218,7 @@ function mcl_raids.find_villager(pos)
end end
function mcl_raids.find_bed(pos) function mcl_raids.find_bed(pos)
return minetest.find_node_near(pos,128,{"mcl_beds:bed_red_bottom"}) return minetest.find_node_near(pos,32,{"mcl_beds:bed_red_bottom"})
end end
function mcl_raids.find_village(pos) function mcl_raids.find_village(pos)
@ -293,11 +293,13 @@ mcl_events.register_event("raid",{
exclusive_to_area = 128, exclusive_to_area = 128,
enable_bossbar = true, enable_bossbar = true,
cond_start = function(self) cond_start = function(self)
--minetest.log("Cond start raid")
local r = {} local r = {}
for _,p in pairs(minetest.get_connected_players()) do for _,p in pairs(minetest.get_connected_players()) do
if mcl_potions.player_has_effect(p,"bad_omen") then if mcl_potions.player_has_effect(p,"bad_omen") then
local raid_pos = mcl_raids.find_village(p:get_pos()) local raid_pos = mcl_raids.find_village(p:get_pos())
if raid_pos then if raid_pos then
--minetest.log("We have a raid position. Start raid")
table.insert(r,{ player = p:get_player_name(), pos = raid_pos }) table.insert(r,{ player = p:get_player_name(), pos = raid_pos })
end end
end end

View File

@ -0,0 +1,3 @@
# textdomain: mcl_void_damage
The void is off-limits to you!=奈落は立ち入り禁止!
@1 fell into the endless void.=@1は奈落の底に落ちていった。

View File

@ -0,0 +1,8 @@
# textdomain: mcl_weather
Gives ability to control weather=天候操作能力を付与
Changes the weather to the specified parameter.=指定されたパラメータの天気を変更します。
Error: No weather specified.=エラー:天候が指定されていません。
Error: Invalid parameters.=エラー:パラメータが無効です。
Error: Duration can't be less than 1 second.=エラー持続時間は1秒以下にはできません。
Error: Invalid weather specified. Use “clear”, “rain”, “snow” or “thunder”.=エラー:指定した天候が無効です。「晴天」、「降雨」、「降雪」、「雷雨」のいずれかを使用してください。
Toggles between clear weather and weather with downfall (randomly rain, thunderstorm or snow)=晴天と荒天(ランダムに降雨・雷雨・降雪)を切替

View File

@ -3,26 +3,35 @@ local NIGHT_VISION_RATIO = 0.45
local water_color = "#0b4880" local water_color = "#0b4880"
function mcl_weather.set_sky_box_clear(player) local mg_name = minetest.get_mapgen_setting("mg_name")
function mcl_weather.set_sky_box_clear(player, sky, fog)
local pos = player:get_pos() local pos = player:get_pos()
if minetest.get_item_group(minetest.get_node(vector.new(pos.x,pos.y+1.5,pos.z)).name, "water") ~= 0 then return end if minetest.get_item_group(minetest.get_node(vector.new(pos.x,pos.y+1.5,pos.z)).name, "water") ~= 0 then return end
player:set_sky({ local sc = {
type = "regular", day_sky = "#7BA4FF",
sky_color = { day_horizon = "#C0D8FF",
day_sky = "#92B9FF",
day_horizon = "#B4D0FF",
dawn_sky = "#B4BAFA", dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0", dawn_horizon = "#BAC1F0",
night_sky = "#006AFF", night_sky = "#000000",
night_horizon = "#4090FF", night_horizon = "#4A6790",
}, }
if sky then
sc.day_sky = sky
end
if fog then
sc.day_horizon = fog
end
player:set_sky({
type = "regular",
sky_color = sc,
clouds = true, clouds = true,
}) })
end end
function mcl_weather.set_sky_color(player, def) function mcl_weather.set_sky_color(player, def)
local pos = player:get_pos() local pos = player:get_pos()
if minetest.get_item_group(minetest.get_node(vector.new(pos.x,pos.y+1.5,pos.z)).name, "water") ~= 0 then return end if minetest.get_item_group(minetest.get_node(vector.offset(pos, 0, 1.5, 0)).name, "water") ~= 0 then return end
player:set_sky({ player:set_sky({
type = def.type, type = def.type,
sky_color = def.sky_color, sky_color = def.sky_color,
@ -124,9 +133,16 @@ mcl_weather.skycolor = {
}) })
end end
if dim == "overworld" then if dim == "overworld" then
local biomesky
local biomefog
if mg_name ~= "v6" and mg_name ~= "singlenode" then
local biome = minetest.get_biome_name(minetest.get_biome_data(player:get_pos()).biome)
biomesky = minetest.registered_biomes[biome]._mcl_skycolor
biomefog = minetest.registered_biomes[biome]._mcl_fogcolor
end
if (mcl_weather.state == "none") then if (mcl_weather.state == "none") then
-- Clear weather -- Clear weather
mcl_weather.set_sky_box_clear(player) mcl_weather.set_sky_box_clear(player,biomesky,biomefog)
player:set_sun({visible = true, sunrise_visible = true}) player:set_sun({visible = true, sunrise_visible = true})
player:set_moon({visible = true}) player:set_moon({visible = true})
player:set_stars({visible = true}) player:set_stars({visible = true})

View File

@ -10,10 +10,14 @@ local function spawn_zombies(self)
local p = vector.offset(nn[i%#nn],0,1,0) local p = vector.offset(nn[i%#nn],0,1,0)
if check_spawn_pos(p) then if check_spawn_pos(p) then
local m = mcl_mobs.spawn(p,"mobs_mc:zombie") local m = mcl_mobs.spawn(p,"mobs_mc:zombie")
local l = m:get_luaentity() if m then
l:gopath(self.pos) local l = m:get_luaentity()
table.insert(self.mobs,m) l:gopath(self.pos)
self.health_max = self.health_max + l.health table.insert(self.mobs, m)
self.health_max = self.health_max + l.health
else
--minetest.log("Failed to spawn zombie at location: " .. minetest.pos_to_string(p))
end
end end
end end
end end
@ -26,15 +30,24 @@ mcl_events.register_event("zombie_siege",{
exclusive_to_area = 128, exclusive_to_area = 128,
enable_bossbar = false, enable_bossbar = false,
cond_start = function(self) cond_start = function(self)
--minetest.log("Cond start zs")
local r = {}
local t = minetest.get_timeofday()
local pr = PseudoRandom(minetest.get_day_count()) local pr = PseudoRandom(minetest.get_day_count())
local rnd = pr:next(1,10) local rnd = pr:next(1,10)
local t = minetest.get_timeofday()
local r = {} if t < 0.04 and rnd == 1 then
for _,p in pairs(minetest.get_connected_players()) do --minetest.log("Well, it's siege time")
local village = mcl_raids.find_village(p:get_pos()) for _,p in pairs(minetest.get_connected_players()) do
if t < 0.04 and village and rnd == 1 then local village = mcl_raids.find_village(p:get_pos())
table.insert(r,{ player = p:get_player_name(), pos = village}) if village then
--minetest.log("Found village")
table.insert(r,{ player = p:get_player_name(), pos = village})
end
end end
else
--minetest.log("Not night for a siege, or not success")
end end
if #r > 0 then return r end if #r > 0 then return r end
end, end,

View File

@ -0,0 +1,51 @@
# textdomain:doc
<=<
>=>
Access to the requested entry has been denied; this entry is secret. You may unlock access by progressing in the game. Figure out on your own how to unlock this entry.=リクエストされたエントリーへのアクセスは拒否されました:このエントリーはシークレット要素です。ゲームを進行することでアクセスのロックを解除できるでしょう。このエントリーをアンロックする方法は、ご自身で見当をつけてみてください。
All entries read.=すべてのエントリーを読みます。
All help entries revealed!=ヘルプの全エントリーを公開!
All help entries are already revealed.=ヘルプのエントリーはすべて公開済みです。
Allows you to reveal all hidden help entries with /help_reveal=/help_reveal で隠れているヘルプエントリーをすべて表示できるようにする
Category list=カテゴリーリスト
Currently all entries in this category are hidden from you.=現在、このカテゴリのエントリーはすべて非表示になっています。
Unlock new entries by progressing in the game.=ゲームを進めることで、新たな項目をアンロックできます。
Help=ヘルプ
Entry=エントリー
Entry list=エントリーリスト
Error: Access denied.=エラー:アクセスが拒否されました。
Error: No help available.=エラー:利用可能なヘルプはありません。
Go to category list=カテゴリーリストへ
Go to entry list=エントリーリストへ
Help > @1=ヘルプ > @1
Help > @1 > @2=ヘルプ > @1 > @2
Help > @1 > (No Entry)=ヘルプ > @1 > (エントリーなし)
Help > (No Category)=ヘルプ > (カテゴリーなし)
Hidden entries: @1=隠れているエントリー:@1
Nameless entry (@1)=名無しのエントリー (@1)
New entries: @1=新しいエントリー:@1
New help entry unlocked: @1 > @2=新しいヘルプエントリーがアンロックされた:@1 > @2
No categories have been registered, but they are required to provide help.=カテゴリーは登録されてませんが、ヘルプを提供することが求められています。
The Documentation System [doc] does not come with help contents on its own, it needs additional mods to add help content. Please make sure such mods are enabled on for this world, and try again.=ドキュメンテーションシステム[doc]は、それ自体ではヘルプコンテンツを備えておらず、ヘルプコンテンツを追加するための追加MODが必要です。そのようなMODがこのワールドで有効になっていることを確認し、もう一度試してみてください。
Number of entries: @1=エントリー数:@1
OK=OK
Open a window providing help entries about Minetest and more=Minetestに関するヘルプなどを表示するウィンドウを開く
Please select a category you wish to learn more about:=詳細を知りたいカテゴリーを選択してください:
Recommended mods: doc_basics, doc_items, doc_identifier, doc_encyclopedia.=推奨MODdoc_basics、doc_items、doc_identifier、doc_encyclopedia
Reveal all hidden help entries to you=隠れているヘルプをすべて表示する
Show entry=エントリーを表示
Show category=カテゴリーを表示
Show next entry=次のエントリーを表示
Show previous entry=前のエントリーを表示
This category does not have any entries.=このカテゴリにはエントリーがありません。
This category has the following entries:=このカテゴリには以下のエントリーがあります:
This category is empty.=このカテゴリは空っぽです。
This is the help.=これはヘルプです。
You haven't chosen a category yet. Please choose one in the category list first.=まだカテゴリーが選択されていません。まずはカテゴリーリストからひとつ選択してください。
You haven't chosen an entry yet. Please choose one in the entry list first.=まだエントリーが選択されていません。まずはエントリーリストからひとつ選択してください。
Collection of help texts=ヘルプテキスト集
Notify me when new help is available=新しいヘルプが利用可能になったら通知する
Play notification sound when new help is available=新しいヘルプが利用可能になったときに通知音を再生する
Show previous image=前の画像を表示
Show previous gallery page=前のギャラリーページを表示
Show next image=次の画像を表示
Show next gallery page=次のギャラリーページを表示

View File

@ -0,0 +1,18 @@
# textdomain:doc_identifier
Error: This node, item or object is undefined. This is always an error.=エラー:このノード、アイテム、またはオブジェクトは未定義です。これは常にエラーになります。
This can happen for the following reasons:=これは、次のような理由で起こり得ます:
• The mod which is required for it is not enabled=・そのために必要なMODが有効になっていない
• The author of the game or a mod has made a mistake=・ゲームの作者やMODがミスをした場合
It appears to originate from the mod “@1”, which is enabled.=有効になっているMOD“@1”から発生しているようです。
It appears to originate from the mod “@1”, which is not enabled!=有効化されていないMOD“@1”から発生しているようです
Its identifier is “@1”.=その識別子は“@1”です。.
Lookup Tool=検索ツール
No help entry for this block could be found.=このブロックのヘルプエントリーは見つかりませんでした。
No help entry for this item could be found.=このアイテムのヘルプエントリーは見つかりませんでした。
No help entry for this object could be found.=このオブジェクトのヘルプエントリーは見つかりませんでした。
OK=OK
Punch any block, item or other thing about you wish to learn more about. This will open up the appropriate help entry. The tool comes in two modes which are changed by using. In liquid mode, this tool points to liquids as well while in solid mode this is not the case.=ブロックやアイテムなど、詳しく知りたいものをパンチしてください。すると適切なヘルプエントリーが表示されます。この道具には2つのモードがあり、使用することで変更されます。液体モードでは、この道具は液体もポイントしますが、固体モードではそのようなことはありません。
This block cannot be identified because the world has not materialized at this point yet. Try again in a few seconds.=
This is a player.=このブロックは、この時点ではまだ世界が具現化されていないため、識別できません。数秒後に再試行してください。
This useful little helper can be used to quickly learn more about about one's closer environment. It identifies and analyzes blocks, items and other things and it shows extensive information about the thing on which it is used.=この便利な小さいヘルプ機能は、自分の身近な環境について手っ取り早く知るために使えます。ブロックやアイテムなどを識別して分析し、使用されているものに関する幅広い情報を表示します。
Show help for pointed thing=ポイントしたものをヘルプで表示する

View File

@ -0,0 +1,143 @@
# textdomain:doc_items
Using it as fuel turns it into: @1.=燃料として使うと次のように変化します:@1.
@1 seconds=@1秒
# Item count times item name
@1×@2=@1×@2
# Itemname (25%)
@1 (@2%)=@1 (@2%)
# Itemname (<0.5%)
@1 (<0.5%)=@1 (<0.5%)
# Itemname (ca. 25%)
@1 (ca. @2%)=@1 (ca. @2%)
# List separator (e.g. “one, two, three”)
, =、
# Final list separator (e.g. “One, two and three”)
and =
1 second=1秒
A transparent block, basically empty space. It is usually left behind after digging something.=透明なブロックで、基本的には何もない空間です。たいていは何かを掘った後に残ります。
Air=空気
Blocks=ブロック
Building another block at this block will place it inside and replace it.=このブロックのところに別のブロックを構築すると、中に入って置き換わります。
Building this block is completely silent.=このブロックの構築は、完全に無音です。
Collidable: @1=衝突性:@1
Description: @1=概要:@1
Falling blocks can go through this block; they destroy it when doing so.=落下したブロックは、このブロックをスルーできますが、その際にブロックを破壊してしまいます。
Full punch interval: @1 s=全力攻撃の間隔:@1秒
Hand=手
Hold it in your hand, then leftclick to eat it.=手に持って、左クリックで食べます。
Hold it in your hand, then leftclick to eat it. But why would you want to do this?=手に持って、左クリックで食べます。しかし、なぜこんなことをしたいのでしょうか?
Item reference of all wieldable tools and weapons=すべての携行可能な道具と武器の、アイテム参照
Item reference of blocks and other things which are capable of occupying space=空間の占有が可能なブロックその他の、アイテム参照
Item reference of items which are neither blocks, tools or weapons (esp. crafting items)=ブロックでも道具でも武器でもないアイテム(特にクラフトアイテム)の、アイテム参照
Liquids can flow into this block and destroy it.=このブロックに液体が流れ込み、破壊されることがあります。
Maximum stack size: @1=最大スタックサイズ:@1
Mining level: @1=採掘レベル:@1
Mining ratings:=採掘レート:
• @1, rating @2: @3 s - @4 s=・ @1, レート @2@3秒 - @4秒
• @1, rating @2: @3 s=・ @1, レート @2@3秒
Mining times:=採掘時間:
Mining this block is completely silent.=このブロックの採掘は、完全に無音です。
Miscellaneous items=その他の雑多なアイテム
No=いいえ
Pointable: No=ポイント可能:いいえ
Pointable: Only by special items=ポイント可能:特殊なアイテムのみ
Pointable: Yes=ポイント可能:はい
Punches with this block don't work as usual; melee combat and mining are either not possible or work differently.=このブロックでのパンチは、普段通りには機能しません:近接戦闘と採掘は不可能か、動作が異なります。
Punches with this item don't work as usual; melee combat and mining are either not possible or work differently.=このアイテムでのパンチは、普段通りには機能しません:近接戦闘と採掘は不可能か、動作が異なります。
Punches with this tool don't work as usual; melee combat and mining are either not possible or work differently.=この道具でのパンチは、普段通りには機能しません:近接戦闘と採掘は不可能か、動作が異なります。
Range: @1=範囲:@1
# Range: <Hand> (<Range>)
Range: @1 (@2)=範囲:@1 (@2)
Range: 4=範囲4
# Rating used for digging times
Rating @1=レート@1
# @1 is minimal rating, @2 is maximum rating
Rating @1-@2=レート@1-@2
The fall damage on this block is increased by @1%.=このブロックでの落下ダメージが@1%増加する。
The fall damage on this block is reduced by @1%.=このブロックでの落下ダメージが@1%軽減する。
This block allows light to propagate with a small loss of brightness, and sunlight can even go through losslessly.=このブロックは、明るさのロスが少ない光の伝搬を可能にし、太陽光であればロスなしで通過することさえできます。
This block allows light to propagate with a small loss of brightness.=このブロックは、明るさのロスが少ない光の伝搬を可能にします。
This block allows sunlight to propagate without loss in brightness.=このブロックは、太陽光を明るさのロスなしで伝搬させることができます。
This block belongs to the @1 group.=このブロックは、@1グループに属しています。
This block belongs to these groups: @1.=このブロックは、次のグループに属しています:@1
This block can be climbed.=このブロックはよじ登ることができます。
This block can be destroyed by any mining tool immediately.=このブロックは、どの採掘道具でも即座に壊せます。
This block can be destroyed by any mining tool in half a second.=このブロックは、どの採掘道具でもコンマ5秒で壊せます。
This block can be mined by any mining tool immediately.=このブロックは、どの採掘道具でも即座に掘れます。
This block can be mined by any mining tool in half a second.=このブロックは、どの採掘道具でもコンマ5秒で掘れます。
This block can be mined by mining tools which match any of the following mining ratings and its toughness level.=このブロックは、以下の採掘レートとタフネスレベルのいずれかに合致する採掘道具で掘れます。
This block can not be destroyed by ordinary mining tools.=このブロックは、通常の採掘道具では壊せません。
This block can not be mined by ordinary mining tools.=このブロックは、通常の採掘道具では掘れません。
This block can serve as a smelting fuel with a burning time of @1.=このブロックは、燃焼時間@1の製錬燃料として使用できます。
This block causes a damage of @1 hit point per second.=このブロックは、毎秒@1HPのダメージを生じます。
This block causes a damage of @1 hit points per second.=このブロックは、毎秒@1HPのダメージを生じます。
This block connects to blocks of the @1 group.=このブロックは、@1グループのブロックに接続します。
This block connects to blocks of the following groups: @1.=このブロックは、次のグループのブロックに接続します:@1
This block connects to these blocks: @1.=このブロックは、次のブロックに接続します:@1
This block connects to this block: @1.=このブロックは、このブロックに接続します:@1
This block decreases your breath and causes a drowning damage of @1 hit point every 2 seconds.=このブロックは呼吸を減少させ, 2秒毎に@1HPの窒息ダメージを与えます.
This block decreases your breath and causes a drowning damage of @1 hit points every 2 seconds.=このブロックは呼吸を減少させ, 2秒毎に@1HPの窒息ダメージを与えます.
This block is a light source with a light level of @1.=このブロックは、明るさ@1の光源です。
This block glows faintly with a light level of @1.=このブロックは、明るさ@1でぼんやりと光ります。
This block is a building block for creating various buildings.=このブロックは、さまざまな建物を作るための建築ブロックです。
This block is a liquid with these properties:=このブロックは、こうした性質を持つ液体です:
This block is affected by gravity and can fall.=このブロックは重力の影響を受け、落下することがあります。
This block is completely silent when mined or built.=このブロックを採掘や建設する時は、完全に無音です。
This block is completely silent when walked on, mined or built.=このブロックを採掘・建設・歩行する時は、完全に無音です。
This block is destroyed when a falling block ends up inside it.=このブロックは、落下してきたブロックがその中に入ってしまうと破壊されます。
This block negates all fall damage.=このブロックは、すべての落下ダメージを無効化します。
This block points to liquids.=このブロックは液体を指します。
This block will drop as an item when a falling block ends up inside it.=このブロックは、落下してきたブロックがその中に入ってしまうと、アイテムとしてドロップされます。
This block will drop as an item when it is not attached to a surrounding block.=このブロックは、周囲のブロックとくっついていないときに、アイテムとしてドロップされます。
This block will drop as an item when no collidable block is below it.=このブロックは、その下に衝突可能なブロックがない場合、アイテムとしてドロップされます。
This block will drop the following items when mined: @1.=このブロックを掘ると、次のアイテムをドロップします:@1
This block will drop the following when mined: @1×@2.=このブロックを掘ると、次のものをドロップします:@1×@2
This block will drop the following when mined: @1.=このブロックを掘ると、次のものをドロップします:@1
This block will drop the following when mined: @1.=このブロックを掘ると、次のものをドロップします:@1
This block will make you bounce off with an elasticity of @1%.=このブロックは、@1%の弾力性で跳ね返します。
This block will randomly drop one of the following when mined: @1.=このブロックを掘ると、次のいずれかがランダムにドロップされます:@1
This block will randomly drop up to @1 drops of the following possible drops when mined: @2.=このブロックを掘ると、次の可能なドロップのうち、最大@1個をランダムにドロップします@2
This block won't drop anything when mined.=このブロックは、掘っても何もドロップしません。
This is a decorational block.=これは装飾用のブロックです。
This is a melee weapon which deals damage by punching.=これは殴りつけることでダメージを与える近接武器です。
Maximum damage per hit:=一発あたりの最大ダメージ:
This item belongs to the @1 group.=このアイテムは、@1グループに属しています。
This item belongs to these groups: @1.=このアイテムは、次のグループに属しています:@1
This item can serve as a smelting fuel with a burning time of @1.=このアイテムは、燃焼時間@1の製錬燃料として使用できます。
This item is primarily used for crafting other items.=このアイテムは主に、他のアイテムのクラフトに使われます。
This item points to liquids.=このアイテムは液体を指します。
This tool belongs to the @1 group.=この道具は、@1グループに属しています。
This tool belongs to these groups: @1.=この道具は、次のグループに属しています:@1
This tool can serve as a smelting fuel with a burning time of @1.=この道具は、燃焼時間@1の製錬燃料として使用できます。
This tool is capable of mining.=この道具は採掘が可能です。
Maximum toughness levels:=最大タフネスレベル:
This tool points to liquids.=この道具は液体を指します。
Tools and weapons=道具と武器
Unknown Node=不明なノード
Usage help: @1=使用方法のヘルプ:@1
Walking on this block is completely silent.=このブロックを歩くと、完全に無音です。
Whenever you are not wielding any item, you use the hand which acts as a tool with its own capabilities. When you are wielding an item which is not a mining tool or a weapon it will behave as if it would be the hand.=アイテムを手に持っていない時は、なんどきでも素手を道具として使えます。採掘道具でも武器でもないアイテムを手に持っている時は、あたかも素手であるかのように振る舞います。
Yes=はい
You can not jump while standing on this block.=このブロックの上に立っている間は、ジャンプできません。
any level=任意のレベル
level 0=レベル 0
level 0-@1=レベル 0-@1
unknown=不明
Unknown item (@1)=不明なアイテム (@1)
• @1: @2=・@1@2
• @1: @2 HP=・@1@2 HP
• @1: @2, @3=・@1@2, @3
• Flowing range: @1=・流動範囲:@1
• No flowing=・流れない
• Not renewable=・再生不能
• Renewable=・再生可能
• Viscosity: @1=・粘度:@1
Itemstring: "@1"=アイテム文字列:"@1"
Durability: @1 uses=耐久度:@1回 使用
Durability: @1=耐久度:@1
Mining 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.=このブロックの回転は、置き方に影響されます:床や天井に置くと垂直方向、横に置くと水平方向になります。スニークしながら置くと、代わって直角の方向に向きます。
Toughness level: @1=タフネスレベル:@1
This block is slippery.=このブロックは滑りやすいです。

View File

@ -0,0 +1,37 @@
# textdomain: craftguide
Any shulker box=シュルカーボックス
Any wool=羊毛
Any wood planks=板材
Any wood=木
Any sand=砂
Any normal sandstone=普通の砂岩
Any red sandstone=赤い砂岩
Any carpet=カーペット
Any dye=染料
Any water bucket=水入りバケツ
Any flower=花
Any mushroom=キノコ
Any wooden slab=木製のスラブ
Any wooden stairs=木製の階段
Any coal=石炭
Any kind of quartz block=クォーツブロック
Any kind of purpur block=プルプァブロック
Any stone bricks=石レンガ
Any stick=棒
Any item belonging to the @1 group=@1 グループに属する任意のアイテム
Any item belonging to the groups: @1=次のグループに属する任意のアイテム:@1
Search=検索
Reset=リセット
Previous page=前ページ
Next page=次ページ
Usage @1 of @2=使用方法 @1@2
Recipe @1 of @2=レシピ @1@2
Burning time: @1=燃焼時間:@1
Cooking time: @1=調理時間:@1
Recipe is too big to be displayed (@1×@2)=レシピを表示するには大きすぎる (@1×@2)
Shapeless=不定形
Cooking=調理
Increase window size=ウィンドウサイズ拡大
Decrease window size=ウィンドウサイズ縮小
No item to show=表示するアイテムなし
Collect items to reveal more recipes=アイテムを集めて、より多くのレシピを明かす

View File

@ -0,0 +1,79 @@
# textdomain: mcl_doc
Water can flow into this block and cause it to drop as an item.=このブロックに水が流れ込むと、アイテムとしてドロップすることがあります。
This block can be turned into dirt with a hoe.=このブロックは、クワで土に変えられます。
This block can be turned into farmland with a hoe.=このブロックは、クワで農地に変えられます。
This block acts as a soil for all saplings.=このブロックは、あらゆる苗木の土壌として作用します。
This block acts as a soil for some saplings.=このブロックは、いくつかの苗木の土壌として作用します。
Sugar canes will grow on this block.=このブロックには、サトウキビが生育します。
Nether wart will grow on this block.=このブロックには、ネザーウォートが生育します。
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.=このブロックは、@1の距離内にどの種の木材ブロックもないとき、たちまち腐敗します。 腐敗すると消滅し、通常のドロップを1つ落とすことがあります。ブロックがプレイヤーによって置かれているときは、朽ちることはありません。
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.=このブロックは、@1の距離内にどの種の木材ブロックもないとき、すぐさま腐敗して消滅します。
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.=この植物は、草原や土の上にしか生育できません。生え抜くためには、上空に遮るものがないか、明るさ8以上で照らされる環境が必要です。
This plant can grow on grass blocks, podzol, dirt and coarse 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.=この植物は、草原、ポドゾル、土、粗い土の上に生育できます。生え抜くためには、上空に遮るものがないか、明るさ8以上で照らされる環境が必要です。
This block is flammable.=このブロックは可燃性です。
This block destroys any item it touches.=このブロックは、それに触れたどんなアイテムも壊します。
To eat it, wield it, then rightclick.=食べるには、手に持ってから右クリックします。
You can eat this even when your hunger bar is full.=満腹ゲージが満タンでも、これは食べられます。
You cannot eat this when your hunger bar is full.=満腹ゲージが満タンなら、これは食べられません。
To drink it, wield it, then rightclick.=飲むには、手に持ってから右クリックします。
You cannot drink this when your hunger bar is full.=満腹ゲージが満タンなら、これは飲めません。
To consume it, wield it, then rightclick.=消費するには、手に持ってから右クリックします。
You cannot consume this when your hunger bar is full.=満腹ゲージが満タンなら、これは消費できません。
You have to wait for about 2 seconds before you can eat or drink again.=また飲み食いできるようになるまで、2秒くらい待たねばなりません。
Hunger points restored: @1=満腹度回復:@1
Saturation points restored: @1%.1f=隠し満腹度回復:@1.1f
This item can be repaired at an anvil with: @1.=このアイテムは、金床と次のもので修理できます:@1
This item can be repaired at an anvil with any wooden planks.=このアイテムは、金床と板材で修理できます。
This item can be repaired at an anvil with any item in the “@1” group.=このアイテムは、金床と"@1"グループのアイテムで修理できます。
This item cannot be renamed at an anvil.=このアイテムは、金床で名前を変更できません。
This block crushes any block it falls into.=このブロックが落ちると、どんなブロックでも潰します。
When this block falls deeper than 1 block, it causes damage to any player it hits. The damage dealt is B×22 hit points with B @= number of blocks fallen. The damage can never be more than 40 HP.=このブロックが1ブロックより深く落ちたとき、当たったプレイヤーにダメージを与えます。受けるダメージは B×2 -2HP と B @=落ちたブロック数。ダメージは40HP以上になることはありません。
Diamond Pickaxe=ダイヤモンドのツルハシ
Iron Pickaxe=鉄のツルハシ
Stone Pickaxe=石のツルハシ
Golden Pickaxe=金のツルハシ
Wooden Pickaxe=木製のツルハシ
Diamond Axe=ダイヤモンドの斧
Iron Axe=鉄の斧
Stone Axe=石の斧
Golden Axe=金の斧
Wooden Axe=木製の斧
Diamond Shovel=ダイヤモンドのシャベル
Iron Shovel=鉄のシャベル
Stone Shovel=石のシャベル
Golden Shovel=金のシャベル
Wooden Shovel=木製のシャベル
This block can be mined by any tool instantly.=このブロックは、どんな道具を使ってもすぐに掘れます。
This block can be mined by:=このブロックは次のもので掘れます:
Hardness: ∞=硬さ:∞
Hardness: @1=硬さ:@1
This block will not be destroyed by TNT explosions.=このブロックは、TNTの爆発では壊れません。
This block drops itself when mined by shears.=このブロックはハサミで掘ると、それ自体をドロップします。
@1×@2=@1×@2
This blocks drops the following when mined by shears: @1=このブロックはハサミで掘ると、次のものをドロップします:@1
, =,
• Shears=・ハサミ
• Sword=・剣
• Hand=・手
This is a melee weapon which deals damage by punching.=これは殴りつけることでダメージを与える近接武器です。
Maximum damage: @1 HP=最大ダメージ:@1 HP
Full punch interval: @1 s=全力攻撃の間隔:@1秒
This tool is capable of mining.=この道具は採掘が可能です。
Mining speed: @1=採掘速度:@1
Painfully slow=苦痛レベルで遅い
Very slow=とても遅い
Slow=遅い
Fast=速い
Very fast=とても速い
Extremely fast=とてつもなく速い
Instantaneous=瞬間的
@1 uses=@1 使用
Unlimited uses=無限に使用可能
Block breaking strength: @1=ブロック破壊力:@1
Mining durability: @1=採掘耐久度:@1
Armor points: @1=防具値:@1
Armor durability: @1=防具耐久度:@1
It can be worn on the head.=頭に装着することもできます。
It can be worn on the torso.=胴体に装着することもできます。
It can be worn on the legs.=脚部に装着することもできます。
It can be worn on the feet.=足に装着することもできます。

View File

@ -0,0 +1,511 @@
# textdomain: mcl_doc_basics
Basics=基礎編
Everything you need to know to get started with playing=プレイを始めるために必要なすべてのこと
Advanced usage=高度な使用方法
Advanced information which may be nice to know, but is not crucial to gameplay=知っておくと便利だが、ゲームプレイには重要でない高度な情報
Quick start=クイックスタート
This is a very brief introduction to the basic gameplay:=基本的なゲームプレイの簡素な紹介:
Basic controls:=基本操作:
• Move mouse to look=・マウスを動かして見る
• [W], [A], [S] and [D] to move=・[W]、[A]、[S]、[D]で移動
• [E] to sprint=・[E]で走る
• [Space] to jump or move upwards=・[Space]でジャンプ 上昇
• [Shift] to sneak or move downwards=・[Shift]でスニーク 下降
• Mouse wheel or [1]-[9] to select item=・マウスホイールか[1]-[9]でアイテム選択
• Left-click to mine blocks or attack=・左クリックでブロックを掘る 攻撃
• Recover from swings to deal full damage=・最大ダメージを与えるには攻撃間隔にインターバルが必要
• Right-click to build blocks and use things=・右クリックでブロックを積む モノを使う
• [I] for the inventory=・[I]でインベントリ画面
• First items in inventory appear in hotbar below=・インベントリの最初のアイテムが、下のホットバーに表示される
• Lowest row in inventory appears in hotbar below=・インベントリ最後尾のアイテムが、下のホットバーに表示される
• [Esc] to close this window=・[Esc]でこのウィンドウを閉じる
How to play:=プレイ方法
• Punch a tree trunk until it breaks and collect wood=・木の幹が折れるまで叩き、木材を集める
• Place the wood into the 2×2 grid (your “crafting grid”) in your inventory menu and craft 4 wood planks=・インベントリメニューの2×2グリッドクラフト用グリッドに木を置き、板材を4枚クラフト
• Place them in a 2×2 shape in the crafting grid to craft a crafting table=・それらをクラフトグリッドに2×2の形で配置し、作業台をクラフト
• Place the crafting table on the ground=・作業台を地面に置く
• Rightclick it for a 3×3 crafting grid=・それを右クリックで、3×3のクラフトグリッドが表示される
• Use the crafting guide (book icon) to learn all the possible crafting recipes=・クラフトガイド(本のアイコン)を使い、可能な限りのクラフトレシピを学ぶ
• Craft a wooden pickaxe so you can dig stone=・石を掘れるようになるために、木製のツルハシをクラフト
• Different tools break different kinds of blocks. Try them out!=・道具によって壊せるブロックの種類が異なる。試してみよう!
• Read entries in this help to learn the rest=・続きを学ぶには、このヘルプのエントリーを読む
• Continue playing as you wish. There's no goal. Have fun!=・思いのままにプレイを続けよう。ゴールはありません。楽しんで!
Minetest=Minetestマインテスト
Minetest is a free software game engine for games based on voxel gameplay, inspired by InfiniMiner, Minecraft, and the like. Minetest was originally created by Perttu Ahola (alias “celeron55”).=Minetestは、InfiniMinerやMinecraftなどに影響を受けた、ボクセルゲームプレイに基づいたゲームのためのフリーソフトウェア・ゲームエンジンです。Minetestのオリジナルは、Perttu Ahola (別名"celeron55") によって作成されました。
The player is thrown into a huge world made out of cubes or blocks. These cubes usually make the landscape they blocks can be removed and placed almost entirely freely. Using the collected items, new tools and other items can be crafted. Games in Minetest can, however, be much more complex than this.=プレイヤーは、立方体やブロックでできた巨大な世界に放り込まれます。これらのキューブは大抵、ほぼ自由にブロックを削除・配置でき、景観を作りあげます。収集したアイテムを使って、新しい道具や他のアイテムを作れます。Minetestのゲームは、しかし、これよりもはるかに複雑にできます。
A core feature of Minetest is the built-in modding capability. Mods modify existing gameplay. They can be as simple as adding a few decorational blocks or be very complex by e.g. introducing completely new gameplay concepts, generating a completely different kind of world, and many other things.=Minetestの中核を成すのは、組み込みのMODモディファイ機能です。MODとは、既存のゲームプレイを改造するものです。装飾ブロックを追加するだけの簡単なものから、全く新しいゲームプレイコンセプトを導入したり、全く異なる種類の世界を生成したりする非常に複雑なものまで、多岐にわたります。
Minetest can be played alone or online together with multiple players. Online play will work out of the box with any mods, with no need for additional software as they are entirely provided by the server.=Minetestは、一人でプレイすることも、複数のプレイヤーと一緒にオンラインでプレイすることも可能です。サーバーが全てを提供するため、どんなMODでもオンラインプレイはそのまま動作し、追加のソフトウェアも要りません。
Minetest is usually bundled with a simple default game, named “Minetest Game” (shown in images 1 and 2). You probably already have it. Other games for Minetest can be downloaded from the official Minetest forums <https://forum.minetest.net/viewforum.php?f@=48>.=Minetestには通常、「Minetest Game」という名前のシンプルな基本のゲームが同梱されています画像1、2のとおり。おそらく、すでにお持ちでしょう。Minetest用の他のゲームは、Minetestの公式フォーラム <https://forum.minetest.net/viewforum.php?f@=48> からダウンロードできます。
Minetest as well as Minetest Game are both unfinished at the moment, so please forgive us when not everything works out perfectly.=MinetestもMinetest Gameも現在未完成なので、すべてが完璧とは言えませんが、ご容赦を。
Sneaking=スニーキング
Sneaking makes you walk slower and prevents you from falling off the edge of a block.=スニークすると遅く歩くようになり、またブロックの端から落下するのを防ぐ効果もあります。
To sneak, hold down the sneak key (default: [Shift]). When you release it, you stop sneaking. Careful: When you release the sneak key at a ledge, you might fall!=スニークするには、スニークキー(デフォルト:[Shift])を押してください。離すとスニーキングをやめます。注:崖っぷちでスニークキーを離すと、落ちるかもしれません!
• Sneak: [Shift]=・スニーク:[Shift]
Sneaking only works when you stand on solid ground, are not in a liquid and don't climb.=スニーキングは、固い地面の上に立ち、液体の中におらず、よじ登ったりしていない場合にのみ有効です。
If you jump while holding the sneak key, you also jump slightly higher than usual.=スニークキーを押しながらジャンプすると、通常より少し高くジャンプするようにもなっています。
Sneaking might be disabled by mods. In this case, you still walk slower by sneaking, but you will no longer be stopped at ledges.=スニーキングはMODによって無効化される場合があります。この場合、歩行の鈍化は残りますが、崖っぷちに留まる機能は無くなっています。
Controls=操作
These are the default controls:=デフォルトの操作:
Basic movement:=基本的な移動:
• Moving the mouse around: Look around=・マウスの移動:周りを見る
• W: Move forwards=・W前方移動
• A: Move to the left=・A左移動
• D: Move to the right=・D右移動
• S: Move backwards=・S後方移動
• E: Sprint=・E走る
While standing on solid ground:=固い地面に立ちながら:
• Space: Jump=・Spaceジャンプ
• Shift: Sneak=・Shiftスニーク
While on a ladder, swimming in a liquid or fly mode is active=ハシゴに登上・液中で遊泳・飛行モードが有効などの間:
• Space: Move up=・Space上昇
• Shift: Move down=・Shift下降
Extended movement (requires privileges):=拡張移動(要権限):
• J: Toggle fast mode, makes you run or fly fast (requires “fast” privilege)=・J高速モードに切替えで、走行・飛行が速くなる要 "fast" 権限)
• K: Toggle fly mode, makes you move freely in all directions (requires “fly” privilege)=・K飛行モードに切替えで、全方向に自由移動が可能要 "fly" 権限)
• H: Toggle noclip mode, makes you go through walls in fly mode (requires “noclip” privilege)=・H壁抜けモードに切替えで、飛行モード中に壁抜けが可能要 "noclip" 権限)
• E: Move even faster when in fast mode=・E高速モードではさらに速く移動
• E: Walk fast in fast mode=・E高速モードで早歩き
World interaction:=ワールドでの作用:
• Left mouse button: Punch / mine blocks / take items=・左クリック:叩く ブロック採掘 アイテム取得
• Left mouse button: Punch / mine blocks=・左クリック:叩く ブロック採掘
• Right mouse button: Build or use pointed block=・右クリック:指定したブロックを設置または使用
• Shift+Right mouse button: Build=・Shift + 右クリック:設置
• Roll mouse wheel: Select next/previous item in hotbar=・マウスホイール回転:ホットバーのアイテム選択 次/前
• Roll mouse wheel / B / N: Select next/previous item in hotbar=・マウスホイール回転 / B / Nホットバーのアイテム選択 次/前
• 1-9: Select item in hotbar directly=・1-9ホットバーのアイテムを直で選択
• Q: Drop item stack=・Qアイテムをスタック一括でドロップ
• Shift+Q: Drop 1 item=・Shift + Qアイテムを一個単位でドロップ
• I: Show/hide inventory menu=・Iインベントリメニューの表示/非表示
Inventory interaction:=インベントリでの作用:
See the entry “Basics > Inventory”.=エントリー“Basics > Inventory”を参照の事。
Camera:=カメラ:
• Z: Zoom=・Zズーム
• F7: Toggle camera mode=・F7カメラモード切替
• F8: Toggle cinematic mode=・F8シネマティックモード切替
Interface:=インターフェイス:
• Esc: Open menu window (pauses in single-player mode) or close window=・Esc
• F1: Show/hide HUD=・F1HUDの表示/非表示
• F2: Show/hide chat=・F2チャットの表示/非表示
• F9: Toggle minimap=・F9ミニマップ切替
• Shift+F9: Toggle minimap rotation mode=・Shift + F9ミニマップの回転モード切替
• F10: Open/close console/chat log=・F10コンソール/チャットログの開/閉
• F12: Take a screenshot=・F12スクリーンショットを撮る
Server interaction:=サーバーでの作用:
• T: Open chat window (chat requires the “shout” privilege)=・Tチャットウィンドウを開くチャットには "shout" 権限が必要)
• /: Start issuing a server command=・/:サーバーコマンドの発行開始
Technical:=技術的なやつ:
• R: Toggle far view (disables all fog and allows viewing far away, can make game very slow)=・R遠景の切替えすべてのフォグを無効にして遠景を望めるが、ゲームを非常に遅くする場合あり
• +: Increase minimal viewing distance=・+:最短視野距離の拡大
• -: Decrease minimal viewing distance=・-:最短視野距離の縮小
• F3: Enable/disable fog=・F3フォグの有効/無効
• F5: Enable/disable debug screen which also shows your coordinates=・F5座標表示付デバッグ画面の有効/無効
• F6: Only useful for developers. Enables/disables profiler=・F6開発者のみに有用。プロファイラの有効化/無効化
• P: Only useful for developers. Writes current stack traces=・P開発者のみに有用。現在のスタックトレースを書き込む
Players=プレイヤー
Players (actually: “player characters”) are the characters which users control.=プレイヤー(正しくは「プレイヤーキャラクター」)とは、ユーザーが操作するキャラクターを指します。
Players are living beings. They start with a number of health points (HP) and a number of breath points (BP).=プレイヤーは生きている存在です。多数のHPヘルスポイントとBPブレスポイントでスタートします。
Players are capable of walking, sneaking, jumping, climbing, swimming, diving, mining, building, fighting and using tools and blocks.=プレイヤーは、歩く、忍び寄る、ジャンプする、よじ登る、泳ぐ、潜る、採掘する、建てる、戦う、そして道具やブロックを使うことができます。
Players can take damage for a variety of reasons, here are some:=プレイヤーはさまざまな理由でダメージを受けますが、いくつか紹介します:
• Taking fall damage=・落下ダメージを受ける
• Touching a block which causes direct damage=・直接ダメージを与えるブロックに触れる
• Drowning=・溺れる
• Being attacked by another player=・他のプレイヤーから攻撃される
• Being attacked by a computer enemy=・コンピュータの敵から攻撃される
At a health of 0, the player dies. The player can just respawn in the world.=体力が0になると、プレイヤーは死亡します。プレイヤーはワールドにただリスポーンします。
Other consequences of death depend on the game. The player could lose all items, or lose the round in a competitive game.=その他、死亡した場合の結果はゲームによって異なります。プレイヤーはすべてのアイテムを失ったり、対戦ゲームでは失点する可能性があります。
Some blocks reduce breath. While being with the head in a block which causes drowning, the breath points are reduced by 1 for every 2 seconds. When all breath is gone, the player starts to suffer drowning damage. Breath is quickly restored in any other block.=いくつかの溺れる効果のあるブロックに頭を入れている間は、2秒ごとにBPブレスポイントが1ずつ減少します。息がなくなると、溺水ダメージを受けるようになります。そのほかのブロックではすぐに呼吸が回復します。
Damage can be disabled on any world. Without damage, players are immortal and health and breath are unimportant.=ダメージはどのワールドでも無効にできます。 ダメージがなければプレイヤーは不死であり、ヘルスやブレスは重要ではありません。
In multi-player mode, the name of other players is written above their head.=マルチプレイモードでは、他のプレイヤーの頭上に名前が表示されます。
Items=アイテム
Items are things you can carry along and store in inventories. They can be used for crafting, smelting, building, mining, and more. Types of items include blocks, tools, weapons and items only used for crafting.=アイテムは、携行したりインベントリに格納したりできるものです。クラフト、製錬、建築、採掘などに使えます。アイテムの分類としては、ブロック、ツール、武器、そしてクラフト専用アイテム等があります。
An item stack is a collection of items of the same type which fits into a single item slot. Item stacks can be dropped on the ground. Items which drop into the same coordinates will form an item stack.=アイテムスタックとは、1つのアイテムスロットに入る、同一種アイテムのまとまりです。アイテムスタックは地面に落とせます。同じ座標にドロップしたアイテムは、アイテムスタックを形成します。
Dropped item stacks will be collected automatically when you stand close to them.=ドロップしたアイテムスタックは、近くに立つと自動的に回収されます。
Items have several properties, including the following:=アイテムには、次のようないくつかのプロパティが含まれます:
• Maximum stack size: Number of items which fit on 1 item stack=・最大スタックサイズ1アイテムスタックに収まるアイテム数
• Pointing range: How close things must be to be pointed while wielding this item=・ポイント範囲:このアイテムを手に持っている時、モノがどのくらい近くにあればポイントできるか
• Group memberships: See “Basics > Groups”=・グループのメンバーシップ“Basics > Groups”参照
• May be used for crafting or cooking=・クラフトや調理に使えるかも
Tools=道具
Some items may serve as a tool when wielded. Any item which has some special use which can be directly used by its wielder is considered a tool.=アイテムによっては、手に持つことで道具として役目を果たすことがあります。使い手が直接使用できる何らかの特有な用途を持つアイテムは、道具とみなされます。
A common subset of tools is mining tools. These are important to break all kinds of blocks. Weapons are a kind of tool. There are of course many other possible tools. Special actions of tools are usually done by left-click or right-click.=道具の中の分類で一般的なのは、採掘道具です。これらは、あらゆるブロックを壊すために重要です。武器も道具の一種です。もちろん、他にも多くの道具があります。道具の特殊な操作は、通常、左クリックか右クリックで行います。
When nothing is wielded, players use their hand which may act as tool and weapon.=何も手に持っていないとき、プレイヤーは、道具や武器としても振る舞う自分の手を使います。
Mining tools are important to break all kinds of blocks. Weapons are another kind of tool. There are some other more specialized tools. Special actions of tools are usually done by right-click.=採掘道具は、あらゆるブロックを壊すために重要な道具です。武器も道具の一種です。その他にも、より専門的な道具があります。道具の特殊な動作は、たいてい右クリックで行います。
When nothing is wielded, players use their hand which may act as tool and weapon. The hand is capable of punching and deals minimum damage.=何も手に持っていないとき、プレイヤーは、道具や武器としても機能する自分の手を使います。手は、最小限のダメージを与える攻撃ができます。
Many tools will wear off when using them and may eventually get destroyed. The damage is displayed in a damage bar below the tool icon. If no damage bar is shown, the tool is in mint condition. Tools may be repairable by crafting, see “Basics > Crafting”.=多くの道具は使っていると消耗していき、ついには壊れてしまうこともあります。ダメージは、道具のアイコンの下にあるダメージバーで表示されます。ダメージバーが表示されていない場合、その道具は新品同様です。道具はクラフトで修理できる場合があります。“Basics > Crafting”を参照してください。
Weapons=武器
Some items are usable as a melee weapon when wielded. Weapons share most of the properties of tools.=一部のアイテムは、手に持つと近接武器として使えます。武器は、道具のプロパティのほとんどを共有しています。
Melee weapons deal damage by punching players and other animate objects. There are two ways to attack:=近接武器は、プレイヤーや他のMOBを叩くことでダメージを与えることができます。攻撃方法は次の
• Single punch: Left-click once to deal a single punch=・単発攻撃:左クリック1回で、単一の攻撃
• Quick punching: Hold down the left mouse button to deal quick repeated punches=・連続攻撃:マウスの左ボタンを押したままで、攻撃を素早く繰り返す
There are two core attributes of melee weapons:=近接武器の核となる性質は次の2つ:
• Maximum damage: Damage which is dealt after a hit when the weapon was fully recovered=・最大ダメージ:武器の力が完全に復帰している場合の、ヒット後の与ダメージ
• Full punch interval: Time it takes for fully recovering from a punch=・全力攻撃間隔:攻撃後、力が完全に復帰するまでの時間
A weapon only deals full damage when it has fully recovered from a previous punch. Otherwise, the weapon will deal only reduced damage. This means, quick punching is very fast, but also deals rather low damage. Note the full punch interval does not limit how fast you can attack.=武器は、前の攻撃から完全に復帰したときのみ、全力でダメージを与えます。そうでない場合、武器が与えられるダメージは減少します。つまり、連続攻撃は非常に速いですが、与えるダメージはむしろ低くなります。なお、全力攻撃の間隔は、攻撃できる速さを制限するものではありません。
There is a rule which sometimes makes attacks impossible: Players, animate objects and weapons belong to damage groups. A weapon only deals damage to those who share at least one damage group with it. So if you're using the wrong weapon, you might not deal any damage at all.=時々、攻撃が不可能になるルールプレイヤー、MOB、武器はダメージグループに属します。武器は、少なくともつのダメージグループを共有している相手にしか、ダメージを与えません。なので使う武器が悪いと、なんのダメージも与えられないことがあります。
Pointing=ポイントする
“Pointing” means looking at something in range with the crosshair. Pointing is needed for interaction, like mining, punching, using, etc. Pointable things include blocks, players, computer enemies and objects.=「ポイントする」とは、 十字線で範囲内の何かを指すことです。採掘、攻撃、使う、等といった相互作用に必要です。ポイント可能なものには、ブロック、プレイヤー、コンピュータの敵やオブジェクトがあります。
To point something, it must be in the pointing range (also just called “range”) of your wielded item. There's a default range when you are not wielding anything. A pointed thing will be outlined or highlighted (depending on your settings). Pointing is not possible with the 3rd person front camera.=何かをポイントするためには、その何かが、手に持っているアイテムのポイント範囲単に「範囲」とも呼ばれます内にある必要があります。何も手に持っていない時のデフォルトの範囲もあります。ポイントされたものは、輪郭が強調されるか、またはハイライトされます設定による。3人称視点のフロントカメラでは、ポイントする事はできません。
A few things can not be pointed. Most blocks are pointable. A few blocks, like air, can never be pointed. Other blocks, like liquids can only be pointed by special items.=いくつかのものはポイントできません。ほとんどのブロックはポイント可能です。空気のようないくつかのブロックは、決して指すことができません。液体のような他のブロックは、特別なアイテムによってのみ指さすことができます。
Camera=カメラ
There are 3 different views which determine the way you see the world. The modes are:=ワールドの見方を決める3つの視点があります。モードは次のとおり
• 1: First-person view (default)=・1一人称視点デフォルト
• 2: Third-person view from behind=・:背後からの三人称視点
• 3: Third-person view from the front=・:前面からの三人称視点
You can change the camera mode by pressing [F7].=[F7]を押すと、カメラモードを変更できます。
You might be able to zoom with [Z] to zoom the view at the crosshair. This allows you to look further.=[Z]を押すと十字線に沿った視界をズームできる、かもしれません。これによって、より遠くを望めます。
Zooming is a gameplay feature that might be enabled or disabled by the game. By default, zooming is enabled when in Creative Mode but disabled otherwise.=ズーム操作は、ゲームによって有効または無効になる可能性のあるゲームプレイ機能です。デフォルトでは、ズームが有効なのはクリエイティブモードのみで、それ以外なら無効化されています。
There is also Cinematic Mode which can be toggled with [F8]. With Cinematic Mode enabled, the camera movements become more smooth. Some players don't like it, it is a matter of taste.=また、[F8]で切替え可能なシネマティックモードもあります。シネマティックモードを有効にすると、カメラの動きがより滑らかになります。好みによりますが、苦手なプレイヤーもいるようです。
By holding down [Z], you can zoom the view at your crosshair. You need the “zoom” privilege to do this.=[Z]を押していると、 十字線に沿った視界をズームできます。このためには“zoom”権限が必要です。
• Switch camera mode: [F7]=・カメラモードの切替:[F7]
• Toggle Cinematic Mode: [F8]=・シネマティックモードの切替:[F8]
• Zoom: [Z]=・ズーム:[Z]
Blocks=ブロック
The world of MineClone 2 is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=MineClone 2のワールドは、すべてがブロック正確にはボクセルで構成されています。ブロックは、適切なツールで追加や削除ができます。
The world is made entirely out of blocks (voxels, to be precise). Blocks can be added or removed with the correct tools.=ワールドは、すべてがブロック(正確にはボクセル)で構成されています。ブロックは、適切なツールで追加や削除ができます。
Blocks can have a wide range of different properties which determine mining times, behavior, looks, shape, and much more. Their properties include:=ブロックは幅広く多様なプロパティを持つことができ、採掘時間、動作、外観、形状などが定まります。プロパティは次のとおり:
• Collidable: Collidable blocks can not be passed through; players can walk on them. Non-collidable blocks can be passed through freely=・衝突性:衝突性ブロックは通過できず、プレイヤーはその上を歩ける。非衝突性ブロックは、自由に通り抜けられる
• Pointable: Pointable blocks show a wireframe or a halo box when pointed. But you will just point through non-pointable blocks. Liquids are usually non-pointable but they can be pointed at by some special tools=・ポイント可能なブロックは、ポイントするとワイヤーフレームまたはハイライトボックスが表示される。しかしポイント不可能なブロックでは、判定がただ通り抜ける。液体はたいていポイント不可能だが、いくつかの特殊な道具ならポイントできる
• Mining properties: By which tools it can be mined, how fast and how much it wears off tools=・採掘のプロパティ:どのような道具で採掘できるか、道具の消耗はどの程度か、など
• Climbable: While you are at a climbable block, you won't fall and you can move up and down with the jump and sneak keys=・よじ登り可能:よじ登り可能なブロックにいる間は落下せず、ジャンプキーとスニークキーで上下に移動できる
• Drowning damage: See the entry “Basics > Player”=・溺水ダメージエントリー“Basics > Player”参照
• Liquids: See the entry “Basics > Liquids”=・液体エントリー“Basics > Liquids”参照
• Group memberships: Group memberships are used to determine mining properties, crafting, interactions between blocks and more=・グループの帰属関係:グループの帰属関係は、採掘のプロパティ、クラフト、ブロック間の相互作用などを定めるために用いられる
Mining=採掘
Mining (or digging) is the process of breaking blocks to remove them. To mine a block, point it and hold down the left mouse button until it breaks.=採掘(または掘削)とは、ブロックを掘り壊して取り除く工程のことです。ブロックを掘るには、ブロックをポイントし、それが壊れるまでマウスの左ボタンを押し続けます。
Blocks require a mining tool to be mined. Different blocks are mined by different mining tools, and some blocks can not be mined by any tool. Blocks vary in hardness and tools vary in strength. Mining tools will wear off over time. The mining time and the tool wear depend on the block and the mining tool. The fastest way to find out how efficient your mining tools are is by just trying them out on various blocks. Any items you gather by mining will drop on the ground, ready to be collected.=ブロックを掘るには、採掘道具を要します。採掘道具によって掘れるブロックが異なり、どんな道具でも掘れないブロックもあります。ブロックの硬さはさまざまで、道具の強さもさまざまです。採掘道具は使用時間に応じて消耗します。採掘時間と道具の消耗は、ブロックと採掘道具によって異なります。採掘道具の効率を知るには、様々なブロックで試してみるのが一番早いでしょう。アイテムは採掘によって地面に落ちるので、すぐに収集できます。
After mining, a block may leave a “drop” behind. This is a number of items you get after mining. Most commonly, you will get the block itself. There are other possibilities for a drop which depends on the block type. The following drops are possible:=採掘後、ブロックが「ドロップ」を残すことがあります。これは、採掘後に得られるアイテムの数々です。最も一般的なのは、そのブロックそのものを入手することです。その他にも、ブロックの種類によってドロップの可能性があります。考えられるドロップは次の通り:
• Always drops itself (the usual case)=・常にそれ自身をドロップ(大抵の場合)
• Always drops the same items=・常に同じアイテムをドロップ
• Drops items based on probability=・確率でアイテムをドロップ
• Drops nothing=・ドロップなし
Building=構築
Almost all blocks can be built (or placed). Building is very simple and has no delay.=ほぼすべてのブロックが構築(配置)可能です。構築はとてもシンプルで、遅延もありません。
To build your wielded block, point at a block in the world and right-click. If this is not possible because the pointed block has a special right-click action, hold down the sneak key before right-clicking.=手に持ったブロックを構築するには、ワールド内のブロックをポイントして右クリックします。これができない場合は、ポイントしたブロックが特殊な右クリックアクションを持っているせいである為、スニークキーを押しながら右クリックしてください。
Blocks can almost always be built at pointable blocks. One exception are blocks attached to the floor; these can only be built on the floor.=ブロックは、ほとんどの場合、ポイント可能なブロックに構築できます。例外として、床に付属するブロックは、床の上にしか構築できません。
Normally, blocks are built in front of the pointed side of the pointed block. A few blocks are different: When you try to build at them, they are replaced.=通常、ブロックはポイントした側を前にして構築されます。一部の違うブロック:そのブロックに向かって構築しようとすると、置き換えられます。
Liquids=液体
Liquids are special dynamic blocks. Liquids like to spread and flow to their surrounding blocks. Players can swim and drown in them.=液体は特殊な動的ブロックです。液体は周囲のブロックに広がり、流れていく習性があります。プレイヤーはその中で泳いだり、溺れたりできます。
Liquids usually come in two forms: In source form (S) and in flowing form (F).=液体が通常取りうるつの形態源泉型Sと流動型Fである。
Liquid sources have the shape of a full cube. A liquid source will generate flowing liquids around it from time to time, and, if the liquid is renewable, it also generates liquid sources. A liquid source can sustain itself. As long it is left alone, a liquid source will normally keep its place and does not drain out.=液体源は完全な立方体の形を持っています。液体源は時々その周りに流動液体を発生させ、もし液体が再生可能であれば、液体源も発生させます。液体源は自身を維持できます。放っておく限り、液体源は通常その場所を保ち、流出しません。
Flowing liquids take a sloped form. Flowing liquids spread around the world until they drain. A flowing liquid can not sustain itself and always comes from a liquid source, either directly or indirectly. Without a liquid source, a flowing liquid will eventually drain out and disappear.=流動液体は、傾斜した形状をとります。それらは枯渇するまでワールド中に広がります。流動液体は自身を維持できず、常に直接的または間接的に液体源から生じます。液体源がなければ、流動液体はやがて流出しきって消えます。
All liquids share the following properties:=すべての液体に共通するプロパティは次のとおり:
• All properties of blocks (including drowning damage)=・ブロックのプロパティ全般(溺水ダメージ含む)
• Renewability: Renewable liquids can create new sources=・再生可能性:再生可能な液体は、新たな源泉を生み出せる
• Flowing range: How many flowing liquids are created at maximum per liquid source, it determines how far the liquid will spread. Possible are ranges from 0 to 8. At 0, no flowing liquids will be created. Image 5 shows a liquid of flowing range 2=・流動範囲液体源つにつき、最大でどれだけの流動液体を生むか、液体がどこまで広がるかの設定。可能な範囲は0から8まで。0の場合、流動液体は発生しない。画像5は、流動範囲2の液体
• Viscosity: How slow players move through it and how slow the liquid spreads=・粘性:プレイヤーがその中を移動する際の遅さ、液体が広がる際の遅さ
Renewable liquids create new liquid sources at open spaces (image 2). A new liquid source is created when:=再生可能な液体は、空きスペースに新たな液体源を生み出します画像2。新しい液体源ができる時は次のとおり
• Two renewable liquid blocks of the same type touch each other diagonally=・同じ種類の再生可能な液体ブロック2個が、斜めに接する
• These blocks are also on the same height=・これらのブロックも同じ高さにある
• One of the two “corners” is open space which allows liquids to flow in=・2つの「かど」のうち1つは、液体が流れ込む空きスペース
When those criteria are met, the open space is filled with a new liquid source of the same type (image 3).=それらの条件を満たすと、空きスペースに同じ種類の新しい液体源が充填されます画像3
Swimming in a liquid is fairly straightforward: The usual direction keys for basic movement, the jump key for rising and the sneak key for sinking.=液体の中を泳ぐのはとても直感的:基本的な動きは通常の方向キー、浮上はジャンプキー、潜水はスニークキーで行います。
The physics for swimming and diving in a liquid are:=液体の中を泳いだり潜ったりするときの物理は:
• The higher the viscosity, the slower you move=・粘度が高いほど、動きが遅くなる
• If you rest, you'll slowly sink=・休んでいると、じわじわと沈む
• There is no fall damage for falling into a liquid as such=・このように、液体に落下しても落下ダメージはない
• If you fall into a liquid, you will be slowed down on impact (but don't stop instantly). Your impact depth is determined by your speed and the liquid viscosity. For a safe high drop into a liquid, make sure there is enough liquid above the ground, otherwise you might hit the ground and take fall damage=液中に落ちると衝撃で速度が落ちる(但し瞬時には止まらない)。衝撃の深さは、速度と液体の粘性によって決まる。液体へ安全に高飛び込みするには、地面より上に十分な液体があることを確認する。そうでなければ、地面に衝突して落下ダメージを受ける可能性がある
Liquids are often not pointable. But some special items are able to point all liquids.=液体は往々にしてポイント不可能です。しかし一部の特殊なアイテムは、すべての液体をポイントすることができます。
Crafting=クラフト
Crafting is the task of combining several items to form a new item.=クラフトとは、複数のアイテムを組み合わせて新しいアイテムを作りだす作業です。
To craft something, you need one or more items, a crafting grid (C) and a crafting recipe. A crafting grid is like a normal inventory which can also be used for crafting. Items need to be put in a certain pattern into the crafting grid. Next to the crafting grid is an output slot (O). Here the result will appear when you placed items correctly. This is just a preview, not the actual item. Crafting grids can come in different sizes which limits the possible recipes you can craft.=何かをクラフトするには、つ以上のアイテム、クラフトグリッドC、クラフトレシピが必要です。クラフトグリッドは通常のインベントリのようなもので、クラフトにも使えます。アイテムは、クラフトグリッドに一定のパターンで配置する必要があります。クラフトグリッドの隣には、アウトプットスロットOがあります。ここにアイテムを正しく配置すると、結果が表示されます。これはあくまでプレビューであり、実際のアイテムではありません。クラフトグリッドの大きさはまちまちなため、クラフトできるレシピが制限されたりもします。
To complete the craft, take the result item from the output slot, which will consume items from the crafting grid and creates a new item. It is not possible to place items into the output slot.=クラフトを完成させるには、出力スロットから結果のアイテムを取ります。このとき、クラフトグリッドからアイテムが消費され、新しいアイテムが作成されます。出力スロットにはアイテムを配置できません。
A description on how to craft an item is called a “crafting recipe”. You need this knowledge to craft. There are multiple ways to learn crafting recipes. One way is by using a crafting guide, which contains a list of available crafting recipes. Some games provide crafting guides. There are also some mods which you can download online for installing a crafting guide. Another way is by reading the online manual of the game (if one is available).=アイテムのクラフト方法を記したものを「クラフトレシピ」と呼びます。この知識は、クラフトをするのに必要です。クラフトレシピを覚えるには、複数の方法があります。1つは、クラフトレシピの使用可能なリストを含むクラフトガイドを使用する方法です。いくつかのゲームではクラフトガイドを提供しています。また、クラフトガイドをインストールするために、オンラインでダウンロードできるMODがいくつかあります。もう1つの方法は、ゲームのオンラインマニュアルを読むことです利用可能な場合
Crafting recipes consist of at least one input item and exactly one stack of output items. When performing a single craft, it will consume exactly one item from each stack of the crafting grid, unless the crafting recipe defines replacements.=クラフトレシピは、少なくとも1つの入力アイテムと、ちょうど1つの出力アイテムのスタックから成ります。1つのクラフトを実行するとき、クラフトレシピが置換を定義していない限り、クラフトグリッドの各スタックから正確に1つのアイテムを消費します。
There are multiple types of crafting recipes:=クラフトレシピは次のような複数の種類がある:
• Shaped (image 2): Items need to be placed in a particular shape=・整形画像2アイテムは特定の形に配置する必要がある
• Shapeless (images 3 and 4): Items need to be placed somewhere in input (both images show the same recipe)=形なし画像3、4アイテムは入力のどこかしらに置く必要がある両画像とも同じレシピを表示
• Cooking: Explained in “Basics > Cooking”=・調理“Basics > Cooking”に解説あり
• Repairing (image 5): Place two damaged tools into the crafting grid anywhere to get a tool which is repaired by 5%=修復画像5損傷した道具を2つ、任意のクラフトグリッドに置くと、5%修復された道具が手に入る
In some crafting recipes, some input items do not need to be a concrete item, instead they need to be a member of a group (see “Basics > Groups”). These recipes offer a bit more freedom in the input items. Images 6-8 show the same group-based recipe. Here, 8 items of the “stone” group are required, which is true for all of the shown items.=・クラフトレシピの中には、入力アイテムが具体的でなくてもよいものがあり、その代わりグループに属している必要があります“Basics > Groups”参照。これらのレシピでは、入力アイテムにいくらか自由度があります。画像6-8は、同じグループ基準のレシピを示したものです。ここでは"stone "グループのアイテムが8つ必要であり、これは表示されているすべてのアイテムに当てはまります。
Rarely, crafting recipes have replacements. This means, whenever you perform a craft, some items in the crafting grid will not be consumed, but instead will be replaced by another item.=まれに、クラフトレシピには置換があります。これは、クラフトを実行するたびに、クラフトグリッド内の一部のアイテムが消費されず、代わりに別のアイテムに置き換わることを意味します。
Cooking=調理
Cooking (or smelting) is a form of crafting which does not involve a crafting grid. Cooking is done with a special block (like a furnace), an cookable item, a fuel item and time in order to yield a new item.=調理(または製錬)は、クラフトグリッドを使用しないクラフトの一形態です。調理は、新しいアイテムを作るために、特別なブロック(かまどみたいな)、調理可能なアイテム、燃料アイテム、時間を使って行われます。
Each fuel item has a burning time. This is the time a single item of the fuel keeps a furnace burning.=各燃料には燃焼時間があります。これは、1つの燃料がかまどの燃焼を維持する時間です。
Each cookable item requires time to be cooked. This time is specific to the item type and the item must be “on fire” for the whole cooking time to actually yield the result.=調理可能な各アイテムは、調理するために時間を要します。この時間はアイテムの種類によって異なり、実際に結果を得るためには、調理時間全体にわたってアイテムに「火が通って」いなければいけません。
Hotbar=ホットバー
At the bottom of the screen you see some squares. This is called the “hotbar”. The hotbar allows you to quickly access the first items from your player inventory.=画面の下に、いくつか四角いものが見えます。これは「ホットバー」と呼ばれるものです。ホットバーを使うと、インベントリの初段のアイテムに素早くアクセスできます。
You can change the selected item with the mouse wheel or the keyboard.=選択した項目は、マウスホイールやキーボードで変更できます。
• Select previous item in hotbar: [Mouse wheel up] or [B]=・ホットバーの選択項目を前へ:[マウスホイール上] or [B]
• Select next item in hotbar: [Mouse wheel down] or [N]=・ホットバーの選択項目を次へ:[マウスホイール下] or [N]
• Select item in hotbar directly: [1]-[9]=ホットバーの項目を直接選択:[1]-[9]
The selected item is also your wielded item.=選択したアイテムは、手に持ったアイテムでもあります。
Minimap=ミニマップ
If you have a map item in any of your hotbar slots, you can use the minimap.=ホットバーのいずれかのスロットにマップアイテムがある場合、ミニマップが使えます。
Press [F9] to make a minimap appear on the top right. The minimap helps you to find your way around the world. Press it again to select different minimap modes and zoom levels. The minimap also shows the positions of other players.=[F9]を押すと、右上にミニマップが表示されます。ミニマップは世界各地での道しるべになります。もう一度押すと、ミニマップモードやズームレベルが切替わります。ミニマップには、他のプレイヤーの位置も表示されます。
There are 2 minimap modes and 3 zoom levels.=2つのミニマップモードと、3つのズームレベルがあります。
Surface mode (image 1) is a top-down view of the world, roughly resembling the colors of the blocks this world is made of. It only shows the topmost blocks, everything below is hidden, like a satellite photo. Surface mode is useful if you got lost.=表層モード画像1はワールドを見下ろした光景で、このワールドを形作っているブロックの色に似通っています。一番上のブロックだけが表示され、その下は衛星写真のように隠れています。表層モードは、迷子になったときに便利です。
Radar mode (image 2) is more complicated. It displays the “denseness” of the area around you and changes with your height. Roughly, the more green an area is, the less “dense” it is. Black areas have many blocks. Use the radar to find caverns, hidden areas, walls and more. The rectangular shapes in image 2 clearly expose the position of a dungeon.=レーダーモード画像2はもっと複雑です。これはあなたの周りのエリアの「密集度」を表示し、あなたの高度に応じて変化します。大雑把に言うと、緑色の部分が多いほど「密集」していない事になります。黒いエリアはブロックがたくさんあります。レーダーを使って、洞窟や隠し場所、壁などを発見してみましょう。画像2の四角い形は、ダンジョンの位置を明確に表しています。
There are also two different rotation modes. In “square mode”, the rotation of the minimap is fixed. If you press [Shift]+[F9] to switch to “circle mode”, the minimap will instead rotate with your looking direction, so “up” is always your looking direction.=また、2種類の回転モードがあります。「正方形モード」では、ミニマップの回転は固定されています。[Shift] + [F9]を押して「円形モード」に切り替えると、ミニマップはあなたの視線方向に合わせて回転し、常に「上」があなたの視線方向となります。
In some games, the minimap may be disabled.=ゲームによっては、ミニマップが無効になっている場合があります。
• Toggle minimap mode: [F9]=・ミニマップのモードを切替:[F9]
• Toggle minimap rotation mode: [Shift]+[F9]=・ミニマップの回転モードを切替:[Shift] + [F9]
Inventory=インベントリ
Inventories are used to store item stacks. There are other uses, such as crafting. An inventory consists of a rectangular grid of item slots. Each item slot can either be empty or hold one item stack. Item stacks can be moved freely between most slots.=インベントリは、アイテムスタックを収納するために使います。他にもクラフトなどの用途があります。インベントリは、アイテムスロットの四角いグリッドで構成されています。各アイテムスロットは、空の状態か、1つのアイテムスタックを保持できます。アイテムのスタックは、ほとんどのスロット間で自由に移動できます。
You have your own inventory which is called your “player inventory”, you can open it with the inventory key (default: [I]). The first inventory slots are also used as slots in your hotbar.=「プレイヤーインベントリ」と呼ばれる自分専用のインベントリがあり、インベントリキー(デフォルト:[I])で開けます。インベントリの初段スロットは、ホットバーのスロットとしても機能します。
Blocks can also have their own inventory, e.g. chests and furnaces.=ブロックは、独自のインベントリを持つこともできます。例えばチェストやかまどです。
Inventory controls:=インベントリの操作:
Taking: You can take items from an occupied slot if the cursor holds nothing.=取る:カーソルが何も保持していない場合、占有されているスロットからアイテムを取れます。
• Left click: take entire item stack=・左クリック:アイテムをスタック丸ごと取る
• Right click: take half from the item stack (rounded up)=・右クリック:アイテムをスタックから半分取る(切り上げ)
• Middle click: take 10 items from the item stack=・中クリックアイテムをスタックから10個取る
• Mouse wheel down: take 1 item from the item stack=・マウスホイール下アイテムをスタックから1個取る
Putting: You can put items onto a slot if the cursor holds 1 or more items and the slot is either empty or contains an item stack of the same item type.=置くカーソルに1つ以上のアイテムを保持し、目的のスロットが空か、同種のアイテムがスタックされている場合、そのアイテムを置けます。
• Left click: put entire item stack=・左クリック:アイテムをスタック丸ごと置く
• Right click: put 1 item of the item stack=・右クリックアイテムをスタックから1個置く
• Right click or mouse wheel up: put 1 item of the item stack=・右クリック または マウスホイール上アイテムをスタックから1個置く
• Middle click: put 10 items of the item stack=・中クリックアイテムをスタックから10個置く
Exchanging: You can exchange items if the cursor holds 1 or more items and the destination slot is occupied by a different item type.=交換するカーソルに1つ以上のアイテムを保持し、目的のスロットが別種のアイテムで占有されている場合、アイテムを交換できます。
• Click: exchange item stacks=・クリック:アイテムスタックを交換
Throwing away: If you hold an item stack and click with it somewhere outside the menu, the item stack gets thrown away into the environment.=捨てる:アイテムスタックを保持し、メニュー外のどこかをクリックすると、アイテムスタックがその辺に投げ捨てられます。
Quick transfer: You can quickly transfer an item stack to/from the player inventory to/from another item's inventory slot like a furnace, chest, or any other item with an inventory slot when that item's inventory is accessed. The target inventory is generally the most relevant inventory in this context.=直送する:炉やチェストなどのインベントリスロットに対しては、プレイヤーインベントリからアイテムスタックを直送できます。この場合対象となるのは、一般的に最も関連性の高いインベントリスロットです。
• Sneak+Left click: Automatically transfer item stack=・スニークキー + 左クリック:アイテムスタックの自動転送
Online help=オンラインヘルプ
You may want to check out these online resources related to MineClone 2.=MineClone 2 に関連するオンライン資料もチェックしてみてください。
MineClone 2 download and forum discussion: <https://forum.minetest.net/viewtopic.php?f@=50&t@=16407>=MineClone 2 のダウンロードと掲示板での意見交換:<https://forum.minetest.net/viewtopic.php?f@=50&t@=16407>
Here you find the most recent version of MineClone 2 and can discuss it.=ここでは MineClone 2 の最新バージョンを確認し、意見を交換できます。
Bug tracker: <https://github.com/Wuzzy2/MineClone2-Bugs>=バグ追跡:<https://github.com/Wuzzy2/MineClone2-Bugs>
Report bugs here.=バグの報告はこちら。
Minetest links:=Minetest リンク:
You may want to check out these online resources related to Minetest:=Minetest に関連するオンライン資料もチェックしてみてください:
Official homepage of Minetest: <https://minetest.net/>=Minetest の公式ホームページ:<https://minetest.net/>
The main place to find the most recent version of Minetest, the engine used by MineClone 2.=MineClone 2 で使用されているエンジン、Minetest の最新版を入手できるメインサイトです。
The main place to find the most recent version of Minetest.=Minetest の最新版を入手できるメインサイトです。
Community wiki: <https://wiki.minetest.net/>=コミュニティ wiki<https://wiki.minetest.net/>
A community-based documentation website for Minetest. Anyone with an account can edit it! It also features a documentation of Minetest Game.=Minetest のための、コミュニティベースの文書サイトです。アカウントがあれば誰でも編集可能です! また、Minetest Game の資料も掲載されています。
Minetest forums: <https://forums.minetest.net/>=Minetest の掲示板:<https://forums.minetest.net/>
A web-based discussion platform where you can discuss everything related to Minetest. This is also a place where player-made mods and games are published and discussed. The discussions are mainly in English, but there is also space for discussion in other languages.=Minetest に関連するあらゆることを話し合える、Webベースの議論場です。また、プレイヤーが作成したMODやゲームを公開し、議論する場でもあります。議論は主に英語で行われますが、他言語で議論するスペースもあります。
Chat: <irc://irc.freenode.net#minetest>=チャット:<irc://irc.freenode.net#minetest>
A generic Internet Relay Chat channel for everything related to Minetest where people can meet to discuss in real-time. If you do not understand IRC, see the Community Wiki for help.=Minetest に関連するあらゆることをリアルタイムで議論するために人々が集う、IRCインターネット・リレー・チャットの汎用チャンネルです。IRCが分からない場合は、コミュニティWikiを参照してください。
Groups=グループ
Items, players and objects (animate and inanimate) can be members of any number of groups. Groups serve multiple purposes:=アイテム、プレイヤー、オブジェクト(生物と無生物)は、任意の数のグループに属することができます。グループには、次のようなさまざまな役割があります:
• Crafting recipes: Slots in a crafting recipe may not require a specific item, but instead an item which is a member of a particular group, or multiple groups=・クラフトレシピ:クラフトレシピのスロットには、特定のアイテムである必要がない代わりに、特定のグループまたは複数のグループに属しているアイテムを要する場合がある
• Digging times: Diggable blocks belong to groups which are used to determine digging times. Mining tools are capable of digging blocks belonging to certain groups=・掘削時間:掘削可能なブロックが属するグループで、掘削時間の設定に使われる。採掘道具は、所定のグループに属するブロックが掘れる。
• Block behavior: Blocks may show a special behaviour and interact with other blocks when they belong to a particular group=・ブロックの挙動:ブロックは特定のグループに属している場合、特別な挙動を示し、他のブロックと相互作用することがある
• Damage and armor: Objects and players have armor groups, weapons have damage groups. These groups determine damage. See also: “Basics > Weapons”=ダメージと防具オブジェクトとプレイヤーは防具グループ、武器はダメージグループを持つ。これらのグループによってダメージが定まる。次も参考に“Basics > Weapons”
• Other uses=・その他の用途
In the item help, many important groups are usually mentioned and explained.=アイテムヘルプでは、通常、多くの重要なグループに言及し、説明されています。
Glossary=用語集
This is a list of commonly used terms:=よく使われる用語の一覧:
Controls:=コントロール
• Wielding: Holding an item in hand=・手に持つ:アイテムを手に持っている状態。ホットバーで選択した状態と同義
• Pointing: Looking with the crosshair at something in range=・ポイントする:十字線で範囲内のものを指すこと
• Dropping: Throwing an item or item stack to the ground=・捨てる:アイテムを一つずつ又はスタックごと放り投げ落とすこと
• Punching: Attacking with left-click, is also used on blocks=・パンチ:左クリックで攻撃や何かを作動させたりすること。ブロックを持っていても使える場合あり
• Sneaking: Walking slowly while (usually) avoiding to fall over edges=・スニーク:(通常は)縁から落ちるのを避けながら、ゆっくりと歩くこと
• Climbing: Moving up or down a climbable block=・よじ登る:よじ登り可能なブロックを上下に移動すること
Blocks:=ブロック:
• Block: Cubes that the worlds are made of=・ブロック:ワールドを構成する立方体(※立方体以外もブロックと呼んでいる場合あり)
• Mining/digging: Using a mining tool to break a block=・採掘/掘削:採掘道具を使ってブロックを壊すこと
• Building/placing: Putting a block somewhere=・構築/配置:ブロックをどこかに置くこと
• Drop: Items you get after mining a block=・ドロップ:ブロックを採掘した際に得られるアイテム
• Using a block: Right-clicking a block to access its special function=・ブロックを使う:右クリックで、そのブロック特有の作用を起こす
Items:=アイテム:
• Item: A single thing that players can possess=・アイテム:プレイヤーが所持できる単一のモノ
• Item stack: A collection of items of the same kind=・アイテムスタック:同種のアイテムの集まり
• Maximum stack size: Maximum amount of items in an item stack=・最大スタックサイズ:アイテムスタックに格納できるアイテムの最大量
• Slot / inventory slot: Can hold one item stack=・スロット/インベントリースロット:アイテムスタック一つ分を収納可能な枠
• Inventory: Provides several inventory slots for storage=・インベントリ:保管用に複数のスロットを提供するもの
• Player inventory: The main inventory of a player=・プレイヤーインベントリ:メインとなるプレイヤー用インベントリ
• Tool: An item which you can use to do special things with when wielding=・道具:手に持って使うと、特有なことができるアイテム
• Range: How far away things can be to be pointed by an item=・範囲:アイテムでポイントできる距離
• Mining tool: A tool which allows to break blocks=・採掘道具:ブロックを壊すことができる道具
• Craftitem: An item which is (primarily or only) used for crafting=・クラフトアイテム:クラフトに(主に、または唯一)使用されるアイテム
Gameplay:=ゲームプレイ:
• “heart”: A single health symbol, indicates 2 HP=・「ハート」ヘルス。マーク1つ分で 2 HP を示す
• “bubble”: A single breath symbol, indicates 1 BP=・「泡」呼吸。マーク1つ分で 1 BP を示す
• HP: Hit point (equals half 1 “heart”)=・HPヘルスポイント。「ハート」マーク半分で 1 HP を示す
• BP: Breath point, indicates breath when diving=・BPブレスポイント。潜水時の息酸素量を示す
• Mob: Computer-controlled enemy=・MOBコンピュータが操作する敵
• Crafting: Combining multiple items to create new ones=・クラフト:複数のアイテムを組み合わせて、新しいアイテムを作ること
• Crafting guide: A helper which shows available crafting recipes=・クラフトガイド:利用可能なクラフトのレシピを表示するヘルプ機能
• Spawning: Appearing in the world=・スポーン:ワールドに出現すること
• Respawning: Appearing again in the world after death=・リスポーン:死後、再びワールドに現れること
• Group: Puts similar things together, often affects gameplay=・グループ:似たようなものを、同類として扱う。しばしばゲームプレイに影響を与える
• noclip: Allows to fly through walls=・壁抜け:壁を通過し飛行を可能にする
Interface=インターフェイス
• Hotbar: Inventory slots at the bottom=・ホットバー:画面底部に配置されたインベントリースロットのこと
• Statbar: Indicator made out of half-symbols, used for health and breath=・ステータスゲージ:分割するマークで作られたメーターのこと。ヘルスや呼吸の表示に使われる
• Minimap: The map or radar at the top right=・ミニマップ:右上に表示させるマップ、またはレーダーのこと
• Crosshair: Seen in the middle, used to point at things=・十字線:画面中央に見える、物をポイントするのに使われる照準。クロスヘアとも言う
Online multiplayer:=オンライン マルチプレイヤー
• PvP: Player vs Player. If active, players can deal damage to each other=・PvPプレイヤー・バーサス・プレイヤー。有効な場合、プレイヤーはお互いにダメージを与えることができる
• Griefing: Destroying the buildings of other players against their will=・グリーフィング:他のプレイヤーの意思に反して建物を破壊すること(要するに嫌がらせ)
• Protection: Mechanism to own areas of the world, which only allows the owners to modify blocks inside=・保護:ワールドの各エリアを所有する仕組み。エリア内部のブロックは、所有者のみが変更可能となる
Technical terms:=技術的な用語:
• Minetest: This game engine=・Minetestマインテスト。本ゲームエンジン
• MineClone 2: What you play right now=・MineClone 2マインクローン2。今、プレイしているもの
• Minetest Game: A game for Minetest by the Minetest developers=・Minetest GameMinetest 開発者による、Minetest のためのゲーム
• Game: A complete playing experience to be used in Minetest; such as a game or sandbox or similar=・Gameゲームやサンドボックスなど、Minetest で使用される完全なプレイ体験
• Mod: A single subsystem which adds or modifies functionality; is the basic building block of games and can be used to further enhance or modify them=・Modモッド。機能を追加または変更するつのサブシステム。ゲームの基本的な構成要素であり、ゲームをさらに強化または変更するために使用できる
• Privilege: Allows a player to do something=・権限:プレイヤーにかかる何らかの制限を解除するための許可
• Node: Other word for “block”=・ノード:「ブロック」を表す他の語句
Settings=設定
There is a large variety of settings to configure Minetest. Pretty much every aspect can be changed that way.=Minetest を構成するために、多種多様な設定があります。ほとんどの局面をその方法で変更できます。
These are a few of the most important gameplay settings:=これらは、最も重要なゲームプレイの設定の一部です:
• Damage enabled (enable_damage): Enables the health and breath attributes for all players. If disabled, players are immortal=・ダメージを有効化enable_damage全プレイヤーのヘルスと呼吸の設定を有効にする。無効の場合、プレイヤーは不死身になる
• Creative Mode (creative_mode): Enables sandbox-style gameplay focusing on creativity rather than a challenging gameplay. The meaning depends on the game; usual changes are: Reduced dig times, easy access to almost all items, tools never wear off, etc.=・クリエイティブモードcreative_mode挑戦的なゲームプレイではなく、創造性に焦点を当てたサンドボックススタイルのゲームプレイを可能にする。意味はゲームによるが、通常の変更は次の通り掘る時間が短くなる、ほぼ全てのアイテムが入手しやすくなる、道具が消耗しなくなる、など
• PvP (enable_pvp): Short for “Player vs Player”. If enabled, players can deal damage to each other=・PvPenable_pvp“Player vs Player”の略。有効にすると、プレイヤー同士がダメージを与え合うことが可能になる
For a full list of all available settings, use the “All Settings” dialog in the main menu.=利用可能なすべての設定の一覧は、メインメニューの「すべての設定」ダイアログを使用してください。
Movement modes=移動モード
You can enable some special movement modes that change how you move.=移動方法を変更する、いくつかの特殊な移動モードを有効化できます。
Pitch movement mode:=ピッチ移動モード:
• Description: If this mode is activated, the movement keys will move you relative to your current view pitch (vertical look angle) when you're in a liquid or in fly mode.=・説明:このモードが有効になっている場合、液中や飛行モードの時に移動キーを使うと、現在のビューピッチ(垂直方向の視線角)に対して相対的に移動します。
• Default key: [L]=・デフォルトキー:[L]
• No privilege required=・権限は不要
Fast mode:=高速モード:
• Description: Allows you to move much faster. Hold down the the “Use” key [E] to move faster. In the client configuration, you can further customize fast mode.=・説明:より高速な移動が可能になります。「使う」キー[E]を押しながら移動すると、より速く動けます。クライアント設定にて、高速モードをさらにカスタマイズできます。
• Default key: [J]=・デフォルトキー:[J]
• Required privilege: fast=・必要な権限fast
Fly mode:=飛行モード:
• Description: Gravity doesn't affect you and you can move freely in all directions. Use the jump key to rise and the sneak key to sink.=・説明:重力に影響されず、全方向へ自由に動けます。ジャンプキーで上昇し、スニークキーで下降します。
• Default key: [K]=・デフォルトキー:[K]
• Required privilege: fly=・必要な権限fly
Noclip mode:=壁抜けモード:
• Description: Allows you to move through walls. Only works when fly mode is enabled, too.=・説明:壁を通過して移動できるようになります。飛行モードも有効な場合のみ機能します。
• Default key: [H]=・デフォルトキー:[H]
• Required privilege: noclip=・必要な権限noclip
Console=コンソール
With [F10] you can open and close the console. The main use of the console is to show the chat log and enter chat messages or server commands.=[F10]でコンソールを開いたり閉じたりできます。コンソールの主な用途は、チャットログの表示や、チャットメッセージ及びサーバーコマンドの入力です。
Using the chat or server command key also opens the console, but it is smaller and will be closed after you sent a message.=チャットやサーバーのコマンドキーを使ってもコンソールを開けますが、サイズが小さく、メッセージ送信後に閉じられることになります。
Use the chat to communicate with other players. This requires you to have the “shout” privilege.=他のプレイヤーとの連絡には、チャットを利用します。これには、“shout”権限が必要です。
Just type in the message and hit [Enter]. Public chat messages can not begin with “/”.=メッセージを入力し、[Enter]キーを押すだけです。公開チャットのメッセージは、先頭に“/”をつけることはできません。
You can send private messages: Say “/msg <player> <message>” in chat to send “<message>” which can only be seen by <player>.=個人的なメッセージを送信できます:チャットで“/msg <player> <message>”と言うと、<player>だけが見ることができる“<message>”を送れます。
There are some special controls for the console:=これらは、コンソール専用の操作方法です:
• [F10] Open/close console=・[F10]:コンソールの開/閉
• [Enter]: Send message or command=・[Enter]:メッセージ送信 または コマンド
• [Tab]: Try to auto-complete a partially-entered player name=・[Tab]:部分的に入力されたプレイヤー名を、オートコンプリート(自動入力補完)しよう試みる
• [Ctrl]+[Left]: Move cursor to the beginning of the previous word=・[Ctrl]+[Left]:カーソルを、前の単語の先頭に移動する
• [Ctrl]+[Right]: Move cursor to the beginning of the next word=・[Ctrl]+[Right]:カーソルを、次の単語の先頭に移動する
• [Ctrl]+[Backspace]: Delete previous word=・[Ctrl]+[Backspace]:前の単語を削除
• [Ctrl]+[Delete]: Delete next word=・[Ctrl]+[Delete]:次の単語を削除
• [Ctrl]+[U]: Delete all text before the cursor=・[Ctrl]+[U]:カーソルより前のテキストをすべて削除
• [Ctrl]+[K]: Delete all text after the cursor=・[Ctrl]+[K]:カーソルより後のテキストをすべて削除
• [Page up]: Scroll up=・[Page up]:上にスクロール
• [Page down]: Scroll down=・[Page down]:下にスクロール
There is also an input history. Minetest saves your previous console inputs which you can quickly access later:=また、入力履歴もあります。Minetest は以前のコンソール入力を保存し、後ですぐにアクセスできるようにしています:
• [Up]: Go to previous entry in history=・[Up]:履歴の、前のエントリに移動
• [Down]: Go to next entry in history=・[Down]:履歴の、次のエントリに移動
Server commands=サーバーコマンド
Server commands (also called “chat commands”) are little helpers for advanced users. You don't need to use these commands when playing. But they might come in handy to perform some more technical tasks. Server commands work both in multi-player and single-player mode.=サーバーコマンド(「チャットコマンド」とも呼ばれます)は、上級者向けのちょっとした ヘルプ要素です。プレイ中にこれらのコマンドを使う必要はありません。しかし、より技術的なタスクを実行するのに便利かもしれません。サーバーコマンドは、マルチプレイヤーでもシングルプレイヤーでも使えます。
Server commands can be entered by players using the chat to perform a special server action. There are a few commands which can be issued by everyone, but some commands only work if you have certain privileges granted on the server. There is a small set of basic commands which are always available, other commands can be added by mods.=サーバーコマンドは、プレイヤーがチャットを使って入力することで、特別なサーバーアクションを実行できます。いくつかのコマンドは誰でも出すことができますが、中にはサーバーに与えられた特定の権限を持っている場合にのみ動作するコマンドもあります。基本的なコマンドは常に利用可能で、その他のコマンドはMODによって追加できます。
To issue a command, simply type it like a chat message or press Minetest's command key (default: [/]). All commands have to begin with “/”, for example “/mods”. The Minetest command key does the same as the chat key, except that the slash is already entered.=コマンドを出すには、単純にチャットメッセージのように入力するか、Minetest のコマンドキー(デフォルト:[/])を押してください。すべてのコマンドは、“/mods”のように“/”で始まる必要があります。Minetest のコマンドキーは、スラッシュがすでに入力されていることを除いて、チャットキーと同じように動作します。
Commands may or may not give a response in the chat log, but errors will generally be shown in the chat. Try it for yourselves: Close this window and type in the “/mods” command. This will give you the list of available mods on this server.=コマンドは、チャットログで応答したりしなかったりますが、エラーは基本的にチャットで表示されます。自分自身で試してみてください:このウィンドウを閉じて、“/mods”コマンドを入力してください。このサーバーで利用可能なMODのリストが表示されます。
“/help all” is a very important command: You get a list of all available commands on the server, a short explanation and the allowed parameters. This command is also important because the available commands often differ per server.=“/help all”は非常に重要なコマンドです。サーバ上で利用可能なすべてのコマンドのリスト、簡単な説明、そして許可されたパラメータを得ることができます。利用可能なコマンドはサーバーごとに異なることが多いので、このコマンドも重要です。
Commands are followed by zero or more parameters.=コマンドの後には、いくつかのパラメータが続くことがあります。
In the command reference, you see some placeholders which you need to replace with an actual value. Here's an explanation:=コマンドリファレンスには、実際の値に置き換える必要があるプレースホルダーがいくつか表示されています。次に説明します:
• Text in greater-than and lower-than signs (e.g. “<param>”): Placeholder for a parameter=・大なりと小なり記号で挟まれたテキスト(例:“<param>”):パラメータのプレースホルダー
• Anything in square brackets (e.g. “[text]”) is optional and can be omitted=・角括弧内のもの(例:“[text]”):任意であり、省略が可能
• Pipe or slash (e.g. “text1 | text2 | text3”): Alternation. One of multiple texts must be used (e.g. “text2”)=・パイプまたはスラッシュ“text1text2text3”択一。 区切られたテキストのうちの1つを使用する必要あり(例:"text2")
• Parenthesis: (e.g. “(word1 word2) | word3”): Groups multiple words together, used for alternations=・半角の括弧(例:“(word1 word2) | word3”複数の単語をグループ化し、交互に使う
• Everything else is to be read as literal text=・それ以外はすべて、文字通りのテキストとして読める
Here are some examples to illustrate the command syntax:=次は、コマンドの構文を説明するための例です:
• /mods: No parameters. Just enter “/mods”=・/mods: パラメータなし。単に“/mods”とだけ入力する
• /me <action>: 1 parameter. You have to enter “/me ” followed by any text, e.g. “/me orders pizza”=・/me <action>1つのパラメータ。“/me ”の後に、任意のテキストを入力する。例:“/me orders pizza”
• /give <name> <ItemString>: Two parameters. Example: “/give Player default:apple”=・/give <name> <ItemString>2つのパラメータ。例“/give Player default:apple”
• /help [all|privs|<cmd>]: Valid inputs are “/help”, “/help all”, “/help privs”, or “/help ” followed by a command name, like “/help time”=・/help [all|privs|<cmd>]:有効な入力は“/help”,“/help all”,“/help privs”, または“/help time”のように、“/help ”の後にコマンド名を続けたもの
• /spawnentity <EntityName> [<X>,<Y>,<Z>]: Valid inputs include “/spawnentity boats:boat” and “/spawnentity boats:boat 0,0,0”=・/spawnentity <EntityName> [<X>,<Y>,<Z>]:有効な入力は“/spawnentity boats:boat”および“/spawnentity boats:boat 0,0,0”
Some final remarks:=最後に一言:
• For /give and /giveme, you need an itemstring. This is an internally used unique item identifier which you may find in the item help if you have the “give” or “debug” privilege=・give と /giveme では、itemstring が必要です。これは内部で使われる固有のアイテム識別子で、“give”または“debug”権限を持っていれば、アイテムのヘルプに記載されているはずです
• For /spawnentity you need an entity name, which is another identifier=・/spawnentity にはエンティティ名が必要で、これは別の識別子です
Privileges=権限
Each player has a set of privileges, which differs from server to server. Your privileges determine what you can and can't do. Privileges can be granted and revoked from other players by any player who has the privilege called “privs”.=各プレイヤーは、サーバーによって異なる一連の権限を持ちます。権限は、あなたができること、できないことを規定します。“privs”という権限を持っているプレイヤーであれば、権限を他のプレイヤーに付与したり、取り消したりできます。
On a multiplayer server with the default configuration, new players start with the privileges called “interact” and “shout”. The “interact” privilege is required for the most basic gameplay actions such as building, mining, using, etc. The “shout” privilege allows to chat.=デフォルト設定のマルチプレイヤーサーバーでは、新規プレイヤーは“interact”と“shout”と呼ばれる権限でスタートします。“interact”権限は、建築、採掘、使用など、最も基本的なゲームプレイに必要なものです。“shout”権限は、チャットを行うためのものです。
There is a small set of core privileges which you'll find on every server, other privileges might be added by mods.=すべてのサーバーで見られる主要な権限の小セットがあり、その他の権限はModによって追加される場合があります。
To view your own privileges, issue the server command “/privs”.=自分の権限を表示するには、サーバーコマンド“/privs”を実行します。
Here are a few basic privilege-related commands:=基本的な権限関連のコマンドをいくつか紹介します:
• /privs: Lists your privileges=・/privsあなたの権限の一覧
• /privs <player>: Lists the privileges of <player>=・/privs <player><player>の権限の一覧
• /help privs: Shows a list and description about all privileges=・/help privs全権限の一覧と説明を表示
Players with the “privs” privilege can modify privileges at will:=“privs”権限を持つプレイヤーは、自由に権限を変更可能
• /grant <player> <privilege>: Grant <privilege> to <player>=・/grant <player> <privilege><player> に <privilege> を付与
• /revoke <player> <privilege>: Revoke <privilege> from <player>=・/revoke <player> <privilege><player> から <privilege> を取り消す
In single-player mode, you can use “/grantme all” to unlock all abilities.=シングルプレイでは、“/grantme all”ですべての能力が解放されます。
Light=光
As the world is entirely block-based, so is the light in the world. Each block has its own brightness. The brightness of a block is expressed in a “light level” which ranges from 0 (total darkness) to 15 (as bright as the sun).=世界がすべてブロックベースである以上、世界の光もまた然りです。各ブロックはそれぞれの明るさを持ちます。ブロックの明るさは“light level”明るさで表され、0真っ暗から15太陽と同じ明るさまでの範囲で設定できます。
There are two types of light: Sunlight and artificial light.=光には2つの種類があります:太陽光と人工光です。
Artificial light is emitted by luminous blocks. Artificial light has a light level from 1-14.=人工光は発光ブロックから放射されます。人工光は114の明るさを持ちます。
Sunlight is the brightest light and always goes perfectly straight down from the sky at each time of the day. At night, the sunlight will become moonlight instead, which still provides a small amount of light. The light level of sunlight is 15.=太陽光は最も明るい光であり、日中のどの時間帯でも、常に空から完全にまっすぐ降り注いでいます。夜になると、太陽光は代わりに月明かりになりますが、これはまだわずかな光量しか提供しません。太陽光の明るさは15です。
Blocks have 3 levels of transparency:=ブロックは3段階の透明度を持ちます
• Transparent: Sunlight goes through limitless, artificial light goes through with losses=・透明:太陽光は無限に通過し、人工光は損失を伴って通過する
• Semi-transparent: Sunlight and artificial light go through with losses=・半透明:太陽光と人工光は損失を伴って通過する
• Opaque: No light passes through=・不透明:光を通さない
Artificial light will lose one level of brightness for each transparent or semi-transparent block it passes through, until only darkness remains (image 1).=人工光は、透明または半透明のブロックを通過するたびに明るさが1段階下がり、やがて暗闇だけが残ります画像1
Sunlight will preserve its brightness as long it only passes fully transparent blocks. When it passes through a semi-transparent block, it turns to artificial light. Image 2 shows the difference.=太陽光は、完全に透明なブロックだけを通過する限り、その明るさを保てます。半透明のブロックを通過すると、人工光に変化します。画像2 はその違いを示しています。
Note that “transparency” here only means that the block is able to carry brightness from its neighboring blocks. It is possible for a block to be transparent to light but you can't see trough the other side.=なお、ここでいう「透明度」とは、隣接するブロックの明るさを伝達できるという意味でしかありません。ブロックが光に対して透明でも、あなたは向こう側が見通せないということはあり得ます。
Coordinates=座標
The world is a large cube. And because of this, a position in the world can be easily expressed with Cartesian coordinates. That is, for each position in the world, there are 3 values X, Y and Z.=世界は大きな立方体です。そのため、世界における位置は直交座標で簡単に表せます。つまり、世界の各位置には、X、Y、Zの3つの値が存在します。
Like this: (5, 45, -12)=こんな感じで:(5, 45, -12)
This refers to the position where X@=5, Y@=45 and Z@=-12. The 3 letters are called “axes”: Y is for the height. X and Z are for the horizontal position.=これは、X@=5、Y@=45、Z@=12 の位置を指します。この3文字を“軸”と呼びますYは高さ、XとZは水平方向の位置を表します。
The values for X, Y and Z work like this:=X、Y、Zの値は次のように動きます
• If you go up, Y increases=・上昇すると、Yが増加
• If you go down, Y decreases=・下降すると、Yが減少
• If you follow the sun, X increases=・太陽の進行方向にならうと、Xが増加
• If you go to the reverse direction, X decreases=・逆方向へ行くと、Xは減少
• Follow the sun, then go right: Z increases=・太陽に向かって、右に進むZが増加
• Follow the sun, then go left: Z decreases=・太陽に向かって、左に進むZが減少
• The side length of a full cube is 1=・完全な立方体の辺の長さは、1
You can view your current position in the debug screen (open with [F5]).=デバッグ画面([F5]で開く)にて現在位置を確認できます。
# MCL2 extensions
Creative Mode=クリエイティブモード
Enabling Creative Mode in MineClone 2 applies the following changes:=MineClone 2 で Creative Mode を有効にすると、以下の変更が適用されます:
• You keep the things you've placed=・あなたが置いたものを保つ
• Creative inventory is available to obtain most items easily=・ほとんどのアイテムを簡単に入手できるクリエイティブインベントリが利用可能
• Hand breaks all default blocks instantly=・すべてのデフォルトブロックを手で即座に壊せる
• Greatly increased hand pointing range=・手のポイント範囲の大幅な拡大
• Mined blocks don't drop items=・採掘されたブロックがアイテムをドロップしない
• Items don't get used up=・アイテムを使い切ることがない
• Tools don't wear off=・道具が消耗しない
• You can eat food whenever you want=・食べたい時にいつでも食べられる
• You can always use the minimap (including radar mode)=・常にミニマップが使える(レーダーモード含む)
Damage is not affected by Creative Mode, it needs to be disabled separately.=ダメージはクリエイティブモードの影響を受けないので、別途無効化する必要があります。
Mobs=MOB
Mobs are the living beings in the world. This includes animals and monsters.=MOBとは、世界に存在する生き物のことです。動物やモンスターも含まれます。
Mobs appear randomly throughout the world. This is called “spawning”. Each mob kind appears on particular block types at a given light level. The height also plays a role. Peaceful mobs tend to spawn at daylight while hostile ones prefer darkness. Most mobs can spawn on any solid block but some mobs only spawn on particular blocks (like grass blocks).=MOBは世界各地にランダムに出現します。これを「スポーンする」と言います。各MOBは特定のブロックに、特定の明るさにおいて出現します。また、高さも重要な要素です。平和的なMOBは昼間に出現し、敵対的なMOBは暗闇を好む傾向があります。ほとんどのMOBはどの固体ブロックにもスポーンできますが、特定のブロック草原のようなにしかスポーンしないMOBもいます。
Like players, mobs have hit points and sometimes armor points, too (which means you need better weapons to deal any damage at all). Also like players, hostile mobs can attack directly or at a distance. Mobs may drop random items after they die.=プレイヤーと同様に、MOBにもヒットポイントがあり、時にはアーマーポイントもありますということは、ダメージを与えるにはより良い武器が必要です。また、プレイヤーと同様に、敵対するMOBは直接攻撃することも距離を取って攻撃することもできます。MOBは死んだ後、ランダムなアイテムをドロップすることがあります。
Most animals roam the world aimlessly while most hostile mobs hunt players. Animals can be fed, tamed and bred.=ほとんどの動物があてもなく世界をさまよい、ほとんどの敵対的なMOBがプレイヤーを狩ります。動物には餌を与え、飼いならし、繁殖させることができます。
Animals=動物
Animals are peaceful beings which roam the world aimlessly. You can feed, tame and breed them.=動物たちは、世界をあてもなく歩き回る平和な存在です。餌をあげたり、飼いならしたり、繁殖させたりすることができます。
Feeding:=餌やり:
Each animal has its own taste for food and doesn't just accept any food. To feed, hold an item in your hand and rightclick the animal.=動物にはそれぞれ食べ物の好みがあり、どんな食べ物でもいいというわけではありません。餌を与えるには、アイテムを手に持ち、動物を右クリックします。
Animals are attraced to the food they like and follow you as long you hold the food item in hand.=動物は好きな食べ物に惹かれ、餌を手にしている間はついてきます。
Feeding an animal has three uses: Taming, healing and breeding.=動物の給餌には3つの用途があります飼いならす、癒す、繁殖させる
Feeding heals animals instantly, depending on the quality of the food item.=餌を与えると、餌の質にもよりますが、動物がすぐに回復します。
Taming:=手懐ける:
A few animals can be tamed. You can generally do more things with tamed animals and use other items on them. For example, tame horses can be saddled and tame wolves fight on your side.=いくつかの動物は手懐けることができます。一般的に、手懐けた動物にはより多くのことができ、他のアイテムも使用できます。例えば、飼いならされた馬には鞍を付けることができ、飼いならされた狼は側で戦ってくれます。
Breeding:=繁殖
When you have fed an animal up to its maximum health, then feed it again, you will activate “Love Mode” and many hearts appear around the animal.=動物の体力を最大まで回復させてから、再びエサを与えると「ラブモード」が発動し、動物のまわりにたくさんのハートが現れます。
Two animals of the same species will start to breed if they are in Love Mode and close to each other. Soon a baby animal will pop up.=同じ種の2匹の動物は、ラブモード状態で近くにいると交配を始めます。すぐに動物の赤ちゃんが飛び出します。
Baby animals:=動物の仔
Baby animals are just like their adult couterparts, but they can't be tamed or bred and don't drop anything when they die. They grow to adults after a short time. When fed, they grow to adults faster.=動物の仔は成体と同じですが、飼いならしたり繁殖させたりすることはできず、死んでも何もドロップしません。短期間で成体になります。餌を与えると、より早く成体になります。
Hunger=満腹度
Hunger affects your health and your ability to sprint. Hunger is not in effect when damage is disabled.=満腹度はヘルスと走る能力に影響します。ダメージ無効モードでは、満腹度は効果を及ぼしません。
Core hunger rules:=満腹度の基礎:
• You start with 20/20 hunger points (more points @= less hungry)=・20/20 の満腹度でスタート(ポイントが多い @= 空腹に長く耐えられる)
• Actions like combat, jumping, sprinting, etc. decrease hunger points=・戦闘、ジャンプ、走るなどのアクションは、満腹度が減少
• Food restores hunger points=・食べ物で満腹度が回復
• If your hunger bar decreases, you're hungry=・満腹ゲージが減ってきたら、それは既に「空腹」の状態
• At 18-20 hunger points, you regenerate 1 HP every 4 seconds=・満腹度が1820のとき、4秒ごとにHPが1回復.
• At 6 hunger points or less, you can't sprint=・満腹度が6以下になると、走ることができなくなる
• At 0 hunger points, you lose 1 HP every 4 seconds (down to 1 HP)=・満腹度が0になると、4秒ごとにHPが1減少HP1まで
• Poisonous food decreases your health=・毒のある食べ物は、ヘルスが減少
Details:=詳細:
You have 0-20 hunger points, indicated by 20 drumstick half-icons above the hotbar. You also have an invisible attribute: Saturation.=あなたは 0〜20 の満腹度を持っており、ホットバーの上にある20個分の骨付き肉アイコン半分で1個分がそれを示しています。また、見えない属性も持っています隠し満腹度
Hunger points reflect how full you are while saturation points reflect how long it takes until you're hungry again.=満腹度は「空腹に耐えられる時間」と「腹持ちの許容量」を反映し、隠し満腹度は、再び空腹になるまでの「腹持ちする時間」が反映(見えませんが)されています。
Each food item increases both your hunger level as well your saturation.=食べ物は、満腹度と隠し満腹度の両方を増加させます。
Food with a high saturation boost has the advantage that it will take longer until you get hungry again.=隠し満腹度増加の高い食品は、再び空腹になるまでの時間が長くなるという利点があります。
A few food items might induce food poisoning by chance. When you're poisoned, the health and hunger symbols turn sickly green. Food poisoning drains your health by 1 HP per second, down to 1 HP. Food poisoning also drains your saturation. Food poisoning goes away after a while or when you drink milk.=いくつかの食べ物で、偶然にも食中毒を誘発することがあります。食中毒にかかると、ヘルスと満腹ゲージが病的な緑色になります。食中毒になると毎秒1HPずつ消耗しますが、減るのは1HPまでで0にはなりません。また、食中毒は隠し満腹度も消耗します。食中毒はミルクを飲むか、しばらく経つと治ります。
You start with 5 saturation points. The maximum saturation is equal to your current hunger level. So with 20 hunger points your maximum saturation is 20. What this means is that food items which restore many saturation points are more effective the more hunger points you have. This is because at low hunger levels, a lot of the saturation boost will be lost due to the low saturation cap.=隠し満腹度は5からスタートします。隠し満腹度の最大値は現在の満腹度と同じです。つまり、満腹度が20ある時は、最大隠し満腹度も20となります。このことは、隠し満腹度を多く回復させる食べ物は、満腹度が高い時ほど効果的であることを意味します。例えば、満腹度が低い場合は隠し満腹度の上限も低いため、それを超える量の隠し満腹度回復は損をしていることになります。
If your saturation reaches 0, you're hungry and start to lose hunger points. Whenever you see the hunger bar decrease, it is a good time to eat.=隠し満腹度が0になると、「空腹」状態となり満腹度が減少しはじめます。満腹ゲージの減少を確認したらいつでも、食事する良いタイミングです。
Saturation decreases by doing things which exhaust you (highest exhaustion first):=消耗する行動によって、隠し満腹度が低下(一番目が最も消耗する):
• Regenerating 1 HP=・HPが回復する
• Suffering food poisoning=・食中毒を起こす
• Sprint-jumping=・走りながらジャンプする
• Sprinting=・走る
• Attacking=・攻撃する
• Taking damage=・ダメージを受ける
• Swimming=・泳ぐ
• Jumping=・ジャンプする
• Mining a block=・ブロックを採掘する
Other actions, like walking, do not exaust you.=歩くなどの他の行動では、消耗しません。
If you have a map item in any of your hotbar slots, you can use the minimap.=いずれかのホットバースロットにマップアイテムがあれば、ミニマップが使えます。

View File

@ -0,0 +1,48 @@
# textdomain: mcl_tt
Head armor=頭具
Torso armor=胴衣
Legs armor=脚具
Feet armor=足具
Armor points: @1=防具値:@1
Armor durability: @1=防具耐久度:@1
Protection: @1%=外傷防護:@1%
Hunger points: +@1=満腹度:+@1
Saturation points: +@1=隠し満腹度:+@1
Deals damage when falling=落下時にダメージ発生
Grows on grass blocks or dirt=草原や土の上に生育
Grows on grass blocks, podzol, dirt or coarse dirt=草原、ポドゾル、土、粗い土の上に生育
Flammable=可燃性
Zombie view range: -50%=ゾンビに見つかる距離:-50%
Skeleton view range: -50%=スケルトンに見つかる距離:-50%
Creeper view range: -50%=クリーパーに見つかる距離:-50%
Damage: @1=ダメージ:@1
Damage (@1): @2=ダメージ (@1)@2
Healing: @1=回復:@1
Healing (@1): @2=回復 (@1)@2
Full punch interval: @1s=全力攻撃の間隔:@1秒
Contact damage: @1 per second=接触ダメージ:@1/秒
Contact healing: @1 per second=接触回復:@1/秒
Drowning damage: @1=窒息ダメージ:@1
Bouncy (@1%)=弾力性 (@1%)
Luminance: @1=発光:@1
Slippery=滑りやすい
Climbable=よじ登れる
Climbable (only downwards)=よじ登れる(下方のみ)
No jumping=ジャンプ不可
No swimming upwards=上方への水泳不可
No rising=上昇不可
Fall damage: @1%=落下ダメージ:@1%
Fall damage: +@1%=落下ダメージ:+@1%
No fall damage=落下ダメージなし
Mining speed: @1=採掘速度:@1
Very fast=とても速い
Extremely fast=とてつもなく速い
Fast=速い
Slow=遅い
Very slow=とても遅い
Painfully slow=苦痛レベルで遅い
Mining durability: @1=採掘耐久度:@1
Block breaking strength: @1=ブロック破壊力:@1
@1 uses=@1 使用
Unlimited uses=無限に使用可能
Durability: @1=耐久度:@1

Some files were not shown because too many files have changed in this diff Show More