1
0
Fork 0

Merge branch 'master' into screwdriver

objects
Wuzzy 2019-12-09 15:09:49 +01:00
commit 3de818d2c2
741 changed files with 14827 additions and 8917 deletions

View File

@ -66,8 +66,10 @@ Please read <http://minecraft.gamepedia.com/Breaking> to learn how digging times
### Groups (mostly) used for crafting recipes ### Groups (mostly) used for crafting recipes
* `sand=1`: Sand (any color) * `sand=1`: Sand (any color)
* `sandstone=1`: (Yellow) sandstone and related nodes (chiseled and the like) (only full blocks) * `sandstone=1`: Sandstone (any color) and related nodes (chiseled and the like) (only full blocks)
* `redsandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks) * `normal_sandstone=1`: “Normal” (yellow) sandstone and related nodes (chiseled and the like) (only full blocks)
* `red_sandstone=1`: Red sandstone and related nodes (chiseled and the like) (only full blocks)
* `hardened_clay=1`: Terracotta (any color)
* `quartz_block=1`: Quartz Block and variants (chiseled, pillar, etc.) (only full blocks) * `quartz_block=1`: Quartz Block and variants (chiseled, pillar, etc.) (only full blocks)
* `stonebrick=1`: Stone Bricks and related nodes (only full blocks) * `stonebrick=1`: Stone Bricks and related nodes (only full blocks)
* `shulker_box=1`: Block is a shulker box * `shulker_box=1`: Block is a shulker box
@ -166,6 +168,13 @@ These groups are used mostly for informational purposes
* `plant=1`: Plant or part of a plant * `plant=1`: Plant or part of a plant
* `double_plant`: Part of a double-sized plant. 1 = lower part, 2 = upper part * `double_plant`: Part of a double-sized plant. 1 = lower part, 2 = upper part
* `pickaxe=1`: Pickaxe
* `shovel=1`: Shovel
* `axe=1`: Axe
* `sword=1`: Sword
* `hoe=1`: Hoe (farming tool)
* `shears=1`: Shears
* `weapon=1`: Item is primarily (!) a weapon * `weapon=1`: Item is primarily (!) a weapon
* `tool=1`: Item is primarily (!) a tool * `tool=1`: Item is primarily (!) a tool
* `craftitem=1`: Item is primarily (!) used for crafting * `craftitem=1`: Item is primarily (!) used for crafting

View File

@ -8,8 +8,6 @@ For these features, no easy Lua workaround could be found.
### Lua API ### Lua API
#### Tools/wielded item #### Tools/wielded item
- Allow **much** faster liquid flowing ([#2810](https://github.com/minetest/minetest/issues/2810))
- “Lock” hotbar for a brief time after using an item, making it impossible to switch item or to attach/mine/build until the delay is over (For eating with delay) - “Lock” hotbar for a brief time after using an item, making it impossible to switch item or to attach/mine/build until the delay is over (For eating with delay)
- Tool charging: Holding down the mouse and releasing it, applying a “power level” (For bow and arrows, more charge = higher arrow range) ([issue 5212](https://github.com/minetest/minetest/issues/5212)) - Tool charging: Holding down the mouse and releasing it, applying a “power level” (For bow and arrows, more charge = higher arrow range) ([issue 5212](https://github.com/minetest/minetest/issues/5212))
- [Dual Wielding](http://minecraft.gamepedia.com/Dual_wield) - [Dual Wielding](http://minecraft.gamepedia.com/Dual_wield)
@ -21,7 +19,6 @@ For these features, no easy Lua workaround could be found.
## Interface ## Interface
- Inventory: Hold down right mouse button while holding an item stack to drop items into the slots as you move the mouse. Makes crafting MUCH faster - Inventory: Hold down right mouse button while holding an item stack to drop items into the slots as you move the mouse. Makes crafting MUCH faster
- **Much** more informative item tooltips
- Sneak+Leftclick on crafting output crafts as many items as possible and immediately puts it into the player inventory ([issue 5211](https://github.com/minetest/minetest/issues/5211)) - Sneak+Leftclick on crafting output crafts as many items as possible and immediately puts it into the player inventory ([issue 5211](https://github.com/minetest/minetest/issues/5211))
- Sneak+click on inventory slot should be able to put items into additional “fallback inventories” if the first inventory is full. Required for large chests - Sneak+click on inventory slot should be able to put items into additional “fallback inventories” if the first inventory is full. Required for large chests
- Sneak+click puts items in different inventories depending on the item type (maybe group-based)? Required for sneak-clicking to armor slots - Sneak+click puts items in different inventories depending on the item type (maybe group-based)? Required for sneak-clicking to armor slots
@ -39,8 +36,5 @@ For these features, a workaround (or hack ;-)) by using Lua is theoretically pos
- Set damage frequency of `damage_per_second`. In Minecraft many things damage players every half-second rather than every second - Set damage frequency of `damage_per_second`. In Minecraft many things damage players every half-second rather than every second
- Possible to damage players directly when they are with the head inside. This allows to add Minecraft-like suffocation - Possible to damage players directly when they are with the head inside. This allows to add Minecraft-like suffocation
#### Crafting
- Require tools to be intact in crafting
#### Nice-to-haye #### Nice-to-haye
- Utility function to rotate pillar-like nodes, requiring only 3 possible orientations (X, Y, Z). Basically this is `minetest.rotate_node` but with less orientations; the purpur pillar would mess up if a mirrored rotation would be possible. This is already implemented in MCL2, See `mcl_util` for more infos - Utility function to rotate pillar-like nodes, requiring only 3 possible orientations (X, Y, Z). Basically this is `minetest.rotate_node` but with less orientations; the purpur pillar would mess up if a mirrored rotation would be possible. This is already implemented in MCL2, See `mcl_util` for more infos

View File

@ -1,8 +1,8 @@
# MineClone 2 # MineClone 2
An unofficial Minecraft-like game for Minetest. Forked from MineClone by daredevils. An unofficial Minecraft-like game for Minetest. Forked from MineClone by davedevils.
Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB. Developed by Wuzzy and contributors. Not developed or endorsed by Mojang AB.
Version: 0.46.0 Version: 0.55.1
### Gameplay ### Gameplay
You start in a randomly-generated world made entirely of cubes. You can explore You start in a randomly-generated world made entirely of cubes. You can explore
@ -67,7 +67,6 @@ an explanation.
#### Incomplete items #### Incomplete items
These items do not work yet, but you can get them with `/giveme` for testing: These items do not work yet, but you can get them with `/giveme` for testing:
* Fishing Rod: `mcl_fishing:fishing_rod`
* Activator Rail: `mcl_minecarts:activator_rail` * Activator Rail: `mcl_minecarts:activator_rail`
* Minecart with Chest: `mcl_minecarts:chest_minecart` * Minecart with Chest: `mcl_minecarts:chest_minecart`
* Minecart with Furnace: `mcl_minecarts:furnace_minecart` * Minecart with Furnace: `mcl_minecarts:furnace_minecart`
@ -75,13 +74,14 @@ These items do not work yet, but you can get them with `/giveme` for testing:
* Minecart with Command Block: `mcl_minecarts:command_block_minecart` * Minecart with Command Block: `mcl_minecarts:command_block_minecart`
## Installation ## Installation
This game requires [Minetest](http://minetest.net) to run This game requires [Minetest](http://minetest.net) to run (version 5.0.0 or
(version 0.4.16 or 0.4.17). later). So you need to install Minetest first. Only stable versions of Minetest
So you need to install Minetest first. Only stable versions of Minetest are are officially supported.
officially supported. Minetest 5.0.0 (when released) will NOT be supported (yet). There is no support for running MineClone 2 in development versions of Minetest.
There is no support whatsoever for running MineClone 2 in development versions of Minetest.
To install MineClone 2, move this directory into the “games” directory of To install MineClone 2 (if you haven't already), move this directory into the
your Minetest data directory. Consult the help of Minetest to learn more. “games” directory of your Minetest data directory. Consult the help of
Minetest to learn more.
## Project description ## Project description
The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software. The main goal of **MineClone 2** is to be a clone of Minecraft and to be released as free software.
@ -197,8 +197,10 @@ There are so many people to list (sorry). Check out the respective mod directori
### Coding ### Coding
* [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods * [Wuzzy](https://forum.minetest.net/memberlist.php?mode=viewprofile&u=3082): Main programmer of most mods
* daredevils: Creator of MineClone on which MineClone 2 is based on * davedevils: Creator of MineClone on which MineClone 2 is based on
* [ex-bart](https://github.com/ex-bart): Redstone comparators * [ex-bart](https://github.com/ex-bart): Redstone comparators
* [Rootyjr](https://github.com/Rootyjr): Fishing rod and bugfixes
* [aligator](https://github.com/aligator): Improvement of doors
* Lots of other people: TO BE WRITTEN (see mod directories for details) * Lots of other people: TO BE WRITTEN (see mod directories for details)
### Textures ### Textures
@ -218,7 +220,7 @@ Various sources. See the respective mod directories for details.
### Special thanks ### Special thanks
* daredevils for starting MineClone, the original version of this game * davedevils for starting MineClone, the original version of this game
* celeron55 for creating Minetest * celeron55 for creating Minetest
* Minetest's modding community for providing a huge selection of mods, some of which ended up in MineClone 2 * Minetest's modding community for providing a huge selection of mods, some of which ended up in MineClone 2
* Jordach for the jukebox music compilation from Big Freaking Dig * Jordach for the jukebox music compilation from Big Freaking Dig
@ -241,10 +243,10 @@ Here's the detailed legalese for those who need it:
### License of source code ### License of source code
MineClone 2 is a clean-room implementation of Minecraft MineClone 2 is a clean-room implementation of Minecraft
and licensed under the and licensed under the
GNU LGPL v2.1 (Wuzzy, daredevils and countless others) (see `LICENSE.txt`). GNU LGPL v2.1 (Wuzzy, davedevils and countless others) (see `LICENSE.txt`).
MineClone 2 is a direct continuation of the discontinued MineClone MineClone 2 is a direct continuation of the discontinued MineClone
project by daredevils which fell under the same license. project by davedevils which fell under the same license.
Mods credit: Mods credit:
See `README.txt` or `README.md` in each mod directory for information about other authors. See `README.txt` or `README.md` in each mod directory for information about other authors.

View File

@ -1,7 +1,9 @@
# This is a game specify minetest.conf file, do not edit # This is a game specific minetest.conf file, do not edit
# Basic game rules
time_speed = 72 time_speed = 72
# Player physics
movement_acceleration_default = 2.4 movement_acceleration_default = 2.4
movement_acceleration_air = 1.2 movement_acceleration_air = 1.2
#movement_acceleration_fast = 10 #movement_acceleration_fast = 10
@ -20,4 +22,12 @@ movement_liquid_sink = 23
movement_gravity = 10.4 movement_gravity = 10.4
# Mapgen stuff
# altitude_chill and altitude_dry doesn't go well together with MCL2 biomes
# which already include "snowed" variants as you go higher.
# humid_rivers would cause the MushroomIsland biome to appear frequently around rivers.
mgvalleys_spflags = noaltitude_chill,noaltitude_dry,nohumid_rivers,vary_river_depth
# MCL2-specific stuff
keepInventory = false keepInventory = false

View File

@ -0,0 +1,42 @@
# Biome Info API
This document explains the API of this mod.
## v6 mapgen functions
These are functions for the v6 mapgen only.
Use these functions only in worlds in which the v6 mapgen is used.
If you use these in any other mapgen, bad things might happen.
### `biomeinfo.get_v6_humidity(pos)`
Get the biome humidity at pos (for v6 mapgen).
### `biomeinfo.get_v6_heat(pos)`
Get the biome heat/temperature at pos (for v6 mapgen).
### `biomeinfo.get_v6_biome(pos)`
Get the v6 biome at pos.
Returns a string, which is the unique biome name.
Note: This function currently ignores the `biomeblend` v6 mapgen flag,
it just pretends this setting is disabled.
This is normally not a problem, but at areas where biomes blend,
the result is not perfectly accurate and just an estimate.
### `biomeinfo.get_active_v6_biomes()`
Returns a table containing the names of all v6 biomes that are actively
used in the current world, e.g. those that have been activated
by the use of the mapgen v6 flags (`mgv6_spflags`).
### `biomeinfo.all_v6_biomes`
This is a table containing all v6 biomes (as strings), even those that
might not be used in the current world.
### v6 biome names
These are the biome names used in this mod:
* Normal
* Desert
* Jungle
* Tundra
* Taiga

View File

@ -0,0 +1,11 @@
# Biome Info API [`biomeinfo`]
This is an API mod for mod developers to add a couple of missing
biome-related functions.
Currently, this mod only adds v6-related functions.
Most importantly, you can get the heat, humidity and biome in the v6 mapgen.
See `API.md` for the API documentation.
Current version: 1.0.1 (this is a [SemVer](https://semver.org/))
License: MIT License

View File

@ -0,0 +1,179 @@
biomeinfo = {}
-- Copied from mapgen_v6.h
local MGV6_FREQ_HOT = 0.4
local MGV6_FREQ_SNOW = -0.4
local MGV6_FREQ_TAIGA = 0.5
local MGV6_FREQ_JUNGLE = 0.5
-- Biome types
local BT_NORMAL = "Normal"
local BT_TUNDRA = "Tundra"
local BT_TAIGA = "Taiga"
local BT_DESERT = "Desert"
local BT_JUNGLE = "Jungle"
-- Get mapgen settings
local seed = tonumber(minetest.get_mapgen_setting("seed")) or 0
local mgv6_perlin_biome, mgv6_perlin_humidity, mgv6_np_biome
local v6_flags_str = minetest.get_mapgen_setting("mgv6_spflags")
if v6_flags_str == nil then
v6_flags_str = ""
end
local v6_flags = string.split(v6_flags_str)
local v6_use_snow_biomes = true
local v6_use_jungles = true
-- TODO: Implement biome blend.
-- Currently we pretend biome blend is disabled.
-- This just makes the calculations inaccurate near biome boundaries,
-- but should be fine otherwise.
local v6_use_biome_blend = false
for f=1, #v6_flags do
local flag = v6_flags[f]:trim()
if flag == "nosnowbiomes" then
v6_use_snow_biomes = false
end
if flag == "snowbiomes" then
v6_use_snow_biomes = true
end
if flag == "nojungles" then
v6_use_jungles = false
end
if flag == "jungles" then
v6_use_jungles = true
end
if flag == "nobiomeblend" then
v6_use_biome_blend = false
end
-- TODO
-- if flag == "biomeblend" then
-- v6_use_biome_blend = true
-- end
end
-- Force-enable jungles when snowbiomes flag is set
if v6_use_snow_biomes then
v6_use_jungles = true
end
local v6_freq_desert = tonumber(minetest.get_mapgen_setting("mgv6_freq_desert") or 0.45)
local NOISE_MAGIC_X = 1619
local NOISE_MAGIC_Y = 31337
local NOISE_MAGIC_Z = 52591
local NOISE_MAGIC_SEED = 1013
local noise2d = function(x, y, seed)
-- TODO: implement noise2d function for biome blend
return 0
--[[
local n = (NOISE_MAGIC_X * x + NOISE_MAGIC_Y * y
+ NOISE_MAGIC_SEED * seed) & 0x7fffffff;
n = (n >> 13) ^ n;
n = (n * (n * n * 60493 + 19990303) + 1376312589) & 0x7fffffff;
return 1.0 - n / 0x40000000;
]]
end
biomeinfo.all_v6_biomes = {
BT_NORMAL,
BT_DESERT,
BT_JUNGLE,
BT_TUNDRA,
BT_TAIGA
}
local function init_perlins()
if not mgv6_perlin_biome then
mgv6_np_biome = minetest.get_mapgen_setting_noiseparams("mgv6_np_biome")
if mgv6_np_biome then
mgv6_perlin_biome = minetest.get_perlin(mgv6_np_biome)
end
end
if not mgv6_perlin_humidity then
local np_humidity = minetest.get_mapgen_setting_noiseparams("mgv6_np_humidity")
if np_humidity then
mgv6_perlin_humidity = minetest.get_perlin(np_humidity)
end
end
end
function biomeinfo.get_active_v6_biomes()
local biomes = { BT_NORMAL, BT_DESERT }
if v6_use_jungles then
table.insert(biomes, BT_JUNGLE)
end
if v6_use_snow_biomes then
table.insert(biomes, BT_TUNDRA)
table.insert(biomes, BT_TAIGA)
end
return biomes
end
function biomeinfo.get_v6_heat(pos)
init_perlins()
local bpos = vector.floor(pos)
-- The temperature noise needs a special offset (see calculateNoise in mapgen_v6.cpp)
return mgv6_perlin_biome:get_2d({x=bpos.x + mgv6_np_biome.spread.x*0.6, y=bpos.z + mgv6_np_biome.spread.z*0.2})
end
function biomeinfo.get_v6_humidity(pos)
init_perlins()
local bpos = vector.floor(pos)
return mgv6_perlin_humidity:get_2d({x=bpos.x, y=bpos.z})
end
-- Returns the v6 biome at pos.
-- Returns a string representing the biome name.
function biomeinfo.get_v6_biome(pos)
init_perlins()
local bpos = vector.floor(pos)
-- Based on the algorithm MapgenV6::getBiome in mapgen_v6.cpp
local pos2d = {x=bpos.x, y=bpos.z}
if not mgv6_perlin_biome or not mgv6_perlin_humidity then
return "???"
end
local d = biomeinfo.get_v6_heat(bpos)
local h = biomeinfo.get_v6_humidity(bpos)
if (v6_use_snow_biomes) then
local blend
if v6_use_biome_blend then
blend = noise2d(pos2d.x, pos2d.y, seed) / 40
else
blend = 0
end
if (d > MGV6_FREQ_HOT + blend) then
if (h > MGV6_FREQ_JUNGLE + blend) then
return BT_JUNGLE
end
return BT_DESERT
end
if (d < MGV6_FREQ_SNOW + blend) then
if (h > MGV6_FREQ_TAIGA + blend) then
return BT_TAIGA
end
return BT_TUNDRA
end
return BT_NORMAL
end
if (d > v6_freq_desert) then
return BT_DESERT
end
if ((v6_use_biome_blend) and (d > v6_freq_desert - 0.10) and
((noise2d(pos2d.x, pos2d.y, seed) + 1.0) > (v6_freq_desert - d) * 20.0)) then
return BT_DESERT
end
if ((v6_use_jungles) and (h > 0.75)) then
return BT_JUNGLE
end
return BT_NORMAL
end

View File

@ -0,0 +1,2 @@
name = biomeinfo
description = Simple API to get data about biomes.

View File

@ -1,12 +1,16 @@
-- Some global variables (don't overwrite them!) -- Some global variables (don't overwrite them!)
mcl_vars = {} mcl_vars = {}
--- GUI / inventory menu colors --- 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
mcl_vars.gui_nonbg = mcl_vars.gui_slots
-- Background stuff must be manually added by mods (no formspec prepend)
mcl_vars.gui_bg = "bgcolor[#080808BB;true]" mcl_vars.gui_bg = "bgcolor[#080808BB;true]"
mcl_vars.gui_bg_img = "" mcl_vars.gui_bg_img = ""
mcl_vars.inventory_header = mcl_vars.gui_slots .. mcl_vars.gui_bg mcl_vars.inventory_header = mcl_vars.gui_bg
-- Mapgen variables -- Mapgen variables
local mg_name = minetest.get_mapgen_setting("mg_name") local mg_name = minetest.get_mapgen_setting("mg_name")
@ -81,7 +85,7 @@ end
mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border mcl_vars.mg_end_min = -27073 -- Carefully chosen to be at a mapchunk border
mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit mcl_vars.mg_end_max_official = mcl_vars.mg_end_min + minecraft_height_limit
mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000 mcl_vars.mg_end_max = mcl_vars.mg_overworld_min - 2000
mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 80, z = 0 } mcl_vars.mg_end_platform_pos = { x = 100, y = mcl_vars.mg_end_min + 74, z = 0 }
-- Realm barrier used to safely separate the End from the void below the Overworld -- Realm barrier used to safely separate the End from the void below the Overworld
mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max mcl_vars.mg_realm_barrier_overworld_end_max = mcl_vars.mg_end_max

View File

@ -98,3 +98,54 @@ function mcl_loot.get_multi_loot(multi_loot_definitions, pr)
end end
return items return items
end end
--[[
Returns a table of length `max_slot` and all natural numbers between 1 and `max_slot`
in a random order.
]]
local function get_random_slots(max_slot)
local slots = {}
for s=1, max_slot do
slots[s] = s
end
local slots_out = {}
while #slots > 0 do
local r = math.random(1, #slots)
table.insert(slots_out, slots[r])
table.remove(slots, r)
end
return slots_out
end
--[[
Puts items in an inventory list into random slots.
* inv: InvRef
* listname: Inventory list name
* items: table of items to add
Items will be added from start of the table to end.
If the inventory already has occupied slots, or is
too small, placement of some items might fail.
]]
function mcl_loot.fill_inventory(inv, listname, items)
local size = inv:get_size(listname)
local slots = get_random_slots(size)
local leftovers = {}
-- 1st pass: Add items into random slots
for i=1, math.min(#items, size) do
local item = items[i]
local slot = slots[i]
local old_item = inv:get_stack(listname, slot)
local leftover = old_item:add_item(item)
inv:set_stack(listname, slot, old_item)
if not leftover:is_empty() then
table.insert(leftovers, item)
end
end
-- 2nd pass: If some items couldn't be added in first pass,
-- try again in a non-random fashion
for l=1, math.min(#leftovers, size) do
inv:add_item(listname, leftovers[l])
end
-- If there are still items left, tough luck!
end

View File

@ -4,6 +4,9 @@ Licenses of sounds
Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0)
http://creativecommons.org/licenses/by-sa/3.0/ http://creativecommons.org/licenses/by-sa/3.0/
Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)
http://creativecommons.org/licenses/by-sa/4.0/
Creative Commons Attribution 3.0 Unported (CC BY-SA 3.0) 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/
@ -67,10 +70,13 @@ 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)
https://www.freesound.org/people/sonictechtonic/sounds/241872/
player_damage.ogg
Voxelands project <http://www.voxelands.com/> (CC BY-SA 3.0) 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
player_damage.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)
@ -83,5 +89,9 @@ Adam_N (CC0 1.0):
player_falling_damage.ogg player_falling_damage.ogg
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):
mcl_sounds_cloth.ogg
Source: SnowSong sound and music pack <https://opengameart.org/content/snowsong-sound-and-music-pack>
Unknown authors (WTFPL): Unknown authors (WTFPL):
pedology_snow_soft_footstep.*.ogg pedology_snow_soft_footstep.*.ogg

View File

@ -97,6 +97,20 @@ function mcl_sounds.node_sound_wood_defaults(table)
return table return table
end end
function mcl_sounds.node_sound_wool_defaults(table)
table = table or {}
table.footstep = table.footstep or
{name="mcl_sounds_cloth", gain=0.5}
table.dug = table.dug or
{name="mcl_sounds_cloth", gain=1.0}
table.dig = table.dig or
{name="mcl_sounds_cloth", gain=0.9}
table.place = table.dig or
{name="mcl_sounds_cloth", gain=1.0}
mcl_sounds.node_sound_defaults(table)
return table
end
function mcl_sounds.node_sound_leaves_defaults(table) function mcl_sounds.node_sound_leaves_defaults(table)
table = table or {} table = table or {}
table.footstep = table.footstep or table.footstep = table.footstep or

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -174,14 +174,15 @@ function mcl_util.move_item(source_inventory, source_list, source_stack_id, dest
if not source_inventory:is_empty(source_list) then if not source_inventory:is_empty(source_list) then
local stack = source_inventory:get_stack(source_list, source_stack_id) local stack = source_inventory:get_stack(source_list, source_stack_id)
local item = stack:get_name()
if not stack:is_empty() then if not stack:is_empty() then
if not destination_inventory:room_for_item(destination_list, item) then local new_stack = ItemStack(stack)
new_stack:set_count(1)
if not destination_inventory:room_for_item(destination_list, new_stack) then
return false return false
end end
stack:take_item() stack:take_item()
source_inventory:set_stack(source_list, source_stack_id, stack) source_inventory:set_stack(source_list, source_stack_id, stack)
destination_inventory:add_item(destination_list, item) destination_inventory:add_item(destination_list, new_stack)
return true return true
end end
end end

View File

View File

@ -12,15 +12,17 @@ minetest.register_entity("drippingwater:drop_water", {
hp_max = 1, hp_max = 1,
physical = true, physical = true,
collide_with_objects = false, collide_with_objects = false,
collisionbox = {0,0,0,0,0,0}, collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025},
pointable = false,
visual = "cube", visual = "cube",
visual_size = {x=0.05, y=0.1}, visual_size = {x=0.05, y=0.1},
textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex}, textures = {water_tex, water_tex, water_tex, water_tex, water_tex, water_tex},
spritediv = {x=1, y=1}, spritediv = {x=1, y=1},
initial_sprite_basepos = {x=0, y=0}, initial_sprite_basepos = {x=0, y=0},
static_save = false,
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
self.object:setsprite({x=0,y=0}, 1, 1, true) self.object:set_sprite({x=0,y=0}, 1, 1, true)
end, end,
on_step = function(self, dtime) on_step = function(self, dtime)
@ -28,11 +30,11 @@ minetest.register_entity("drippingwater:drop_water", {
local ownpos = self.object:get_pos() local ownpos = self.object:get_pos()
if k==1 then if k==1 then
self.object:setacceleration({x=0, y=-5, z=0}) self.object:set_acceleration({x=0, y=-5, z=0})
end end
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
self.object:setacceleration({x=0, y=-5, z=0}) self.object:set_acceleration({x=0, y=-5, z=0})
end end
if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then if minetest.get_node({x=ownpos.x, y=ownpos.y -0.5, z=ownpos.z}).name ~= "air" then
@ -50,15 +52,18 @@ minetest.register_entity("drippingwater:drop_lava", {
hp_max = 1, hp_max = 1,
physical = true, physical = true,
collide_with_objects = false, collide_with_objects = false,
collisionbox = {0,0,0,0,0,0}, collisionbox = {-0.025,-0.05,-0.025,0.025,-0.01,0.025},
glow = math.max(7, minetest.registered_nodes["mcl_core:lava_source"].light_source - 3),
pointable = false,
visual = "cube", visual = "cube",
visual_size = {x=0.05, y=0.1}, visual_size = {x=0.05, y=0.1},
textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex}, textures = {lava_tex, lava_tex, lava_tex, lava_tex, lava_tex, lava_tex},
spritediv = {x=1, y=1}, spritediv = {x=1, y=1},
initial_sprite_basepos = {x=0, y=0}, initial_sprite_basepos = {x=0, y=0},
static_save = false,
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
self.object:setsprite({x=0,y=0}, 1, 0, true) self.object:set_sprite({x=0,y=0}, 1, 0, true)
end, end,
on_step = function(self, dtime) on_step = function(self, dtime)
@ -66,11 +71,11 @@ minetest.register_entity("drippingwater:drop_lava", {
local ownpos = self.object:get_pos() local ownpos = self.object:get_pos()
if k==1 then if k==1 then
self.object:setacceleration({x=0, y=-5, z=0}) self.object:set_acceleration({x=0, y=-5, z=0})
end end
if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then if minetest.get_node({x=ownpos.x, y=ownpos.y +0.5, z=ownpos.z}).name == "air" then
self.object:setacceleration({x=0, y=-5, z=0}) self.object:set_acceleration({x=0, y=-5, z=0})
end end

View File

@ -1,3 +1,4 @@
local S = minetest.get_translator("mcl_boats")
-- --
-- Helper functions -- Helper functions
-- --
@ -33,6 +34,8 @@ local boat_visual_size = {x = 3, y = 3}
local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y } local driver_visual_size = { x = 1/boat_visual_size.x, y = 1/boat_visual_size.y }
local paddling_speed = 22 local paddling_speed = 22
local boat_y_offset = 0.35 local boat_y_offset = 0.35
local boat_y_offset_ground = boat_y_offset + 0.6
local boat_side_offset = 1.001
-- --
-- Boat entity -- Boat entity
@ -69,7 +72,7 @@ function boat.on_rightclick(self, clicker)
mcl_player.player_set_animation(clicker, "stand" , 30) mcl_player.player_set_animation(clicker, "stand" , 30)
local pos = clicker:get_pos() local pos = clicker:get_pos()
pos = {x = pos.x, y = pos.y + 0.2, z = pos.z} pos = {x = pos.x, y = pos.y + 0.2, z = pos.z}
clicker:setpos(pos) clicker:set_pos(pos)
elseif not self._driver then elseif not self._driver then
local attach = clicker:get_attach() local attach = clicker:get_attach()
if attach and attach:get_luaentity() then if attach and attach:get_luaentity() then
@ -82,7 +85,7 @@ function boat.on_rightclick(self, clicker)
end end
self._driver = clicker self._driver = clicker
clicker:set_attach(self.object, "", clicker:set_attach(self.object, "",
{x = 0, y = 3.75, z = -1}, {x = 0, y = 0, z = 0}) {x = 0, y = 0.42, z = -1}, {x = 0, y = 0, z = 0})
clicker:set_properties({ visual_size = driver_visual_size }) clicker:set_properties({ visual_size = driver_visual_size })
mcl_player.player_attached[name] = true mcl_player.player_attached[name] = true
minetest.after(0.2, function(name) minetest.after(0.2, function(name)
@ -91,7 +94,7 @@ function boat.on_rightclick(self, clicker)
mcl_player.player_set_animation(player, "sit" , 30) mcl_player.player_set_animation(player, "sit" , 30)
end end
end, name) end, name)
clicker:set_look_horizontal(self.object:getyaw()) clicker:set_look_horizontal(self.object:get_yaw())
end end
end end
@ -143,13 +146,29 @@ function boat.on_punch(self, puncher)
end end
function boat.on_step(self, dtime) function boat.on_step(self, dtime)
self._v = get_v(self.object:getvelocity()) * get_sign(self._v) self._v = get_v(self.object:get_velocity()) * get_sign(self._v)
local on_water = true
local in_water = false
local v_factor = 1
local v_slowdown = 0.02
local p = self.object:get_pos()
if (not is_water({x=p.x, y=p.y-boat_y_offset, z=p.z})) then
on_water = false
v_factor = 0.5
v_slowdown = 0.04
elseif (is_water({x=p.x, y=p.y-boat_y_offset+1, z=p.z})) then
on_water = false
in_water = true
v_factor = 0.75
v_slowdown = 0.05
end
if self._driver then if self._driver then
local ctrl = self._driver:get_player_control() local ctrl = self._driver:get_player_control()
local yaw = self.object:getyaw() local yaw = self.object:get_yaw()
if ctrl.up then if ctrl.up then
-- Forwards -- Forwards
self._v = self._v + 0.1 self._v = self._v + 0.1 * v_factor
-- Paddling animation -- Paddling animation
if self._animation ~= 1 then if self._animation ~= 1 then
@ -158,7 +177,7 @@ function boat.on_step(self, dtime)
end end
elseif ctrl.down then elseif ctrl.down then
-- Backwards -- Backwards
self._v = self._v - 0.1 self._v = self._v - 0.1 * v_factor
-- Paddling animation, reversed -- Paddling animation, reversed
if self._animation ~= -1 then if self._animation ~= -1 then
@ -174,15 +193,15 @@ function boat.on_step(self, dtime)
end end
if ctrl.left then if ctrl.left then
if self._v < 0 then if self._v < 0 then
self.object:setyaw(yaw - (1 + dtime) * 0.03) self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor)
else else
self.object:setyaw(yaw + (1 + dtime) * 0.03) self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor)
end end
elseif ctrl.right then elseif ctrl.right then
if self._v < 0 then if self._v < 0 then
self.object:setyaw(yaw + (1 + dtime) * 0.03) self.object:set_yaw(yaw + (1 + dtime) * 0.03 * v_factor)
else else
self.object:setyaw(yaw - (1 + dtime) * 0.03) self.object:set_yaw(yaw - (1 + dtime) * 0.03 * v_factor)
end end
end end
else else
@ -192,73 +211,65 @@ function boat.on_step(self, dtime)
self._animation = 0 self._animation = 0
end end
end end
local velo = self.object:getvelocity()
if self._v == 0 and velo.x == 0 and velo.y == 0 and velo.z == 0 then
self.object:setpos(self.object:get_pos())
return
end
local s = get_sign(self._v) local s = get_sign(self._v)
self._v = self._v - 0.02 * s if not on_water and not in_water and math.abs(self._v) > 1.0 then
if s ~= get_sign(self._v) then v_slowdown = math.min(math.abs(self._v) - 1.0, v_slowdown * 5)
self.object:setvelocity({x = 0, y = 0, z = 0}) elseif in_water and math.abs(self._v) > 1.5 then
self._v = 0 v_slowdown = math.min(math.abs(self._v) - 1.5, v_slowdown * 5)
return
end end
if math.abs(self._v) > 5 then self._v = self._v - v_slowdown * s
self._v = 5 * get_sign(self._v) if s ~= get_sign(self._v) then
self._v = 0
end end
local p = self.object:get_pos()
p.y = p.y - boat_y_offset p.y = p.y - boat_y_offset
local new_velo local new_velo
local new_acce = {x = 0, y = 0, z = 0} local new_acce = {x = 0, y = 0, z = 0}
if not is_water(p) then if not is_water(p) then
-- Not on water or inside water: Free fall
local nodedef = minetest.registered_nodes[minetest.get_node(p).name] local nodedef = minetest.registered_nodes[minetest.get_node(p).name]
if (not nodedef) or nodedef.walkable then new_acce = {x = 0, y = -9.8, z = 0}
self._v = 0 new_velo = get_velocity(self._v, self.object:get_yaw(),
new_acce = {x = 0, y = 1, z = 0} self.object:get_velocity().y)
else
new_acce = {x = 0, y = -9.8, z = 0}
end
new_velo = get_velocity(self._v, self.object:getyaw(),
self.object:getvelocity().y)
self.object:setpos(self.object:get_pos())
else else
p.y = p.y + 1 p.y = p.y + 1
if is_water(p) then if is_water(p) then
local y = self.object:getvelocity().y -- Inside water: Slowly sink
if y >= 5 then local y = self.object:get_velocity().y
y = 5 y = y - 0.01
elseif y < 0 then if y < -0.2 then
new_acce = {x = 0, y = 20, z = 0} y = -0.2
else
new_acce = {x = 0, y = 5, z = 0}
end end
new_velo = get_velocity(self._v, self.object:getyaw(), y)
self.object:setpos(self.object:get_pos())
else
new_acce = {x = 0, y = 0, z = 0} new_acce = {x = 0, y = 0, z = 0}
if math.abs(self.object:getvelocity().y) < 1 then new_velo = get_velocity(self._v, self.object:get_yaw(), y)
local pos = self.object:get_pos() else
pos.y = math.floor(pos.y) + boat_y_offset -- On top of water
self.object:setpos(pos) new_acce = {x = 0, y = 0, z = 0}
new_velo = get_velocity(self._v, self.object:getyaw(), 0) if math.abs(self.object:get_velocity().y) < 0 then
new_velo = get_velocity(self._v, self.object:get_yaw(), 0)
else else
new_velo = get_velocity(self._v, self.object:getyaw(), new_velo = get_velocity(self._v, self.object:get_yaw(),
self.object:getvelocity().y) self.object:get_velocity().y)
self.object:setpos(self.object:get_pos())
end end
end end
end end
self.object:setvelocity(new_velo)
self.object:setacceleration(new_acce) -- Terminal velocity: 8 m/s per axis of travel
for _,axis in pairs({"z","y","x"}) do
if math.abs(new_velo[axis]) > 8 then
new_velo[axis] = 8 * get_sign(new_velo[axis])
end
end
self.object:set_velocity(new_velo)
self.object:set_acceleration(new_acce)
end end
-- Register one entity for all boat types -- Register one entity for all boat types
minetest.register_entity("mcl_boats:boat", boat) minetest.register_entity("mcl_boats:boat", boat)
local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" } local boat_ids = { "boat", "boat_spruce", "boat_birch", "boat_jungle", "boat_acacia", "boat_dark_oak" }
local names = { "Oak Boat", "Spruce Boat", "Birch Boat", "Jungle Boat", "Acacia Boat", "Dark Oak Boat" } local names = { S("Oak Boat"), S("Spruce Boat"), S("Birch Boat"), S("Jungle Boat"), S("Acacia Boat"), S("Dark Oak Boat") }
local craftstuffs = {} local craftstuffs = {}
if minetest.get_modpath("mcl_core") then if minetest.get_modpath("mcl_core") then
craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" } craftstuffs = { "mcl_core:wood", "mcl_core:sprucewood", "mcl_core:birchwood", "mcl_core:junglewood", "mcl_core:acaciawood", "mcl_core:darkwood" }
@ -273,9 +284,9 @@ for b=1, #boat_ids do
-- Only create one help entry for all boats -- Only create one help entry for all boats
if b == 1 then if b == 1 then
help = true help = true
longdesc = "Boats are used to travel on the surface of water." longdesc = S("Boats are used to travel on the surface of water.")
usagehelp = "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. Rightclick the boat again to leave it, punch the boat to make it drop as an item." usagehelp = S("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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.")
helpname = "Boat" helpname = S("Boat")
end end
minetest.register_craftitem(itemstring, { minetest.register_craftitem(itemstring, {
@ -290,7 +301,7 @@ for b=1, #boat_ids do
stack_max = 1, stack_max = 1,
on_place = function(itemstack, placer, pointed_thing) on_place = function(itemstack, placer, pointed_thing)
if pointed_thing.type ~= "node" then if pointed_thing.type ~= "node" then
return return itemstack
end end
-- Call on_rightclick if the pointed node defines it -- Call on_rightclick if the pointed node defines it
@ -301,11 +312,17 @@ for b=1, #boat_ids do
end end
end end
if not is_water(pointed_thing.under) then local pos = table.copy(pointed_thing.under)
return local dir = vector.subtract(pointed_thing.above, pointed_thing.under)
if math.abs(dir.x) > 0.9 or math.abs(dir.z) > 0.9 then
pos = vector.add(pos, vector.multiply(dir, boat_side_offset))
elseif is_water(pos) then
pos = vector.add(pos, vector.multiply(dir, boat_y_offset))
else
pos = vector.add(pos, vector.multiply(dir, boat_y_offset_ground))
end end
pointed_thing.under.y = pointed_thing.under.y + boat_y_offset local boat = minetest.add_entity(pos, "mcl_boats:boat")
local boat = minetest.add_entity(pointed_thing.under, "mcl_boats:boat")
boat:get_luaentity()._itemstring = itemstring boat:get_luaentity()._itemstring = itemstring
boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }}) boat:set_properties({textures = { "mcl_boats_texture_"..images[b].."_boat.png" }})
boat:set_yaw(placer:get_look_horizontal()) boat:set_yaw(placer:get_look_horizontal())

View File

@ -0,0 +1,10 @@
# textdomain: mcl_boats
Acacia Boat=Akazienboot
Birch Boat=Birkenboot
Boat=Boot
Boats are used to travel on the surface of water.=Boote werden benutzt, um sich auf der Wasseroberfläche zu bewegen.
Dark Oak Boat=Schwarzeichenboot
Jungle Boat=Dschungelboot
Oak Boat=Eichenboot
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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=Rechtsklicken Sie auf eine Wasserquelle, um das Boot zu platzieren. Rechtsklicken Sie auf das Boot, um es zu betreten. Mit [Links] und [Rechts] lenken, mit [Vorwärts] und [Rückwärts] Geschwindigkeit regeln oder rückwärts fahren. Rechtsklicken Sie erneut auf das Boot, um es zu verlassen, schlagen Sie das Boot, um es als Gegenstand fallen zu lassen.
Spruce Boat=Fichtenboot

View File

@ -0,0 +1,10 @@
# 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. Rightclick the boat again to leave it, punch the boat to make it drop as an item.=
Spruce Boat=

View File

@ -1,5 +1,5 @@
local S = minetest.get_translator("mcl_falling_nodes")
local dmes = minetest.get_modpath("mcl_death_messages") ~= nil local dmes = minetest.get_modpath("mcl_death_messages") ~= nil
local hung = minetest.get_modpath("mcl_hunger") ~= nil
local get_falling_depth = function(self) local get_falling_depth = function(self)
if not self._startpos then if not self._startpos then
@ -49,15 +49,12 @@ local deal_falling_damage = function(self, dtime)
-- TODO: Reduce damage if wearing a helmet -- TODO: Reduce damage if wearing a helmet
local msg local msg
if minetest.get_item_group(self.node.name, "anvil") ~= 0 then if minetest.get_item_group(self.node.name, "anvil") ~= 0 then
msg = "%s was smashed by a falling anvil." msg = S("@1 was smashed by a falling anvil.", v:get_player_name())
else else
msg = "%s was smashed by a falling block." msg = S("@1 was smashed by a falling block.", v:get_player_name())
end end
if dmes then if dmes then
mcl_death_messages.player_damage(v, string.format(msg, v:get_player_name())) mcl_death_messages.player_damage(v, msg)
end
if hung then
mcl_hunger.exhaust(v:get_player_name(), mcl_hunger.EXHAUST_DAMAGE)
end end
end end
v:set_hp(hp) v:set_hp(hp)
@ -145,9 +142,9 @@ minetest.register_entity(":__builtin:falling_node", {
on_step = function(self, dtime) on_step = function(self, dtime)
-- Set gravity -- Set gravity
local acceleration = self.object:getacceleration() local acceleration = self.object:get_acceleration()
if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then if not vector.equals(acceleration, {x = 0, y = -10, z = 0}) then
self.object:setacceleration({x = 0, y = -10, z = 0}) self.object:set_acceleration({x = 0, y = -10, z = 0})
end end
-- Turn to actual node when colliding with ground, or continue to move -- Turn to actual node when colliding with ground, or continue to move
local pos = self.object:get_pos() local pos = self.object:get_pos()
@ -204,15 +201,19 @@ minetest.register_entity(":__builtin:falling_node", {
for _, callback in pairs(minetest.registered_on_dignodes) do for _, callback in pairs(minetest.registered_on_dignodes) do
callback(np, n2) callback(np, n2)
end end
if minetest.registered_nodes[self.node.name] then local def = minetest.registered_nodes[self.node.name]
if def then
minetest.add_node(np, self.node) minetest.add_node(np, self.node)
if minetest.registered_nodes[self.node.name]._mcl_after_falling then if def._mcl_after_falling then
minetest.registered_nodes[self.node.name]._mcl_after_falling(np, get_falling_depth(self)) def._mcl_after_falling(np, get_falling_depth(self))
end end
if self.meta then if self.meta then
local meta = minetest.get_meta(np) local meta = minetest.get_meta(np)
meta:from_table(self.meta) meta:from_table(self.meta)
end end
if def.sounds and def.sounds.place and def.sounds.place.name then
minetest.sound_play(def.sounds.place, {pos = np})
end
end end
else else
-- Drop the *falling node* as an item if the destination node is NOT buildable to -- Drop the *falling node* as an item if the destination node is NOT buildable to
@ -226,7 +227,7 @@ minetest.register_entity(":__builtin:falling_node", {
minetest.check_for_falling(np) minetest.check_for_falling(np)
return return
end end
local vel = self.object:getvelocity() local vel = self.object:get_velocity()
-- Fix position if entity does not move -- Fix position if entity does not move
if vector.equals(vel, {x = 0, y = 0, z = 0}) then if vector.equals(vel, {x = 0, y = 0, z = 0}) then
local npos = vector.round(self.object:get_pos()) local npos = vector.round(self.object:get_pos())
@ -242,8 +243,14 @@ minetest.register_entity(":__builtin:falling_node", {
local npos3 = table.copy(npos) local npos3 = table.copy(npos)
npos3.y = npos3.y - 1 npos3.y = npos3.y - 1
minetest.add_node(npos3, self.node) minetest.add_node(npos3, self.node)
if minetest.registered_nodes[self.node.name]._mcl_after_falling then local def = minetest.registered_nodes[self.node.name]
minetest.registered_nodes[self.node.name]._mcl_after_falling(npos3, get_falling_depth(self)) if def then
if def._mcl_after_falling then
def._mcl_after_falling(npos3, get_falling_depth(self))
end
if def.sounds and def.sounds.place and def.sounds.place.name then
minetest.sound_play(def.sounds.place, {pos = np})
end
end end
deal_falling_damage(self, dtime) deal_falling_damage(self, dtime)
self.object:remove() self.object:remove()

View File

@ -0,0 +1,3 @@
# textdomain: mcl_falling_nodes
@1 was smashed by a falling anvil.=@1 wurde von einem fallenden Amboss zerschmettert.
@1 was smashed by a falling block.=@1 wurde von einem fallenden Block zerschmettert.

View File

@ -0,0 +1,3 @@
# textdomain: mcl_falling_nodes
@1 was smashed by a falling anvil.=
@1 was smashed by a falling block.=

View File

@ -98,14 +98,14 @@ minetest.register_globalstep(function(dtime)
local opos = object:get_pos() local opos = object:get_pos()
local vec = vector.subtract(checkpos, opos) local vec = vector.subtract(checkpos, opos)
vec = vector.add(opos, vector.divide(vec, 2)) vec = vector.add(opos, vector.divide(vec, 2))
object:moveto(vec) object:move_to(vec)
--fix eternally falling items --fix eternally falling items
minetest.after(0, function(object) minetest.after(0, function(object)
local lua = object:get_luaentity() local lua = object:get_luaentity()
if lua then if lua then
object:setacceleration({x=0, y=0, z=0}) object:set_acceleration({x=0, y=0, z=0})
end end
end, object) end, object)
@ -212,7 +212,7 @@ function minetest.handle_node_drops(pos, drops, digger)
-- This means there is no digger. This is a special case which allows this function to be called -- This means there is no digger. This is a special case which allows this function to be called
-- by hand. Creative Mode is intentionally ignored in this case. -- by hand. Creative Mode is intentionally ignored in this case.
local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops") or true local doTileDrops = minetest.settings:get_bool("mcl_doTileDrops", true)
if (digger ~= nil and minetest.settings:get_bool("creative_mode")) or doTileDrops == false then if (digger ~= nil and minetest.settings:get_bool("creative_mode")) or doTileDrops == false then
return return
end end
@ -245,16 +245,16 @@ function minetest.handle_node_drops(pos, drops, digger)
end end
for _,item in ipairs(drops) do for _,item in ipairs(drops) do
local count, name local count
if type(item) == "string" then if type(item) == "string" then
count = 1 count = ItemStack(item):get_count()
name = item
else else
count = item:get_count() count = item:get_count()
name = item:get_name()
end end
local drop_item = ItemStack(item)
drop_item:set_count(1)
for i=1,count do for i=1,count do
local obj = core.add_item(pos, name) local obj = core.add_item(pos, drop_item)
if obj ~= nil then if obj ~= nil then
local x = math.random(1, 5) local x = math.random(1, 5)
if math.random(1,2) == 1 then if math.random(1,2) == 1 then
@ -264,7 +264,7 @@ function minetest.handle_node_drops(pos, drops, digger)
if math.random(1,2) == 1 then if math.random(1,2) == 1 then
z = -z z = -z
end end
obj:setvelocity({x=1/x, y=obj:getvelocity().y, z=1/z}) obj:set_velocity({x=1/x, y=obj:get_velocity().y, z=1/z})
end end
end end
end end
@ -285,7 +285,7 @@ function minetest.item_drop(itemstack, dropper, pos)
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:setvelocity(v) obj:set_velocity(v)
-- Force collection delay -- Force collection delay
obj:get_luaentity()._insta_collect = false obj:get_luaentity()._insta_collect = false
return itemstack return itemstack
@ -306,6 +306,7 @@ core.register_entity(":__builtin:item", {
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,
visual = "wielditem", visual = "wielditem",
visual_size = {x = 0.4, y = 0.4}, visual_size = {x = 0.4, y = 0.4},
textures = {""}, textures = {""},
@ -373,7 +374,7 @@ core.register_entity(":__builtin:item", {
if not self or not self.object or not self.object:get_luaentity() then if not self or not self.object or not self.object:get_luaentity() then
return return
end end
local vel = self.object:getvelocity() local vel = self.object:get_velocity()
if vel and vel.x == 0 and vel.z == 0 then if vel and vel.x == 0 and vel.z == 0 then
local x = math.random(1, 5) local x = math.random(1, 5)
if math.random(1,2) == 1 then if math.random(1,2) == 1 then
@ -384,7 +385,7 @@ core.register_entity(":__builtin:item", {
z = -z z = -z
end end
local y = math.random(2,4) local y = math.random(2,4)
self.object:setvelocity({x=1/x, y=y, z=1/z}) self.object:set_velocity({x=1/x, y=y, z=1/z})
end end
end, self) end, self)
end end
@ -444,8 +445,8 @@ core.register_entity(":__builtin:item", {
self._forcetimer = 0 self._forcetimer = 0
self.object:set_armor_groups({immortal = 1}) self.object:set_armor_groups({immortal = 1})
self.object:setvelocity({x = 0, y = 2, z = 0}) self.object:set_velocity({x = 0, y = 2, z = 0})
self.object:setacceleration({x = 0, y = -get_gravity(), z = 0}) self.object:set_acceleration({x = 0, y = -get_gravity(), z = 0})
self:set_item(self.itemstring) self:set_item(self.itemstring)
end, end,
@ -542,8 +543,8 @@ core.register_entity(":__builtin:item", {
-- Push item out when stuck inside solid opaque node -- Push item out when stuck inside solid opaque node
if def and def.walkable and def.groups and def.groups.opaque == 1 then if def and def.walkable and def.groups and def.groups.opaque == 1 then
local shootdir local shootdir
local cx = p.x % 1 local cx = (p.x % 1) - 0.5
local cz = p.z % 1 local cz = (p.z % 1) - 0.5
local order = {} local order = {}
-- First prepare the order in which the 4 sides are to be checked. -- First prepare the order in which the 4 sides are to be checked.
@ -551,7 +552,7 @@ core.register_entity(":__builtin:item", {
-- 2nd: other direction -- 2nd: other direction
-- 3rd and 4th: other axis -- 3rd and 4th: other axis
local cxcz = function(o, cw, one, zero) local cxcz = function(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
@ -560,7 +561,7 @@ core.register_entity(":__builtin:item", {
end end
return o return o
end end
if math.abs(cx) > math.abs(cz) then if math.abs(cx) < math.abs(cz) then
order = cxcz(order, cx, "x", "z") order = cxcz(order, cx, "x", "z")
order = cxcz(order, cz, "z", "x") order = cxcz(order, cz, "z", "x")
else else
@ -589,8 +590,8 @@ core.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:setacceleration({x = 0, y = 0, z = 0}) self.object:set_acceleration({x = 0, y = 0, z = 0})
self.object:setvelocity(newv) self.object:set_velocity(newv)
disable_physics(self.object, self, false, false) disable_physics(self.object, self, false, false)
@ -643,8 +644,8 @@ core.register_entity(":__builtin:item", {
local f = 1.39 local f = 1.39
-- 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)
self.object:setacceleration({x = 0, y = 0, z = 0}) self.object:set_acceleration({x = 0, y = 0, z = 0})
self.object:setvelocity({x = newv.x, y = -0.22, z = newv.z}) self.object:set_velocity({x = newv.x, y = -0.22, z = newv.z})
self.physical_state = true self.physical_state = true
self._flowing = true self._flowing = true
@ -662,7 +663,7 @@ core.register_entity(":__builtin:item", {
-- 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({x=p.x, y=p.y-0.5, z=p.z}).name
local v = self.object:getvelocity() local v = self.object:get_velocity()
if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then if not core.registered_nodes[nn] or core.registered_nodes[nn].walkable and v.y == 0 then
if self.physical_state then if self.physical_state then

View File

@ -1,3 +1,5 @@
local S = minetest.get_translator("mcl_minecarts")
mcl_minecarts = {} mcl_minecarts = {}
mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts") mcl_minecarts.modpath = minetest.get_modpath("mcl_minecarts")
mcl_minecarts.speed_max = 10 mcl_minecarts.speed_max = 10
@ -61,7 +63,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
if puncher:get_player_control().sneak then if puncher:get_player_control().sneak then
if self._driver then if self._driver then
if self._old_pos then if self._old_pos then
self.object:setpos(self._old_pos) self.object:set_pos(self._old_pos)
end end
mcl_player.player_attached[self._driver] = nil mcl_player.player_attached[self._driver] = nil
local player = minetest.get_player_by_name(self._driver) local player = minetest.get_player_by_name(self._driver)
@ -98,7 +100,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
return return
end end
local vel = self.object:getvelocity() local vel = self.object:get_velocity()
if puncher:get_player_name() == self._driver then if puncher:get_player_name() == self._driver then
if math.abs(vel.x + vel.z) > 7 then if math.abs(vel.x + vel.z) > 7 then
return return
@ -121,7 +123,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
end end
function cart:on_step(dtime) function cart:on_step(dtime)
local vel = self.object:getvelocity() local vel = self.object:get_velocity()
local update = {} local update = {}
if self._last_float_check == nil then if self._last_float_check == nil then
self._last_float_check = 0 self._last_float_check = 0
@ -139,7 +141,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
-- Detach driver -- Detach driver
if self._driver then if self._driver then
if self._old_pos then if self._old_pos then
self.object:setpos(self._old_pos) self.object:set_pos(self._old_pos)
end end
mcl_player.player_attached[self._driver] = nil mcl_player.player_attached[self._driver] = nil
local player = minetest.get_player_by_name(self._driver) local player = minetest.get_player_by_name(self._driver)
@ -164,7 +166,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
if self._punched then if self._punched then
vel = vector.add(vel, self._velocity) vel = vector.add(vel, self._velocity)
self.object:setvelocity(vel) self.object:set_velocity(vel)
self._old_dir.y = 0 self._old_dir.y = 0
elseif vector.equals(vel, {x=0, y=0, z=0}) then elseif vector.equals(vel, {x=0, y=0, z=0}) then
return return
@ -217,8 +219,8 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
(self._old_vel.x * vel.x < 0 or self._old_vel.z * vel.z < 0) then (self._old_vel.x * vel.x < 0 or self._old_vel.z * vel.z < 0) then
self._old_vel = {x = 0, y = 0, z = 0} self._old_vel = {x = 0, y = 0, z = 0}
self._old_pos = pos self._old_pos = pos
self.object:setvelocity(vector.new()) self.object:set_velocity(vector.new())
self.object:setacceleration(vector.new()) self.object:set_acceleration(vector.new())
return return
end end
self._old_vel = vector.new(vel) self._old_vel = vector.new(vel)
@ -292,7 +294,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
new_acc = vector.multiply(dir, acc) new_acc = vector.multiply(dir, acc)
end end
self.object:setacceleration(new_acc) self.object:set_acceleration(new_acc)
self._old_pos = vector.new(pos) self._old_pos = vector.new(pos)
self._old_dir = vector.new(dir) self._old_dir = vector.new(dir)
self._old_switch = last_switch self._old_switch = last_switch
@ -321,7 +323,7 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
elseif dir.z < 0 then elseif dir.z < 0 then
yaw = 1 yaw = 1
end end
self.object:setyaw(yaw * math.pi) self.object:set_yaw(yaw * math.pi)
end end
if self._punched then if self._punched then
@ -341,9 +343,9 @@ local function register_entity(entity_id, mesh, textures, drop, on_rightclick)
end end
self.object:set_animation(anim, 1, 0) self.object:set_animation(anim, 1, 0)
self.object:setvelocity(vel) self.object:set_velocity(vel)
if update.pos then if update.pos then
self.object:setpos(pos) self.object:set_pos(pos)
end end
update = nil update = nil
end end
@ -387,7 +389,7 @@ mcl_minecarts.place_minecart = function(itemstack, pointed_thing)
le._railtype = railtype le._railtype = railtype
end end
local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype) local cart_dir = mcl_minecarts:get_rail_direction(railpos, {x=1, y=0, z=0}, nil, nil, railtype)
cart:setyaw(minetest.dir_to_yaw(cart_dir)) cart:set_yaw(minetest.dir_to_yaw(cart_dir))
if not minetest.settings:get_bool("creative_mode") then if not minetest.settings:get_bool("creative_mode") then
itemstack:take_item() itemstack:take_item()
@ -470,11 +472,11 @@ end
register_minecart( register_minecart(
"mcl_minecarts:minecart", "mcl_minecarts:minecart",
"mcl_minecarts:minecart", "mcl_minecarts:minecart",
"Minecart", S("Minecart"),
"Minecarts can be used for a quick transportion on rails." .. "\n" .. S("Minecarts can be used for a quick transportion on rails.") .. "\n" ..
"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.", S("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." .. "\n" .. S("You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.") .. "\n" ..
"To obtain the minecart, punch it while holding down the sneak key.", S("To obtain the minecart, punch it while holding down the sneak key."),
"mcl_minecarts_minecart.b3d", "mcl_minecarts_minecart.b3d",
{"mcl_minecarts_minecart.png"}, {"mcl_minecarts_minecart.png"},
"mcl_minecarts_minecart_normal.png", "mcl_minecarts_minecart_normal.png",
@ -490,11 +492,12 @@ register_minecart(
self._start_pos = nil self._start_pos = nil
clicker:set_detach() clicker:set_detach()
clicker:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0}) clicker:set_eye_offset({x=0, y=0, z=0},{x=0, y=0, z=0})
mcl_player.player_set_animation(clicker, "stand" , 30)
elseif not self._driver then elseif not self._driver then
self._driver = player_name self._driver = player_name
self._start_pos = self.object:get_pos() self._start_pos = self.object:get_pos()
mcl_player.player_attached[player_name] = true mcl_player.player_attached[player_name] = true
clicker:set_attach(self.object, "", {x=0, y=8.25, z=-2}, {x=0, y=0, z=0}) clicker:set_attach(self.object, "", {x=0, y=-1.75, z=-2}, {x=0, y=0, z=0})
mcl_player.player_attached[name] = true mcl_player.player_attached[name] = true
minetest.after(0.2, function(name) minetest.after(0.2, function(name)
local player = minetest.get_player_by_name(name) local player = minetest.get_player_by_name(name)
@ -511,7 +514,7 @@ register_minecart(
register_minecart( register_minecart(
"mcl_minecarts:chest_minecart", "mcl_minecarts:chest_minecart",
"mcl_minecarts:chest_minecart", "mcl_minecarts:chest_minecart",
"Minecart with Chest", S("Minecart with Chest"),
nil, nil, nil, nil,
"mcl_minecarts_minecart_chest.b3d", "mcl_minecarts_minecart_chest.b3d",
{ "mcl_chests_normal.png", "mcl_minecarts_minecart.png" }, { "mcl_chests_normal.png", "mcl_minecarts_minecart.png" },
@ -523,7 +526,7 @@ register_minecart(
register_minecart( register_minecart(
"mcl_minecarts:furnace_minecart", "mcl_minecarts:furnace_minecart",
"mcl_minecarts:furnace_minecart", "mcl_minecarts:furnace_minecart",
"Minecart with Furnace", S("Minecart with Furnace"),
nil, nil, nil, nil,
"mcl_minecarts_minecart_block.b3d", "mcl_minecarts_minecart_block.b3d",
{ {
@ -566,7 +569,7 @@ register_minecart(
register_minecart( register_minecart(
"mcl_minecarts:command_block_minecart", "mcl_minecarts:command_block_minecart",
"mcl_minecarts:command_block_minecart", "mcl_minecarts:command_block_minecart",
"Minecart with Command Block", S("Minecart with Command Block"),
nil, nil, nil, nil,
"mcl_minecarts_minecart_block.b3d", "mcl_minecarts_minecart_block.b3d",
{ {
@ -587,7 +590,7 @@ register_minecart(
register_minecart( register_minecart(
"mcl_minecarts:hopper_minecart", "mcl_minecarts:hopper_minecart",
"mcl_minecarts:hopper_minecart", "mcl_minecarts:hopper_minecart",
"Minecart with Hopper", S("Minecart with Hopper"),
nil, nil, nil, nil,
"mcl_minecarts_minecart_hopper.b3d", "mcl_minecarts_minecart_hopper.b3d",
{ {
@ -605,7 +608,7 @@ register_minecart(
register_minecart( register_minecart(
"mcl_minecarts:tnt_minecart", "mcl_minecarts:tnt_minecart",
"mcl_minecarts:tnt_minecart", "mcl_minecarts:tnt_minecart",
"Minecart with TNT", S("Minecart with TNT"),
nil, nil, nil, nil,
"mcl_minecarts_minecart_block.b3d", "mcl_minecarts_minecart_block.b3d",
{ {

View File

@ -0,0 +1,23 @@
# textdomain: mcl_minecarts
Minecart=Lore
Minecarts can be used for a quick transportion on rails.=Loren können für eine schnelle Fahrt auf Schienen benutzt werden.
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.=Loren fahren nur auf Schienen und bleiben immer auf der Strecke. An einer Einmündung ohne einem Weg nach vorne fahren sie nach links. Die Geschwindigkeit hängt vom Schienentyp ab.
You can place the minecart on rails. Right-click it to enter it. Punch it to get it moving.=Sie können die Lore auf Schienen platzieren. Rechtsklicken, um einzusteigen.
To obtain the minecart, punch it while holding down the sneak key.=Um die Lore aufzusammeln, schlagen Sie sie, während Sie die Schleichen-Taste gedrückt halten.
Minecart with Chest=Lore mit Truhe
Minecart with Furnace=Lore mit Ofen
Minecart with Command Block=Lore mit Befehlsblock
Minecart with Hopper=Lore mit Trichter
Minecart with TNT=Lore mit 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.=Bauen Sie sie auf den Boden, um Ihr Schienennetzwerk zu errichten, die Schienen werden sich automatisch verbinden und sich nach Bedarf in Kurven, Einmündungen, Kreuzungen und Steigungen verwandeln.
Rail=Schiene
Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Normale Schienen werden Loren aufgrund von Reibung leicht verlangsamen.
Powered Rail=Antriebsschiene
Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Antriebsschienen können Loren beschleunigen und abbremsen.
Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.=Ohne Redstone-Energie wird die Schiene Loren abbremsen. Mit Redstone-Energie wird sie sie beschleunigen.
Activator Rail=Aktivierungsschiene
Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Aktivierungsschienen werden benutzt, um besondere Loren zu aktivieren.
To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.=Wenn diese Schiene mit Redstone-Energie versorgt wird, werden alle Loren, die sie passieren, aktiviert.
Detector Rail=Sensorschiene
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.=Schienen können benutzt werden, um Strecken für Loren zu bauen. Eine Sensorschiene kann eine Lore erkennen und versorgt Redstone-Mechanismen.
To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.=Um eine Lore zu erkennen und die Redstone-Energie zu aktivieren, verbinden Sie die Schiene mit Redstonestaub oder Redstone-Mechanismen und schicken Sie eine beliebige Lore über die Schiene.

View File

@ -0,0 +1,23 @@
# 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.=
Minecart with Chest=
Minecart with Furnace=
Minecart with Command Block=
Minecart with Hopper=
Minecart with 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.=

View File

@ -1,6 +1,8 @@
local S = minetest.get_translator("mcl_minecarts")
-- Template rail function -- Template rail function
local register_rail = function(itemstring, tiles, def_extras, creative) local register_rail = function(itemstring, tiles, def_extras, creative)
local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=1,dig_by_water=1,destroy_by_lava_flow=1, transport=1} local groups = {handy=1,pickaxey=1, attached_node=1,rail=1,connect_to_raillike=minetest.raillike_group("rail"),dig_by_water=1,destroy_by_lava_flow=1, transport=1}
if creative == false then if creative == false then
groups.not_in_creative_inventory = 1 groups.not_in_creative_inventory = 1
end end
@ -64,14 +66,14 @@ local rail_rules_long =
local rail_rules_short = mesecon.rules.pplate local rail_rules_short = mesecon.rules.pplate
local railuse = "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." local railuse = S("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.")
-- Normal rail -- Normal rail
register_rail("mcl_minecarts:rail", register_rail("mcl_minecarts:rail",
{"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"}, {"default_rail.png", "default_rail_curved.png", "default_rail_t_junction.png", "default_rail_crossing.png"},
{ {
description = "Rail", description = S("Rail"),
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction.", _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Normal rails slightly slow down minecarts due to friction."),
_doc_items_usagehelp = railuse, _doc_items_usagehelp = railuse,
} }
) )
@ -80,9 +82,9 @@ register_rail("mcl_minecarts:rail",
register_rail("mcl_minecarts:golden_rail", register_rail("mcl_minecarts:golden_rail",
{"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"}, {"mcl_minecarts_rail_golden.png", "mcl_minecarts_rail_golden_curved.png", "mcl_minecarts_rail_golden_t_junction.png", "mcl_minecarts_rail_golden_crossing.png"},
{ {
description = "Powered Rail", description = S("Powered Rail"),
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts.", _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Powered rails are able to accelerate and brake minecarts."),
_doc_items_usagehelp = railuse .. "\n" .. "Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power.", _doc_items_usagehelp = railuse .. "\n" .. S("Without redstone power, the rail will brake minecarts. To make this rail accelerate minecarts, power it with redstone power."),
_rail_acceleration = -3, _rail_acceleration = -3,
mesecons = { mesecons = {
conductor = { conductor = {
@ -118,9 +120,9 @@ register_rail("mcl_minecarts:golden_rail_on",
register_rail("mcl_minecarts:activator_rail", register_rail("mcl_minecarts:activator_rail",
{"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"}, {"mcl_minecarts_rail_activator.png", "mcl_minecarts_rail_activator_curved.png", "mcl_minecarts_rail_activator_t_junction.png", "mcl_minecarts_rail_activator_crossing.png"},
{ {
description = "Activator Rail", description = S("Activator Rail"),
_doc_items_longdesc = "Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts.", _doc_items_longdesc = S("Rails can be used to build transport tracks for minecarts. Activator rails are used to activate special minecarts."),
_doc_items_usagehelp = railuse .. "\n" .. "To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail.", _doc_items_usagehelp = railuse .. "\n" .. S("To make this rail activate minecarts, power it with redstone power and send a minecart over this piece of rail."),
mesecons = { mesecons = {
conductor = { conductor = {
state = mesecon.state.off, state = mesecon.state.off,
@ -157,9 +159,9 @@ register_rail("mcl_minecarts:activator_rail_on",
register_rail("mcl_minecarts:detector_rail", register_rail("mcl_minecarts:detector_rail",
{"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"}, {"mcl_minecarts_rail_detector.png", "mcl_minecarts_rail_detector_curved.png", "mcl_minecarts_rail_detector_t_junction.png", "mcl_minecarts_rail_detector_crossing.png"},
{ {
description = "Detector Rail", description = S("Detector Rail"),
_doc_items_longdesc = "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.", _doc_items_longdesc = S("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."),
_doc_items_usagehelp = railuse .. "\n" .. "To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail.", _doc_items_usagehelp = railuse .. "\n" .. S("To detect a minecart and provide redstone power, connect it to redstone trails or redstone mechanisms and send any minecart over the rail."),
mesecons = { mesecons = {
receptor = { receptor = {
state = mesecon.state.off, state = mesecon.state.off,

File diff suppressed because it is too large Load Diff

View File

@ -28,8 +28,13 @@ functions needed for the mob to work properly which contains the following:
"monster" attacks player or npc on sight. "monster" attacks player or npc on sight.
"npc" walk around and will defend themselves if hit first, they "npc" walk around and will defend themselves if hit first, they
kill monsters. kill monsters.
'hp_min' has the minimum health value the mob can spawn with. 'hp_min' the minimum health value the mob can spawn with.
'hp_max' has the maximum health value the mob can spawn with. 'hp_max' the maximum health value the mob can spawn with.
'breath_max' The maximum breath value the mob can spawn with and can have.
If -1 (default), mob does not take drowning damage.
'breathes_in_water' If true, mob loses breath when not in water. Otherwise,
mob loses breath when inside a node with `drowning` attribute
set (default: false).
'armor' holds strength of mob, 100 is normal, lower is more powerful 'armor' holds strength of mob, 100 is normal, lower is more powerful
and needs more hits and better weapons to kill. and needs more hits and better weapons to kill.
'passive' when true allows animals to defend themselves when hit, 'passive' when true allows animals to defend themselves when hit,
@ -56,9 +61,11 @@ functions needed for the mob to work properly which contains the following:
'fall_speed' has the maximum speed the mob can fall at, default is -10. 'fall_speed' has the maximum speed the mob can fall at, default is -10.
'fall_damage' when true causes falling to inflict damage. 'fall_damage' when true causes falling to inflict damage.
'water_damage' holds the damage per second infliced to mobs when standing in 'water_damage' holds the damage per second infliced to mobs when standing in
water. water (default: 0).
'lava_damage' holds the damage per second inflicted to mobs when standing 'lava_damage' holds the damage per second inflicted to mobs when standing
in lava or fire. in lava (default: 8).
'fire_damage' holds the damage per second inflicted to mobs when standing
in fire (default: 1).
'light_damage' holds the damage per second inflicted to mobs when it's too 'light_damage' holds the damage per second inflicted to mobs when it's too
bright (above 13 light). bright (above 13 light).
'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second). 'suffocation' when true causes mobs to suffocate inside solid blocks (2 damage per second).
@ -78,6 +85,8 @@ functions needed for the mob to work properly which contains the following:
punches when nearby. punches when nearby.
'group_attack' when true has same mob type grouping together to attack 'group_attack' when true has same mob type grouping together to attack
offender. offender.
[MCL2 extension:] When a table, this is a list of
mob types that will get alerted as well (besides same mob type)
'attack_type' tells the api what a mob does when attacking the player 'attack_type' tells the api what a mob does when attacking the player
or another mob: or another mob:
'dogfight' is a melee attack when player is within mob reach. 'dogfight' is a melee attack when player is within mob reach.
@ -114,10 +123,6 @@ functions needed for the mob to work properly which contains the following:
e.g. {"player", "mobs_animal:chicken"}. e.g. {"player", "mobs_animal:chicken"}.
'runaway_from' contains a table with mob names to run away from, add 'runaway_from' contains a table with mob names to run away from, add
"player" to list to runaway from player also. "player" to list to runaway from player also.
'blood_amount' contains the number of blood droplets to appear when
mob is hit.
'blood_texture' has the texture name to use for droplets e.g.
"mobs_blood.png", or table {"blood1.png", "blood2.png"}
'pathfinding' set to 1 for mobs to use pathfinder feature to locate 'pathfinding' set to 1 for mobs to use pathfinder feature to locate
player, set to 2 so they can build/break also (only player, set to 2 so they can build/break also (only
works with dogfight attack and when 'mobs_griefing' works with dogfight attack and when 'mobs_griefing'
@ -131,6 +136,7 @@ functions needed for the mob to work properly which contains the following:
'makes_footstep_sound' when true you can hear mobs walking. 'makes_footstep_sound' when true you can hear mobs walking.
'sounds' this is a table with sounds of the mob 'sounds' this is a table with sounds of the mob
'distance' maximum distance sounds can be heard, default is 10. 'distance' maximum distance sounds can be heard, default is 10.
'base_pitch' base pitch to use adult mobs, default is 1.0 (MCL2 extension)
'random' played randomly from time to time. 'random' played randomly from time to time.
also played for overfeeding animal. also played for overfeeding animal.
'war_cry' what you hear when mob starts to attack player. (currently disabled) 'war_cry' what you hear when mob starts to attack player. (currently disabled)
@ -142,6 +148,9 @@ functions needed for the mob to work properly which contains the following:
'fuse' sound played when mob explode timer starts. 'fuse' sound played when mob explode timer starts.
'explode' sound played when mob explodes. 'explode' sound played when mob explodes.
Note: For all sounds except fuse and explode, the pitch is slightly randomized from the base pitch
The pitch of children is 50% higher.
'drops' table of items that are dropped when mob is killed, fields are: 'drops' table of items that are dropped when mob is killed, fields are:
'name' name of item to drop. 'name' name of item to drop.
'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc. 'chance' chance of drop, 1 for always, 2 for 1-in-2 chance etc.
@ -215,6 +224,14 @@ functions needed for the mob to work properly which contains the following:
are in direct sunlight are in direct sunlight
'spawn_small_alternative': name of a smaller mob to use as replacement if 'spawn_small_alternative': name of a smaller mob to use as replacement if
spawning fails due to space requirements spawning fails due to space requirements
'glow' same as in entity definition
'child' if true, spawn mob as child
'shoot_arrow(self, pos, dir)' function that is called when mob wants to shoot an arrow.
You can spawn your own arrow here. pos is mob position,
dir is mob's aiming direction
'sounds_child' same as sounds, but for childs. If not defined, childs will use same
sound as adults but with higher pitch
Node Replacement Node Replacement
---------------- ----------------
@ -234,8 +251,9 @@ eating.
'replace_rate' how random should the replace rate be (typically 10) 'replace_rate' how random should the replace rate be (typically 10)
'replace_offset' +/- value to check specific node to replace 'replace_offset' +/- value to check specific node to replace
'on_replace(self, pos, oldnode, newnode)' is called when mob is about to 'on_replace(self, pos, oldnode, newnode)'
replace a node. is called when mob is about to replace a node. Also called
when not actually replacing due to mobs_griefing setting being false.
'self' ObjectRef of mob 'self' ObjectRef of mob
'pos' Position of node to replace 'pos' Position of node to replace
'oldnode' Current node 'oldnode' Current node
@ -289,12 +307,18 @@ for each mob.
'self.health' contains current health of mob (cannot exceed 'self.health' contains current health of mob (cannot exceed
self.hp_max) self.hp_max)
'self.breath' contains current breath of mob, if mob takes drowning
damage at all (cannot exceed self.breath_max). Breath
decreases by 1 each second while in a node with drowning
damage and increases by 1 each second otherwise.
'self.texture_list' contains list of all mob textures 'self.texture_list' contains list of all mob textures
'self.child_texture' contains mob child texture when growing up 'self.child_texture' contains mob child texture when growing up
'self.base_texture' contains current skin texture which was randomly 'self.base_texture' contains current skin texture which was randomly
selected from textures list selected from textures list
'self.gotten' this is used for obtaining milk from cow and wool from 'self.gotten' this is used to track whether some special item has been
sheep gotten from the mob, for example, wool from sheep.
Initialized as false, and the mob must set this value
manually.
'self.horny' when animal fed enough it is set to true and animal can 'self.horny' when animal fed enough it is set to true and animal can
breed with same animal breed with same animal
'self.hornytimer' background timer that controls breeding functions and 'self.hornytimer' background timer that controls breeding functions and
@ -573,19 +597,13 @@ External Settings for "minetest.conf"
'enable_damage' if true monsters will attack players (default is true) 'enable_damage' if true monsters will attack players (default is true)
'only_peaceful_mobs' if true only animals will spawn in game (default is 'only_peaceful_mobs' if true only animals will spawn in game (default is
false) false)
'mobs_disable_blood' if false blood effects appear when mob is hit (default 'mobs_disable_blood' if false, damage effects appear when mob is hit (default
is false) is false)
'mobs_spawn_protected' if set to false then mobs will not spawn in protected 'mobs_spawn_protected' if set to false then mobs will not spawn in protected
areas (default is true) areas (default is true)
'remove_far_mobs' if true then untamed mobs that are outside players
visual range will be removed (default is true)
'mobname' can change specific mob chance rate (0 to disable) and
spawn number e.g. mobs_animal:cow = 1000,5
'mob_difficulty' sets difficulty level (health and hit damage 'mob_difficulty' sets difficulty level (health and hit damage
multiplied by this number), defaults to 1.0. multiplied by this number), defaults to 1.0.
'mob_show_health' if false then punching mob will not show health status 'mob_spawn_chance' multiplies chance of all mobs spawning and can be set
(true by default)
'mob_chance_multiplier' multiplies chance of all mobs spawning and can be set
to 0.5 to have mobs spawn more or 2.0 to spawn less. to 0.5 to have mobs spawn more or 2.0 to spawn less.
e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of e.g. 1 in 7000 * 0.5 = 1 in 3500 so better odds of
spawning. spawning.

View File

@ -1,11 +1,11 @@
local S = mobs.intllib local S = minetest.get_translator("mcl_mobs")
-- name tag -- name tag
minetest.register_craftitem("mcl_mobs:nametag", { minetest.register_craftitem("mcl_mobs:nametag", {
description = S("Name Tag"), description = S("Name Tag"),
_doc_items_longdesc = S("A name tag is an item to name a mob."), _doc_items_longdesc = S("A name tag is an item to name a mob."),
_doc_items_usagehelp = S("Before you use the name tag, you need to set a name at an anvil. Now you can use the name tag to name a mob with a rightclick. This uses up the name tag."), _doc_items_usagehelp = S("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."),
inventory_image = "mobs_nametag.png", inventory_image = "mobs_nametag.png",
wield_image = "mobs_nametag.png", wield_image = "mobs_nametag.png",
stack_max = 64, stack_max = 64,

View File

@ -1,6 +1,7 @@
mcl_core mcl_core
mcl_weather? mcl_weather?
mcl_tnt? mcl_tnt?
mcl_hunger?
invisibility? invisibility?
intllib? intllib?
lucky_block? lucky_block?

View File

@ -1,131 +0,0 @@
# Mobs Redo translation.
# Copyright (C) 2017 TenPlus1
# This file is distributed under the same license as the mobs package.
# Wuzzy <Wuzzy@mail.ru>, 2017
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:27+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr "Kreatur wurde geschützt!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Gezähmt)"
#: api.lua
msgid "Not tamed!"
msgstr "Nicht gezähmt!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 ist der Besitzer!"
#: api.lua
msgid "Missed!"
msgstr "Daneben!"
#: api.lua
msgid "Already protected!"
msgstr "Bereits geschützt!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 bei voller Gesundheit (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 wurde gezähmt!"
#: api.lua
msgid "Enter name:"
msgstr "Namen eingeben:"
#: api.lua
msgid "Rename"
msgstr "Umbenennen"
#: crafts.lua
msgid "Name Tag"
msgstr "Namensschild"
#: crafts.lua
msgid "Leather"
msgstr "Leder"
#: crafts.lua
msgid "Raw Meat"
msgstr "Rohes Fleisch"
#: crafts.lua
msgid "Meat"
msgstr "Fleisch"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lasso (Rechtsklick auf Tier, um es zu nehmen)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Netz (Rechtsklick auf Tier, um es zu nehmen)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Stahlschere (Rechtsklick zum Scheren)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Kreaturschutzrune"
#: crafts.lua
msgid "Saddle"
msgstr "Sattel"
#: crafts.lua
msgid "Mob Fence"
msgstr "Kreaturen Zaun"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Kreaturenspawner"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Kreatur MinLicht MaxLicht Menge SpielerEntfng"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Nicht aktiv (Einstellungen eingeben)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Spawner aktiv (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Kreaturenspawner-Einstellungen gescheitert!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Syntax: „name min_licht[0-14] max_licht[0-14] max_mobs_im_gebiet[0 zum "
"Deaktivieren] distanz[1-20] y_versatz[-10 bis 10]“"

View File

@ -1,128 +0,0 @@
# Mobs Redo translation.
# Copyright (C) 2017 TenPlus1
# This file is distributed under the same license as the mobs package.
# Wuzzy <Wuzzy@mail.ru>, 2017
#
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-16 16:48+0200\n"
"PO-Revision-Date: 2017-07-16 16:48+0200\n"
"Last-Translator: Aleks <alexsinteck@icqmail.com>\n"
"Language-Team: \n"
"Language: es\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr "El mob ha sido protegido!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Domesticado)"
#: api.lua
msgid "Not tamed!"
msgstr "No domesticado!"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 es el dueño!"
#: api.lua
msgid "Missed!"
msgstr "Perdido!"
#: api.lua
msgid "Already protected!"
msgstr "Ya está protegido!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 con salud llena (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 ha sido domesticado!"
#: api.lua
msgid "Enter name:"
msgstr "Ingrese nombre:"
#: api.lua
msgid "Rename"
msgstr "Renombrar"
#: crafts.lua
msgid "Name Tag"
msgstr "Nombrar etiqueta"
#: crafts.lua
msgid "Leather"
msgstr "Cuero"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne cruda"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lazo (click derecho en animal para colocar en inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Red (click derecho en animal para colocar en inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Tijera de acero (click derecho para esquilar)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Runa de protección de Mob"
#: crafts.lua
msgid "Saddle"
msgstr "Montura"
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr "Generador de Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuzMin LuzMax Cantidad DistJugador"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Generador no activo (ingrese config)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Generador activo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Configuracion de generador de Mob falló!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr "Sintaxis: “nombre luz_min[0-14] luz_max[0-14] max_mobs_en_area[0 para deshabilitar] "
"distancia[1-20] compensacion[-10 a 10]”"

View File

@ -1,129 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-29 09:13+0200\n"
"PO-Revision-Date: 2017-07-29 09:20+0200\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 1.8.12\n"
"Last-Translator: fat115 <fat115@framasoft.org>\n"
"Plural-Forms: nplurals=2; plural=(n > 1);\n"
"Language: fr\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Mode pacifique activé - Aucun monstre ne sera généré"
#: api.lua
msgid "Mob has been protected!"
msgstr "L'animal a été protégé !"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (apprivoisé)"
#: api.lua
msgid "Not tamed!"
msgstr "Non-apprivoisé !"
#: api.lua
msgid "@1 is owner!"
msgstr "Appartient à @1 !"
#: api.lua
msgid "Missed!"
msgstr "Raté !"
#: api.lua
msgid "Already protected!"
msgstr "Déjà protégé !"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 est en pleine forme (@2) "
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 a été apprivoisé ! "
#: api.lua
msgid "Enter name:"
msgstr "Saisissez un nom :"
#: api.lua
msgid "Rename"
msgstr "Renommer"
#: crafts.lua
msgid "Name Tag"
msgstr "Étiquette pour collier"
#: crafts.lua
msgid "Leather"
msgstr "Cuir"
#: crafts.lua
msgid "Raw Meat"
msgstr "Viande crue"
#: crafts.lua
msgid "Meat"
msgstr "Viande"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lasso (clic droit sur l'animal pour le mettre dans l'inventaire)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Filet (clic droit sur l'animal pour le mettre dans l'inventaire)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ciseaux à laine (clic droit pour tondre)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Rune de protection des animaux"
#: crafts.lua
msgid "Saddle"
msgstr "Selle"
#: crafts.lua
msgid "Mob Fence"
msgstr "Clôture à animaux"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Générateur de mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob MinLumière MaxLumière Quantité DistanceJoueur"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Générateur non actif (entrez les paramètres)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Générateur actif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Echec des paramètres du générateur"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr "Syntaxe : “nom min_lumière[0-14] max_lumière[0-14] max_mobs_dans_zone[0 pour désactiver] distance[1-20] décalage_y[-10 à 10]“"

View File

@ -1,131 +0,0 @@
# ITALIAN LOCALE FILE FOR THE MOBS REDO MODULE
# Copyright (c) 2014 Krupnov Pavel and 2016 TenPlus1
# This file is distributed under the same license as the MOBS REDO package.
# Hamlet <h4mlet@riseup.net>, 2017.
#
msgid ""
msgstr ""
"Project-Id-Version: Italian locale file for the Mobs Redo module\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-08-18 12:18+0100\n"
"Last-Translator: H4mlet <h4mlet@riseup.net>\n"
"Language-Team: \n"
"Language: it\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
"X-Generator: Poedit 1.6.10\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr "Il mob è stato protetto!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Addomesticat*)"
#: api.lua
msgid "Not tamed!"
msgstr "Non addomesticat*!"
#: api.lua
msgid "@1 is owner!"
msgstr "Proprietari* @1!"
#: api.lua
msgid "Missed!"
msgstr "Mancat*!"
#: api.lua
msgid "Already protected!"
msgstr "Già protett*!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 in piena salute (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 è stat* addomesticat*!"
#: api.lua
msgid "Enter name:"
msgstr "Inserire il nome:"
#: api.lua
msgid "Rename"
msgstr "Rinominare"
#: crafts.lua
msgid "Name Tag"
msgstr "Targhetta"
#: crafts.lua
msgid "Leather"
msgstr "Pelle"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne cruda"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Lazo (click di destro per mettere l'animale nell'inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Rete (click destro per mettere l'animale nell'inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Cesoie d'acciaio (click destro per tosare)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Runa di protezione per mob"
#: crafts.lua
msgid "Saddle"
msgstr "Sella"
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr "Generatore di mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuceMin LuceMax Ammontare DistGiocat."
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Generatore inattivo (inserire le impostazioni)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Generatore attivo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Impostazioni del generatore di mob fallite!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Sintassi: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 per "
"disabilitare] distance[1-20] y_offset[-10 to 10]”"

View File

@ -0,0 +1,8 @@
# textdomain: mcl_mobs
Peaceful mode active! No monsters will spawn.=Friedlicher Modus aktiv! Es werden keine Monster auftauchen.
This allows you to place a single mob.=Damit kann man einen Mob platzieren.
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.=Platzieren Sie dies einfach dort, wo der Mob auftauchen soll. Tiere werden zahm erscheinen, außer, wenn Sie beim Platzieren die Schlichtaste drücken. Platzieren Sie dies auf einem Mobspawner, um den Mob im Mobspawner zu wechseln.
You need the “maphack” privilege to change the mob spawner.=Sie brauchen das „maphack“-Privileg, um den Mobspawner ändern zu können.
Name Tag=Namensschild
A name tag is an item to name a mob.=Ein Namensschild ist ein Gegenstand, um einen Mob zu benennen.
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.=Bevor Sie ein Namensschild benutzen können, müssen Sie ihn an einem Amboss benennen. Dann können können Sie das Namensschild benutztn, um einen Mob zu benennen. Das wird das Namensschild verbrauchen.

View File

@ -1,131 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-02-05 23:40+0800\n"
"PO-Revision-Date: 2018-02-05 23:51+0800\n"
"Language-Team: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.6\n"
"Last-Translator: MuhdNurHidayat (MNH48) <mnh48mail@gmail.com>\n"
"Plural-Forms: nplurals=1; plural=0;\n"
"Language: ms\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Mod Aman Diaktifkan - Tiada Raksasa Akan Muncul"
#: api.lua
msgid "Mob has been protected!"
msgstr "Mob telah pun dilindungi!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Jinak)"
#: api.lua
msgid "Not tamed!"
msgstr "Belum dijinakkan!"
#: api.lua
msgid "@1 is owner!"
msgstr "Ini hak milik @1!"
#: api.lua
msgid "Missed!"
msgstr "Terlepas!"
#: api.lua
msgid "Already protected!"
msgstr "Telah dilindungi!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "Mata kesihatan @1 telah penuh (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 telah dijinakkan!"
#: api.lua
msgid "Enter name:"
msgstr "Masukkan nama:"
#: api.lua
msgid "Rename"
msgstr "Namakan semula"
#: crafts.lua
msgid "Name Tag"
msgstr "Tanda Nama"
#: crafts.lua
msgid "Leather"
msgstr "Kulit"
#: crafts.lua
msgid "Raw Meat"
msgstr "Daging Mentah"
#: crafts.lua
msgid "Meat"
msgstr "Daging Bakar"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Tanjul (klik-kanan haiwan untuk masukkan ke inventori)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Jaring (klik-kanan haiwan untuk masukkan ke inventori)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ketam Keluli (klik-kanan untuk mengetam bulu biri-biri)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Rune Perlindungan Mob"
#: crafts.lua
msgid "Saddle"
msgstr "Pelana"
#: crafts.lua
msgid "Mob Fence"
msgstr "Pagar Mob"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Pewujud Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob CahayaMin CahayaMax Amaun JarakPemain"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Pewujud Mob Tidak Aktif (masukkan tetapan)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Pewujud Mob Aktif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Penetapan Pewujud Mob gagal!"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"Sintaks: \"nama cahaya_minimum[0-14] cahaya_maksimum[0-14] "
"amaun_mob_maksimum[0 untuk lumpuhkan] jarak[1-20] ketinggian[-10 hingga 10]\""

View File

@ -1,133 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:55+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: pt\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr "Indomesticado!"
#: api.lua
msgid "@1 is owner!"
msgstr "Dono @1!"
#: api.lua
msgid "Missed!"
msgstr "Faltou!"
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 em plena saude (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 foi domesticado!"
#: api.lua
msgid "Enter name:"
msgstr "Insira um nome:"
#: api.lua
msgid "Rename"
msgstr "Renomear"
#: crafts.lua
msgid "Name Tag"
msgstr "Etiqueta"
#: crafts.lua
msgid "Leather"
msgstr "Couro"
#: crafts.lua
msgid "Raw Meat"
msgstr "Carne crua"
#: crafts.lua
msgid "Meat"
msgstr "Carne"
#: crafts.lua
#, fuzzy
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Laço (clique-direito no animal para por no inventario)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Net (clique-direito no animal para por no inventario)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Tesoura de Aço (clique-direito para tosquiar)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr "Spawnador de Mob"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob LuzMinima LuzMaxima Valor DistJogador"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Spawnador Inativo (configurar)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Spawnador Ativo (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Configuraçao de Spawnador do Mob falhou!"
#: spawner.lua
#, fuzzy
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"> nome luz_min[0-14] luz_max[0-14] max_mobs_na_area[0 para desabilitar] "
"distancia[1-20] y_offset[-10 a 10]"

View File

@ -1,129 +0,0 @@
# Russian translation for the mobs_redo mod.
# Copyright (C) 2018 TenPlus1
# This file is distributed under the same license as the mobs_redo package.
# Oleg720 <olegsiriak@yandex.ru>, 2017.
# CodeXP <codexp@gmx.net>, 2018.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-08-13 15:47+0200\n"
"PO-Revision-Date: 2018-03-23 22:22+0100\n"
"Last-Translator: CodeXP <codexp@gmx.net>\n"
"Language-Team: \n"
"Language: ru\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr "** Мирный модус активирован - монстры не спаунятся"
#: api.lua
msgid "Mob has been protected!"
msgstr "Моб защищен!"
#: api.lua
msgid "@1 (Tamed)"
msgstr "@1 (Прирученный)"
#: api.lua
msgid "Not tamed!"
msgstr "Не прирученный"
#: api.lua
msgid "@1 is owner!"
msgstr "@1 владелец"
#: api.lua
msgid "Missed!"
msgstr "Промазал!"
#: api.lua
msgid "Already protected!"
msgstr "Уже защищен!"
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 при полном здоровье (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 приручен"
#: api.lua
msgid "Enter name:"
msgstr "Введите имя:"
#: api.lua
msgid "Rename"
msgstr "Переименовать"
#: crafts.lua
msgid "Name Tag"
msgstr "Новый тэг"
#: crafts.lua
msgid "Leather"
msgstr "Кожа"
#: crafts.lua
msgid "Raw Meat"
msgstr "Сырое мясо"
#: crafts.lua
msgid "Meat"
msgstr "Мясо"
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Лассо (Правый клик - положить животное в инвентарь)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Сеть (Правый клик - положить животное в инвентарь)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Ножницы (Правый клик - подстричь)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr "Защитная руна мобов"
#: crafts.lua
msgid "Saddle"
msgstr "Седло"
#: crafts.lua
msgid "Mob Fence"
msgstr "Забор от мобов"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Спаунер моба"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr ""
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Спаунер не активен (введите настройки)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Активные спаунер (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Настройки спаунера моба провалились"
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""

View File

@ -1,128 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr ""
#: api.lua
msgid "@1 is owner!"
msgstr ""
#: api.lua
msgid "Missed!"
msgstr ""
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr ""
#: api.lua
msgid "@1 has been tamed!"
msgstr ""
#: api.lua
msgid "Enter name:"
msgstr ""
#: api.lua
msgid "Rename"
msgstr ""
#: crafts.lua
msgid "Name Tag"
msgstr ""
#: crafts.lua
msgid "Leather"
msgstr ""
#: crafts.lua
msgid "Raw Meat"
msgstr ""
#: crafts.lua
msgid "Meat"
msgstr ""
#: crafts.lua
msgid "Lasso (right-click animal to put in inventory)"
msgstr ""
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr ""
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr ""
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr ""
#: spawner.lua
msgid "Mob Spawner"
msgstr ""
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr ""
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr ""
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr ""
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr ""
#: spawner.lua
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""

View File

@ -0,0 +1,8 @@
# textdomain: mcl_mobs
Peaceful mode active! No monsters will spawn.=
This allows you to place a single 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.=
You need the “maphack” privilege to change the mob spawner.=
Name Tag=
A name tag is an item to name a 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.=

View File

@ -1,133 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: mobs\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2017-07-02 16:48+0200\n"
"PO-Revision-Date: 2017-07-02 14:56+0200\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: tr\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.2\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: api.lua
msgid "** Peaceful Mode Active - No Monsters Will Spawn"
msgstr ""
#: api.lua
msgid "Mob has been protected!"
msgstr ""
#: api.lua
msgid "@1 (Tamed)"
msgstr ""
#: api.lua
msgid "Not tamed!"
msgstr "Evcil değil!"
#: api.lua
msgid "@1 is owner!"
msgstr "Sahibi @1!"
#: api.lua
msgid "Missed!"
msgstr "Kaçırdın!"
#: api.lua
msgid "Already protected!"
msgstr ""
#: api.lua
msgid "@1 at full health (@2)"
msgstr "@1 tam canında (@2)"
#: api.lua
msgid "@1 has been tamed!"
msgstr "@1 tamamen evcilleştirilmiştir!"
#: api.lua
msgid "Enter name:"
msgstr "İsim gir:"
#: api.lua
msgid "Rename"
msgstr "Yeniden adlandır"
#: crafts.lua
msgid "Name Tag"
msgstr "İsim etiketi"
#: crafts.lua
msgid "Leather"
msgstr "Deri"
#: crafts.lua
msgid "Raw Meat"
msgstr "Çiğ et"
#: crafts.lua
msgid "Meat"
msgstr "Et"
#: crafts.lua
#, fuzzy
msgid "Lasso (right-click animal to put in inventory)"
msgstr "Kement (hayvana sağ tıklayarak envantere koy)"
#: crafts.lua
msgid "Net (right-click animal to put in inventory)"
msgstr "Ağ (hayvana sağ tıklayarak envantere koy)"
#: crafts.lua
msgid "Steel Shears (right-click to shear)"
msgstr "Çelik makas (sağ tıklayarak kes)"
#: crafts.lua
msgid "Mob Protection Rune"
msgstr ""
#: crafts.lua
msgid "Saddle"
msgstr ""
#: crafts.lua
msgid "Mob Fence"
msgstr "Canavar Yaratıcı"
#: spawner.lua
msgid "Mob Spawner"
msgstr "Canavar Yaratıcı"
#: spawner.lua
msgid "Mob MinLight MaxLight Amount PlayerDist"
msgstr "Mob MinIşık MaxIşık Miktar OyuncuMesafesi"
#: spawner.lua
msgid "Spawner Not Active (enter settings)"
msgstr "Yaratıcı aktif değil (ayarlara gir)"
#: spawner.lua
msgid "Spawner Active (@1)"
msgstr "Yaratıcı aktif (@1)"
#: spawner.lua
msgid "Mob Spawner settings failed!"
msgstr "Yaratıcı ayarları uygulanamadı."
#: spawner.lua
#, fuzzy
msgid ""
"Syntax: “name min_light[0-14] max_light[0-14] max_mobs_in_area[0 to disable] "
"distance[1-20] y_offset[-10 to 10]”"
msgstr ""
"> isim min_isik[0-14] max_isik[0-14] alandaki_max_canavar_sayisi[kapatmak "
"icin 0] mesafe[1-20] y_cikinti[-10 ve 10 arası]"

View File

@ -190,7 +190,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
end end
local acce_y = 0 local acce_y = 0
local velo = entity.object:getvelocity() local velo = entity.object:get_velocity()
entity.v = get_v(velo) * get_sign(entity.v) entity.v = get_v(velo) * get_sign(entity.v)
@ -215,7 +215,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
end end
-- fix mob rotation -- fix mob rotation
entity.object:setyaw(entity.driver:get_look_horizontal() - entity.rotate) entity.object:set_yaw(entity.driver:get_look_horizontal() - entity.rotate)
if can_fly then if can_fly then
@ -275,7 +275,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
if s ~= get_sign(entity.v) then if s ~= get_sign(entity.v) then
entity.object:setvelocity({x = 0, y = 0, z = 0}) entity.object:set_velocity({x = 0, y = 0, z = 0})
entity.v = 0 entity.v = 0
return return
end end
@ -348,7 +348,7 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
if math.abs(velo.y) < 1 then if math.abs(velo.y) < 1 then
local pos = entity.object:get_pos() local pos = entity.object:get_pos()
pos.y = math.floor(pos.y) + 0.5 pos.y = math.floor(pos.y) + 0.5
entity.object:setpos(pos) entity.object:set_pos(pos)
velo.y = 0 velo.y = 0
end end
end end
@ -360,8 +360,8 @@ function mobs.drive(entity, moving_anim, stand_anim, can_fly, dtime)
new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y) new_velo = get_velocity(v, entity.object:get_yaw() - rot_view, velo.y)
new_acce.y = new_acce.y + acce_y new_acce.y = new_acce.y + acce_y
entity.object:setvelocity(new_velo) entity.object:set_velocity(new_velo)
entity.object:setacceleration(new_acce) entity.object:set_acceleration(new_acce)
-- CRASH! -- CRASH!
if enable_crash then if enable_crash then
@ -387,7 +387,7 @@ end
function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim) function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
local ctrl = entity.driver:get_player_control() local ctrl = entity.driver:get_player_control()
local velo = entity.object:getvelocity() local velo = entity.object:get_velocity()
local dir = entity.driver:get_look_dir() local dir = entity.driver:get_look_dir()
local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands local yaw = entity.driver:get_look_horizontal() + 1.57 -- offset fix between old and new commands
local rot_steer, rot_view = math.pi / 2, 0 local rot_steer, rot_view = math.pi / 2, 0
@ -397,24 +397,24 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
end end
if ctrl.up then if ctrl.up then
entity.object:setvelocity({ entity.object:set_velocity({
x = dir.x * speed, x = dir.x * speed,
y = dir.y * speed + 2, y = dir.y * speed + 2,
z = dir.z * speed z = dir.z * speed
}) })
elseif ctrl.down then elseif ctrl.down then
entity.object:setvelocity({ entity.object:set_velocity({
x = -dir.x * speed, x = -dir.x * speed,
y = dir.y * speed + 2, y = dir.y * speed + 2,
z = -dir.z * speed z = -dir.z * speed
}) })
elseif not ctrl.down or ctrl.up or ctrl.jump then elseif not ctrl.down or ctrl.up or ctrl.jump then
entity.object:setvelocity({x = 0, y = -2, z = 0}) entity.object:set_velocity({x = 0, y = -2, z = 0})
end end
entity.object:setyaw(yaw + math.pi + math.pi / 2 - entity.rotate) entity.object:set_yaw(yaw + math.pi + math.pi / 2 - entity.rotate)
-- firing arrows -- firing arrows
if ctrl.LMB and ctrl.sneak and shoots then if ctrl.LMB and ctrl.sneak and shoots then
@ -431,8 +431,8 @@ function mobs.fly(entity, dtime, speed, shoots, arrow, moving_anim, stand_anim)
ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding ent.owner_id = tostring(entity.object) -- so arrows dont hurt entity you are riding
local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6} local vec = {x = dir.x * 6, y = dir.y * 6, z = dir.z * 6}
local yaw = entity.driver:get_look_horizontal() local yaw = entity.driver:get_look_horizontal()
obj:setyaw(yaw + math.pi / 2) obj:set_yaw(yaw + math.pi / 2)
obj:setvelocity(vec) obj:set_velocity(vec)
else else
obj:remove() obj:remove()
end end

View File

@ -157,6 +157,7 @@ mobs_mc.follow = {
chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general chicken = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general parrot = { "farming:seed_wheat", "farming:seed_cotton" }, -- seeds in general
horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot }, horse = { mobs_mc.items.apple, mobs_mc.items.sugar, mobs_mc.items.wheat, mobs_mc.items.hay_bale, mobs_mc.items.golden_apple, mobs_mc.items.golden_carrot },
llama = { mobs_mc.items.wheat, mobs_mc.items.hay_bale, },
pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick, pig = { mobs_mc.items.potato, mobs_mc.items.carrot, mobs_mc.items.carrot_on_a_stick,
mobs_mc.items.apple, -- Minetest Game extra mobs_mc.items.apple, -- Minetest Game extra
}, },

View File

@ -3,21 +3,20 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
--dofile(minetest.get_modpath("mobs").."/api.lua")
--THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT --THIS IS THE MASTER ITEM LIST TO USE WITH DEFAULT
-- intllib -- NOTE: Most strings intentionally not marked for translation, other mods already have these items.
local MP = minetest.get_modpath(minetest.get_current_modname()) -- TODO: Remove this file eventually, most items are already outsourced in other mods.
local S, NS = dofile(MP.."/intllib.lua")
local S = minetest.get_translator("mobs_mc")
local c = mobs_mc.is_item_variable_overridden local c = mobs_mc.is_item_variable_overridden
-- Blaze -- Blaze
if c("blaze_rod") then if c("blaze_rod") then
minetest.register_craftitem("mobs_mc:blaze_rod", { minetest.register_craftitem("mobs_mc:blaze_rod", {
description = S("Blaze Rod"), description = "Blaze Rod",
_doc_items_longdesc = S("This is a crafting component dropped from dead blazes."), _doc_items_longdesc = "This is a crafting component dropped from dead blazes.",
wield_image = "mcl_mobitems_blaze_rod.png", wield_image = "mcl_mobitems_blaze_rod.png",
inventory_image = "mcl_mobitems_blaze_rod.png", inventory_image = "mcl_mobitems_blaze_rod.png",
}) })
@ -43,8 +42,8 @@ end
if c("blaze_powder") then if c("blaze_powder") then
minetest.register_craftitem("mobs_mc:blaze_powder", { minetest.register_craftitem("mobs_mc:blaze_powder", {
description = S("Blaze Powder"), description = "Blaze Powder",
_doc_items_longdesc = S("This item is mainly used for brewing potions and crafting."), _doc_items_longdesc = "This item is mainly used for brewing potions and crafting.",
wield_image = "mcl_mobitems_blaze_powder.png", wield_image = "mcl_mobitems_blaze_powder.png",
inventory_image = "mcl_mobitems_blaze_powder.png", inventory_image = "mcl_mobitems_blaze_powder.png",
}) })
@ -60,8 +59,8 @@ end
-- Chicken -- Chicken
if c("chicken_raw") then if c("chicken_raw") then
minetest.register_craftitem("mobs_mc:chicken_raw", { minetest.register_craftitem("mobs_mc:chicken_raw", {
description = S("Raw Chicken"), description = "Raw Chicken",
_doc_items_longdesc = S("Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value."), _doc_items_longdesc = "Raw chicken is a food item and can be eaten safely. Cooking it will increase its nutritional value.",
inventory_image = "mcl_mobitems_chicken_raw.png", inventory_image = "mcl_mobitems_chicken_raw.png",
groups = { food = 2, eatable = 2 }, groups = { food = 2, eatable = 2 },
on_use = minetest.item_eat(2), on_use = minetest.item_eat(2),
@ -70,8 +69,8 @@ end
if c("chicken_cooked") then if c("chicken_cooked") then
minetest.register_craftitem("mobs_mc:chicken_cooked", { minetest.register_craftitem("mobs_mc:chicken_cooked", {
description = S("Cooked Chicken"), description = "Cooked Chicken",
_doc_items_longdesc = S("A cooked chicken is a healthy food item which can be eaten."), _doc_items_longdesc = "A cooked chicken is a healthy food item which can be eaten.",
inventory_image = "mcl_mobitems_chicken_cooked.png", inventory_image = "mcl_mobitems_chicken_cooked.png",
groups = { food = 2, eatable = 6 }, groups = { food = 2, eatable = 6 },
on_use = minetest.item_eat(6), on_use = minetest.item_eat(6),
@ -89,8 +88,8 @@ end
if c("feather") then if c("feather") then
minetest.register_craftitem("mobs_mc:feather", { minetest.register_craftitem("mobs_mc:feather", {
description = S("Feather"), description = "Feather",
_doc_items_longdesc = S("Feathers are used in crafting and are dropped from chickens."), _doc_items_longdesc = "Feathers are used in crafting and are dropped from chickens.",
inventory_image = "mcl_mobitems_feather.png", inventory_image = "mcl_mobitems_feather.png",
}) })
end end
@ -98,8 +97,8 @@ end
-- Cow and mooshroom -- Cow and mooshroom
if c("beef_raw") then if c("beef_raw") then
minetest.register_craftitem("mobs_mc:beef_raw", { minetest.register_craftitem("mobs_mc:beef_raw", {
description = S("Raw Beef"), description = "Raw Beef",
_doc_items_longdesc = S("Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value."), _doc_items_longdesc = "Raw beef is the flesh from cows and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_beef_raw.png", inventory_image = "mcl_mobitems_beef_raw.png",
groups = { food = 2, eatable = 3 }, groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3), on_use = minetest.item_eat(3),
@ -108,8 +107,8 @@ end
if c("beef_cooked") then if c("beef_cooked") then
minetest.register_craftitem("mobs_mc:beef_cooked", { minetest.register_craftitem("mobs_mc:beef_cooked", {
description = S("Steak"), description = "Steak",
_doc_items_longdesc = S("Steak is cooked beef from cows and can be eaten."), _doc_items_longdesc = "Steak is cooked beef from cows and can be eaten.",
inventory_image = "mcl_mobitems_beef_cooked.png", inventory_image = "mcl_mobitems_beef_cooked.png",
groups = { food = 2, eatable = 8 }, groups = { food = 2, eatable = 8 },
on_use = minetest.item_eat(8), on_use = minetest.item_eat(8),
@ -129,8 +128,8 @@ end
if c("milk") then if c("milk") then
-- milk -- milk
minetest.register_craftitem("mobs_mc:milk_bucket", { minetest.register_craftitem("mobs_mc:milk_bucket", {
description = S("Milk"), description = "Milk",
_doc_items_longdesc = S("Milk is a food item obtained by using a bucket on a cow."), _doc_items_longdesc = "Milk is a food item obtained by using a bucket on a cow.",
inventory_image = "mobs_bucket_milk.png", inventory_image = "mobs_bucket_milk.png",
groups = { food = 3, eatable = 1 }, groups = { food = 3, eatable = 1 },
on_use = minetest.item_eat(1, "bucket:bucket_empty"), on_use = minetest.item_eat(1, "bucket:bucket_empty"),
@ -140,8 +139,8 @@ end
if c("bowl") then if c("bowl") then
minetest.register_craftitem("mobs_mc:bowl", { minetest.register_craftitem("mobs_mc:bowl", {
description = S("Bowl"), description = "Bowl",
_doc_items_longdesc = S("Bowls are mainly used to hold tasty soups."), _doc_items_longdesc = "Bowls are mainly used to hold tasty soups.",
inventory_image = "mcl_core_bowl.png", inventory_image = "mcl_core_bowl.png",
}) })
@ -162,8 +161,8 @@ end
if c("mushroom_stew") then if c("mushroom_stew") then
minetest.register_craftitem("mobs_mc:mushroom_stew", { minetest.register_craftitem("mobs_mc:mushroom_stew", {
description = S("Mushroom Stew"), description = "Mushroom Stew",
_doc_items_longdesc = S("Mushroom stew is a healthy soup."), _doc_items_longdesc = "Mushroom stew is a healthy soup.",
inventory_image = "farming_mushroom_stew.png", inventory_image = "farming_mushroom_stew.png",
groups = { food = 3, eatable = 6 }, groups = { food = 3, eatable = 6 },
on_use = minetest.item_eat(6, "mobs_mc:bowl"), on_use = minetest.item_eat(6, "mobs_mc:bowl"),
@ -181,7 +180,7 @@ if c("dragon_egg") then
--ender dragon --ender dragon
minetest.register_node("mobs_mc:dragon_egg", { minetest.register_node("mobs_mc:dragon_egg", {
description = S("Dragon Egg"), description = "Dragon Egg",
tiles = { tiles = {
"mcl_end_dragon_egg.png", "mcl_end_dragon_egg.png",
"mcl_end_dragon_egg.png", "mcl_end_dragon_egg.png",
@ -225,7 +224,7 @@ end
-- Enderman -- Enderman
if c("ender_eye") then if c("ender_eye") then
minetest.register_craftitem("mobs_mc:ender_eye", { minetest.register_craftitem("mobs_mc:ender_eye", {
description = S("Eye of Ender"), description = "Eye of Ender",
_doc_items_longdesc = longdesc_craftitem, _doc_items_longdesc = longdesc_craftitem,
inventory_image = "mcl_end_ender_eye.png", inventory_image = "mcl_end_ender_eye.png",
groups = { craftitem = 1 }, groups = { craftitem = 1 },
@ -243,8 +242,8 @@ end
-- Ghast -- Ghast
if c("ghast_tear") then if c("ghast_tear") then
minetest.register_craftitem("mobs_mc:ghast_tear", { minetest.register_craftitem("mobs_mc:ghast_tear", {
description = S("Ghast Tear"), description = "Ghast Tear",
_doc_items_longdesc = S("A ghast tear is an item used in potion brewing. It is dropped from dead ghasts."), _doc_items_longdesc = "A ghast tear is an item used in potion brewing. It is dropped from dead ghasts.",
wield_image = "mcl_mobitems_ghast_tear.png", wield_image = "mcl_mobitems_ghast_tear.png",
inventory_image = "mcl_mobitems_ghast_tear.png", inventory_image = "mcl_mobitems_ghast_tear.png",
groups = { brewitem = 1 }, groups = { brewitem = 1 },
@ -255,9 +254,9 @@ end
if c("saddle") then if c("saddle") then
-- Overwrite the saddle from Mobs Redo -- Overwrite the saddle from Mobs Redo
minetest.register_craftitem(":mobs:saddle", { minetest.register_craftitem(":mobs:saddle", {
description = S("Saddle"), description = "Saddle",
_doc_items_longdesc = S("Saddles can be put on horses, donkeys, mules and pigs in order to mount them."), _doc_items_longdesc = "Saddles can be put on horses, donkeys, mules and pigs in order to mount them.",
_doc_items_usagehelp = S("Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again."), _doc_items_usagehelp = "Rightclick an animal while holding a saddle to put on the saddle. You can now mount the animal by rightclicking it again.",
inventory_image = "mcl_mobitems_saddle.png", inventory_image = "mcl_mobitems_saddle.png",
stack_max = 1, stack_max = 1,
}) })
@ -275,7 +274,7 @@ if c("saddle") and c("lether") and c("string") and c("iron_ingot") then
end end
-- Horse Armor -- Horse Armor
local horse_armor_use = S("Rightclick a horse to put on the horse armor. Donkeys and mules can't wear horse armor.") local horse_armor_use = S("Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.")
-- TODO: Balance the horse armor strength, compare with MC armor strength -- TODO: Balance the horse armor strength, compare with MC armor strength
if c("iron_horse_armor") then if c("iron_horse_armor") then
minetest.register_craftitem("mobs_mc:iron_horse_armor", { minetest.register_craftitem("mobs_mc:iron_horse_armor", {
@ -314,8 +313,8 @@ end
-- Pig -- Pig
if c("porkchop_raw") then if c("porkchop_raw") then
minetest.register_craftitem("mobs_mc:porkchop_raw", { minetest.register_craftitem("mobs_mc:porkchop_raw", {
description = S("Raw Porkchop"), description = "Raw Porkchop",
_doc_items_longdesc = S("A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value."), _doc_items_longdesc = "A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_porkchop_raw.png", inventory_image = "mcl_mobitems_porkchop_raw.png",
groups = { food = 2, eatable = 3 }, groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3), on_use = minetest.item_eat(3),
@ -324,7 +323,7 @@ end
if c("porkchop_cooked") then if c("porkchop_cooked") then
minetest.register_craftitem("mobs_mc:porkchop_cooked", { minetest.register_craftitem("mobs_mc:porkchop_cooked", {
description = S("Cooked Porkchop"), description = "Cooked Porkchop",
_doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.", _doc_items_longdesc = "Cooked porkchop is the cooked flesh of a pig and is used as food.",
inventory_image = "mcl_mobitems_porkchop_cooked.png", inventory_image = "mcl_mobitems_porkchop_cooked.png",
groups = { food = 2, eatable = 8 }, groups = { food = 2, eatable = 8 },
@ -343,9 +342,9 @@ end
if c("carrot_on_a_stick") then if c("carrot_on_a_stick") then
minetest.register_tool("mobs_mc:carrot_on_a_stick", { minetest.register_tool("mobs_mc:carrot_on_a_stick", {
description = S("Carrot on a Stick"), description = "Carrot on a Stick",
_doc_items_longdesc = S("A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them."), _doc_items_longdesc = "A carrot on a stick can be used on saddled pigs to ride them. Pigs will also follow anyone who holds a carrot on a stick near them.",
_doc_items_usagehelp = S("Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse."), _doc_items_usagehelp = "Rightclick a saddled pig with the carrot on a stick to mount it. You can now ride it like a horse.",
wield_image = "mcl_mobitems_carrot_on_a_stick.png", wield_image = "mcl_mobitems_carrot_on_a_stick.png",
inventory_image = "mcl_mobitems_carrot_on_a_stick.png", inventory_image = "mcl_mobitems_carrot_on_a_stick.png",
sounds = { breaks = "default_tool_breaks" }, sounds = { breaks = "default_tool_breaks" },
@ -385,8 +384,8 @@ end
-- Rabbit -- Rabbit
if c("rabbit_raw") then if c("rabbit_raw") then
minetest.register_craftitem("mobs_mc:rabbit_raw", { minetest.register_craftitem("mobs_mc:rabbit_raw", {
description = S("Raw Rabbit"), description = "Raw Rabbit",
_doc_items_longdesc = S("Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value."), _doc_items_longdesc = "Raw rabbit is a food item from a dead rabbit. It can be eaten safely. Cooking it will increase its nutritional value.",
inventory_image = "mcl_mobitems_rabbit_raw.png", inventory_image = "mcl_mobitems_rabbit_raw.png",
groups = { food = 2, eatable = 3 }, groups = { food = 2, eatable = 3 },
on_use = minetest.item_eat(3), on_use = minetest.item_eat(3),
@ -395,8 +394,8 @@ end
if c("rabbit_cooked") then if c("rabbit_cooked") then
minetest.register_craftitem("mobs_mc:rabbit_cooked", { minetest.register_craftitem("mobs_mc:rabbit_cooked", {
description = S("Cooked Rabbit"), description = "Cooked Rabbit",
_doc_items_longdesc = S("This is a food item which can be eaten."), _doc_items_longdesc = "This is a food item which can be eaten.",
inventory_image = "mcl_mobitems_rabbit_cooked.png", inventory_image = "mcl_mobitems_rabbit_cooked.png",
groups = { food = 2, eatable = 5 }, groups = { food = 2, eatable = 5 },
on_use = minetest.item_eat(5), on_use = minetest.item_eat(5),
@ -414,8 +413,8 @@ end
if c("rabbit_hide") then if c("rabbit_hide") then
minetest.register_craftitem("mobs_mc:rabbit_hide", { minetest.register_craftitem("mobs_mc:rabbit_hide", {
description = S("Rabbit Hide"), description = "Rabbit Hide",
_doc_items_longdesc = S("Rabbit hide is used to create leather."), _doc_items_longdesc = "Rabbit hide is used to create leather.",
inventory_image = "mcl_mobitems_rabbit_hide.png" inventory_image = "mcl_mobitems_rabbit_hide.png"
}) })
end end
@ -432,8 +431,8 @@ end
if c("rabbit_foot") then if c("rabbit_foot") then
minetest.register_craftitem("mobs_mc:rabbit_foot", { minetest.register_craftitem("mobs_mc:rabbit_foot", {
description = S("Rabbit's Foot"), description = "Rabbit's Foot",
_doc_items_longdesc = S("This item is used in brewing."), _doc_items_longdesc = "This item is used in brewing.",
inventory_image = "mcl_mobitems_rabbit_foot.png" inventory_image = "mcl_mobitems_rabbit_foot.png"
}) })
end end
@ -441,8 +440,8 @@ end
-- Sheep -- Sheep
if c("mutton_raw") then if c("mutton_raw") then
minetest.register_craftitem("mobs_mc:mutton_raw", { minetest.register_craftitem("mobs_mc:mutton_raw", {
description = S("Raw Mutton"), description = "Raw Mutton",
_doc_items_longdesc = S("Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value."), _doc_items_longdesc = "Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it will greatly increase its nutritional value.",
inventory_image = "mcl_mobitems_mutton_raw.png", inventory_image = "mcl_mobitems_mutton_raw.png",
groups = { food = 2, eatable = 4 }, groups = { food = 2, eatable = 4 },
on_use = minetest.item_eat(4), on_use = minetest.item_eat(4),
@ -451,8 +450,8 @@ end
if c("mutton_cooked") then if c("mutton_cooked") then
minetest.register_craftitem("mobs_mc:mutton_cooked", { minetest.register_craftitem("mobs_mc:mutton_cooked", {
description = S("Cooked Mutton"), description = "Cooked Mutton",
_doc_items_longdesc = S("Cooked mutton is the cooked flesh from a sheep and is used as food."), _doc_items_longdesc = "Cooked mutton is the cooked flesh from a sheep and is used as food.",
inventory_image = "mcl_mobitems_mutton_cooked.png", inventory_image = "mcl_mobitems_mutton_cooked.png",
groups = { food = 2, eatable = 8 }, groups = { food = 2, eatable = 8 },
on_use = minetest.item_eat(8), on_use = minetest.item_eat(8),
@ -471,8 +470,8 @@ end
-- Shulker -- Shulker
if c("shulker_shell") then if c("shulker_shell") then
minetest.register_craftitem("mobs_mc:shulker_shell", { minetest.register_craftitem("mobs_mc:shulker_shell", {
description = S("Shulker Shell"), description = "Shulker Shell",
_doc_items_longdesc = S("Shulker shells are used in crafting. They are dropped from dead shulkers."), _doc_items_longdesc = "Shulker shells are used in crafting. They are dropped from dead shulkers.",
inventory_image = "mcl_mobitems_shulker_shell.png", inventory_image = "mcl_mobitems_shulker_shell.png",
groups = { craftitem = 1 }, groups = { craftitem = 1 },
}) })
@ -481,8 +480,8 @@ end
-- Magma cube -- Magma cube
if c("magma_cream") then if c("magma_cream") then
minetest.register_craftitem("mobs_mc:magma_cream", { minetest.register_craftitem("mobs_mc:magma_cream", {
description = S("Magma Cream"), description = "Magma Cream",
_doc_items_longdesc = S("Magma cream is a crafting component."), _doc_items_longdesc = "Magma cream is a crafting component.",
wield_image = "mcl_mobitems_magma_cream.png", wield_image = "mcl_mobitems_magma_cream.png",
inventory_image = "mcl_mobitems_magma_cream.png", inventory_image = "mcl_mobitems_magma_cream.png",
groups = { brewitem = 1 }, groups = { brewitem = 1 },
@ -492,8 +491,8 @@ end
-- Slime -- Slime
if c("slimeball") then if c("slimeball") then
minetest.register_craftitem("mobs_mc:slimeball", { minetest.register_craftitem("mobs_mc:slimeball", {
description = S("Slimeball"), description = "Slimeball",
_doc_items_longdesc = S("Slimeballs are used in crafting. They are dropped from slimes."), _doc_items_longdesc = "Slimeballs are used in crafting. They are dropped from slimes.",
inventory_image = "mcl_mobitems_slimeball.png" inventory_image = "mcl_mobitems_slimeball.png"
}) })
if minetest.get_modpath("mesecons_materials") then if minetest.get_modpath("mesecons_materials") then
@ -507,8 +506,8 @@ end
-- Spider -- Spider
if c("spider_eye") then if c("spider_eye") then
minetest.register_craftitem("mobs_mc:spider_eye", { minetest.register_craftitem("mobs_mc:spider_eye", {
description = S("Spider Eye"), description = "Spider Eye",
_doc_items_longdesc = S("Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points."), _doc_items_longdesc = "Spider eyes are used mainly in crafting and brewing. Spider eyes can be eaten, but they poison you and reduce your health by 2 hit points.",
inventory_image = "mcl_mobitems_spider_eye.png", inventory_image = "mcl_mobitems_spider_eye.png",
wield_image = "mcl_mobitems_spider_eye.png", wield_image = "mcl_mobitems_spider_eye.png",
-- Simplified poisonous food -- Simplified poisonous food
@ -593,8 +592,8 @@ end
-- Rotten flesh -- Rotten flesh
if c("rotten_flesh") then if c("rotten_flesh") then
minetest.register_craftitem("mobs_mc:rotten_flesh", { minetest.register_craftitem("mobs_mc:rotten_flesh", {
description = S("Rotten Flesh"), description = "Rotten Flesh",
_doc_items_longdesc = S("Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine."), _doc_items_longdesc = "Yuck! This piece of flesh clearly has seen better days. Eating it will only poison you and reduces your health by 4 hit points. But tamed wolves can eat it just fine.",
inventory_image = "mcl_mobitems_rotten_flesh.png", inventory_image = "mcl_mobitems_rotten_flesh.png",
-- Simplified poisonous food -- Simplified poisonous food
groups = { food = 2, eatable = -4 }, groups = { food = 2, eatable = -4 },
@ -605,8 +604,8 @@ end
-- Misc. -- Misc.
if c("nether_star") then if c("nether_star") then
minetest.register_craftitem("mobs_mc:nether_star", { minetest.register_craftitem("mobs_mc:nether_star", {
description = S("Nether Star"), description = "Nether Star",
_doc_items_longdesc = S("A nether star is a crafting component. It is dropped from the Wither."), _doc_items_longdesc = "A nether star is a crafting component. It is dropped from the Wither.",
inventory_image = "mcl_mobitems_nether_star.png" inventory_image = "mcl_mobitems_nether_star.png"
}) })
end end
@ -634,9 +633,9 @@ end
if c("bone") then if c("bone") then
minetest.register_craftitem("mobs_mc:bone", { minetest.register_craftitem("mobs_mc:bone", {
description = S("Bone"), description = "Bone",
_doc_items_longdesc = S("Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient."), _doc_items_longdesc = "Bones can be used to tame wolves so they will protect you. They are also useful as a crafting ingredient.",
_doc_items_usagehelp = S("Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it."), _doc_items_usagehelp = "Hold the bone in your hand near wolves to attract them. Rightclick the wolf to give it a bone and tame it.",
inventory_image = "mcl_mobitems_bone.png" inventory_image = "mcl_mobitems_bone.png"
}) })
if minetest.get_modpath("bones") then if minetest.get_modpath("bones") then

View File

@ -3,9 +3,10 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib -- NOTE: Strings intentionally not marked for translation, other mods already have these items.
local MP = minetest.get_modpath(minetest.get_current_modname()) -- TODO: Remove this file eventually, all items here are already outsourced in other mods.
local S, NS = dofile(MP.."/intllib.lua")
local S = minetest.get_translator("mobs_mc")
--maikerumines throwing code --maikerumines throwing code
--arrow (weapon) --arrow (weapon)
@ -14,15 +15,18 @@ local c = mobs_mc.is_item_variable_overridden
minetest.register_node("mobs_mc:arrow_box", { minetest.register_node("mobs_mc:arrow_box", {
drawtype = "nodebox", drawtype = "nodebox",
is_ground_content = false,
node_box = { node_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
-- Shaft -- Shaft
{-6.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17}, {-6.5/17, -1.5/17, -1.5/17, -4.5/17, 1.5/17, 1.5/17},
--Spitze {-4.5/17, -0.5/17, -0.5/17, 5.5/17, 0.5/17, 0.5/17},
{5.5/17, -1.5/17, -1.5/17, 6.5/17, 1.5/17, 1.5/17},
-- Tip
{-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17}, {-4.5/17, 2.5/17, 2.5/17, -3.5/17, -2.5/17, -2.5/17},
{-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17}, {-8.5/17, 0.5/17, 0.5/17, -6.5/17, -0.5/17, -0.5/17},
--Federn -- Fletching
{6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17}, {6.5/17, 1.5/17, 1.5/17, 7.5/17, 2.5/17, 2.5/17},
{7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17}, {7.5/17, -2.5/17, 2.5/17, 6.5/17, -1.5/17, 1.5/17},
{7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17}, {7.5/17, 2.5/17, -2.5/17, 6.5/17, 1.5/17, -1.5/17},
@ -35,7 +39,16 @@ minetest.register_node("mobs_mc:arrow_box", {
} }
}, },
tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"}, tiles = {"mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow.png^[transformFX", "mcl_bows_arrow_back.png", "mcl_bows_arrow_front.png", "mcl_bows_arrow.png", "mcl_bows_arrow.png^[transformFX"},
groups = {not_in_creative_inventory=1}, paramtype = "light",
paramtype2 = "facedir",
sunlight_propagates = true,
groups = {not_in_creative_inventory=1, dig_immediate=3},
node_placement_prediction = "",
on_construct = function(pos)
minetest.log("error", "[mobs_mc] Trying to construct mobs_mc:arrow_box at "..minetest.pos_to_string(pos))
minetest.remove_node(pos)
end,
drop = "",
}) })
local THROWING_ARROW_ENTITY={ local THROWING_ARROW_ENTITY={
@ -116,9 +129,9 @@ local throwing_shoot_arrow = function(itemstack, player)
local playerpos = player:get_pos() local playerpos = player:get_pos()
local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc local obj = minetest.add_entity({x=playerpos.x,y=playerpos.y+1.5,z=playerpos.z}, arrow[2]) --mc
local dir = player:get_look_dir() local dir = player:get_look_dir()
obj:setvelocity({x=dir.x*22, y=dir.y*22, z=dir.z*22}) obj:set_velocity({x=dir.x*22, y=dir.y*22, z=dir.z*22})
obj:setacceleration({x=dir.x*-3, y=-10, z=dir.z*-3}) obj:set_acceleration({x=dir.x*-3, y=-10, z=dir.z*-3})
obj:setyaw(player:get_look_yaw()+math.pi) obj:set_yaw(player:get_look_yaw()+math.pi)
minetest.sound_play("throwing_sound", {pos=playerpos}) minetest.sound_play("throwing_sound", {pos=playerpos})
if obj:get_luaentity().player == "" then if obj:get_luaentity().player == "" then
obj:get_luaentity().player = player obj:get_luaentity().player = player
@ -132,9 +145,9 @@ end
if c("arrow") then if c("arrow") then
minetest.register_craftitem("mobs_mc:arrow", { minetest.register_craftitem("mobs_mc:arrow", {
description = S("Arrow"), description = "Arrow",
_doc_items_longdesc = S("Arrows are ammunition for bows."), _doc_items_longdesc = "Arrows are ammunition for bows.",
_doc_items_usagehelp = S("To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom."), _doc_items_usagehelp = "To use arrows as ammunition for a bow, put them in the inventory slot following the bow. Slots are counted left to right, top to bottom.",
inventory_image = "mcl_bows_arrow_inv.png", inventory_image = "mcl_bows_arrow_inv.png",
}) })
end end
@ -152,9 +165,9 @@ end
if c("bow") then if c("bow") then
minetest.register_tool("mobs_mc:bow_wood", { minetest.register_tool("mobs_mc:bow_wood", {
description = S("Bow"), description = "Bow",
_doc_items_longdesc = S("Bows are ranged weapons to shoot arrows at your foes."), _doc_items_longdesc = "Bows are ranged weapons to shoot arrows at your foes.",
_doc_items_usagehelp = S("To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage."), _doc_items_usagehelp = "To use the bow, you first need to have at least one arrow in slot following the bow. Leftclick to shoot. Each hit deals 3 damage.",
inventory_image = "mcl_bows_bow.png", inventory_image = "mcl_bows_bow.png",
on_use = function(itemstack, user, pointed_thing) on_use = function(itemstack, user, pointed_thing)
if throwing_shoot_arrow(itemstack, user, pointed_thing) then if throwing_shoot_arrow(itemstack, user, pointed_thing) then
@ -197,8 +210,8 @@ if c("egg") then
}, nil) }, nil)
end, end,
hit_mob = function(self, player) hit_mob = function(self, mob)
player:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, { mob:punch(minetest.get_player_by_name(self.playername) or self.object, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,
damage_groups = {}, damage_groups = {},
}, nil) }, nil)
@ -267,13 +280,13 @@ if c("egg") then
ent.velocity = egg_VELOCITY -- needed for api internal timing ent.velocity = egg_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({ obj:set_velocity({
x = dir.x * egg_VELOCITY, x = dir.x * egg_VELOCITY,
y = dir.y * egg_VELOCITY, y = dir.y * egg_VELOCITY,
z = dir.z * egg_VELOCITY z = dir.z * egg_VELOCITY
}) })
obj:setacceleration({ obj:set_acceleration({
x = dir.x * -3, x = dir.x * -3,
y = -egg_GRAVITY, y = -egg_GRAVITY,
z = dir.z * -3 z = dir.z * -3
@ -291,8 +304,8 @@ if c("egg") then
end end
minetest.register_craftitem("mobs_mc:egg", { minetest.register_craftitem("mobs_mc:egg", {
description = S("Egg"), description = "Egg",
_doc_items_longdesc = S("Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out"), _doc_items_longdesc = "Eggs can be thrown and break on impact. There is a small chance that 1 or even 4 chicks will pop out",
_doc_items_usagehelp = how_to_throw, _doc_items_usagehelp = how_to_throw,
inventory_image = "mobs_chicken_egg.png", inventory_image = "mobs_chicken_egg.png",
on_use = mobs_shoot_egg, on_use = mobs_shoot_egg,
@ -351,13 +364,13 @@ if c("snowball") then
ent.velocity = snowball_VELOCITY -- needed for api internal timing ent.velocity = snowball_VELOCITY -- needed for api internal timing
ent.switch = 1 -- needed so that egg doesn't despawn straight away ent.switch = 1 -- needed so that egg doesn't despawn straight away
obj:setvelocity({ obj:set_velocity({
x = dir.x * snowball_VELOCITY, x = dir.x * snowball_VELOCITY,
y = dir.y * snowball_VELOCITY, y = dir.y * snowball_VELOCITY,
z = dir.z * snowball_VELOCITY z = dir.z * snowball_VELOCITY
}) })
obj:setacceleration({ obj:set_acceleration({
x = dir.x * -3, x = dir.x * -3,
y = -snowball_GRAVITY, y = -snowball_GRAVITY,
z = dir.z * -3 z = dir.z * -3
@ -377,8 +390,8 @@ if c("snowball") then
-- Snowball -- Snowball
minetest.register_craftitem("mobs_mc:snowball", { minetest.register_craftitem("mobs_mc:snowball", {
description = S("Snowball"), description = "Snowball",
_doc_items_longdesc = S("Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else."), _doc_items_longdesc = "Snowballs can be thrown at your enemies. A snowball deals 3 damage to blazes, but is harmless to anything else.",
_doc_items_usagehelp = how_to_throw, _doc_items_usagehelp = how_to_throw,
inventory_image = "mcl_throwing_snowball.png", inventory_image = "mcl_throwing_snowball.png",
on_use = mobs_shoot_snowball, on_use = mobs_shoot_snowball,

View File

@ -53,7 +53,7 @@ mobs_mc.make_owner_teleport_function = function(dist, teleport_check_interval)
if minetest.registered_nodes[minetest.get_node(telepos).name].walkable == false and if minetest.registered_nodes[minetest.get_node(telepos).name].walkable == false and
minetest.registered_nodes[minetest.get_node(telepos_below).name].walkable == true then minetest.registered_nodes[minetest.get_node(telepos_below).name].walkable == true then
-- Correct position found! Let's teleport. -- Correct position found! Let's teleport.
self.object:setpos(telepos) self.object:set_pos(telepos)
return return
end end
end end

View File

@ -1,9 +1,10 @@
--MC Heads for minetest --MC Heads for minetest
--maikerumine --maikerumine
-- intllib -- NOTE: Strings intentionally not marked for translation, other mods already have these items.
local MP = minetest.get_modpath(minetest.get_current_modname()) -- TODO: Remove this file eventually, all items here are already outsourced in other mods.
local S, NS = dofile(MP.."/intllib.lua")
local S = minetest.get_translator("mobs_mc")
-- Heads system -- Heads system
@ -55,7 +56,7 @@ local function addhead(mobname, desc, longdesc)
end end
-- Add heads -- Add heads
addhead("zombie", S("Zombie Head"), S("A zombie head is a small decorative block which resembles the head of a zombie.")) addhead("zombie", "Zombie Head", "A zombie head is a small decorative block which resembles the head of a zombie.")
addhead("creeper", S("Creeper Head"), S("A creeper head is a small decorative block which resembles the head of a creeper.")) addhead("creeper", "Creeper Head", "A creeper head is a small decorative block which resembles the head of a creeper.")
addhead("skeleton", S("Skeleton Skull"), S("A skeleton skull is a small decorative block which resembles the skull of a skeleton.")) addhead("skeleton", "Skeleton Skull", "A skeleton skull is a small decorative block which resembles the skull of a skeleton.")
addhead("wither_skeleton", S("Wither Skeleton Skull"), S("A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.")) addhead("wither_skeleton", "Wither Skeleton Skull", "A wither skeleton skull is a small decorative block which resembles the skull of a wither skeleton.")

View File

@ -81,6 +81,9 @@ Origin of those models:
* PilzAdam and Wuzzy (CC0) * PilzAdam and Wuzzy (CC0)
* `mobs_mc_chicken_lay_egg.ogg` * `mobs_mc_chicken_lay_egg.ogg`
* [AGFX](http://www.freesound.org/people/DrMinky/sounds/) (CC0)
* `mobs_mc_chicken_child.ogg`
* Source: <https://freesound.org/people/AGFX/sounds/43380/>
* Randomation (CC0) * Randomation (CC0)
* `green_slime_damage.ogg` * `green_slime_damage.ogg`
* `green_slime_attack.ogg` * `green_slime_attack.ogg`

View File

@ -2,9 +2,7 @@
--################### AGENT --################### AGENT
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:agent", { mobs:register_mob("mobs_mc:agent", {
type = "npc", type = "npc",
@ -21,6 +19,7 @@ mobs:register_mob("mobs_mc:agent", {
}, },
-- TODO: sounds -- TODO: sounds
visual_size = {x=3, y=3}, visual_size = {x=3, y=3},
walk_chance = 0,
walk_velocity = 0.6, walk_velocity = 0.6,
run_velocity = 2, run_velocity = 2,
jump = true, jump = true,

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:bat", { mobs:register_mob("mobs_mc:bat", {
type = "animal", type = "animal",
@ -42,9 +40,6 @@ mobs:register_mob("mobs_mc:bat", {
]] ]]
}, },
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
view_range = 16, view_range = 16,

View File

@ -3,11 +3,8 @@
-- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models -- Model and mobs_blaze.png see https://github.com/22i/minecraft-voxel-blender-models
-- blaze.lua partial copy of mobs_mc/ghast.lua -- blaze.lua partial copy of mobs_mc/ghast.lua
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### BLAZE --################### BLAZE
--################### --###################
@ -56,6 +53,7 @@ mobs:register_mob("mobs_mc:blaze", {
-- MC Wiki: takes 1 damage every half second while in water -- MC Wiki: takes 1 damage every half second while in water
water_damage = 2, water_damage = 2,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
fall_damage = 0, fall_damage = 0,
fall_speed = -2.25, fall_speed = -2.25,
light_damage = 0, light_damage = 0,
@ -68,8 +66,8 @@ mobs:register_mob("mobs_mc:blaze", {
jump_height = 4, jump_height = 4,
fly = true, fly = true,
jump_chance = 98, jump_chance = 98,
fear_height = 120, fear_height = 0,
blood_amount = 0, glow = 14,
}) })
mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max) mobs:spawn_specific("mobs_mc:blaze", mobs_mc.spawn.nether_fortress, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 3, mobs_mc.spawn_height.nether_min, mobs_mc.spawn_height.nether_max)
@ -89,8 +87,8 @@ mobs:register_arrow("mobs_mc:blaze_fireball", {
}, nil) }, nil)
end, end,
hit_mob = function(self, player) hit_mob = function(self, mob)
player:punch(self.object, 1.0, { mob:punch(self.object, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,
damage_groups = {fleshy = 5}, damage_groups = {fleshy = 5},
}, nil) }, nil)
@ -101,7 +99,7 @@ mobs:register_arrow("mobs_mc:blaze_fireball", {
if node.name == "air" then if node.name == "air" then
minetest.set_node(pos_above, {name=mobs_mc.items.fire}) minetest.set_node(pos_above, {name=mobs_mc.items.fire})
else else
local v = self.object:getvelocity() local v = self.object:get_velocity()
v = vector.normalize(v) v = vector.normalize(v)
local crashpos = vector.subtract(pos, v) local crashpos = vector.subtract(pos, v)
local crashnode = minetest.get_node(crashpos) local crashnode = minetest.get_node(crashpos)

View File

@ -1,11 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### CHICKEN --################### CHICKEN
@ -40,9 +35,6 @@ mobs:register_mob("mobs_mc:chicken", {
min = 0, min = 0,
max = 2,}, max = 2,},
}, },
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
fall_speed = -2.25, fall_speed = -2.25,
sounds = { sounds = {
@ -50,6 +42,12 @@ mobs:register_mob("mobs_mc:chicken", {
-- TODO: death, damage -- TODO: death, damage
distance = 16, distance = 16,
}, },
sounds_child = {
random = "mobs_mc_chicken_child",
damage = "mobs_mc_chicken_child",
death = "mobs_mc_chicken_child",
distance = 16,
},
animation = { animation = {
stand_speed = 25, walk_speed = 25, run_speed = 50, stand_speed = 25, walk_speed = 25, run_speed = 50,
stand_start = 0, stand_end = 0, stand_start = 0, stand_end = 0,

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local cow_def = { local cow_def = {
type = "animal", type = "animal",
@ -28,9 +26,6 @@ local cow_def = {
min = 0, min = 0,
max = 2,}, max = 2,},
}, },
water_damage = 1,
lava_damage = 5,
light_damage = 0,
runaway = true, runaway = true,
sounds = { sounds = {
random = "mobs_mc_cow", random = "mobs_mc_cow",
@ -100,10 +95,10 @@ mooshroom_def.on_rightclick = function(self, clicker)
minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5") minetest.add_item({x=pos.x, y=pos.y+1.4, z=pos.z}, mobs_mc.items.mushroom_red .. " 5")
end end
local oldyaw = self.object:getyaw() local oldyaw = self.object:get_yaw()
self.object:remove() self.object:remove()
local cow = minetest.add_entity(pos, "mobs_mc:cow") local cow = minetest.add_entity(pos, "mobs_mc:cow")
cow:setyaw(oldyaw) cow:set_yaw(oldyaw)
if not minetest.settings:get_bool("creative_mode") then if not minetest.settings:get_bool("creative_mode") then
item:add_wear(mobs_mc.misc.shears_wear) item:add_wear(mobs_mc.misc.shears_wear)

View File

@ -1,11 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### CREEPER --################### CREEPER
@ -119,10 +114,7 @@ mobs:register_mob("mobs_mc:creeper", {
}, },
floats = 1, floats = 1,
fear_height = 4, fear_height = 4,
lava_damage = 4,
light_damage = 0,
view_range = 16, view_range = 16,
blood_amount = 0,
}) })

View File

@ -8,5 +8,4 @@ mcl_fishing?
bones? bones?
mesecons_materials? mesecons_materials?
mobs_mc_gameconfig? mobs_mc_gameconfig?
intllib?
doc_items? doc_items?

View File

@ -2,39 +2,8 @@
--################### ENDERDRAGON --################### ENDERDRAGON
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--[[
mobs:register_mob("mobs_mc:12enderdragon", {
type = "animal",
passive = true,
runaway = true,
stepheight = 1.2,
hp_min = 30,
hp_max = 60,
armor = 150,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 2, 0.35},
visual = "mesh",
mesh = "enderdragon.b3d",
textures = {
{"enderdragon.png"},
},
visual_size = {x=1, y=1},
walk_velocity = 0.6,
run_velocity = 2,
jump = true,
animation = {
speed_normal = 25, speed_run = 50,
stand_start = 0, stand_end = 20,
walk_start = 0, walk_end = 20,
run_start = 0, run_end = 20,
},
})
mobs:register_egg("mobs_mc:12enderdragon", "Enderdragon", "enderdragon_inv.png", 0)
]]
mobs:register_mob("mobs_mc:enderdragon", { mobs:register_mob("mobs_mc:enderdragon", {
type = "monster", type = "monster",
pathfinding = 1, pathfinding = 1,
@ -65,7 +34,6 @@ mobs:register_mob("mobs_mc:enderdragon", {
jump_height = 14, jump_height = 14,
stepheight = 1.2, stepheight = 1.2,
jump_chance = 100, jump_chance = 100,
fear_height = 120,
fly = true, fly = true,
fly_in = {"air"}, fly_in = {"air"},
dogshoot_switch = 1, dogshoot_switch = 1,
@ -79,9 +47,8 @@ mobs:register_mob("mobs_mc:enderdragon", {
min = 1, min = 1,
max = 1}, max = 1},
}, },
water_damage = 0,
lava_damage = 0, lava_damage = 0,
light_damage = 0, fire_damage = 0,
on_rightclick = nil, on_rightclick = nil,
attack_type = "dogshoot", attack_type = "dogshoot",
arrow = "mobs_mc:fireball2", arrow = "mobs_mc:fireball2",
@ -93,7 +60,6 @@ mobs:register_mob("mobs_mc:enderdragon", {
walk_start = 0, walk_end = 20, walk_start = 0, walk_end = 20,
run_start = 0, run_end = 20, run_start = 0, run_end = 20,
}, },
blood_amount = 0,
ignores_nametag = true, ignores_nametag = true,
}) })
@ -126,7 +92,7 @@ mobs:register_arrow("mobs_mc:roar_of_the_dragon2", {
for _,obj in ipairs(objects) do for _,obj in ipairs(objects) do
local name = self.name local name = self.name
if name~="mobs_mc:roar_of_the_dragon2" and name ~= "mobs_mc:enderdragon" then if name~="mobs_mc:roar_of_the_dragon2" and name ~= "mobs_mc:enderdragon" then
obj:set_hp(obj:get_hp()-0.05) obj:set_hp(obj:get_hp()-5)
if (obj:get_hp() <= 0) then if (obj:get_hp() <= 0) then
if (not obj:is_player()) and name ~= self.object:get_luaentity().name then if (not obj:is_player()) and name ~= self.object:get_luaentity().name then
obj:remove() obj:remove()

View File

@ -10,12 +10,7 @@
-- and they are provoked by looking directly at them. -- and they are provoked by looking directly at them.
-- TODO: Implement MC behaviour. -- TODO: Implement MC behaviour.
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### ENDERMAN --################### ENDERMAN
@ -314,7 +309,7 @@ mobs:register_mob("mobs_mc:enderman", {
end end
end end
if telepos then if telepos then
self.object:setpos(telepos) self.object:set_pos(telepos)
end end
end end
end, end,
@ -325,14 +320,11 @@ mobs:register_mob("mobs_mc:enderman", {
end end
end, end,
water_damage = 8, water_damage = 8,
lava_damage = 4,
light_damage = 0,
-- TODO: Increase view range when it detects being seen -- TODO: Increase view range when it detects being seen
-- Low view range to emulate that behaviour somehow -- Low view range to emulate that behaviour somehow
view_range = 4, view_range = 4,
fear_height = 4, fear_height = 4,
attack_type = "dogfight", attack_type = "dogfight",
blood_amount = 0,
}) })

View File

@ -2,9 +2,7 @@
--################### ENDERMITE --################### ENDERMITE
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:endermite", { mobs:register_mob("mobs_mc:endermite", {
type = "monster", type = "monster",
@ -29,14 +27,10 @@ mobs:register_mob("mobs_mc:endermite", {
walk_velocity = 1, walk_velocity = 1,
run_velocity = 2, run_velocity = 2,
jump = true, jump = true,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
view_range = 16, view_range = 16,
damage = 2, damage = 2,
reach = 1, reach = 1,
blood_amount = 0,
}) })
mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0) mobs:register_egg("mobs_mc:endermite", S("Endermite"), "mobs_mc_spawn_icon_endermite.png", 0)

View File

@ -3,11 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### GHAST --################### GHAST
@ -57,8 +53,6 @@ mobs:register_mob("mobs_mc:ghast", {
walk_start = 0, walk_end = 40, walk_start = 0, walk_end = 40,
run_start = 0, run_end = 40, run_start = 0, run_end = 40,
}, },
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
view_range = 100, view_range = 100,
--attack_type = "dogshoot", --attack_type = "dogshoot",
@ -77,8 +71,6 @@ mobs:register_mob("mobs_mc:ghast", {
fly = true, fly = true,
fly_in = {"air"}, fly_in = {"air"},
jump_chance = 98, jump_chance = 98,
fear_height = 120,
blood_amount = 0,
}) })
@ -99,8 +91,8 @@ mobs:register_arrow(":mobs_monster:fireball", {
}, nil) }, nil)
end, end,
hit_mob = function(self, player) hit_mob = function(self, mob)
player:punch(self.object, 1.0, { mob:punch(self.object, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,
damage_groups = {fleshy = 8}, damage_groups = {fleshy = 8},
}, nil) }, nil)

View File

@ -4,14 +4,13 @@
--################### GUARDIAN --################### GUARDIAN
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:guardian", { mobs:register_mob("mobs_mc:guardian", {
type = "monster", type = "monster",
hp_min = 30, hp_min = 30,
hp_max = 30, hp_max = 30,
breath_max = -1,
passive = false, passive = false,
attack_type = "dogfight", attack_type = "dogfight",
pathfinding = 1, pathfinding = 1,
@ -78,10 +77,6 @@ mobs:register_mob("mobs_mc:guardian", {
stepheight = 0.1, stepheight = 0.1,
jump = false, jump = false,
view_range = 16, view_range = 16,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
blood_amount = 0,
}) })
mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10) mobs:spawn_specific("mobs_mc:guardian", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 25000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water - 10)

View File

@ -4,14 +4,13 @@
--################### GUARDIAN --################### GUARDIAN
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:guardian_elder", { mobs:register_mob("mobs_mc:guardian_elder", {
type = "monster", type = "monster",
hp_min = 80, hp_min = 80,
hp_max = 80, hp_max = 80,
breath_max = -1,
passive = false, passive = false,
attack_type = "dogfight", attack_type = "dogfight",
pathfinding = 1, pathfinding = 1,
@ -82,11 +81,7 @@ mobs:register_mob("mobs_mc:guardian_elder", {
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
stepheight = 0.1, stepheight = 0.1,
jump = false, jump = false,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
view_range = 16, view_range = 16,
blood_amount = 0,
}) })
mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18) mobs:spawn_specific("mobs_mc:guardian_elder", mobs_mc.spawn.water, mobs_mc.spawn_water, 0, minetest.LIGHT_MAX+1, 30, 40000, 2, mobs_mc.spawn_height.overworld_min, mobs_mc.spawn_height.water-18)

View File

@ -3,9 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### HORSE --################### HORSE
@ -118,8 +116,6 @@ local horse = {
hp_min = 15, hp_min = 15,
hp_max = 30, hp_max = 30,
floats = 1, floats = 1,
lava_damage = 4,
water_damage = 1,
makes_footstep_sound = true, makes_footstep_sound = true,
jump = true, jump = true,
jump_height = 5.75, -- can clear 2.5 blocks jump_height = 5.75, -- can clear 2.5 blocks
@ -142,7 +138,7 @@ local horse = {
self.max_speed_reverse = 2 self.max_speed_reverse = 2
self.accel = 6 self.accel = 6
self.terrain_type = 3 self.terrain_type = 3
self.driver_attach_at = {x = 0, y = 7.5, z = -1.75} self.driver_attach_at = {x = 0, y = 4.17, z = -1.75}
self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
end end
@ -326,6 +322,7 @@ mobs:register_mob("mobs_mc:horse", horse)
-- Skeleton horse -- Skeleton horse
local skeleton_horse = table.copy(horse) local skeleton_horse = table.copy(horse)
skeleton_horse.breath_max = -1
skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}} skeleton_horse.textures = {{"blank.png", "mobs_mc_horse_skeleton.png", "blank.png"}}
skeleton_horse.drops = { skeleton_horse.drops = {
{name = mobs_mc.items.bone, {name = mobs_mc.items.bone,
@ -339,11 +336,11 @@ skeleton_horse.sounds = {
damage = "mobs_mc_skeleton_hurt", damage = "mobs_mc_skeleton_hurt",
distance = 16, distance = 16,
} }
skeleton_horse.blood_amount = 0
mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse) mobs:register_mob("mobs_mc:skeleton_horse", skeleton_horse)
-- Zombie horse -- Zombie horse
local zombie_horse = table.copy(horse) local zombie_horse = table.copy(horse)
zombie_horse.breath_max = -1
zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}} zombie_horse.textures = {{"blank.png", "mobs_mc_horse_zombie.png", "blank.png"}}
zombie_horse.drops = { zombie_horse.drops = {
{name = mobs_mc.items.rotten_flesh, {name = mobs_mc.items.rotten_flesh,

View File

@ -1,45 +0,0 @@
-- Fallback functions for when `intllib` is not installed.
-- Code released under Unlicense <http://unlicense.org>.
-- Get the latest version of this file at:
-- https://raw.githubusercontent.com/minetest-mods/intllib/master/lib/intllib.lua
local function format(str, ...)
local args = { ... }
local function repl(escape, open, num, close)
if escape == "" then
local replacement = tostring(args[tonumber(num)])
if open == "" then
replacement = replacement..close
end
return replacement
else
return "@"..open..num..close
end
end
return (str:gsub("(@?)@(%(?)(%d+)(%)?)", repl))
end
local gettext, ngettext
if minetest.get_modpath("intllib") then
if intllib.make_gettext_pair then
-- New method using gettext.
gettext, ngettext = intllib.make_gettext_pair()
else
-- Old method using text files.
gettext = intllib.Getter()
end
end
-- Fill in missing functions.
gettext = gettext or function(msgid, ...)
return format(msgid, ...)
end
ngettext = ngettext or function(msgid, msgid_plural, n, ...)
return format(n==1 and msgid or msgid_plural, ...)
end
return gettext, ngettext

View File

@ -3,11 +3,8 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### IRON GOLEM --################### IRON GOLEM
--################### --###################
@ -19,6 +16,7 @@ mobs:register_mob("mobs_mc:iron_golem", {
passive = true, passive = true,
hp_min = 100, hp_min = 100,
hp_max = 100, hp_max = 100,
breath_max = -1,
collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7}, collisionbox = {-0.7, -0.01, -0.7, 0.7, 2.69, 0.7},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_iron_golem.b3d", mesh = "mobs_mc_iron_golem.b3d",
@ -51,9 +49,6 @@ mobs:register_mob("mobs_mc:iron_golem", {
min = 0, min = 0,
max = 2,}, max = 2,},
}, },
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
animation = { animation = {
stand_speed = 15, walk_speed = 15, run_speed = 25, punch_speed = 15, stand_speed = 15, walk_speed = 15, run_speed = 25, punch_speed = 15,
@ -63,7 +58,6 @@ mobs:register_mob("mobs_mc:iron_golem", {
punch_start = 40, punch_end = 50, punch_start = 40, punch_end = 50,
}, },
jump = true, jump = true,
blood_amount = 0,
}) })

View File

@ -1,6 +1,4 @@
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### LLAMA --################### LLAMA
@ -34,9 +32,6 @@ mobs:register_mob("mobs_mc:llama", {
min = 0, min = 0,
max = 2,}, max = 2,},
}, },
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
sounds = { sounds = {
random = "mobs_mc_llama", random = "mobs_mc_llama",
@ -58,7 +53,7 @@ mobs:register_mob("mobs_mc:llama", {
look_start = 78, look_start = 78,
look_end = 108, look_end = 108,
}, },
follow = mobs_mc.items.horse, follow = mobs_mc.follow.llama,
view_range = 16, view_range = 16,
do_custom = function(self, dtime) do_custom = function(self, dtime)
@ -69,7 +64,7 @@ mobs:register_mob("mobs_mc:llama", {
self.max_speed_reverse = 2 self.max_speed_reverse = 2
self.accel = 4 self.accel = 4
self.terrain_type = 3 self.terrain_type = 3
self.driver_attach_at = {x = 0, y = 7.5, z = -1.5} self.driver_attach_at = {x = 0, y = 4.17, z = -1.5}
self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
end end

View File

@ -1,742 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-25 18:45+0100\n"
"PO-Revision-Date: 2018-01-25 18:48+0100\n"
"Last-Translator: Wuzzy <almikes@aol.com>\n"
"Language-Team: \n"
"Language: de_DE\n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"X-Generator: Poedit 2.0.5\n"
"Plural-Forms: nplurals=2; plural=(n != 1);\n"
#: 1_items_default.lua
msgid "Blaze Rod"
msgstr "Lohenrute"
#: 1_items_default.lua
msgid "This is a crafting component dropped from dead blazes."
msgstr "Dies ist eine Fertigungskomponente, welche von toten Lohen abfällt."
#: 1_items_default.lua
msgid "Blaze Powder"
msgstr "Lohenstaub"
#: 1_items_default.lua
msgid "This item is mainly used for brewing potions and crafting."
msgstr ""
"Dieser Gegenstand wird hauptsächlich für die Trankzubereitung und die "
"Fertigung benutzt."
#: 1_items_default.lua
msgid "Raw Chicken"
msgstr "Rohes Hühnchen"
#: 1_items_default.lua
msgid ""
"Raw chicken is a food item and can be eaten safely. Cooking it will increase "
"its nutritional value."
msgstr ""
"Rohes Hühnchen ist ein Lebensmittel und kann problemlos gegessen werden. Es "
"kann gegart werden, um den Nährwert zu erhöhen."
#: 1_items_default.lua
msgid "Cooked Chicken"
msgstr "Gebratenes Hühnchen"
#: 1_items_default.lua
msgid "A cooked chicken is a healthy food item which can be eaten."
msgstr "Ein gekochtes Hühnchen ist ein gesundes essbares Lebensmittel."
#: 1_items_default.lua
msgid "Feather"
msgstr "Feder"
#: 1_items_default.lua
msgid "Feathers are used in crafting and are dropped from chickens."
msgstr ""
"Federn werden für die Fertigung benutzt und werden von Hühnern fallen "
"gelassen."
#: 1_items_default.lua
msgid "Raw Beef"
msgstr "Rohes Rindfleisch"
#: 1_items_default.lua
msgid ""
"Raw beef is the flesh from cows and can be eaten safely. Cooking it will "
"greatly increase its nutritional value."
msgstr ""
"Rohes Rindfleisch ist das Fleisch von Kühen und kann problemlos gegessen "
"werden. Es kann gegart werden, um den Nährwert deutlich zu erhöhen."
#: 1_items_default.lua
msgid "Steak"
msgstr "Steak"
#: 1_items_default.lua
msgid "Steak is cooked beef from cows and can be eaten."
msgstr "Steak ist gebratenes Rindfleisch und kann gegessen werden."
#: 1_items_default.lua
msgid "Milk"
msgstr "Milch"
#: 1_items_default.lua
msgid "Milk is a food item obtained by using a bucket on a cow."
msgstr ""
"Milch ist ein Lebensmittel, das man erhält, wenn man einen Eimer an einer "
"Kuh benutzt."
#: 1_items_default.lua
msgid "Bowl"
msgstr "Schale"
#: 1_items_default.lua
msgid "Bowls are mainly used to hold tasty soups."
msgstr "Schüsseln werden benutzt, um leckere Suppen zu transportieren."
#: 1_items_default.lua
msgid "Mushroom Stew"
msgstr "Pilzsuppe"
#: 1_items_default.lua
msgid "Mushroom stew is a healthy soup."
msgstr "Pilzsuppe ist ein leckeres Gericht."
#: 1_items_default.lua
msgid "Dragon Egg"
msgstr "Drachenei"
#: 1_items_default.lua
msgid "Eye of Ender"
msgstr "Enderauge"
#: 1_items_default.lua
msgid "Ghast Tear"
msgstr "Ghastträne"
#: 1_items_default.lua
msgid ""
"A ghast tear is an item used in potion brewing. It is dropped from dead "
"ghasts."
msgstr ""
"Eine Ghastträne kann für die Trankzubereitung benutzt werden. Sie wird von "
"toten Ghasts abgeworfen."
#: 1_items_default.lua
msgid "Saddle"
msgstr "Sattel"
#: 1_items_default.lua
msgid ""
"Saddles can be put on horses, donkeys, mules and pigs in order to mount them."
msgstr ""
"Sattel können auf Pferden, Eseln, Maultieren und Schweinen platziert werden, "
"um sich aufzusatteln."
#: 1_items_default.lua
msgid ""
"Rightclick an animal while holding a saddle to put on the saddle. You can "
"now mount the animal by rightclicking it again."
msgstr ""
"Rechtsklick auf ein Tier mit einem Sattel in der Hand, um den Sattel zu "
"platzieren. Sie können sich nun mit Rechtsklick auf das Tier setzen."
#: 1_items_default.lua
msgid ""
"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear "
"horse armor."
msgstr ""
"Rechts auf ein Pferd klicken, um die Pferderüstung zu benutzen. Das "
"funktioniert nicht mit Eseln und Maultieren."
#: 1_items_default.lua
msgid "Iron Horse Armor"
msgstr "Eiserne Pferderüstung"
#: 1_items_default.lua
msgid ""
"Iron horse armor can be worn by horses to increase their protection from "
"harm a bit."
msgstr ""
"Die Eisenpferderüstung kann von Pferden getragen werden, um sie etwas vor "
"Schaden zu schützen."
#: 1_items_default.lua
msgid "Golden Horse Armor"
msgstr "Goldene Pferderüstung"
#: 1_items_default.lua
msgid ""
"Golden horse armor can be worn by horses to increase their protection from "
"harm."
msgstr ""
"Die Goldpferderüstung kann von Pferden getragen werden, um sie vor Schaden "
"zu schützen."
#: 1_items_default.lua
msgid "Diamond Horse Armor"
msgstr "Diamantene Pferderüstung"
#: 1_items_default.lua
msgid ""
"Diamond horse armor can be worn by horses to greatly increase their "
"protection from harm."
msgstr ""
"Die Diamantpferderüstung kann von Pferden getragen werden, um ihre "
"Schadenstoleranz stark zu erhöhen."
#: 1_items_default.lua
msgid "Raw Porkchop"
msgstr "Rohes Schweinefleisch"
#: 1_items_default.lua
msgid ""
"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it "
"will greatly increase its nutritional value."
msgstr ""
"Ein rohes Stück Schweinefleisch kann bedenkenlos gegessen werden. Man kann "
"es braten, um seinen Nährwert stark zu erhöhen."
#: 1_items_default.lua
msgid "Cooked Porkchop"
msgstr "Gebratenes Schweinefleisch"
#: 1_items_default.lua
msgid "Carrot on a Stick"
msgstr "Karottenrute"
#: 1_items_default.lua
msgid ""
"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also "
"follow anyone who holds a carrot on a stick near them."
msgstr ""
"Eine Karottenrute kann auf gesattelten Schweinen angewendet werden, um sie "
"zu reiten. Schweine folgen auch jeden, der eine Karottenrüte trägt."
#: 1_items_default.lua
msgid ""
"Rightclick a saddled pig with the carrot on a stick to mount it. You can now "
"ride it like a horse."
msgstr ""
"Rechts auf ein gesatteltes Schwein klicken, um sich draufzusetzen. Jetzt "
"kann das Schwein wie ein Pferd geritten werden."
#: 1_items_default.lua
msgid "Raw Rabbit"
msgstr "Rohes Kaninchen"
#: 1_items_default.lua
msgid ""
"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. "
"Cooking it will increase its nutritional value."
msgstr ""
"Rohes Kaninchenfleisch ist ein Lebensmittel, welches bedenkenlos verzehrt "
"werden kann. Es kann gebraten werden, um seinen Nährwert zu erhöhen."
#: 1_items_default.lua
msgid "Cooked Rabbit"
msgstr "Gebratenes Kaninchen"
#: 1_items_default.lua
msgid "This is a food item which can be eaten."
msgstr "Dies ist ein Lebensmittel."
#: 1_items_default.lua
msgid "Rabbit Hide"
msgstr "Kaninchenfell"
#: 1_items_default.lua
msgid "Rabbit hide is used to create leather."
msgstr "Aus Kaninchenfellen wird Leder gefertigt."
#: 1_items_default.lua
msgid "Rabbit's Foot"
msgstr "Hasenpfote"
#: 1_items_default.lua
msgid "This item is used in brewing."
msgstr "Dieser Gegenstand wird zum Brauen benutzt."
#: 1_items_default.lua
msgid "Raw Mutton"
msgstr "Rohes Hammelfleisch"
#: 1_items_default.lua
msgid ""
"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it "
"will greatly increase its nutritional value."
msgstr ""
"Rohes Hammelfleisch ist das Fleisch eines Schafes und ein Lebensmittel, "
"welches bedenkenlos verzehrt werden kann. Es kann gebraten werden, um seinen "
"Nährwert deutlich zu erhöhen."
#: 1_items_default.lua
msgid "Cooked Mutton"
msgstr "Gebratenes Hammelfleisch"
#: 1_items_default.lua
msgid "Cooked mutton is the cooked flesh from a sheep and is used as food."
msgstr ""
"Gebratenes Hammelfleisch ist das gebratene Fleisch eines Schafs und dient "
"als Lebensmittel."
#: 1_items_default.lua
msgid "Shulker Shell"
msgstr "Shulkerschale"
#: 1_items_default.lua
msgid ""
"Shulker shells are used in crafting. They are dropped from dead shulkers."
msgstr ""
"Shulkerschalen werden für die Fertigung verwendet. Sie werden von toten "
"Shulkern fallen gelassen."
#: 1_items_default.lua
msgid "Magma Cream"
msgstr "Magmacreme"
#: 1_items_default.lua
msgid "Magma cream is a crafting component."
msgstr "Magmacreme wird zum Fertigen benutzt."
#: 1_items_default.lua
msgid "Slimeball"
msgstr "Schleimkugel"
#: 1_items_default.lua
msgid "Slimeballs are used in crafting. They are dropped from slimes."
msgstr ""
"Schleimkugeln werden in der Fertigung benutzt. Sie werden von Schleimen "
"fallen gelassen."
#: 1_items_default.lua
msgid "Spider Eye"
msgstr "Spinnenauge"
#: 1_items_default.lua
msgid ""
"Spider eyes are used mainly in crafting and brewing. Spider eyes can be "
"eaten, but they poison you and reduce your health by 2 hit points."
msgstr ""
"Spinnenaugen werden hauptsächlich für die Fertigung und die Trankzubereitung "
"benutzt. Spinnenaugen können gegessen werden, aber sie vergiften Sie und Sie "
"verlieren 2 Trefferpunkte."
#: 1_items_default.lua
msgid "Totem of Undying"
msgstr "Totem der Unsterblichkeit"
#: 1_items_default.lua
msgid ""
"A totem of undying is a rare artifact which may safe you from certain death."
msgstr ""
"Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, welches Sie vor dem "
"sicheren Tod bewahren kann."
#: 1_items_default.lua
msgid ""
"The totem only works while you hold it in your hand. If you receive fatal "
"damage, you are saved from death and you get a second chance with 1 HP. The "
"totem is destroyed in the process, however."
msgstr ""
"Der Totem funktioniert nur, während Sie ihn in der Hand halten. Wenn sie "
"tödlichen Schaden erhalten, werden Sie vom Tod bewahrt und erhalten eine "
"zweite Lebenschance mit 1 HP. Der Totem geht dabei jedoch zu Bruch."
#: 1_items_default.lua
msgid "Rotten Flesh"
msgstr "Verrottetes Fleisch"
#: 1_items_default.lua
msgid ""
"Yuck! This piece of flesh clearly has seen better days. Eating it will only "
"poison you and reduces your health by 4 hit points. But tamed wolves can eat "
"it just fine."
msgstr ""
"Igitt! Dieses Stück Fleisch hat wohl bessere Tage gesehen. Wenn Sie es "
"essen, werden Sie sofort vergiftet und erleiden einen Schaden von 4 "
"Trefferpunkten. Aber gezähmte Wölfe können es problemlos fressen."
#: 1_items_default.lua
msgid "Nether Star"
msgstr "Netherstern"
#: 1_items_default.lua
msgid "A nether star is a crafting component. It is dropped from the Wither."
msgstr ""
"Ein Netherstern ist eine Fertigungskomponente. Er wird vom Wither abgeworfen."
#: 1_items_default.lua
msgid "Bone"
msgstr "Knochen"
#: 1_items_default.lua
msgid ""
"Bones can be used to tame wolves so they will protect you. They are also "
"useful as a crafting ingredient."
msgstr ""
"Knochen können benutzt werden, um Wölfe zu zähmen, damit sie einen "
"beschützen. Sie außerdem nützlich in der Fertigung."
#: 1_items_default.lua
msgid ""
"Hold the bone in your hand near wolves to attract them. Rightclick the wolf "
"to give it a bone and tame it."
msgstr ""
"Halten Sie einen Knochen in der Nähe eines Wolfes, um ihn anzulocken. "
"Rechtsklick auf den Wolf, um ihn den Knochen zu geben un zu zähmen."
#: 2_throwing.lua
msgid "Arrow"
msgstr "Pfeil"
#: 2_throwing.lua
msgid "Arrows are ammunition for bows."
msgstr "Pfeile sind Munition für Bögen."
#: 2_throwing.lua
msgid ""
"To use arrows as ammunition for a bow, put them in the inventory slot "
"following the bow. Slots are counted left to right, top to bottom."
msgstr ""
"Um Pfeile als Munition für einen Bogen zu benutzen, legen Sie sie in das "
"Inventarfeld, das dem des Bogens folgt. Inventarfelder werden von links nach "
"rechts, dann von oben nach unten gezählt."
#: 2_throwing.lua
msgid "Bow"
msgstr "Bogen"
#: 2_throwing.lua
msgid "Bows are ranged weapons to shoot arrows at your foes."
msgstr "Bögen sind Fernwaffen, um Pfeile auf Ihre Gegner zu schießen."
#: 2_throwing.lua
msgid ""
"To use the bow, you first need to have at least one arrow in slot following "
"the bow. Leftclick to shoot. Each hit deals 3 damage."
msgstr ""
"Um den Bogen zu benutzen, brauchen Sie zuerest mindestens einen Pfeil in dem "
"Inventarfeld nach dem des Bogens. Linksklick zum Schießen. Jeder Treffer "
"richtet 3 Schaden an."
#: 2_throwing.lua
msgid "Egg"
msgstr "Ei"
#: 2_throwing.lua
msgid ""
"Eggs can be thrown and break on impact. There is a small chance that 1 or "
"even 4 chicks will pop out"
msgstr ""
"Eier können geworfen werden und zerbrechen bei einem Treffer. Es gibt eine "
"kleine Chance, dass 1 oder sogar 4 Küken auftauchen"
#: 2_throwing.lua
msgid "Snowball"
msgstr "Schneeball"
#: 2_throwing.lua
msgid ""
"Snowballs can be thrown at your enemies. A snowball deals 3 damage to "
"blazes, but is harmless to anything else."
msgstr ""
"Werfen Sie Schnebälle auf Ihre Feinde. Ein Schneeball richtet gegenüber "
"Lohen 3 Schaden an, ist aber harmlos für alles andere."
#: 4_heads.lua
msgid "Zombie Head"
msgstr "Zombiekopf"
#: 4_heads.lua
msgid ""
"A zombie head is a small decorative block which resembles the head of a "
"zombie."
msgstr ""
"Ein Zombiekopf ist ein kleiner dekorativer Block, der wie der Kopf eines "
"Zombies aussieht."
#: 4_heads.lua
msgid "Creeper Head"
msgstr "Creeperkopf"
#: 4_heads.lua
msgid ""
"A creeper head is a small decorative block which resembles the head of a "
"creeper."
msgstr ""
"Ein Creeperkopf ist ein kleiner dekorativer Block, der wie der Kopf eines "
"Creeper aussieht."
#: 4_heads.lua
msgid "Skeleton Skull"
msgstr "Skelettschädel"
#: 4_heads.lua
msgid ""
"A skeleton skull is a small decorative block which resembles the skull of a "
"skeleton."
msgstr ""
"Ein Skelettschädel ist ein kleiner dekorativer Block, der wie der Schädel "
"eines Skeletts aussieht."
#: 4_heads.lua
msgid "Wither Skeleton Skull"
msgstr "Witherskelettschädel"
#: 4_heads.lua
msgid ""
"A wither skeleton skull is a small decorative block which resembles the "
"skull of a wither skeleton."
msgstr ""
"Ein Witherskelettschädel ist ein kleiner dekorativer Block, der wie der "
"Schädel eines Witherskeletts aussieht."
#: agent.lua
msgid "Agent"
msgstr "Agent"
#: bat.lua
msgid "Bat"
msgstr "Fledermaus"
#: blaze.lua
msgid "Blaze"
msgstr "Lohe"
#: chicken.lua
msgid "Chicken"
msgstr "Huhn"
#: cow+mooshroom.lua
msgid "Cow"
msgstr "Kuh"
#: cow+mooshroom.lua
msgid "Mooshroom"
msgstr "Mooshroom"
#: creeper.lua
msgid "Creeper"
msgstr "Creeper"
#: ender_dragon.lua
msgid "Ender Dragon"
msgstr "Enderdrache"
#: enderman.lua
msgid "Enderman"
msgstr "Enderman"
#: endermite.lua
msgid "Endermite"
msgstr "Endermite"
#: ghast.lua
msgid "Ghast"
msgstr "Ghast"
#: guardian_elder.lua
msgid "Elder Guardian"
msgstr "Großer Wächter"
#: guardian.lua
msgid "Guardian"
msgstr "Wächter"
#: horse.lua
msgid "Horse"
msgstr "Pferd"
#: horse.lua
msgid "Skeleton Horse"
msgstr "Skelettpferd"
#: horse.lua
msgid "Zombie Horse"
msgstr "Zombiepferd"
#: horse.lua
msgid "Donkey"
msgstr "Esel"
#: horse.lua
msgid "Mule"
msgstr "Maultier"
#: iron_golem.lua
msgid "Iron Golem"
msgstr "Eisengolem"
#: llama.lua
msgid "Llama"
msgstr "Lama"
#: ocelot.lua
msgid "Ocelot"
msgstr "Ozelot"
#: parrot.lua
msgid "Parrot"
msgstr "Papagei"
#: pig.lua
msgid "Pig"
msgstr "Schwein"
#: polar_bear.lua
msgid "Polar Bear"
msgstr "Eisbär"
#: rabbit.lua
msgid "Rabbit"
msgstr "Kaninchen"
#: rabbit.lua
msgid "Killer Bunny"
msgstr "Killer-Kaninchen"
#: sheep.lua
msgid "Sheep"
msgstr "Schaf"
#: shulker.lua
msgid "Shulker"
msgstr "Shulker"
#: silverfish.lua
msgid "Silverfish"
msgstr "Silberfischchen"
#: silverfish.lua
msgid "Stone Monster Egg"
msgstr "Silberfischchen-Stein"
#: silverfish.lua
msgid "Cobblestone Monster Egg"
msgstr "Silberfischchen-Bruchstein"
#: silverfish.lua
msgid "Mossy Cobblestone Monster Egg"
msgstr "Bemooster Silberfischchen-Bruchstein"
#: silverfish.lua
msgid "Stone Brick Monster Egg"
msgstr "Silberfischchen-Steinziegel"
#: silverfish.lua
msgid "Stone Block Monster Egg"
msgstr "Silberfischchen-Steinblock"
#: skeleton+stray.lua
msgid "Skeleton"
msgstr "Skelett"
#: skeleton+stray.lua
msgid "Stray"
msgstr "Eiswanderer"
#: skeleton_wither.lua
msgid "Wither Skeleton"
msgstr "Witherskelett"
#: slime+magma_cube.lua
msgid "Magma Cube"
msgstr "Magmawürfel"
#: slime+magma_cube.lua
msgid "Slime"
msgstr "Schleim"
#: snowman.lua
msgid "Snow Golem"
msgstr "Schneegolem"
#: spider.lua
msgid "Spider"
msgstr "Spinne"
#: spider.lua
msgid "Cave Spider"
msgstr "Höhlenspinne"
#: squid.lua
msgid "Squid"
msgstr "Tintenfisch"
#: vex.lua
msgid "Vex"
msgstr "Plagegeist"
#: villager_evoker.lua
msgid "Evoker"
msgstr "Magier"
#: villager_illusioner.lua
msgid "Illusioner"
msgstr "Illusionist"
#: villager.lua
msgid "Villager"
msgstr "Dorfbewohner"
#: villager_vindicator.lua
msgid "Vindicator"
msgstr "Diener"
#: villager_zombie.lua
msgid "Zombie Villager"
msgstr "Dorfbewohnerzombie"
#: witch.lua
msgid "Witch"
msgstr "Hexe"
#: wither.lua
msgid "Wither"
msgstr "Wither"
#: wolf.lua
msgid "Wolf"
msgstr "Wolf"
#: zombie.lua
msgid "Husk"
msgstr "Wüstenzombie"
#: zombie.lua
msgid "Zombie"
msgstr "Zombie"
#: zombiepig.lua
msgid "Zombie Pigman"
msgstr "Schweinezombie"
#~ msgid ""
#~ "Hold it in your hand and punch once to instantly get back to full health. "
#~ "The totem gets destroyed in the process."
#~ msgstr ""
#~ "Halten Sie es in der Hand und schlagen Sie zu, um sofort auf die volle "
#~ "Gesundheit zu kommen. Das zerstört das Totem."
#~ msgid "Enderman Head (WIP)"
#~ msgstr "Endermankopf (unfertig)"
#~ msgid "Ghast Head (WIP)"
#~ msgstr "Ghastkopf (unfertig)"
#~ msgid "Spider Head (WIP)"
#~ msgstr "Spinnenkopf (unfertig)"
#~ msgid "Zombie Pigman Head (WIP)"
#~ msgstr "Schweinezombiekopf (unfertig)"

View File

@ -0,0 +1,74 @@
# textdomain: mobs_mc
Totem of Undying=Totem der Unsterblichkeit
A totem of undying is a rare artifact which may safe you from certain death.=Ein Totem der Unsterblichkeit ist ein seltenes Artefakt, dass Sie vor dem sicheren Tod bewahren kann.
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=Der Totem funktioniert nur, während Sie ihn halten. Wenn Sie normalerweise tödlich hohen Schaden erhalten, werden Sie vor dem Tod bewahrt und Sie erhalten eine zweite Chance mit 1 TP. Der Totem wird dabei zerstört.
Agent=Akteur
Bat=Fledermaus
Blaze=Lohe
Chicken=Huhn
Cow=Kuh
Mooshroom=Pilzkuh
Creeper=Creeper
Ender Dragon=Enderdrache
Enderman=Enderman
Endermite=Endermilbe
Ghast=Ghast
Elder Guardian=Großer Wächter
Guardian=Wächter
Horse=Pferd
Skeleton Horse=Skelettpferd
Zombie Horse=Zombiepferd
Donkey=Esel
Mule=Maultier
Iron Golem=Eisengolem
Llama=Lama
Ocelot=Ozelot
Parrot=Papagei
Pig=Schwein
Polar Bear=Eisbär
Rabbit=Kaninchen
Killer Bunny=Killerkaninchen
Sheep=Schaf
Shulker=Shulker
Silverfish=Silberfischchen
Skeleton=Skelett
Stray=Eiswanderer
Wither Skeleton=Witherskelett
Magma Cube=Magmakubus
Slime=Schleim
Snow Golem=Schneegolem
Spider=Spinne
Cave Spider=Höhlenspinne
Squid=Tintenfisch
Vex=Plagegeist
Evoker=Magier
Illusioner=Illusionist
Villager=Dorfbewohner
Vindicator=Diener
Zombie Villager=Dorfbewohnerzombie
Witch=Hexe
Wither=Wither
Wolf=Wolf
Husk=Wüstenzombie
Zombie=Zombie
Zombie Pigman=Schweinezombie
Iron Horse Armor=Eisenpferderüstung
Iron horse armor can be worn by horses to increase their protection from harm a bit.=Eine Eisenpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden etwas zu erhöhen.
Golden Horse Armor=Goldpferderüstung
Golden horse armor can be worn by horses to increase their protection from harm.=Eine Goldpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden zu erhöhen.
Diamond Horse Armor=Diamantpferderüstung
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=Eine Diamantpferderüstung kann von Pferden getragen werden, um ihren Schutz vor Schaden beträchtlich zu erhöhen.
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=Platzieren Sie es auf einem Pferd, um die Pferderüstung aufzusetzen. Esel und Maultiere können keine Pferderüstung tragen.
Farmer=Bauer
Fisherman=Fischer
Fletcher=Pfeilmacher
Shepherd=Schäfer
Librarian=Bibliothekar
Cartographer=Kartograph
Armorer=Rüstungsschmied
Leatherworker=Lederarbeiter
Butcher=Metzger
Weapon Smith=Waffenschmied
Tool Smith=Werkzeugschmied
Cleric=Priester
Nitwit=Dorftrottel

View File

@ -1,647 +0,0 @@
# SOME DESCRIPTIVE TITLE.
# Copyright (C) YEAR THE PACKAGE'S COPYRIGHT HOLDER
# This file is distributed under the same license as the PACKAGE package.
# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
#
#, fuzzy
msgid ""
msgstr ""
"Project-Id-Version: PACKAGE VERSION\n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2018-01-25 18:45+0100\n"
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
"Language-Team: LANGUAGE <LL@li.org>\n"
"Language: \n"
"MIME-Version: 1.0\n"
"Content-Type: text/plain; charset=CHARSET\n"
"Content-Transfer-Encoding: 8bit\n"
#: 1_items_default.lua
msgid "Blaze Rod"
msgstr ""
#: 1_items_default.lua
msgid "This is a crafting component dropped from dead blazes."
msgstr ""
#: 1_items_default.lua
msgid "Blaze Powder"
msgstr ""
#: 1_items_default.lua
msgid "This item is mainly used for brewing potions and crafting."
msgstr ""
#: 1_items_default.lua
msgid "Raw Chicken"
msgstr ""
#: 1_items_default.lua
msgid ""
"Raw chicken is a food item and can be eaten safely. Cooking it will increase "
"its nutritional value."
msgstr ""
#: 1_items_default.lua
msgid "Cooked Chicken"
msgstr ""
#: 1_items_default.lua
msgid "A cooked chicken is a healthy food item which can be eaten."
msgstr ""
#: 1_items_default.lua
msgid "Feather"
msgstr ""
#: 1_items_default.lua
msgid "Feathers are used in crafting and are dropped from chickens."
msgstr ""
#: 1_items_default.lua
msgid "Raw Beef"
msgstr ""
#: 1_items_default.lua
msgid ""
"Raw beef is the flesh from cows and can be eaten safely. Cooking it will "
"greatly increase its nutritional value."
msgstr ""
#: 1_items_default.lua
msgid "Steak"
msgstr ""
#: 1_items_default.lua
msgid "Steak is cooked beef from cows and can be eaten."
msgstr ""
#: 1_items_default.lua
msgid "Milk"
msgstr ""
#: 1_items_default.lua
msgid "Milk is a food item obtained by using a bucket on a cow."
msgstr ""
#: 1_items_default.lua
msgid "Bowl"
msgstr ""
#: 1_items_default.lua
msgid "Bowls are mainly used to hold tasty soups."
msgstr ""
#: 1_items_default.lua
msgid "Mushroom Stew"
msgstr ""
#: 1_items_default.lua
msgid "Mushroom stew is a healthy soup."
msgstr ""
#: 1_items_default.lua
msgid "Dragon Egg"
msgstr ""
#: 1_items_default.lua
msgid "Eye of Ender"
msgstr ""
#: 1_items_default.lua
msgid "Ghast Tear"
msgstr ""
#: 1_items_default.lua
msgid ""
"A ghast tear is an item used in potion brewing. It is dropped from dead "
"ghasts."
msgstr ""
#: 1_items_default.lua
msgid "Saddle"
msgstr ""
#: 1_items_default.lua
msgid ""
"Saddles can be put on horses, donkeys, mules and pigs in order to mount them."
msgstr ""
#: 1_items_default.lua
msgid ""
"Rightclick an animal while holding a saddle to put on the saddle. You can "
"now mount the animal by rightclicking it again."
msgstr ""
#: 1_items_default.lua
msgid ""
"Rightclick a horse to put on the horse armor. Donkeys and mules can't wear "
"horse armor."
msgstr ""
#: 1_items_default.lua
msgid "Iron Horse Armor"
msgstr ""
#: 1_items_default.lua
msgid ""
"Iron horse armor can be worn by horses to increase their protection from "
"harm a bit."
msgstr ""
#: 1_items_default.lua
msgid "Golden Horse Armor"
msgstr ""
#: 1_items_default.lua
msgid ""
"Golden horse armor can be worn by horses to increase their protection from "
"harm."
msgstr ""
#: 1_items_default.lua
msgid "Diamond Horse Armor"
msgstr ""
#: 1_items_default.lua
msgid ""
"Diamond horse armor can be worn by horses to greatly increase their "
"protection from harm."
msgstr ""
#: 1_items_default.lua
msgid "Raw Porkchop"
msgstr ""
#: 1_items_default.lua
msgid ""
"A raw porkchop is the flesh from a pig and can be eaten safely. Cooking it "
"will greatly increase its nutritional value."
msgstr ""
#: 1_items_default.lua
msgid "Cooked Porkchop"
msgstr ""
#: 1_items_default.lua
msgid "Carrot on a Stick"
msgstr ""
#: 1_items_default.lua
msgid ""
"A carrot on a stick can be used on saddled pigs to ride them. Pigs will also "
"follow anyone who holds a carrot on a stick near them."
msgstr ""
#: 1_items_default.lua
msgid ""
"Rightclick a saddled pig with the carrot on a stick to mount it. You can now "
"ride it like a horse."
msgstr ""
#: 1_items_default.lua
msgid "Raw Rabbit"
msgstr ""
#: 1_items_default.lua
msgid ""
"Raw rabbit is a food item from a dead rabbit. It can be eaten safely. "
"Cooking it will increase its nutritional value."
msgstr ""
#: 1_items_default.lua
msgid "Cooked Rabbit"
msgstr ""
#: 1_items_default.lua
msgid "This is a food item which can be eaten."
msgstr ""
#: 1_items_default.lua
msgid "Rabbit Hide"
msgstr ""
#: 1_items_default.lua
msgid "Rabbit hide is used to create leather."
msgstr ""
#: 1_items_default.lua
msgid "Rabbit's Foot"
msgstr ""
#: 1_items_default.lua
msgid "This item is used in brewing."
msgstr ""
#: 1_items_default.lua
msgid "Raw Mutton"
msgstr ""
#: 1_items_default.lua
msgid ""
"Raw mutton is the flesh from a sheep and can be eaten safely. Cooking it "
"will greatly increase its nutritional value."
msgstr ""
#: 1_items_default.lua
msgid "Cooked Mutton"
msgstr ""
#: 1_items_default.lua
msgid "Cooked mutton is the cooked flesh from a sheep and is used as food."
msgstr ""
#: 1_items_default.lua
msgid "Shulker Shell"
msgstr ""
#: 1_items_default.lua
msgid ""
"Shulker shells are used in crafting. They are dropped from dead shulkers."
msgstr ""
#: 1_items_default.lua
msgid "Magma Cream"
msgstr ""
#: 1_items_default.lua
msgid "Magma cream is a crafting component."
msgstr ""
#: 1_items_default.lua
msgid "Slimeball"
msgstr ""
#: 1_items_default.lua
msgid "Slimeballs are used in crafting. They are dropped from slimes."
msgstr ""
#: 1_items_default.lua
msgid "Spider Eye"
msgstr ""
#: 1_items_default.lua
msgid ""
"Spider eyes are used mainly in crafting and brewing. Spider eyes can be "
"eaten, but they poison you and reduce your health by 2 hit points."
msgstr ""
#: 1_items_default.lua
msgid "Totem of Undying"
msgstr ""
#: 1_items_default.lua
msgid ""
"A totem of undying is a rare artifact which may safe you from certain death."
msgstr ""
#: 1_items_default.lua
msgid ""
"The totem only works while you hold it in your hand. If you receive fatal "
"damage, you are saved from death and you get a second chance with 1 HP. The "
"totem is destroyed in the process, however."
msgstr ""
#: 1_items_default.lua
msgid "Rotten Flesh"
msgstr ""
#: 1_items_default.lua
msgid ""
"Yuck! This piece of flesh clearly has seen better days. Eating it will only "
"poison you and reduces your health by 4 hit points. But tamed wolves can eat "
"it just fine."
msgstr ""
#: 1_items_default.lua
msgid "Nether Star"
msgstr ""
#: 1_items_default.lua
msgid "A nether star is a crafting component. It is dropped from the Wither."
msgstr ""
#: 1_items_default.lua
msgid "Bone"
msgstr ""
#: 1_items_default.lua
msgid ""
"Bones can be used to tame wolves so they will protect you. They are also "
"useful as a crafting ingredient."
msgstr ""
#: 1_items_default.lua
msgid ""
"Hold the bone in your hand near wolves to attract them. Rightclick the wolf "
"to give it a bone and tame it."
msgstr ""
#: 2_throwing.lua
msgid "Arrow"
msgstr ""
#: 2_throwing.lua
msgid "Arrows are ammunition for bows."
msgstr ""
#: 2_throwing.lua
msgid ""
"To use arrows as ammunition for a bow, put them in the inventory slot "
"following the bow. Slots are counted left to right, top to bottom."
msgstr ""
#: 2_throwing.lua
msgid "Bow"
msgstr ""
#: 2_throwing.lua
msgid "Bows are ranged weapons to shoot arrows at your foes."
msgstr ""
#: 2_throwing.lua
msgid ""
"To use the bow, you first need to have at least one arrow in slot following "
"the bow. Leftclick to shoot. Each hit deals 3 damage."
msgstr ""
#: 2_throwing.lua
msgid "Egg"
msgstr ""
#: 2_throwing.lua
msgid ""
"Eggs can be thrown and break on impact. There is a small chance that 1 or "
"even 4 chicks will pop out"
msgstr ""
#: 2_throwing.lua
msgid "Snowball"
msgstr ""
#: 2_throwing.lua
msgid ""
"Snowballs can be thrown at your enemies. A snowball deals 3 damage to "
"blazes, but is harmless to anything else."
msgstr ""
#: 4_heads.lua
msgid "Zombie Head"
msgstr ""
#: 4_heads.lua
msgid ""
"A zombie head is a small decorative block which resembles the head of a "
"zombie."
msgstr ""
#: 4_heads.lua
msgid "Creeper Head"
msgstr ""
#: 4_heads.lua
msgid ""
"A creeper head is a small decorative block which resembles the head of a "
"creeper."
msgstr ""
#: 4_heads.lua
msgid "Skeleton Skull"
msgstr ""
#: 4_heads.lua
msgid ""
"A skeleton skull is a small decorative block which resembles the skull of a "
"skeleton."
msgstr ""
#: 4_heads.lua
msgid "Wither Skeleton Skull"
msgstr ""
#: 4_heads.lua
msgid ""
"A wither skeleton skull is a small decorative block which resembles the "
"skull of a wither skeleton."
msgstr ""
#: agent.lua
msgid "Agent"
msgstr ""
#: bat.lua
msgid "Bat"
msgstr ""
#: blaze.lua
msgid "Blaze"
msgstr ""
#: chicken.lua
msgid "Chicken"
msgstr ""
#: cow+mooshroom.lua
msgid "Cow"
msgstr ""
#: cow+mooshroom.lua
msgid "Mooshroom"
msgstr ""
#: creeper.lua
msgid "Creeper"
msgstr ""
#: ender_dragon.lua
msgid "Ender Dragon"
msgstr ""
#: enderman.lua
msgid "Enderman"
msgstr ""
#: endermite.lua
msgid "Endermite"
msgstr ""
#: ghast.lua
msgid "Ghast"
msgstr ""
#: guardian_elder.lua
msgid "Elder Guardian"
msgstr ""
#: guardian.lua
msgid "Guardian"
msgstr ""
#: horse.lua
msgid "Horse"
msgstr ""
#: horse.lua
msgid "Skeleton Horse"
msgstr ""
#: horse.lua
msgid "Zombie Horse"
msgstr ""
#: horse.lua
msgid "Donkey"
msgstr ""
#: horse.lua
msgid "Mule"
msgstr ""
#: iron_golem.lua
msgid "Iron Golem"
msgstr ""
#: llama.lua
msgid "Llama"
msgstr ""
#: ocelot.lua
msgid "Ocelot"
msgstr ""
#: parrot.lua
msgid "Parrot"
msgstr ""
#: pig.lua
msgid "Pig"
msgstr ""
#: polar_bear.lua
msgid "Polar Bear"
msgstr ""
#: rabbit.lua
msgid "Rabbit"
msgstr ""
#: rabbit.lua
msgid "Killer Bunny"
msgstr ""
#: sheep.lua
msgid "Sheep"
msgstr ""
#: shulker.lua
msgid "Shulker"
msgstr ""
#: silverfish.lua
msgid "Silverfish"
msgstr ""
#: silverfish.lua
msgid "Stone Monster Egg"
msgstr ""
#: silverfish.lua
msgid "Cobblestone Monster Egg"
msgstr ""
#: silverfish.lua
msgid "Mossy Cobblestone Monster Egg"
msgstr ""
#: silverfish.lua
msgid "Stone Brick Monster Egg"
msgstr ""
#: silverfish.lua
msgid "Stone Block Monster Egg"
msgstr ""
#: skeleton+stray.lua
msgid "Skeleton"
msgstr ""
#: skeleton+stray.lua
msgid "Stray"
msgstr ""
#: skeleton_wither.lua
msgid "Wither Skeleton"
msgstr ""
#: slime+magma_cube.lua
msgid "Magma Cube"
msgstr ""
#: slime+magma_cube.lua
msgid "Slime"
msgstr ""
#: snowman.lua
msgid "Snow Golem"
msgstr ""
#: spider.lua
msgid "Spider"
msgstr ""
#: spider.lua
msgid "Cave Spider"
msgstr ""
#: squid.lua
msgid "Squid"
msgstr ""
#: vex.lua
msgid "Vex"
msgstr ""
#: villager_evoker.lua
msgid "Evoker"
msgstr ""
#: villager_illusioner.lua
msgid "Illusioner"
msgstr ""
#: villager.lua
msgid "Villager"
msgstr ""
#: villager_vindicator.lua
msgid "Vindicator"
msgstr ""
#: villager_zombie.lua
msgid "Zombie Villager"
msgstr ""
#: witch.lua
msgid "Witch"
msgstr ""
#: wither.lua
msgid "Wither"
msgstr ""
#: wolf.lua
msgid "Wolf"
msgstr ""
#: zombie.lua
msgid "Husk"
msgstr ""
#: zombie.lua
msgid "Zombie"
msgstr ""
#: zombiepig.lua
msgid "Zombie Pigman"
msgstr ""

View File

@ -0,0 +1,74 @@
# textdomain: mobs_mc
Totem of Undying=
A totem of undying is a rare artifact which may safe you from certain death.=
The totem only works while you hold it in your hand. If you receive fatal damage, you are saved from death and you get a second chance with 1 HP. The totem is destroyed in the process, however.=
Agent=
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=
Iron Horse Armor=
Iron horse armor can be worn by horses to increase their protection from harm a bit.=
Golden Horse Armor=
Golden horse armor can be worn by horses to increase their protection from harm.=
Diamond Horse Armor=
Diamond horse armor can be worn by horses to greatly increase their protection from harm.=
Place it on a horse to put on the horse armor. Donkeys and mules can't wear horse armor.=
Farmer=
Fisherman=
Fletcher=
Shepherd=
Librarian=
Cartographer=
Armorer=
Leatherworker=
Butcher=
Weapon Smith=
Tool Smith=
Cleric=
Nitwit=

View File

@ -3,9 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### OCELOT AND CAT --################### OCELOT AND CAT
@ -44,9 +42,6 @@ local ocelot = {
run_velocity = 3, run_velocity = 3,
floats = 1, floats = 1,
runaway = true, runaway = true,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
fear_height = 4, fear_height = 4,
sounds = { sounds = {

View File

@ -3,12 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### PARROT --################### PARROT
@ -49,9 +44,6 @@ mobs:register_mob("mobs_mc:parrot", {
--fly_end = 45, --fly_end = 45,
}, },
walk_chance = 100, walk_chance = 100,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
fall_speed = -2.25, fall_speed = -2.25,
attack_type = "dogfight", attack_type = "dogfight",

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:pig", { mobs:register_mob("mobs_mc:pig", {
type = "animal", type = "animal",
@ -27,9 +25,6 @@ mobs:register_mob("mobs_mc:pig", {
min = 1, min = 1,
max = 3,}, max = 3,},
}, },
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
sounds = { sounds = {
random = "mobs_pig", random = "mobs_pig",
@ -59,7 +54,7 @@ mobs:register_mob("mobs_mc:pig", {
self.max_speed_reverse = 2 self.max_speed_reverse = 2
self.accel = 4 self.accel = 4
self.terrain_type = 3 self.terrain_type = 3
self.driver_attach_at = {x = 0.0, y = 6.75, z = -1.5} self.driver_attach_at = {x = 0.0, y = 2.75, z = -1.5}
self.driver_eye_offset = {x = 0, y = 3, z = 0} self.driver_eye_offset = {x = 0, y = 3, z = 0}
self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y} self.driver_scale = {x = 1/self.visual_size.x, y = 1/self.visual_size.y}
end end

View File

@ -1,10 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### POLARBEAR --################### POLARBEAR
@ -18,6 +14,7 @@ mobs:register_mob("mobs_mc:polar_bear", {
stepheight = 1.2, stepheight = 1.2,
hp_min = 30, hp_min = 30,
hp_max = 30, hp_max = 30,
breath_max = -1,
collisionbox = {-0.7, -0.01, -0.7, 0.7, 1.39, 0.7}, collisionbox = {-0.7, -0.01, -0.7, 0.7, 1.39, 0.7},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_polarbear.b3d", mesh = "mobs_mc_polarbear.b3d",
@ -45,10 +42,7 @@ mobs:register_mob("mobs_mc:polar_bear", {
max = 2,}, max = 2,},
}, },
water_damage = 0,
floats = 1, floats = 1,
lava_damage = 5,
light_damage = 0,
fear_height = 4, fear_height = 4,
-- TODO: sounds -- TODO: sounds
animation = { animation = {

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local rabbit = { local rabbit = {
type = "animal", type = "animal",
@ -37,9 +35,6 @@ local rabbit = {
-- TODO: Drop rabbit's foot when it's useful -- TODO: Drop rabbit's foot when it's useful
--{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1}, --{name = mobs_mc.items.rabbit_foot, chance = 10, min = 1, max = 1},
}, },
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
animation = { animation = {
speed_normal = 25, speed_run = 50, speed_normal = 25, speed_run = 50,

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### SHEEP --################### SHEEP
@ -32,6 +30,9 @@ if minetest.get_modpath("mcl_wool") ~= nil then
end end
local sheep_texture = function(color_group) local sheep_texture = function(color_group)
if not color_group then
color_group = "unicolor_white"
end
return { return {
"mobs_mc_sheep_fur.png^[colorize:"..colors[color_group][2], "mobs_mc_sheep_fur.png^[colorize:"..colors[color_group][2],
"mobs_mc_sheep.png", "mobs_mc_sheep.png",
@ -66,9 +67,6 @@ mobs:register_mob("mobs_mc:sheep", {
min = 1, min = 1,
max = 1,}, max = 1,},
}, },
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
sounds = { sounds = {
random = "mobs_sheep", random = "mobs_sheep",
@ -184,6 +182,10 @@ mobs:register_mob("mobs_mc:sheep", {
minetest.log("verbose", "[mobs_mc] " ..item:get_name() .. " " .. minetest.get_item_group(item:get_name(), "dye")) minetest.log("verbose", "[mobs_mc] " ..item:get_name() .. " " .. minetest.get_item_group(item:get_name(), "dye"))
for group, colordata in pairs(colors) do for group, colordata in pairs(colors) do
if minetest.get_item_group(item:get_name(), group) == 1 then if minetest.get_item_group(item:get_name(), group) == 1 then
if not minetest.settings:get_bool("creative_mode") then
item:take_item()
clicker:set_wielded_item(item)
end
self.base_texture = sheep_texture(group) self.base_texture = sheep_texture(group)
self.object:set_properties({ self.object:set_properties({
textures = self.base_texture, textures = self.base_texture,
@ -229,6 +231,7 @@ mobs:register_mob("mobs_mc:sheep", {
local groups = minetest.registered_items[new_dye].groups local groups = minetest.registered_items[new_dye].groups
for k, v in pairs(groups) do for k, v in pairs(groups) do
if string.sub(k, 1, 9) == "unicolor_" then if string.sub(k, 1, 9) == "unicolor_" then
ent_c.color = k
ent_c.base_texture = sheep_texture(k) ent_c.base_texture = sheep_texture(k)
mixed = true mixed = true
break break
@ -240,11 +243,12 @@ mobs:register_mob("mobs_mc:sheep", {
if not mixed then if not mixed then
-- Choose color randomly from one of the parents -- Choose color randomly from one of the parents
local p = math.random(1, 2) local p = math.random(1, 2)
if p == 1 then if p == 1 and color1 then
ent_c.base_texture = sheep_texture(color1) ent_c.color = color1
else else
ent_c.base_texture = sheep_texture(color2) ent_c.color = color2
end end
ent_c.base_texture = sheep_texture(ent_c.color)
end end
child:set_properties({textures = ent_c.base_texture}) child:set_properties({textures = ent_c.base_texture})
ent_c.initial_color_set = true ent_c.initial_color_set = true

View File

@ -3,11 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### SHULKER --################### SHULKER
@ -48,12 +44,8 @@ mobs:register_mob("mobs_mc:shulker", {
run_start = 0, run_end = 45, run_start = 0, run_end = 45,
punch_start = 80, punch_end = 100, punch_start = 80, punch_end = 100,
}, },
blood_amount = 0,
view_range = 16, view_range = 16,
fear_height = 4, fear_height = 4,
water_damage = 1,
lava_damage = 4,
light_damage = 0,
}) })
-- bullet arrow (weapon) -- bullet arrow (weapon)
@ -70,8 +62,8 @@ mobs:register_arrow("mobs_mc:shulkerbullet", {
}, nil) }, nil)
end, end,
hit_mob = function(self, player) hit_mob = function(self, mob)
player:punch(self.object, 1.0, { mob:punch(self.object, 1.0, {
full_punch_interval = 1.0, full_punch_interval = 1.0,
damage_groups = {fleshy = 4}, damage_groups = {fleshy = 4},
}, nil) }, nil)
@ -82,7 +74,7 @@ mobs:register_arrow("mobs_mc:shulkerbullet", {
}) })
mobs:register_egg("mobs_mc:shulker", S("Shulker"), "mobs_mc_spawn_icon_shulker.png", 0) mobs:register_egg("mobs_mc:shulker", S("Schulker"), "mobs_mc_spawn_icon_shulker.png", 0)
mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max) mobs:spawn_specific("mobs_mc:shulker", mobs_mc.spawn.end_city, {"air"}, 0, minetest.LIGHT_MAX+1, 30, 5000, 2, mobs_mc.spawn_height.end_min, mobs_mc.spawn_height.end_max)

View File

@ -2,9 +2,7 @@
--################### SILVERFISH --################### SILVERFISH
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:silverfish", { mobs:register_mob("mobs_mc:silverfish", {
type = "monster", type = "monster",
@ -31,9 +29,6 @@ mobs:register_mob("mobs_mc:silverfish", {
walk_velocity = 0.6, walk_velocity = 0.6,
run_velocity = 2, run_velocity = 2,
jump = true, jump = true,
water_damage = 1,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
replace_what = mobs_mc.replace.silverfish, replace_what = mobs_mc.replace.silverfish,
replace_rate = 2, replace_rate = 2,
@ -47,7 +42,6 @@ mobs:register_mob("mobs_mc:silverfish", {
attack_type = "dogfight", attack_type = "dogfight",
damage = 1, damage = 1,
reach = 1, reach = 1,
blood_amount = 0,
}) })
mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0) mobs:register_egg("mobs_mc:silverfish", S("Silverfish"), "mobs_mc_spawn_icon_silverfish.png", 0)
@ -60,7 +54,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
end end
end end
minetest.register_node("mobs_mc:monster_egg_stone", { minetest.register_node("mobs_mc:monster_egg_stone", {
description = S("Stone Monster Egg"), description = "Stone Monster Egg",
tiles = {"default_stone.png"}, tiles = {"default_stone.png"},
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
drop = '', drop = '',
@ -70,7 +64,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
}) })
minetest.register_node("mobs_mc:monster_egg_cobble", { minetest.register_node("mobs_mc:monster_egg_cobble", {
description = S("Cobblestone Monster Egg"), description = "Cobblestone Monster Egg",
tiles = {"default_cobble.png"}, tiles = {"default_cobble.png"},
is_ground_content = false, is_ground_content = false,
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
@ -80,7 +74,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
}) })
minetest.register_node("mobs_mc:monster_egg_mossycobble", { minetest.register_node("mobs_mc:monster_egg_mossycobble", {
description = S("Mossy Cobblestone Monster Egg"), description = "Mossy Cobblestone Monster Egg",
tiles = {"default_mossycobble.png"}, tiles = {"default_mossycobble.png"},
is_ground_content = false, is_ground_content = false,
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},
@ -90,7 +84,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
}) })
minetest.register_node("mobs_mc:monster_egg_stonebrick", { minetest.register_node("mobs_mc:monster_egg_stonebrick", {
description = S("Stone Brick Monster Egg"), description = "Stone Brick Monster Egg",
paramtype2 = "facedir", paramtype2 = "facedir",
place_param2 = 0, place_param2 = 0,
tiles = {"default_stone_brick.png"}, tiles = {"default_stone_brick.png"},
@ -102,7 +96,7 @@ if minetest.get_modpath("default") and mobs_mc.create_monster_egg_nodes then
}) })
minetest.register_node("mobs_mc:monster_egg_stone_block", { minetest.register_node("mobs_mc:monster_egg_stone_block", {
description = S("Stone Block Monster Egg"), description = "Stone Block Monster Egg",
tiles = {"default_stone_block.png"}, tiles = {"default_stone_block.png"},
is_ground_content = false, is_ground_content = false,
groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1}, groups = {oddly_breakable_by_hand = 2, spawns_silverfish = 1},

View File

@ -3,12 +3,8 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname()) local mod_bows = minetest.get_modpath("mcl_bows") ~= nil
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### SKELETON --################### SKELETON
@ -20,6 +16,7 @@ local skeleton = {
type = "monster", type = "monster",
hp_min = 20, hp_min = 20,
hp_max = 20, hp_max = 20,
breath_max = -1,
collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3}, collisionbox = {-0.3, -0.01, -0.3, 0.3, 1.98, 0.3},
pathfinding = 1, pathfinding = 1,
group_attack = true, group_attack = true,
@ -35,7 +32,6 @@ local skeleton = {
random = "mobs_mc_skeleton_random", random = "mobs_mc_skeleton_random",
death = "mobs_mc_skeleton_death", death = "mobs_mc_skeleton_death",
damage = "mobs_mc_skeleton_hurt", damage = "mobs_mc_skeleton_hurt",
shoot_attack = "mcl_bows_bow_shoot",
distance = 16, distance = 16,
}, },
walk_velocity = 1.2, walk_velocity = 1.2,
@ -78,18 +74,22 @@ local skeleton = {
die_speed = 15, die_speed = 15,
die_loop = false, die_loop = false,
}, },
water_damage = 1,
lava_damage = 4,
sunlight_damage = 1, sunlight_damage = 1,
view_range = 16, view_range = 16,
fear_height = 4, fear_height = 4,
attack_type = "dogshoot", attack_type = "dogshoot",
arrow = "mobs_mc:arrow_entity", arrow = "mcl_bows:arrow_entity",
shoot_interval = 2.5, shoot_arrow = function(self, pos, dir)
shoot_offset = 1, if mod_bows then
-- 2-4 damage per arrow
local dmg = math.max(4, math.random(2, 8))
mcl_bows.shoot_arrow("mcl_bows:arrow", pos, dir, self.object:get_yaw(), self.object, nil, dmg)
end
end,
shoot_interval = 2,
shoot_offset = 1.5,
dogshoot_switch = 1, dogshoot_switch = 1,
dogshoot_count_max =1.8, dogshoot_count_max =1.8,
blood_amount = 0,
} }
mobs:register_mob("mobs_mc:skeleton", skeleton) mobs:register_mob("mobs_mc:skeleton", skeleton)

View File

@ -3,9 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### WITHER SKELETON --################### WITHER SKELETON
@ -15,6 +13,7 @@ mobs:register_mob("mobs_mc:witherskeleton", {
type = "monster", type = "monster",
hp_min = 20, hp_min = 20,
hp_max = 20, hp_max = 20,
breath_max = -1,
pathfinding = 1, pathfinding = 1,
group_attack = true, group_attack = true,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 2.39, 0.35}, collisionbox = {-0.35, -0.01, -0.35, 0.35, 2.39, 0.35},
@ -76,12 +75,12 @@ mobs:register_mob("mobs_mc:witherskeleton", {
}, },
water_damage = 0, water_damage = 0,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
light_damage = 0, light_damage = 0,
view_range = 16, view_range = 16,
attack_type = "dogfight", attack_type = "dogfight",
dogshoot_switch = 1, dogshoot_switch = 1,
dogshoot_count_max =0.5, dogshoot_count_max =0.5,
blood_amount = 0,
fear_height = 4, fear_height = 4,
}) })

View File

@ -1,8 +1,6 @@
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
-- Returns a function that spawns children in a circle around pos. -- Returns a function that spawns children in a circle around pos.
-- To be used as on_die callback. -- To be used as on_die callback.
@ -60,7 +58,7 @@ end
local slime_big = { local slime_big = {
type = "monster", type = "monster",
pathfinding = 1, pathfinding = 1,
group_attack = true, group_attack = { "mobs_mc:slime_big", "mobs_mc:slime_small", "mobs_mc:slime_tiny" },
hp_min = 16, hp_min = 16,
hp_max = 16, hp_max = 16,
collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02}, collisionbox = {-1.02, -0.01, -1.02, 1.02, 2.03, 1.02},
@ -68,7 +66,6 @@ local slime_big = {
textures = {{"mobs_mc_slime.png"}}, textures = {{"mobs_mc_slime.png"}},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_slime.b3d", mesh = "mobs_mc_slime.b3d",
blood_texture ="mobs_mc_slime_blood.png",
makes_footstep_sound = true, makes_footstep_sound = true,
sounds = { sounds = {
jump = "green_slime_jump", jump = "green_slime_jump",
@ -96,9 +93,6 @@ local slime_big = {
death_start = 88, death_start = 88,
death_end = 118, death_end = 118,
}, },
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fall_damage = 0, fall_damage = 0,
view_range = 16, view_range = 16,
attack_type = "dogfight", attack_type = "dogfight",
@ -109,13 +103,14 @@ local slime_big = {
walk_chance = 0, walk_chance = 0,
jump_height = 5.2, jump_height = 5.2,
jump_chance = 100, jump_chance = 100,
fear_height = 60, 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", 4, 1.0, 1.5)
} }
mobs:register_mob("mobs_mc:slime_big", slime_big) mobs:register_mob("mobs_mc:slime_big", slime_big)
local slime_small = table.copy(slime_big) local slime_small = table.copy(slime_big)
slime_small.sounds.base_pitch = 1.15
slime_small.hp_min = 4 slime_small.hp_min = 4
slime_small.hp_max = 4 slime_small.hp_max = 4
slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51} slime_small.collisionbox = {-0.51, -0.01, -0.51, 0.51, 1.00, 0.51}
@ -130,6 +125,7 @@ slime_small.on_die = spawn_children_on_die("mobs_mc:slime_tiny", 4, 0.6, 1.0)
mobs:register_mob("mobs_mc:slime_small", slime_small) mobs:register_mob("mobs_mc:slime_small", slime_small)
local slime_tiny = table.copy(slime_big) local slime_tiny = table.copy(slime_big)
slime_tiny.sounds.base_pitch = 1.3
slime_tiny.hp_min = 1 slime_tiny.hp_min = 1
slime_tiny.hp_max = 1 slime_tiny.hp_max = 1
slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} slime_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}
@ -168,7 +164,6 @@ local magma_cube_big = {
textures = {{ "mobs_mc_magmacube.png" }}, textures = {{ "mobs_mc_magmacube.png" }},
visual = "mesh", visual = "mesh",
mesh = "mobs_mc_magmacube.b3d", mesh = "mobs_mc_magmacube.b3d",
blood_texture = "mobs_mc_magmacube_blood.png",
makes_footstep_sound = true, makes_footstep_sound = true,
sounds = { sounds = {
jump = "mobs_mc_magma_cube_big", jump = "mobs_mc_magma_cube_big",
@ -204,6 +199,7 @@ local magma_cube_big = {
}, },
water_damage = 0, water_damage = 0,
lava_damage = 0, lava_damage = 0,
fire_damage = 0,
light_damage = 0, light_damage = 0,
fall_damage = 0, fall_damage = 0,
view_range = 16, view_range = 16,
@ -213,7 +209,7 @@ local magma_cube_big = {
jump_height = 8, jump_height = 8,
walk_chance = 0, walk_chance = 0,
jump_chance = 100, jump_chance = 100,
fear_height = 100000, 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", 3, 0.8, 1.5)
} }
@ -241,6 +237,7 @@ 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)
magma_cube_tiny.sounds.jump = "mobs_mc_magma_cube_small" magma_cube_tiny.sounds.jump = "mobs_mc_magma_cube_small"
magma_cube_tiny.sounds.death = "mobs_mc_magma_cube_small" magma_cube_tiny.sounds.death = "mobs_mc_magma_cube_small"
magma_cube_tiny.sounds.base_pitch = 1.25
magma_cube_tiny.hp_min = 1 magma_cube_tiny.hp_min = 1
magma_cube_tiny.hp_max = 1 magma_cube_tiny.hp_max = 1
magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505} magma_cube_tiny.collisionbox = {-0.2505, -0.01, -0.2505, 0.2505, 0.50, 0.2505}

View File

@ -3,12 +3,12 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail local snow_trail_frequency = 0.5 -- Time in seconds for checking to add a new snow trail
local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false local mobs_griefing = minetest.settings:get_bool("mobs_griefing") ~= false
local mod_throwing = minetest.get_modpath("mcl_throwing") ~= nil
local gotten_texture = { local gotten_texture = {
"mobs_mc_snowman.png", "mobs_mc_snowman.png",
@ -29,7 +29,7 @@ mobs:register_mob("mobs_mc:snowman", {
view_range = 10, view_range = 10,
fall_damage = 0, fall_damage = 0,
water_damage = 4, water_damage = 4,
lava_damage = 20, rain_damage = 4,
attacks_monsters = true, attacks_monsters = true,
collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35}, collisionbox = {-0.35, -0.01, -0.35, 0.35, 1.89, 0.35},
visual = "mesh", visual = "mesh",
@ -52,7 +52,12 @@ mobs:register_mob("mobs_mc:snowman", {
jump = true, jump = true,
makes_footstep_sound = true, makes_footstep_sound = true,
attack_type = "shoot", attack_type = "shoot",
arrow = "mobs_mc:snowball_entity", arrow = "mcl_throwing:snowball_entity",
shoot_arrow = function(self, pos, dir)
if mod_throwing then
mcl_throwing.throw("mcl_throwing:snowball", pos, dir, nil, self.object)
end
end,
shoot_interval = 1, shoot_interval = 1,
shoot_offset = 1, shoot_offset = 1,
animation = { animation = {
@ -70,7 +75,6 @@ mobs:register_mob("mobs_mc:snowman", {
die_speed = 25, die_speed = 25,
die_loop = false, die_loop = false,
}, },
blood_amount = 0,
do_custom = function(self, dtime) do_custom = function(self, dtime)
if not mobs_griefing then if not mobs_griefing then
return return
@ -120,8 +124,6 @@ mobs:register_mob("mobs_mc:snowman", {
end end
end end
end, end,
rain_damage = 4,
}) })
-- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function -- This is to be called when a pumpkin or jack'o lantern has been placed. Recommended: In the on_construct function

Binary file not shown.

View File

@ -3,11 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--dofile(minetest.get_modpath("mobs").."/api.lua")
--################### --###################
--################### SPIDER --################### SPIDER
@ -50,9 +46,6 @@ local spider = {
{name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1,}, {name = mobs_mc.items.spider_eye, chance = 3, min = 1, max = 1,},
}, },
specific_attack = { "player", "mobs_mc:iron_golem" }, specific_attack = { "player", "mobs_mc:iron_golem" },
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fear_height = 4, fear_height = 4,
animation = { animation = {
stand_speed = 10, stand_speed = 10,
@ -65,7 +58,6 @@ local spider = {
run_start = 0, run_start = 0,
run_end = 20, run_end = 20,
}, },
blood_amount = 0,
} }
mobs:register_mob("mobs_mc:spider", spider) mobs:register_mob("mobs_mc:spider", spider)

View File

@ -4,9 +4,7 @@
--################### SQUID --################### SQUID
--################### --###################
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
mobs:register_mob("mobs_mc:squid", { mobs:register_mob("mobs_mc:squid", {
type = "animal", type = "animal",
@ -47,15 +45,12 @@ mobs:register_mob("mobs_mc:squid", {
stepheight = 0.1, stepheight = 0.1,
fly = true, fly = true,
fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source }, fly_in = { mobs_mc.items.water_source, mobs_mc.items.river_water_source },
breathes_in_water = true,
jump = false, jump = false,
fall_speed = 0.5, fall_speed = 0.5,
view_range = 16, view_range = 16,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
runaway = true, runaway = true,
fear_height = 4, fear_height = 4,
blood_texture = "mobs_mc_squid_blood.png",
}) })
-- TODO: Behaviour: squirt -- TODO: Behaviour: squirt

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 573 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 306 B

After

Width:  |  Height:  |  Size: 547 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 312 B

After

Width:  |  Height:  |  Size: 561 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 302 B

After

Width:  |  Height:  |  Size: 558 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 86 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 417 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 444 B

After

Width:  |  Height:  |  Size: 440 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 82 B

View File

@ -3,9 +3,7 @@
--made for MC like Survival game --made for MC like Survival game
--License for code WTFPL and otherwise stated in readmes --License for code WTFPL and otherwise stated in readmes
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname())
local S, NS = dofile(MP.."/intllib.lua")
--################### --###################
--################### VEX --################### VEX
@ -86,9 +84,6 @@ mobs:register_mob("mobs_mc:vex", {
end end
end end
end, end,
water_damage = 0,
lava_damage = 4,
light_damage = 0,
fly = true, fly = true,
fly_in = {"air"}, fly_in = {"air"},
}) })

View File

@ -19,9 +19,8 @@
-- TODO: Internal inventory, pick up items, trade with other villagers -- TODO: Internal inventory, pick up items, trade with other villagers
-- TODO: Farm stuff -- TODO: Farm stuff
-- intllib local S = minetest.get_translator("mobs_mc")
local MP = minetest.get_modpath(minetest.get_current_modname()) local N = function(s) return s end
local S, NS = dofile(MP.."/intllib.lua")
-- playername-indexed table containing the previously used tradenum -- playername-indexed table containing the previously used tradenum
local player_tradenum = {} local player_tradenum = {}
@ -63,7 +62,7 @@ end
local professions = { local professions = {
farmer = { farmer = {
name = "Farmer", name = N("Farmer"),
texture = "mobs_mc_villager_farmer.png", texture = "mobs_mc_villager_farmer.png",
trades = { trades = {
{ {
@ -93,19 +92,19 @@ local professions = {
} }
}, },
fisherman = { fisherman = {
name = "Fisherman", name = N("Fisherman"),
texture = "mobs_mc_villager_farmer.png", texture = "mobs_mc_villager_farmer.png",
trades = { trades = {
{ {
{ { "mcl_fishing:fish_raw", 6, 6, "mcl_core:emerald", 1, 1 }, { "mcl_fishing:fish_cooked", 6, 6 } }, { { "mcl_fishing:fish_raw", 6, 6, "mcl_core:emerald", 1, 1 }, { "mcl_fishing:fish_cooked", 6, 6 } },
{ { "mcl_mobitems:string", 15, 20 }, E1 }, { { "mcl_mobitems:string", 15, 20 }, E1 },
{ { "mcl_core:coal_lump", 16, 24 }, E1 }, -- TODO: replace with enchanted fishing rod
{ { "mcl_core:emerald", 3, 11 }, { "mcl_fishing:fishing_rod", 1, 1} },
}, },
-- TODO: enchanted fishing rod
}, },
}, },
fletcher = { fletcher = {
name = "Fletcher", name = N("Fletcher"),
texture = "mobs_mc_villager_farmer.png", texture = "mobs_mc_villager_farmer.png",
trades = { trades = {
{ {
@ -120,7 +119,7 @@ local professions = {
} }
}, },
shepherd ={ shepherd ={
name = "Shepherd", name = N("Shepherd"),
texture = "mobs_mc_villager_farmer.png", texture = "mobs_mc_villager_farmer.png",
trades = { trades = {
{ {
@ -149,7 +148,7 @@ local professions = {
}, },
}, },
librarian = { librarian = {
name = "Librarian", name = N("Librarian"),
texture = "mobs_mc_villager_librarian.png", texture = "mobs_mc_villager_librarian.png",
trades = { trades = {
{ {
@ -178,7 +177,7 @@ local professions = {
}, },
}, },
cartographer = { cartographer = {
name = "Cartographer", name = N("Cartographer"),
texture = "mobs_mc_villager_librarian.png", texture = "mobs_mc_villager_librarian.png",
trades = { trades = {
{ {
@ -199,7 +198,7 @@ local professions = {
}, },
}, },
armorer = { armorer = {
name = "Armorer", name = N("Armorer"),
texture = "mobs_mc_villager_smith.png", texture = "mobs_mc_villager_smith.png",
trades = { trades = {
{ {
@ -227,7 +226,7 @@ local professions = {
}, },
}, },
leatherworker = { leatherworker = {
name = "Leatherworker", name = N("Leatherworker"),
texture = "mobs_mc_villager_butcher.png", texture = "mobs_mc_villager_butcher.png",
trades = { trades = {
{ {
@ -246,7 +245,7 @@ local professions = {
}, },
}, },
butcher = { butcher = {
name = "Butcher", name = N("Butcher"),
texture = "mobs_mc_villager_butcher.png", texture = "mobs_mc_villager_butcher.png",
trades = { trades = {
{ {
@ -262,7 +261,7 @@ local professions = {
}, },
}, },
weapon_smith = { weapon_smith = {
name = "Weapon Smith", name = N("Weapon Smith"),
texture = "mobs_mc_villager_smith.png", texture = "mobs_mc_villager_smith.png",
trades = { trades = {
{ {
@ -286,7 +285,7 @@ local professions = {
}, },
}, },
tool_smith = { tool_smith = {
name = "Tool Smith", name = N("Tool Smith"),
texture = "mobs_mc_villager_smith.png", texture = "mobs_mc_villager_smith.png",
trades = { trades = {
{ {
@ -309,7 +308,7 @@ local professions = {
}, },
}, },
cleric = { cleric = {
name = "Cleric", name = N("Cleric"),
texture = "mobs_mc_villager_priest.png", texture = "mobs_mc_villager_priest.png",
trades = { trades = {
{ {
@ -332,7 +331,7 @@ local professions = {
}, },
}, },
nitwit = { nitwit = {
name = "Nitwit", name = N("Nitwit"),
texture = "mobs_mc_villager.png", texture = "mobs_mc_villager.png",
-- No trades for nitwit -- No trades for nitwit
trades = nil, trades = nil,
@ -492,7 +491,7 @@ local function show_trade_formspec(playername, trader, tradenum)
.."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]" .."background[-0.19,-0.25;9.41,9.49;mobs_mc_trading_formspec_bg.png]"
..disabled_img ..disabled_img
..mcl_vars.inventory_header ..mcl_vars.inventory_header
.."label[4,0;"..minetest.formspec_escape(profession).."]" .."label[4,0;"..minetest.formspec_escape(minetest.colorize("#313131", S(profession))).."]"
.."list[current_player;main;0,4.5;9,3;9]" .."list[current_player;main;0,4.5;9,3;9]"
.."list[current_player;main;0,7.74;9,1;]" .."list[current_player;main;0,7.74;9,1;]"
..b_prev..b_next ..b_prev..b_next
@ -595,7 +594,7 @@ local function return_item(itemstack, dropper, pos, inv_p)
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:setvelocity(v) obj:set_velocity(v)
obj:get_luaentity()._insta_collect = false obj:get_luaentity()._insta_collect = false
end end
end end
@ -946,9 +945,6 @@ mobs:register_mob("mobs_mc:villager", {
die_end = 220, die_end = 220,
die_loop = false, die_loop = false,
}, },
water_damage = 0,
lava_damage = 4,
light_damage = 0,
view_range = 16, view_range = 16,
fear_height = 4, fear_height = 4,
jump = true, jump = true,

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