2015-09-01 08:15:24 -07:00
|
|
|
|
--
|
|
|
|
|
-- Gold and NPC Trading
|
|
|
|
|
--
|
2022-04-22 15:21:00 -07:00
|
|
|
|
local S = minetest.get_translator("rp_gold")
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
gold = {}
|
|
|
|
|
|
2019-03-20 07:01:03 -07:00
|
|
|
|
local mapseed = minetest.get_mapgen_setting("seed")
|
|
|
|
|
gold.pr = PseudoRandom(mapseed+8732)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
gold.trades = {}
|
2015-09-06 12:02:45 -07:00
|
|
|
|
gold.trade_names = {}
|
|
|
|
|
|
2022-05-31 12:24:52 -07:00
|
|
|
|
local TRADE_FORMSPEC_OFFSET = 2.5
|
2022-05-31 10:40:28 -07:00
|
|
|
|
local GOLD_COLOR = "#FFFF00FF"
|
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
if minetest.get_modpath("mobs") ~= nil then
|
2015-09-06 12:02:45 -07:00
|
|
|
|
gold.trades["farmer"] = {
|
2022-05-07 12:35:37 -07:00
|
|
|
|
-- seeds/plants
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_farming:wheat_1 6"},
|
|
|
|
|
{"rp_gold:ingot_gold 3", "", "rp_farming:cotton_1 4"},
|
|
|
|
|
{"rp_gold:ingot_gold 5", "", "rp_farming:cotton_1 8"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:papyrus 4"},
|
|
|
|
|
{"rp_gold:ingot_gold 2", "", "rp_default:cactus"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- crafts
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold 2", "", "rp_farming:cotton_bale 1"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- tool repair
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold 1", "rp_default:shovel_stone", "rp_default:shovel_stone"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 8", "rp_default:shovel_steel", "rp_default:shovel_steel"},
|
|
|
|
|
{"rp_gold:ingot_gold 10", "rp_default:shovel_carbon_steel", "rp_default:shovel_carbon_steel"},
|
2019-09-21 05:44:30 -07:00
|
|
|
|
|
|
|
|
|
-- filling buckets
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "rp_default:bucket", "rp_default:bucket_water"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
}
|
2019-09-21 05:44:30 -07:00
|
|
|
|
gold.trades["carpenter"] = {
|
2015-09-06 12:02:45 -07:00
|
|
|
|
-- materials
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:planks 6"},
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:planks_birch 5"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:planks_oak 3"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:frame 2"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:reinforced_frame"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- useables
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 9", "", "rp_bed:bed"},
|
|
|
|
|
{"rp_gold:ingot_gold 2", "", "rp_default:chest"},
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold 10", "", "rp_locks:chest"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 5", "mobs:wool 3", "rp_bed:bed"},
|
2019-09-21 05:44:30 -07:00
|
|
|
|
}
|
|
|
|
|
gold.trades["tavernkeeper"] = {
|
|
|
|
|
-- edibles
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:apple 6"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_farming:bread 2"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "mobs:meat"},
|
|
|
|
|
{"rp_gold:ingot_gold 2", "", "mobs:pork"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- filling buckets
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "rp_default:bucket", "rp_default:bucket_water"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
}
|
|
|
|
|
gold.trades["blacksmith"] = {
|
|
|
|
|
-- smeltables
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:lump_coal"},
|
|
|
|
|
{"rp_gold:ingot_gold 3", "", "rp_default:lump_iron"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- materials
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:cobble 20"},
|
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:stone 18"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:reinforced_cobble 2"},
|
2022-05-07 12:35:37 -07:00
|
|
|
|
-- much cheaper than 9 steel ingots, buying in bulk slashes the price
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 25", "", "rp_default:block_steel"},
|
|
|
|
|
{"rp_gold:ingot_gold 6", "", "rp_default:glass 5"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- usebles
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "rp_default:furnace"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- ingots
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 5", "", "rp_default:ingot_steel"},
|
|
|
|
|
{"rp_gold:ingot_gold 8", "", "rp_default:ingot_carbon_steel"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
2022-05-07 12:35:37 -07:00
|
|
|
|
-- special trades
|
|
|
|
|
-- iron to steel
|
|
|
|
|
{"rp_gold:ingot_gold 2", "rp_default:lump_iron 2", "rp_default:ingot_steel"},
|
|
|
|
|
-- bronze lump: unique item, can't be crafted. Cheaper than crafting bronze ingots
|
|
|
|
|
{"rp_default:lump_tin 1", "rp_default:lump_copper 4", "rp_default:lump_bronze"},
|
|
|
|
|
-- chainmail sheet to steel
|
2022-05-07 16:08:45 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "rp_armor:chainmail_sheet", "rp_default:ingot_steel"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- tool repair
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold 1", "rp_default:pick_stone", "rp_default:pick_stone"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 12", "rp_default:pick_steel", "rp_default:pick_steel"},
|
|
|
|
|
{"rp_gold:ingot_gold 16", "rp_default:pick_carbon_steel", "rp_default:pick_carbon_steel"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
}
|
|
|
|
|
gold.trades["butcher"] = {
|
|
|
|
|
-- raw edibles
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold", "", "mobs:meat_raw"},
|
|
|
|
|
{"rp_gold:ingot_gold 3", "", "mobs:pork_raw 2"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- cooking edibles
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 1", "mobs:meat_raw", "mobs:meat"},
|
|
|
|
|
{"rp_gold:ingot_gold 2", "mobs:pork_raw", "mobs:pork"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- tool repair
|
2022-05-07 12:35:37 -07:00
|
|
|
|
{"rp_gold:ingot_gold 1", "rp_default:spear_stone", "rp_default:spear_stone"},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
{"rp_gold:ingot_gold 7", "rp_default:spear_steel", "rp_default:spear_steel"},
|
|
|
|
|
{"rp_gold:ingot_gold 11", "rp_default:spear_carbon_steel", "rp_default:spear_carbon_steel"},
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
-- trading currency
|
2022-05-03 06:09:02 -07:00
|
|
|
|
if minetest.get_modpath("rp_jewels") ~= nil then -- jewels/gold
|
2015-09-06 12:02:45 -07:00
|
|
|
|
--farmer
|
2022-04-22 17:41:39 -07:00
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_gold:ingot_gold 16", "", "rp_jewels:jewel"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_gold:ingot_gold 22", "", "rp_jewels:jewel 2"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_gold:ingot_gold 34", "", "rp_jewels:jewel 4"})
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
2022-04-22 17:41:39 -07:00
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_jewels:jewel", "", "rp_gold:ingot_gold 14"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_jewels:jewel 2", "", "rp_gold:ingot_gold 20"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_jewels:jewel 4", "", "rp_gold:ingot_gold 32"})
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- tavern keeper
|
2022-04-22 17:41:39 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_gold:ingot_gold 14", "", "rp_jewels:jewel"})
|
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_gold:ingot_gold 20", "", "rp_jewels:jewel 2"})
|
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_gold:ingot_gold 32", "", "rp_jewels:jewel 4"})
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
|
|
|
|
-- blacksmith
|
2022-04-22 17:41:39 -07:00
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:ingot_steel 14", "", "rp_jewels:jewel"})
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:ingot_steel 20", "", "rp_jewels:jewel 2"})
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:ingot_steel 32", "", "rp_jewels:jewel 4"})
|
2015-09-06 12:02:45 -07:00
|
|
|
|
end
|
|
|
|
|
|
2022-05-07 11:59:09 -07:00
|
|
|
|
-- farmer
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_farming:wheat 15", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_default:apple 12", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_default:flower 10", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_default:fern 10", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_default:lump_sulfur 6", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["farmer"], {"rp_default:thistle 13", "", "rp_gold:ingot_gold"})
|
2022-05-07 11:59:09 -07:00
|
|
|
|
|
|
|
|
|
-- blacksmith
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:tree 6", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:lump_coal 15", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:lump_iron 12", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_default:lump_tin 10", "", "rp_gold:ingot_gold"})
|
2022-05-07 16:08:45 -07:00
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_gold:lump_gold 2", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["blacksmith"], {"rp_armor:chainmail_sheet 2", "", "rp_gold:ingot_gold"})
|
2022-05-07 11:59:09 -07:00
|
|
|
|
|
|
|
|
|
-- carpenter
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_default:tree 5", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_default:tree_birch 5", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_default:tree_oak 4", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_default:fiber 50", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"mobs:wool 8", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_farming:cotton_bale 10", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["carpenter"], {"rp_default:glass 10", "", "rp_gold:ingot_gold"})
|
2022-05-07 11:59:09 -07:00
|
|
|
|
|
|
|
|
|
-- butcher
|
|
|
|
|
table.insert(gold.trades["butcher"], {"mobs:meat_raw 4", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["butcher"], {"mobs:pork_raw 3", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["butcher"], {"rp_default:flint 12", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["butcher"], {"rp_default:paper 30", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["butcher"], {"rp_default:sandstone 28", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["butcher"], {"rp_default:ingot_wrought_iron 11", "", "rp_gold:ingot_gold"})
|
2022-05-07 11:59:09 -07:00
|
|
|
|
|
|
|
|
|
-- tavernkeeper
|
2022-05-22 03:11:19 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_default:pearl 2", "", "rp_gold:ingot_gold"})
|
2022-05-07 16:08:45 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_default:sheet_graphite 10", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_lumien:block 4", "", "rp_gold:ingot_gold"})
|
2022-05-07 11:59:09 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_farming:flour 4", "", "rp_gold:ingot_gold"})
|
2022-05-07 12:52:00 -07:00
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_default:cactus 24", "", "rp_gold:ingot_gold"})
|
|
|
|
|
table.insert(gold.trades["tavernkeeper"], {"rp_default:swamp_grass 20", "", "rp_gold:ingot_gold"})
|
2015-09-06 12:02:45 -07:00
|
|
|
|
|
2019-08-28 08:31:41 -07:00
|
|
|
|
gold.trade_names["farmer"] = S("Farmer")
|
|
|
|
|
gold.trade_names["tavernkeeper"] = S("Tavern Keeper")
|
2019-09-21 05:44:30 -07:00
|
|
|
|
gold.trade_names["carpenter"] = S("Carpenter")
|
2019-08-28 08:31:41 -07:00
|
|
|
|
gold.trade_names["blacksmith"] = S("Blacksmith")
|
|
|
|
|
gold.trade_names["butcher"] = S("Butcher")
|
2015-09-06 12:02:45 -07:00
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
local form_trading = ""
|
|
|
|
|
|
2022-05-20 09:38:26 -07:00
|
|
|
|
form_trading = form_trading .. rp_formspec.get_page("rp_default:notabs_2part")
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
form_trading = form_trading .. "list[current_player;main;0.25,4.75;8,4;]"
|
2022-04-25 12:33:38 -07:00
|
|
|
|
form_trading = form_trading .. rp_formspec.get_hotbar_itemslot_bg(0.25, 4.75, 8, 1)
|
|
|
|
|
form_trading = form_trading .. rp_formspec.get_itemslot_bg(0.25, 5.75, 8, 3)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-31 10:40:28 -07:00
|
|
|
|
form_trading = form_trading .. "container["..TRADE_FORMSPEC_OFFSET..",0]"
|
|
|
|
|
form_trading = form_trading .. "list[current_player;gold_trade_out;4.75,2.25;1,1;]"
|
|
|
|
|
form_trading = form_trading .. rp_formspec.get_hotbar_itemslot_bg(4.75, 2.25, 1, 1)
|
|
|
|
|
|
2019-09-22 06:22:21 -07:00
|
|
|
|
form_trading = form_trading .. "list[current_player;gold_trade_in;1.25,2.25;2,1;]"
|
2022-04-25 12:33:38 -07:00
|
|
|
|
form_trading = form_trading .. rp_formspec.get_itemslot_bg(1.25, 2.25, 2, 1)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2019-08-28 20:58:20 -07:00
|
|
|
|
form_trading = form_trading .. "listring[current_player;main]"
|
|
|
|
|
form_trading = form_trading .. "listring[current_player;gold_trade_in]"
|
|
|
|
|
form_trading = form_trading .. "listring[current_player;main]"
|
|
|
|
|
form_trading = form_trading .. "listring[current_player;gold_trade_out]"
|
|
|
|
|
|
2019-09-22 06:22:21 -07:00
|
|
|
|
form_trading = form_trading .. "image[3.5,1.25;1,1;ui_arrow_bg.png^[transformR270]"
|
|
|
|
|
form_trading = form_trading .. "image[3.5,2.25;1,1;ui_arrow.png^[transformR270]"
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-04-25 12:33:38 -07:00
|
|
|
|
form_trading = form_trading .. rp_formspec.button(1.25, 3.25, 2, 1, "trade", S("Trade"))
|
2022-05-31 10:40:28 -07:00
|
|
|
|
form_trading = form_trading .. "container_end[]"
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-04-25 12:33:38 -07:00
|
|
|
|
rp_formspec.register_page("rp_gold_trading_book", form_trading)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-31 10:40:28 -07:00
|
|
|
|
-- Remember with which traders the players trade
|
|
|
|
|
local active_tradings = {}
|
|
|
|
|
|
|
|
|
|
-- Open the trading formspec that allows players to trade with NPCs.
|
|
|
|
|
-- * trade: Single trade table from gold.trades table
|
|
|
|
|
-- * trade_type: Trader type name
|
|
|
|
|
-- * player: Player object of player who trades
|
2022-05-31 11:01:34 -07:00
|
|
|
|
-- * trader: Trader object that player trades with
|
2022-05-31 10:40:28 -07:00
|
|
|
|
-- * trade_index: Index of current active trade in all of the available trades for this trader
|
|
|
|
|
-- * all_trades: List of all trades available by this trader
|
2022-05-31 11:01:34 -07:00
|
|
|
|
function gold.trade(trade, trade_type, player, trader, trade_index, all_trades)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
local name = player:get_player_name()
|
|
|
|
|
local item = player:get_wielded_item()
|
|
|
|
|
|
2022-05-31 11:01:34 -07:00
|
|
|
|
-- Player must hold trading book in hand
|
2022-04-22 15:21:00 -07:00
|
|
|
|
local itemname = item:get_name()
|
|
|
|
|
local item_alias = minetest.registered_aliases[itemname]
|
2022-05-31 11:01:34 -07:00
|
|
|
|
if itemname ~= "rp_gold:trading_book" and item_alias ~= "rp_gold:trading_book" then
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
-- Trader must exist
|
|
|
|
|
if not trader or not trader.object:get_luaentity() then
|
|
|
|
|
return
|
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-31 11:01:34 -07:00
|
|
|
|
active_tradings[name] = { all_trades = all_trades, trade_index = trade_index, trade_type = trade_type, trader = trader }
|
2022-05-31 10:40:28 -07:00
|
|
|
|
|
2015-09-01 08:15:24 -07:00
|
|
|
|
local inv = player:get_inventory()
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2015-09-01 08:15:24 -07:00
|
|
|
|
if inv:get_size("gold_trade_wanted") ~= 2 then
|
|
|
|
|
inv:set_size("gold_trade_wanted", 2)
|
|
|
|
|
end
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2015-09-01 08:15:24 -07:00
|
|
|
|
if inv:get_size("gold_trade_out") ~= 1 then
|
|
|
|
|
inv:set_size("gold_trade_out", 1)
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if inv:get_size("gold_trade_in") ~= 2 then
|
|
|
|
|
inv:set_size("gold_trade_in", 2)
|
|
|
|
|
end
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2015-09-01 08:15:24 -07:00
|
|
|
|
inv:set_stack("gold_trade_wanted", 1, trade[1])
|
|
|
|
|
inv:set_stack("gold_trade_wanted", 2, trade[2])
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
local meta = minetest.deserialize(item:get_metadata())
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
if not meta then meta = {} end
|
|
|
|
|
meta.trade = trade
|
|
|
|
|
|
|
|
|
|
local trade_name = gold.trade_names[trade_type]
|
2022-05-31 12:24:52 -07:00
|
|
|
|
local label = S("Trading with @1", trade_name)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
local trade_wanted1 = inv:get_stack("gold_trade_wanted", 1)
|
|
|
|
|
local trade_wanted2 = inv:get_stack("gold_trade_wanted", 2)
|
|
|
|
|
|
2022-04-25 12:33:38 -07:00
|
|
|
|
local form = rp_formspec.get_page("rp_gold_trading_book")
|
2022-05-31 12:24:52 -07:00
|
|
|
|
form = form .. "label[0.25,0.25;"..minetest.formspec_escape(label).."]"
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-31 10:40:28 -07:00
|
|
|
|
local trades_listed = {}
|
|
|
|
|
local print_item = function(itemstring)
|
|
|
|
|
local stack = ItemStack(itemstring)
|
|
|
|
|
local name = stack:get_short_description()
|
|
|
|
|
if stack:get_name() == "rp_gold:ingot_gold" then
|
|
|
|
|
-- Short for "Gold Ingot"
|
|
|
|
|
name = S("G")
|
|
|
|
|
end
|
|
|
|
|
local count = stack:get_count()
|
|
|
|
|
local out
|
|
|
|
|
if stack:get_name() == "rp_gold:ingot_gold" then
|
|
|
|
|
out = S("@1 @2", count, name)
|
|
|
|
|
elseif count > 1 then
|
|
|
|
|
out = S("@1×@2", count, name)
|
|
|
|
|
else
|
|
|
|
|
out = name
|
|
|
|
|
end
|
|
|
|
|
return out
|
|
|
|
|
end
|
|
|
|
|
for t=1, #all_trades do
|
|
|
|
|
local take, give
|
|
|
|
|
if all_trades[t][2] == "" then
|
|
|
|
|
take = print_item(all_trades[t][1])
|
|
|
|
|
else
|
|
|
|
|
take = S("@1 + @2", print_item(all_trades[t][1]), print_item(all_trades[t][2]))
|
|
|
|
|
end
|
|
|
|
|
give = print_item(all_trades[t][3])
|
|
|
|
|
local entry = S("@1 → @2", take, give)
|
|
|
|
|
table.insert(trades_listed, minetest.formspec_escape(entry))
|
|
|
|
|
end
|
|
|
|
|
local trades_listed_str = table.concat(trades_listed, ",")
|
|
|
|
|
form = form .. "tablecolumns[text]"
|
2022-05-31 12:24:52 -07:00
|
|
|
|
form = form .. "table[0.15,1.25;3.5,2.5;tradelist;"..trades_listed_str..";"..trade_index.."]"
|
2022-05-31 10:40:28 -07:00
|
|
|
|
|
|
|
|
|
form = form .. "container["..TRADE_FORMSPEC_OFFSET..",0]"
|
2022-04-25 12:33:38 -07:00
|
|
|
|
form = form .. rp_formspec.fake_itemstack(1.25, 1.25, trade_wanted1)
|
|
|
|
|
form = form .. rp_formspec.fake_itemstack(2.25, 1.25, trade_wanted2)
|
|
|
|
|
form = form .. rp_formspec.fake_itemstack(4.75, 1.25, ItemStack(trade[3]))
|
2022-05-31 10:40:28 -07:00
|
|
|
|
form = form .. "container_end[]"
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-04-22 15:21:00 -07:00
|
|
|
|
minetest.show_formspec(name, "rp_gold:trading_book", form)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
meta.trade_type = trade_type
|
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
item:set_metadata(minetest.serialize(meta))
|
2015-09-01 08:15:24 -07:00
|
|
|
|
player:set_wielded_item(item)
|
2015-10-03 14:02:14 -07:00
|
|
|
|
|
|
|
|
|
return true
|
2015-09-01 08:15:24 -07:00
|
|
|
|
end
|
|
|
|
|
|
2022-05-20 12:35:17 -07:00
|
|
|
|
-- In the inventory `inv`, move all items of the trading slots
|
|
|
|
|
-- in the "gold_trade_out" and "gold_trade_in" inventory lists
|
|
|
|
|
-- to the "main" inventory list. Items that can't be moved
|
|
|
|
|
-- will be dropped on the floor at `drop_pos`.
|
|
|
|
|
-- If `drop_all` is true (false by default), then all items
|
|
|
|
|
-- will be dropped, not moved to "main".
|
|
|
|
|
local function clear_trading_slots(inv, drop_pos, drop_all)
|
|
|
|
|
if drop_all == nil then
|
|
|
|
|
drop_all = false
|
|
|
|
|
end
|
|
|
|
|
-- Collect items from trading slots
|
|
|
|
|
local items = {}
|
|
|
|
|
local list = inv:get_list("gold_trade_out")
|
2022-05-21 06:42:27 -07:00
|
|
|
|
if not list then
|
|
|
|
|
return
|
|
|
|
|
end
|
2022-05-20 12:35:17 -07:00
|
|
|
|
for i=1, #list do
|
|
|
|
|
if not list[i]:is_empty() then
|
|
|
|
|
table.insert(items, list[i])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
list = inv:get_list("gold_trade_in")
|
2022-05-21 06:42:27 -07:00
|
|
|
|
if not list then
|
|
|
|
|
return
|
|
|
|
|
end
|
2022-05-20 12:35:17 -07:00
|
|
|
|
for i=1, #list do
|
|
|
|
|
if not list[i]:is_empty() then
|
|
|
|
|
table.insert(items, list[i])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
-- Copy them to "main" list or drop them
|
|
|
|
|
for i=1, #items do
|
|
|
|
|
if (not drop_all) and inv:room_for_item("main", items[i]) then
|
|
|
|
|
inv:add_item("main", items[i])
|
|
|
|
|
else
|
|
|
|
|
minetest.add_item(drop_pos, items[i])
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
-- Clear the trading slots
|
|
|
|
|
inv:set_list("gold_trade_out", {})
|
|
|
|
|
inv:set_list("gold_trade_in", {})
|
|
|
|
|
end
|
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
minetest.register_on_player_receive_fields(
|
2015-09-01 08:15:24 -07:00
|
|
|
|
function(player, form_name, fields)
|
2022-05-31 10:40:28 -07:00
|
|
|
|
local name = player:get_player_name()
|
2022-05-20 12:35:17 -07:00
|
|
|
|
if form_name ~= "rp_gold:trading_book" then
|
2022-05-31 10:40:28 -07:00
|
|
|
|
active_tradings[name] = nil
|
2022-05-20 12:35:17 -07:00
|
|
|
|
return
|
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
|
|
|
|
local inv = player:get_inventory()
|
2022-05-20 12:35:17 -07:00
|
|
|
|
if fields.cancel or fields.quit then
|
|
|
|
|
clear_trading_slots(inv, player:get_pos())
|
2022-05-31 10:40:28 -07:00
|
|
|
|
active_tradings[name] = nil
|
2022-05-20 12:35:17 -07:00
|
|
|
|
return
|
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-31 11:01:34 -07:00
|
|
|
|
if not active_tradings[name] then
|
|
|
|
|
-- No trading possible if active_tradings table is empty (mustn't happen)
|
|
|
|
|
minetest.log("error", "[rp_gold] active_tradings["..tostring(name).."] was nil after receiving trading book fields!")
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
local trader = active_tradings[name].trader
|
|
|
|
|
if not trader or not trader.object:get_luaentity() then
|
|
|
|
|
-- No trading possible if trader is gone
|
|
|
|
|
clear_trading_slots(inv, player:get_pos())
|
|
|
|
|
minetest.close_formspec(name, "rp_gold:trading_book")
|
|
|
|
|
return
|
|
|
|
|
end
|
|
|
|
|
|
2022-05-31 10:40:28 -07:00
|
|
|
|
if fields.tradelist then
|
|
|
|
|
local tdata = minetest.explode_table_event(fields.tradelist)
|
|
|
|
|
if tdata.type == "CHG" or tdata.type == "DCL" then
|
2022-05-31 11:01:34 -07:00
|
|
|
|
do
|
2022-05-31 10:40:28 -07:00
|
|
|
|
local trade_index = tdata.row
|
|
|
|
|
local all_trades = active_tradings[name].all_trades
|
|
|
|
|
local trade_type = active_tradings[name].trade_type
|
2022-05-31 11:01:34 -07:00
|
|
|
|
local trader = active_tradings[name].trader
|
2022-05-31 10:40:28 -07:00
|
|
|
|
local trade = all_trades[trade_index]
|
2022-05-31 11:01:34 -07:00
|
|
|
|
gold.trade(trade, trade_type, player, trader, trade_index, all_trades)
|
2022-05-31 10:40:28 -07:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
return
|
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
if fields.trade then
|
|
|
|
|
local item = player:get_wielded_item()
|
|
|
|
|
|
2019-08-28 21:18:23 -07:00
|
|
|
|
local trade_wanted1 = inv:get_stack("gold_trade_wanted", 1)
|
|
|
|
|
local trade_wanted2 = inv:get_stack("gold_trade_wanted", 2)
|
|
|
|
|
local trade_wanted1_n = trade_wanted1:get_name()
|
|
|
|
|
local trade_wanted2_n = trade_wanted2:get_name()
|
|
|
|
|
|
|
|
|
|
local trade_in1 = inv:get_stack("gold_trade_in", 1)
|
|
|
|
|
local trade_in2 = inv:get_stack("gold_trade_in", 2)
|
|
|
|
|
local trade_in1_n = trade_in1:get_name()
|
|
|
|
|
local trade_in2_n = trade_in2:get_name()
|
|
|
|
|
|
|
|
|
|
local matches = false
|
|
|
|
|
if trade_wanted1_n == "" or trade_wanted2_n == "" then
|
|
|
|
|
-- Wants 1 item
|
|
|
|
|
local wanted, wanted_n, wanted_c
|
|
|
|
|
if trade_wanted1_n ~= "" then
|
|
|
|
|
wanted = trade_wanted1
|
|
|
|
|
else
|
|
|
|
|
wanted = trade_wanted2
|
|
|
|
|
end
|
|
|
|
|
if inv:contains_item("gold_trade_in", wanted) then
|
|
|
|
|
matches = true
|
|
|
|
|
end
|
|
|
|
|
else
|
|
|
|
|
-- Wants 2 items (this assumes both items are different)
|
|
|
|
|
if inv:contains_item("gold_trade_in", trade_wanted1) and inv:contains_item("gold_trade_in", trade_wanted2) then
|
|
|
|
|
matches = true
|
|
|
|
|
end
|
|
|
|
|
end
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
local meta = minetest.deserialize(item:get_metadata())
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2022-04-22 15:21:00 -07:00
|
|
|
|
local trade = {"rp_gold:ingot_gold", "rp_gold:ingot_gold", "rp_default:stick"}
|
2015-09-01 08:15:24 -07:00
|
|
|
|
local trade_type = ""
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
2015-09-01 08:15:24 -07:00
|
|
|
|
if meta then
|
|
|
|
|
trade = meta.trade
|
|
|
|
|
trade_type = meta.trade_type
|
|
|
|
|
end
|
|
|
|
|
|
|
|
|
|
if matches then
|
|
|
|
|
if inv:room_for_item("gold_trade_out", trade[3]) then
|
|
|
|
|
inv:add_item("gold_trade_out", trade[3])
|
2019-08-28 21:18:23 -07:00
|
|
|
|
inv:remove_item("gold_trade_in", trade[1])
|
|
|
|
|
inv:remove_item("gold_trade_in", trade[2])
|
2019-09-21 18:37:22 -07:00
|
|
|
|
achievements.trigger_achievement(player, "trader")
|
2015-09-01 08:15:24 -07:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
2017-05-10 10:19:28 -07:00
|
|
|
|
end)
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2022-05-20 12:35:17 -07:00
|
|
|
|
-- Make sure to clean up the trading slots properly
|
|
|
|
|
-- on rejoining, respawning and dying
|
|
|
|
|
local function clear_trading_slots_move_main(player)
|
|
|
|
|
local inv = player:get_inventory()
|
|
|
|
|
local pos = player:get_pos()
|
|
|
|
|
clear_trading_slots(inv, pos, false)
|
|
|
|
|
end
|
|
|
|
|
minetest.register_on_joinplayer(clear_trading_slots_move_main)
|
|
|
|
|
minetest.register_on_respawnplayer(clear_trading_slots_move_main)
|
|
|
|
|
|
|
|
|
|
-- Death = drop all items in trading slots
|
|
|
|
|
local function clear_trading_slots_drop(player)
|
|
|
|
|
local inv = player:get_inventory()
|
|
|
|
|
local pos = player:get_pos()
|
|
|
|
|
clear_trading_slots(inv, pos, true)
|
|
|
|
|
end
|
|
|
|
|
minetest.register_on_dieplayer(clear_trading_slots_drop)
|
|
|
|
|
|
2017-05-17 08:57:14 -07:00
|
|
|
|
-- Items
|
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
minetest.register_craftitem(
|
2022-04-22 15:21:00 -07:00
|
|
|
|
"rp_gold:trading_book",
|
2015-09-01 08:15:24 -07:00
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
description = S("Trading Book"),
|
2019-12-05 05:39:05 -08:00
|
|
|
|
_tt_help = S("Show this to a villager to trade"),
|
2015-09-01 08:15:24 -07:00
|
|
|
|
inventory_image = "default_book.png^gold_bookribbon.png",
|
|
|
|
|
stack_max = 1,
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2017-05-11 19:29:55 -07:00
|
|
|
|
minetest.register_craftitem(
|
2022-04-22 15:21:00 -07:00
|
|
|
|
"rp_gold:lump_gold",
|
2017-05-17 08:57:14 -07:00
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
description = S("Gold Lump"),
|
2017-05-17 08:57:14 -07:00
|
|
|
|
inventory_image = "gold_lump_gold.png",
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
minetest.register_craftitem(
|
2022-04-22 15:21:00 -07:00
|
|
|
|
"rp_gold:ingot_gold",
|
2015-09-01 08:15:24 -07:00
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
description = S("Gold Ingot"),
|
2017-05-17 08:57:14 -07:00
|
|
|
|
inventory_image = "gold_ingot_gold.png",
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
2015-09-01 08:15:24 -07:00
|
|
|
|
|
2017-05-17 13:54:33 -07:00
|
|
|
|
-- Nodes
|
|
|
|
|
|
|
|
|
|
minetest.register_node(
|
2022-04-22 15:21:00 -07:00
|
|
|
|
"rp_gold:stone_with_gold",
|
2017-05-17 13:54:33 -07:00
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
description = S("Stone with Gold"),
|
2017-05-17 13:54:33 -07:00
|
|
|
|
tiles ={"default_stone.png^gold_mineral_gold.png"},
|
|
|
|
|
groups = {cracky=1, stone=1},
|
2022-04-22 15:21:00 -07:00
|
|
|
|
drop = "rp_gold:lump_gold",
|
2017-05-17 13:54:33 -07:00
|
|
|
|
is_ground_content = true,
|
2022-04-25 13:07:28 -07:00
|
|
|
|
sounds = rp_sounds.node_sound_stone_defaults(),
|
2017-05-17 13:54:33 -07:00
|
|
|
|
})
|
|
|
|
|
|
2022-05-03 06:02:03 -07:00
|
|
|
|
minetest.register_node(
|
|
|
|
|
"rp_gold:block_gold",
|
|
|
|
|
{
|
|
|
|
|
description = S("Gold Block"),
|
|
|
|
|
tiles = {"gold_block.png"},
|
|
|
|
|
groups = {cracky = 2},
|
|
|
|
|
sounds = rp_sounds.node_sound_stone_defaults(),
|
|
|
|
|
is_ground_content = false,
|
|
|
|
|
})
|
|
|
|
|
|
2017-05-17 13:54:33 -07:00
|
|
|
|
-- Ores
|
|
|
|
|
|
|
|
|
|
minetest.register_ore(
|
|
|
|
|
{
|
|
|
|
|
ore_type = "scatter",
|
2022-04-22 15:21:00 -07:00
|
|
|
|
ore = "rp_gold:stone_with_gold",
|
2022-04-22 11:31:10 -07:00
|
|
|
|
wherein = "rp_default:stone",
|
2017-05-17 13:54:33 -07:00
|
|
|
|
clust_scarcity = 9*9*9,
|
|
|
|
|
clust_num_ores = 12,
|
|
|
|
|
clust_size = 6,
|
|
|
|
|
y_min = -60,
|
|
|
|
|
y_max = -45,
|
|
|
|
|
})
|
|
|
|
|
|
2017-05-17 08:57:14 -07:00
|
|
|
|
-- Crafting
|
|
|
|
|
|
2017-05-16 10:47:12 -07:00
|
|
|
|
crafting.register_craft(
|
2015-09-23 16:42:58 -07:00
|
|
|
|
{
|
2022-04-22 15:21:00 -07:00
|
|
|
|
output = "rp_gold:trading_book",
|
2017-05-16 10:47:12 -07:00
|
|
|
|
items = {
|
2022-04-22 11:31:10 -07:00
|
|
|
|
"rp_default:book",
|
2022-04-22 15:21:00 -07:00
|
|
|
|
"rp_gold:ingot_gold",
|
2017-05-16 10:47:12 -07:00
|
|
|
|
}
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
2015-09-23 16:42:58 -07:00
|
|
|
|
|
2022-05-03 06:02:03 -07:00
|
|
|
|
crafting.register_craft(
|
|
|
|
|
{
|
|
|
|
|
output = "rp_gold:block_gold",
|
|
|
|
|
items = {
|
|
|
|
|
"rp_gold:ingot_gold 9",
|
|
|
|
|
}
|
|
|
|
|
})
|
2022-05-03 07:49:35 -07:00
|
|
|
|
crafting.register_craft(
|
|
|
|
|
{
|
|
|
|
|
output = "rp_gold:ingot_gold 9",
|
|
|
|
|
items = {
|
|
|
|
|
"rp_gold:block_gold",
|
|
|
|
|
}
|
|
|
|
|
})
|
|
|
|
|
|
2022-05-03 06:02:03 -07:00
|
|
|
|
|
2017-05-17 08:57:14 -07:00
|
|
|
|
minetest.register_craft(
|
|
|
|
|
{
|
|
|
|
|
type = "cooking",
|
2022-04-22 15:21:00 -07:00
|
|
|
|
output = "rp_gold:ingot_gold",
|
|
|
|
|
recipe = "rp_gold:lump_gold",
|
2017-05-17 13:54:33 -07:00
|
|
|
|
cooktime = 7,
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
2022-05-03 08:48:31 -07:00
|
|
|
|
minetest.register_craft(
|
|
|
|
|
{
|
|
|
|
|
type = "cooking",
|
|
|
|
|
output = "rp_gold:lump_gold",
|
|
|
|
|
recipe = "rp_gold:stone_with_gold",
|
|
|
|
|
cooktime = 6,
|
|
|
|
|
})
|
2017-05-10 10:19:28 -07:00
|
|
|
|
|
|
|
|
|
-- Achievements
|
|
|
|
|
|
|
|
|
|
achievements.register_achievement(
|
|
|
|
|
"trader",
|
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
title = S("Trader"),
|
2019-09-21 18:37:22 -07:00
|
|
|
|
description = S("Trade with a villager."),
|
2017-05-10 10:19:28 -07:00
|
|
|
|
times = 1,
|
2022-05-04 07:04:28 -07:00
|
|
|
|
item_icon = "rp_gold:trading_book",
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
achievements.register_achievement(
|
|
|
|
|
"gold_rush",
|
|
|
|
|
{
|
2019-08-28 08:31:41 -07:00
|
|
|
|
title = S("Gold Rush"),
|
2019-09-21 17:52:11 -07:00
|
|
|
|
description = S("Dig a gold ore."),
|
|
|
|
|
times = 1,
|
2022-04-22 15:21:00 -07:00
|
|
|
|
dignode = "rp_gold:stone_with_gold",
|
2017-05-10 10:19:28 -07:00
|
|
|
|
})
|
|
|
|
|
|
2022-05-31 10:40:28 -07:00
|
|
|
|
minetest.register_on_leaveplayer(function(player)
|
|
|
|
|
local name = player:get_player_name()
|
|
|
|
|
active_tradings[name] = nil
|
|
|
|
|
end)
|
|
|
|
|
|
2022-05-07 16:07:13 -07:00
|
|
|
|
if minetest.settings:get_bool("rp_testing_enable", false) == true then
|
2019-08-28 12:35:20 -07:00
|
|
|
|
-- Check if all specified items are valid
|
|
|
|
|
minetest.register_on_mods_loaded(function()
|
|
|
|
|
for trader_name, trader in pairs(gold.trades) do
|
|
|
|
|
for trade_id, trade in pairs(trader) do
|
|
|
|
|
for i=1,3 do
|
|
|
|
|
local item = ItemStack(trade[i]):get_name()
|
2022-04-22 15:21:00 -07:00
|
|
|
|
assert(item ~= nil and (item == "" or minetest.registered_items[item]), "[rp_gold] Invalid trade item: trader="..trader_name..", index="..trade_id..", item="..item)
|
2019-08-28 12:35:20 -07:00
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end
|
|
|
|
|
end)
|
|
|
|
|
end
|
|
|
|
|
|
2022-04-22 15:21:00 -07:00
|
|
|
|
-- Aliases
|
|
|
|
|
minetest.register_alias("gold:ingot_gold", "rp_gold:ingot_gold")
|
|
|
|
|
minetest.register_alias("gold:lump_gold", "rp_gold:lump_gold")
|
|
|
|
|
minetest.register_alias("gold:stone_with_gold", "rp_gold:stone_with_gold")
|
|
|
|
|
minetest.register_alias("gold:trading_book", "rp_gold:trading_book")
|