diff --git a/mods/caverealms_lite/init.lua b/mods/caverealms_lite/init.lua index c139eb3..5996f40 100644 --- a/mods/caverealms_lite/init.lua +++ b/mods/caverealms_lite/init.lua @@ -9,7 +9,7 @@ dofile(modpath.."/crafting.lua") --crafting recipes dofile(modpath.."/nodes.lua") --node definitions dofile(modpath.."/functions.lua") --function definitions dofile(modpath.."/plants.lua") ---dofile(modpath.."/abms.lua") +dofile(modpath.."/abms.lua") -- Parameters diff --git a/mods/hbhunger/hunger.lua b/mods/hbhunger/hunger.lua index 05f3564..01cb27f 100644 --- a/mods/hbhunger/hunger.lua +++ b/mods/hbhunger/hunger.lua @@ -67,7 +67,7 @@ local function poisenp(tick, time, time_left, player) if player:get_hp()-1 > 0 then player:set_hp(player:get_hp()-1) end - + end function hbhunger.item_eat(hunger_change, replace_with_item, poisen, heal, sound) @@ -146,7 +146,7 @@ if minetest.get_modpath("mobs") ~= nil then hbhunger.register_food("mobs:chicken_cooked", 6) hbhunger.register_food("mobs:chicken_raw", 2, "", 3) hbhunger.register_food("mobs:chicken_egg_fried", 2) - if minetest.get_modpath("bucket") then + if minetest.get_modpath("bucket") then hbhunger.register_food("mobs:bucket_milk", 3, "bucket:bucket_empty") end else @@ -361,7 +361,7 @@ if minetest.get_modpath("farming") and farming.mod == "redo" then hbhunger.register_food("farming:cucumber", 4) hbhunger.register_food("farming:tomato", 4) hbhunger.register_food("farming:carrot", 3) - hbhunger.register_food("farming:carrot_gold", 6, "", nil, 8) + hbhunger.register_food("farming:carrot_gold", 20, "", nil, 8) hbhunger.register_food("farming:corn", 3) hbhunger.register_food("farming:corn_cob", 5) hbhunger.register_food("farming:melon_slice", 2) diff --git a/mods/pkarcs/init.lua b/mods/pkarcs/init.lua index a496419..c71e419 100644 --- a/mods/pkarcs/init.lua +++ b/mods/pkarcs/init.lua @@ -206,6 +206,7 @@ pkarcs.register_node("default:obsidianbrick") pkarcs.register_node("default:obsidian_block") function pkarcs.register_craft(station, mod, node) + pkarcs.register_node(mod..':'..node) stations.dual_register_recipe(station, { input = { diff --git a/mods/smartshop/init.lua b/mods/smartshop/init.lua index 8815125..2d3a7c7 100644 --- a/mods/smartshop/init.lua +++ b/mods/smartshop/init.lua @@ -9,687 +9,687 @@ dpos={ } minetest.register_craft({ - output = "smartshop:shop", - recipe = { - {"default:chest_locked", "default:chest_locked", "default:chest_locked"}, - {"default:sign_wall_wood", "default:chest_locked", "default:sign_wall_wood"}, - {"default:sign_wall_wood", "default:torch", "default:sign_wall_wood"}, - } + output = "smartshop:shop", + recipe = { + {"default:chest_locked", "default:chest_locked", "default:chest_locked"}, + {"default:sign_wall_wood", "default:chest_locked", "default:sign_wall_wood"}, + {"default:sign_wall_wood", "default:torch", "default:sign_wall_wood"}, + } }) minetest.register_craft({ - output = "smartshop:wifistorage", - recipe = { - {"default:mese_crystal_fragment", "default:chest_locked", "default:mese_crystal_fragment"}, - {"default:mese_crystal_fragment", "default:chest_locked", "default:mese_crystal_fragment"}, - {"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"}, - } + output = "smartshop:wifistorage", + recipe = { + {"default:mese_crystal_fragment", "default:chest_locked", "default:mese_crystal_fragment"}, + {"default:mese_crystal_fragment", "default:chest_locked", "default:mese_crystal_fragment"}, + {"default:steel_ingot", "default:copper_ingot", "default:steel_ingot"}, + } }) smartshop.strpos=function(str,spl) - if str==nil then return "" end - if spl then - local c="," - if string.find(str," ") then c=" " end - local s=str.split(str,c) - if s[3]==nil then - return nil - else - local p={x=tonumber(s[1]),y=tonumber(s[2]),z=tonumber(s[3])} - if not (p and p.x and p.y and p.z) then return nil end - return p - end - else if str and str.x and str.y and str.z then - return str.x .."," .. str.y .."," .. str.z - else - return nil - end - end + if str==nil then return "" end + if spl then + local c="," + if string.find(str," ") then c=" " end + local s=str.split(str,c) + if s[3]==nil then + return nil + else + local p={x=tonumber(s[1]),y=tonumber(s[2]),z=tonumber(s[3])} + if not (p and p.x and p.y and p.z) then return nil end + return p + end + else if str and str.x and str.y and str.z then + return str.x .."," .. str.y .."," .. str.z + else + return nil + end + end end smartshop.send_mesecon=function(pos) - if smartshop.mesecon then - mesecon.receptor_on(pos) - minetest.get_node_timer(pos):start(1) - end + if smartshop.mesecon then + mesecon.receptor_on(pos) + minetest.get_node_timer(pos):start(1) + end end smartshop.use_offer=function(pos,player,n) - local pressed={} - pressed["buy" .. n]=true - smartshop.user[player:get_player_name()]=pos - smartshop.receive_fields(player,pressed) - smartshop.user[player:get_player_name()]=nil - smartshop.update(pos) + local pressed={} + pressed["buy" .. n]=true + smartshop.user[player:get_player_name()]=pos + smartshop.receive_fields(player,pressed) + smartshop.user[player:get_player_name()]=nil + smartshop.update(pos) end smartshop.get_offer=function(pos) - if not pos or not minetest.get_node(pos) then return end - if minetest.get_node(pos).name~="smartshop:shop" then return end - local meta=minetest.get_meta(pos) - local inv=meta:get_inventory() - local offer={} - for i=1,4,1 do - offer[i]={ - give=inv:get_stack("give" .. i,1):get_name(), - give_count=inv:get_stack("give" .. i,1):get_count(), - pay=inv:get_stack("pay" .. i,1):get_name(), - pay_count=inv:get_stack("pay" .. i,1):get_count(), - } - end - return offer + if not pos or not minetest.get_node(pos) then return end + if minetest.get_node(pos).name~="smartshop:shop" then return end + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + local offer={} + for i=1,4,1 do + offer[i]={ + give=inv:get_stack("give" .. i,1):get_name(), + give_count=inv:get_stack("give" .. i,1):get_count(), + pay=inv:get_stack("pay" .. i,1):get_name(), + pay_count=inv:get_stack("pay" .. i,1):get_count(), + } + end + return offer end smartshop.receive_fields=function(player,pressed) - local pname=player:get_player_name() - local pos=smartshop.user[pname] - if not pos then - return - elseif pressed.tsend then - smartshop.add_storage[pname]={send=true,pos=pos} - minetest.after(30, function(pname) - if smartshop.add_storage[pname] then - minetest.chat_send_player(pname, "Time expired (30s)") - smartshop.add_storage[pname]=nil - end - end, pname) - minetest.chat_send_player(pname, "Open a storage owned by you") - return - elseif pressed.trefill then - smartshop.add_storage[pname]={refill=true,pos=pos} - minetest.after(30, function(pname) - if smartshop.add_storage[pname] then - minetest.chat_send_player(pname, "Time expired (30s)") - smartshop.add_storage[pname]=nil - end - end, pname) - minetest.chat_send_player(pname, "Open a storage owned by you") - return - elseif pressed.customer then - return smartshop.showform(pos,player,true) - elseif pressed.sellall then - local meta=minetest.get_meta(pos) - local pname=player:get_player_name() - if meta:get_int("sellall")==0 then - meta:set_int("sellall",1) - minetest.chat_send_player(pname, "Sell your stock and give line") - else - meta:set_int("sellall",0) - minetest.chat_send_player(pname, "Sell your stock only") - end - elseif pressed.toogleee then - local meta=minetest.get_meta(pos) - local pname=player:get_player_name() - if meta:get_int("type")==0 then - meta:set_int("type",1) - minetest.chat_send_player(pname, "Your stock is limited") - else - meta:set_int("type",0) - minetest.chat_send_player(pname, "Your stock is unlimited") - end - elseif not pressed.quit then - local n=1 - for i=1,4,1 do - n=i - if pressed["buy" .. i] then break end - end - local meta=minetest.get_meta(pos) - local type=meta:get_int("type") - local sellall=meta:get_int("sellall") - local inv=meta:get_inventory() - local pinv=player:get_inventory() - local pname=player:get_player_name() - local check_storage - if pressed["buy" .. n] then - local name=inv:get_stack("give" .. n,1):get_name() - local stack=name .." ".. inv:get_stack("give" .. n,1):get_count() - local pay=inv:get_stack("pay" .. n,1):get_name() .." ".. inv:get_stack("pay" .. n,1):get_count() - local stack_to_use="main" - if name~="" then + local pname=player:get_player_name() + local pos=smartshop.user[pname] + if not pos then + return + elseif pressed.tsend then + smartshop.add_storage[pname]={send=true,pos=pos} + minetest.after(30, function(pname) + if smartshop.add_storage[pname] then + minetest.chat_send_player(pname, "Time expired (30s)") + smartshop.add_storage[pname]=nil + end + end, pname) + minetest.chat_send_player(pname, "Open a storage owned by you") + return + elseif pressed.trefill then + smartshop.add_storage[pname]={refill=true,pos=pos} + minetest.after(30, function(pname) + if smartshop.add_storage[pname] then + minetest.chat_send_player(pname, "Time expired (30s)") + smartshop.add_storage[pname]=nil + end + end, pname) + minetest.chat_send_player(pname, "Open a storage owned by you") + return + elseif pressed.customer then + return smartshop.showform(pos,player,true) + elseif pressed.sellall then + local meta=minetest.get_meta(pos) + local pname=player:get_player_name() + if meta:get_int("sellall")==0 then + meta:set_int("sellall",1) + minetest.chat_send_player(pname, "Sell your stock and give line") + else + meta:set_int("sellall",0) + minetest.chat_send_player(pname, "Sell your stock only") + end + elseif pressed.toogleee then + local meta=minetest.get_meta(pos) + local pname=player:get_player_name() + if meta:get_int("type")==0 then + meta:set_int("type",1) + minetest.chat_send_player(pname, "Your stock is limited") + else + meta:set_int("type",0) + minetest.chat_send_player(pname, "Your stock is unlimited") + end + elseif not pressed.quit then + local n=1 + for i=1,4,1 do + n=i + if pressed["buy" .. i] then break end + end + local meta=minetest.get_meta(pos) + local type=meta:get_int("type") + local sellall=meta:get_int("sellall") + local inv=meta:get_inventory() + local pinv=player:get_inventory() + local pname=player:get_player_name() + local check_storage + if pressed["buy" .. n] then + local name=inv:get_stack("give" .. n,1):get_name() + local stack=name .." ".. inv:get_stack("give" .. n,1):get_count() + local pay=inv:get_stack("pay" .. n,1):get_name() .." ".. inv:get_stack("pay" .. n,1):get_count() + local stack_to_use="main" + if name~="" then --fast checks - if not pinv:room_for_item("main", stack) then - minetest.chat_send_player(pname, "Error: Your inventory is full, exchange aborted.") - return - elseif not pinv:contains_item("main", pay) then - minetest.chat_send_player(pname, "Error: You dont have enough in your inventory to buy this, exchange aborted.") - return - elseif type==1 and inv:room_for_item("main", pay)==false then - minetest.chat_send_player(pname, "Error: The owners stock is full, cant receive, exchange aborted.") - else - if inv:contains_item("main", stack) then - elseif sellall==1 and inv:contains_item("give" .. n, stack) then - stack_to_use="give" .. n - else - minetest.chat_send_player(pname, "Error: The owners stock is end.") - check_storage=1 - end - if not check_storage then - for i=0,32,1 do - if pinv:get_stack("main", i):get_name()==inv:get_stack("pay" .. n,1):get_name() and pinv:get_stack("main",i):get_wear()>0 then - minetest.chat_send_player(pname, "Error: your item is used") - return - end - end - local rastack=inv:remove_item(stack_to_use, stack) - pinv:remove_item("main", pay) - pinv:add_item("main",rastack) - if type==1 then inv:add_item("main",pay) end - if type==0 then inv:add_item("main", rastack) end - end - end + if not pinv:room_for_item("main", stack) then + minetest.chat_send_player(pname, "Error: Your inventory is full, exchange aborted.") + return + elseif not pinv:contains_item("main", pay) then + minetest.chat_send_player(pname, "Error: You dont have enough in your inventory to buy this, exchange aborted.") + return + elseif type==1 and inv:room_for_item("main", pay)==false then + minetest.chat_send_player(pname, "Error: The owners stock is full, cant receive, exchange aborted.") + else + if inv:contains_item("main", stack) then + elseif sellall==1 and inv:contains_item("give" .. n, stack) then + stack_to_use="give" .. n + else + minetest.chat_send_player(pname, "Error: The owners stock is end.") + check_storage=1 + end + if not check_storage then + for i=0,32,1 do + if pinv:get_stack("main", i):get_name()==inv:get_stack("pay" .. n,1):get_name() and pinv:get_stack("main",i):get_wear()>0 then + minetest.chat_send_player(pname, "Error: your item is used") + return + end + end + local rastack=inv:remove_item(stack_to_use, stack) + pinv:remove_item("main", pay) + pinv:add_item("main",rastack) + if type==1 then inv:add_item("main",pay) end + if type==0 then inv:add_item("main", rastack) end + end + end -- send to / refill from wifi storage - if type==1 then - local tsend=smartshop.strpos(meta:get_string("item_send"),1) - local trefill=smartshop.strpos(meta:get_string("item_refill"),1) - if tsend then - local m=minetest.get_meta(tsend) - local inv2=m:get_inventory() - local mes=m:get_int("mesein") - for i=1,10,1 do - if inv2:room_for_item("main", pay) and inv:contains_item("main", pay) then - inv2:add_item("main",pay) - inv:remove_item("main", pay) - if mes==1 or mes==3 then - smartshop.send_mesecon(tsend) - end - else - break - end - end - end - if trefill then - local m=minetest.get_meta(trefill) - local inv2=m:get_inventory() - local mes=m:get_int("mesein") + if type==1 then + local tsend=smartshop.strpos(meta:get_string("item_send"),1) + local trefill=smartshop.strpos(meta:get_string("item_refill"),1) + if tsend then + local m=minetest.get_meta(tsend) + local inv2=m:get_inventory() + local mes=m:get_int("mesein") + for i=1,10,1 do + if inv2:room_for_item("main", pay) and inv:contains_item("main", pay) then + inv2:add_item("main",pay) + inv:remove_item("main", pay) + if mes==1 or mes==3 then + smartshop.send_mesecon(tsend) + end + else + break + end + end + end + if trefill then + local m=minetest.get_meta(trefill) + local inv2=m:get_inventory() + local mes=m:get_int("mesein") - local space=0 + local space=0 --check if its room for other items, else the shop will stuck - for i=1,32,1 do - if inv:get_stack("main",i):get_count()==0 then - space=space+1 - end - end - for i=1,space,1 do - if ismartshop.max_wifi_distance then - minetest.chat_send_player(uname, "Too far, max distance " .. smartshop.max_wifi_distance) - end - local meta=minetest.get_meta(a.pos) - local p=smartshop.strpos(pos) - if a.send and p then - meta:set_string("item_send",p) - elseif a.refill and p then - meta:set_string("item_refill",p) - end - minetest.chat_send_player(uname, "smartshop connected") - smartshop.add_storage[uname]=nil - end + local a=smartshop.add_storage[uname] + if a then + if not a.pos then return end + if vector.distance(a.pos, pos)>smartshop.max_wifi_distance then + minetest.chat_send_player(uname, "Too far, max distance " .. smartshop.max_wifi_distance) + end + local meta=minetest.get_meta(a.pos) + local p=smartshop.strpos(pos) + if a.send and p then + meta:set_string("item_send",p) + elseif a.refill and p then + meta:set_string("item_refill",p) + end + minetest.chat_send_player(uname, "smartshop connected") + smartshop.add_storage[uname]=nil + end end minetest.register_node("smartshop:wifistorage", { - description = "Wifi storage", - tiles = {"default_chest_top.png^[colorize:#ffffff77^default_obsidian_glass.png"}, - groups = {choppy = 2, oddly_breakable_by_hand = 1,tubedevice = 1, tubedevice_receiver = 1,mesecon=2}, - paramtype = "light", - sunlight_propagates = true, - light_source = 10, - on_timer = function (pos, elapsed) - if smartshop.mesecon then - mesecon.receptor_off(pos) - end - return false - end, - tube = {insert_object = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - local added = inv:add_item("main", stack) - return added - end, - can_insert = function(pos, node, stack, direction) - local meta = minetest.get_meta(pos) - local inv = meta:get_inventory() - return inv:room_for_item("main", stack) - end, - input_inventory = "main", - connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}}, + description = "Wifi storage", + tiles = {"default_chest_top.png^[colorize:#ffffff77^default_obsidian_glass.png"}, + groups = {choppy = 2, oddly_breakable_by_hand = 1,tubedevice = 1, tubedevice_receiver = 1,mesecon=2}, + paramtype = "light", + sunlight_propagates = true, + light_source = 10, + on_timer = function (pos, elapsed) + if smartshop.mesecon then + mesecon.receptor_off(pos) + end + return false + end, + tube = {insert_object = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local added = inv:add_item("main", stack) + return added + end, + can_insert = function(pos, node, stack, direction) + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + return inv:room_for_item("main", stack) + end, + input_inventory = "main", + connect_sides = {left = 1, right = 1, front = 1, back = 1, top = 1, bottom = 1}}, after_place_node = function(pos, placer) - local meta=minetest.get_meta(pos) - local name=placer:get_player_name() - meta:set_string("owner",name) - meta:set_string("infotext", "Wifi storage by: " .. name) - end, + local meta=minetest.get_meta(pos) + local name=placer:get_player_name() + meta:set_string("owner",name) + meta:set_string("infotext", "Wifi storage by: " .. name) + end, on_construct = function(pos) - local meta=minetest.get_meta(pos) - meta:get_inventory():set_size("main", 60) - meta:set_int("mesein",0) - meta:set_string("title","wifi" .. math.random(1,999)) - end, + local meta=minetest.get_meta(pos) + meta:get_inventory():set_size("main", 60) + meta:set_int("mesein",0) + meta:set_string("title","wifi" .. math.random(1,999)) + end, on_rightclick = function(pos, node, player, itemstack, pointed_thing) - smartshop.showform2(pos,player) - end, + smartshop.showform2(pos,player) + end, allow_metadata_inventory_put = function(pos, listname, index, stack, player) - if stack:get_wear()==0 and (minetest.get_meta(pos):get_string("owner")==player:get_player_name() or minetest.check_player_privs(player:get_player_name(), {protection_bypass=true})) then - return stack:get_count() - end - return 0 - end, + if stack:get_wear()==0 and (minetest.get_meta(pos):get_string("owner")==player:get_player_name() or minetest.check_player_privs(player:get_player_name(), {protection_bypass=true})) then + return stack:get_count() + end + return 0 + end, allow_metadata_inventory_take = function(pos, listname, index, stack, player) - if minetest.get_meta(pos):get_string("owner")==player:get_player_name() or minetest.check_player_privs(player:get_player_name(), {protection_bypass=true}) then - return stack:get_count() - end - return 0 - end, + if minetest.get_meta(pos):get_string("owner")==player:get_player_name() or minetest.check_player_privs(player:get_player_name(), {protection_bypass=true}) then + return stack:get_count() + end + return 0 + end, can_dig = function(pos, player) - local meta=minetest.get_meta(pos) - local inv=meta:get_inventory() - local p=player:get_player_name() - if (meta:get_string("owner")==p or minetest.check_player_privs(p, {protection_bypass=true})) and inv:is_empty("main") or meta:get_string("owner")=="" then - return true - end - end, + local meta=minetest.get_meta(pos) + local inv=meta:get_inventory() + local p=player:get_player_name() + if (meta:get_string("owner")==p or minetest.check_player_privs(p, {protection_bypass=true})) and inv:is_empty("main") or meta:get_string("owner")=="" then + return true + end + end, }) diff --git a/mods/spawn/news.lua b/mods/spawn/news.lua index d28f2d7..636f4b1 100644 --- a/mods/spawn/news.lua +++ b/mods/spawn/news.lua @@ -1,4 +1,7 @@ local news = { + '6/30/20', + 'Wooden pkarcs can now be crafted.', + '', '6/28/20', 'Updated mobs_redo', 'Connected curtains will open and close in a group. (right-click the rightmost curtain.)', diff --git a/mods/stations/init.lua b/mods/stations/init.lua index aaa94c5..6c38d00 100644 --- a/mods/stations/init.lua +++ b/mods/stations/init.lua @@ -38,6 +38,7 @@ dofile(minetest.get_modpath('stations')..'/station_crystals.lua') dofile(minetest.get_modpath('stations')..'/station_dying.lua') dofile(minetest.get_modpath('stations')..'/station_fuel_pucks.lua') dofile(minetest.get_modpath('stations')..'/station_mortar.lua') +dofile(minetest.get_modpath('stations')..'/station_printing.lua') dofile(minetest.get_modpath('stations')..'/station_glazier.lua') dofile(minetest.get_modpath('stations')..'/station_spinning_wheel.lua') dofile(minetest.get_modpath('stations')..'/station_sewing.lua') diff --git a/mods/stations/models/stations_printing_press.obj b/mods/stations/models/stations_printing_press.obj new file mode 100644 index 0000000..eb2b004 --- /dev/null +++ b/mods/stations/models/stations_printing_press.obj @@ -0,0 +1,576 @@ +# Blender v2.82 (sub 7) OBJ File: 'stations.blend' +# www.blender.org +o Printing_press_Cube.010 +v 0.125000 -0.375000 0.437500 +v 0.125000 0.875000 0.437500 +v 0.125000 -0.375000 0.312500 +v 0.125000 0.875000 0.312500 +v 0.375000 -0.375000 0.437500 +v 0.375000 0.875000 0.437500 +v 0.375000 -0.375000 0.312500 +v 0.375000 0.875000 0.312500 +v -1.000000 0.125000 0.312500 +v -1.000000 0.250000 0.312500 +v -1.000000 0.125000 -0.312500 +v -1.000000 0.250000 -0.312500 +v 0.437500 0.125000 0.312500 +v 0.437500 0.250000 0.312500 +v 0.437500 0.125000 -0.312500 +v 0.437500 0.250000 -0.312500 +v -0.937500 -0.500000 0.250000 +v -0.937500 0.125000 0.250000 +v -0.937500 -0.500000 0.125000 +v -0.937500 0.125000 0.125000 +v -0.812500 -0.500000 0.250000 +v -0.812500 0.125000 0.250000 +v -0.812500 -0.500000 0.125000 +v -0.812500 0.125000 0.125000 +v 0.125000 -0.375000 -0.437500 +v 0.375000 -0.375000 -0.437500 +v 0.375000 0.875000 -0.437500 +v 0.062500 0.875000 0.500000 +v 0.062500 1.000000 0.500000 +v 0.062500 0.875000 -0.500000 +v 0.062500 1.000000 -0.500000 +v 0.437500 0.875000 0.500000 +v 0.437500 1.000000 0.500000 +v 0.437500 0.875000 -0.500000 +v 0.437500 1.000000 -0.500000 +v 0.062500 -0.500000 0.500000 +v 0.062500 -0.375000 0.500000 +v 0.062500 -0.500000 -0.500000 +v 0.062500 -0.375000 -0.500000 +v 0.437500 -0.500000 0.500000 +v 0.437500 -0.375000 0.500000 +v 0.437500 -0.500000 -0.500000 +v 0.437500 -0.375000 -0.500000 +v 0.125000 -0.375000 0.312500 +v 0.125000 0.125000 0.312500 +v 0.125000 -0.375000 0.187500 +v 0.125000 0.125000 0.187500 +v 0.375000 -0.375000 0.312500 +v 0.375000 0.125000 0.312500 +v 0.375000 -0.375000 0.187500 +v 0.375000 0.125000 0.187500 +v 0.375000 -0.375000 -0.312500 +v 0.375000 0.125000 -0.312500 +v 0.375000 -0.375000 -0.187500 +v 0.375000 0.125000 -0.187500 +v 0.125000 -0.375000 -0.312500 +v 0.125000 0.125000 -0.312500 +v 0.125000 -0.375000 -0.187500 +v 0.125000 0.125000 -0.187500 +v 0.125000 0.625000 0.312500 +v 0.125000 0.750000 0.312500 +v 0.125000 0.625000 -0.312500 +v 0.125000 0.750000 -0.312500 +v 0.375000 0.625000 0.312500 +v 0.375000 0.750000 0.312500 +v 0.375000 0.625000 -0.312500 +v 0.375000 0.750000 -0.312500 +v 0.187500 -0.125000 0.500000 +v 0.187500 -0.062500 0.500000 +v 0.187500 -0.125000 0.437500 +v 0.187500 -0.062500 0.437500 +v 0.312500 -0.125000 0.500000 +v 0.312500 -0.062500 0.500000 +v 0.312500 -0.125000 0.437500 +v 0.312500 -0.062500 0.437500 +v 0.187500 0.625000 0.500000 +v 0.187500 0.687500 0.500000 +v 0.187500 0.625000 0.437500 +v 0.187500 0.687500 0.437500 +v 0.312500 0.625000 0.500000 +v 0.312500 0.687500 0.500000 +v 0.312500 0.625000 0.437500 +v 0.312500 0.687500 0.437500 +v 0.312500 -0.125000 -0.500000 +v 0.312500 -0.062500 -0.500000 +v 0.312500 -0.125000 -0.437500 +v 0.312500 -0.062500 -0.437500 +v 0.187500 -0.125000 -0.500000 +v 0.187500 -0.062500 -0.500000 +v 0.187500 -0.125000 -0.437500 +v 0.187500 -0.062500 -0.437500 +v 0.312500 0.625000 -0.500000 +v 0.312500 0.687500 -0.500000 +v 0.312500 0.625000 -0.437500 +v 0.312500 0.687500 -0.437500 +v 0.187500 0.625000 -0.500000 +v 0.187500 0.687500 -0.500000 +v 0.187500 0.625000 -0.437500 +v 0.187500 0.687500 -0.437500 +v -0.937500 -0.500000 -0.125000 +v -0.937500 0.125000 -0.125000 +v -0.937500 -0.500000 -0.250000 +v -0.937500 0.125000 -0.250000 +v -0.812500 -0.500000 -0.125000 +v -0.812500 0.125000 -0.125000 +v -0.812500 -0.500000 -0.250000 +v -0.812500 0.125000 -0.250000 +v -0.937500 -0.125000 0.125000 +v -0.937500 -0.125000 -0.125000 +v -0.937500 -0.250000 0.125000 +v -0.937500 -0.250000 -0.125000 +v -0.812500 -0.125000 0.125000 +v -0.812500 -0.125000 -0.125000 +v -0.812500 -0.250000 0.125000 +v -0.812500 -0.250000 -0.125000 +v -0.687500 0.250000 0.250000 +v -0.687500 0.375000 0.250000 +v -0.687500 0.250000 -0.250000 +v -0.687500 0.375000 -0.250000 +v 0.000000 0.250000 0.250000 +v 0.000000 0.375000 0.250000 +v 0.000000 0.250000 -0.250000 +v 0.000000 0.375000 -0.250000 +v 0.000000 0.531250 0.031250 +v 0.000000 0.468750 0.031250 +v 0.297835 0.437500 -0.115485 +v 0.297835 0.562500 -0.115485 +v 0.365485 0.437500 -0.047835 +v 0.365485 0.562500 -0.047835 +v 0.365485 0.437500 0.047835 +v 0.365485 0.562500 0.047835 +v 0.297835 0.437500 0.115485 +v 0.297835 0.562500 0.115485 +v 0.202165 0.437500 0.115485 +v 0.202165 0.562500 0.115485 +v 0.134515 0.437500 0.047835 +v 0.134515 0.562500 0.047835 +v 0.134515 0.437500 -0.047835 +v 0.134515 0.562500 -0.047835 +v 0.202165 0.437500 -0.115485 +v 0.202165 0.562500 -0.115485 +v 0.000000 0.468750 -0.031250 +v 0.000000 0.531250 -0.031250 +v 0.500000 0.468750 0.031250 +v 0.500000 0.531250 0.031250 +v 0.500000 0.468750 -0.031250 +v 0.500000 0.531250 -0.031250 +v 0.281250 0.937500 0.031250 +v 0.218750 0.937500 0.031250 +v 0.218750 0.937500 -0.031250 +v 0.281250 0.937500 -0.031250 +v 0.218750 0.500000 0.031250 +v 0.281250 0.500000 0.031250 +v 0.218750 0.500000 -0.031250 +v 0.281250 0.500000 -0.031250 +v 0.125000 -0.375000 -0.312500 +v 0.125000 0.875000 -0.312500 +v 0.125000 0.875000 -0.437500 +v 0.375000 -0.375000 -0.312500 +v 0.375000 0.875000 -0.312500 +v 0.062500 -0.500000 0.500000 +v 0.062500 -0.375000 0.500000 +v 0.062500 -0.500000 -0.500000 +v 0.062500 -0.375000 -0.500000 +v 0.437500 -0.500000 0.500000 +v 0.437500 -0.375000 0.500000 +v 0.437500 -0.500000 -0.500000 +v 0.437500 -0.375000 -0.500000 +v -1.000000 0.125000 -0.250000 +v -1.000000 0.250000 -0.250000 +v 0.437500 0.125000 -0.250000 +v 0.437500 0.250000 -0.250000 +v -1.000000 0.125000 0.250000 +v 0.437500 0.250000 0.250000 +v -1.000000 0.250000 0.250000 +v 0.437500 0.125000 0.250000 +v 0.437500 0.312500 0.250000 +v 0.437500 0.312500 0.312500 +v -1.000000 0.312500 0.312500 +v -1.000000 0.312500 0.250000 +v -1.000000 0.312500 -0.250000 +v -1.000000 0.312500 -0.312500 +v 0.437500 0.312500 -0.312500 +v 0.437500 0.312500 -0.250000 +vt 0.312500 0.031250 +vt 0.000000 0.031250 +vt 0.000000 0.000000 +vt 0.312500 0.000000 +vt 0.312500 0.187500 +vt 0.000000 0.187500 +vt 0.000000 0.125000 +vt 0.312500 0.125000 +vt 0.000000 0.093750 +vt 0.312500 0.093750 +vt 0.718750 1.000000 +vt 0.687500 1.000000 +vt 0.687500 0.906250 +vt 0.718750 0.906250 +vt 0.273438 0.859375 +vt 0.242188 0.859375 +vt 0.242188 0.843750 +vt 0.273438 0.843750 +vt 0.273438 0.812500 +vt 0.632812 0.812500 +vt 0.632812 0.843750 +vt 0.632812 0.984375 +vt 0.664062 0.984375 +vt 0.664062 1.000000 +vt 0.632812 1.000000 +vt 0.632812 0.562500 +vt 0.632812 0.593750 +vt 0.273438 0.593750 +vt 0.273438 0.562500 +vt 0.273438 0.984375 +vt 0.273438 1.000000 +vt 0.679688 0.984375 +vt 0.679688 1.000000 +vt 1.000000 0.492188 +vt 0.843750 0.492188 +vt 0.843750 0.460938 +vt 1.000000 0.460938 +vt 0.843750 0.429688 +vt 1.000000 0.429688 +vt 1.000000 0.562500 +vt 0.843750 0.562500 +vt 0.843750 0.531250 +vt 1.000000 0.531250 +vt 0.828125 0.468750 +vt 0.765625 0.468750 +vt 0.765625 0.437500 +vt 0.828125 0.437500 +vt 0.828125 0.531250 +vt 0.765625 0.531250 +vt 0.765625 0.500000 +vt 0.828125 0.500000 +vt 0.312500 0.203125 +vt 0.000000 0.203125 +vt 0.000000 0.234375 +vt 0.312500 0.234375 +vt 0.000000 0.296875 +vt 0.312500 0.296875 +vt 0.000000 0.328125 +vt 0.312500 0.328125 +vt 0.000000 0.390625 +vt 0.312500 0.390625 +vt 0.968750 0.750000 +vt 0.968750 0.781250 +vt 0.718750 0.781250 +vt 0.718750 0.750000 +vt 0.718750 0.875000 +vt 0.968750 0.875000 +vt 0.968750 0.906250 +vt 1.000000 0.906250 +vt 1.000000 1.000000 +vt 0.968750 1.000000 +vt 1.000000 0.703125 +vt 0.968750 0.703125 +vt 0.968750 0.609375 +vt 1.000000 0.609375 +vt 0.718750 0.734375 +vt 0.718750 0.703125 +vt 0.968750 0.734375 +vt 0.968750 0.578125 +vt 0.718750 0.609375 +vt 0.718750 0.578125 +vt 0.687500 0.609375 +vt 0.687500 0.703125 +vt 0.257812 0.804688 +vt 0.132812 0.804688 +vt 0.132812 0.773438 +vt 0.257812 0.773438 +vt 0.132812 0.710938 +vt 0.257812 0.710938 +vt 0.132812 0.679688 +vt 0.257812 0.679688 +vt 0.000000 0.679688 +vt 0.125000 0.679688 +vt 0.125000 0.710938 +vt 0.000000 0.710938 +vt 0.125000 0.773438 +vt 0.000000 0.773438 +vt 0.125000 0.804688 +vt 0.000000 0.804688 +vt 0.000000 1.000000 +vt 0.000000 0.968750 +vt 0.156250 0.968750 +vt 0.156250 1.000000 +vt 0.156250 0.875000 +vt 0.156250 0.906250 +vt 0.000000 0.906250 +vt 0.000000 0.875000 +vt 0.156250 0.812500 +vt 0.000000 0.812500 +vt 0.281250 0.500000 +vt 0.265625 0.500000 +vt 0.265625 0.484375 +vt 0.281250 0.484375 +vt 0.343750 0.500000 +vt 0.328125 0.500000 +vt 0.328125 0.484375 +vt 0.343750 0.484375 +vt 0.281250 0.546875 +vt 0.265625 0.546875 +vt 0.265625 0.531250 +vt 0.281250 0.531250 +vt 0.296875 0.500000 +vt 0.296875 0.531250 +vt 0.250000 0.531250 +vt 0.250000 0.500000 +vt 0.343750 0.546875 +vt 0.328125 0.546875 +vt 0.328125 0.531250 +vt 0.343750 0.531250 +vt 0.359375 0.500000 +vt 0.359375 0.531250 +vt 0.312500 0.531250 +vt 0.312500 0.500000 +vt 0.406250 0.500000 +vt 0.390625 0.500000 +vt 0.390625 0.484375 +vt 0.406250 0.484375 +vt 0.453125 0.531250 +vt 0.468750 0.531250 +vt 0.468750 0.546875 +vt 0.453125 0.546875 +vt 0.406250 0.546875 +vt 0.390625 0.546875 +vt 0.390625 0.531250 +vt 0.406250 0.531250 +vt 0.421875 0.500000 +vt 0.421875 0.531250 +vt 0.375000 0.531250 +vt 0.375000 0.500000 +vt 0.453125 0.484375 +vt 0.468750 0.484375 +vt 0.468750 0.500000 +vt 0.453125 0.500000 +vt 0.437500 0.531250 +vt 0.437500 0.500000 +vt 0.484375 0.500000 +vt 0.484375 0.531250 +vt 1.000000 0.382812 +vt 0.843750 0.382812 +vt 0.843750 0.351562 +vt 1.000000 0.351562 +vt 0.843750 0.320312 +vt 1.000000 0.320312 +vt 0.843750 0.289062 +vt 1.000000 0.289062 +vt 1.000000 0.414062 +vt 0.843750 0.414062 +vt 0.828125 0.562500 +vt 0.765625 0.562500 +vt 0.000000 0.515625 +vt 0.031250 0.515625 +vt 0.031250 0.640625 +vt 0.000000 0.640625 +vt 0.031250 0.671875 +vt 0.203125 0.640625 +vt 0.203125 0.671875 +vt 0.234375 0.640625 +vt 0.203125 0.515625 +vt 0.234375 0.515625 +vt 0.203125 0.484375 +vt 0.031250 0.484375 +vt 0.179688 0.421875 +vt 0.289062 0.421875 +vt 0.289062 0.437500 +vt 0.179688 0.437500 +vt 0.937500 0.093750 +vt 0.906250 0.093750 +vt 0.906250 0.070312 +vt 0.937500 0.070312 +vt 0.015625 0.437500 +vt 0.148438 0.437500 +vt 0.148438 0.453125 +vt 0.015625 0.453125 +vt 0.906250 0.046875 +vt 0.937500 0.046875 +vt 0.148438 0.421875 +vt 0.015625 0.421875 +vt 0.015625 0.406250 +vt 0.148438 0.406250 +vt 0.906250 0.023438 +vt 0.937500 0.023438 +vt 0.289062 0.406250 +vt 0.179688 0.406250 +vt 0.015625 0.468750 +vt 0.148438 0.468750 +vt 0.906250 0.000000 +vt 0.937500 0.000000 +vt 0.000000 0.421875 +vt 0.000000 0.406250 +vt 0.937500 0.187500 +vt 0.906250 0.187500 +vt 0.906250 0.164062 +vt 0.937500 0.164062 +vt 0.179688 0.453125 +vt 0.289062 0.453125 +vt 0.906250 0.140625 +vt 0.937500 0.140625 +vt 0.960110 0.056413 +vt 0.943587 0.039890 +vt 0.943587 0.016523 +vt 0.960110 0.000000 +vt 0.983477 0.000000 +vt 1.000000 0.016523 +vt 1.000000 0.039890 +vt 0.983477 0.056413 +vt 0.164062 0.406250 +vt 0.164062 0.421875 +vt 0.906250 0.117188 +vt 0.937500 0.117188 +vt 0.289062 0.468750 +vt 0.179688 0.468750 +vt 1.000000 0.039890 +vt 0.983477 0.056413 +vt 0.960110 0.056413 +vt 0.943587 0.039890 +vt 0.943587 0.016523 +vt 0.960110 0.000000 +vt 0.983477 0.000000 +vt 1.000000 0.016523 +vt 0.664062 0.859375 +vt 0.664062 0.843750 +vt 0.679688 0.843750 +vt 0.679688 0.859375 +vt 0.632812 0.859375 +vt 0.242188 0.984375 +vt 0.242188 1.000000 +vt 0.632812 0.765625 +vt 0.273438 0.765625 +vt 0.273438 0.640625 +vt 0.632812 0.640625 +vt 0.632812 0.625000 +vt 0.273438 0.625000 +vt 0.273438 0.609375 +vt 0.632812 0.609375 +vt 0.226562 1.000000 +vt 0.226562 0.984375 +vt 0.632812 0.796875 +vt 0.273438 0.796875 +vt 0.273438 0.781250 +vt 0.632812 0.781250 +vt 0.226562 0.859375 +vt 0.226562 0.843750 +vn -1.0000 0.0000 0.0000 +vn 0.0000 0.0000 -1.0000 +vn 1.0000 0.0000 0.0000 +vn 0.0000 0.0000 1.0000 +vn 0.0000 -1.0000 0.0000 +vn 0.0000 1.0000 0.0000 +vn 0.7071 0.0000 -0.7071 +vn 0.7071 0.0000 0.7071 +vn -0.7071 0.0000 0.7071 +vn -0.7071 0.0000 -0.7071 +s off +f 1/1/1 2/2/1 4/3/1 3/4/1 +f 3/5/2 4/6/2 8/7/2 7/8/2 +f 7/8/3 8/7/3 6/9/3 5/10/3 +f 5/10/4 6/9/4 2/2/4 1/1/4 +f 30/11/2 31/12/2 35/13/2 34/14/2 +f 169/15/1 170/16/1 12/17/1 11/18/1 +f 11/18/2 12/19/2 16/20/2 15/21/2 +f 176/22/3 174/23/3 14/24/3 13/25/3 +f 13/26/4 14/27/4 10/28/4 9/29/4 +f 173/30/5 176/22/5 13/25/5 9/31/5 +f 14/24/3 174/23/3 177/32/3 178/33/3 +f 17/34/1 18/35/1 20/36/1 19/37/1 +f 19/37/2 20/36/2 24/38/2 23/39/2 +f 23/40/3 24/41/3 22/42/3 21/43/3 +f 21/43/4 22/42/4 18/35/4 17/34/4 +f 110/44/5 111/45/5 115/46/5 114/47/5 +f 112/48/6 113/49/6 109/50/6 108/51/6 +f 156/52/1 157/53/1 158/54/1 25/55/1 +f 25/55/2 158/54/2 27/56/2 26/57/2 +f 26/57/3 27/56/3 160/58/3 159/59/3 +f 159/59/4 160/58/4 157/60/4 156/61/4 +f 28/62/1 29/63/1 31/64/1 30/65/1 +f 34/14/3 35/66/3 33/67/3 32/68/3 +f 32/68/4 33/69/4 29/70/4 28/71/4 +f 30/11/5 34/14/5 32/68/5 28/71/5 +f 35/66/6 31/64/6 29/63/6 33/67/6 +f 38/72/2 39/73/2 43/74/2 42/75/2 +f 36/76/1 37/77/1 39/73/1 38/78/1 +f 42/79/3 43/74/3 41/80/3 40/81/3 +f 40/82/4 41/80/4 37/77/4 36/83/4 +f 44/84/1 45/85/1 47/86/1 46/87/1 +f 43/74/6 39/73/6 37/77/6 41/80/6 +f 46/87/2 47/86/2 51/88/2 50/89/2 +f 50/89/3 51/88/3 49/90/3 48/91/3 +f 52/92/3 53/93/3 55/94/3 54/95/3 +f 54/95/4 55/94/4 59/96/4 58/97/4 +f 58/97/1 59/96/1 57/98/1 56/99/1 +f 60/100/1 61/101/1 63/102/1 62/103/1 +f 66/104/3 67/105/3 65/106/3 64/107/3 +f 62/108/5 66/104/5 64/107/5 60/109/5 +f 67/105/6 63/102/6 61/101/6 65/106/6 +f 68/110/1 69/111/1 71/112/1 70/113/1 +f 76/114/1 77/115/1 79/116/1 78/117/1 +f 74/118/3 75/119/3 73/120/3 72/121/3 +f 72/121/4 73/120/4 69/111/4 68/110/4 +f 70/122/5 74/123/5 72/121/5 68/110/5 +f 75/124/6 71/125/6 69/111/6 73/120/6 +f 82/126/3 83/127/3 81/128/3 80/129/3 +f 80/129/4 81/128/4 77/115/4 76/114/4 +f 78/130/5 82/131/5 80/129/5 76/114/5 +f 83/132/6 79/133/6 77/115/6 81/128/6 +f 84/134/3 85/135/3 87/136/3 86/137/3 +f 92/138/3 93/139/3 95/140/3 94/141/3 +f 90/142/1 91/143/1 89/144/1 88/145/1 +f 88/145/2 89/144/2 85/135/2 84/134/2 +f 86/146/5 90/147/5 88/145/5 84/134/5 +f 91/148/6 87/149/6 85/135/6 89/144/6 +f 98/150/1 99/151/1 97/152/1 96/153/1 +f 96/153/2 97/152/2 93/139/2 92/138/2 +f 94/154/5 98/155/5 96/153/5 92/138/5 +f 99/156/6 95/157/6 93/139/6 97/152/6 +f 100/158/1 101/159/1 103/160/1 102/161/1 +f 102/161/2 103/160/2 107/162/2 106/163/2 +f 106/163/3 107/162/3 105/164/3 104/165/3 +f 104/166/4 105/167/4 101/159/4 100/158/4 +f 108/51/1 109/50/1 111/45/1 110/44/1 +f 114/168/3 115/169/3 113/49/3 112/48/3 +f 116/170/1 117/171/1 119/172/1 118/173/1 +f 118/174/2 119/172/2 123/175/2 122/176/2 +f 122/177/3 123/175/3 121/178/3 120/179/3 +f 120/180/4 121/178/4 117/171/4 116/181/4 +f 123/175/6 119/172/6 117/171/6 121/178/6 +f 155/182/3 151/183/3 148/184/3 153/185/3 +f 126/186/7 127/187/7 129/188/7 128/189/7 +f 147/190/6 143/191/6 124/192/6 145/193/6 +f 128/189/3 129/188/3 131/194/3 130/195/3 +f 142/196/5 146/197/5 144/198/5 125/199/5 +f 130/195/8 131/194/8 133/200/8 132/201/8 +f 150/202/2 151/183/2 155/182/2 154/203/2 +f 144/204/4 145/193/4 124/192/4 125/205/4 +f 132/201/4 133/200/4 135/206/4 134/207/4 +f 146/197/3 147/208/3 145/209/3 144/198/3 +f 134/210/9 135/211/9 137/212/9 136/213/9 +f 152/214/4 153/185/4 148/184/4 149/215/4 +f 142/196/2 143/191/2 147/190/2 146/197/2 +f 136/213/1 137/212/1 139/216/1 138/217/1 +f 129/218/6 127/219/6 141/220/6 139/221/6 137/222/6 135/223/6 133/224/6 131/225/6 +f 125/199/1 124/226/1 143/227/1 142/196/1 +f 138/217/10 139/216/10 141/228/10 140/229/10 +f 150/230/1 154/231/1 152/214/1 149/215/1 +f 140/229/2 141/228/2 127/187/2 126/186/2 +f 126/232/5 128/233/5 130/234/5 132/235/5 134/236/5 136/237/5 138/238/5 140/239/5 +f 172/240/3 16/241/3 183/242/3 184/243/3 +f 11/18/5 15/21/5 171/244/5 169/15/5 +f 15/21/3 16/241/3 172/240/3 171/244/3 +f 173/30/1 175/245/1 170/16/1 169/15/1 +f 9/31/1 10/246/1 175/245/1 173/30/1 +f 172/247/6 170/248/6 175/249/6 174/250/6 +f 169/15/5 171/244/5 176/22/5 173/30/5 +f 171/244/3 172/240/3 174/23/3 176/22/3 +f 177/251/6 180/252/6 179/253/6 178/254/6 +f 10/28/4 14/27/4 178/254/4 179/253/4 +f 175/245/1 10/246/1 179/255/1 180/256/1 +f 174/250/2 175/249/2 180/252/2 177/251/2 +f 183/257/6 182/258/6 181/259/6 184/260/6 +f 12/17/1 170/16/1 181/261/1 182/262/1 +f 16/20/2 12/19/2 182/258/2 183/257/2 +f 170/248/4 172/247/4 184/260/4 181/259/4 +l 168 43 +l 42 167 +l 166 41 +l 40 165 +l 163 38 +l 39 164 +l 161 36 +l 37 162 diff --git a/mods/stations/station_printing.lua b/mods/stations/station_printing.lua new file mode 100644 index 0000000..5ef03f6 --- /dev/null +++ b/mods/stations/station_printing.lua @@ -0,0 +1,119 @@ +minetest.register_node('stations:printing_press', { + description = 'Printing Press', + drawtype = 'mesh', + mesh = 'stations_printing_press.obj', + tiles = {'stations_printing_press.png'}, + sounds = default.node_sound_wood_defaults(), + paramtype2 = 'facedir', + paramtype = 'light', + selection_box = { + type = 'fixed', + fixed = { + {-.5, .4, -.5, 0, 1, .5}, --Upright + {-.5, -.5, -.5, 1, .4, .5}, --base + } + }, + collision_box = { + type = 'fixed', + fixed = {-.5, -.5, -.5, 1, .4, .5}, --base + }, + groups = {not_in_creative_inventory=1, oddly_breakable_by_hand=3, choppy=1}, + after_place_node = function(pos, placer) + if not epic.space_to_side(pos) then + minetest.remove_node(pos) + return itemstack + else + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + inv:set_size('master', 1) + inv:set_size('input', 1) + inv:set_size('output', 1) + meta:set_string('infotext', 'printing press') + meta:set_string('owner' , placer:get_player_name()) + end + end, + after_dig_node = function(pos, oldnode, oldmetadata, digger) + epic.remove_side_node(pos, oldnode) + end, + allow_metadata_inventory_put = function(pos, listname, index, stack, player) + if listname == 'output' then + return 0 + elseif listname == 'master' then + local meta = minetest.get_meta(pos) + local name = player:get_player_name() + local owner = meta:get_string('owner') + if name == owner then + if stack:get_name() == ('default:book_written') then + return 1 + else + return 0 + end + else + return 0 + end + elseif listname == 'input' then + if stack:get_name() == ('default:book') then + return 1 + else + return 0 + end + end + end, + allow_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + return 0 + end, + on_rightclick = function(pos, node, player, itemstack, pointed_thing) + local meta=minetest.get_meta(pos) + local name = player:get_player_name() + local owner = meta:get_string('owner') + local spos = pos.x..','..pos.y..','..pos.z + local gui = 'size[8,7;]'.. + 'label[5,0.25;Master Copy:]'.. + 'list[nodemeta:'..spos..';master;4,0;1,1]'.. + 'label[1.5,1.25;Empty Book.]'.. + 'list[nodemeta:'..spos..';input;.5,1;1,1;]'.. + 'label[1.5,2.25;Printed Copy.]'.. + 'list[nodemeta:'..spos..';output;.5,2;1,1;]'.. + 'button[4.5,1.5;2,1;copy;Print a copy!]'.. + 'list[current_player;main;0,3;8,4;]' + meta:set_string('formspec', gui) + end, + on_receive_fields = function(pos, formname, fields, sender) + local meta = minetest.get_meta(pos) + if fields ['copy'] then + local meta = minetest.get_meta(pos) + local inv = meta:get_inventory() + local master_stack = inv:get_stack('master', 1) + local input_stack = inv:get_stack('input', 1) + local master_book = master_stack:get_name() + local empty_book = input_stack:get_name() + if master_book == 'default:book_written' then + if empty_book == 'default:book' then + inv:add_item('output', 'default:book_written') + input_stack:take_item(1) + local output = inv:get_stack('output', 1) + local copymeta = master_stack:get_meta():to_table() + output:get_meta():from_table(copymeta) + inv:set_stack('output', 1, output) + inv:set_stack('input', 1, input_stack) + end + end + end + end, + allow_metadata_inventory_take = function(pos, listname, index, stack, player) + local meta = minetest.get_meta(pos) + local name = player:get_player_name() + local owner = meta:get_string('owner') + if listname == 'master' then + if name == owner then + return 1 + else + return 0 + end + elseif listname == 'input' then + return 1 + elseif listname == 'output' then + return 1 + end + end, +}) diff --git a/mods/stations/station_sewing.lua b/mods/stations/station_sewing.lua index 4ff818c..5336937 100644 --- a/mods/stations/station_sewing.lua +++ b/mods/stations/station_sewing.lua @@ -24,9 +24,10 @@ local sewing_table_def = { if not epic.space_to_side(pos) then minetest.remove_node(pos) return itemstack + else + local meta = minetest.get_meta(pos) + meta:set_string('infotext', 'Sewing Station') end - local meta = minetest.get_meta(pos) - meta:set_string('infotext', 'Sewing Station') end, after_dig_node = function(pos, oldnode, oldmetadata, digger) epic.remove_side_node(pos, oldnode) @@ -68,9 +69,10 @@ local sewing_locked_def = { if not epic.space_to_side(pos) then minetest.remove_node(pos) return itemstack + else + local meta = minetest.get_meta(pos) + meta:set_string('infotext', 'Sewing Station (locked)') end - local meta = minetest.get_meta(pos) - meta:set_string('infotext', 'Sewing Station (locked)') end, after_dig_node = function(pos, oldnode, oldmetadata, digger) epic.remove_side_node(pos, oldnode) diff --git a/mods/stations/textures/stations_printing_press.png b/mods/stations/textures/stations_printing_press.png new file mode 100644 index 0000000..9b6cb6b Binary files /dev/null and b/mods/stations/textures/stations_printing_press.png differ