1
0
Fork 0

Compare commits

...

28 Commits

Author SHA1 Message Date
chmodsayshello d346aa07ee reduce filesize for a FINAL time 2023-06-29 20:46:39 +02:00
chmodsayshello 9d1840f4ca fix crash (no longer allow blacklisted items) 2023-06-21 12:15:41 +02:00
chmodsayshello 5cc9038169 reduce texture filesize (again) 2023-06-21 11:51:03 +02:00
chmodsayshello 460ef23b50 make upgrade_trimmed global 2023-06-21 11:49:21 +02:00
chmodsayshello 1e16647fe9 various codestyle fixes 2023-06-21 11:21:39 +02:00
chmodsayshello 16415ae577 bring back old global function 2023-06-21 10:57:50 +02:00
chmodsayshello 2665980007 add ':' to modname once 2023-06-21 10:53:41 +02:00
chmodsayshello bb2ce9ef92 pare down a few bytes from textures 2023-06-17 20:16:36 +02:00
chmodsayshello bc29e4dd95 fix texture filename 2023-06-08 10:41:49 +02:00
chmodsayshello b76ed92aba add missing rib_boots texture 2023-06-08 10:38:30 +02:00
chmodsayshello 703f1f46fc make slot names fit 2023-06-08 10:06:26 +02:00
chmodsayshello 0b118c170e armor trims: support smithing table 2023-06-08 10:02:00 +02:00
chmodsayshello 8431ac34d0 add armor trim templates 2023-06-08 00:16:57 +02:00
chmodsayshello 049128972f armor trim: more color transparency & creative inventory removal 2023-06-07 22:49:04 +02:00
chmodsayshello 0c65d9d11a add mcl_enchanting as hard dependency 2023-06-07 22:29:59 +02:00
chmodsayshello 311beeb31c fix enchanting of trimmed armor 2023-06-07 22:27:52 +02:00
chmodsayshello bc3da8dab8 add armor trim color support 2023-06-07 21:01:55 +02:00
chmodsayshello ed5232411b remove raw trim textures 2023-06-07 20:31:54 +02:00
chmodsayshello 6c6a27320d add trim boot textures 2023-06-07 20:30:10 +02:00
chmodsayshello 82f2f4784e add helm trim textures 2023-06-07 20:13:18 +02:00
chmodsayshello 8476865ea7 add chestplate trim texture 2023-06-07 19:47:51 +02:00
chmodsayshello b4273af245 fix color overlay 2023-06-07 17:22:57 +02:00
chmodsayshello 483285a612 loop through tools instead of items 2023-06-07 17:12:02 +02:00
chmodsayshello b154f2def1 armor trims: inventory overlay 2023-06-07 17:06:53 +02:00
chmodsayshello c62195662c trims: blacklist certain iems 2023-06-07 16:42:34 +02:00
chmodsayshello 4dc5ad3bdb add mcl_armor dependency 2023-06-07 16:11:07 +02:00
chmodsayshello cc186cc588 add durability back 2023-06-07 15:58:28 +02:00
chmodsayshello df8c9625e4 armor trims: proof of concept 2023-06-07 15:41:53 +02:00
73 changed files with 185 additions and 12 deletions

View File

@ -0,0 +1,57 @@
mcl_armor_trims = {
blacklisted = {["mcl_farming:pumpkin_face"]=true, ["mcl_armor:elytra"]=true, ["mcl_armor:elytra_enchanted"]=true},
overlays = {"sentry","dune","coast","wild","tide","ward","vex","rib","snout","eye","spire"},
colors = {["amethyst"]="#8246a5",["gold"]="#ce9627",["emerald"]="#1b9958",["copper"]="#c36447",["diamond"]="#5faed8",["iron"]="#938e88",["lapis"]="#1c306b",["netherite"]="#302a26",["quartz"]="#c9bcb9",["redstone"]="#af2c23"}
}
local function define_items()
local register_list = {}
for itemname, itemdef in pairs(minetest.registered_tools) do
if itemdef._mcl_armor_texture and type(itemdef._mcl_armor_texture) == "string" and not mcl_armor_trims.blacklisted[itemname] then
for _, overlay in pairs(mcl_armor_trims.overlays) do
for mineral, color in pairs(mcl_armor_trims.colors) do
local new_name = itemname .. "_trimmed_" .. overlay .. "_" .. mineral
local new_def = table.copy(itemdef)
local piece_overlay = overlay
local invOverlay = ""
if string.find(itemname,"helmet") then
invOverlay = "^(helmet_trim.png"
piece_overlay = piece_overlay .. "_helmet"
elseif string.find(itemname,"chestplate") then
invOverlay = "^(chestplate_trim.png"
piece_overlay = piece_overlay .. "_chestplate"
elseif string.find(itemname,"leggings") then
invOverlay = "^(leggings_trim.png"
piece_overlay = piece_overlay .. "_leggings"
elseif string.find(itemname,"boots") then
invOverlay = "^(boots_trim.png"
piece_overlay = piece_overlay .. "_boots"
end
invOverlay = invOverlay .. "^[colorize:" .. color .. ":150)"
piece_overlay = piece_overlay .. ".png"
new_def.groups.not_in_creative_inventory = 1
new_def.groups.not_in_craft_guide = 1
new_def._mcl_armor_texture = new_def._mcl_armor_texture .. "^(" .. piece_overlay .. "^[colorize:" .. color .. ":150)"
new_def.inventory_image = itemdef.inventory_image .. invOverlay
if string.find(itemname, "_enchanted") then
new_def._mcl_enchanting_enchanted_tool = new_name
else
new_def._mcl_enchanting_enchanted_tool = itemname .. "_enchanted_trimmed_" .. overlay .. "_" .. mineral
end
register_list[":" .. new_name] = new_def
end
end
end
end
for new_name, new_def in pairs(register_list) do
minetest.register_tool(new_name, new_def)
end
end
minetest.register_on_mods_loaded(define_items)
dofile(minetest.get_modpath(minetest.get_current_modname()).."/templates.lua")

