From ecd87428e4ef6b8371d72cb5f77b010728507c5f Mon Sep 17 00:00:00 2001 From: haui Date: Thu, 13 Jun 2024 16:37:19 +0200 Subject: [PATCH] change every mention of lapis and mcl to redstone and add textures to try and solve error messages --- enchantments.lua | 70 ++-- engine.lua | 338 +++++++++--------- groupcaps.lua | 6 +- init.lua | 98 ++--- ...anting.de.tr => redstone_enchanting.de.tr} | 0 ...anting.es.tr => redstone_enchanting.es.tr} | 0 ...anting.fr.tr => redstone_enchanting.fr.tr} | 0 ...anting.ja.tr => redstone_enchanting.ja.tr} | 0 ...anting.pl.tr => redstone_enchanting.pl.tr} | 0 ....pt_BR.tr => redstone_enchanting.pt_BR.tr} | 0 ...anting.ru.tr => redstone_enchanting.ru.tr} | 0 mod.conf | 8 +- ..._book.b3d => redstone_enchanting_book.b3d} | Bin ....ogg => redstone_enchanting_enchant.0.ogg} | Bin ....ogg => redstone_enchanting_enchant.1.ogg} | Bin ....ogg => redstone_enchanting_enchant.2.ogg} | Bin textures/enchanting_table_book.png | Bin 0 -> 366 bytes textures/redstone_enchanting_book_closed.png | Bin 0 -> 142 bytes .../redstone_enchanting_book_enchanted.png | Bin 0 -> 275 bytes textures/redstone_enchanting_book_entity.png | Bin 0 -> 502 bytes textures/redstone_enchanting_book_open.png | Bin 0 -> 197 bytes textures/redstone_enchanting_button.png | Bin 0 -> 70 bytes .../redstone_enchanting_button_background.png | Bin 0 -> 583 bytes .../redstone_enchanting_button_hovered.png | Bin 0 -> 70 bytes textures/redstone_enchanting_button_off.png | Bin 0 -> 70 bytes textures/redstone_enchanting_glyph_1.png | Bin 0 -> 108 bytes textures/redstone_enchanting_glyph_10.png | Bin 0 -> 104 bytes textures/redstone_enchanting_glyph_11.png | Bin 0 -> 105 bytes textures/redstone_enchanting_glyph_12.png | Bin 0 -> 103 bytes textures/redstone_enchanting_glyph_13.png | Bin 0 -> 106 bytes textures/redstone_enchanting_glyph_14.png | Bin 0 -> 106 bytes textures/redstone_enchanting_glyph_15.png | Bin 0 -> 87 bytes textures/redstone_enchanting_glyph_16.png | Bin 0 -> 105 bytes textures/redstone_enchanting_glyph_17.png | Bin 0 -> 81 bytes textures/redstone_enchanting_glyph_18.png | Bin 0 -> 91 bytes textures/redstone_enchanting_glyph_2.png | Bin 0 -> 106 bytes textures/redstone_enchanting_glyph_3.png | Bin 0 -> 106 bytes textures/redstone_enchanting_glyph_4.png | Bin 0 -> 105 bytes textures/redstone_enchanting_glyph_5.png | Bin 0 -> 104 bytes textures/redstone_enchanting_glyph_6.png | Bin 0 -> 106 bytes textures/redstone_enchanting_glyph_7.png | Bin 0 -> 104 bytes textures/redstone_enchanting_glyph_8.png | Bin 0 -> 105 bytes textures/redstone_enchanting_glyph_9.png | Bin 0 -> 102 bytes .../redstone_enchanting_lapis_background.png | Bin 0 -> 201 bytes textures/redstone_enchanting_number_1.png | Bin 0 -> 144 bytes textures/redstone_enchanting_number_1_off.png | Bin 0 -> 96 bytes textures/redstone_enchanting_number_2.png | Bin 0 -> 158 bytes textures/redstone_enchanting_number_2_off.png | Bin 0 -> 96 bytes textures/redstone_enchanting_number_3.png | Bin 0 -> 162 bytes textures/redstone_enchanting_number_3_off.png | Bin 0 -> 96 bytes textures/redstone_enchanting_table_bottom.png | Bin 0 -> 485 bytes textures/redstone_enchanting_table_side.png | Bin 0 -> 471 bytes textures/redstone_enchanting_table_top.png | Bin 0 -> 199 bytes 53 files changed, 260 insertions(+), 260 deletions(-) rename locale/{mcl_enchanting.de.tr => redstone_enchanting.de.tr} (100%) rename locale/{mcl_enchanting.es.tr => redstone_enchanting.es.tr} (100%) rename locale/{mcl_enchanting.fr.tr => redstone_enchanting.fr.tr} (100%) rename locale/{mcl_enchanting.ja.tr => redstone_enchanting.ja.tr} (100%) rename locale/{mcl_enchanting.pl.tr => redstone_enchanting.pl.tr} (100%) rename locale/{mcl_enchanting.pt_BR.tr => redstone_enchanting.pt_BR.tr} (100%) rename locale/{mcl_enchanting.ru.tr => redstone_enchanting.ru.tr} (100%) rename models/{mcl_enchanting_book.b3d => redstone_enchanting_book.b3d} (100%) rename sounds/{mcl_enchanting_enchant.0.ogg => redstone_enchanting_enchant.0.ogg} (100%) rename sounds/{mcl_enchanting_enchant.1.ogg => redstone_enchanting_enchant.1.ogg} (100%) rename sounds/{mcl_enchanting_enchant.2.ogg => redstone_enchanting_enchant.2.ogg} (100%) create mode 100644 textures/enchanting_table_book.png create mode 100644 textures/redstone_enchanting_book_closed.png create mode 100644 textures/redstone_enchanting_book_enchanted.png create mode 100644 textures/redstone_enchanting_book_entity.png create mode 100644 textures/redstone_enchanting_book_open.png create mode 100644 textures/redstone_enchanting_button.png create mode 100644 textures/redstone_enchanting_button_background.png create mode 100644 textures/redstone_enchanting_button_hovered.png create mode 100644 textures/redstone_enchanting_button_off.png create mode 100644 textures/redstone_enchanting_glyph_1.png create mode 100644 textures/redstone_enchanting_glyph_10.png create mode 100644 textures/redstone_enchanting_glyph_11.png create mode 100644 textures/redstone_enchanting_glyph_12.png create mode 100644 textures/redstone_enchanting_glyph_13.png create mode 100644 textures/redstone_enchanting_glyph_14.png create mode 100644 textures/redstone_enchanting_glyph_15.png create mode 100644 textures/redstone_enchanting_glyph_16.png create mode 100644 textures/redstone_enchanting_glyph_17.png create mode 100644 textures/redstone_enchanting_glyph_18.png create mode 100644 textures/redstone_enchanting_glyph_2.png create mode 100644 textures/redstone_enchanting_glyph_3.png create mode 100644 textures/redstone_enchanting_glyph_4.png create mode 100644 textures/redstone_enchanting_glyph_5.png create mode 100644 textures/redstone_enchanting_glyph_6.png create mode 100644 textures/redstone_enchanting_glyph_7.png create mode 100644 textures/redstone_enchanting_glyph_8.png create mode 100644 textures/redstone_enchanting_glyph_9.png create mode 100644 textures/redstone_enchanting_lapis_background.png create mode 100644 textures/redstone_enchanting_number_1.png create mode 100644 textures/redstone_enchanting_number_1_off.png create mode 100644 textures/redstone_enchanting_number_2.png create mode 100644 textures/redstone_enchanting_number_2_off.png create mode 100644 textures/redstone_enchanting_number_3.png create mode 100644 textures/redstone_enchanting_number_3_off.png create mode 100644 textures/redstone_enchanting_table_bottom.png create mode 100644 textures/redstone_enchanting_table_side.png create mode 100644 textures/redstone_enchanting_table_top.png diff --git a/enchantments.lua b/enchantments.lua index 379a18e..a0b5de2 100644 --- a/enchantments.lua +++ b/enchantments.lua @@ -11,7 +11,7 @@ local function increase_damage(damage_group, factor) end -- implemented via on_enchant and additions in mobs_mc; Slowness IV part unimplemented -mcl_enchanting.enchantments.bane_of_arthropods = { +redstone_enchanting.enchantments.bane_of_arthropods = { name = S("Bane of Arthropods"), max_level = 5, primary = {sword = true}, @@ -30,7 +30,7 @@ mcl_enchanting.enchantments.bane_of_arthropods = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.channeling = { +--[[redstone_enchanting.enchantments.channeling = { name = S("Channeling"), max_level = 1, primary = {trident = true}, @@ -49,7 +49,7 @@ mcl_enchanting.enchantments.bane_of_arthropods = { }]]-- -- implemented in mcl_death_drop -mcl_enchanting.enchantments.curse_of_vanishing = { +redstone_enchanting.enchantments.curse_of_vanishing = { name = S("Curse of Vanishing"), max_level = 1, primary = {}, @@ -68,7 +68,7 @@ mcl_enchanting.enchantments.curse_of_vanishing = { } -- implemented in mcl_playerplus -mcl_enchanting.enchantments.depth_strider = { +redstone_enchanting.enchantments.depth_strider = { name = S("Depth Strider"), max_level = 3, primary = {}, @@ -87,7 +87,7 @@ mcl_enchanting.enchantments.depth_strider = { } -- implemented via on_enchant -mcl_enchanting.enchantments.efficiency = { +redstone_enchanting.enchantments.efficiency = { name = S("Efficiency"), max_level = 5, primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, @@ -109,7 +109,7 @@ mcl_enchanting.enchantments.efficiency = { } -- implemented in mcl_mobs and via register_on_punchplayer callback -mcl_enchanting.enchantments.fire_aspect = { +redstone_enchanting.enchantments.fire_aspect = { name = S("Fire Aspect"), max_level = 2, primary = {sword = true}, @@ -131,7 +131,7 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, if hitter and hitter:is_player() then local wielditem = hitter:get_wielded_item() if wielditem then - local fire_aspect_level = mcl_enchanting.get_enchantment(wielditem, "fire_aspect") + local fire_aspect_level = redstone_enchanting.get_enchantment(wielditem, "fire_aspect") if fire_aspect_level > 0 then local player_pos = player:get_pos() local hitter_pos = hitter:get_pos() @@ -143,7 +143,7 @@ minetest.register_on_punchplayer(function(player, hitter, time_from_last_punch, end end) -mcl_enchanting.enchantments.flame = { +redstone_enchanting.enchantments.flame = { name = S("Flame"), max_level = 1, primary = {bow = true}, @@ -162,7 +162,7 @@ mcl_enchanting.enchantments.flame = { } -- implemented in mcl_item_entity -mcl_enchanting.enchantments.fortune = { +redstone_enchanting.enchantments.fortune = { name = S("Fortune"), max_level = 3, primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, @@ -181,7 +181,7 @@ mcl_enchanting.enchantments.fortune = { } -- implemented via walkover.register_global -mcl_enchanting.enchantments.frost_walker = { +redstone_enchanting.enchantments.frost_walker = { name = S("Frost Walker"), max_level = 2, primary = {}, @@ -201,7 +201,7 @@ mcl_enchanting.enchantments.frost_walker = { walkover.register_global(function(pos, _, player) local boots = player:get_inventory():get_stack("armor", 5) - local frost_walker = mcl_enchanting.get_enchantment(boots, "frost_walker") + local frost_walker = redstone_enchanting.get_enchantment(boots, "frost_walker") if frost_walker <= 0 then return end @@ -217,7 +217,7 @@ walkover.register_global(function(pos, _, player) end) -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.impaling = { +--[[redstone_enchanting.enchantments.impaling = { name = S("Impaling"), max_level = 5, primary = {trident = true}, @@ -236,7 +236,7 @@ end) }]]-- -- implemented in mcl_bows -mcl_enchanting.enchantments.infinity = { +redstone_enchanting.enchantments.infinity = { name = S("Infinity"), max_level = 1, primary = {bow = true}, @@ -255,7 +255,7 @@ mcl_enchanting.enchantments.infinity = { } -- implemented via minetest.calculate_knockback -mcl_enchanting.enchantments.knockback = { +redstone_enchanting.enchantments.knockback = { name = S("Knockback"), max_level = 2, primary = {sword = true}, @@ -282,8 +282,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end if hitter and hitter:is_player() and distance <= 3 then local wielditem = hitter:get_wielded_item() - --knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") - local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") + --knockback = knockback + 3 * redstone_enchanting.get_enchantment(wielditem, "knockback") + local enchant = redstone_enchanting.get_enchantment(wielditem, "knockback") knockback = knockback + 3.22 * enchant -- add vertical lift to knockback local v = player:get_velocity() @@ -352,7 +352,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool end -- implemented in mcl_mobs and mobs_mc -mcl_enchanting.enchantments.looting = { +redstone_enchanting.enchantments.looting = { name = S("Looting"), max_level = 3, primary = {sword = true}, @@ -371,7 +371,7 @@ mcl_enchanting.enchantments.looting = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.loyalty = { +--[[redstone_enchanting.enchantments.loyalty = { name = S("Loyalty"), max_level = 3, primary = {trident = true}, @@ -390,7 +390,7 @@ mcl_enchanting.enchantments.looting = { }]]-- -- implemented in mcl_fishing -mcl_enchanting.enchantments.luck_of_the_sea = { +redstone_enchanting.enchantments.luck_of_the_sea = { name = S("Luck of the Sea"), max_level = 3, primary = {fishing_rod = true}, @@ -409,7 +409,7 @@ mcl_enchanting.enchantments.luck_of_the_sea = { } -- implemented in mcl_fishing -mcl_enchanting.enchantments.lure = { +redstone_enchanting.enchantments.lure = { name = S("Lure"), max_level = 3, primary = {fishing_rod = true}, @@ -428,7 +428,7 @@ mcl_enchanting.enchantments.lure = { } -- implemented in mcl_experience -mcl_enchanting.enchantments.mending = { +redstone_enchanting.enchantments.mending = { name = S("Mending"), max_level = 1, primary = {}, @@ -462,7 +462,7 @@ mcl_experience.register_on_add_xp(function(player, xp) for _, can in ipairs(candidates) do local stack = inv:get_stack(can.list, can.index) local wear = stack:get_wear() - if mcl_enchanting.has_enchantment(stack, "mending") and wear > 0 then + if redstone_enchanting.has_enchantment(stack, "mending") and wear > 0 then can.stack = stack can.wear = wear table.insert(final_candidates, can) @@ -492,7 +492,7 @@ mcl_experience.register_on_add_xp(function(player, xp) return xp end, 0) -mcl_enchanting.enchantments.multishot = { +redstone_enchanting.enchantments.multishot = { name = S("Multishot"), max_level = 1, primary = {crossbow = true}, @@ -511,7 +511,7 @@ mcl_enchanting.enchantments.multishot = { } -- requires missing MineClone2 feature -mcl_enchanting.enchantments.piercing = { +redstone_enchanting.enchantments.piercing = { name = S("Piercing"), max_level = 4, primary = {crossbow = true}, @@ -530,7 +530,7 @@ mcl_enchanting.enchantments.piercing = { } -- implemented in mcl_bows -mcl_enchanting.enchantments.power = { +redstone_enchanting.enchantments.power = { name = S("Power"), max_level = 5, primary = {bow = true}, @@ -549,7 +549,7 @@ mcl_enchanting.enchantments.power = { } -- implemented via minetest.calculate_knockback (together with the Knockback enchantment) and mcl_bows -mcl_enchanting.enchantments.punch = { +redstone_enchanting.enchantments.punch = { name = S("Punch"), max_level = 2, primary = {}, @@ -568,7 +568,7 @@ mcl_enchanting.enchantments.punch = { } -- requires missing MineClone2 feature -mcl_enchanting.enchantments.quick_charge = { +redstone_enchanting.enchantments.quick_charge = { name = S("Quick Charge"), max_level = 3, primary = {crossbow = true}, @@ -587,7 +587,7 @@ mcl_enchanting.enchantments.quick_charge = { } -- unimplemented ---[[mcl_enchanting.enchantments.respiration = { +--[[redstone_enchanting.enchantments.respiration = { name = S("Respiration"), max_level = 3, primary = {armor_head = true}, @@ -606,7 +606,7 @@ mcl_enchanting.enchantments.quick_charge = { }]]-- -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.riptide = { +--[[redstone_enchanting.enchantments.riptide = { name = S("Riptide"), max_level = 3, primary = {trident = true}, @@ -625,7 +625,7 @@ mcl_enchanting.enchantments.quick_charge = { }]]-- -- implemented via on_enchant -mcl_enchanting.enchantments.sharpness = { +redstone_enchanting.enchantments.sharpness = { name = S("Sharpness"), max_level = 5, primary = {sword = true}, @@ -644,7 +644,7 @@ mcl_enchanting.enchantments.sharpness = { } -- implemented in mcl_item_entity -mcl_enchanting.enchantments.silk_touch = { +redstone_enchanting.enchantments.silk_touch = { name = S("Silk Touch"), max_level = 1, primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, @@ -663,7 +663,7 @@ mcl_enchanting.enchantments.silk_touch = { } -- implemented via on_enchant and additions in mobs_mc -mcl_enchanting.enchantments.smite = { +redstone_enchanting.enchantments.smite = { name = S("Smite"), max_level = 5, primary = {sword = true}, @@ -682,7 +682,7 @@ mcl_enchanting.enchantments.smite = { } -- implemented in mcl_playerplus -mcl_enchanting.enchantments.soul_speed = { +redstone_enchanting.enchantments.soul_speed = { name = S("Soul Speed"), max_level = 3, primary = {}, @@ -701,7 +701,7 @@ mcl_enchanting.enchantments.soul_speed = { } -- requires missing MineClone2 feature ---[[mcl_enchanting.enchantments.sweeping_edge = { +--[[redstone_enchanting.enchantments.sweeping_edge = { name = S("Sweeping Edge"), max_level = 3, primary = {sword = true}, @@ -720,7 +720,7 @@ mcl_enchanting.enchantments.soul_speed = { }]]-- -- for tools & weapons implemented via on_enchant; for bows implemented in mcl_bows; for armor implemented in mcl_armor and mcl_tt; for fishing rods implemented in mcl_fishing -mcl_enchanting.enchantments.unbreaking = { +redstone_enchanting.enchantments.unbreaking = { name = S("Unbreaking"), max_level = 3, primary = {armor_head = true, armor_torso = true, armor_legs = true, armor_feet = true, pickaxe = true, shovel = true, axe = true, hoe = true, sword = true, fishing_rod = true, bow = true}, diff --git a/engine.lua b/engine.lua index dd01d59..6e6eb07 100644 --- a/engine.lua +++ b/engine.lua @@ -1,19 +1,19 @@ local S = minetest.get_translator(minetest.get_current_modname()) local F = minetest.formspec_escape -function mcl_enchanting.is_book(itemname) - return itemname == "mcl_books:book" or itemname == "mcl_enchanting:book_enchanted" or +function redstone_enchanting.is_book(itemname) + return itemname == "mcl_books:book" or itemname == "redstone_enchanting:book_enchanted" or itemname == "mcl_books:book_enchanted" end -function mcl_enchanting.get_enchantments(itemstack) +function redstone_enchanting.get_enchantments(itemstack) if not itemstack then return {} end - return minetest.deserialize(itemstack:get_meta():get_string("mcl_enchanting:enchantments")) or {} + return minetest.deserialize(itemstack:get_meta():get_string("redstone_enchanting:enchantments")) or {} end -function mcl_enchanting.unload_enchantments(itemstack) +function redstone_enchanting.unload_enchantments(itemstack) local itemdef = itemstack:get_definition() local meta = itemstack:get_meta() if itemdef.tool_capabilities then @@ -26,80 +26,80 @@ function mcl_enchanting.unload_enchantments(itemstack) end end -function mcl_enchanting.load_enchantments(itemstack, enchantments) - if not mcl_enchanting.is_book(itemstack:get_name()) then - mcl_enchanting.unload_enchantments(itemstack) - for enchantment, level in pairs(enchantments or mcl_enchanting.get_enchantments(itemstack)) do - local enchantment_def = mcl_enchanting.enchantments[enchantment] +function redstone_enchanting.load_enchantments(itemstack, enchantments) + if not redstone_enchanting.is_book(itemstack:get_name()) then + redstone_enchanting.unload_enchantments(itemstack) + for enchantment, level in pairs(enchantments or redstone_enchanting.get_enchantments(itemstack)) do + local enchantment_def = redstone_enchanting.enchantments[enchantment] if enchantment_def.on_enchant then enchantment_def.on_enchant(itemstack, level) end end - mcl_enchanting.update_groupcaps(itemstack) + redstone_enchanting.update_groupcaps(itemstack) end tt.reload_itemstack_description(itemstack) end -function mcl_enchanting.set_enchantments(itemstack, enchantments) - itemstack:get_meta():set_string("mcl_enchanting:enchantments", minetest.serialize(enchantments)) - mcl_enchanting.load_enchantments(itemstack) +function redstone_enchanting.set_enchantments(itemstack, enchantments) + itemstack:get_meta():set_string("redstone_enchanting:enchantments", minetest.serialize(enchantments)) + redstone_enchanting.load_enchantments(itemstack) end -function mcl_enchanting.get_enchantment(itemstack, enchantment) - return mcl_enchanting.get_enchantments(itemstack)[enchantment] or 0 +function redstone_enchanting.get_enchantment(itemstack, enchantment) + return redstone_enchanting.get_enchantments(itemstack)[enchantment] or 0 end -function mcl_enchanting.has_enchantment(itemstack, enchantment) - return mcl_enchanting.get_enchantment(itemstack, enchantment) > 0 +function redstone_enchanting.has_enchantment(itemstack, enchantment) + return redstone_enchanting.get_enchantment(itemstack, enchantment) > 0 end -function mcl_enchanting.get_enchantment_description(enchantment, level) - local enchantment_def = mcl_enchanting.enchantments[enchantment] +function redstone_enchanting.get_enchantment_description(enchantment, level) + local enchantment_def = redstone_enchanting.enchantments[enchantment] return enchantment_def.name .. (enchantment_def.max_level == 1 and "" or " " .. mcl_util.to_roman(level)) end -function mcl_enchanting.get_colorized_enchantment_description(enchantment, level) - return minetest.colorize(mcl_enchanting.enchantments[enchantment].curse and mcl_colors.RED or mcl_colors.GRAY, - mcl_enchanting.get_enchantment_description(enchantment, level)) +function redstone_enchanting.get_colorized_enchantment_description(enchantment, level) + return minetest.colorize(redstone_enchanting.enchantments[enchantment].curse and mcl_colors.RED or mcl_colors.GRAY, + redstone_enchanting.get_enchantment_description(enchantment, level)) end -function mcl_enchanting.get_enchanted_itemstring(itemname) +function redstone_enchanting.get_enchanted_itemstring(itemname) local def = minetest.registered_items[itemname] - return def and def._mcl_enchanting_enchanted_tool + return def and def._redstone_enchanting_enchanted_tool end -function mcl_enchanting.set_enchanted_itemstring(itemstack) - itemstack:set_name(mcl_enchanting.get_enchanted_itemstring(itemstack:get_name())) +function redstone_enchanting.set_enchanted_itemstring(itemstack) + itemstack:set_name(redstone_enchanting.get_enchanted_itemstring(itemstack:get_name())) end -function mcl_enchanting.is_enchanted(itemname) +function redstone_enchanting.is_enchanted(itemname) return minetest.get_item_group(itemname, "enchanted") > 0 end -function mcl_enchanting.not_enchantable_on_enchanting_table(itemname) - return mcl_enchanting.get_enchantability(itemname) == -1 +function redstone_enchanting.not_enchantable_on_enchanting_table(itemname) + return redstone_enchanting.get_enchantability(itemname) == -1 end -function mcl_enchanting.is_enchantable(itemname) - return mcl_enchanting.get_enchantability(itemname) > 0 or - mcl_enchanting.not_enchantable_on_enchanting_table(itemname) +function redstone_enchanting.is_enchantable(itemname) + return redstone_enchanting.get_enchantability(itemname) > 0 or + redstone_enchanting.not_enchantable_on_enchanting_table(itemname) end -function mcl_enchanting.can_enchant_freshly(itemname) - return mcl_enchanting.is_enchantable(itemname) and not mcl_enchanting.is_enchanted(itemname) +function redstone_enchanting.can_enchant_freshly(itemname) + return redstone_enchanting.is_enchantable(itemname) and not redstone_enchanting.is_enchanted(itemname) end -function mcl_enchanting.get_enchantability(itemname) +function redstone_enchanting.get_enchantability(itemname) return minetest.get_item_group(itemname, "enchantability") end -function mcl_enchanting.item_supports_enchantment(itemname, enchantment, early) - if not mcl_enchanting.is_enchantable(itemname) then +function redstone_enchanting.item_supports_enchantment(itemname, enchantment, early) + if not redstone_enchanting.is_enchantable(itemname) then return false end - local enchantment_def = mcl_enchanting.enchantments[enchantment] - if mcl_enchanting.is_book(itemname) then + local enchantment_def = redstone_enchanting.enchantments[enchantment] + if redstone_enchanting.is_book(itemname) then return true, (not enchantment_def.treasure) end local itemdef = minetest.registered_items[itemname] @@ -124,8 +124,8 @@ function mcl_enchanting.item_supports_enchantment(itemname, enchantment, early) return false end -function mcl_enchanting.can_enchant(itemstack, enchantment, level) - local enchantment_def = mcl_enchanting.enchantments[enchantment] +function redstone_enchanting.can_enchant(itemstack, enchantment, level) + local enchantment_def = redstone_enchanting.enchantments[enchantment] if not enchantment_def then return false, "enchantment invalid" end @@ -133,7 +133,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) if itemname == "" then return false, "item missing" end - local supported, primary = mcl_enchanting.item_supports_enchantment(itemname, enchantment) + local supported, primary = redstone_enchanting.item_supports_enchantment(itemname, enchantment) if not supported then return false, "item not supported" end @@ -145,44 +145,44 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level) elseif level < 1 then return false, "level too small", 1 end - local item_enchantments = mcl_enchanting.get_enchantments(itemstack) + local item_enchantments = redstone_enchanting.get_enchantments(itemstack) local enchantment_level = item_enchantments[enchantment] if enchantment_level then - return false, "incompatible", mcl_enchanting.get_enchantment_description(enchantment, enchantment_level) + return false, "incompatible", redstone_enchanting.get_enchantment_description(enchantment, enchantment_level) end - if not mcl_enchanting.is_book(itemname) then + if not redstone_enchanting.is_book(itemname) then for incompatible in pairs(enchantment_def.incompatible) do local incompatible_level = item_enchantments[incompatible] if incompatible_level then return false, "incompatible", - mcl_enchanting.get_enchantment_description(incompatible, incompatible_level) + redstone_enchanting.get_enchantment_description(incompatible, incompatible_level) end end end return true, nil, nil, primary end -function mcl_enchanting.enchant(itemstack, enchantment, level) - mcl_enchanting.set_enchanted_itemstring(itemstack) - local enchantments = mcl_enchanting.get_enchantments(itemstack) +function redstone_enchanting.enchant(itemstack, enchantment, level) + redstone_enchanting.set_enchanted_itemstring(itemstack) + local enchantments = redstone_enchanting.get_enchantments(itemstack) enchantments[enchantment] = level - mcl_enchanting.set_enchantments(itemstack, enchantments) + redstone_enchanting.set_enchantments(itemstack, enchantments) return itemstack end -function mcl_enchanting.combine(itemstack, combine_with) +function redstone_enchanting.combine(itemstack, combine_with) local itemname = itemstack:get_name() local combine_name = combine_with:get_name() - local enchanted_itemname = mcl_enchanting.get_enchanted_itemstring(itemname) + local enchanted_itemname = redstone_enchanting.get_enchanted_itemstring(itemname) if not enchanted_itemname or - enchanted_itemname ~= mcl_enchanting.get_enchanted_itemstring(combine_name) and - not mcl_enchanting.is_book(combine_name) then + enchanted_itemname ~= redstone_enchanting.get_enchanted_itemstring(combine_name) and + not redstone_enchanting.is_book(combine_name) then return false end - local enchantments = mcl_enchanting.get_enchantments(itemstack) + local enchantments = redstone_enchanting.get_enchantments(itemstack) local any_new_enchantment = false - for enchantment, combine_level in pairs(mcl_enchanting.get_enchantments(combine_with)) do - local enchantment_def = mcl_enchanting.enchantments[enchantment] + for enchantment, combine_level in pairs(redstone_enchanting.get_enchantments(combine_with)) do + local enchantment_def = redstone_enchanting.enchantments[enchantment] local enchantment_level = enchantments[enchantment] if enchantment_level then -- The enchantment already exist in the provided item if enchantment_level == combine_level then @@ -191,7 +191,7 @@ function mcl_enchanting.combine(itemstack, combine_with) enchantment_level = math.max(enchantment_level, combine_level) end any_new_enchantment = any_new_enchantment or ( enchantment_level ~= enchantments[enchantment] ) - elseif mcl_enchanting.item_supports_enchantment(itemname, enchantment) then -- this is a new enchantement to try to add + elseif redstone_enchanting.item_supports_enchantment(itemname, enchantment) then -- this is a new enchantement to try to add local supported = true for incompatible in pairs(enchantment_def.incompatible) do if enchantments[incompatible] then @@ -210,19 +210,19 @@ function mcl_enchanting.combine(itemstack, combine_with) end if any_new_enchantment then itemstack:set_name(enchanted_itemname) - mcl_enchanting.set_enchantments(itemstack, enchantments) + redstone_enchanting.set_enchantments(itemstack, enchantments) end return any_new_enchantment end -function mcl_enchanting.enchantments_snippet(_, _, itemstack) +function redstone_enchanting.enchantments_snippet(_, _, itemstack) if not itemstack then return end - local enchantments = mcl_enchanting.get_enchantments(itemstack) + local enchantments = redstone_enchanting.get_enchantments(itemstack) local text = "" for enchantment, level in pairs(enchantments) do - text = text .. mcl_enchanting.get_colorized_enchantment_description(enchantment, level) .. "\n" + text = text .. redstone_enchanting.get_colorized_enchantment_description(enchantment, level) .. "\n" end if text ~= "" then if not itemstack:get_definition()._tt_original_description then @@ -248,7 +248,7 @@ local function get_after_use_callback(itemdef) -- one too. return function(itemstack, user, node, digparams) itemdef.after_use(itemstack, user, node, digparams) - mcl_enchanting.update_groupcaps(itemstack) + redstone_enchanting.update_groupcaps(itemstack) end end @@ -259,22 +259,22 @@ local function get_after_use_callback(itemdef) itemstack:add_wear(digparams.wear) end - --local enchantments = mcl_enchanting.get_enchantments(itemstack) - mcl_enchanting.update_groupcaps(itemstack) + --local enchantments = redstone_enchanting.get_enchantments(itemstack) + redstone_enchanting.update_groupcaps(itemstack) end end -function mcl_enchanting.initialize() +function redstone_enchanting.initialize() local register_tool_list = {} local register_item_list = {} for itemname, itemdef in pairs(minetest.registered_items) do - if mcl_enchanting.can_enchant_freshly(itemname) and not mcl_enchanting.is_book(itemname) then + if redstone_enchanting.can_enchant_freshly(itemname) and not redstone_enchanting.is_book(itemname) then local new_name = itemname .. "_enchanted" - minetest.override_item(itemname, { _mcl_enchanting_enchanted_tool = new_name }) + minetest.override_item(itemname, { _redstone_enchanting_enchanted_tool = new_name }) local new_def = table.copy(itemdef) - new_def.inventory_image = itemdef.inventory_image .. mcl_enchanting.overlay + new_def.inventory_image = itemdef.inventory_image .. redstone_enchanting.overlay if new_def.wield_image then - new_def.wield_image = new_def.wield_image .. mcl_enchanting.overlay + new_def.wield_image = new_def.wield_image .. redstone_enchanting.overlay end new_def.groups.not_in_creative_inventory = 1 new_def.groups.not_in_craft_guide = 1 @@ -282,11 +282,11 @@ function mcl_enchanting.initialize() if new_def._mcl_armor_texture then if type(new_def._mcl_armor_texture) == "string" then - new_def._mcl_armor_texture = new_def._mcl_armor_texture .. mcl_enchanting.overlay + new_def._mcl_armor_texture = new_def._mcl_armor_texture .. redstone_enchanting.overlay end end - new_def._mcl_enchanting_enchanted_tool = new_name + new_def._redstone_enchanting_enchanted_tool = new_name new_def.after_use = get_after_use_callback(itemdef) local register_list = register_item_list if itemdef.type == "tool" then @@ -303,7 +303,7 @@ function mcl_enchanting.initialize() end end -function mcl_enchanting.random(pr, ...) +function redstone_enchanting.random(pr, ...) local r = pr and pr:next(...) or math.random(...) if pr and not ({ ... })[1] then @@ -313,11 +313,11 @@ function mcl_enchanting.random(pr, ...) return r end -function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) +function redstone_enchanting.get_random_enchantment(itemstack, treasure, weighted, exclude, pr) local possible = {} - for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do - local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) + for enchantment, enchantment_def in pairs(redstone_enchanting.enchantments) do + local can_enchant, _, _, primary = redstone_enchanting.can_enchant(itemstack, enchantment, 1) if can_enchant and (primary or treasure) and (not exclude or table.indexof(exclude, enchantment) == -1) then local weight = weighted and enchantment_def.weight or 1 @@ -328,27 +328,27 @@ function mcl_enchanting.get_random_enchantment(itemstack, treasure, weighted, ex end end - return #possible > 0 and possible[mcl_enchanting.random(pr, 1, #possible)] + return #possible > 0 and possible[redstone_enchanting.random(pr, 1, #possible)] end -function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, +function redstone_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local itemname = itemstack:get_name() - if (not mcl_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted) or - mcl_enchanting.not_enchantable_on_enchanting_table(itemname) then + if (not redstone_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted) or + redstone_enchanting.not_enchantable_on_enchanting_table(itemname) then return end itemstack = ItemStack(itemstack) local enchantability = minetest.get_item_group(itemname, "enchantability") - enchantability = 1 + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + - mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + enchantability = 1 + redstone_enchanting.random(pr, 0, math.floor(enchantability / 4)) + + redstone_enchanting.random(pr, 0, math.floor(enchantability / 4)) enchantment_level = enchantment_level + enchantability enchantment_level = enchantment_level + - enchantment_level * (mcl_enchanting.random(pr) + mcl_enchanting.random(pr) - 1) * 0.15 + enchantment_level * (redstone_enchanting.random(pr) + redstone_enchanting.random(pr) - 1) * 0.15 enchantment_level = math.max(math.floor(enchantment_level + 0.5), 1) local enchantments = {} @@ -363,13 +363,13 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve break end - local selected_enchantment = mcl_enchanting.get_random_enchantment(itemstack, treasure, true, nil, pr) + local selected_enchantment = redstone_enchanting.get_random_enchantment(itemstack, treasure, true, nil, pr) if not selected_enchantment then break end - local enchantment_def = mcl_enchanting.enchantments[selected_enchantment] + local enchantment_def = redstone_enchanting.enchantments[selected_enchantment] local power_range_table = enchantment_def.power_range_table local enchantment_power @@ -387,62 +387,62 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve return end - description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) + description = redstone_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) end if enchantment_power then enchantments[selected_enchantment] = enchantment_power - mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) + redstone_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) end - until not no_reduced_bonus_chance and mcl_enchanting.random(pr) >= (enchantment_level + 1) / 50 + until not no_reduced_bonus_chance and redstone_enchanting.random(pr) >= (enchantment_level + 1) / 50 return enchantments, description end -function mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) +function redstone_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) local enchantments repeat - enchantments = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, + enchantments = redstone_enchanting.generate_random_enchantments(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) until enchantments return enchantments end -function mcl_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, +function redstone_enchanting.enchant_randomly(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) - local enchantments = mcl_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) + local enchantments = redstone_enchanting.generate_random_enchantments_reliable(itemstack, enchantment_level, treasure, no_reduced_bonus_chance, ignore_already_enchanted, pr) - mcl_enchanting.set_enchanted_itemstring(itemstack) - mcl_enchanting.set_enchantments(itemstack, enchantments) + redstone_enchanting.set_enchanted_itemstring(itemstack) + redstone_enchanting.set_enchantments(itemstack, enchantments) return itemstack end -function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) - local enchantment = mcl_enchanting.get_random_enchantment(stack, true, false, exclude, pr) +function redstone_enchanting.enchant_uniform_randomly(stack, exclude, pr) + local enchantment = redstone_enchanting.get_random_enchantment(stack, true, false, exclude, pr) if enchantment then - mcl_enchanting.enchant(stack, enchantment, - mcl_enchanting.random(pr, 1, mcl_enchanting.enchantments[enchantment].max_level)) + redstone_enchanting.enchant(stack, enchantment, + redstone_enchanting.random(pr, 1, redstone_enchanting.enchantments[enchantment].max_level)) end return stack end -function mcl_enchanting.get_random_glyph_row() +function redstone_enchanting.get_random_glyph_row() local glyphs = "" local x = 1.3 for i = 1, 9 do glyphs = glyphs .. - "image[" .. x .. ",0.1;0.5,0.5;mcl_enchanting_glyph_" .. math.random(18) .. ".png^[colorize:#675D49:255]" + "image[" .. x .. ",0.1;0.5,0.5;redstone_enchanting_glyph_" .. math.random(18) .. ".png^[colorize:#675D49:255]" x = x + 0.6 end return glyphs end -function mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves) +function redstone_enchanting.generate_random_table_slots(itemstack, num_bookshelves) local base = math.random(8) + math.floor(num_bookshelves / 2) + math.random(0, num_bookshelves) local required_levels = { math.max(base / 3, 1), @@ -452,12 +452,12 @@ function mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves) local slots = {} for i, enchantment_level in ipairs(required_levels) do local slot = false - local enchantments, description = mcl_enchanting.generate_random_enchantments(itemstack, enchantment_level) + local enchantments, description = redstone_enchanting.generate_random_enchantments(itemstack, enchantment_level) if enchantments then slot = { enchantments = enchantments, description = description, - glyphs = mcl_enchanting.get_random_glyph_row(), + glyphs = redstone_enchanting.get_random_glyph_row(), level_requirement = math.max(i, math.floor(enchantment_level)), } end @@ -466,23 +466,23 @@ function mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves) return slots end -function mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) +function redstone_enchanting.get_table_slots(player, itemstack, num_bookshelves) local itemname = itemstack:get_name() - if (not mcl_enchanting.can_enchant_freshly(itemname)) or mcl_enchanting.not_enchantable_on_enchanting_table(itemname) then + if (not redstone_enchanting.can_enchant_freshly(itemname)) or redstone_enchanting.not_enchantable_on_enchanting_table(itemname) then return { false, false, false } end local meta = player:get_meta() - local player_slots = minetest.deserialize(meta:get_string("mcl_enchanting:slots")) or {} + local player_slots = minetest.deserialize(meta:get_string("redstone_enchanting:slots")) or {} local player_bookshelves_slots = player_slots[num_bookshelves] or {} local player_bookshelves_item_slots = player_bookshelves_slots[itemname] if player_bookshelves_item_slots then return player_bookshelves_item_slots else - player_bookshelves_item_slots = mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves) + player_bookshelves_item_slots = redstone_enchanting.generate_random_table_slots(itemstack, num_bookshelves) if player_bookshelves_item_slots then player_bookshelves_slots[itemname] = player_bookshelves_item_slots player_slots[num_bookshelves] = player_bookshelves_slots - meta:set_string("mcl_enchanting:slots", minetest.serialize(player_slots)) + meta:set_string("redstone_enchanting:slots", minetest.serialize(player_slots)) return player_bookshelves_item_slots else return { false, false, false } @@ -490,17 +490,17 @@ function mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) end end -function mcl_enchanting.reset_table_slots(player) - player:get_meta():set_string("mcl_enchanting:slots", "") +function redstone_enchanting.reset_table_slots(player) + player:get_meta():set_string("redstone_enchanting:slots", "") end -function mcl_enchanting.show_enchanting_formspec(player) +function redstone_enchanting.show_enchanting_formspec(player) local C = minetest.get_color_escape_sequence local name = player:get_player_name() local meta = player:get_meta() local inv = player:get_inventory() - local num_bookshelves = meta:get_int("mcl_enchanting:num_bookshelves") - local table_name = meta:get_string("mcl_enchanting:table_name") + local num_bookshelves = meta:get_int("redstone_enchanting:num_bookshelves") + local table_name = meta:get_string("redstone_enchanting:table_name") local formspec = table.concat({ "formspec_version[4]", @@ -510,9 +510,9 @@ function mcl_enchanting.show_enchanting_formspec(player) mcl_formspec.get_itemslot_bg_v4(1, 3.25, 1, 1), "list[current_player;enchanting_item;1,3.25;1,1]", mcl_formspec.get_itemslot_bg_v4(2.25, 3.25, 1, 1), - "image[2.25,3.25;1,1;mcl_enchanting_lapis_background.png]", - "list[current_player;enchanting_lapis;2.25,3.25;1,1]", - "image[4.125,0.56;7.25,4.1;mcl_enchanting_button_background.png]", + "image[2.25,3.25;1,1;redstone_enchanting_redstone_background.png]", + "list[current_player;enchanting_redstone;2.25,3.25;1,1]", + "image[4.125,0.56;7.25,4.1;redstone_enchanting_button_background.png]", "label[0.375,4.7;" .. F(C(mcl_formspec.label_color) .. S("Inventory")) .. "]", mcl_formspec.get_itemslot_bg_v4(0.375, 5.1, 9, 3), "list[current_player;main;0.375,5.1;9,3;9]", @@ -524,7 +524,7 @@ function mcl_enchanting.show_enchanting_formspec(player) "listring[current_player;main]", "listring[current_player;enchanting]", "listring[current_player;main]", - "listring[current_player;enchanting_lapis]", + "listring[current_player;enchanting_redstone]", "listring[current_player;main]", }) @@ -532,12 +532,12 @@ function mcl_enchanting.show_enchanting_formspec(player) local player_levels = mcl_experience.get_level(player) local y = 0.65 local any_enchantment = false - local table_slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves) + local table_slots = redstone_enchanting.get_table_slots(player, itemstack, num_bookshelves) for i, slot in ipairs(table_slots) do any_enchantment = any_enchantment or slot - local enough_lapis = inv:contains_item("enchanting_lapis", ItemStack({ name = "mcl_core:lapis", count = i })) + local enough_redstone = inv:contains_item("enchanting_redstone", ItemStack({ name = "mesecons:redstone", count = i })) local enough_levels = slot and slot.level_requirement <= player_levels - local can_enchant = (slot and enough_lapis and enough_levels) + local can_enchant = (slot and enough_redstone and enough_levels) local ending = (can_enchant and "" or "_off") local hover_ending = (can_enchant and "_hovered" or "_off") formspec = formspec @@ -555,18 +555,18 @@ function mcl_enchanting.show_enchanting_formspec(player) " . . . ?\n\n" .. ( enough_levels and - C(enough_lapis and "#818181" or "#FC5454") .. - F(S("@1 Lapis Lazuli", i)) .. "\n" .. C("#818181") .. F(S("@1 Enchantment Levels", i)) or + C(enough_redstone and "#818181" or "#FC5454") .. + F(S("@1 Redstone", i)) .. "\n" .. C("#818181") .. F(S("@1 Enchantment Levels", i)) or C("#FC5454") .. F(S("Level requirement: @1", slot.level_requirement))) .. "]" or "") .. "style[button_" .. i .. - ";bgimg=mcl_enchanting_button" .. + ";bgimg=redstone_enchanting_button" .. ending .. - ".png;bgimg_hovered=mcl_enchanting_button" .. - hover_ending .. ".png;bgimg_pressed=mcl_enchanting_button" .. hover_ending .. ".png]" + ".png;bgimg_hovered=redstone_enchanting_button" .. + hover_ending .. ".png;bgimg_pressed=redstone_enchanting_button" .. hover_ending .. ".png]" .. "button[0,0;7.25,1.3;button_" .. i .. ";]" - .. (slot and "image[0,0;1.3,1.3;mcl_enchanting_number_" .. i .. ending .. ".png]" or "") + .. (slot and "image[0,0;1.3,1.3;redstone_enchanting_number_" .. i .. ending .. ".png]" or "") .. (slot and "label[6.8,1;" .. C(can_enchant and "#80FF20" or "#407F10") .. slot.level_requirement .. "]" or "") .. (slot and slot.glyphs or "") .. "container_end[]" @@ -578,12 +578,12 @@ function mcl_enchanting.show_enchanting_formspec(player) (any_enchantment and 1.1 or 1.67) .. ",1.2;" .. (any_enchantment and 2 or 0.87) .. - ",1.43;mcl_enchanting_book_" .. (any_enchantment and "open" or "closed") .. ".png]" - minetest.show_formspec(name, "mcl_enchanting:table", formspec) + ",1.43;redstone_enchanting_book_" .. (any_enchantment and "open" or "closed") .. ".png]" + minetest.show_formspec(name, "redstone_enchanting:table", formspec) end -function mcl_enchanting.handle_formspec_fields(player, formname, fields) - if formname == "mcl_enchanting:table" then +function redstone_enchanting.handle_formspec_fields(player, formname, fields) + if formname == "redstone_enchanting:table" then local button_pressed for i = 1, 3 do if fields["button_" .. i] then @@ -594,13 +594,13 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields) local name = player:get_player_name() local inv = player:get_inventory() local meta = player:get_meta() - local num_bookshelfes = meta:get_int("mcl_enchanting:num_bookshelves") + local num_bookshelfes = meta:get_int("redstone_enchanting:num_bookshelves") local itemstack = inv:get_stack("enchanting_item", 1) - local cost = ItemStack({ name = "mcl_core:lapis", count = button_pressed }) - if not inv:contains_item("enchanting_lapis", cost) then + local cost = ItemStack({ name = "mesecons:redstone", count = button_pressed }) + if not inv:contains_item("enchanting_redstone", cost) then return end - local slots = mcl_enchanting.get_table_slots(player, itemstack, num_bookshelfes) + local slots = redstone_enchanting.get_table_slots(player, itemstack, num_bookshelfes) local slot = slots[button_pressed] if not slot then return @@ -610,27 +610,27 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields) return end mcl_experience.set_level(player, player_level - button_pressed) - inv:remove_item("enchanting_lapis", cost) - mcl_enchanting.set_enchanted_itemstring(itemstack) - mcl_enchanting.set_enchantments(itemstack, slot.enchantments) + inv:remove_item("enchanting_redstone", cost) + redstone_enchanting.set_enchanted_itemstring(itemstack) + redstone_enchanting.set_enchantments(itemstack, slot.enchantments) inv:set_stack("enchanting_item", 1, itemstack) - minetest.sound_play("mcl_enchanting_enchant", { to_player = name, gain = 5.0 }) - mcl_enchanting.reset_table_slots(player) - mcl_enchanting.show_enchanting_formspec(player) + minetest.sound_play("redstone_enchanting_enchant", { to_player = name, gain = 5.0 }) + redstone_enchanting.reset_table_slots(player) + redstone_enchanting.show_enchanting_formspec(player) awards.unlock(player:get_player_name(), "mcl:enchanter") end end -function mcl_enchanting.initialize_player(player) +function redstone_enchanting.initialize_player(player) local inv = player:get_inventory() inv:set_size("enchanting", 1) inv:set_size("enchanting_item", 1) - inv:set_size("enchanting_lapis", 1) + inv:set_size("enchanting_redstone", 1) end -function mcl_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) +function redstone_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) if inventory:get_location().type == "player" then - local enchanting_lists = mcl_enchanting.enchanting_lists + local enchanting_lists = redstone_enchanting.enchanting_lists if action == "move" then local is_from = table.indexof(enchanting_lists, inventory_info.from_list) ~= -1 local is_to = table.indexof(enchanting_lists, inventory_info.to_list) ~= -1 @@ -643,21 +643,21 @@ function mcl_enchanting.is_enchanting_inventory_action(action, inventory, invent end end -function mcl_enchanting.allow_inventory_action(player, action, inventory, inventory_info) - local is_enchanting_action, do_limit = mcl_enchanting.is_enchanting_inventory_action(action, inventory, +function redstone_enchanting.allow_inventory_action(player, action, inventory, inventory_info) + local is_enchanting_action, do_limit = redstone_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) if is_enchanting_action and do_limit then if action == "move" then local listname = inventory_info.to_list local stack = inventory:get_stack(inventory_info.from_list, inventory_info.from_index) - if stack:get_name() == "mcl_core:lapis" and listname ~= "enchanting_item" then + if stack:get_name() == "mesecons:redstone" and listname ~= "enchanting_item" then local count = stack:get_count() - local old_stack = inventory:get_stack("enchanting_lapis", 1) + local old_stack = inventory:get_stack("enchanting_redstone", 1) if old_stack:get_name() ~= "" then count = math.min(count, old_stack:get_free_space()) end return count - elseif inventory:get_stack("enchanting_item", 1):get_count() == 0 and listname ~= "enchanting_lapis" then + elseif inventory:get_stack("enchanting_item", 1):get_count() == 0 and listname ~= "enchanting_redstone" then return 1 else return 0 @@ -668,49 +668,49 @@ function mcl_enchanting.allow_inventory_action(player, action, inventory, invent end end -function mcl_enchanting.on_inventory_action(player, action, inventory, inventory_info) - if mcl_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) then +function redstone_enchanting.on_inventory_action(player, action, inventory, inventory_info) + if redstone_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) then if action == "move" and inventory_info.to_list == "enchanting" then local stack = inventory:get_stack("enchanting", 1) local result_list - if stack:get_name() == "mcl_core:lapis" then - result_list = "enchanting_lapis" - stack:add_item(inventory:get_stack("enchanting_lapis", 1)) + if stack:get_name() == "mesecons:redstone" then + result_list = "enchanting_redstone" + stack:add_item(inventory:get_stack("enchanting_redstone", 1)) else result_list = "enchanting_item" end inventory:set_stack(result_list, 1, stack) inventory:set_stack("enchanting", 1, nil) end - mcl_enchanting.show_enchanting_formspec(player) + redstone_enchanting.show_enchanting_formspec(player) end end -function mcl_enchanting.schedule_book_animation(self, anim) +function redstone_enchanting.schedule_book_animation(self, anim) self.scheduled_anim = { timer = self.anim_length, anim = anim } end -function mcl_enchanting.set_book_animation(self, anim) - local anim_index = mcl_enchanting.book_animations[anim] - local start, stop = mcl_enchanting.book_animation_steps[anim_index], - mcl_enchanting.book_animation_steps[anim_index + 1] - self.object:set_animation({ x = start, y = stop }, mcl_enchanting.book_animation_speed, 0, - mcl_enchanting.book_animation_loop[anim] or false) +function redstone_enchanting.set_book_animation(self, anim) + local anim_index = redstone_enchanting.book_animations[anim] + local start, stop = redstone_enchanting.book_animation_steps[anim_index], + redstone_enchanting.book_animation_steps[anim_index + 1] + self.object:set_animation({ x = start, y = stop }, redstone_enchanting.book_animation_speed, 0, + redstone_enchanting.book_animation_loop[anim] or false) self.scheduled_anim = nil self.anim_length = (stop - start) / 40 end -function mcl_enchanting.check_animation_schedule(self, dtime) +function redstone_enchanting.check_animation_schedule(self, dtime) local schedanim = self.scheduled_anim if schedanim then schedanim.timer = schedanim.timer - dtime if schedanim.timer <= 0 then - mcl_enchanting.set_book_animation(self, schedanim.anim) + redstone_enchanting.set_book_animation(self, schedanim.anim) end end end -function mcl_enchanting.look_at(self, pos2) +function redstone_enchanting.look_at(self, pos2) local pos1 = self.object:get_pos() local vec = vector.subtract(pos1, pos2) local yaw = math.atan(vec.z / vec.x) - math.pi / 2 @@ -718,10 +718,10 @@ function mcl_enchanting.look_at(self, pos2) self.object:set_yaw(yaw + math.pi) end -function mcl_enchanting.get_bookshelves(pos) +function redstone_enchanting.get_bookshelves(pos) local absolute, relative = {}, {} - for i, rp in ipairs(mcl_enchanting.bookshelf_positions) do - local airp = vector.add(pos, mcl_enchanting.air_positions[i]) + for i, rp in ipairs(redstone_enchanting.bookshelf_positions) do + local airp = vector.add(pos, redstone_enchanting.air_positions[i]) local ap = vector.add(pos, rp) if minetest.get_node(ap).name == "mcl_books:bookshelf" and minetest.get_node(airp).name == "air" then table.insert(absolute, ap) diff --git a/groupcaps.lua b/groupcaps.lua index 2a83727..fe17673 100644 --- a/groupcaps.lua +++ b/groupcaps.lua @@ -41,14 +41,14 @@ end -- -- To make it more efficient it will first check a hash value to determine if -- the tool needs to be updated. -function mcl_enchanting.update_groupcaps(itemstack) +function redstone_enchanting.update_groupcaps(itemstack) local name = itemstack:get_name() if not minetest.registered_tools[name] or not minetest.registered_tools[name].tool_capabilities then return end - local efficiency = mcl_enchanting.get_enchantment(itemstack, "efficiency") - local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") + local efficiency = redstone_enchanting.get_enchantment(itemstack, "efficiency") + local unbreaking = redstone_enchanting.get_enchantment(itemstack, "unbreaking") if unbreaking == 0 and efficiency == 0 then return end diff --git a/init.lua b/init.lua index 02ed1ee..ba186e6 100644 --- a/init.lua +++ b/init.lua @@ -5,7 +5,7 @@ local S = minetest.get_translator(modname) local math = math local vector = vector -mcl_enchanting = { +redstone_enchanting = { book_offset = vector.new(0, 0.75, 0), book_animations = {["close"] = 1, ["opening"] = 2, ["open"] = 3, ["closing"] = 4}, book_animation_steps = {0, 640, 680, 700, 740}, @@ -14,7 +14,7 @@ mcl_enchanting = { enchantments = {}, overlay = "^[colorize:purple:50", --overlay = "^[invert:rgb^[multiply:#4df44d:50^[invert:rgb", - enchanting_lists = {"enchanting", "enchanting_item", "enchanting_lapis"}, + enchanting_lists = {"enchanting", "enchanting_item", "enchanting_redstone"}, bookshelf_positions = { {x = -2, y = 0, z = -2}, {x = -2, y = 1, z = -2}, {x = -1, y = 0, z = -2}, {x = -1, y = 1, z = -2}, @@ -83,7 +83,7 @@ minetest.register_chatcommand("enchant", { return false, S("Player '@1' cannot be found.", target_name) end local itemstack = target:get_wielded_item() - local can_enchant, errorstring, extra_info = mcl_enchanting.can_enchant(itemstack, enchantment, level) + local can_enchant, errorstring, extra_info = redstone_enchanting.can_enchant(itemstack, enchantment, level) if not can_enchant then if errorstring == "enchantment invalid" then return false, S("There is no such enchantment '@1'.", enchantment) @@ -98,10 +98,10 @@ minetest.register_chatcommand("enchant", { elseif errorstring == "level too small" then return false, S("The number you have entered (@1) is too small, it must be at least @2.", level_str, extra_info) elseif errorstring == "incompatible" then - return false, S("@1 can't be combined with @2.", mcl_enchanting.get_enchantment_description(enchantment, level), extra_info) + return false, S("@1 can't be combined with @2.", redstone_enchanting.get_enchantment_description(enchantment, level), extra_info) end else - target:set_wielded_item(mcl_enchanting.enchant(itemstack, enchantment, level)) + target:set_wielded_item(redstone_enchanting.enchant(itemstack, enchantment, level)) return true, S("Enchanting succeded.") end end @@ -125,31 +125,31 @@ minetest.register_chatcommand("forceenchant", { return false, S("Player '@1' cannot be found.", target_name) end local itemstack = target:get_wielded_item() - local _, errorstring = mcl_enchanting.can_enchant(itemstack, enchantment, level) + local _, errorstring = redstone_enchanting.can_enchant(itemstack, enchantment, level) if errorstring == "enchantment invalid" then return false, S("There is no such enchantment '@1'.", enchantment) elseif errorstring == "item missing" then return false, S("The target doesn't hold an item.") - elseif errorstring == "item not supported" and not mcl_enchanting.is_enchantable(itemstack:get_name()) then + elseif errorstring == "item not supported" and not redstone_enchanting.is_enchantable(itemstack:get_name()) then return false, S("The target item is not enchantable.") elseif errorstring == "level invalid" then return false, S("'@1' is not a valid number.", level_str) else - target:set_wielded_item(mcl_enchanting.enchant(itemstack, enchantment, level)) + target:set_wielded_item(redstone_enchanting.enchant(itemstack, enchantment, level)) return true, S("Enchanting succeded.") end end }) -minetest.register_craftitem("mcl_enchanting:book_enchanted", { +minetest.register_craftitem("redstone_enchanting:book_enchanted", { description = S("Enchanted Book"), - inventory_image = "mcl_enchanting_book_enchanted.png" .. mcl_enchanting.overlay, + inventory_image = "redstone_enchanting_book_enchanted.png" .. redstone_enchanting.overlay, groups = {enchanted = 1, not_in_creative_inventory = 1, enchantability = 1}, - _mcl_enchanting_enchanted_tool = "mcl_enchanting:book_enchanted", + _redstone_enchanting_enchanted_tool = "redstone_enchanting:book_enchanted", stack_max = 1, }) -minetest.register_alias("mcl_books:book_enchanted", "mcl_enchanting:book_enchanted") +minetest.register_alias("mcl_books:book_enchanted", "redstone_enchanting:book_enchanted") local function spawn_book_entity(pos, respawn) if respawn then @@ -158,14 +158,14 @@ local function spawn_book_entity(pos, respawn) for o=1, #objs do local obj = objs[o] local lua = obj:get_luaentity() - if lua and lua.name == "mcl_enchanting:book" then + if lua and lua.name == "redstone_enchanting:book" then if lua._table_pos and vector.equals(pos, lua._table_pos) then return end end end end - local obj = minetest.add_entity(vector.add(pos, mcl_enchanting.book_offset), "mcl_enchanting:book") + local obj = minetest.add_entity(vector.add(pos, redstone_enchanting.book_offset), "redstone_enchanting:book") if obj then local lua = obj:get_luaentity() if lua then @@ -174,45 +174,45 @@ local function spawn_book_entity(pos, respawn) end end -minetest.register_entity("mcl_enchanting:book", { +minetest.register_entity("redstone_enchanting:book", { initial_properties = { visual = "mesh", - mesh = "mcl_enchanting_book.b3d", + mesh = "redstone_enchanting_book.b3d", visual_size = {x = 12.5, y = 12.5}, collisionbox = {0, 0, 0}, pointable = false, physical = false, - textures = {"mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png", "mcl_enchanting_book_entity.png"}, + textures = {"redstone_enchanting_book_entity.png", "redstone_enchanting_book_entity.png", "redstone_enchanting_book_entity.png", "redstone_enchanting_book_entity.png", "redstone_enchanting_book_entity.png"}, static_save = false, }, _player_near = false, _table_pos = nil, on_activate = function(self, staticdata) self.object:set_armor_groups({immortal = 1}) - mcl_enchanting.set_book_animation(self, "close") + redstone_enchanting.set_book_animation(self, "close") end, on_step = function(self, dtime) local old_player_near = self._player_near local player_near = false local player - for _, obj in pairs(minetest.get_objects_inside_radius(vector.subtract(self.object:get_pos(), mcl_enchanting.book_offset), 2.5)) do + for _, obj in pairs(minetest.get_objects_inside_radius(vector.subtract(self.object:get_pos(), redstone_enchanting.book_offset), 2.5)) do if obj:is_player() then player_near = true player = obj end end if player_near and not old_player_near then - mcl_enchanting.set_book_animation(self, "opening") - mcl_enchanting.schedule_book_animation(self, "open") + redstone_enchanting.set_book_animation(self, "opening") + redstone_enchanting.schedule_book_animation(self, "open") elseif old_player_near and not player_near then - mcl_enchanting.set_book_animation(self, "closing") - mcl_enchanting.schedule_book_animation(self, "close") + redstone_enchanting.set_book_animation(self, "closing") + redstone_enchanting.schedule_book_animation(self, "close") end if player then - mcl_enchanting.look_at(self, player:get_pos()) + redstone_enchanting.look_at(self, player:get_pos()) end self._player_near = player_near - mcl_enchanting.check_animation_schedule(self, dtime) + redstone_enchanting.check_animation_schedule(self, dtime) end, }) @@ -221,20 +221,20 @@ if minetest.get_modpath("screwdriver") then rotate = screwdriver.rotate_simple end -minetest.register_node("mcl_enchanting:table", { +minetest.register_node("redstone_enchanting:table", { description = S("Enchanting Table"), - _tt_help = S("Spend experience, and lapis to enchant various items."), - _doc_items_longdesc = S("Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and lapis lazuli."), + _tt_help = S("Spend experience, and redstone to enchant various items."), + _doc_items_longdesc = S("Enchanting Tables will let you enchant armors, tools, weapons, and books with various abilities. But, at the cost of some experience, and redstone ."), _doc_items_usagehelp = S("Rightclick the Enchanting Table to open the enchanting menu.").."\n".. S("Place a tool, armor, weapon or book into the top left slot, and then place 1-3 Lapis Lazuli in the slot to the right.").."\n".."\n".. S("After placing your items in the slots, the enchanting options will be shown. Hover over the options to read what is available to you.").."\n".. S("These options are randomized, and dependent on experience level; but the enchantment strength can be increased.").."\n".."\n".. S("To increase the enchantment strength, place bookshelves around the enchanting table. However, you will need to keep 1 air node between the table, & the bookshelves to empower the enchanting table.").."\n".."\n".. - S("After finally selecting your enchantment; left-click on the selection, and you will see both the lapis lazuli and your experience levels consumed. And, an enchanted item left in its place."), + S("After finally selecting your enchantment; left-click on the selection, and you will see both the redstone and your experience levels consumed. And, an enchanted item left in its place."), _doc_items_hidden = false, drawtype = "nodebox", - tiles = {"mcl_enchanting_table_top.png", "mcl_enchanting_table_bottom.png", "mcl_enchanting_table_side.png", "mcl_enchanting_table_side.png", "mcl_enchanting_table_side.png", "mcl_enchanting_table_side.png"}, + tiles = {"redstone_enchanting_table_top.png", "redstone_enchanting_table_bottom.png", "redstone_enchanting_table_side.png", "redstone_enchanting_table_side.png", "redstone_enchanting_table_side.png", "redstone_enchanting_table_side.png"}, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false, node_box = { type = "fixed", @@ -246,15 +246,15 @@ minetest.register_node("mcl_enchanting:table", { on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) local player_meta = clicker:get_meta() --local table_meta = minetest.get_meta(pos) - --local num_bookshelves = table_meta:get_int("mcl_enchanting:num_bookshelves") + --local num_bookshelves = table_meta:get_int("redstone_enchanting:num_bookshelves") local table_name = minetest.get_meta(pos):get_string("name") if table_name == "" then table_name = S("Enchant") end - local bookshelves = mcl_enchanting.get_bookshelves(pos) - player_meta:set_int("mcl_enchanting:num_bookshelves", math.min(15, #bookshelves)) - player_meta:set_string("mcl_enchanting:table_name", table_name) - mcl_enchanting.show_enchanting_formspec(clicker) + local bookshelves = redstone_enchanting.get_bookshelves(pos) + player_meta:set_int("redstone_enchanting:num_bookshelves", math.min(15, #bookshelves)) + player_meta:set_string("redstone_enchanting:table_name", table_name) + redstone_enchanting.show_enchanting_formspec(clicker) -- Respawn book entity just in case it got lost spawn_book_entity(pos, true) end, @@ -266,7 +266,7 @@ minetest.register_node("mcl_enchanting:table", { if minetest.is_creative_enabled(dname) then return end - local itemstack = ItemStack("mcl_enchanting:table") + local itemstack = ItemStack("redstone_enchanting:table") local meta = minetest.get_meta(pos) local itemmeta = itemstack:get_meta() itemmeta:set_string("name", meta:get_string("name")) @@ -284,7 +284,7 @@ minetest.register_node("mcl_enchanting:table", { for o=1, #objs do local obj = objs[o] local lua = obj:get_luaentity() - if lua and lua.name == "mcl_enchanting:book" then + if lua and lua.name == "redstone_enchanting:book" then if lua._table_pos and vector.equals(pos, lua._table_pos) then obj:remove() end @@ -297,7 +297,7 @@ minetest.register_node("mcl_enchanting:table", { }) minetest.register_craft({ - output = "mcl_enchanting:table", + output = "redstone_enchanting:table", recipe = { {"", "mcl_books:book", ""}, {"mcl_core:diamond", "mcl_core:obsidian", "mcl_core:diamond"}, @@ -309,7 +309,7 @@ minetest.register_abm({ label = "Enchanting table bookshelf particles", interval = 1, chance = 1, - nodenames = "mcl_enchanting:table", + nodenames = "redstone_enchanting:table", action = function(pos) local playernames = {} for _, obj in pairs(minetest.get_objects_inside_radius(pos, 15)) do @@ -320,7 +320,7 @@ minetest.register_abm({ if #playernames < 1 then return end - local absolute, relative = mcl_enchanting.get_bookshelves(pos) + local absolute, relative = redstone_enchanting.get_bookshelves(pos) for i, ap in ipairs(absolute) do if math.random(5) == 1 then local rp = relative[i] @@ -330,7 +330,7 @@ minetest.register_abm({ local a = {x = 2*(-v.x*t - d.x)/t/t, y = 2*(-v.y*t - d.y)/t/t, z = 2*(-v.z*t - d.z)/t/t} --acceleration local s = math.random()+0.9 --size t = t - 0.1 --slightly decrease time to avoid texture overlappings - local tx = "mcl_enchanting_glyph_" .. math.random(18) .. ".png" + local tx = "redstone_enchanting_glyph_" .. math.random(18) .. ".png" for _, name in pairs(playernames) do minetest.add_particle({ pos = ap, @@ -350,8 +350,8 @@ minetest.register_abm({ minetest.register_lbm({ label = "(Re-)spawn book entity above enchanting table", - name = "mcl_enchanting:spawn_book_entity", - nodenames = {"mcl_enchanting:table"}, + name = "redstone_enchanting:spawn_book_entity", + nodenames = {"redstone_enchanting:table"}, run_at_every_load = true, action = function(pos) spawn_book_entity(pos, true) @@ -359,9 +359,9 @@ minetest.register_lbm({ }) -minetest.register_on_mods_loaded(mcl_enchanting.initialize) -minetest.register_on_joinplayer(mcl_enchanting.initialize_player) -minetest.register_on_player_receive_fields(mcl_enchanting.handle_formspec_fields) -minetest.register_allow_player_inventory_action(mcl_enchanting.allow_inventory_action) -minetest.register_on_player_inventory_action(mcl_enchanting.on_inventory_action) -tt.register_priority_snippet(mcl_enchanting.enchantments_snippet) +minetest.register_on_mods_loaded(redstone_enchanting.initialize) +minetest.register_on_joinplayer(redstone_enchanting.initialize_player) +minetest.register_on_player_receive_fields(redstone_enchanting.handle_formspec_fields) +minetest.register_allow_player_inventory_action(redstone_enchanting.allow_inventory_action) +minetest.register_on_player_inventory_action(redstone_enchanting.on_inventory_action) +tt.register_priority_snippet(redstone_enchanting.enchantments_snippet) diff --git a/locale/mcl_enchanting.de.tr b/locale/redstone_enchanting.de.tr similarity index 100% rename from locale/mcl_enchanting.de.tr rename to locale/redstone_enchanting.de.tr diff --git a/locale/mcl_enchanting.es.tr b/locale/redstone_enchanting.es.tr similarity index 100% rename from locale/mcl_enchanting.es.tr rename to locale/redstone_enchanting.es.tr diff --git a/locale/mcl_enchanting.fr.tr b/locale/redstone_enchanting.fr.tr similarity index 100% rename from locale/mcl_enchanting.fr.tr rename to locale/redstone_enchanting.fr.tr diff --git a/locale/mcl_enchanting.ja.tr b/locale/redstone_enchanting.ja.tr similarity index 100% rename from locale/mcl_enchanting.ja.tr rename to locale/redstone_enchanting.ja.tr diff --git a/locale/mcl_enchanting.pl.tr b/locale/redstone_enchanting.pl.tr similarity index 100% rename from locale/mcl_enchanting.pl.tr rename to locale/redstone_enchanting.pl.tr diff --git a/locale/mcl_enchanting.pt_BR.tr b/locale/redstone_enchanting.pt_BR.tr similarity index 100% rename from locale/mcl_enchanting.pt_BR.tr rename to locale/redstone_enchanting.pt_BR.tr diff --git a/locale/mcl_enchanting.ru.tr b/locale/redstone_enchanting.ru.tr similarity index 100% rename from locale/mcl_enchanting.ru.tr rename to locale/redstone_enchanting.ru.tr diff --git a/mod.conf b/mod.conf index d163fcd..8767e8f 100644 --- a/mod.conf +++ b/mod.conf @@ -1,5 +1,5 @@ -name = mcl_enchanting -description = Enchanting for MineClone2 -depends = tt, walkover, mcl_sounds, mcl_colors, mcl_experience, mcl_util +name = redstone_enchanting +description = Enchanting, using Redstone for MineClone2 +depends = tt, walkover, mcl_sounds, mcl_colors, mcl_experience, mcl_util, mesecons optional_depends = screwdriver -author = Fleckenstein +author = haui111 diff --git a/models/mcl_enchanting_book.b3d b/models/redstone_enchanting_book.b3d similarity index 100% rename from models/mcl_enchanting_book.b3d rename to models/redstone_enchanting_book.b3d diff --git a/sounds/mcl_enchanting_enchant.0.ogg b/sounds/redstone_enchanting_enchant.0.ogg similarity index 100% rename from sounds/mcl_enchanting_enchant.0.ogg rename to sounds/redstone_enchanting_enchant.0.ogg diff --git a/sounds/mcl_enchanting_enchant.1.ogg b/sounds/redstone_enchanting_enchant.1.ogg similarity index 100% rename from sounds/mcl_enchanting_enchant.1.ogg rename to sounds/redstone_enchanting_enchant.1.ogg diff --git a/sounds/mcl_enchanting_enchant.2.ogg b/sounds/redstone_enchanting_enchant.2.ogg similarity index 100% rename from sounds/mcl_enchanting_enchant.2.ogg rename to sounds/redstone_enchanting_enchant.2.ogg diff --git a/textures/enchanting_table_book.png b/textures/enchanting_table_book.png new file mode 100644 index 0000000000000000000000000000000000000000..7a4c21648a2b29a5bd5b8e13d01e006aa920d1f5 GIT binary patch literal 366 zcmV-!0g?WRP)PPd4i|9{UVWMz2-p8e7-HmU+F!7eUa!08UmU9`kJ2u1knSs@(LO2oRWO@D=PL zgjtROl+@B`Kr|ulm!s~0v4K1YB$s0#uS^@jgvcUK6DA2iYJdm)&cLsCAbA4`j8NK_ z_#Zx_Y5$P{tHmS`Uvh5eWgsfmS}gVBLB|w>Ad~sXIqjzF#RyMX=OeBGQybz;`7nn` z;pjZQ#Wi4Ri#T2W8&2{gq`Lt>VyU1JGPNPjlxGJ595$qc4w%|6I}qmZ)M(`OLo9le6Bd{ngrxlBKb(@u zb4mEe{8zes$6O>QDeL`{Z<%PSlsu>HKu*k}#k|MdTXhdg#q_WqkXWwx!jE^O@IU+T zTQWHefo%(Z3(r?PkrflNQ=x6aZiZz7Hw7k4pJ3WlP*U=xUPM3V{yy2&iVA0^i+45} zdOSWe)A(SPqsa{hL&mTT$Fi@lTPV?#qwMi{YGzPE<&3lmOBF1EcFy4n;wf@nzKE&I zZGxOY+i|vCiU!M@3_OfElCO5~Y>;HS#BynlhEh|svYB&29K%P)S)5re<}B-jS8_5q XH41-pyuK+J=t~AqS3j3^P6E|3WDlRx=!4JSJ#QMQcMSb!}&aQ!(aC9;KR0I12F&q00VSVPE!B?0Qz>s-T(jrU`a$lR7l5^(m`&+Fc3pgqx=Ll zf@KJ{?tj)Sk}jH+$^$%n4CWZ!wv*I+%93sOF-MXdJ8J?6*u4T0(3*igz!G9&yJr6Y zj*Z7IASuRF8HB*`nA9GCB!Y3pyamS(&c6#{BqUtMyEi~cWkV8#BwTp@E%^D`SHZAN zW=E1F7tdgB0qwWIZWV+Otpl3{??wuaSuNwf(P5BLMdEm~w%MpoqsaKDmNrA5}vo0*vf zHFF@b1XMZ`8%P^4kQl1D2;eSksGPV1@?tov8GwYPyfz?kF>vSC_#ZuxRM-Hqmp~Eh z8Q6ISKCyxO4hYXsd9DGeaxBoJgoF(CG1~GNYn#Hil{p4pJ{<4dDR6d{fR(o+p!eSU s72vNKw05xvp9r+eKzk1T7x1>{3qxuaMGN=)SO5S307*qoM6N<$f^2r%4gdfE literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_book_open.png b/textures/redstone_enchanting_book_open.png new file mode 100644 index 0000000000000000000000000000000000000000..6b4d5a379555b50b3ee0adbf528d9522840dc284 GIT binary patch literal 197 zcmeAS@N?(olHy`uVBq!ia0vp^d_c^_!VDzKz88G~Qn~>?A+A8$NmDY+SSHR!EyLfn zG&g;6U&pk9*!63cZfeWiGo|Fh>fZYY7QMc-`SpXtYJ78wfEt25T^vI=WRo+D&BRR1 z&LwcnsV#qg@AfL5w&Hhht>PA+N!YRMPsm&8RJO%W_bsn+_+$BQdEXC)pV{Z;*)TuS vx8Jn+TJ#LXjBhjNrZ@g-c&5R0mXSg6pTbn_h4T}D#xr=j`njxgN@xNAVEaxi literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_button.png b/textures/redstone_enchanting_button.png new file mode 100644 index 0000000000000000000000000000000000000000..c6765f7ce6b396eb16c46f81062a6fed75ea6f74 GIT binary patch literal 70 zcmeAS@N?(olHy`uVBq!ia0vp^j3CUx1|;Q0k92}1TpU9O_Z5TGozpEiSw6`isQ@l9e0{-`D##S1U&H`v*yDz?NE4*xTr)lTCK*<7f`9o{Fgv=lzMPzCadZNswPK zgTu2MX+VyMr;B3<$MxhNhYuVmXgJu=*xtyNDq)78&qol`;+0Qzbi Ah5!Hn literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_10.png b/textures/redstone_enchanting_glyph_10.png new file mode 100644 index 0000000000000000000000000000000000000000..9feb2a5a2894d8b6661eece19188fd473838ef99 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK wgTu2MX+VyEr;B3<$Mxh52@e>Y+1U6Pm{k}eZ6!~J0p%DxUHx3vIVCg!040tWEC2ui literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_11.png b/textures/redstone_enchanting_glyph_11.png new file mode 100644 index 0000000000000000000000000000000000000000..adda78decfd92ee9d9a3939bae571a0866cef6a9 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK xgTu2MX+Vykr;B3<$Mxg{h9)TmzQhCu29_L#i{~zW`T>+=@O1TaS?83{1OQb78K3|F literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_12.png b/textures/redstone_enchanting_glyph_12.png new file mode 100644 index 0000000000000000000000000000000000000000..5d4c1ee6f2ce592c5d06130c247410408959f74e GIT binary patch literal 103 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK vgTu2MX+RFYr;B3<$Mxid1OWyo15O4;9|p%CA6|+Ar5HS2{an^LB{Ts55Ca#e literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_13.png b/textures/redstone_enchanting_glyph_13.png new file mode 100644 index 0000000000000000000000000000000000000000..b57fbb71e4053dd24e71d13cda45c96ed9202cdb GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK ygTu2MX+VyUr;B3<$MxidgbxV`2|t*R@G!79FuJ~wx;zOe%i!ti=d#Wzp$Pz%uo}An literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_14.png b/textures/redstone_enchanting_glyph_14.png new file mode 100644 index 0000000000000000000000000000000000000000..68623878a089023b3da3a4fa6f2e27d51190cccd GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK xgTu2MX+VyUr;B3<$MxiZgan2pW;RAPMh4~@hKX8Q${^DiJYD@<);T3K0RS^>7Dxa9 literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_15.png b/textures/redstone_enchanting_glyph_15.png new file mode 100644 index 0000000000000000000000000000000000000000..cef995fcf2c5ccbb79c3debb3ad7e2bf7e66d7d8 GIT binary patch literal 87 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XLbJY5_^IHHpi7@E4p=Nl_rE?^L1 jc=X?3RwEn3Y*~hN*JQ&V8?E#Ps$}qV^>bP0l+XkKI!YFa literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_16.png b/textures/redstone_enchanting_glyph_16.png new file mode 100644 index 0000000000000000000000000000000000000000..27e18072878bd135e73f124ce3b843123ab71e44 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wF|NsBLc=37t5&l0w5yp}r zzhDN3XE)M-96?VP#}E$LlpPnt(^HAD9PaI>gTe~DWM4fF_av$ literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_17.png b/textures/redstone_enchanting_glyph_17.png new file mode 100644 index 0000000000000000000000000000000000000000..1dc41a0210c8a75b08fe78aed1528ab18266062f GIT binary patch literal 81 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XJFJY5_^IHHq({Qqyy%n`rm#~*v6 dvj!7{7@8IqNiGT4u?eV#!PC{xWt~$(695hR7dQX_ literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_18.png b/textures/redstone_enchanting_glyph_18.png new file mode 100644 index 0000000000000000000000000000000000000000..631973dbb047d7761e949441a37a1b0ad48c5e3e GIT binary patch literal 91 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_`5A|IT2?*XKgJY5_^IHHq({Qqyy%n`rm#~=GC nY@a1Jc>Fo8+8E3}(~Xg#bU~i1w{wjIP&I?6tDnm{r-UW|9TXa9 literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_2.png b/textures/redstone_enchanting_glyph_2.png new file mode 100644 index 0000000000000000000000000000000000000000..674fdeaa5a63b40224e156a6a1ce8d6df52ae7d6 GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK ygTu2MX+VyUr;B3<$Ms}^goK0@i3yB{q!?KCFbdu%vwQ)RW$<+Mb6Mw<&;$T?dKset literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_3.png b/textures/redstone_enchanting_glyph_3.png new file mode 100644 index 0000000000000000000000000000000000000000..6f1660580db1db2282d3a780f33c5d0e33fd0d4c GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK ygTu2MX+VyUr;B3<$Mxh32@eu3FgUTY@iMTKFq~{Ve(D!cmci52&t;ucLK6UzO&Zt$ literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_4.png b/textures/redstone_enchanting_glyph_4.png new file mode 100644 index 0000000000000000000000000000000000000000..e93f2383071de536b4692bf350c7b4ff49118968 GIT binary patch literal 105 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK wgTu2MX+Vykr;B3<$Mxh73{H#+AqfQx4D39Nf=Ojnc|b`9Pgg&ebxsLQ05>%kM*si- literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_5.png b/textures/redstone_enchanting_glyph_5.png new file mode 100644 index 0000000000000000000000000000000000000000..1473ea41d1809a857b372bd402053a51f0c1e740 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK vgTu2MX+VyEr;B3o^D-_5CL@MrTIX1bfN~6;u6{1-oD!M<6pa?+ literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_6.png b/textures/redstone_enchanting_glyph_6.png new file mode 100644 index 0000000000000000000000000000000000000000..89de2cf8f3ee9539cc915861fa4fb58866abd4bb GIT binary patch literal 106 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK ygTu2MX+VyUr;B3<$Mxidga8I7W;RAPMh0dZhKb^za(4q|89ZJ6T-G@yGywoVRToeI literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_7.png b/textures/redstone_enchanting_glyph_7.png new file mode 100644 index 0000000000000000000000000000000000000000..bf632f7f69145a81568173f6e8cd77b24a9f7c22 GIT binary patch literal 104 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK wgTu2MX+VyEr;B3<$Mxh12?2=#42M}5SY|N%WvFgv=lzMPzCadZNswPK xgTu2MX+Vykr;B3<$Ms}^1O`WLHa0eH24)_Hg*pdM+yF{4c)I$ztaD0e0stU#7XbhO literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_glyph_9.png b/textures/redstone_enchanting_glyph_9.png new file mode 100644 index 0000000000000000000000000000000000000000..4b3e366d97b6dfae280e7fd05f2a269855300305 GIT binary patch literal 102 zcmeAS@N?(olHy`uVBq!ia0vp^Y#_|Y3?y$c)pCP40X`wFK>Fgv=lzMPzCadZNswPK ugTu2MX+RF2r;B3<$Mxh72?Y&@xEMI+Fdp>!^l3g&hQZU-&t;ucLK6TsjT$Hb literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_lapis_background.png b/textures/redstone_enchanting_lapis_background.png new file mode 100644 index 0000000000000000000000000000000000000000..646813fa0dd4f171dafd164b9d60f328f4d3341d GIT binary patch literal 201 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`6FglULo9le6C|!UoZ9x^-Y6~9 z^Pm5uw3!b?|1X{;*SOL1PNKnl4QGd0j#3U%-plqkWs4QPP|M-ilqS);MpDJ?0>gy0 z2E8Y?9p+KVU^sJMp?QL-unEJnnurIDH&n9S%Ir36cC6XM$YI2=gz;utgoJ=-tAghY zx0KnPef1NVX7n1UHy=rmSf7^S>~YQH0RzMFEqA1gV`}YyZe#Ft^>bP0l+XkKjJZfI literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_number_1.png b/textures/redstone_enchanting_number_1.png new file mode 100644 index 0000000000000000000000000000000000000000..8e5fc648538b3b4ab8cd1069647b4f09f2ca1139 GIT binary patch literal 144 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2Rw*1nEbk$&!Rk>S}1 zk-2$U^s!H>$bY~Yv?+JF@o%ksksE)BD$S;_|;n|HeAVqH(tCmw~H7agWNWGHlG{2c1e{Ryaw!PC{xWt~$(695@%C_(@L literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_number_1_off.png b/textures/redstone_enchanting_number_1_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c22f319c376d9fbf874a025931cfee321314fe10 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5XE0A7ZWqS)qF_r}R1v5B2 myO9RuaC^EqhH%IxD+mHP1`Lc`&pkwdECx?kKbLh*2~7a&JQ0Ne literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_number_2.png b/textures/redstone_enchanting_number_2.png new file mode 100644 index 0000000000000000000000000000000000000000..0a89a9dc65ca109a8daef5820b732b1b4acb9494 GIT binary patch literal 158 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2Rw*1nEbk$&!Rk>S}1 zk-2$U^s!H>$bY~Yv?+JF@o%ksksE)BD$S;_|;n|HeAVw4mIl z!N5XNDj~^$O})oZ*r&*(z^9?Bxa7c+56lc@&TJeR*)wJX^)Pt4`njxgN@xNAOzkWJ literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_number_2_off.png b/textures/redstone_enchanting_number_2_off.png new file mode 100644 index 0000000000000000000000000000000000000000..c22f319c376d9fbf874a025931cfee321314fe10 GIT binary patch literal 96 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!D3?x-;bCrM;bAV5XE0A7ZWqS)qF_r}R1v5B2 myO9RuaC^EqhH%IxD+mHP1`Lc`&pkwdECx?kKbLh*2~7a&JQ0Ne literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_number_3.png b/textures/redstone_enchanting_number_3.png new file mode 100644 index 0000000000000000000000000000000000000000..eee8032a18a115f42d98269aebd5174fb750f697 GIT binary patch literal 162 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv3GfMV1=2Rw*1nEbk$&!Rk>S}1 zk-2$U^s!H>$bY~Yv?+JF@o%ksksE)BD$S;_|;n|HeAVw4gkv zA>&~}M#HP8ErwPKLb5z}5(Ljl2AIwPE*XLbZZM}J*9jUqDTwn1a{s_S1)4e~7dVT8s7PLwlm*vgf^|uBB zKWzNDvrf(Jn>#Mcn?S3i0Z6T5T^5`QDI+yEzQoaB%zQZ|jCy?liq#Aek}pQRKB;xM zY~o9l$HF0$3<9#MUw!6sx1dY8_#{-}<(^RL|(>J*jmEK&`H{ zh1PUab=b5ddp(mzB8(0KT4$u&ah>B_~Lsc>8k?fU7vhk-|4=KS2rwK-y1O zo!y|Dby$nL0Bnh00E9urOSeqp@-t~aAykV4j^LP3Eg30%1C9y2Ib-Wjb8t+g>v=AP zZ%P1xR|Q~PP6E)rX#x=G8Z+uOQYZqiiWG{|_yB;_*^L2%flHP9-gTix8)-iQD2y0* zRoXXAq)>w`-1n{lXthrZomg?CYlVAZ3sU%IVd@s7UNz`cnV^ N002ovPDHLkV1k)X%4+}s literal 0 HcmV?d00001 diff --git a/textures/redstone_enchanting_table_top.png b/textures/redstone_enchanting_table_top.png new file mode 100644 index 0000000000000000000000000000000000000000..ef5eea5ba337a9a578f30f571aa633f2723d515c GIT binary patch literal 199 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!61|;P_|4#%`eV#6kAr_~TfAF)k*VnTo&)qEj zKi&Ante`19*N)=ylf7RED)d1d2D_LocVFie>2&~(FO z`U$BArOEG-+Q8oZ5p9-A`E xe|sawv6flm8`I53k3f^4ITP6I^aEziW%OOB&>X6~`w!4%44$rjF6*2UngH#%NY4NO literal 0 HcmV?d00001