forked from Mineclonia/Mineclonia
Compare commits
19 Commits
formspec-u
...
issue-temp
Author | SHA1 | Date |
---|---|---|
|
538e3b7e35 | |
|
42205639f6 | |
|
dd8bcaec50 | |
|
4dd1b00a0a | |
|
32c7fe4741 | |
|
c9c568847c | |
|
838bf0034f | |
|
7f9ad443ac | |
|
1738d57a2c | |
|
438e91d212 | |
|
9875183a6f | |
|
95af8196a2 | |
|
f3b0285347 | |
|
4c61fc80c6 | |
|
7ea25ab172 | |
|
d9bbf4879c | |
|
a9d4a85e9a | |
|
ee9f49b86e | |
|
74d4986d1d |
|
@ -0,0 +1,38 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
name: "Bug Report"
|
||||||
|
about: "Use this for when something's broken."
|
||||||
|
labels:
|
||||||
|
- bug
|
||||||
|
- unconfirmed
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
##### What happened?
|
||||||
|
|
||||||
|
<!-- Describe what's wrong. -->
|
||||||
|
|
||||||
|
##### What did I expect?
|
||||||
|
|
||||||
|
<!-- Describe what should be happening instead -->
|
||||||
|
|
||||||
|
##### How to get it to happen
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Write down exactly what you did to get the bug to happen
|
||||||
|
If you need more steps, just keep adding numbers. If you
|
||||||
|
don't need them all, delete the empty numbers.
|
||||||
|
-->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
##### Environment
|
||||||
|
|
||||||
|
Mineclonia Version: <!-- Paste the version of Mineclonia here, if you know it. -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Please refer to https://git.minetest.land/Mineclonia/Mineclonia/wiki/Reporting-Bugs
|
||||||
|
if you need help finding your Minetest version.
|
||||||
|
-->
|
||||||
|
Minetest Version:
|
|
@ -0,0 +1,22 @@
|
||||||
|
---
|
||||||
|
|
||||||
|
name: "Feature Request"
|
||||||
|
about: "Mineclonia doesn't do something you need it to"
|
||||||
|
labels:
|
||||||
|
- "feature request"
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
##### Problem
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe what's wrong.
|
||||||
|
|
||||||
|
If you're reporting a missing feature from Minecraft,
|
||||||
|
please include a link to the Minetest wiki or Mojang bug
|
||||||
|
tracker entry describing that feature.
|
||||||
|
-->
|
||||||
|
|
||||||
|
##### Solution
|
||||||
|
|
||||||
|
<!-- Write down an example of what you'd like to happen. -->
|
|
@ -0,0 +1,51 @@
|
||||||
|
<!--
|
||||||
|
Please include the main mod this PR affects in the title, including
|
||||||
|
the leading directory. For example, if you have added a new
|
||||||
|
type of banner to mcl_banners, the title should look like:
|
||||||
|
|
||||||
|
items/mcl_banners: add new banner type
|
||||||
|
|
||||||
|
-->
|
||||||
|
##### Problem
|
||||||
|
TRACKING ISSUE: #<!-- Tracking issue number -->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Describe WHAT problem this pull request solves.
|
||||||
|
If the tracking issue includes all the needed
|
||||||
|
information, you can leave this section empty.
|
||||||
|
-->
|
||||||
|
|
||||||
|
##### Solution
|
||||||
|
|
||||||
|
<!-- Describe HOW this pull request solves its problem. -->
|
||||||
|
|
||||||
|
##### Details
|
||||||
|
|
||||||
|
<!-- Include any additional information here. -->
|
||||||
|
|
||||||
|
##### Testing Steps
|
||||||
|
|
||||||
|
<!--
|
||||||
|
Write how we can verify this patch addresses its problem.
|
||||||
|
If you need more steps, just keep adding numbers. If you
|
||||||
|
don't need them all, delete the empty numbers.
|
||||||
|
-->
|
||||||
|
1.
|
||||||
|
2.
|
||||||
|
3.
|
||||||
|
|
||||||
|
<!--
|
||||||
|
If your pull request still needs work, uncomment the
|
||||||
|
following section and include a list of things that
|
||||||
|
need to be done before it's ready for us to look at.
|
||||||
|
|
||||||
|
Please remember to put WIP: in front of the title as well.
|
||||||
|
-->
|
||||||
|
|
||||||
|
<!--
|
||||||
|
##### To do
|
||||||
|
|
||||||
|
- [ ] Item 1
|
||||||
|
- [ ] Item 2
|
||||||
|
- [ ] Item 3
|
||||||
|
-->
|
|
@ -57,46 +57,44 @@ local function compute_sphere_rays(radius)
|
||||||
local rays = {}
|
local rays = {}
|
||||||
local sphere = {}
|
local sphere = {}
|
||||||
|
|
||||||
for i=1, 2 do
|
local function add_ray(pos)
|
||||||
|
sphere[minetest.hash_node_position(pos)] = pos
|
||||||
|
end
|
||||||
|
|
||||||
|
for y = -radius, radius do
|
||||||
|
for z = -radius, radius do
|
||||||
|
for x = -radius, 0 do
|
||||||
|
local d = x * x + y * y + z * z
|
||||||
|
if d <= radius * radius then
|
||||||
|
add_ray(vector.new(x, y, z))
|
||||||
|
add_ray(vector.new(-x, y, z))
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for x = -radius, radius do
|
||||||
|
for z = -radius, radius do
|
||||||
|
for y = -radius, 0 do
|
||||||
|
local d = x * x + y * y + z * z
|
||||||
|
if d <= radius * radius then
|
||||||
|
add_ray(vector.new(x, y, z))
|
||||||
|
add_ray(vector.new(x, -y, z))
|
||||||
|
break
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
|
|
||||||
|
for x = -radius, radius do
|
||||||
for y = -radius, radius do
|
for y = -radius, radius do
|
||||||
for z = -radius, radius do
|
for z = -radius, 0 do
|
||||||
for x = -radius, 0, 1 do
|
local d = x * x + y * y + z * z
|
||||||
local d = x * x + y * y + z * z
|
if d <= radius * radius then
|
||||||
if d <= radius * radius then
|
add_ray(vector.new(x, y, z))
|
||||||
local pos = { x = x, y = y, z = z }
|
add_ray(vector.new(x, y, -z))
|
||||||
sphere[minetest.hash_node_position(pos)] = pos
|
break
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for i=1,2 do
|
|
||||||
for x = -radius, radius do
|
|
||||||
for z = -radius, radius do
|
|
||||||
for y = -radius, 0, 1 do
|
|
||||||
local d = x * x + y * y + z * z
|
|
||||||
if d <= radius * radius then
|
|
||||||
local pos = { x = x, y = y, z = z }
|
|
||||||
sphere[minetest.hash_node_position(pos)] = pos
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
for i=1,2 do
|
|
||||||
for x = -radius, radius do
|
|
||||||
for y = -radius, radius do
|
|
||||||
for z = -radius, 0, 1 do
|
|
||||||
local d = x * x + y * y + z * z
|
|
||||||
if d <= radius * radius then
|
|
||||||
local pos = { x = x, y = y, z = z }
|
|
||||||
sphere[minetest.hash_node_position(pos)] = pos
|
|
||||||
break
|
|
||||||
end
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
@ -253,12 +251,12 @@ local function trace_explode(pos, strength, raydirs, radius, info, puncher)
|
||||||
|
|
||||||
if collisionbox then
|
if collisionbox then
|
||||||
-- Create rays from random points in the collision box
|
-- Create rays from random points in the collision box
|
||||||
local x1 = collisionbox[1] * 2
|
local x1 = collisionbox[1]
|
||||||
local y1 = collisionbox[2] * 2
|
local y1 = collisionbox[2]
|
||||||
local z1 = collisionbox[3] * 2
|
local z1 = collisionbox[3]
|
||||||
local x2 = collisionbox[4] * 2
|
local x2 = collisionbox[4]
|
||||||
local y2 = collisionbox[5] * 2
|
local y2 = collisionbox[5]
|
||||||
local z2 = collisionbox[6] * 2
|
local z2 = collisionbox[6]
|
||||||
local x_len = math.abs(x2 - x1)
|
local x_len = math.abs(x2 - x1)
|
||||||
local y_len = math.abs(y2 - y1)
|
local y_len = math.abs(y2 - y1)
|
||||||
local z_len = math.abs(z2 - z1)
|
local z_len = math.abs(z2 - z1)
|
||||||
|
|
|
@ -9,31 +9,3 @@ function mcl_formspec.get_itemslot_bg(x, y, w, h)
|
||||||
end
|
end
|
||||||
return out
|
return out
|
||||||
end
|
end
|
||||||
|
|
||||||
-- From the Minetest Lua API doc, "Migrating to Real Coordinates"
|
|
||||||
local padding, spacing = 3/8, 5/4
|
|
||||||
|
|
||||||
function mcl_formspec.size2r(w, h)
|
|
||||||
return (((w-1)*spacing) + (padding*2) + 1)..","..(((h-1)*spacing) + (padding*2) + 1)
|
|
||||||
end
|
|
||||||
|
|
||||||
local function i2r(i)
|
|
||||||
return (i*spacing)+padding
|
|
||||||
end
|
|
||||||
mcl_formspec.i2r=i2r
|
|
||||||
|
|
||||||
function mcl_formspec.xy2r(x, y)
|
|
||||||
return i2r(x)..","..i2r(y)
|
|
||||||
end
|
|
||||||
|
|
||||||
function mcl_formspec.get_itemslot_bgv2(x, y, w, h)
|
|
||||||
local out = ""
|
|
||||||
x=i2r(x)-padding
|
|
||||||
y=i2r(y)-padding
|
|
||||||
for i = 0, w - 1, 1 do
|
|
||||||
for j = 0, h - 1, 1 do
|
|
||||||
out = out .."image["..x+i2r(i)..","..y+i2r(j)..";1,1;mcl_formspec_itemslot.png]"
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return out
|
|
||||||
end
|
|
||||||
|
|
|
@ -144,47 +144,6 @@ local on_destruct_hanging_banner = function(pos)
|
||||||
return on_destruct_banner(pos, true)
|
return on_destruct_banner(pos, true)
|
||||||
end
|
end
|
||||||
|
|
||||||
local function escape(text)
|
|
||||||
return text:gsub("%^", "\\%^"):gsub(":", "\\:") -- :gsub("%(", "\\%("):gsub("%)", "\\%)")
|
|
||||||
end
|
|
||||||
|
|
||||||
local make_banner_overlay = function(base_color, layers)
|
|
||||||
local colorize = mcl_banners.colors[base_color][4]
|
|
||||||
-- Base texture with base color
|
|
||||||
local base = "(mcl_banners_item_base.png^(mcl_banners_item_overlay.png^[colorize:"..colorize..":"..base_color_ratio..")^[resize:32x32)"
|
|
||||||
|
|
||||||
-- Optional pattern layers
|
|
||||||
if layers then
|
|
||||||
local lovl = ""
|
|
||||||
for l=1, #layers do
|
|
||||||
local layerinfo = layers[l]
|
|
||||||
local pattern = "mcl_banners_" .. layerinfo.pattern .. ".png"
|
|
||||||
local color = mcl_banners.colors[layerinfo.color][4]
|
|
||||||
|
|
||||||
-- Generate layer texture
|
|
||||||
local layer = "((("..pattern.."^[mask:mcl_banners_front.png)^[colorize:"..color..":"..layer_ratio..")^[mask:"..pattern..")"
|
|
||||||
|
|
||||||
lovl = (lovl ~= "" and (lovl .. "^") or "") .. layer
|
|
||||||
end
|
|
||||||
|
|
||||||
return "[combine:32x32:0,0=" .. escape(base) .. ":7,3=" .. escape("("..lovl.."^[resize:50x38)")
|
|
||||||
end
|
|
||||||
return base
|
|
||||||
end
|
|
||||||
|
|
||||||
function mcl_banners.get_overlay(istk)
|
|
||||||
local imeta = istk:get_meta()
|
|
||||||
local layers_raw = imeta:get_string("layers")
|
|
||||||
if not layers_raw or layers_raw == "" then
|
|
||||||
return
|
|
||||||
end
|
|
||||||
local basec = imeta:get("fake_base") or istk:get_definition()._base_color
|
|
||||||
if not basec then
|
|
||||||
basec="unicolor_white"
|
|
||||||
end
|
|
||||||
return make_banner_overlay(basec, minetest.deserialize(layers_raw))
|
|
||||||
end
|
|
||||||
|
|
||||||
local make_banner_texture = function(base_color, layers)
|
local make_banner_texture = function(base_color, layers)
|
||||||
local colorize
|
local colorize
|
||||||
if mcl_banners.colors[base_color] then
|
if mcl_banners.colors[base_color] then
|
||||||
|
@ -430,6 +389,10 @@ for colorid, colortab in pairs(mcl_banners.colors) do
|
||||||
|
|
||||||
local layer = "(([combine:20x40:-2,-2="..pattern.."^[resize:16x24^[colorize:"..color..":"..layer_ratio.."))"
|
local layer = "(([combine:20x40:-2,-2="..pattern.."^[resize:16x24^[colorize:"..color..":"..layer_ratio.."))"
|
||||||
|
|
||||||
|
function escape(text)
|
||||||
|
return text:gsub("%^", "\\%^"):gsub(":", "\\:") -- :gsub("%(", "\\%("):gsub("%)", "\\%)")
|
||||||
|
end
|
||||||
|
|
||||||
finished_banner = "[combine:32x32:0,0=" .. escape(base) .. ":8,4=" .. escape(layer)
|
finished_banner = "[combine:32x32:0,0=" .. escape(base) .. ":8,4=" .. escape(layer)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
@ -457,7 +420,6 @@ for colorid, colortab in pairs(mcl_banners.colors) do
|
||||||
groups = groups,
|
groups = groups,
|
||||||
stack_max = 16,
|
stack_max = 16,
|
||||||
|
|
||||||
_base_color=colorid,
|
|
||||||
on_place = function(itemstack, placer, pointed_thing)
|
on_place = function(itemstack, placer, pointed_thing)
|
||||||
local above = pointed_thing.above
|
local above = pointed_thing.above
|
||||||
local under = pointed_thing.under
|
local under = pointed_thing.under
|
||||||
|
@ -606,7 +568,7 @@ for colorid, colortab in pairs(mcl_banners.colors) do
|
||||||
end,
|
end,
|
||||||
})
|
})
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") then
|
if minetest.get_modpath("mcl_core") and minetest.get_modpath("mcl_wool") and pattern_name == "" then
|
||||||
minetest.register_craft({
|
minetest.register_craft({
|
||||||
output = itemstring,
|
output = itemstring,
|
||||||
recipe = {
|
recipe = {
|
||||||
|
|
|
@ -485,12 +485,11 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
|
||||||
|
|
||||||
local imeta = itemstack:get_meta()
|
local imeta = itemstack:get_meta()
|
||||||
imeta:set_string("layers", minetest.serialize(layers))
|
imeta:set_string("layers", minetest.serialize(layers))
|
||||||
local idef=itemstack:get_definition()
|
|
||||||
|
|
||||||
local mname = ometa:get_string("name")
|
local mname = ometa:get_string("name")
|
||||||
-- Only change description if banner does not have a name
|
-- Only change description if banner does not have a name
|
||||||
if mname == "" then
|
if mname == "" then
|
||||||
local odesc = idef.description
|
local odesc = itemstack:get_definition().description
|
||||||
local description = mcl_banners.make_advanced_banner_description(odesc, layers)
|
local description = mcl_banners.make_advanced_banner_description(odesc, layers)
|
||||||
imeta:set_string("description", description)
|
imeta:set_string("description", description)
|
||||||
else
|
else
|
||||||
|
@ -501,13 +500,10 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
|
||||||
if craft_predict then
|
if craft_predict then
|
||||||
local itemid_prefix = "mcl_banners:banner_preview"
|
local itemid_prefix = "mcl_banners:banner_preview"
|
||||||
local coloritemid = dye_to_itemid_mapping[dye]
|
local coloritemid = dye_to_itemid_mapping[dye]
|
||||||
local is=ItemStack(itemid_prefix .. "_" .. matching_pattern .. "_" .. coloritemid)
|
return ItemStack(itemid_prefix .. "_" .. matching_pattern .. "_" .. coloritemid)
|
||||||
local im=is:get_meta()
|
else
|
||||||
im:from_table(imeta:to_table())
|
return itemstack
|
||||||
im:set_string("fake_base", idef._base_color)
|
|
||||||
return is
|
|
||||||
end
|
end
|
||||||
return itemstack
|
|
||||||
end
|
end
|
||||||
|
|
||||||
minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv)
|
minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv)
|
||||||
|
|
Binary file not shown.
Before Width: | Height: | Size: 5.2 KiB |
|
@ -0,0 +1,3 @@
|
||||||
|
mcl_init
|
||||||
|
mcl_formspec
|
||||||
|
mcl_sounds
|
|
@ -0,0 +1 @@
|
||||||
|
Adds a crafting table.
|
|
@ -1,59 +1,5 @@
|
||||||
local S = minetest.get_translator("mcl_crafting_table")
|
local S = minetest.get_translator("mcl_crafting_table")
|
||||||
local formspec_escape = minetest.formspec_escape
|
|
||||||
local show_formspec = minetest.show_formspec
|
|
||||||
local C = minetest.colorize
|
|
||||||
local text_color = "#313131"
|
|
||||||
local itemslot_bg = mcl_formspec.get_itemslot_bg
|
|
||||||
|
|
||||||
mcl_crafting_table = {
|
|
||||||
last_table={}
|
|
||||||
}
|
|
||||||
function mcl_crafting_table.show_crafting_form(player, overlay)
|
|
||||||
player:get_inventory():set_width("craft", 3)
|
|
||||||
player:get_inventory():set_size("craft", 9)
|
|
||||||
|
|
||||||
show_formspec(player:get_player_name(), "mcl_crafting_table:main",
|
|
||||||
"size[9,8.75]"..
|
|
||||||
"image[4.7,1.5;1.5,1;gui_crafting_arrow.png]"..
|
|
||||||
"label[0,4;"..formspec_escape(C(text_color, S("Inventory"))).."]".. --"#313131"
|
|
||||||
"list[current_player;main;0,4.5;9,3;9]"..
|
|
||||||
itemslot_bg(0,4.5,9,3)..
|
|
||||||
"list[current_player;main;0,7.74;9,1;]"..
|
|
||||||
itemslot_bg(0,7.74,9,1)..
|
|
||||||
"label[1.75,0;"..formspec_escape(C(text_color, S("Crafting"))).."]"..
|
|
||||||
"list[current_player;craft;1.75,0.5;3,3;]"..
|
|
||||||
itemslot_bg(1.75,0.5,3,3)..
|
|
||||||
"list[current_player;craftpreview;6.1,1.5;1,1;]"..
|
|
||||||
itemslot_bg(6.1,1.5,1,1)..
|
|
||||||
"image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]"..
|
|
||||||
"tooltip[__mcl_craftguide;"..formspec_escape(S("Recipe book")).."]"..
|
|
||||||
"listring[current_player;main]"..
|
|
||||||
"listring[current_player;craft]"..
|
|
||||||
(overlay and "image[7.1,1.5;1,1;"..formspec_escape(overlay).."]" or "")
|
|
||||||
-- The overlay can be scooted back over top of the craftpreview once this formspec is
|
|
||||||
-- updated to version 3.
|
|
||||||
)
|
|
||||||
end
|
|
||||||
|
|
||||||
if minetest.get_modpath("mcl_banners") then
|
|
||||||
minetest.register_craft_predict(function(itemstack, player, old_craft_grid, craft_inv)
|
|
||||||
if mcl_crafting_table.last_table[player:get_player_name()] then
|
|
||||||
local ovl=mcl_banners.get_overlay(itemstack)
|
|
||||||
mcl_crafting_table.show_crafting_form(player, ovl)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
|
||||||
if formname ~= "mcl_crafting_table:main" then
|
|
||||||
return false
|
|
||||||
end
|
|
||||||
if fields["quit"] then
|
|
||||||
mcl_crafting_table.last_table[player:get_player_name()]=nil
|
|
||||||
minetest.close_formspec(player:get_player_name(), formname)
|
|
||||||
end
|
|
||||||
end)
|
|
||||||
end
|
|
||||||
|
|
||||||
local show_crafting_form = mcl_crafting_table.show_crafting_form --cache function for better performances
|
|
||||||
minetest.register_node("mcl_crafting_table:crafting_table", {
|
minetest.register_node("mcl_crafting_table:crafting_table", {
|
||||||
description = S("Crafting Table"),
|
description = S("Crafting Table"),
|
||||||
_tt_help = S("3×3 crafting grid"),
|
_tt_help = S("3×3 crafting grid"),
|
||||||
|
@ -66,8 +12,27 @@ minetest.register_node("mcl_crafting_table:crafting_table", {
|
||||||
paramtype2 = "facedir",
|
paramtype2 = "facedir",
|
||||||
groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1},
|
groups = {handy=1,axey=1, deco_block=1, material_wood=1,flammable=-1},
|
||||||
on_rightclick = function(pos, node, player, itemstack)
|
on_rightclick = function(pos, node, player, itemstack)
|
||||||
mcl_crafting_table.last_table[player:get_player_name()]=node
|
player:get_inventory():set_width("craft", 3)
|
||||||
show_crafting_form(player)
|
player:get_inventory():set_size("craft", 9)
|
||||||
|
|
||||||
|
local form = "size[9,8.75]"..
|
||||||
|
"image[4.7,1.5;1.5,1;gui_crafting_arrow.png]"..
|
||||||
|
"label[0,4;"..minetest.formspec_escape(minetest.colorize("#313131", S("Inventory"))).."]"..
|
||||||
|
"list[current_player;main;0,4.5;9,3;9]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
|
||||||
|
"list[current_player;main;0,7.74;9,1;]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
|
||||||
|
"label[1.75,0;"..minetest.formspec_escape(minetest.colorize("#313131", S("Crafting"))).."]"..
|
||||||
|
"list[current_player;craft;1.75,0.5;3,3;]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(1.75,0.5,3,3)..
|
||||||
|
"list[current_player;craftpreview;6.1,1.5;1,1;]"..
|
||||||
|
mcl_formspec.get_itemslot_bg(6.1,1.5,1,1)..
|
||||||
|
"image_button[0.75,1.5;1,1;craftguide_book.png;__mcl_craftguide;]"..
|
||||||
|
"tooltip[__mcl_craftguide;"..minetest.formspec_escape(S("Recipe book")).."]"..
|
||||||
|
"listring[current_player;main]"..
|
||||||
|
"listring[current_player;craft]"
|
||||||
|
|
||||||
|
minetest.show_formspec(player:get_player_name(), "main", form)
|
||||||
end,
|
end,
|
||||||
sounds = mcl_sounds.node_sound_wood_defaults(),
|
sounds = mcl_sounds.node_sound_wood_defaults(),
|
||||||
_mcl_blast_resistance = 2.5,
|
_mcl_blast_resistance = 2.5,
|
||||||
|
|
|
@ -1,4 +1 @@
|
||||||
name = mcl_crafting_table
|
name = mcl_crafting_table
|
||||||
description = Adds a crafting table.
|
|
||||||
depends = mcl_init, mcl_formspec, mcl_sounds
|
|
||||||
optional_depends = mcl_banners
|
|
||||||
|
|
Loading…
Reference in New Issue