View File

@ -0,0 +1,2 @@
# textdomain: mcl_armor_trims
Smithing Template '@1'=Schiedevorlage '@1'

View File

@ -0,0 +1,2 @@
# textdomain: mcl_armor_trims
Smithing Template '@1'

View File

@ -0,0 +1,4 @@
name = mcl_armor_trims
author = chmodsayshello
optional_depends = mcl_armor
depends = mcl_enchanting, mcl_core, mcl_end

View File

@ -0,0 +1,46 @@
local mod_registername = minetest.get_current_modname() .. ":"
local S = minetest.get_translator(modname)
for _, template_name in pairs(mcl_armor_trims.overlays) do
minetest.register_craftitem(mod_registername .. template_name, {
description = S("Smithing Template '@1'", template_name),
inventory_image = template_name .. "_armor_trim_smithing_template.png",
})
minetest.register_craft({
output = mod_registername .. template_name .. " 2",
recipe = {
{"mcl_core:diamond",mod_registername .. template_name,"mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:cobble","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
}
})
end
--temp craft recipies, missing structures
minetest.register_craft({
output = mod_registername .. "eye",
recipe = {
{"mcl_core:diamond","mcl_end:ender_eye","mcl_core:diamond"},
{"mcl_core:diamond","mcl_end:ender_eye","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
}
})
minetest.register_craft({
output = mod_registername .. "ward",
recipe = {
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:apple_gold_enchanted","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
}
})
minetest.register_craft({
output = mod_registername .. "snout",
recipe = {
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:goldblock","mcl_core:diamond"},
{"mcl_core:diamond","mcl_core:diamond","mcl_core:diamond"},
}
})

View File

@ -6,7 +6,7 @@ local S = minetest.get_translator("mcl_smithing_table")
mcl_smithing_table = {}
-- Function to upgrade diamond tool/armor to netherite tool/armor
function mcl_smithing_table.upgrade_item(itemstack)
function mcl_smithing_table.upgrade_item_netherite(itemstack)
local def = itemstack:get_definition()
if not def or not def._mcl_upgradable then
@ -39,10 +39,12 @@ local formspec = "size[9,9]" ..
mcl_formspec.get_itemslot_bg(0,4.5,9,3) ..
"list[current_player;main;0,7.74;9,1;]" ..
mcl_formspec.get_itemslot_bg(0,7.74,9,1) ..
"list[context;diamond_item;1,2.5;1,1;]" ..
"list[context;upgrade_item;1,2.5;1,1;]" ..
mcl_formspec.get_itemslot_bg(1,2.5,1,1) ..
"list[context;netherite;4,2.5;1,1;]" ..
"list[context;mineral;4,2.5;1,1;]" ..
mcl_formspec.get_itemslot_bg(4,2.5,1,1) ..
"list[context;template;5,2.5;1,1;]"..
mcl_formspec.get_itemslot_bg(5,2.5,1,1)..
"list[context;upgraded_item;8,2.5;1,1;]" ..
mcl_formspec.get_itemslot_bg(8,2.5,1,1) ..
"label[3,0.1;" .. minetest.formspec_escape(minetest.colorize(mcl_colors.DARK_GRAY, S("Upgrade Gear"))) .. "]" ..
@ -51,12 +53,49 @@ local formspec = "size[9,9]" ..
"listring[context;input]"..
"listring[current_player;main]"
local smithing_materials = {
["mcl_nether:netherite_ingot"] = "netherite",
["mcl_core:diamond"] = "diamond",
["mcl_core:lapis"] = "lapis",
["mcl_amethyst:amethyst_shard"] = "amethyst",
["mesecons:wire_00000000_off"] = "redstone",
["mcl_core:iron_ingot"] = "iron",
["mcl_core:gold_ingot"] = "gold",
["mcl_copper:copper_ingot"] = "copper",
["mcl_core:emerald"] = "emerald",
["mcl_nether:quartz"] = "quartz"
}
function mcl_smithing_table.upgrade_trimmed(itemstack, color_mineral, template)
--get information required
local material_name = color_mineral:get_name()
material_name = smithing_materials[material_name]
local overlay = template:get_name():gsub("mcl_armor_trims:","")
--trimming process
itemstack:set_name(itemstack:get_name() .. "_trimmed_" .. overlay .. "_" .. material_name)
tt.reload_itemstack_description(itemstack)
return itemstack
end
function mcl_smithing_table.is_smithing_mineral(itemname)
return smithing_materials[itemname] ~= nil
end
local function reset_upgraded_item(pos)
local inv = minetest.get_meta(pos):get_inventory()
local upgraded_item
local original_itemname = inv:get_stack("upgrade_item", 1):get_name()
local template_present = inv:get_stack("template",1):get_name() ~= ""
local is_armor = original_itemname:find("mcl_armor:") ~= nil
local is_trimmed = original_itemname:find("_trimmed") ~= nil
if inv:get_stack("netherite", 1):get_name() == "mcl_nether:netherite_ingot" then
upgraded_item = mcl_smithing_table.upgrade_item(inv:get_stack("diamond_item", 1))
if inv:get_stack("mineral", 1):get_name() == "mcl_nether:netherite_ingot" and not template_present then
upgraded_item = mcl_smithing_table.upgrade_item_netherite(inv:get_stack("upgrade_item", 1))
elseif template_present and is_armor and not is_trimmed and mcl_smithing_table.is_smithing_mineral(inv:get_stack("mineral", 1):get_name()) then
upgraded_item = mcl_smithing_table.upgrade_trimmed(inv:get_stack("upgrade_item", 1),inv:get_stack("mineral", 1),inv:get_stack("template", 1))
end
inv:set_stack("upgraded_item", 1, upgraded_item)
@ -86,13 +125,24 @@ minetest.register_node("mcl_smithing_table:table", {
local inv = meta:get_inventory()
inv:set_size("diamond_item", 1)
inv:set_size("netherite", 1)
inv:set_size("upgrade_item", 1)
inv:set_size("mineral", 1)
inv:set_size("template",1)
inv:set_size("upgraded_item", 1)
end,
allow_metadata_inventory_put = function(pos, listname, index, stack, player)
if listname == "diamond_item" and mcl_smithing_table.upgrade_item(stack) or listname == "netherite" and stack:get_name() == "mcl_nether:netherite_ingot" then
if
listname == "upgrade_item"
and string.find(stack:get_name(),"mcl_armor:") -- allow any armor piece to go in (in case the player wants to trim them)
and not mcl_armor_trims.blacklisted[stack:get_name()]
or listname == "mineral"
and mcl_smithing_table.is_smithing_mineral(stack:get_name())
or listname == "template"
and string.find(stack:get_name(),"mcl_armor_trims")
then
return stack:get_count()
end
@ -115,8 +165,9 @@ minetest.register_node("mcl_smithing_table:table", {
end
if listname == "upgraded_item" then
take_item("diamond_item")
take_item("netherite")
take_item("upgrade_item")
take_item("mineral")
take_item("template")
-- ToDo: make epic sound
minetest.sound_play("mcl_smithing_table_upgrade", {pos = pos, max_hear_distance = 16})
@ -143,3 +194,8 @@ minetest.register_craft({
{"group:wood", "group:wood", ""}
}
})
-- this is the exact same as mcl_smithing_table.upgrade_item_netherite , in case something relies on the old function
function mcl_smithing_table.upgrade_item(itemstack)
return mcl_smithing_table.upgrade_item_netherite(itemstack)
end

View File

@ -1,2 +1,2 @@
name = mcl_smithing_table
depends = mcl_colors, mcl_formspec
depends = mcl_colors, mcl_formspec, mcl_armor_trims

View File

@ -188,6 +188,7 @@ mcl_structures.register_structure("nether_bulwark",{
stacks_max = 1,
items = {
{ itemstring = "mcl_compass:lodestone" },
{ itemstring = "mcl_armor_trims:rib" },
}
}}
},

View File

@ -69,6 +69,7 @@ mcl_structures.register_structure("desert_temple",{
{ itemstring = "mcl_mobitems:diamond_horse_armor", weight = 5, },
{ itemstring = "mcl_core:diamond", weight = 5, amount_min = 1, amount_max = 3 },
{ itemstring = "mcl_core:apple_gold_enchanted", weight = 2, },
{ itemstring = "mcl_armor_trims:dune", weight = 20, amount_min = 2, amount_max = 2},
}
},
{

View File

@ -58,6 +58,7 @@ mcl_structures.register_structure("end_shipwreck",{
{ itemstring = "mcl_core:diamond", weight = 3, amount_min = 2, amount_max = 7 },
{ itemstring = "mcl_mobitems:saddle", weight = 3, },
{ itemstring = "mcl_core:emerald", weight = 2, amount_min = 1, amount_max = 3 },
{ itemstring = "mcl_armor_trims:spire", amount_min = 1, amount_max = 1 },
{ itemstring = "mcl_books:book", weight = 1, func = function(stack, pr)
mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr)
end },

View File

@ -38,6 +38,7 @@ mcl_structures.register_structure("jungle_temple",{
{ itemstring = "mcl_mobitems:gold_horse_armor", weight = 1, },
{ itemstring = "mcl_mobitems:diamond_horse_armor", weight = 1, },
{ itemstring = "mcl_core:apple_gold_enchanted", weight = 2, },
{ itemstring = "mcl_armor_trims:wild", amount_min = 1, amount_max = 1, },
}
}}
}

View File

@ -44,6 +44,7 @@ mcl_structures.register_structure("pillager_outpost",{
{ itemstring = "mcl_books:book", weight = 1, func = function(stack, pr)
mcl_enchanting.enchant_uniform_randomly(stack, {"soul_speed"}, pr)
end },
{ itemstring = "mcl_armor_trims:sentry"},
}
},
{

View File

@ -166,7 +166,7 @@ mcl_structures.register_structure("shipwreck",{
{ itemstring = "mcl_clock:clock", weight = 1, amount_min = 1, amount_max = 1 },
{ itemstring = "mcl_compass:compass", weight = 1, amount_min = 1, amount_max = 1 },
{ itemstring = "mcl_maps:empty_map", weight = 1, amount_min = 1, amount_max = 1 },
{ itemstring = "mcl_armor_trims:coast", weight = 20, amount_min = 2, amount_max = 2},
}
},
}

View File

@ -63,6 +63,7 @@ mcl_structures.register_structure("woodland_cabin",{
{ itemstring = "mcl_armor:chestplate_chain", weight = 1, },
{ itemstring = "mcl_armor:chestplate_diamond", weight = 1, },
{ itemstring = "mcl_core:apple_gold_enchanted", weight = 2, },
{ itemstring = "mcl_armor_trims:vex", amount_max = 1, },
}
}}
}

BIN
textures/boots_trim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 302 B

BIN
textures/coast_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

BIN
textures/coast_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 145 B

BIN
textures/coast_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 161 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

BIN
textures/dune_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 115 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 147 B

BIN
textures/dune_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

BIN
textures/dune_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 269 B

BIN
textures/eye_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 127 B

BIN
textures/eye_chestplate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 208 B

BIN
textures/eye_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

BIN
textures/eye_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 177 B

BIN
textures/helmet_trim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 113 B

BIN
textures/leggings_trim.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 153 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 256 B

BIN
textures/rib_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 126 B

BIN
textures/rib_chestplate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 154 B

BIN
textures/rib_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

BIN
textures/rib_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 250 B

BIN
textures/sentry_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 134 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 178 B

BIN
textures/sentry_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 262 B

BIN
textures/snout_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 124 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 203 B

BIN
textures/snout_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 139 B

BIN
textures/snout_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 148 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 264 B

BIN
textures/spire_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 129 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 184 B

BIN
textures/spire_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 149 B

BIN
textures/spire_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 166 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 265 B

BIN
textures/tide_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 123 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 B

BIN
textures/tide_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 171 B

BIN
textures/tide_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 181 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 258 B

BIN
textures/vex_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 114 B

BIN
textures/vex_chestplate.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 215 B

BIN
textures/vex_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 125 B

BIN
textures/vex_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 131 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 278 B

BIN
textures/ward_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 135 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

BIN
textures/ward_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 202 B

BIN
textures/ward_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 189 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 283 B

BIN
textures/wild_boots.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 132 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 185 B

BIN
textures/wild_helmet.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 155 B

BIN
textures/wild_leggings.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 165 B