forked from rudzik8/mcl_decor
Merge pull request 'v1.2pre pull request' (#6) from indev into master
Reviewed-on: rudzik8/mcl_decor#6
This commit is contained in:
commit
03e198f33b
38
README.md
38
README.md
|
@ -6,6 +6,7 @@ Adds more decoration and furniture blocks to MineClone 2 (5)
|
|||
![Screenshot](screenshot_big.png "Screenshot")
|
||||
|
||||
## Blocks
|
||||
|
||||
### Armchairs
|
||||
Armchairs are 1x1 size blocks, on which you can sit by right-click! Uses wool and sticks for crafting. 16 colors available!
|
||||
|
||||
|
@ -18,7 +19,7 @@ Armchairs are 1x1 size blocks, on which you can sit by right-click! Uses wool an
|
|||
![Screenshot](https://i.ibb.co/3YhDML4/Webp-net-gifmaker-2.gif "Crafting")
|
||||
|
||||
### Chairs
|
||||
Chairs are small blocks made out of wood, on which you can sit by right-click! Uses sticks and wood planks for crafting. 6 types available!
|
||||
Chairs are small blocks made out of wood, on which you can sit by right-click! Uses sticks and wood planks for crafting. 6 *(+2 with MCL5)* types available!
|
||||
|
||||
**Screenshot:**
|
||||
|
||||
|
@ -86,21 +87,33 @@ Table lamp is 1x1 size block, that emits light. Uses wool, stone and torch for c
|
|||
|
||||
![Screenshot](https://i.ibb.co/LrJq4vg/screenshot-20220324-165553.png "Crafting")
|
||||
|
||||
### Curtains
|
||||
Curtains are "wallmounted" blocks, which you can open or close by right-click! Uses wool, sticks and iron ingots for crafting. 16 colors available!
|
||||
|
||||
**Screenshot:**
|
||||
|
||||
![Screenshot](https://i.ibb.co/PxHScLG/Webp-net-gifmaker-8.gif "16 curtains, placed on glass")
|
||||
|
||||
**Craft:**
|
||||
|
||||
![Screenshot](https://i.ibb.co/Z1yfSvP/Webp-net-gifmaker-9.gif "Crafting")
|
||||
|
||||
|
||||
## Contributing (how I can help?)
|
||||
|
||||
## Contributing (how can I help?)
|
||||
|
||||
### Translate the mod
|
||||
Just fork this repo, copy "template.txt" and paste as "mcl_decor.XX.tr", where XX is your 2-letter language code (for example, "de"). After that, you can open the file and translate strings!
|
||||
After the work is done you need to create a pull request and I will merge it!
|
||||
Just fork this repo, copy "template.txt" and paste as "mcl_decor.XX.tr", where XX is your 2-letter language code (for example, "de" for German/**De**utsch). After that, you can open that file and translate strings to your language.
|
||||
After the work is done you need to create a pull request, and if it has no problems - I'll merge it!
|
||||
|
||||
### Report bugs
|
||||
Yes! Via "Issues". I can't fix everything though but if you find something in my mod that looks like a bug - report it.
|
||||
Yes! Via "Issues" tab in this repo. I can't fix everything though, but if you found something in my mod that looks like a bug - report it.
|
||||
|
||||
### Share mod with friends and make positive reviews!
|
||||
On ContentDB of course. Reviews can motivate me to continue active work on the mod and stuff!
|
||||
### Share mod with friends and make reviews!
|
||||
On ContentDB of course. Reviews can motivate me to continue updating this mod!
|
||||
|
||||
### Help me with the code
|
||||
I'm not a very good coder, more like a novice (combining practice and theory at once) so if you can - please, fix some bugs or maybe add something via pull requests!
|
||||
I'm not a very good coder, more like a novice (combining practice and theory at once), so if you can - please, fix some bugs or maybe even add something via pull requests!
|
||||
|
||||
**Thanks.**
|
||||
|
||||
|
@ -113,10 +126,17 @@ Media licensed under CC-BY-SA 4.0, see [this deed](https://creativecommons.org/l
|
|||
|
||||
|
||||
## Credits
|
||||
**For assets:**
|
||||
- [Coalquartz Tile texture](textures/mcl_decor_coalquartz_tile.png) uses [coal block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_coal_block.png) and [quartz block](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_nether/textures/mcl_nether_quartz_block_side.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined)
|
||||
- [Dyed planks template texture](textures/mcl_decor_dyed_planks.png) uses [oak planks](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_wood.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (desaturated and lighted up a bit from original)
|
||||
- [Table Lamp top texture](textures/mcl_decor_table_lamp.png) uses [grey wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_grey.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized from original)
|
||||
- [Table Lamp bottom texture](textures/mcl_decor_table_lamp_bottom.png) uses [grey wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_grey.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized and partly darkened up from original)
|
||||
- [Table Lamp side texture](textures/mcl_decor_table_lamp_side.png) uses [grey wool](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_wool/textures/wool_grey.png) and [oak tree](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_core/textures/default_tree.png) textures under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (combined)
|
||||
- [Curtains overlay texture](textures/mcl_decor_curtain_overlay.png) uses [top iron pane](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/xpanes/textures/xpanes_top_iron.png) texture under [CC-BY-SA 4.0](https://creativecommons.org/licenses/by-sa/4.0/) by [XSSheep](https://github.com/XSSheep) (resized)
|
||||
|
||||
**For code:**
|
||||
- Sitting function (in api.lua) uses code from [ts_furniture mod](https://content.minetest.net/packages/Thomas-S/ts_furniture/) under [MIT](https://spdx.org/licenses/MIT.html) by [Thomas-S](https://content.minetest.net/users/Thomas-S/)
|
||||
- Also, [homedecor](https://content.minetest.net/packages/VanessaE/homedecor_modpack/) was inspiration for me partly. Thanks to [VanessaE](https://content.minetest.net/users/VanessaE/) for it!
|
||||
- *Currently* unused ’on_place’ function for curtains (in api.lua) uses code from [mcl_signs mod](https://git.minetest.land/MineClone2/MineClone2/src/branch/master/mods/ITEMS/mcl_signs/init.lua#L308) from MineClone 2 under under [MIT](https://spdx.org/licenses/MIT.html) by [PilzAdam](https://github.com/PilzAdam) and [contributors](https://git.minetest.land/MineClone2/MineClone2/commits/branch/master/mods/ITEMS/mcl_signs)
|
||||
|
||||
**Misc:**
|
||||
- [Homedecor modpack](https://content.minetest.net/packages/VanessaE/homedecor_modpack/) and [xdecor](https://content.minetest.net/packages/jp/xdecor) mods were inspiration for me partly. Thanks to [VanessaE](https://content.minetest.net/users/VanessaE/) and [jp](https://content.minetest.net/users/jp/) for them!
|
||||
|
|
206
api.lua
206
api.lua
|
@ -106,20 +106,26 @@ end
|
|||
|
||||
|
||||
|
||||
function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material, tiles)
|
||||
function mcl_decor.register_chair_and_table(name, desc, desc2, material, tiles, groups)
|
||||
if group == nil then
|
||||
group = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1}
|
||||
else
|
||||
group = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1}
|
||||
end
|
||||
|
||||
-- chair part
|
||||
minetest.register_node(name, {
|
||||
minetest.register_node("mcl_decor:"..name.."_chair", {
|
||||
description = desc,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{-0.25, 0, 0.125, 0.25, 0.5, 0.25}, -- back
|
||||
{-0.25, -0.125, -0.25, 0.25, 0, 0.25}, -- seat
|
||||
{-0.25, -0.5, 0.125, -0.125, -0.125, 0.25}, -- 1st leg
|
||||
{0.125, -0.5, -0.25, 0.25, -0.125, -0.125}, -- 2nd leg
|
||||
{0.125, -0.5, 0.125, 0.25, -0.125, 0.25}, -- 3rd leg
|
||||
{-0.25, -0.5, -0.25, -0.125, -0.125, -0.125}, -- 4th leg
|
||||
{-0.25, 0, 0.125, 0.25, 0.5, 0.25},
|
||||
{-0.25, -0.125, -0.25, 0.25, 0, 0.25},
|
||||
{-0.25, -0.5, 0.125, -0.125, -0.125, 0.25},
|
||||
{0.125, -0.5, -0.25, 0.25, -0.125, -0.125},
|
||||
{0.125, -0.5, 0.125, 0.25, -0.125, 0.25},
|
||||
{-0.25, -0.5, -0.25, -0.125, -0.125, -0.125},
|
||||
}
|
||||
},
|
||||
tiles = {tiles},
|
||||
|
@ -132,14 +138,14 @@ function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material,
|
|||
type = "fixed",
|
||||
fixed = { -0.25, -0.5, -0.25, 0.25, 0.5, 0.25 },
|
||||
},
|
||||
groups = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1},
|
||||
groups = group,
|
||||
_mcl_hardness = 1,
|
||||
_mcl_blast_resistance = 1,
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
on_rightclick = mcl_decor.sit
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name,
|
||||
output = "mcl_decor:"..name.."_chair",
|
||||
recipe = {
|
||||
{"", "", "mcl_core:stick"},
|
||||
{material, material, material},
|
||||
|
@ -147,7 +153,7 @@ function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material,
|
|||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name,
|
||||
output = "mcl_decor:"..name.."_chair",
|
||||
recipe = {
|
||||
{"mcl_core:stick", "", ""},
|
||||
{material, material, material},
|
||||
|
@ -156,22 +162,22 @@ function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material,
|
|||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = name,
|
||||
recipe = "mcl_decor:"..name.."_chair",
|
||||
burntime = 8,
|
||||
})
|
||||
|
||||
-- table part
|
||||
minetest.register_node(name2, {
|
||||
minetest.register_node("mcl_decor:"..name.."_table", {
|
||||
description = desc2,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
type = "fixed",
|
||||
fixed = {
|
||||
{ -0.5, 0.375, -0.5, 0.5, 0.5, 0.5 }, -- top
|
||||
{ -0.4375, -0.5, -0.4375, -0.3125, 0.375, -0.3125 }, -- 1st leg
|
||||
{ 0.3125, -0.5, -0.4375, 0.4375, 0.375, -0.3125 }, -- 2nd leg
|
||||
{ 0.3125, -0.5, 0.3125, 0.4375, 0.375, 0.4375 }, -- 3rd leg
|
||||
{ -0.4375, -0.5, 0.3125, -0.3125, 0.375, 0.4375 }, -- 4th leg
|
||||
{ -0.5, 0.375, -0.5, 0.5, 0.5, 0.5 },
|
||||
{ -0.4375, -0.5, -0.4375, -0.3125, 0.375, -0.3125 },
|
||||
{ 0.3125, -0.5, -0.4375, 0.4375, 0.375, -0.3125 },
|
||||
{ 0.3125, -0.5, 0.3125, 0.4375, 0.375, 0.4375 },
|
||||
{ -0.4375, -0.5, 0.3125, -0.3125, 0.375, 0.4375 },
|
||||
}
|
||||
},
|
||||
selection_box = {
|
||||
|
@ -183,13 +189,13 @@ function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material,
|
|||
paramtype = "light",
|
||||
stack_max = 64,
|
||||
sunlight_propagates = true,
|
||||
groups = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1},
|
||||
groups = group,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_blast_resistance = 3,
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name2.." 2",
|
||||
output = "mcl_decor:"..name.."_table".." 2",
|
||||
recipe = {
|
||||
{material, material, material},
|
||||
{"mcl_core:stick", "", "mcl_core:stick"},
|
||||
|
@ -198,13 +204,18 @@ function mcl_decor.register_chair_and_table(name, desc, name2, desc2, material,
|
|||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = name2,
|
||||
recipe = "mcl_decor:"..name.."_table",
|
||||
burntime = 10,
|
||||
})
|
||||
end
|
||||
|
||||
function mcl_decor.register_slab_table(name, desc, material, tiles)
|
||||
minetest.register_node(name, {
|
||||
function mcl_decor.register_slab_table(name, desc, material, tiles, group)
|
||||
if group == nil then
|
||||
group = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1}
|
||||
else
|
||||
group = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1}
|
||||
end
|
||||
minetest.register_node("mcl_decor:"..name.."_stable", {
|
||||
description = desc,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
|
@ -219,13 +230,13 @@ function mcl_decor.register_slab_table(name, desc, material, tiles)
|
|||
paramtype = "light",
|
||||
stack_max = 64,
|
||||
sunlight_propagates = true,
|
||||
groups = {handy=1, axey=1, attached_node=1, material_wood=1, deco_block=1, flammable=-1},
|
||||
groups = group,
|
||||
_mcl_hardness = 2,
|
||||
_mcl_blast_resistance = 3,
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name.." 3",
|
||||
output = "mcl_decor:"..name.."_stable".." 3",
|
||||
recipe = {
|
||||
{material, material, material},
|
||||
{"", "mcl_core:stick", ""}
|
||||
|
@ -233,13 +244,13 @@ function mcl_decor.register_slab_table(name, desc, material, tiles)
|
|||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = name,
|
||||
recipe = "mcl_decor:"..name.."_stable",
|
||||
burntime = 10,
|
||||
})
|
||||
end
|
||||
|
||||
function mcl_decor.register_armchair(name, desc, material, tiles, dye, colorgroup)
|
||||
minetest.register_node(name, {
|
||||
function mcl_decor.register_armchair(color, desc, tiles, dye, colorgroup)
|
||||
minetest.register_node("mcl_decor:"..color.."_armchair", {
|
||||
description = desc,
|
||||
drawtype = "nodebox",
|
||||
node_box = {
|
||||
|
@ -268,35 +279,35 @@ function mcl_decor.register_armchair(name, desc, material, tiles, dye, colorgrou
|
|||
on_rightclick = mcl_decor.sit
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name,
|
||||
output = "mcl_decor:"..color.."_armchair",
|
||||
recipe = {
|
||||
{"", "", material},
|
||||
{material, material, material},
|
||||
{"", "", "mcl_wool:"..color},
|
||||
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
|
||||
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = name,
|
||||
output = "mcl_decor:"..color.."_armchair",
|
||||
recipe = {
|
||||
{material, "", ""},
|
||||
{material, material, material},
|
||||
{"mcl_wool:"..color, "", ""},
|
||||
{"mcl_wool:"..color, "mcl_wool:"..color, "mcl_wool:"..color},
|
||||
{"mcl_core:stick", "mcl_core:stick", "mcl_core:stick"}
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = name,
|
||||
recipe = {"group:armchair", "mcl_dye:" .. dye},
|
||||
output = "mcl_decor:"..color.."_armchair",
|
||||
recipe = {"group:armchair", "mcl_dye:"..dye},
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = name,
|
||||
recipe = "mcl_decor:"..color.."_armchair",
|
||||
burntime = 10,
|
||||
})
|
||||
end
|
||||
|
||||
function mcl_decor.register_dyed_planks(name, desc, hexcolor, dye, colorgroup)
|
||||
minetest.register_node("mcl_decor:"..name, {
|
||||
function mcl_decor.register_dyed_planks(color, desc, hexcolor, dye, colorgroup)
|
||||
minetest.register_node("mcl_decor:"..color.."_planks", {
|
||||
description = desc,
|
||||
tiles = {"mcl_decor_dyed_planks.png^[colorize:" .. hexcolor .. ":125"},
|
||||
stack_max = 64,
|
||||
|
@ -308,9 +319,120 @@ function mcl_decor.register_dyed_planks(name, desc, hexcolor, dye, colorgroup)
|
|||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "mcl_decor:"..name,
|
||||
recipe = {"group:wood", "mcl_dye:" .. dye}
|
||||
output = "mcl_decor:"..color.."_planks",
|
||||
recipe = {"group:wood", "mcl_dye:"..dye}
|
||||
})
|
||||
-- maybe descriptions of slabs/stairs after that workaround will be VERY CRAPPY (especially with translations via locales), but at least it works
|
||||
mcl_stairs.register_stair_and_slab_simple(name, "mcl_decor:"..name, desc..S(" Stair"), desc..S(" Slab"), S("Double")..desc..S(" Slab"), "woodlike")
|
||||
mcl_stairs.register_stair_and_slab_simple(
|
||||
color.."_planks", "mcl_decor:"..color.."_planks", desc..S(" Stair"), desc..S(" Slab"), S("Double")..desc..S(" Slab"), "woodlike"
|
||||
)
|
||||
end
|
||||
|
||||
function mcl_decor.register_curtains(color, desc, wool, wooltile, dye, colorgroup)
|
||||
minetest.register_node("mcl_decor:curtain_"..color, {
|
||||
description = desc,
|
||||
tiles = {
|
||||
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png", -- front
|
||||
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png^[transformFY", -- back
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformR270", -- side
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformR90", -- side
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- top
|
||||
wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png", -- bottom
|
||||
},
|
||||
stack_max = 64,
|
||||
inventory_image = wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
|
||||
wield_image = wooltile.."^mcl_decor_curtain_alpha.png^[makealpha:255,126,126^mcl_decor_curtain_overlay.png",
|
||||
walkable = false,
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
groups = {handy=1, flammable=-1, curtain=1, attached_node=1, dig_by_piston=1, deco_block=1, material_wool=1, [colorgroup]=1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
node_box = {
|
||||
type = "wallmounted",
|
||||
},
|
||||
_mcl_blast_resistance = 0.2,
|
||||
_mcl_hardness = 0.2,
|
||||
--[[
|
||||
function below should stop players from placing curtains on floor and ceiling, BUT it makes them infinite (bug)
|
||||
will be uncommented and fixed one day... maybe...
|
||||
---
|
||||
on_place = function(itemstack, placer, pointed_thing)
|
||||
-- taken from mcl_signs (partially)
|
||||
local above = pointed_thing.above
|
||||
local under = pointed_thing.under
|
||||
|
||||
-- use pointed node's on_rightclick function first, if present
|
||||
local node_under = minetest.get_node(under)
|
||||
if placer and not placer:get_player_control().sneak then
|
||||
if minetest.registered_nodes[node_under.name] and minetest.registered_nodes[node_under.name].on_rightclick then
|
||||
return minetest.registered_nodes[node_under.name].on_rightclick(under, node_under, placer, itemstack) or itemstack
|
||||
end
|
||||
end
|
||||
|
||||
local dir = vector.subtract(under, above)
|
||||
local wdir = minetest.dir_to_wallmounted(dir)
|
||||
|
||||
-- FIXME: curtains can be placed infinitely just like in creative mode
|
||||
if wdir == 0 or wdir == 1 then
|
||||
return itemstack
|
||||
else
|
||||
local _, success = minetest.item_place_node(itemstack, placer, pointed_thing, wdir)
|
||||
if not success then
|
||||
return itemstack
|
||||
end
|
||||
-- V this one SHOULD fix infinite curtains problem, but it doesn't V
|
||||
if not minetest.is_creative_enabled(placer:get_player_name()) then
|
||||
itemstack:take_item()
|
||||
end
|
||||
end
|
||||
end,
|
||||
]]
|
||||
on_rightclick = function(pos, node, _, itemstack)
|
||||
minetest.set_node(pos, {name="mcl_decor:curtain_"..color.."_closed", param2=node.param2})
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
minetest.register_node("mcl_decor:curtain_"..color.."_closed", {
|
||||
description = desc..S(" (closed)"),
|
||||
tiles = {
|
||||
wooltile.."^mcl_decor_curtain_overlay.png", -- front
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- back
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformR270", -- side
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformR90", -- side
|
||||
wooltile.."^mcl_decor_curtain_overlay.png^[transformFY", -- top
|
||||
wooltile.."^mcl_decor_curtain_overlay.png", -- bottom
|
||||
},
|
||||
walkable = false,
|
||||
sunlight_propagates = true,
|
||||
drawtype = "nodebox",
|
||||
paramtype = "light",
|
||||
paramtype2 = "wallmounted",
|
||||
groups = {handy=1, flammable=-1, attached_node=1, dig_by_piston=1, not_in_creative_inventory=1},
|
||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||
node_box = {
|
||||
type = "wallmounted",
|
||||
},
|
||||
drop = "mcl_decor:curtain_"..color,
|
||||
_mcl_blast_resistance = 0.2,
|
||||
_mcl_hardness = 0.2,
|
||||
on_rightclick = function(pos, node, clicker, itemstack)
|
||||
minetest.set_node(pos, {name="mcl_decor:curtain_"..color, param2=node.param2})
|
||||
return itemstack
|
||||
end
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = "mcl_decor:curtain_"..color,
|
||||
recipe = {
|
||||
{"mcl_core:iron_ingot", "mcl_core:stick", "mcl_core:iron_ingot"},
|
||||
{wool, wool, wool},
|
||||
{wool, "", wool}
|
||||
}
|
||||
})
|
||||
minetest.register_craft({
|
||||
type = "shapeless",
|
||||
output = "mcl_decor:curtain_"..color,
|
||||
recipe = {"group:curtain", "mcl_dye:"..dye},
|
||||
})
|
||||
end
|
||||
|
|
|
@ -19,18 +19,24 @@ Birch Chair=Берёзовый стул
|
|||
Dark Oak Chair=Стул из тёмного дуба
|
||||
Jungle Chair=Стул из тропического дерева
|
||||
Spruce Chair=Еловый стул
|
||||
Crimson Chair=Багровый стул
|
||||
Warped Chair=Искажённый стул
|
||||
Oak Table=Дубовый стол
|
||||
Acacia Table=Стол из акации
|
||||
Birch Table=Берёзовый стол
|
||||
Dark Oak Table=Стол из тёмного дуба
|
||||
Jungle Table=Стол из тропического дерева
|
||||
Spruce Table=Еловый стол
|
||||
Crimson Table=Багровый стол
|
||||
Warped Table=Искажённый стол
|
||||
Oak Slab Table=Дубовый полублочный стол
|
||||
Dark Oak Slab Table=Полублочный стол из тёмного дуба
|
||||
Jungle Slab Table=Полублочный стол из тропического дерева
|
||||
Spruce Slab Table=Еловый полублочный стол
|
||||
Acacia Slab Table=Полублочный стол из акации
|
||||
Birch Slab Table=Берёзовый полублочный стол
|
||||
Crimson Slab Table=Багровый полублочный стол
|
||||
Warped Slab Table=Искажённый полублочный стол
|
||||
White Planks=Белые доски
|
||||
Grey Planks=Серые доски
|
||||
Light Grey Planks=Светло-серые доски
|
||||
|
@ -63,6 +69,23 @@ Brown Armchair=Коричневое кресло
|
|||
Pink Armchair=Розовое кресло
|
||||
Lime Armchair=Зелёное лаймовое кресло
|
||||
Light Blue Armchair=Светло-голубое кресло
|
||||
White Armchair=Белые шторы
|
||||
Grey Armchair=Серые шторы
|
||||
Light Grey Armchair=Светло-серые шторы
|
||||
Black Armchair=Чёрные шторы
|
||||
Red Armchair=Красные шторы
|
||||
Yellow Armchair=Жёлтые шторы
|
||||
Green Armchair=Зелёные шторы
|
||||
Cyan Armchair=Голубые шторы
|
||||
Blue Armchair=Синее шторы
|
||||
Magenta Armchair=Фиолетовые шторы
|
||||
Orange Armchair=Оранжевые шторы
|
||||
Purple Armchair=Пурпурные шторы
|
||||
Brown Armchair=Коричневые шторы
|
||||
Pink Armchair=Розовые шторы
|
||||
Lime Armchair=Зелёные лаймовые шторы
|
||||
Light Blue Armchair=Светло-голубые шторы
|
||||
Stair= Ступенька
|
||||
Slab= Плита
|
||||
Double=Двойная
|
||||
(closed)= (закрыты)
|
||||
|
|
|
@ -19,18 +19,24 @@ Birch Chair=
|
|||
Dark Oak Chair=
|
||||
Jungle Chair=
|
||||
Spruce Chair=
|
||||
Crimson Chair=
|
||||
Warped Chair=
|
||||
Oak Table=
|
||||
Acacia Table=
|
||||
Birch Table=
|
||||
Dark Oak Table=
|
||||
Jungle Table=
|
||||
Spruce Table=
|
||||
Crimson Table=
|
||||
Warped Table=
|
||||
Oak Slab Table=
|
||||
Dark Oak Slab Table=
|
||||
Jungle Slab Table=
|
||||
Spruce Slab Table=
|
||||
Acacia Slab Table=
|
||||
Birch Slab Table=
|
||||
Crimson Slab Table=
|
||||
Warped Slab Table=
|
||||
White Planks=
|
||||
Grey Planks=
|
||||
Light Grey Planks=
|
||||
|
@ -63,6 +69,23 @@ Brown Armchair=
|
|||
Pink Armchair=
|
||||
Lime Armchair=
|
||||
Light Blue Armchair=
|
||||
White Curtains=
|
||||
Grey Curtains=
|
||||
Light Grey Curtains=
|
||||
Black Curtains=
|
||||
Red Curtains=
|
||||
Yellow Curtains=
|
||||
Green Curtains=
|
||||
Cyan Curtains=
|
||||
Blue Curtains=
|
||||
Magenta Curtains=
|
||||
Orange Curtains=
|
||||
Purple Curtains=
|
||||
Brown Curtains=
|
||||
Pink Curtains=
|
||||
Lime Curtains=
|
||||
Light Blue Curtains=
|
||||
Stair=
|
||||
Slab=
|
||||
Double=
|
||||
(closed)=
|
||||
|
|
2
mod.conf
2
mod.conf
|
@ -1,4 +1,4 @@
|
|||
name = mcl_decor
|
||||
description = Adds more decoration and furniture blocks to MineClone 2 (5)
|
||||
depends = mcl_core, mcl_torches, mcl_player, mcl_sounds, mcl_dye, mcl_nether, mcl_stairs
|
||||
optional_depends = mcl_cozy
|
||||
optional_depends = mcl_cozy, mcl_mushroom
|
||||
|
|
116
register.lua
116
register.lua
|
@ -127,56 +127,84 @@ minetest.register_craft({
|
|||
|
||||
|
||||
--- Tables and Chairs ---
|
||||
mcl_decor.register_chair_and_table("mcl_decor:wooden_chair", S("Oak Chair"), "mcl_decor:wooden_table", S("Oak Table"), "mcl_core:wood", "default_wood.png")
|
||||
mcl_decor.register_chair_and_table("mcl_decor:dark_oak_chair", S("Dark Oak Chair"), "mcl_decor:dark_oak_table", S("Dark Oak Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
|
||||
mcl_decor.register_chair_and_table("mcl_decor:jungle_chair", S("Jungle Chair"), "mcl_decor:jungle_table", S("Jungle Table"), "mcl_core:junglewood", "default_junglewood.png")
|
||||
mcl_decor.register_chair_and_table("mcl_decor:spruce_chair", S("Spruce Chair"), "mcl_decor:spruce_table", S("Spruce Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
|
||||
mcl_decor.register_chair_and_table("mcl_decor:acacia_chair", S("Acacia Chair"), "mcl_decor:acacia_table", S("Acacia Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
|
||||
mcl_decor.register_chair_and_table("mcl_decor:birch_chair", S("Birch Chair"), "mcl_decor:birch_table", S("Birch Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
|
||||
mcl_decor.register_chair_and_table("wooden", S("Oak Chair"), S("Oak Table"), "mcl_core:wood", "default_wood.png")
|
||||
mcl_decor.register_chair_and_table("dark_oak", S("Dark Oak Chair"), S("Dark Oak Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
|
||||
mcl_decor.register_chair_and_table("jungle", S("Jungle Chair"), S("Jungle Table"), "mcl_core:junglewood", "default_junglewood.png")
|
||||
mcl_decor.register_chair_and_table("spruce", S("Spruce Chair"), S("Spruce Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
|
||||
mcl_decor.register_chair_and_table("acacia", S("Acacia Chair"), S("Acacia Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
|
||||
mcl_decor.register_chair_and_table("birch", S("Birch Chair"), S("Birch Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
|
||||
|
||||
mcl_decor.register_slab_table("mcl_decor:wooden_stable", S("Oak Slab Table"), "mcl_core:wood", "default_wood.png")
|
||||
mcl_decor.register_slab_table("mcl_decor:dark_oak_stable", S("Dark Oak Slab Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
|
||||
mcl_decor.register_slab_table("mcl_decor:jungle_stable", S("Jungle Slab Table"), "mcl_core:junglewood", "default_junglewood.png")
|
||||
mcl_decor.register_slab_table("mcl_decor:spruce_stable", S("Spruce Slab Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
|
||||
mcl_decor.register_slab_table("mcl_decor:acacia_stable", S("Acacia Slab Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
|
||||
mcl_decor.register_slab_table("mcl_decor:birch_stable", S("Birch Slab Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
|
||||
mcl_decor.register_slab_table("wooden", S("Oak Slab Table"), "mcl_core:wood", "default_wood.png")
|
||||
mcl_decor.register_slab_table("dark_oak", S("Dark Oak Slab Table"), "mcl_core:darkwood", "mcl_core_planks_big_oak.png")
|
||||
mcl_decor.register_slab_table("jungle", S("Jungle Slab Table"), "mcl_core:junglewood", "default_junglewood.png")
|
||||
mcl_decor.register_slab_table("spruce", S("Spruce Slab Table"), "mcl_core:sprucewood", "mcl_core_planks_spruce.png")
|
||||
mcl_decor.register_slab_table("acacia", S("Acacia Slab Table"), "mcl_core:acaciawood", "default_acacia_wood.png")
|
||||
mcl_decor.register_slab_table("birch", S("Birch Slab Table"), "mcl_core:birchwood", "mcl_core_planks_birch.png")
|
||||
|
||||
-- support for MineClone 5
|
||||
if minetest.get_modpath("mcl_mushroom") then
|
||||
mcl_decor.register_chair_and_table("crimson", S("Crimson Chair"), S("Crimson Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
|
||||
mcl_decor.register_chair_and_table("warped", S("Warped Chair"), S("Warped Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
|
||||
mcl_decor.register_slab_table("crimson", S("Crimson Slab Table"), "mcl_mushroom:crimson_hyphae_wood", "crimson_hyphae_wood.png", "1")
|
||||
mcl_decor.register_slab_table("warped", S("Warped Slab Table"), "mcl_mushroom:warped_hyphae_wood", "warped_hyphae_wood.png", "1")
|
||||
end
|
||||
|
||||
|
||||
|
||||
--- Armchairs ---
|
||||
mcl_decor.register_armchair("mcl_decor:white_armchair", S("White Armchair"), "mcl_wool:white", "wool_white.png", "white", "unicolor_white")
|
||||
mcl_decor.register_armchair("mcl_decor:grey_armchair", S("Grey Armchair"), "mcl_wool:grey", "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
|
||||
mcl_decor.register_armchair("mcl_decor:silver_armchair", S("Light Grey Armchair"), "mcl_wool:silver", "wool_grey.png", "grey", "unicolor_grey")
|
||||
mcl_decor.register_armchair("mcl_decor:black_armchair", S("Black Armchair"), "mcl_wool:black", "wool_black.png", "black", "unicolor_black")
|
||||
mcl_decor.register_armchair("mcl_decor:red_armchair", S("Red Armchair"), "mcl_wool:red", "wool_red.png", "red", "unicolor_red")
|
||||
mcl_decor.register_armchair("mcl_decor:yellow_armchair", S("Yellow Armchair"), "mcl_wool:yellow", "wool_yellow.png", "yellow", "unicolor_yellow")
|
||||
mcl_decor.register_armchair("mcl_decor:green_armchair", S("Green Armchair"), "mcl_wool:green", "wool_dark_green.png", "dark_green", "unicolor_dark_green")
|
||||
mcl_decor.register_armchair("mcl_decor:cyan_armchair", S("Cyan Armchair"), "mcl_wool:cyan", "wool_cyan.png", "cyan", "unicolor_cyan")
|
||||
mcl_decor.register_armchair("mcl_decor:blue_armchair", S("Blue Armchair"), "mcl_wool:blue", "wool_blue.png", "blue", "unicolor_blue")
|
||||
mcl_decor.register_armchair("mcl_decor:magenta_armchair", S("Magenta Armchair"), "mcl_wool:magenta", "wool_magenta.png", "magenta", "unicolor_red_violet")
|
||||
mcl_decor.register_armchair("mcl_decor:orange_armchair", S("Orange Armchair"), "mcl_wool:orange", "wool_orange.png", "orange", "unicolor_orange")
|
||||
mcl_decor.register_armchair("mcl_decor:purple_armchair", S("Purple Armchair"), "mcl_wool:purple", "wool_violet.png", "violet", "unicolor_violet")
|
||||
mcl_decor.register_armchair("mcl_decor:brown_armchair", S("Brown Armchair"), "mcl_wool:brown", "wool_brown.png", "brown", "unicolor_dark_orange")
|
||||
mcl_decor.register_armchair("mcl_decor:pink_armchair", S("Pink Armchair"), "mcl_wool:pink", "wool_pink.png", "pink", "unicolor_light_red")
|
||||
mcl_decor.register_armchair("mcl_decor:lime_armchair", S("Lime Armchair"), "mcl_wool:lime", "mcl_wool_lime.png", "green", "unicolor_green")
|
||||
mcl_decor.register_armchair("mcl_decor:light_blue_armchair", S("Light Blue Armchair"), "mcl_wool:light_blue", "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
|
||||
mcl_decor.register_armchair("white", S("White Armchair"), "wool_white.png", "white", "unicolor_white")
|
||||
mcl_decor.register_armchair("grey", S("Grey Armchair"), "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
|
||||
mcl_decor.register_armchair("silver", S("Light Grey Armchair"), "wool_grey.png", "grey", "unicolor_grey")
|
||||
mcl_decor.register_armchair("black", S("Black Armchair"), "wool_black.png", "black", "unicolor_black")
|
||||
mcl_decor.register_armchair("red", S("Red Armchair"), "wool_red.png", "red", "unicolor_red")
|
||||
mcl_decor.register_armchair("yellow", S("Yellow Armchair"), "wool_yellow.png", "yellow", "unicolor_yellow")
|
||||
mcl_decor.register_armchair("green", S("Green Armchair"), "wool_dark_green.png", "dark_green", "unicolor_dark_green")
|
||||
mcl_decor.register_armchair("cyan", S("Cyan Armchair"), "wool_cyan.png", "cyan", "unicolor_cyan")
|
||||
mcl_decor.register_armchair("blue", S("Blue Armchair"), "wool_blue.png", "blue", "unicolor_blue")
|
||||
mcl_decor.register_armchair("magenta", S("Magenta Armchair"), "wool_magenta.png", "magenta", "unicolor_red_violet")
|
||||
mcl_decor.register_armchair("orange", S("Orange Armchair"), "wool_orange.png", "orange", "unicolor_orange")
|
||||
mcl_decor.register_armchair("purple", S("Purple Armchair"), "wool_violet.png", "violet", "unicolor_violet")
|
||||
mcl_decor.register_armchair("brown", S("Brown Armchair"), "wool_brown.png", "brown", "unicolor_dark_orange")
|
||||
mcl_decor.register_armchair("pink", S("Pink Armchair"), "wool_pink.png", "pink", "unicolor_light_red")
|
||||
mcl_decor.register_armchair("lime", S("Lime Armchair"), "mcl_wool_lime.png", "green", "unicolor_green")
|
||||
mcl_decor.register_armchair("light_blue", S("Light Blue Armchair"), "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
|
||||
|
||||
|
||||
|
||||
--- Curtains ---
|
||||
mcl_decor.register_curtains("white", S("White Curtains"), "mcl_wool:white", "wool_white.png", "white", "unicolor_white")
|
||||
mcl_decor.register_curtains("grey", S("Grey Curtains"), "mcl_wool:grey", "wool_dark_grey.png", "dark_grey", "unicolor_darkgrey")
|
||||
mcl_decor.register_curtains("silver", S("Light Grey Curtains"), "mcl_wool:silver", "wool_grey.png", "grey", "unicolor_grey")
|
||||
mcl_decor.register_curtains("black", S("Black Curtains"), "mcl_wool:black", "wool_black.png", "black", "unicolor_black")
|
||||
mcl_decor.register_curtains("red", S("Red Curtains"), "mcl_wool:red", "wool_red.png", "red", "unicolor_red")
|
||||
mcl_decor.register_curtains("yellow", S("Yellow Curtains"), "mcl_wool:yellow", "wool_yellow.png", "yellow", "unicolor_yellow")
|
||||
mcl_decor.register_curtains("green", S("Green Curtains"), "mcl_wool:green", "wool_dark_green.png", "dark_green", "unicolor_dark_green")
|
||||
mcl_decor.register_curtains("cyan", S("Cyan Curtains"), "mcl_wool:cyan", "wool_cyan.png", "cyan", "unicolor_cyan")
|
||||
mcl_decor.register_curtains("blue", S("Blue Curtains"), "mcl_wool:blue", "wool_blue.png", "blue", "unicolor_blue")
|
||||
mcl_decor.register_curtains("magenta", S("Magenta Curtains"), "mcl_wool:magenta", "wool_magenta.png", "magenta", "unicolor_red_violet")
|
||||
mcl_decor.register_curtains("orange", S("Orange Curtains"), "mcl_wool:orange", "wool_orange.png", "orange", "unicolor_orange")
|
||||
mcl_decor.register_curtains("purple", S("Purple Curtains"), "mcl_wool:purple", "wool_violet.png", "violet", "unicolor_violet")
|
||||
mcl_decor.register_curtains("brown", S("Brown Curtains"), "mcl_wool:brown", "wool_brown.png", "brown", "unicolor_dark_orange")
|
||||
mcl_decor.register_curtains("pink", S("Pink Curtains"), "mcl_wool:pink", "wool_pink.png", "pink", "unicolor_light_red")
|
||||
mcl_decor.register_curtains("lime", S("Lime Curtains"), "mcl_wool:lime", "mcl_wool_lime.png", "green", "unicolor_green")
|
||||
mcl_decor.register_curtains("light_blue", S("Light Blue Curtains"), "mcl_wool:light_blue", "mcl_wool_light_blue.png", "lightblue", "unicolor_light_blue")
|
||||
|
||||
|
||||
|
||||
--- Dyed Planks ---
|
||||
mcl_decor.register_dyed_planks("white_planks", S("White Planks"), "#EDEDED", "white", "unicolor_white")
|
||||
mcl_decor.register_dyed_planks("grey_planks", S("Grey Planks"), "#5F5F5F", "dark_grey", "unicolor_darkgrey")
|
||||
mcl_decor.register_dyed_planks("silver_planks", S("Light Grey Planks"), "#8C8C8C", "grey", "unicolor_grey")
|
||||
mcl_decor.register_dyed_planks("black_planks", S("Black Planks"), "#030303", "black", "unicolor_black")
|
||||
mcl_decor.register_dyed_planks("red_planks", S("Red Planks"), "#BD0000", "red", "unicolor_red")
|
||||
mcl_decor.register_dyed_planks("yellow_planks", S("Yellow Planks"), "#EBD800", "yellow", "unicolor_yellow")
|
||||
mcl_decor.register_dyed_planks("green_planks", S("Green Planks"), "#086400", "dark_green", "unicolor_dark_green")
|
||||
mcl_decor.register_dyed_planks("cyan_planks", S("Cyan Planks"), "#00C4B4", "cyan", "unicolor_cyan")
|
||||
mcl_decor.register_dyed_planks("blue_planks", S("Blue Planks"), "#0B1E80", "blue", "unicolor_blue")
|
||||
mcl_decor.register_dyed_planks("magenta_planks", S("Magenta Planks"), "#954395", "magenta", "unicolor_red_violet")
|
||||
mcl_decor.register_dyed_planks("orange_planks", S("Orange Planks"), "#E68200", "orange", "unicolor_orange")
|
||||
mcl_decor.register_dyed_planks("purple_planks", S("Purple Planks"), "#461A6D", "violet", "unicolor_violet")
|
||||
mcl_decor.register_dyed_planks("brown_planks", S("Brown Planks"), "#432209", "brown", "unicolor_dark_orange")
|
||||
mcl_decor.register_dyed_planks("pink_planks", S("Pink Planks"), "#ED9BB4", "pink", "unicolor_light_red")
|
||||
mcl_decor.register_dyed_planks("lime_planks", S("Lime Planks"), "#B3DF86", "green", "unicolor_green")
|
||||
mcl_decor.register_dyed_planks("light_blue_planks", S("Light Blue Planks"), "#72A4D4", "lightblue", "unicolor_light_blue")
|
||||
mcl_decor.register_dyed_planks("white", S("White Planks"), "#EDEDED", "white", "unicolor_white")
|
||||
mcl_decor.register_dyed_planks("grey", S("Grey Planks"), "#5F5F5F", "dark_grey", "unicolor_darkgrey")
|
||||
mcl_decor.register_dyed_planks("silver", S("Light Grey Planks"), "#8C8C8C", "grey", "unicolor_grey")
|
||||
mcl_decor.register_dyed_planks("black", S("Black Planks"), "#030303", "black", "unicolor_black")
|
||||
mcl_decor.register_dyed_planks("red", S("Red Planks"), "#BD0000", "red", "unicolor_red")
|
||||
mcl_decor.register_dyed_planks("yellow", S("Yellow Planks"), "#EBD800", "yellow", "unicolor_yellow")
|
||||
mcl_decor.register_dyed_planks("green", S("Green Planks"), "#086400", "dark_green", "unicolor_dark_green")
|
||||
mcl_decor.register_dyed_planks("cyan", S("Cyan Planks"), "#00C4B4", "cyan", "unicolor_cyan")
|
||||
mcl_decor.register_dyed_planks("blue", S("Blue Planks"), "#0B1E80", "blue", "unicolor_blue")
|
||||
mcl_decor.register_dyed_planks("magenta", S("Magenta Planks"), "#954395", "magenta", "unicolor_red_violet")
|
||||
mcl_decor.register_dyed_planks("orange", S("Orange Planks"), "#E68200", "orange", "unicolor_orange")
|
||||
mcl_decor.register_dyed_planks("purple", S("Purple Planks"), "#461A6D", "violet", "unicolor_violet")
|
||||
mcl_decor.register_dyed_planks("brown", S("Brown Planks"), "#432209", "brown", "unicolor_dark_orange")
|
||||
mcl_decor.register_dyed_planks("pink", S("Pink Planks"), "#ED9BB4", "pink", "unicolor_light_red")
|
||||
mcl_decor.register_dyed_planks("lime", S("Lime Planks"), "#B3DF86", "green", "unicolor_green")
|
||||
mcl_decor.register_dyed_planks("light_blue", S("Light Blue Planks"), "#72A4D4", "lightblue", "unicolor_light_blue")
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 193 B |
Binary file not shown.
After Width: | Height: | Size: 177 B |
Loading…
Reference in New Issue