diff --git a/mods/ITEMS/mcl_starting_inventory/README.txt b/mods/ITEMS/mcl_starting_inventory/README.txt new file mode 100644 index 000000000..126504b04 --- /dev/null +++ b/mods/ITEMS/mcl_starting_inventory/README.txt @@ -0,0 +1,11 @@ +Mcl_starting_inventory, adapted for Mineclone 2 by Michieal. + +Based on: +Minetest Game mod: give_initial_stuff +===================================== +See license.txt for license information. + +Authors of source code +---------------------- +Perttu Ahola (celeron55) (MIT) +Various Minetest developers and contributors (MIT) diff --git a/mods/ITEMS/mcl_starting_inventory/init.lua b/mods/ITEMS/mcl_starting_inventory/init.lua new file mode 100644 index 000000000..137391bd3 --- /dev/null +++ b/mods/ITEMS/mcl_starting_inventory/init.lua @@ -0,0 +1,62 @@ +--- Copyright 2023, Michieal. (Modifications for the mod to be usable in Mineclone 2.) +--- Based on mtg mod, give_initial_stuff. "Written by C55 and various minetest developers." +--- +--- Copyright notice created for the license to be valid. (MIT 3) + +local DEBUG = false + +local function mcl_log(message) + if DEBUG then + minetest.log(message) + end +end + +local give_inventory = minetest.settings:get_bool("give_starting_inv", false) + +local stuff_string = "mcl_tools:pick_iron,mcl_tools:axe_iron,mcl_tools:shovel_iron,mcl_torches:torch 32,mcl_core:cobble 32" + +mcl_starting_inventory = { + items = {} +} + +function mcl_starting_inventory.give(player) + mcl_log("Giving initial stuff to player " .. player:get_player_name()) + local inv = player:get_inventory() + for _, stack in ipairs(mcl_starting_inventory.items) do + if inv:room_for_item("main", stack) then + inv:add_item("main", stack) + else + mcl_log("no room for the item: " .. dump(stack)) + end + end +end + +function mcl_starting_inventory.add(stack) + mcl_starting_inventory.items[#mcl_starting_inventory.items + 1] = ItemStack(stack) +end + +function mcl_starting_inventory.clear() + mcl_starting_inventory.items = {} +end + +function mcl_starting_inventory.add_from_csv(str) + local items = str:split(",") + for _, itemname in ipairs(items) do + mcl_starting_inventory.add(itemname) + end +end + +function mcl_starting_inventory.set_list(list) + mcl_starting_inventory.items = list +end + +function mcl_starting_inventory.get_list() + return mcl_starting_inventory.items +end + +if give_inventory and give_inventory == true then + mcl_starting_inventory.add_from_csv(stuff_string) + mcl_log("Okay to give inventory:\n" .. dump(mcl_starting_inventory.get_list())) +end + +minetest.register_on_newplayer(mcl_starting_inventory.give) diff --git a/mods/ITEMS/mcl_starting_inventory/license.txt b/mods/ITEMS/mcl_starting_inventory/license.txt new file mode 100644 index 000000000..8134c920e --- /dev/null +++ b/mods/ITEMS/mcl_starting_inventory/license.txt @@ -0,0 +1,25 @@ +License of source code +---------------------- + +The MIT License (MIT) +Copyright (C) 2012-2016 Perttu Ahola (celeron55) +Copyright (C) 2012-2016 Various Minetest developers and contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this +software and associated documentation files (the "Software"), to deal in the Software +without restriction, including without limitation the rights to use, copy, modify, merge, +publish, distribute, sublicense, and/or sell copies of the Software, and to permit +persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or +substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, +INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR +PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE +FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR +OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER +DEALINGS IN THE SOFTWARE. + +For more details: +https://opensource.org/licenses/MIT diff --git a/mods/ITEMS/mcl_starting_inventory/mod.conf b/mods/ITEMS/mcl_starting_inventory/mod.conf new file mode 100644 index 000000000..e24d4522d --- /dev/null +++ b/mods/ITEMS/mcl_starting_inventory/mod.conf @@ -0,0 +1,3 @@ +title = mcl_starting_inventory +description = Mineclone 2 mod, Give Starting Inventory +depends = mcl_core, mcl_tools, mcl_torches diff --git a/settingtypes.txt b/settingtypes.txt index 7152dd8e9..8a891ea8e 100644 --- a/settingtypes.txt +++ b/settingtypes.txt @@ -236,6 +236,9 @@ mcl_extended_pet_control (Extended pet control) bool true # Enable hamburgers for villagers to follow mcl_enable_hamburger (Enable Hamburger) bool true +# Starting Inventory contents (given directly to the new player) type: bool +give_starting_inv (Player Starter Pack) bool false + [Debugging] # If enabled, this will show the itemstring of an item in the description. mcl_item_id_debug (Item ID Debug) bool false