Implement correct banner color layers
This commit is contained in:
parent
8c92e65177
commit
6d093f8da7
|
@ -1,5 +1,9 @@
|
||||||
-- List of patterns with crafting rules
|
-- Pattern crafting. This file contains the code for crafting all the
|
||||||
|
-- emblazonings you can put on the banners. It's quite complicated;
|
||||||
|
-- normal 08/15 crafting won't work here.
|
||||||
|
|
||||||
|
|
||||||
|
-- List of patterns with crafting rules
|
||||||
local d = "group:dye" -- dye
|
local d = "group:dye" -- dye
|
||||||
local e = "" -- empty slot (one of them must contain the banner)
|
local e = "" -- empty slot (one of them must contain the banner)
|
||||||
local patterns = {
|
local patterns = {
|
||||||
|
@ -230,6 +234,13 @@ local patterns = {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
-- Just a simple reverse-lookup table from dye itemstring to banner color ID
|
||||||
|
-- to avoid some pointless future iterations.
|
||||||
|
local dye_to_colorid_mapping = {}
|
||||||
|
for colorid, colortab in pairs(mcl_banners.colors) do
|
||||||
|
dye_to_colorid_mapping[colortab[5]] = colorid
|
||||||
|
end
|
||||||
|
|
||||||
-- Number of maximum lines in the descriptions for the banner layers.
|
-- Number of maximum lines in the descriptions for the banner layers.
|
||||||
-- To avoid huge tooltips.
|
-- To avoid huge tooltips.
|
||||||
local max_layer_lines = 6
|
local max_layer_lines = 6
|
||||||
|
@ -272,8 +283,9 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
|
||||||
return
|
return
|
||||||
end
|
end
|
||||||
|
|
||||||
local banner, dye
|
local banner -- banner item
|
||||||
local banner_index
|
local dye -- itemstring of the dye being used
|
||||||
|
local banner_index -- crafting inventory index of the banner
|
||||||
for i = 1, player:get_inventory():get_size("craft") do
|
for i = 1, player:get_inventory():get_size("craft") do
|
||||||
local itemname = old_craft_grid[i]:get_name()
|
local itemname = old_craft_grid[i]:get_name()
|
||||||
if minetest.get_item_group(itemname, "banner") == 1 then
|
if minetest.get_item_group(itemname, "banner") == 1 then
|
||||||
|
@ -344,7 +356,8 @@ local banner_pattern_craft = function(itemstack, player, old_craft_grid, craft_i
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Add the new layer and update other metadata
|
-- Add the new layer and update other metadata
|
||||||
table.insert(layers, {pattern=matching_pattern, color="unicolor_yellow"})
|
local color = dye_to_colorid_mapping[dye]
|
||||||
|
table.insert(layers, {pattern=matching_pattern, color=color})
|
||||||
|
|
||||||
local imeta = itemstack:get_meta()
|
local imeta = itemstack:get_meta()
|
||||||
imeta:set_string("layers", minetest.serialize(layers))
|
imeta:set_string("layers", minetest.serialize(layers))
|
||||||
|
|
Loading…
Reference in New Issue
Block a user