Added trolley, new formspec, shift+click functionality
This commit is contained in:
commit
156a0d2df4
32
LICENSE
Normal file
32
LICENSE
Normal file
@ -0,0 +1,32 @@
|
||||
Copyright (c) 2013, Brett O'Donnell http://cornernote.github.io
|
||||
All rights reserved.
|
||||
_____ _____ _____ _____ _____ _____
|
||||
| |___| __ | | |___| __ | | |___|_ _|___
|
||||
| --| . | -| | | | -_| -| | | | . | | | | -_|
|
||||
|_____|___|__|__|_|___|___|__|__|_|___|___| |_| |___|
|
||||
|
||||
|
||||
Redistribution and use in source and binary forms, with or without modification,
|
||||
are permitted provided that the following conditions are met:
|
||||
|
||||
* Redistributions of source code must retain the above copyright notice, this
|
||||
list of conditions and the following disclaimer.
|
||||
|
||||
* Redistributions in binary form must reproduce the above copyright notice, this
|
||||
list of conditions and the following disclaimer in the documentation and/or
|
||||
other materials provided with the distribution.
|
||||
|
||||
* Neither the name of the organization nor the names of its
|
||||
contributors may be used to endorse or promote products derived from
|
||||
this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
|
||||
ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
|
||||
ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
|
||||
LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
|
||||
ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
|
||||
SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
38
README.md
Normal file
38
README.md
Normal file
@ -0,0 +1,38 @@
|
||||
# Bags for Minetest
|
||||
|
||||
Allows players to craft and attach bags to their inventory to increase player item storage capacity.
|
||||
|
||||
|
||||
## Features
|
||||
|
||||
- Bags are available in inventory.
|
||||
- Multiple sized bags.
|
||||
- Bags store items permanently with the player
|
||||
|
||||
|
||||
## Resources
|
||||
|
||||
- **[Documentation](http://cornernote.github.io/minetest-bags)**
|
||||
- **[GitHub Project](https://github.com/cornernote/minetest-bags)**
|
||||
- **[Minetest Forum](http://minetest.net/forum/viewtopic.php?id=3081)**
|
||||
|
||||
|
||||
## Support
|
||||
|
||||
- Does this README need improvement? Go ahead and [suggest a change](https://github.com/cornernote/minetest-bags/edit/master/README.md).
|
||||
- Found a bug, or need help using this project? Check the [open issues](https://github.com/cornernote/minetest-bags/issues) or [create an issue](https://github.com/cornernote/minetest-bags/issues/new).
|
||||
|
||||
|
||||
## About
|
||||
|
||||
This module is open source, so it's distributed freely. If you find it useful then I ask not for your wealth, but simply to spare your time to consider the world we share by watching [Earthlings](http://earthlings.com/), a multi-award winning film available to watch online for free. A must-see for anyone who wishes to make the world a better place.
|
||||
|
||||
|
||||
## Credits
|
||||
|
||||
- Tonyka - created the amazing bag textures
|
||||
|
||||
|
||||
## License
|
||||
|
||||
[BSD-3-Clause](https://raw.github.com/cornernote/minetest-bags/master/LICENSE), Copyright © 2013-2014 [Brett O'Donnell](http://cornernote.github.io/)
|
2
depends.txt
Normal file
2
depends.txt
Normal file
@ -0,0 +1,2 @@
|
||||
default
|
||||
inventory_plus
|
192
init.lua
Normal file
192
init.lua
Normal file
@ -0,0 +1,192 @@
|
||||
--[[
|
||||
|
||||
Bags for Minetest
|
||||
|
||||
Copyright (c) 2012 cornernote, Brett O'Donnell <cornernote@gmail.com>
|
||||
Source Code: https://github.com/cornernote/minetest-bags
|
||||
License: BSD-3-Clause https://raw.github.com/cornernote/minetest-bags/master/LICENSE
|
||||
|
||||
Edited by TenPlus1
|
||||
|
||||
]]--
|
||||
|
||||
|
||||
local get_formspec = function(player, page)
|
||||
|
||||
if page == "bags" then
|
||||
|
||||
return "size[8,7.5]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots
|
||||
.."list[current_player;main;0,3.5;8,4;]"
|
||||
.."button[0,1;2,0.5;main;Back]"
|
||||
.."button[2.5,1;1.3,0.5;bag1;Bag 1]"
|
||||
.."button[2.5,2.2;1.3,0.5;bag2;Bag 2]"
|
||||
.."button[5.2,1;1.3,0.5;bag3;Bag 3]"
|
||||
.."button[5.2,2.2;1.3,0.5;bag4;Bag 4]"
|
||||
.."list[detached:"..player:get_player_name().."_bags;bag1;3.8,.8;1,1;]"
|
||||
.."list[detached:"..player:get_player_name().."_bags;bag2;3.8,2;1,1;]"
|
||||
.."list[detached:"..player:get_player_name().."_bags;bag3;6.5,.8;1,1;]"
|
||||
.."list[detached:"..player:get_player_name().."_bags;bag4;6.5,2;1,1;]"
|
||||
end
|
||||
|
||||
for i = 1, 4 do
|
||||
|
||||
if page == "bag" .. i then
|
||||
|
||||
local image = player:get_inventory():get_stack("bag"
|
||||
.. i, 1):get_definition().inventory_image
|
||||
--[[
|
||||
return "size[8,9.5]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots
|
||||
.."list[current_player;main;0,5.5;8,4;]"
|
||||
.."button[6,0.2;2,0.5;main;Main]"
|
||||
.."button[4,0.2;2,0.5;bags;Bags]"
|
||||
.."image[0,0;1,1;" .. image .. "]"
|
||||
.."list[current_player;bag" .. i .. "contents;0,1;8,4;]"
|
||||
--]]
|
||||
return "size[8,9]"
|
||||
..default.gui_bg..default.gui_bg_img..default.gui_slots
|
||||
.."list[current_player;bag" .. i .. "contents;0,0;8,4;]"
|
||||
.."button[0,4.2.2;2,0.5;main;Main]"
|
||||
.."button[6,4.2.2;2,0.5;bags;Bags]"
|
||||
.."image[3.5,4;1,1;" .. image .. "]"
|
||||
.."list[current_player;main;0,5;8,4;]"
|
||||
.. "listring[current_player;main]"
|
||||
.. "listring[current_player;bag" .. i .. "contents]"
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_on_player_receive_fields(function(player, formname, fields)
|
||||
|
||||
if fields.bags then
|
||||
inventory_plus.set_inventory_formspec(player, get_formspec(player, "bags"))
|
||||
return
|
||||
end
|
||||
|
||||
for i = 1, 4 do
|
||||
|
||||
local page = "bag" .. i
|
||||
|
||||
if fields[page] then
|
||||
|
||||
if player:get_inventory():get_stack(page, 1):get_definition().groups.bagslots == nil then
|
||||
page = "bags"
|
||||
end
|
||||
|
||||
inventory_plus.set_inventory_formspec(player, get_formspec(player, page))
|
||||
|
||||
return
|
||||
end
|
||||
end
|
||||
end)
|
||||
|
||||
minetest.register_on_joinplayer(function(player)
|
||||
|
||||
inventory_plus.register_button(player,"bags","Bags")
|
||||
|
||||
local player_inv = player:get_inventory()
|
||||
local bags_inv = minetest.create_detached_inventory(player:get_player_name().."_bags",{
|
||||
|
||||
on_put = function(inv, listname, index, stack, player)
|
||||
player:get_inventory():set_stack(listname, index, stack)
|
||||
player:get_inventory():set_size(listname.."contents", stack:get_definition().groups.bagslots)
|
||||
end,
|
||||
|
||||
on_take = function(inv, listname, index, stack, player)
|
||||
player:get_inventory():set_stack(listname, index, nil)
|
||||
end,
|
||||
|
||||
allow_put = function(inv, listname, index, stack, player)
|
||||
if stack:get_definition().groups.bagslots then
|
||||
return 1
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
|
||||
allow_take = function(inv, listname, index, stack, player)
|
||||
if player:get_inventory():is_empty(listname .. "contents") == true then
|
||||
return stack:get_count()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
end,
|
||||
|
||||
allow_move = function(inv, from_list, from_index, to_list, to_index, count, player)
|
||||
return 0
|
||||
end,
|
||||
})
|
||||
|
||||
for i = 1, 4 do
|
||||
|
||||
local bag = "bag" .. i
|
||||
|
||||
player_inv:set_size(bag, 1)
|
||||
bags_inv:set_size(bag, 1)
|
||||
bags_inv:set_stack(bag, 1, player_inv:get_stack(bag, 1))
|
||||
end
|
||||
end)
|
||||
|
||||
-- register bags items
|
||||
|
||||
minetest.register_craftitem("bags:small", {
|
||||
description = "Small Bag",
|
||||
inventory_image = "bags_small.png",
|
||||
groups = {bagslots = 8},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("bags:medium", {
|
||||
description = "Medium Bag",
|
||||
inventory_image = "bags_medium.png",
|
||||
groups = {bagslots = 16},
|
||||
})
|
||||
|
||||
minetest.register_craftitem("bags:large", {
|
||||
description = "Large Bag",
|
||||
inventory_image = "bags_large.png",
|
||||
groups = {bagslots = 24},
|
||||
})
|
||||
|
||||
minetest.register_tool("bags:trolley", {
|
||||
description = "Trolley",
|
||||
inventory_image = "bags_trolley.png",
|
||||
groups = {bagslots = 32},
|
||||
})
|
||||
|
||||
-- register bag crafts
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bags:small",
|
||||
recipe = {
|
||||
{"", "default:stick", ""},
|
||||
{"mobs:leather", "mobs:leather", "mobs:leather"},
|
||||
{"mobs:leather", "mobs:leather", "mobs:leather"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bags:medium",
|
||||
recipe = {
|
||||
{"", "default:stick", ""},
|
||||
{"bags:small", "bags:small", "bags:small"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bags:large",
|
||||
recipe = {
|
||||
{"", "default:stick", ""},
|
||||
{"bags:medium", "bags:medium", "bags:medium"},
|
||||
},
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "bags:trolley",
|
||||
recipe = {
|
||||
{"", "default:stick", ""},
|
||||
{"bags:large", "bags:large", "bags:large"},
|
||||
},
|
||||
})
|
||||
|
||||
print ("[MOD] Bags loaded")
|
BIN
textures/bags_large.png
Normal file
BIN
textures/bags_large.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 255 B |
BIN
textures/bags_medium.png
Normal file
BIN
textures/bags_medium.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 248 B |
BIN
textures/bags_small.png
Normal file
BIN
textures/bags_small.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 250 B |
BIN
textures/bags_trolley.png
Normal file
BIN
textures/bags_trolley.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 199 B |
Loading…
x
Reference in New Issue
Block a user