Merge branch 'master' into simplified_palette_index

This commit is contained in:
FossFanatic 2022-12-29 14:51:17 +00:00
commit 54548ecfdf
113 changed files with 595 additions and 446 deletions

@ -95,6 +95,7 @@
* anarquimico * anarquimico
* TheOnlyJoeEnderman * TheOnlyJoeEnderman
* Ranko Saotome * Ranko Saotome
* Gregor Parzefall
## MineClone5 ## MineClone5
* kay27 * kay27

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

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

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

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

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

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

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

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

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

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

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

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

@ -9,8 +9,8 @@ function mcl_weather.set_sky_box_clear(player, sky, fog)
local pos = player:get_pos() local pos = player:get_pos()
if minetest.get_item_group(minetest.get_node(vector.new(pos.x,pos.y+1.5,pos.z)).name, "water") ~= 0 then return end if minetest.get_item_group(minetest.get_node(vector.new(pos.x,pos.y+1.5,pos.z)).name, "water") ~= 0 then return end
local sc = { local sc = {
day_sky = "#0000FF", -- Pure blue to make debugging this stuff easier. Not visible during normal gameplay. day_sky = "#7BA4FF",
day_horizon = "#FF0000", -- Pure red to make debugging this stuff easier. Not visible during normal gameplay. day_horizon = "#C0D8FF",
dawn_sky = "#B4BAFA", dawn_sky = "#B4BAFA",
dawn_horizon = "#BAC1F0", dawn_horizon = "#BAC1F0",
night_sky = "#000000", night_sky = "#000000",

@ -124,7 +124,7 @@ end
local default_sounds local default_sounds
if minetest.get_modpath("mcl_sounds") then if minetest.get_modpath("mcl_sounds") then
default_sounds = mcl_sounds.node_sound_wood_defaults({ default_sounds = mcl_sounds.node_sound_wood_defaults({
footstep = { gain = 0.5, name = "mcl_sounds_cloth" }, footstep = mcl_sounds.node_sound_wool_defaults().footstep,
}) })
end end

@ -62,8 +62,6 @@ function mcl_cocoas.grow(pos)
return false return false
end end
-- Note: cocoa beans are implemented as mcl_dye:brown
-- Cocoa definition -- Cocoa definition
-- 1st stage -- 1st stage
local crop_def = { local crop_def = {
@ -78,7 +76,7 @@ local crop_def = {
sunlight_propagates = true, sunlight_propagates = true,
paramtype2 = "facedir", paramtype2 = "facedir",
walkable = true, walkable = true,
drop = "mcl_dye:brown", drop = "mcl_cocoas:cocoa_beans",
collision_box = { collision_box = {
type = "fixed", type = "fixed",
fixed = { fixed = {
@ -142,9 +140,20 @@ crop_def.selection_box = {
{-0.25, -0.3125, -0.0625, 0.25, 0.5, 0.5}, {-0.25, -0.3125, -0.0625, 0.25, 0.5, 0.5},
}, },
} }
crop_def.drop = "mcl_dye:brown 3" crop_def.drop = "mcl_cocoas:cocoa_beans 3"
minetest.register_node("mcl_cocoas:cocoa_3", table.copy(crop_def)) minetest.register_node("mcl_cocoas:cocoa_3", table.copy(crop_def))
minetest.register_craftitem("mcl_cocoas:cocoa_beans", {
description = S("Cocoa Beans"),
_tt_help = S("Grows at the side of jungle trees"),
_doc_items_longdesc = S("Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye."),
_doc_items_usagehelp = S("Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa."),
inventory_image = "mcl_cocoas_cocoa_beans.png",
groups = {craftitem = 1, compostability = 65},
on_place = function(itemstack, placer, pointed_thing)
return cocoa_place(itemstack, placer, pointed_thing, "mcl_cocoas:cocoa_1")
end,
})
minetest.register_abm({ minetest.register_abm({
label = "Cocoa pod growth", label = "Cocoa pod growth",

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=Kakaobohnen
Grows at the side of jungle trees=Wächst an der Seite von Dschungelbäumen
Cocoa beans can be used to plant cocoa pods, bake chocolate cookies or craft brown dye.=Kakaobohnen können benutzt werden, um Kakao anzupflanzen, Kekse zu backen oder braune Farbstoffe herzustellen.
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Rechtsklicken Sie an die Seite eines Dschungelbaumstamms (Dschungelholz), um eine junge Kakaoschote zu pflanzen.
Premature Cocoa Pod=Junge Kakaoschote Premature Cocoa Pod=Junge Kakaoschote
Cocoa pods grow on the side of jungle trees in 3 stages.=Kakaoschoten wachsen an der Seite von Dschungelbäumen in 3 Stufen. Cocoa pods grow on the side of jungle trees in 3 stages.=Kakaoschoten wachsen an der Seite von Dschungelbäumen in 3 Stufen.
Medium Cocoa Pod=Mittelgroße Kakaoschote Medium Cocoa Pod=Mittelgroße Kakaoschote

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=Granos de cacao
Grows at the side of jungle trees=Crece al lado de los árboles de la jungla
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=Los granos de cacao se pueden usar para plantar cacao, hornear galletas o hacer tintes marrones.
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Haga clic derecho en el costado del tronco de un árbol de la jungla para plantar un cacao joven.
Premature Cocoa Pod=Vaina de cacao prematura Premature Cocoa Pod=Vaina de cacao prematura
Cocoa pods grow on the side of jungle trees in 3 stages.=Las vainas de cacao crecen al lado de los árboles de jungla en 3 etapas. Cocoa pods grow on the side of jungle trees in 3 stages.=Las vainas de cacao crecen al lado de los árboles de jungla en 3 etapas.
Medium Cocoa Pod=Vaina de cacao mediana Medium Cocoa Pod=Vaina de cacao mediana

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=Fèves de Cacao
Grows at the side of jungle trees=Pousse à côté des arbres de la jungle
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=Les fèves de cacao peuvent être utilisées pour planter du cacao, faire des biscuits ou fabriquer de la teinture brune.
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Clic droit sur le côté d'un tronc d'arbre de la jungle (Bois Acajou) pour planter un jeune cacaoyer.
Premature Cocoa Pod=Gousse de cacao prématurée Premature Cocoa Pod=Gousse de cacao prématurée
Cocoa pods grow on the side of jungle trees in 3 stages.=Les cabosses de cacao poussent sur le côté des arbres d'Acajou en 3 étapes. Cocoa pods grow on the side of jungle trees in 3 stages.=Les cabosses de cacao poussent sur le côté des arbres d'Acajou en 3 étapes.
Medium Cocoa Pod=Gousse de cacao moyenne Medium Cocoa Pod=Gousse de cacao moyenne

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=Ziarna kakaowe
Grows at the side of jungle trees=Rośnie na boku tropikalnych drzew
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=Ziarna kakaowe mogą być używane do sadzenia kakao, pieczenia ciasteczek lub robienia brązowego barwnika.
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Naciśnij prawym na boku tropikalnego pnia (Tropikalne drewno) aby zasadzić młode kakao.
Premature Cocoa Pod=Niedojrzała roślina kakao Premature Cocoa Pod=Niedojrzała roślina kakao
Cocoa pods grow on the side of jungle trees in 3 stages.=Roślina kakao rośnie na bokach tropikalnych drzew w 3 etapach Cocoa pods grow on the side of jungle trees in 3 stages.=Roślina kakao rośnie na bokach tropikalnych drzew w 3 etapach
Medium Cocoa Pod=Średnio-dojrzała roślina kakao Medium Cocoa Pod=Średnio-dojrzała roślina kakao

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=Какао-бобы
Grows at the side of jungle trees=Растут на стволах деревьев джунглей
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=Какао-бобы можно использовать для посадки какао, выпечки печенья или изготовления коричневого красителя.
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=Кликните правой по боковой части ствола дерева джунглей, чтобы посадить молодое какао.
Premature Cocoa Pod=Молодой стручок какао Premature Cocoa Pod=Молодой стручок какао
Cocoa pods grow on the side of jungle trees in 3 stages.=Стручки какао растут на деревьях джунглей в 3 этапа. Cocoa pods grow on the side of jungle trees in 3 stages.=Стручки какао растут на деревьях джунглей в 3 этапа.
Medium Cocoa Pod=Средний стручок какао Medium Cocoa Pod=Средний стручок какао

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=可可豆
Grows at the side of jungle trees=在叢林木側生長
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=可可豆可用於種植可可、烘烤餅乾或製作棕色染料。
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=右鍵點擊叢林木的一側,可以種植一個可可。
Premature Cocoa Pod=成長中的可可豆莢第1階段 Premature Cocoa Pod=成長中的可可豆莢第1階段
Cocoa pods grow on the side of jungle trees in 3 stages.=可可莢果分3個階段生長在叢林樹的側面。 Cocoa pods grow on the side of jungle trees in 3 stages.=可可莢果分3個階段生長在叢林樹的側面。
Medium Cocoa Pod=成長中的可可豆莢第2階段 Medium Cocoa Pod=成長中的可可豆莢第2階段

@ -1,4 +1,8 @@
# textdomain: mcl_cocoas # textdomain: mcl_cocoas
Cocoa Beans=
Grows at the side of jungle trees=
Cocoa beans can be used to plant cocoa, bake cookies or craft brown dye.=
Right click on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa.=
Premature Cocoa Pod= Premature Cocoa Pod=
Cocoa pods grow on the side of jungle trees in 3 stages.= Cocoa pods grow on the side of jungle trees in 3 stages.=
Medium Cocoa Pod= Medium Cocoa Pod=

Binary file not shown.

After

Width:  |  Height:  |  Size: 244 B

@ -138,8 +138,8 @@ local function composter_harvest(pos, node, player, itemstack, pointed_thing)
end end
-- reset ready type composter to empty type -- reset ready type composter to empty type
swap_node(pos, {name="mcl_composters:composter"}) swap_node(pos, {name="mcl_composters:composter"})
-- spawn bone meal item (wtf dye?! is this how they make white cocoa) -- spawn bone meal item
add_item(pos, "mcl_dye:white") add_item(pos, "mcl_bone_meal:bone_meal")
-- TODO play some sounds -- TODO play some sounds
return itemstack return itemstack
end end

@ -126,14 +126,14 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
output = "mcl_core:bone_block", output = "mcl_core:bone_block",
recipe = { recipe = {
{ "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, { "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal" },
{ "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, { "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal" },
{ "mcl_dye:white", "mcl_dye:white", "mcl_dye:white" }, { "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal", "mcl_bone_meal:bone_meal" },
}, },
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:white 9", output = "mcl_bone_meal:bone_meal 9",
recipe = { recipe = {
{ "mcl_core:bone_block" }, { "mcl_core:bone_block" },
}, },
@ -298,14 +298,14 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
output = "mcl_core:lapisblock", output = "mcl_core:lapisblock",
recipe = { recipe = {
{"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, {"mcl_core:lapis", "mcl_core:lapis", "mcl_core:lapis"},
{"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, {"mcl_core:lapis", "mcl_core:lapis", "mcl_core:lapis"},
{"mcl_dye:blue", "mcl_dye:blue", "mcl_dye:blue"}, {"mcl_core:lapis", "mcl_core:lapis", "mcl_core:lapis"},
} }
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:blue 9", output = "mcl_core:lapis 9",
recipe = { recipe = {
{"mcl_core:lapisblock"}, {"mcl_core:lapisblock"},
} }
@ -482,7 +482,7 @@ minetest.register_craft({
minetest.register_craft({ minetest.register_craft({
type = "cooking", type = "cooking",
output = "mcl_dye:blue", output = "mcl_core:lapis",
recipe = "mcl_core:stone_with_lapis", recipe = "mcl_core:stone_with_lapis",
cooktime = 10, cooktime = 10,
}) })

@ -101,6 +101,14 @@ minetest.register_craftitem("mcl_core:emerald", {
groups = { craftitem=1 }, groups = { craftitem=1 },
}) })
minetest.register_craftitem("mcl_core:lapis", {
description = S("Lapis Lazuli"),
_doc_items_longdesc = S("Lapis Lazuli are required for enchanting items on an enchanting table."),
inventory_image = "mcl_core_lapis.png",
stack_max = 64,
groups = { craftitem=1 },
})
minetest.register_craftitem("mcl_core:brick", { minetest.register_craftitem("mcl_core:brick", {
description = S("Brick"), description = S("Brick"),
_doc_items_longdesc = S("Bricks are used to craft brick blocks."), _doc_items_longdesc = S("Bricks are used to craft brick blocks."),

@ -1559,7 +1559,7 @@ function mcl_core.register_snowed_node(itemstring_snowed, itemstring_clear, tile
end end
if not sounds then if not sounds then
def.sounds = mcl_sounds.node_sound_dirt_defaults({ def.sounds = mcl_sounds.node_sound_dirt_defaults({
footstep = { name = "pedology_snow_soft_footstep", gain = 0.5 } footstep = mcl_sounds.node_sound_snow_defaults().footstep,
}) })
else else
def.sounds = sounds def.sounds = sounds

@ -130,6 +130,8 @@ Jungle Wood=Dschungelholz
Jungle Wood Planks=Dschungelholzplanken Jungle Wood Planks=Dschungelholzplanken
Jungle leaves are grown from jungle trees.=Dschungelblätter wachsen an Dschungelbäumen. Jungle leaves are grown from jungle trees.=Dschungelblätter wachsen an Dschungelbäumen.
Ladder=Leiter Ladder=Leiter
Lapis Lazuli=Lapislazuli
Lapis Lazuli are required for enchanting items on an enchanting table.=Lapislazuli werden zum Verzaubern von Gegenständen auf einem Zaubertisch benötigt.
Lapis Lazuli Block=Lapislazuliblock Lapis Lazuli Block=Lapislazuliblock
Lapis Lazuli Ore=Lapislazulierz Lapis Lazuli Ore=Lapislazulierz
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Lapislazulierz ist das Erz von Lapislazuli. Es kann relativ selten in Ansammlungen in der Nähe des Weltbodens gefunden werden. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Lapislazulierz ist das Erz von Lapislazuli. Es kann relativ selten in Ansammlungen in der Nähe des Weltbodens gefunden werden.

@ -130,6 +130,8 @@ Jungle Wood=Tronco de jungla
Jungle Wood Planks=Madera de jungla Jungle Wood Planks=Madera de jungla
Jungle leaves are grown from jungle trees.=Las hojas de jungla se cultivan de los árboles de jungla. Jungle leaves are grown from jungle trees.=Las hojas de jungla se cultivan de los árboles de jungla.
Ladder=Escalera Ladder=Escalera
Lapis Lazuli=Lapislázuli
Lapis Lazuli are required for enchanting items on an enchanting table.=Los lapislázuli son necesarios para encantar objetos en una mesa de encantamiento.
Lapis Lazuli Block=Bloque de lapislázuli Lapis Lazuli Block=Bloque de lapislázuli
Lapis Lazuli Ore=Mena de lapislázuli Lapis Lazuli Ore=Mena de lapislázuli
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=El mineral de lapislázuli es el mineral de lapislázuli. Rara vez se puede encontrar en grupos, se encuentra cerca del fondo del mundo. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=El mineral de lapislázuli es el mineral de lapislázuli. Rara vez se puede encontrar en grupos, se encuentra cerca del fondo del mundo.

@ -130,6 +130,8 @@ Jungle Wood=Bûche d'Acajou
Jungle Wood Planks=Planches d'Acajou Jungle Wood Planks=Planches d'Acajou
Jungle leaves are grown from jungle trees.=Les feuilles d'Acajou sont cultivées à partir d'arbres d'Acajou. Jungle leaves are grown from jungle trees.=Les feuilles d'Acajou sont cultivées à partir d'arbres d'Acajou.
Ladder=Échelle Ladder=Échelle
Lapis Lazuli=Lapis Lazuli
Lapis Lazuli are required for enchanting items on an enchanting table.=Les lapis-lazuli sont nécessaires pour enchanter des objets sur une table d'enchantement.
Lapis Lazuli Block=Bloc de Lapis-Lazuli Lapis Lazuli Block=Bloc de Lapis-Lazuli
Lapis Lazuli Ore=Minerai de Lapis-Lazuli Lapis Lazuli Ore=Minerai de Lapis-Lazuli
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Le minerai de lapis-lazuli produit du lapis-lazuli. Il peut être rarement trouvé dans des filons près du fond du monde. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Le minerai de lapis-lazuli produit du lapis-lazuli. Il peut être rarement trouvé dans des filons près du fond du monde.

@ -130,6 +130,8 @@ Jungle Wood=Tropikalne drewno
Jungle Wood Planks=Tropikalne deski Jungle Wood Planks=Tropikalne deski
Jungle leaves are grown from jungle trees.=Tropikalne liście rosną na tropikalnych drzewach. Jungle leaves are grown from jungle trees.=Tropikalne liście rosną na tropikalnych drzewach.
Ladder=Drabina Ladder=Drabina
Lapis Lazuli=Lazuryt
Lapis Lazuli are required for enchanting items on an enchanting table.=Lapis Lazuli są wymagane do zaklinania przedmiotów na zaklinającym stole.
Lapis Lazuli Block=Blok lazurytu Lapis Lazuli Block=Blok lazurytu
Lapis Lazuli Ore=Ruda lazurytu Lapis Lazuli Ore=Ruda lazurytu
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ruda lazurytu jest rzadko występującym blokiem, który można znaleźć w grupach przy dnie świata. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ruda lazurytu jest rzadko występującym blokiem, który można znaleźć w grupach przy dnie świata.

@ -130,6 +130,8 @@ Jungle Wood=Дерево джунглей
Jungle Wood Planks=Доски из дерева джунглей Jungle Wood Planks=Доски из дерева джунглей
Jungle leaves are grown from jungle trees.=Листва дерева джунглей произрастает на деревьях джунглей. Jungle leaves are grown from jungle trees.=Листва дерева джунглей произрастает на деревьях джунглей.
Ladder=Лестница Ladder=Лестница
Lapis Lazuli=Ляпис-лазурь
Lapis Lazuli are required for enchanting items on an enchanting table.=Лазурит требуется для зачарования предметов на столе зачаровывания.
Lapis Lazuli Block=Ляпис-лазурный блок Lapis Lazuli Block=Ляпис-лазурный блок
Lapis Lazuli Ore=Ляпис-лазурная руда Lapis Lazuli Ore=Ляпис-лазурная руда
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ляпис-лазурная руда это руда ляпис-лазури. Она изредка встречается в виде скоплений вблизи дна мира. Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=Ляпис-лазурная руда это руда ляпис-лазури. Она изредка встречается в виде скоплений вблизи дна мира.

@ -129,6 +129,8 @@ Jungle Wood=叢林原木
Jungle Wood Planks=叢林木材 Jungle Wood Planks=叢林木材
Jungle leaves are grown from jungle trees.=叢林樹葉是由叢林樹生長出來的。 Jungle leaves are grown from jungle trees.=叢林樹葉是由叢林樹生長出來的。
Ladder=梯子 Ladder=梯子
Lapis Lazuli=青金石
Lapis Lazuli are required for enchanting items on an enchanting table.=为附魔台上的物品附魔需要青金石。
Lapis Lazuli Block=青金石磚 Lapis Lazuli Block=青金石磚
Lapis Lazuli Ore=青金石礦 Lapis Lazuli Ore=青金石礦
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=青金石礦是青金石的礦石。在世界底部附近能發現成群的和稀有的青金石礦。 Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=青金石礦是青金石的礦石。在世界底部附近能發現成群的和稀有的青金石礦。

@ -130,6 +130,8 @@ Jungle Wood=
Jungle Wood Planks= Jungle Wood Planks=
Jungle leaves are grown from jungle trees.= Jungle leaves are grown from jungle trees.=
Ladder= Ladder=
Lapis Lazuli=
Lapis Lazuli are required for enchanting items on an enchanting table.=
Lapis Lazuli Block= Lapis Lazuli Block=
Lapis Lazuli Ore= Lapis Lazuli Ore=
Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.= Lapis lazuli ore is the ore of lapis lazuli. It can be rarely found in clusters near the bottom of the world.=

@ -187,11 +187,11 @@ minetest.register_node("mcl_core:stone_with_lapis", {
drop = { drop = {
max_items = 1, max_items = 1,
items = { items = {
{items = {"mcl_dye:blue 8"},rarity = 5}, {items = {"mcl_core:lapis 8"},rarity = 5},
{items = {"mcl_dye:blue 7"},rarity = 5}, {items = {"mcl_core:lapis 7"},rarity = 5},
{items = {"mcl_dye:blue 6"},rarity = 5}, {items = {"mcl_core:lapis 6"},rarity = 5},
{items = {"mcl_dye:blue 5"},rarity = 5}, {items = {"mcl_core:lapis 5"},rarity = 5},
{items = {"mcl_dye:blue 4"}}, {items = {"mcl_core:lapis 4"}},
} }
}, },
sounds = mcl_sounds.node_sound_stone_defaults(), sounds = mcl_sounds.node_sound_stone_defaults(),
@ -542,9 +542,7 @@ minetest.register_node("mcl_core:gravel", {
{items = {"mcl_core:gravel"}} {items = {"mcl_core:gravel"}}
} }
}, },
sounds = mcl_sounds.node_sound_dirt_defaults({ sounds = mcl_sounds.node_sound_gravel_defaults(),
footstep = {name="default_gravel_footstep", gain=0.45},
}),
_mcl_blast_resistance = 0.6, _mcl_blast_resistance = 0.6,
_mcl_hardness = 0.6, _mcl_hardness = 0.6,
_mcl_silk_touch_drop = true, _mcl_silk_touch_drop = true,
@ -901,7 +899,7 @@ minetest.register_node("mcl_core:ice", {
stack_max = 64, stack_max = 64,
groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1}, groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1},
drop = "", drop = "",
sounds = mcl_sounds.node_sound_glass_defaults(), sounds = mcl_sounds.node_sound_ice_defaults(),
node_dig_prediction = "mcl_core:water_source", node_dig_prediction = "mcl_core:water_source",
after_dig_node = function(pos, oldnode) after_dig_node = function(pos, oldnode)
mcl_core.melt_ice(pos) mcl_core.melt_ice(pos)
@ -919,7 +917,7 @@ minetest.register_node("mcl_core:packed_ice", {
stack_max = 64, stack_max = 64,
groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1}, groups = {handy=1,pickaxey=1, slippery=3, building_block=1, ice=1},
drop = "", drop = "",
sounds = mcl_sounds.node_sound_glass_defaults(), sounds = mcl_sounds.node_sound_ice_defaults(),
_mcl_blast_resistance = 0.5, _mcl_blast_resistance = 0.5,
_mcl_hardness = 0.5, _mcl_hardness = 0.5,
_mcl_silk_touch_drop = true, _mcl_silk_touch_drop = true,
@ -967,7 +965,7 @@ for i=0,3 do
stack_max = 64, stack_max = 64,
groups = {handy=1, frosted_ice=1, slippery=3, not_in_creative_inventory=1, ice=1}, groups = {handy=1, frosted_ice=1, slippery=3, not_in_creative_inventory=1, ice=1},
drop = "", drop = "",
sounds = mcl_sounds.node_sound_glass_defaults(), sounds = mcl_sounds.node_sound_ice_defaults(),
on_construct = function(pos) on_construct = function(pos)
local timer = minetest.get_node_timer(pos) local timer = minetest.get_node_timer(pos)
timer:start(1.5) timer:start(1.5)

Binary file not shown.

After

Width:  |  Height:  |  Size: 169 B

@ -82,7 +82,7 @@ minetest.register_node("mcl_crimson:warped_fungus", {
}, },
node_placement_prediction = "", node_placement_prediction = "",
on_rightclick = function(pos, node, pointed_thing, player, itemstack) on_rightclick = function(pos, node, pointed_thing, player, itemstack)
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then if pointed_thing:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z}) local nodepos = minetest.get_node({x = pos.x, y = pos.y - 1, z = pos.z})
if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then if nodepos.name == "mcl_crimson:warped_nylium" or nodepos.name == "mcl_nether:netherrack" then
local random = math.random(1, 5) local random = math.random(1, 5)
@ -129,7 +129,7 @@ minetest.register_node("mcl_crimson:twisting_vines", {
itemstack:take_item() itemstack:take_item()
end end
grow_vines(pos, 1, "mcl_crimson:twisting_vines") grow_vines(pos, 1, "mcl_crimson:twisting_vines")
elseif clicker:get_wielded_item():get_name() == "mcl_dye:white" then elseif clicker:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
itemstack:take_item() itemstack:take_item()
end end
@ -185,7 +185,7 @@ minetest.register_node("mcl_crimson:weeping_vines", {
itemstack:take_item() itemstack:take_item()
end end
grow_vines(pos, 1, "mcl_crimson:weeping_vines", -1) grow_vines(pos, 1, "mcl_crimson:weeping_vines", -1)
elseif clicker:get_wielded_item():get_name() == "mcl_dye:white" then elseif clicker:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
if not minetest.is_creative_enabled(clicker:get_player_name()) then if not minetest.is_creative_enabled(clicker:get_player_name()) then
itemstack:take_item() itemstack:take_item()
end end
@ -421,7 +421,7 @@ minetest.register_node("mcl_crimson:crimson_fungus", {
}, },
node_placement_prediction = "", node_placement_prediction = "",
on_rightclick = function(pos, node, pointed_thing, player) on_rightclick = function(pos, node, pointed_thing, player)
if pointed_thing:get_wielded_item():get_name() == "mcl_dye:white" then if pointed_thing:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0)) local nodepos = minetest.get_node(vector.offset(pos, 0, -1, 0))
if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then if nodepos.name == "mcl_crimson:crimson_nylium" or nodepos.name == "mcl_nether:netherrack" then
local random = math.random(1, 5) local random = math.random(1, 5)

@ -89,11 +89,11 @@ end
local lapis_drops = { local lapis_drops = {
max_items = 1, items = { max_items = 1, items = {
{ items = { "mcl_dye:blue 8" }, rarity = 5 }, { items = { "mcl_core:lapis 8" }, rarity = 5 },
{ items = { "mcl_dye:blue 7" }, rarity = 5 }, { items = { "mcl_core:lapis 7" }, rarity = 5 },
{ items = { "mcl_dye:blue 6" }, rarity = 5 }, { items = { "mcl_core:lapis 6" }, rarity = 5 },
{ items = { "mcl_dye:blue 5" }, rarity = 5 }, { items = { "mcl_core:lapis 5" }, rarity = 5 },
{ items = { "mcl_dye:blue 4" } } { items = { "mcl_core:lapis 4" } }
} }
} }
@ -103,7 +103,7 @@ local deepslate_ores = {
{ "Gold", "mcl_raw_ores:raw_gold", "mcl_core:gold_ingot", 4, 0 }, { "Gold", "mcl_raw_ores:raw_gold", "mcl_core:gold_ingot", 4, 0 },
{ "Emerald", "mcl_core:emerald", "mcl_core:emerald", 4, 6 }, { "Emerald", "mcl_core:emerald", "mcl_core:emerald", 4, 6 },
{ "Diamond", "mcl_core:diamond", "mcl_core:diamond", 4, 4 }, { "Diamond", "mcl_core:diamond", "mcl_core:diamond", 4, 4 },
{ "Lapis Lazuli", lapis_drops, "mcl_dye:blue", 3, 6 }, { "Lapis Lazuli", lapis_drops, "mcl_core:lapis", 3, 6 },
} }
for _, p in pairs(deepslate_ores) do for _, p in pairs(deepslate_ores) do

@ -18,10 +18,6 @@ local S = minetest.get_translator(minetest.get_current_modname())
local math = math local math = math
local string = string local string = string
-- Other mods can use these for looping through available colors
mcl_dye.basecolors = {"white", "grey", "black", "red", "yellow", "green", "cyan", "blue", "magenta"}
mcl_dye.excolors = {"white", "lightgrey", "grey", "darkgrey", "black", "red", "orange", "yellow", "lime", "green", "aqua", "cyan", "sky_blue", "blue", "violet", "magenta", "red_violet"}
-- Base color groups: -- Base color groups:
-- - basecolor_white -- - basecolor_white
-- - basecolor_grey -- - basecolor_grey
@ -62,43 +58,43 @@ mcl_dye.excolors = {"white", "lightgrey", "grey", "darkgrey", "black", "red", "o
-- - unicolor_medium_<excolor>_s50 -- - unicolor_medium_<excolor>_s50
-- - unicolor_dark_<excolor>_s50 -- - unicolor_dark_<excolor>_s50
-- Local stuff
local dyelocal = {}
-- This collection of colors is partly a historic thing, partly something else. -- This collection of colors is partly a historic thing, partly something else.
dyelocal.dyes = { local dyes = {
{"white", "mcl_dye_white", S("Bone Meal"), {dye=1, craftitem=1, basecolor_white=1, excolor_white=1, unicolor_white=1}}, {"white", S("White Dye"), {basecolor_white=1, excolor_white=1, unicolor_white=1}},
{"grey", "dye_grey", S("Light Grey Dye"), {dye=1, craftitem=1, basecolor_grey=1, excolor_grey=1, unicolor_grey=1}}, {"grey", S("Light Grey Dye"), {basecolor_grey=1, excolor_grey=1, unicolor_grey=1}},
{"dark_grey", "dye_dark_grey", S("Grey Dye"), {dye=1, craftitem=1, basecolor_grey=1, excolor_darkgrey=1, unicolor_darkgrey=1}}, {"dark_grey", S("Grey Dye"), {basecolor_grey=1, excolor_darkgrey=1, unicolor_darkgrey=1}},
{"black", "mcl_dye_black", S("Ink Sac"), {dye=1, craftitem=1, basecolor_black=1, excolor_black=1, unicolor_black=1}}, {"black", S("Black Dye"), {basecolor_black=1, excolor_black=1, unicolor_black=1}},
{"violet", "dye_violet", S("Purple Dye"), {dye=1, craftitem=1, basecolor_magenta=1, excolor_violet=1, unicolor_violet=1}}, {"violet", S("Purple Dye"), {basecolor_magenta=1, excolor_violet=1, unicolor_violet=1}},
{"blue", "mcl_dye_blue", S("Lapis Lazuli"), {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_blue=1}}, {"blue", S("Blue Dye"), {basecolor_blue=1, excolor_blue=1, unicolor_blue=1}},
{"lightblue", "mcl_dye_light_blue", S("Light Blue Dye"), {dye=1, craftitem=1, basecolor_blue=1, excolor_blue=1, unicolor_light_blue=1}}, {"lightblue", S("Light Blue Dye"), {basecolor_blue=1, excolor_blue=1, unicolor_light_blue=1}},
{"cyan", "dye_cyan", S("Cyan Dye"), {dye=1, craftitem=1, basecolor_cyan=1, excolor_cyan=1, unicolor_cyan=1}}, {"cyan", S("Cyan Dye"), {basecolor_cyan=1, excolor_cyan=1, unicolor_cyan=1}},
{"dark_green", "dye_dark_green", S("Cactus Green"),{dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_dark_green=1}}, {"dark_green", S("Cactus Green"), {basecolor_green=1, excolor_green=1, unicolor_dark_green=1}},
{"green", "mcl_dye_lime", S("Lime Dye"), {dye=1, craftitem=1, basecolor_green=1, excolor_green=1, unicolor_green=1}}, {"green", S("Lime Dye"), {basecolor_green=1, excolor_green=1, unicolor_green=1}},
{"yellow", "dye_yellow", S("Dandelion Yellow"), {dye=1, craftitem=1, basecolor_yellow=1, excolor_yellow=1, unicolor_yellow=1}}, {"yellow", S("Dandelion Yellow"), {basecolor_yellow=1, excolor_yellow=1, unicolor_yellow=1}},
{"brown", "mcl_dye_brown", S("Cocoa Beans"), {dye=1, craftitem=1, basecolor_brown=1, excolor_orange=1, unicolor_dark_orange=1, compostability = 65}}, {"brown", S("Brown Dye"), {basecolor_brown=1, excolor_orange=1, unicolor_dark_orange=1}},
{"orange", "dye_orange", S("Orange Dye"), {dye=1, craftitem=1, basecolor_orange=1, excolor_orange=1, unicolor_orange=1}}, {"orange", S("Orange Dye"), {basecolor_orange=1, excolor_orange=1, unicolor_orange=1}},
{"red", "dye_red", S("Rose Red"), {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_red=1}}, {"red", S("Rose Red"), {basecolor_red=1, excolor_red=1, unicolor_red=1}},
{"magenta", "dye_magenta", S("Magenta Dye"), {dye=1, craftitem=1, basecolor_magenta=1, excolor_red_violet=1,unicolor_red_violet=1}}, {"magenta", S("Magenta Dye"), {basecolor_magenta=1, excolor_red_violet=1,unicolor_red_violet=1}},
{"pink", "dye_pink", S("Pink Dye"), {dye=1, craftitem=1, basecolor_red=1, excolor_red=1, unicolor_light_red=1}}, {"pink", S("Pink Dye"), {basecolor_red=1, excolor_red=1, unicolor_light_red=1}},
} }
local mg_name = minetest.get_mapgen_setting("mg_name") -- Other mods can use these for looping through available colors
mcl_dye.basecolors = {"white", "grey", "black", "magenta", "blue", "cyan", "green", "yellow", "orange", "red", "brown"}
mcl_dye.excolors = {"white", "grey", "darkgrey", "black", "violet", "blue", "cyan", "green", "yellow", "orange", "red", "red_violet"}
dyelocal.unicolor_to_dye_id = {} local unicolor_to_dye_id = {}
for d=1, #dyelocal.dyes do for d = 1, #dyes do
for k, _ in pairs(dyelocal.dyes[d][4]) do for k, _ in pairs(dyes[d][3]) do
if string.sub(k, 1, 9) == "unicolor_" then if string.sub(k, 1, 9) == "unicolor_" then
dyelocal.unicolor_to_dye_id[k] = dyelocal.dyes[d][1] unicolor_to_dye_id[k] = dyes[d][1]
end end
end end
end end
-- Takes an unicolor group name (e.g. “unicolor_white”) and returns a corresponding dye name (if it exists), nil otherwise. -- Takes an unicolor group name (e.g. “unicolor_white”) and returns a
-- corresponding dye name (if it exists), nil otherwise.
function mcl_dye.unicolor_to_dye(unicolor_group) function mcl_dye.unicolor_to_dye(unicolor_group)
local color = dyelocal.unicolor_to_dye_id[unicolor_group] local color = unicolor_to_dye_id[unicolor_group]
if color then if color then
return "mcl_dye:" .. color return "mcl_dye:" .. color
else else
@ -106,28 +102,21 @@ function mcl_dye.unicolor_to_dye(unicolor_group)
end end
end end
-- Define items -- Define dye items.
for _, row in ipairs(dyelocal.dyes) do --
local name = row[1] for _, row in pairs(dyes) do
-- White and brown dyes are defined explicitly below local name, desc, grps = unpack(row)
if name ~= "white" and name ~= "brown" then minetest.register_craftitem("mcl_dye:" .. name, {
local img = row[2] inventory_image = "mcl_dye_" .. name .. ".png",
local description = row[3] description = desc,
local groups = row[4]
local item_name = "mcl_dye:"..name
local item_image = img..".png"
minetest.register_craftitem(item_name, {
inventory_image = item_image,
description = description,
_doc_items_longdesc = S("This item is a dye which is used for dyeing and crafting."), _doc_items_longdesc = S("This item is a dye which is used for dyeing and crafting."),
_doc_items_usagehelp = S("Rightclick on a sheep to dye its wool. Other things are dyed by crafting."), _doc_items_usagehelp = S("Rightclick on a sheep to dye its wool. Other things are dyed by crafting."),
groups = groups, groups = table.update({craftitem = 1, dye = 1}, grps)
stack_max = 64,
}) })
end end
end
-- Bone Meal -- Bone meal code to be moved into its own mod.
--
function mcl_dye.add_bone_meal_particle(pos, def) function mcl_dye.add_bone_meal_particle(pos, def)
if not def then if not def then
def = {} def = {}
@ -381,14 +370,17 @@ end
mcl_dye.apply_bone_meal = apply_bone_meal mcl_dye.apply_bone_meal = apply_bone_meal
minetest.register_craftitem("mcl_dye:white", { -- Bone meal item registration.
inventory_image = "mcl_dye_white.png", --
-- To be moved into its own mod.
--
minetest.register_craftitem(":mcl_bone_meal:bone_meal", {
inventory_image = "mcl_bone_meal_bone_meal.png",
description = S("Bone Meal"), description = S("Bone Meal"),
_tt_help = S("Speeds up plant growth"), _tt_help = S("Speeds up plant growth"),
_doc_items_longdesc = S("Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants."), _doc_items_longdesc = S("Bone meal is a white dye and also useful as a fertilizer to speed up the growth of many plants."),
_doc_items_usagehelp = S("Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place."), _doc_items_usagehelp = S("Rightclick a sheep to turn its wool white. Rightclick a plant to speed up its growth. Note that not all plants can be fertilized like this. When you rightclick a grass block, tall grass and flowers will grow all over the place."),
stack_max = 64, stack_max = 64,
groups = dyelocal.dyes[1][4],
on_place = function(itemstack, user, pointed_thing) on_place = function(itemstack, user, pointed_thing)
-- Use pointed node's on_rightclick function first, if present -- Use pointed node's on_rightclick function first, if present
local node = minetest.get_node(pointed_thing.under) local node = minetest.get_node(pointed_thing.under)
@ -421,55 +413,160 @@ minetest.register_craftitem("mcl_dye:white", {
_dispense_into_walkable = true _dispense_into_walkable = true
}) })
minetest.register_craftitem("mcl_dye:brown", { minetest.register_craft({
inventory_image = "mcl_dye_brown.png", output = "mcl_bone_meal:bone_meal 3",
_tt_help = S("Grows at the side of jungle trees"), recipe = {{"mcl_mobitems:bone"}},
_doc_items_longdesc = S("Cocoa beans are a brown dye and can be used to plant cocoas."),
_doc_items_usagehelp = S("Rightclick a sheep to turn its wool brown. Rightclick on the side of a jungle tree trunk (Jungle Wood) to plant a young cocoa."),
description = S("Cocoa Beans"),
stack_max = 64,
groups = dyelocal.dyes[12][4],
on_place = function(itemstack, placer, pointed_thing)
return mcl_cocoas.place(itemstack, placer, pointed_thing, "mcl_cocoas:cocoa_1")
end,
}) })
-- Dye mixing
-- Dye creation recipes.
--
minetest.register_craft({
output = "mcl_dye:white",
recipe = {{"mcl_bone_meal:bone_meal"}},
})
minetest.register_craft({
output = "mcl_dye:black",
recipe = {{"mcl_mobitems:ink_sac"}},
})
minetest.register_craft({
output = "mcl_dye:yellow",
recipe = {{"mcl_flowers:dandelion"}},
})
minetest.register_craft({
output = "mcl_dye:yellow 2",
recipe = {{"mcl_flowers:sunflower"}},
})
minetest.register_craft({
output = "mcl_dye:blue",
recipe = {{"mcl_core:lapis"}},
})
minetest.register_craft({
output = "mcl_dye:lightblue",
recipe = {{"mcl_flowers:blue_orchid"}},
})
minetest.register_craft({
output = "mcl_dye:grey",
recipe = {{"mcl_flowers:azure_bluet"}},
})
minetest.register_craft({
output = "mcl_dye:grey",
recipe = {{"mcl_flowers:oxeye_daisy"}},
})
minetest.register_craft({
output = "mcl_dye:grey",
recipe = {{"mcl_flowers:tulip_white"}},
})
minetest.register_craft({
output = "mcl_dye:magenta",
recipe = {{"mcl_flowers:allium"}},
})
minetest.register_craft({
output = "mcl_dye:magenta 2",
recipe = {{"mcl_flowers:lilac"}},
})
minetest.register_craft({
output = "mcl_dye:orange",
recipe = {{"mcl_flowers:tulip_orange"}},
})
minetest.register_craft({
output = "mcl_dye:brown",
recipe = {{"mcl_cocoas:cocoa_beans"}},
})
minetest.register_craft({
output = "mcl_dye:pink",
recipe = {{"mcl_flowers:tulip_pink"}},
})
minetest.register_craft({
output = "mcl_dye:pink 2",
recipe = {{"mcl_flowers:peony"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_farming:beetroot_item"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_flowers:poppy"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_flowers:tulip_red"}},
})
minetest.register_craft({
output = "mcl_dye:red 2",
recipe = {{"mcl_flowers:rose_bush"}},
})
minetest.register_craft({
type = "cooking",
output = "mcl_dye:dark_green",
recipe = "mcl_core:cactus",
cooktime = 10,
})
-- Dye mixing recipes.
--
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:dark_grey 2", output = "mcl_dye:dark_grey 2",
recipe = {"mcl_dye:black", "mcl_dye:white"}, recipe = {"mcl_dye:black", "mcl_dye:white"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:lightblue 2", output = "mcl_dye:lightblue 2",
recipe = {"mcl_dye:blue", "mcl_dye:white"}, recipe = {"mcl_dye:blue", "mcl_dye:white"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:grey 3", output = "mcl_dye:grey 3",
recipe = {"mcl_dye:black", "mcl_dye:white", "mcl_dye:white"}, recipe = {"mcl_dye:black", "mcl_dye:white", "mcl_dye:white"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:grey 2", output = "mcl_dye:grey 2",
recipe = {"mcl_dye:dark_grey", "mcl_dye:white"}, recipe = {"mcl_dye:dark_grey", "mcl_dye:white"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:green 2", output = "mcl_dye:green 2",
recipe = {"mcl_dye:dark_green", "mcl_dye:white"}, recipe = {"mcl_dye:dark_green", "mcl_dye:white"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:magenta 4", output = "mcl_dye:magenta 4",
recipe = {"mcl_dye:blue", "mcl_dye:white", "mcl_dye:red", "mcl_dye:red"}, recipe = {"mcl_dye:blue", "mcl_dye:white", "mcl_dye:red", "mcl_dye:red"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:magenta 3", output = "mcl_dye:magenta 3",
recipe = {"mcl_dye:pink", "mcl_dye:red", "mcl_dye:blue"}, recipe = {"mcl_dye:pink", "mcl_dye:red", "mcl_dye:blue"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:magenta 2", output = "mcl_dye:magenta 2",
@ -493,80 +590,34 @@ minetest.register_craft({
output = "mcl_dye:violet 2", output = "mcl_dye:violet 2",
recipe = {"mcl_dye:blue", "mcl_dye:red"}, recipe = {"mcl_dye:blue", "mcl_dye:red"},
}) })
minetest.register_craft({ minetest.register_craft({
type = "shapeless", type = "shapeless",
output = "mcl_dye:orange 2", output = "mcl_dye:orange 2",
recipe = {"mcl_dye:yellow", "mcl_dye:red"}, recipe = {"mcl_dye:yellow", "mcl_dye:red"},
}) })
-- Dye creation -- Legacy items grace conversion recipes.
--
-- These allow for retrieval of precious items that were converted into
-- dye items after refactoring of the dyes. Should be removed again in
-- the near future.
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:yellow", output = "mcl_bone_meal:bone_meal",
recipe = {{"mcl_flowers:dandelion"}}, recipe = {{"mcl_dye:white"}},
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:yellow 2", output = "mcl_mobitems:ink_sac",
recipe = {{"mcl_flowers:sunflower"}}, recipe = {{"mcl_dye:black"}},
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:lightblue", output = "mcl_core:lapis",
recipe = {{"mcl_flowers:blue_orchid"}}, recipe = {{"mcl_dye:blue"}},
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_dye:grey", output = "mcl_cocoas:cocoa_beans",
recipe = {{"mcl_flowers:azure_bluet"}}, recipe = {{"mcl_dye:brown"}},
})
minetest.register_craft({
output = "mcl_dye:grey",
recipe = {{"mcl_flowers:oxeye_daisy"}},
})
minetest.register_craft({
output = "mcl_dye:grey",
recipe = {{"mcl_flowers:tulip_white"}},
})
minetest.register_craft({
output = "mcl_dye:magenta",
recipe = {{"mcl_flowers:allium"}},
})
minetest.register_craft({
output = "mcl_dye:magenta 2",
recipe = {{"mcl_flowers:lilac"}},
})
minetest.register_craft({
output = "mcl_dye:orange",
recipe = {{"mcl_flowers:tulip_orange"}},
})
minetest.register_craft({
output = "mcl_dye:pink",
recipe = {{"mcl_flowers:tulip_pink"}},
})
minetest.register_craft({
output = "mcl_dye:pink 2",
recipe = {{"mcl_flowers:peony"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_farming:beetroot_item"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_flowers:poppy"}},
})
minetest.register_craft({
output = "mcl_dye:red",
recipe = {{"mcl_flowers:tulip_red"}},
})
minetest.register_craft({
output = "mcl_dye:red 2",
recipe = {{"mcl_flowers:rose_bush"}},
})
minetest.register_craft({
type = "cooking",
output = "mcl_dye:dark_green",
recipe = "mcl_core:cactus",
cooktime = 10,
})
minetest.register_craft({
output = "mcl_dye:white 3",
recipe = {{"mcl_mobitems:bone"}},
}) })

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=Knochenmehl White Dye=Weißer Farbstoff
Light Grey Dye=Hellgrauer Farbstoff Light Grey Dye=Hellgrauer Farbstoff
Grey Dye=Grauer Farbstoff Grey Dye=Grauer Farbstoff
Ink Sac=Tintenbeutel Black Dye=Schwarzer Farbstoff
Purple Dye=Violetter Farbstoff Purple Dye=Violetter Farbstoff
Lapis Lazuli=Lapislazuli Blue Dye=Blaue Farbstoff
Light Blue Dye=Hellblauer Farbstoff Light Blue Dye=Hellblauer Farbstoff
Cyan Dye=Türkiser Farbstoff Cyan Dye=Türkiser Farbstoff
Cactus Green=Kaktusgrün Cactus Green=Kaktusgrün
Lime Dye=Lindgrüner Farbstoff Lime Dye=Lindgrüner Farbstoff
Dandelion Yellow=Löwenzahngelb Dandelion Yellow=Löwenzahngelb
Cocoa Beans=Kakaobohnen Brown Dye=Brauner Farbstoff
Orange Dye=Orange Farbstoff Orange Dye=Orange Farbstoff
Rose Red=Rosenrot Rose Red=Rosenrot
Magenta Dye=Magenta Farbstoff Magenta Dye=Magenta Farbstoff

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=Harina de hueso White Dye=Tinte blanca
Light Grey Dye=Tinte gris claro Light Grey Dye=Tinte gris claro
Grey Dye=Tinte gris Grey Dye=Tinte gris
Ink Sac=Saco de tinta Black Dye=Tinte negro
Purple Dye=Tinte púrpura Purple Dye=Tinte púrpura
Lapis Lazuli=Lapislázuli Blue Dye=Tinte azul
Light Blue Dye=Tinte azul claro Light Blue Dye=Tinte azul claro
Cyan Dye=Tinte cian Cyan Dye=Tinte cian
Cactus Green=Tinte verde Cactus Green=Tinte verde
Lime Dye=Tinte amarillo verdoso Lime Dye=Tinte amarillo verdoso
Dandelion Yellow=Tinte amarillo Dandelion Yellow=Tinte amarillo
Cocoa Beans=Granos de cacao Brown Dye=Tinte marrón
Orange Dye=Tinte naranja Orange Dye=Tinte naranja
Rose Red=Tinte rojo Rose Red=Tinte rojo
Magenta Dye=Tinte magenta Magenta Dye=Tinte magenta

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=Poudre d'Os White Dye=Teinture Blanche
Light Grey Dye=Teinture Gris Clair Light Grey Dye=Teinture Gris Clair
Grey Dye=Teinture Gris Grey Dye=Teinture Gris
Ink Sac=Poche d'Encre Black Dye=Teinture Noire
Purple Dye=Teinture Violette Purple Dye=Teinture Violette
Lapis Lazuli=Lapis Lazuli Blue Dye=Teinture Bleu
Light Blue Dye=Teinture Bleu Clair Light Blue Dye=Teinture Bleu Clair
Cyan Dye=Teinture Cyan Cyan Dye=Teinture Cyan
Cactus Green=Cactus Vert Cactus Green=Cactus Vert
Lime Dye=Teinture Vert Clair Lime Dye=Teinture Vert Clair
Dandelion Yellow=Teinture Jaune Dandelion Yellow=Teinture Jaune
Cocoa Beans=Fèves de Cacao Brown Dye=Teinture Marron
Orange Dye=Teinture Orange Orange Dye=Teinture Orange
Rose Red=Teinture Rouge Rose Red=Teinture Rouge
Magenta Dye=Teinture Magenta Magenta Dye=Teinture Magenta

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=Mączka kostna White Dye=Biały farba
Light Grey Dye=Jasnoszara farba Light Grey Dye=Jasnoszara farba
Grey Dye=Szara farba Grey Dye=Szara farba
Ink Sac=Torbiel z atramentem Black Dye=Czarny farba
Purple Dye=Fioletowa farba Purple Dye=Fioletowa farba
Lapis Lazuli=Lazuryt Blue Dye=Niebieska farba
Light Blue Dye=Jasnoniebieska farba Light Blue Dye=Jasnoniebieska farba
Cyan Dye=Błękitna farba Cyan Dye=Błękitna farba
Cactus Green=Kaktusowa zieleń Cactus Green=Kaktusowa zieleń
Lime Dye=Jasnozielona farba Lime Dye=Jasnozielona farba
Dandelion Yellow=Mleczowy żółty Dandelion Yellow=Mleczowy żółty
Cocoa Beans=Ziarna kakaowe Brown Dye=Brązowy farba
Orange Dye=Pomarańczowa farba Orange Dye=Pomarańczowa farba
Rose Red=Różany czerwony Rose Red=Różany czerwony
Magenta Dye=Karmazynowa farba Magenta Dye=Karmazynowa farba

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=Костная мука White Dye=Белый краситель
Light Grey Dye=Светло-серый краситель Light Grey Dye=Светло-серый краситель
Grey Dye=Серый краситель Grey Dye=Серый краситель
Ink Sac=Чернильный мешок Black Dye=Чёрный краситель
Purple Dye=Пурпурный краситель Purple Dye=Пурпурный краситель
Lapis Lazuli=Ляпис-лазурь Blue Dye=голубой краситель
Light Blue Dye=Светло-голубой краситель Light Blue Dye=Светло-голубой краситель
Cyan Dye=Голубой краситель Cyan Dye=Голубой краситель
Cactus Green=Зелень кактуса Cactus Green=Зелень кактуса
Lime Dye=Зелёный лаймовый краситель Lime Dye=Зелёный лаймовый краситель
Dandelion Yellow=Одуванчиковый жёлтый краситель Dandelion Yellow=Одуванчиковый жёлтый краситель
Cocoa Beans=Какао-бобы Brown Dye=Коричневый краситель
Orange Dye=Оранжевый краситель Orange Dye=Оранжевый краситель
Rose Red=Экстракт красной розы Rose Red=Экстракт красной розы
Magenta Dye=Фиолетовый краситель Magenta Dye=Фиолетовый краситель

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal=骨粉 White Dye=白色染料
Light Grey Dye=淺灰色染料 Light Grey Dye=淺灰色染料
Grey Dye=灰色染料 Grey Dye=灰色染料
Ink Sac=墨囊 Black Dye=黑色染料
Purple Dye=紫色染料 Purple Dye=紫色染料
Lapis Lazuli=青金石 Blue Dye=藍色染料
Light Blue Dye=淺藍色染料 Light Blue Dye=淺藍色染料
Cyan Dye=青色染料 Cyan Dye=青色染料
Cactus Green=仙人掌綠 Cactus Green=仙人掌綠
Lime Dye=淺綠色染料 Lime Dye=淺綠色染料
Dandelion Yellow=蒲公英黃 Dandelion Yellow=蒲公英黃
Cocoa Beans=可可豆 Brown Dye=棕色染料
Orange Dye=橙色染料 Orange Dye=橙色染料
Rose Red=玫瑰紅 Rose Red=玫瑰紅
Magenta Dye=洋紅色染料 Magenta Dye=洋紅色染料

@ -1,16 +1,16 @@
# textdomain: mcl_dye # textdomain: mcl_dye
Bone Meal= White Dye=
Light Grey Dye= Light Grey Dye=
Grey Dye= Grey Dye=
Ink Sac= Black Dye=
Purple Dye= Purple Dye=
Lapis Lazuli= Blue Dye=
Light Blue Dye= Light Blue Dye=
Cyan Dye= Cyan Dye=
Cactus Green= Cactus Green=
Lime Dye= Lime Dye=
Dandelion Yellow= Dandelion Yellow=
Cocoa Beans= Brown Dye=
Orange Dye= Orange Dye=
Rose Red= Rose Red=
Magenta Dye= Magenta Dye=

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 190 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 169 B

After

Width:  |  Height:  |  Size: 193 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 244 B

After

Width:  |  Height:  |  Size: 193 B

Before

Width:  |  Height:  |  Size: 205 B

After

Width:  |  Height:  |  Size: 205 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 165 B

After

Width:  |  Height:  |  Size: 201 B

Before

Width:  |  Height:  |  Size: 213 B

After

Width:  |  Height:  |  Size: 213 B

@ -520,7 +520,7 @@ function mcl_enchanting.show_enchanting_formspec(player)
local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves)
for i, slot in ipairs(table_slots) do for i, slot in ipairs(table_slots) do
any_enchantment = any_enchantment or slot any_enchantment = any_enchantment or slot
local enough_lapis = inv:contains_item("enchanting_lapis", ItemStack({name = "mcl_dye:blue", count = i})) local enough_lapis = inv:contains_item("enchanting_lapis", ItemStack({name = "mcl_core:lapis", count = i}))
local enough_levels = slot and slot.level_requirement <= player_levels local enough_levels = slot and slot.level_requirement <= player_levels
local can_enchant = (slot and enough_lapis and enough_levels) local can_enchant = (slot and enough_lapis and enough_levels)
local ending = (can_enchant and "" or "_off") local ending = (can_enchant and "" or "_off")
@ -555,7 +555,7 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields)
local meta = player:get_meta() local meta = player:get_meta()
local num_bookshelfes = meta:get_int("mcl_enchanting:num_bookshelves") local num_bookshelfes = meta:get_int("mcl_enchanting:num_bookshelves")
local itemstack = inv:get_stack("enchanting_item", 1) local itemstack = inv:get_stack("enchanting_item", 1)
local cost = ItemStack({name = "mcl_dye:blue", count = button_pressed}) local cost = ItemStack({name = "mcl_core:lapis", count = button_pressed})
if not inv:contains_item("enchanting_lapis", cost) then if not inv:contains_item("enchanting_lapis", cost) then
return return
end end
@ -608,7 +608,7 @@ function mcl_enchanting.allow_inventory_action(player, action, inventory, invent
if action == "move" then if action == "move" then
local listname = inventory_info.to_list local listname = inventory_info.to_list
local stack = inventory:get_stack(inventory_info.from_list, inventory_info.from_index) local stack = inventory:get_stack(inventory_info.from_list, inventory_info.from_index)
if stack:get_name() == "mcl_dye:blue" and listname ~= "enchanting_item" then if stack:get_name() == "mcl_core:lapis" and listname ~= "enchanting_item" then
local count = stack:get_count() local count = stack:get_count()
local old_stack = inventory:get_stack("enchanting_lapis", 1) local old_stack = inventory:get_stack("enchanting_lapis", 1)
if old_stack:get_name() ~= "" then if old_stack:get_name() ~= "" then
@ -631,7 +631,7 @@ function mcl_enchanting.on_inventory_action(player, action, inventory, inventory
if action == "move" and inventory_info.to_list == "enchanting" then if action == "move" and inventory_info.to_list == "enchanting" then
local stack = inventory:get_stack("enchanting", 1) local stack = inventory:get_stack("enchanting", 1)
local result_list local result_list
if stack:get_name() == "mcl_dye:blue" then if stack:get_name() == "mcl_core:lapis" then
result_list = "enchanting_lapis" result_list = "enchanting_lapis"
stack:add_item(inventory:get_stack("enchanting_lapis", 1)) stack:add_item(inventory:get_stack("enchanting_lapis", 1))
else else

@ -41,7 +41,7 @@ for i=0, 3 do
minetest.record_protection_violation(pos, pn) minetest.record_protection_violation(pos, pn)
return itemstack return itemstack
end end
if mcl_dye and clicker:get_wielded_item():get_name() == "mcl_dye:white" then if mcl_dye and clicker:get_wielded_item():get_name() == "mcl_bone_meal:bone_meal" then
mcl_dye.apply_bone_meal({under=pos},clicker) mcl_dye.apply_bone_meal({under=pos},clicker)
itemstack:take_item() itemstack:take_item()
return return

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