change every mention of lapis and mcl to redstone and add textures to try and solve error messages

This commit is contained in:
haui 2024-06-13 16:37:19 +02:00
parent 5b0c1994ba
commit ecd87428e4
53 changed files with 260 additions and 260 deletions

View file

@ -11,7 +11,7 @@ local function increase_damage(damage_group, factor)
end end
-- implemented via on_enchant and additions in mobs_mc; Slowness IV part unimplemented -- 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"), name = S("Bane of Arthropods"),
max_level = 5, max_level = 5,
primary = {sword = true}, primary = {sword = true},
@ -30,7 +30,7 @@ mcl_enchanting.enchantments.bane_of_arthropods = {
} }
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
--[[mcl_enchanting.enchantments.channeling = { --[[redstone_enchanting.enchantments.channeling = {
name = S("Channeling"), name = S("Channeling"),
max_level = 1, max_level = 1,
primary = {trident = true}, primary = {trident = true},
@ -49,7 +49,7 @@ mcl_enchanting.enchantments.bane_of_arthropods = {
}]]-- }]]--
-- implemented in mcl_death_drop -- implemented in mcl_death_drop
mcl_enchanting.enchantments.curse_of_vanishing = { redstone_enchanting.enchantments.curse_of_vanishing = {
name = S("Curse of Vanishing"), name = S("Curse of Vanishing"),
max_level = 1, max_level = 1,
primary = {}, primary = {},
@ -68,7 +68,7 @@ mcl_enchanting.enchantments.curse_of_vanishing = {
} }
-- implemented in mcl_playerplus -- implemented in mcl_playerplus
mcl_enchanting.enchantments.depth_strider = { redstone_enchanting.enchantments.depth_strider = {
name = S("Depth Strider"), name = S("Depth Strider"),
max_level = 3, max_level = 3,
primary = {}, primary = {},
@ -87,7 +87,7 @@ mcl_enchanting.enchantments.depth_strider = {
} }
-- implemented via on_enchant -- implemented via on_enchant
mcl_enchanting.enchantments.efficiency = { redstone_enchanting.enchantments.efficiency = {
name = S("Efficiency"), name = S("Efficiency"),
max_level = 5, max_level = 5,
primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, 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 -- implemented in mcl_mobs and via register_on_punchplayer callback
mcl_enchanting.enchantments.fire_aspect = { redstone_enchanting.enchantments.fire_aspect = {
name = S("Fire Aspect"), name = S("Fire Aspect"),
max_level = 2, max_level = 2,
primary = {sword = true}, 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 if hitter and hitter:is_player() then
local wielditem = hitter:get_wielded_item() local wielditem = hitter:get_wielded_item()
if wielditem then 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 if fire_aspect_level > 0 then
local player_pos = player:get_pos() local player_pos = player:get_pos()
local hitter_pos = hitter: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
end) end)
mcl_enchanting.enchantments.flame = { redstone_enchanting.enchantments.flame = {
name = S("Flame"), name = S("Flame"),
max_level = 1, max_level = 1,
primary = {bow = true}, primary = {bow = true},
@ -162,7 +162,7 @@ mcl_enchanting.enchantments.flame = {
} }
-- implemented in mcl_item_entity -- implemented in mcl_item_entity
mcl_enchanting.enchantments.fortune = { redstone_enchanting.enchantments.fortune = {
name = S("Fortune"), name = S("Fortune"),
max_level = 3, max_level = 3,
primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, primary = {pickaxe = true, shovel = true, axe = true, hoe = true},
@ -181,7 +181,7 @@ mcl_enchanting.enchantments.fortune = {
} }
-- implemented via walkover.register_global -- implemented via walkover.register_global
mcl_enchanting.enchantments.frost_walker = { redstone_enchanting.enchantments.frost_walker = {
name = S("Frost Walker"), name = S("Frost Walker"),
max_level = 2, max_level = 2,
primary = {}, primary = {},
@ -201,7 +201,7 @@ mcl_enchanting.enchantments.frost_walker = {
walkover.register_global(function(pos, _, player) walkover.register_global(function(pos, _, player)
local boots = player:get_inventory():get_stack("armor", 5) 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 if frost_walker <= 0 then
return return
end end
@ -217,7 +217,7 @@ walkover.register_global(function(pos, _, player)
end) end)
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
--[[mcl_enchanting.enchantments.impaling = { --[[redstone_enchanting.enchantments.impaling = {
name = S("Impaling"), name = S("Impaling"),
max_level = 5, max_level = 5,
primary = {trident = true}, primary = {trident = true},
@ -236,7 +236,7 @@ end)
}]]-- }]]--
-- implemented in mcl_bows -- implemented in mcl_bows
mcl_enchanting.enchantments.infinity = { redstone_enchanting.enchantments.infinity = {
name = S("Infinity"), name = S("Infinity"),
max_level = 1, max_level = 1,
primary = {bow = true}, primary = {bow = true},
@ -255,7 +255,7 @@ mcl_enchanting.enchantments.infinity = {
} }
-- implemented via minetest.calculate_knockback -- implemented via minetest.calculate_knockback
mcl_enchanting.enchantments.knockback = { redstone_enchanting.enchantments.knockback = {
name = S("Knockback"), name = S("Knockback"),
max_level = 2, max_level = 2,
primary = {sword = true}, primary = {sword = true},
@ -282,8 +282,8 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool
end end
if hitter and hitter:is_player() and distance <= 3 then if hitter and hitter:is_player() and distance <= 3 then
local wielditem = hitter:get_wielded_item() local wielditem = hitter:get_wielded_item()
--knockback = knockback + 3 * mcl_enchanting.get_enchantment(wielditem, "knockback") --knockback = knockback + 3 * redstone_enchanting.get_enchantment(wielditem, "knockback")
local enchant = mcl_enchanting.get_enchantment(wielditem, "knockback") local enchant = redstone_enchanting.get_enchantment(wielditem, "knockback")
knockback = knockback + 3.22 * enchant knockback = knockback + 3.22 * enchant
-- add vertical lift to knockback -- add vertical lift to knockback
local v = player:get_velocity() local v = player:get_velocity()
@ -352,7 +352,7 @@ function minetest.calculate_knockback(player, hitter, time_from_last_punch, tool
end end
-- implemented in mcl_mobs and mobs_mc -- implemented in mcl_mobs and mobs_mc
mcl_enchanting.enchantments.looting = { redstone_enchanting.enchantments.looting = {
name = S("Looting"), name = S("Looting"),
max_level = 3, max_level = 3,
primary = {sword = true}, primary = {sword = true},
@ -371,7 +371,7 @@ mcl_enchanting.enchantments.looting = {
} }
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
--[[mcl_enchanting.enchantments.loyalty = { --[[redstone_enchanting.enchantments.loyalty = {
name = S("Loyalty"), name = S("Loyalty"),
max_level = 3, max_level = 3,
primary = {trident = true}, primary = {trident = true},
@ -390,7 +390,7 @@ mcl_enchanting.enchantments.looting = {
}]]-- }]]--
-- implemented in mcl_fishing -- implemented in mcl_fishing
mcl_enchanting.enchantments.luck_of_the_sea = { redstone_enchanting.enchantments.luck_of_the_sea = {
name = S("Luck of the Sea"), name = S("Luck of the Sea"),
max_level = 3, max_level = 3,
primary = {fishing_rod = true}, primary = {fishing_rod = true},
@ -409,7 +409,7 @@ mcl_enchanting.enchantments.luck_of_the_sea = {
} }
-- implemented in mcl_fishing -- implemented in mcl_fishing
mcl_enchanting.enchantments.lure = { redstone_enchanting.enchantments.lure = {
name = S("Lure"), name = S("Lure"),
max_level = 3, max_level = 3,
primary = {fishing_rod = true}, primary = {fishing_rod = true},
@ -428,7 +428,7 @@ mcl_enchanting.enchantments.lure = {
} }
-- implemented in mcl_experience -- implemented in mcl_experience
mcl_enchanting.enchantments.mending = { redstone_enchanting.enchantments.mending = {
name = S("Mending"), name = S("Mending"),
max_level = 1, max_level = 1,
primary = {}, primary = {},
@ -462,7 +462,7 @@ mcl_experience.register_on_add_xp(function(player, xp)
for _, can in ipairs(candidates) do for _, can in ipairs(candidates) do
local stack = inv:get_stack(can.list, can.index) local stack = inv:get_stack(can.list, can.index)
local wear = stack:get_wear() 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.stack = stack
can.wear = wear can.wear = wear
table.insert(final_candidates, can) table.insert(final_candidates, can)
@ -492,7 +492,7 @@ mcl_experience.register_on_add_xp(function(player, xp)
return xp return xp
end, 0) end, 0)
mcl_enchanting.enchantments.multishot = { redstone_enchanting.enchantments.multishot = {
name = S("Multishot"), name = S("Multishot"),
max_level = 1, max_level = 1,
primary = {crossbow = true}, primary = {crossbow = true},
@ -511,7 +511,7 @@ mcl_enchanting.enchantments.multishot = {
} }
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
mcl_enchanting.enchantments.piercing = { redstone_enchanting.enchantments.piercing = {
name = S("Piercing"), name = S("Piercing"),
max_level = 4, max_level = 4,
primary = {crossbow = true}, primary = {crossbow = true},
@ -530,7 +530,7 @@ mcl_enchanting.enchantments.piercing = {
} }
-- implemented in mcl_bows -- implemented in mcl_bows
mcl_enchanting.enchantments.power = { redstone_enchanting.enchantments.power = {
name = S("Power"), name = S("Power"),
max_level = 5, max_level = 5,
primary = {bow = true}, primary = {bow = true},
@ -549,7 +549,7 @@ mcl_enchanting.enchantments.power = {
} }
-- implemented via minetest.calculate_knockback (together with the Knockback enchantment) and mcl_bows -- implemented via minetest.calculate_knockback (together with the Knockback enchantment) and mcl_bows
mcl_enchanting.enchantments.punch = { redstone_enchanting.enchantments.punch = {
name = S("Punch"), name = S("Punch"),
max_level = 2, max_level = 2,
primary = {}, primary = {},
@ -568,7 +568,7 @@ mcl_enchanting.enchantments.punch = {
} }
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
mcl_enchanting.enchantments.quick_charge = { redstone_enchanting.enchantments.quick_charge = {
name = S("Quick Charge"), name = S("Quick Charge"),
max_level = 3, max_level = 3,
primary = {crossbow = true}, primary = {crossbow = true},
@ -587,7 +587,7 @@ mcl_enchanting.enchantments.quick_charge = {
} }
-- unimplemented -- unimplemented
--[[mcl_enchanting.enchantments.respiration = { --[[redstone_enchanting.enchantments.respiration = {
name = S("Respiration"), name = S("Respiration"),
max_level = 3, max_level = 3,
primary = {armor_head = true}, primary = {armor_head = true},
@ -606,7 +606,7 @@ mcl_enchanting.enchantments.quick_charge = {
}]]-- }]]--
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
--[[mcl_enchanting.enchantments.riptide = { --[[redstone_enchanting.enchantments.riptide = {
name = S("Riptide"), name = S("Riptide"),
max_level = 3, max_level = 3,
primary = {trident = true}, primary = {trident = true},
@ -625,7 +625,7 @@ mcl_enchanting.enchantments.quick_charge = {
}]]-- }]]--
-- implemented via on_enchant -- implemented via on_enchant
mcl_enchanting.enchantments.sharpness = { redstone_enchanting.enchantments.sharpness = {
name = S("Sharpness"), name = S("Sharpness"),
max_level = 5, max_level = 5,
primary = {sword = true}, primary = {sword = true},
@ -644,7 +644,7 @@ mcl_enchanting.enchantments.sharpness = {
} }
-- implemented in mcl_item_entity -- implemented in mcl_item_entity
mcl_enchanting.enchantments.silk_touch = { redstone_enchanting.enchantments.silk_touch = {
name = S("Silk Touch"), name = S("Silk Touch"),
max_level = 1, max_level = 1,
primary = {pickaxe = true, shovel = true, axe = true, hoe = true}, 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 -- implemented via on_enchant and additions in mobs_mc
mcl_enchanting.enchantments.smite = { redstone_enchanting.enchantments.smite = {
name = S("Smite"), name = S("Smite"),
max_level = 5, max_level = 5,
primary = {sword = true}, primary = {sword = true},
@ -682,7 +682,7 @@ mcl_enchanting.enchantments.smite = {
} }
-- implemented in mcl_playerplus -- implemented in mcl_playerplus
mcl_enchanting.enchantments.soul_speed = { redstone_enchanting.enchantments.soul_speed = {
name = S("Soul Speed"), name = S("Soul Speed"),
max_level = 3, max_level = 3,
primary = {}, primary = {},
@ -701,7 +701,7 @@ mcl_enchanting.enchantments.soul_speed = {
} }
-- requires missing MineClone2 feature -- requires missing MineClone2 feature
--[[mcl_enchanting.enchantments.sweeping_edge = { --[[redstone_enchanting.enchantments.sweeping_edge = {
name = S("Sweeping Edge"), name = S("Sweeping Edge"),
max_level = 3, max_level = 3,
primary = {sword = true}, 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 -- 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"), name = S("Unbreaking"),
max_level = 3, 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}, 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},

View file

@ -1,19 +1,19 @@
local S = minetest.get_translator(minetest.get_current_modname()) local S = minetest.get_translator(minetest.get_current_modname())
local F = minetest.formspec_escape local F = minetest.formspec_escape
function mcl_enchanting.is_book(itemname) function redstone_enchanting.is_book(itemname)
return itemname == "mcl_books:book" or itemname == "mcl_enchanting:book_enchanted" or return itemname == "mcl_books:book" or itemname == "redstone_enchanting:book_enchanted" or
itemname == "mcl_books:book_enchanted" itemname == "mcl_books:book_enchanted"
end end
function mcl_enchanting.get_enchantments(itemstack) function redstone_enchanting.get_enchantments(itemstack)
if not itemstack then if not itemstack then
return {} return {}
end 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 end
function mcl_enchanting.unload_enchantments(itemstack) function redstone_enchanting.unload_enchantments(itemstack)
local itemdef = itemstack:get_definition() local itemdef = itemstack:get_definition()
local meta = itemstack:get_meta() local meta = itemstack:get_meta()
if itemdef.tool_capabilities then if itemdef.tool_capabilities then
@ -26,80 +26,80 @@ function mcl_enchanting.unload_enchantments(itemstack)
end end
end end
function mcl_enchanting.load_enchantments(itemstack, enchantments) function redstone_enchanting.load_enchantments(itemstack, enchantments)
if not mcl_enchanting.is_book(itemstack:get_name()) then if not redstone_enchanting.is_book(itemstack:get_name()) then
mcl_enchanting.unload_enchantments(itemstack) redstone_enchanting.unload_enchantments(itemstack)
for enchantment, level in pairs(enchantments or mcl_enchanting.get_enchantments(itemstack)) do for enchantment, level in pairs(enchantments or redstone_enchanting.get_enchantments(itemstack)) do
local enchantment_def = mcl_enchanting.enchantments[enchantment] local enchantment_def = redstone_enchanting.enchantments[enchantment]
if enchantment_def.on_enchant then if enchantment_def.on_enchant then
enchantment_def.on_enchant(itemstack, level) enchantment_def.on_enchant(itemstack, level)
end end
end end
mcl_enchanting.update_groupcaps(itemstack) redstone_enchanting.update_groupcaps(itemstack)
end end
tt.reload_itemstack_description(itemstack) tt.reload_itemstack_description(itemstack)
end end
function mcl_enchanting.set_enchantments(itemstack, enchantments) function redstone_enchanting.set_enchantments(itemstack, enchantments)
itemstack:get_meta():set_string("mcl_enchanting:enchantments", minetest.serialize(enchantments)) itemstack:get_meta():set_string("redstone_enchanting:enchantments", minetest.serialize(enchantments))
mcl_enchanting.load_enchantments(itemstack) redstone_enchanting.load_enchantments(itemstack)
end end
function mcl_enchanting.get_enchantment(itemstack, enchantment) function redstone_enchanting.get_enchantment(itemstack, enchantment)
return mcl_enchanting.get_enchantments(itemstack)[enchantment] or 0 return redstone_enchanting.get_enchantments(itemstack)[enchantment] or 0
end end
function mcl_enchanting.has_enchantment(itemstack, enchantment) function redstone_enchanting.has_enchantment(itemstack, enchantment)
return mcl_enchanting.get_enchantment(itemstack, enchantment) > 0 return redstone_enchanting.get_enchantment(itemstack, enchantment) > 0
end end
function mcl_enchanting.get_enchantment_description(enchantment, level) function redstone_enchanting.get_enchantment_description(enchantment, level)
local enchantment_def = mcl_enchanting.enchantments[enchantment] local enchantment_def = redstone_enchanting.enchantments[enchantment]
return enchantment_def.name .. return enchantment_def.name ..
(enchantment_def.max_level == 1 and "" or " " .. mcl_util.to_roman(level)) (enchantment_def.max_level == 1 and "" or " " .. mcl_util.to_roman(level))
end end
function mcl_enchanting.get_colorized_enchantment_description(enchantment, level) function redstone_enchanting.get_colorized_enchantment_description(enchantment, level)
return minetest.colorize(mcl_enchanting.enchantments[enchantment].curse and mcl_colors.RED or mcl_colors.GRAY, return minetest.colorize(redstone_enchanting.enchantments[enchantment].curse and mcl_colors.RED or mcl_colors.GRAY,
mcl_enchanting.get_enchantment_description(enchantment, level)) redstone_enchanting.get_enchantment_description(enchantment, level))
end end
function mcl_enchanting.get_enchanted_itemstring(itemname) function redstone_enchanting.get_enchanted_itemstring(itemname)
local def = minetest.registered_items[itemname] local def = minetest.registered_items[itemname]
return def and def._mcl_enchanting_enchanted_tool return def and def._redstone_enchanting_enchanted_tool
end end
function mcl_enchanting.set_enchanted_itemstring(itemstack) function redstone_enchanting.set_enchanted_itemstring(itemstack)
itemstack:set_name(mcl_enchanting.get_enchanted_itemstring(itemstack:get_name())) itemstack:set_name(redstone_enchanting.get_enchanted_itemstring(itemstack:get_name()))
end end
function mcl_enchanting.is_enchanted(itemname) function redstone_enchanting.is_enchanted(itemname)
return minetest.get_item_group(itemname, "enchanted") > 0 return minetest.get_item_group(itemname, "enchanted") > 0
end end
function mcl_enchanting.not_enchantable_on_enchanting_table(itemname) function redstone_enchanting.not_enchantable_on_enchanting_table(itemname)
return mcl_enchanting.get_enchantability(itemname) == -1 return redstone_enchanting.get_enchantability(itemname) == -1
end end
function mcl_enchanting.is_enchantable(itemname) function redstone_enchanting.is_enchantable(itemname)
return mcl_enchanting.get_enchantability(itemname) > 0 or return redstone_enchanting.get_enchantability(itemname) > 0 or
mcl_enchanting.not_enchantable_on_enchanting_table(itemname) redstone_enchanting.not_enchantable_on_enchanting_table(itemname)
end end
function mcl_enchanting.can_enchant_freshly(itemname) function redstone_enchanting.can_enchant_freshly(itemname)
return mcl_enchanting.is_enchantable(itemname) and not mcl_enchanting.is_enchanted(itemname) return redstone_enchanting.is_enchantable(itemname) and not redstone_enchanting.is_enchanted(itemname)
end end
function mcl_enchanting.get_enchantability(itemname) function redstone_enchanting.get_enchantability(itemname)
return minetest.get_item_group(itemname, "enchantability") return minetest.get_item_group(itemname, "enchantability")
end end
function mcl_enchanting.item_supports_enchantment(itemname, enchantment, early) function redstone_enchanting.item_supports_enchantment(itemname, enchantment, early)
if not mcl_enchanting.is_enchantable(itemname) then if not redstone_enchanting.is_enchantable(itemname) then
return false return false
end end
local enchantment_def = mcl_enchanting.enchantments[enchantment] local enchantment_def = redstone_enchanting.enchantments[enchantment]
if mcl_enchanting.is_book(itemname) then if redstone_enchanting.is_book(itemname) then
return true, (not enchantment_def.treasure) return true, (not enchantment_def.treasure)
end end
local itemdef = minetest.registered_items[itemname] local itemdef = minetest.registered_items[itemname]
@ -124,8 +124,8 @@ function mcl_enchanting.item_supports_enchantment(itemname, enchantment, early)
return false return false
end end
function mcl_enchanting.can_enchant(itemstack, enchantment, level) function redstone_enchanting.can_enchant(itemstack, enchantment, level)
local enchantment_def = mcl_enchanting.enchantments[enchantment] local enchantment_def = redstone_enchanting.enchantments[enchantment]
if not enchantment_def then if not enchantment_def then
return false, "enchantment invalid" return false, "enchantment invalid"
end end
@ -133,7 +133,7 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level)
if itemname == "" then if itemname == "" then
return false, "item missing" return false, "item missing"
end 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 if not supported then
return false, "item not supported" return false, "item not supported"
end end
@ -145,44 +145,44 @@ function mcl_enchanting.can_enchant(itemstack, enchantment, level)
elseif level < 1 then elseif level < 1 then
return false, "level too small", 1 return false, "level too small", 1
end end
local item_enchantments = mcl_enchanting.get_enchantments(itemstack) local item_enchantments = redstone_enchanting.get_enchantments(itemstack)
local enchantment_level = item_enchantments[enchantment] local enchantment_level = item_enchantments[enchantment]
if enchantment_level then 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 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 for incompatible in pairs(enchantment_def.incompatible) do
local incompatible_level = item_enchantments[incompatible] local incompatible_level = item_enchantments[incompatible]
if incompatible_level then if incompatible_level then
return false, "incompatible", return false, "incompatible",
mcl_enchanting.get_enchantment_description(incompatible, incompatible_level) redstone_enchanting.get_enchantment_description(incompatible, incompatible_level)
end end
end end
end end
return true, nil, nil, primary return true, nil, nil, primary
end end
function mcl_enchanting.enchant(itemstack, enchantment, level) function redstone_enchanting.enchant(itemstack, enchantment, level)
mcl_enchanting.set_enchanted_itemstring(itemstack) redstone_enchanting.set_enchanted_itemstring(itemstack)
local enchantments = mcl_enchanting.get_enchantments(itemstack) local enchantments = redstone_enchanting.get_enchantments(itemstack)
enchantments[enchantment] = level enchantments[enchantment] = level
mcl_enchanting.set_enchantments(itemstack, enchantments) redstone_enchanting.set_enchantments(itemstack, enchantments)
return itemstack return itemstack
end end
function mcl_enchanting.combine(itemstack, combine_with) function redstone_enchanting.combine(itemstack, combine_with)
local itemname = itemstack:get_name() local itemname = itemstack:get_name()
local combine_name = combine_with: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 if not enchanted_itemname or
enchanted_itemname ~= mcl_enchanting.get_enchanted_itemstring(combine_name) and enchanted_itemname ~= redstone_enchanting.get_enchanted_itemstring(combine_name) and
not mcl_enchanting.is_book(combine_name) then not redstone_enchanting.is_book(combine_name) then
return false return false
end end
local enchantments = mcl_enchanting.get_enchantments(itemstack) local enchantments = redstone_enchanting.get_enchantments(itemstack)
local any_new_enchantment = false local any_new_enchantment = false
for enchantment, combine_level in pairs(mcl_enchanting.get_enchantments(combine_with)) do for enchantment, combine_level in pairs(redstone_enchanting.get_enchantments(combine_with)) do
local enchantment_def = mcl_enchanting.enchantments[enchantment] local enchantment_def = redstone_enchanting.enchantments[enchantment]
local enchantment_level = enchantments[enchantment] local enchantment_level = enchantments[enchantment]
if enchantment_level then -- The enchantment already exist in the provided item if enchantment_level then -- The enchantment already exist in the provided item
if enchantment_level == combine_level then 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) enchantment_level = math.max(enchantment_level, combine_level)
end end
any_new_enchantment = any_new_enchantment or ( enchantment_level ~= enchantments[enchantment] ) 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 local supported = true
for incompatible in pairs(enchantment_def.incompatible) do for incompatible in pairs(enchantment_def.incompatible) do
if enchantments[incompatible] then if enchantments[incompatible] then
@ -210,19 +210,19 @@ function mcl_enchanting.combine(itemstack, combine_with)
end end
if any_new_enchantment then if any_new_enchantment then
itemstack:set_name(enchanted_itemname) itemstack:set_name(enchanted_itemname)
mcl_enchanting.set_enchantments(itemstack, enchantments) redstone_enchanting.set_enchantments(itemstack, enchantments)
end end
return any_new_enchantment return any_new_enchantment
end end
function mcl_enchanting.enchantments_snippet(_, _, itemstack) function redstone_enchanting.enchantments_snippet(_, _, itemstack)
if not itemstack then if not itemstack then
return return
end end
local enchantments = mcl_enchanting.get_enchantments(itemstack) local enchantments = redstone_enchanting.get_enchantments(itemstack)
local text = "" local text = ""
for enchantment, level in pairs(enchantments) do 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 end
if text ~= "" then if text ~= "" then
if not itemstack:get_definition()._tt_original_description then if not itemstack:get_definition()._tt_original_description then
@ -248,7 +248,7 @@ local function get_after_use_callback(itemdef)
-- one too. -- one too.
return function(itemstack, user, node, digparams) return function(itemstack, user, node, digparams)
itemdef.after_use(itemstack, user, node, digparams) itemdef.after_use(itemstack, user, node, digparams)
mcl_enchanting.update_groupcaps(itemstack) redstone_enchanting.update_groupcaps(itemstack)
end end
end end
@ -259,22 +259,22 @@ local function get_after_use_callback(itemdef)
itemstack:add_wear(digparams.wear) itemstack:add_wear(digparams.wear)
end end
--local enchantments = mcl_enchanting.get_enchantments(itemstack) --local enchantments = redstone_enchanting.get_enchantments(itemstack)
mcl_enchanting.update_groupcaps(itemstack) redstone_enchanting.update_groupcaps(itemstack)
end end
end end
function mcl_enchanting.initialize() function redstone_enchanting.initialize()
local register_tool_list = {} local register_tool_list = {}
local register_item_list = {} local register_item_list = {}
for itemname, itemdef in pairs(minetest.registered_items) do 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" 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) 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 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 end
new_def.groups.not_in_creative_inventory = 1 new_def.groups.not_in_creative_inventory = 1
new_def.groups.not_in_craft_guide = 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 new_def._mcl_armor_texture then
if type(new_def._mcl_armor_texture) == "string" 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
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) new_def.after_use = get_after_use_callback(itemdef)
local register_list = register_item_list local register_list = register_item_list
if itemdef.type == "tool" then if itemdef.type == "tool" then
@ -303,7 +303,7 @@ function mcl_enchanting.initialize()
end end
end end
function mcl_enchanting.random(pr, ...) function redstone_enchanting.random(pr, ...)
local r = pr and pr:next(...) or math.random(...) local r = pr and pr:next(...) or math.random(...)
if pr and not ({ ... })[1] then if pr and not ({ ... })[1] then
@ -313,11 +313,11 @@ function mcl_enchanting.random(pr, ...)
return r return r
end 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 = {} local possible = {}
for enchantment, enchantment_def in pairs(mcl_enchanting.enchantments) do for enchantment, enchantment_def in pairs(redstone_enchanting.enchantments) do
local can_enchant, _, _, primary = mcl_enchanting.can_enchant(itemstack, enchantment, 1) 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 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 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
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 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) ignore_already_enchanted, pr)
local itemname = itemstack:get_name() local itemname = itemstack:get_name()
if (not mcl_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted) or if (not redstone_enchanting.can_enchant_freshly(itemname) and not ignore_already_enchanted) or
mcl_enchanting.not_enchantable_on_enchanting_table(itemname) then redstone_enchanting.not_enchantable_on_enchanting_table(itemname) then
return return
end end
itemstack = ItemStack(itemstack) itemstack = ItemStack(itemstack)
local enchantability = minetest.get_item_group(itemname, "enchantability") local enchantability = minetest.get_item_group(itemname, "enchantability")
enchantability = 1 + mcl_enchanting.random(pr, 0, math.floor(enchantability / 4)) + enchantability = 1 + redstone_enchanting.random(pr, 0, math.floor(enchantability / 4)) +
mcl_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 + enchantability
enchantment_level = enchantment_level + 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) enchantment_level = math.max(math.floor(enchantment_level + 0.5), 1)
local enchantments = {} local enchantments = {}
@ -363,13 +363,13 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve
break break
end 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 if not selected_enchantment then
break break
end 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 power_range_table = enchantment_def.power_range_table
local enchantment_power local enchantment_power
@ -387,62 +387,62 @@ function mcl_enchanting.generate_random_enchantments(itemstack, enchantment_leve
return return
end end
description = mcl_enchanting.get_enchantment_description(selected_enchantment, enchantment_power) description = redstone_enchanting.get_enchantment_description(selected_enchantment, enchantment_power)
end end
if enchantment_power then if enchantment_power then
enchantments[selected_enchantment] = enchantment_power enchantments[selected_enchantment] = enchantment_power
mcl_enchanting.enchant(itemstack, selected_enchantment, enchantment_power) redstone_enchanting.enchant(itemstack, selected_enchantment, enchantment_power)
end 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 return enchantments, description
end 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 local enchantments
repeat 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) no_reduced_bonus_chance, ignore_already_enchanted, pr)
until enchantments until enchantments
return enchantments return enchantments
end 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) 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) redstone_enchanting.set_enchanted_itemstring(itemstack)
mcl_enchanting.set_enchantments(itemstack, enchantments) redstone_enchanting.set_enchantments(itemstack, enchantments)
return itemstack return itemstack
end end
function mcl_enchanting.enchant_uniform_randomly(stack, exclude, pr) function redstone_enchanting.enchant_uniform_randomly(stack, exclude, pr)
local enchantment = mcl_enchanting.get_random_enchantment(stack, true, false, exclude, pr) local enchantment = redstone_enchanting.get_random_enchantment(stack, true, false, exclude, pr)
if enchantment then if enchantment then
mcl_enchanting.enchant(stack, enchantment, redstone_enchanting.enchant(stack, enchantment,
mcl_enchanting.random(pr, 1, mcl_enchanting.enchantments[enchantment].max_level)) redstone_enchanting.random(pr, 1, redstone_enchanting.enchantments[enchantment].max_level))
end end
return stack return stack
end end
function mcl_enchanting.get_random_glyph_row() function redstone_enchanting.get_random_glyph_row()
local glyphs = "" local glyphs = ""
local x = 1.3 local x = 1.3
for i = 1, 9 do for i = 1, 9 do
glyphs = glyphs .. 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 x = x + 0.6
end end
return glyphs return glyphs
end 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 base = math.random(8) + math.floor(num_bookshelves / 2) + math.random(0, num_bookshelves)
local required_levels = { local required_levels = {
math.max(base / 3, 1), math.max(base / 3, 1),
@ -452,12 +452,12 @@ function mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves)
local slots = {} local slots = {}
for i, enchantment_level in ipairs(required_levels) do for i, enchantment_level in ipairs(required_levels) do
local slot = false 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 if enchantments then
slot = { slot = {
enchantments = enchantments, enchantments = enchantments,
description = description, 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)), level_requirement = math.max(i, math.floor(enchantment_level)),
} }
end end
@ -466,23 +466,23 @@ function mcl_enchanting.generate_random_table_slots(itemstack, num_bookshelves)
return slots return slots
end 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() 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 } return { false, false, false }
end end
local meta = player:get_meta() 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_slots = player_slots[num_bookshelves] or {}
local player_bookshelves_item_slots = player_bookshelves_slots[itemname] local player_bookshelves_item_slots = player_bookshelves_slots[itemname]
if player_bookshelves_item_slots then if player_bookshelves_item_slots then
return player_bookshelves_item_slots return player_bookshelves_item_slots
else 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 if player_bookshelves_item_slots then
player_bookshelves_slots[itemname] = player_bookshelves_item_slots player_bookshelves_slots[itemname] = player_bookshelves_item_slots
player_slots[num_bookshelves] = player_bookshelves_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 return player_bookshelves_item_slots
else else
return { false, false, false } return { false, false, false }
@ -490,17 +490,17 @@ function mcl_enchanting.get_table_slots(player, itemstack, num_bookshelves)
end end
end end
function mcl_enchanting.reset_table_slots(player) function redstone_enchanting.reset_table_slots(player)
player:get_meta():set_string("mcl_enchanting:slots", "") player:get_meta():set_string("redstone_enchanting:slots", "")
end end
function mcl_enchanting.show_enchanting_formspec(player) function redstone_enchanting.show_enchanting_formspec(player)
local C = minetest.get_color_escape_sequence local C = minetest.get_color_escape_sequence
local name = player:get_player_name() local name = player:get_player_name()
local meta = player:get_meta() local meta = player:get_meta()
local inv = player:get_inventory() local inv = player:get_inventory()
local num_bookshelves = meta:get_int("mcl_enchanting:num_bookshelves") local num_bookshelves = meta:get_int("redstone_enchanting:num_bookshelves")
local table_name = meta:get_string("mcl_enchanting:table_name") local table_name = meta:get_string("redstone_enchanting:table_name")
local formspec = table.concat({ local formspec = table.concat({
"formspec_version[4]", "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), mcl_formspec.get_itemslot_bg_v4(1, 3.25, 1, 1),
"list[current_player;enchanting_item;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), mcl_formspec.get_itemslot_bg_v4(2.25, 3.25, 1, 1),
"image[2.25,3.25;1,1;mcl_enchanting_lapis_background.png]", "image[2.25,3.25;1,1;redstone_enchanting_redstone_background.png]",
"list[current_player;enchanting_lapis;2.25,3.25;1,1]", "list[current_player;enchanting_redstone;2.25,3.25;1,1]",
"image[4.125,0.56;7.25,4.1;mcl_enchanting_button_background.png]", "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")) .. "]", "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), mcl_formspec.get_itemslot_bg_v4(0.375, 5.1, 9, 3),
"list[current_player;main;0.375,5.1;9,3;9]", "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;main]",
"listring[current_player;enchanting]", "listring[current_player;enchanting]",
"listring[current_player;main]", "listring[current_player;main]",
"listring[current_player;enchanting_lapis]", "listring[current_player;enchanting_redstone]",
"listring[current_player;main]", "listring[current_player;main]",
}) })
@ -532,12 +532,12 @@ function mcl_enchanting.show_enchanting_formspec(player)
local player_levels = mcl_experience.get_level(player) local player_levels = mcl_experience.get_level(player)
local y = 0.65 local y = 0.65
local any_enchantment = false 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 for i, slot in ipairs(table_slots) do
any_enchantment = any_enchantment or slot 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 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 ending = (can_enchant and "" or "_off")
local hover_ending = (can_enchant and "_hovered" or "_off") local hover_ending = (can_enchant and "_hovered" or "_off")
formspec = formspec formspec = formspec
@ -555,18 +555,18 @@ function mcl_enchanting.show_enchanting_formspec(player)
" . . . ?\n\n" .. " . . . ?\n\n" ..
( (
enough_levels and enough_levels and
C(enough_lapis and "#818181" or "#FC5454") .. C(enough_redstone and "#818181" or "#FC5454") ..
F(S("@1 Lapis Lazuli", i)) .. "\n" .. C("#818181") .. F(S("@1 Enchantment Levels", i)) or 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 "") C("#FC5454") .. F(S("Level requirement: @1", slot.level_requirement))) .. "]" or "")
.. ..
"style[button_" .. "style[button_" ..
i .. i ..
";bgimg=mcl_enchanting_button" .. ";bgimg=redstone_enchanting_button" ..
ending .. ending ..
".png;bgimg_hovered=mcl_enchanting_button" .. ".png;bgimg_hovered=redstone_enchanting_button" ..
hover_ending .. ".png;bgimg_pressed=mcl_enchanting_button" .. hover_ending .. ".png]" hover_ending .. ".png;bgimg_pressed=redstone_enchanting_button" .. hover_ending .. ".png]"
.. "button[0,0;7.25,1.3;button_" .. i .. ";]" .. "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 "label[6.8,1;" .. C(can_enchant and "#80FF20" or "#407F10") .. slot.level_requirement .. "]" or "")
.. (slot and slot.glyphs or "") .. (slot and slot.glyphs or "")
.. "container_end[]" .. "container_end[]"
@ -578,12 +578,12 @@ function mcl_enchanting.show_enchanting_formspec(player)
(any_enchantment and 1.1 or 1.67) .. (any_enchantment and 1.1 or 1.67) ..
",1.2;" .. ",1.2;" ..
(any_enchantment and 2 or 0.87) .. (any_enchantment and 2 or 0.87) ..
",1.43;mcl_enchanting_book_" .. (any_enchantment and "open" or "closed") .. ".png]" ",1.43;redstone_enchanting_book_" .. (any_enchantment and "open" or "closed") .. ".png]"
minetest.show_formspec(name, "mcl_enchanting:table", formspec) minetest.show_formspec(name, "redstone_enchanting:table", formspec)
end end
function mcl_enchanting.handle_formspec_fields(player, formname, fields) function redstone_enchanting.handle_formspec_fields(player, formname, fields)
if formname == "mcl_enchanting:table" then if formname == "redstone_enchanting:table" then
local button_pressed local button_pressed
for i = 1, 3 do for i = 1, 3 do
if fields["button_" .. i] then 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 name = player:get_player_name()
local inv = player:get_inventory() local inv = player:get_inventory()
local meta = player:get_meta() 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 itemstack = inv:get_stack("enchanting_item", 1)
local cost = ItemStack({ name = "mcl_core:lapis", count = button_pressed }) local cost = ItemStack({ name = "mesecons:redstone", count = button_pressed })
if not inv:contains_item("enchanting_lapis", cost) then if not inv:contains_item("enchanting_redstone", cost) then
return return
end 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] local slot = slots[button_pressed]
if not slot then if not slot then
return return
@ -610,27 +610,27 @@ function mcl_enchanting.handle_formspec_fields(player, formname, fields)
return return
end end
mcl_experience.set_level(player, player_level - button_pressed) mcl_experience.set_level(player, player_level - button_pressed)
inv:remove_item("enchanting_lapis", cost) inv:remove_item("enchanting_redstone", cost)
mcl_enchanting.set_enchanted_itemstring(itemstack) redstone_enchanting.set_enchanted_itemstring(itemstack)
mcl_enchanting.set_enchantments(itemstack, slot.enchantments) redstone_enchanting.set_enchantments(itemstack, slot.enchantments)
inv:set_stack("enchanting_item", 1, itemstack) inv:set_stack("enchanting_item", 1, itemstack)
minetest.sound_play("mcl_enchanting_enchant", { to_player = name, gain = 5.0 }) minetest.sound_play("redstone_enchanting_enchant", { to_player = name, gain = 5.0 })
mcl_enchanting.reset_table_slots(player) redstone_enchanting.reset_table_slots(player)
mcl_enchanting.show_enchanting_formspec(player) redstone_enchanting.show_enchanting_formspec(player)
awards.unlock(player:get_player_name(), "mcl:enchanter") awards.unlock(player:get_player_name(), "mcl:enchanter")
end end
end end
function mcl_enchanting.initialize_player(player) function redstone_enchanting.initialize_player(player)
local inv = player:get_inventory() local inv = player:get_inventory()
inv:set_size("enchanting", 1) inv:set_size("enchanting", 1)
inv:set_size("enchanting_item", 1) inv:set_size("enchanting_item", 1)
inv:set_size("enchanting_lapis", 1) inv:set_size("enchanting_redstone", 1)
end 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 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 if action == "move" then
local is_from = table.indexof(enchanting_lists, inventory_info.from_list) ~= -1 local is_from = table.indexof(enchanting_lists, inventory_info.from_list) ~= -1
local is_to = table.indexof(enchanting_lists, inventory_info.to_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
end end
function mcl_enchanting.allow_inventory_action(player, action, inventory, inventory_info) function redstone_enchanting.allow_inventory_action(player, action, inventory, inventory_info)
local is_enchanting_action, do_limit = mcl_enchanting.is_enchanting_inventory_action(action, inventory, local is_enchanting_action, do_limit = redstone_enchanting.is_enchanting_inventory_action(action, inventory,
inventory_info) inventory_info)
if is_enchanting_action and do_limit then if is_enchanting_action and do_limit then
if action == "move" then if action == "move" then
local listname = inventory_info.to_list local listname = inventory_info.to_list
local stack = inventory:get_stack(inventory_info.from_list, inventory_info.from_index) 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 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 if old_stack:get_name() ~= "" then
count = math.min(count, old_stack:get_free_space()) count = math.min(count, old_stack:get_free_space())
end end
return count 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 return 1
else else
return 0 return 0
@ -668,49 +668,49 @@ function mcl_enchanting.allow_inventory_action(player, action, inventory, invent
end end
end end
function mcl_enchanting.on_inventory_action(player, action, inventory, inventory_info) function redstone_enchanting.on_inventory_action(player, action, inventory, inventory_info)
if mcl_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) then if redstone_enchanting.is_enchanting_inventory_action(action, inventory, inventory_info) then
if action == "move" and inventory_info.to_list == "enchanting" then if action == "move" and inventory_info.to_list == "enchanting" then
local stack = inventory:get_stack("enchanting", 1) local stack = inventory:get_stack("enchanting", 1)
local result_list local result_list
if stack:get_name() == "mcl_core:lapis" then if stack:get_name() == "mesecons:redstone" then
result_list = "enchanting_lapis" result_list = "enchanting_redstone"
stack:add_item(inventory:get_stack("enchanting_lapis", 1)) stack:add_item(inventory:get_stack("enchanting_redstone", 1))
else else
result_list = "enchanting_item" result_list = "enchanting_item"
end end
inventory:set_stack(result_list, 1, stack) inventory:set_stack(result_list, 1, stack)
inventory:set_stack("enchanting", 1, nil) inventory:set_stack("enchanting", 1, nil)
end end
mcl_enchanting.show_enchanting_formspec(player) redstone_enchanting.show_enchanting_formspec(player)
end end
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 } self.scheduled_anim = { timer = self.anim_length, anim = anim }
end end
function mcl_enchanting.set_book_animation(self, anim) function redstone_enchanting.set_book_animation(self, anim)
local anim_index = mcl_enchanting.book_animations[anim] local anim_index = redstone_enchanting.book_animations[anim]
local start, stop = mcl_enchanting.book_animation_steps[anim_index], local start, stop = redstone_enchanting.book_animation_steps[anim_index],
mcl_enchanting.book_animation_steps[anim_index + 1] redstone_enchanting.book_animation_steps[anim_index + 1]
self.object:set_animation({ x = start, y = stop }, mcl_enchanting.book_animation_speed, 0, self.object:set_animation({ x = start, y = stop }, redstone_enchanting.book_animation_speed, 0,
mcl_enchanting.book_animation_loop[anim] or false) redstone_enchanting.book_animation_loop[anim] or false)
self.scheduled_anim = nil self.scheduled_anim = nil
self.anim_length = (stop - start) / 40 self.anim_length = (stop - start) / 40
end end
function mcl_enchanting.check_animation_schedule(self, dtime) function redstone_enchanting.check_animation_schedule(self, dtime)
local schedanim = self.scheduled_anim local schedanim = self.scheduled_anim
if schedanim then if schedanim then
schedanim.timer = schedanim.timer - dtime schedanim.timer = schedanim.timer - dtime
if schedanim.timer <= 0 then if schedanim.timer <= 0 then
mcl_enchanting.set_book_animation(self, schedanim.anim) redstone_enchanting.set_book_animation(self, schedanim.anim)
end end
end end
end end
function mcl_enchanting.look_at(self, pos2) function redstone_enchanting.look_at(self, pos2)
local pos1 = self.object:get_pos() local pos1 = self.object:get_pos()
local vec = vector.subtract(pos1, pos2) local vec = vector.subtract(pos1, pos2)
local yaw = math.atan(vec.z / vec.x) - math.pi / 2 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) self.object:set_yaw(yaw + math.pi)
end end
function mcl_enchanting.get_bookshelves(pos) function redstone_enchanting.get_bookshelves(pos)
local absolute, relative = {}, {} local absolute, relative = {}, {}
for i, rp in ipairs(mcl_enchanting.bookshelf_positions) do for i, rp in ipairs(redstone_enchanting.bookshelf_positions) do
local airp = vector.add(pos, mcl_enchanting.air_positions[i]) local airp = vector.add(pos, redstone_enchanting.air_positions[i])
local ap = vector.add(pos, rp) local ap = vector.add(pos, rp)
if minetest.get_node(ap).name == "mcl_books:bookshelf" and minetest.get_node(airp).name == "air" then if minetest.get_node(ap).name == "mcl_books:bookshelf" and minetest.get_node(airp).name == "air" then
table.insert(absolute, ap) table.insert(absolute, ap)

View file

@ -41,14 +41,14 @@ end
-- --
-- To make it more efficient it will first check a hash value to determine if -- To make it more efficient it will first check a hash value to determine if
-- the tool needs to be updated. -- the tool needs to be updated.
function mcl_enchanting.update_groupcaps(itemstack) function redstone_enchanting.update_groupcaps(itemstack)
local name = itemstack:get_name() local name = itemstack:get_name()
if not minetest.registered_tools[name] or not minetest.registered_tools[name].tool_capabilities then if not minetest.registered_tools[name] or not minetest.registered_tools[name].tool_capabilities then
return return
end end
local efficiency = mcl_enchanting.get_enchantment(itemstack, "efficiency") local efficiency = redstone_enchanting.get_enchantment(itemstack, "efficiency")
local unbreaking = mcl_enchanting.get_enchantment(itemstack, "unbreaking") local unbreaking = redstone_enchanting.get_enchantment(itemstack, "unbreaking")
if unbreaking == 0 and efficiency == 0 then if unbreaking == 0 and efficiency == 0 then
return return
end end

View file

@ -5,7 +5,7 @@ local S = minetest.get_translator(modname)
local math = math local math = math
local vector = vector local vector = vector
mcl_enchanting = { redstone_enchanting = {
book_offset = vector.new(0, 0.75, 0), book_offset = vector.new(0, 0.75, 0),
book_animations = {["close"] = 1, ["opening"] = 2, ["open"] = 3, ["closing"] = 4}, book_animations = {["close"] = 1, ["opening"] = 2, ["open"] = 3, ["closing"] = 4},
book_animation_steps = {0, 640, 680, 700, 740}, book_animation_steps = {0, 640, 680, 700, 740},
@ -14,7 +14,7 @@ mcl_enchanting = {
enchantments = {}, enchantments = {},
overlay = "^[colorize:purple:50", overlay = "^[colorize:purple:50",
--overlay = "^[invert:rgb^[multiply:#4df44d:50^[invert:rgb", --overlay = "^[invert:rgb^[multiply:#4df44d:50^[invert:rgb",
enchanting_lists = {"enchanting", "enchanting_item", "enchanting_lapis"}, enchanting_lists = {"enchanting", "enchanting_item", "enchanting_redstone"},
bookshelf_positions = { bookshelf_positions = {
{x = -2, y = 0, z = -2}, {x = -2, y = 1, z = -2}, {x = -2, y = 0, z = -2}, {x = -2, y = 1, z = -2},
{x = -1, y = 0, z = -2}, {x = -1, 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) return false, S("Player '@1' cannot be found.", target_name)
end end
local itemstack = target:get_wielded_item() 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 not can_enchant then
if errorstring == "enchantment invalid" then if errorstring == "enchantment invalid" then
return false, S("There is no such enchantment '@1'.", enchantment) return false, S("There is no such enchantment '@1'.", enchantment)
@ -98,10 +98,10 @@ minetest.register_chatcommand("enchant", {
elseif errorstring == "level too small" then 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) 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 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 end
else 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.") return true, S("Enchanting succeded.")
end end
end end
@ -125,31 +125,31 @@ minetest.register_chatcommand("forceenchant", {
return false, S("Player '@1' cannot be found.", target_name) return false, S("Player '@1' cannot be found.", target_name)
end end
local itemstack = target:get_wielded_item() 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 if errorstring == "enchantment invalid" then
return false, S("There is no such enchantment '@1'.", enchantment) return false, S("There is no such enchantment '@1'.", enchantment)
elseif errorstring == "item missing" then elseif errorstring == "item missing" then
return false, S("The target doesn't hold an item.") 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.") return false, S("The target item is not enchantable.")
elseif errorstring == "level invalid" then elseif errorstring == "level invalid" then
return false, S("'@1' is not a valid number.", level_str) return false, S("'@1' is not a valid number.", level_str)
else 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.") return true, S("Enchanting succeded.")
end end
end end
}) })
minetest.register_craftitem("mcl_enchanting:book_enchanted", { minetest.register_craftitem("redstone_enchanting:book_enchanted", {
description = S("Enchanted Book"), 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}, 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, 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) local function spawn_book_entity(pos, respawn)
if respawn then if respawn then
@ -158,14 +158,14 @@ local function spawn_book_entity(pos, respawn)
for o=1, #objs do for o=1, #objs do
local obj = objs[o] local obj = objs[o]
local lua = obj:get_luaentity() 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 if lua._table_pos and vector.equals(pos, lua._table_pos) then
return return
end end
end end
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 if obj then
local lua = obj:get_luaentity() local lua = obj:get_luaentity()
if lua then if lua then
@ -174,45 +174,45 @@ local function spawn_book_entity(pos, respawn)
end end
end end
minetest.register_entity("mcl_enchanting:book", { minetest.register_entity("redstone_enchanting:book", {
initial_properties = { initial_properties = {
visual = "mesh", visual = "mesh",
mesh = "mcl_enchanting_book.b3d", mesh = "redstone_enchanting_book.b3d",
visual_size = {x = 12.5, y = 12.5}, visual_size = {x = 12.5, y = 12.5},
collisionbox = {0, 0, 0}, collisionbox = {0, 0, 0},
pointable = false, pointable = false,
physical = 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, static_save = false,
}, },
_player_near = false, _player_near = false,
_table_pos = nil, _table_pos = nil,
on_activate = function(self, staticdata) on_activate = function(self, staticdata)
self.object:set_armor_groups({immortal = 1}) self.object:set_armor_groups({immortal = 1})
mcl_enchanting.set_book_animation(self, "close") redstone_enchanting.set_book_animation(self, "close")
end, end,
on_step = function(self, dtime) on_step = function(self, dtime)
local old_player_near = self._player_near local old_player_near = self._player_near
local player_near = false local player_near = false
local player 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 if obj:is_player() then
player_near = true player_near = true
player = obj player = obj
end end
end end
if player_near and not old_player_near then if player_near and not old_player_near then
mcl_enchanting.set_book_animation(self, "opening") redstone_enchanting.set_book_animation(self, "opening")
mcl_enchanting.schedule_book_animation(self, "open") redstone_enchanting.schedule_book_animation(self, "open")
elseif old_player_near and not player_near then elseif old_player_near and not player_near then
mcl_enchanting.set_book_animation(self, "closing") redstone_enchanting.set_book_animation(self, "closing")
mcl_enchanting.schedule_book_animation(self, "close") redstone_enchanting.schedule_book_animation(self, "close")
end end
if player then if player then
mcl_enchanting.look_at(self, player:get_pos()) redstone_enchanting.look_at(self, player:get_pos())
end end
self._player_near = player_near self._player_near = player_near
mcl_enchanting.check_animation_schedule(self, dtime) redstone_enchanting.check_animation_schedule(self, dtime)
end, end,
}) })
@ -221,20 +221,20 @@ if minetest.get_modpath("screwdriver") then
rotate = screwdriver.rotate_simple rotate = screwdriver.rotate_simple
end end
minetest.register_node("mcl_enchanting:table", { minetest.register_node("redstone_enchanting:table", {
description = S("Enchanting Table"), description = S("Enchanting Table"),
_tt_help = S("Spend experience, and lapis to enchant various items."), _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 lapis lazuli."), _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 = _doc_items_usagehelp =
S("Rightclick the Enchanting Table to open the enchanting menu.").."\n".. 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("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("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("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("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, _doc_items_hidden = false,
drawtype = "nodebox", 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, use_texture_alpha = minetest.features.use_texture_alpha_string_modes and "opaque" or false,
node_box = { node_box = {
type = "fixed", type = "fixed",
@ -246,15 +246,15 @@ minetest.register_node("mcl_enchanting:table", {
on_rightclick = function(pos, node, clicker, itemstack, pointed_thing) on_rightclick = function(pos, node, clicker, itemstack, pointed_thing)
local player_meta = clicker:get_meta() local player_meta = clicker:get_meta()
--local table_meta = minetest.get_meta(pos) --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") local table_name = minetest.get_meta(pos):get_string("name")
if table_name == "" then if table_name == "" then
table_name = S("Enchant") table_name = S("Enchant")
end end
local bookshelves = mcl_enchanting.get_bookshelves(pos) local bookshelves = redstone_enchanting.get_bookshelves(pos)
player_meta:set_int("mcl_enchanting:num_bookshelves", math.min(15, #bookshelves)) player_meta:set_int("redstone_enchanting:num_bookshelves", math.min(15, #bookshelves))
player_meta:set_string("mcl_enchanting:table_name", table_name) player_meta:set_string("redstone_enchanting:table_name", table_name)
mcl_enchanting.show_enchanting_formspec(clicker) redstone_enchanting.show_enchanting_formspec(clicker)
-- Respawn book entity just in case it got lost -- Respawn book entity just in case it got lost
spawn_book_entity(pos, true) spawn_book_entity(pos, true)
end, end,
@ -266,7 +266,7 @@ minetest.register_node("mcl_enchanting:table", {
if minetest.is_creative_enabled(dname) then if minetest.is_creative_enabled(dname) then
return return
end end
local itemstack = ItemStack("mcl_enchanting:table") local itemstack = ItemStack("redstone_enchanting:table")
local meta = minetest.get_meta(pos) local meta = minetest.get_meta(pos)
local itemmeta = itemstack:get_meta() local itemmeta = itemstack:get_meta()
itemmeta:set_string("name", meta:get_string("name")) itemmeta:set_string("name", meta:get_string("name"))
@ -284,7 +284,7 @@ minetest.register_node("mcl_enchanting:table", {
for o=1, #objs do for o=1, #objs do
local obj = objs[o] local obj = objs[o]
local lua = obj:get_luaentity() 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 if lua._table_pos and vector.equals(pos, lua._table_pos) then
obj:remove() obj:remove()
end end
@ -297,7 +297,7 @@ minetest.register_node("mcl_enchanting:table", {
}) })
minetest.register_craft({ minetest.register_craft({
output = "mcl_enchanting:table", output = "redstone_enchanting:table",
recipe = { recipe = {
{"", "mcl_books:book", ""}, {"", "mcl_books:book", ""},
{"mcl_core:diamond", "mcl_core:obsidian", "mcl_core:diamond"}, {"mcl_core:diamond", "mcl_core:obsidian", "mcl_core:diamond"},
@ -309,7 +309,7 @@ minetest.register_abm({
label = "Enchanting table bookshelf particles", label = "Enchanting table bookshelf particles",
interval = 1, interval = 1,
chance = 1, chance = 1,
nodenames = "mcl_enchanting:table", nodenames = "redstone_enchanting:table",
action = function(pos) action = function(pos)
local playernames = {} local playernames = {}
for _, obj in pairs(minetest.get_objects_inside_radius(pos, 15)) do for _, obj in pairs(minetest.get_objects_inside_radius(pos, 15)) do
@ -320,7 +320,7 @@ minetest.register_abm({
if #playernames < 1 then if #playernames < 1 then
return return
end end
local absolute, relative = mcl_enchanting.get_bookshelves(pos) local absolute, relative = redstone_enchanting.get_bookshelves(pos)
for i, ap in ipairs(absolute) do for i, ap in ipairs(absolute) do
if math.random(5) == 1 then if math.random(5) == 1 then
local rp = relative[i] 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 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 local s = math.random()+0.9 --size
t = t - 0.1 --slightly decrease time to avoid texture overlappings 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 for _, name in pairs(playernames) do
minetest.add_particle({ minetest.add_particle({
pos = ap, pos = ap,
@ -350,8 +350,8 @@ minetest.register_abm({
minetest.register_lbm({ minetest.register_lbm({
label = "(Re-)spawn book entity above enchanting table", label = "(Re-)spawn book entity above enchanting table",
name = "mcl_enchanting:spawn_book_entity", name = "redstone_enchanting:spawn_book_entity",
nodenames = {"mcl_enchanting:table"}, nodenames = {"redstone_enchanting:table"},
run_at_every_load = true, run_at_every_load = true,
action = function(pos) action = function(pos)
spawn_book_entity(pos, true) spawn_book_entity(pos, true)
@ -359,9 +359,9 @@ minetest.register_lbm({
}) })
minetest.register_on_mods_loaded(mcl_enchanting.initialize) minetest.register_on_mods_loaded(redstone_enchanting.initialize)
minetest.register_on_joinplayer(mcl_enchanting.initialize_player) minetest.register_on_joinplayer(redstone_enchanting.initialize_player)
minetest.register_on_player_receive_fields(mcl_enchanting.handle_formspec_fields) minetest.register_on_player_receive_fields(redstone_enchanting.handle_formspec_fields)
minetest.register_allow_player_inventory_action(mcl_enchanting.allow_inventory_action) minetest.register_allow_player_inventory_action(redstone_enchanting.allow_inventory_action)
minetest.register_on_player_inventory_action(mcl_enchanting.on_inventory_action) minetest.register_on_player_inventory_action(redstone_enchanting.on_inventory_action)
tt.register_priority_snippet(mcl_enchanting.enchantments_snippet) tt.register_priority_snippet(redstone_enchanting.enchantments_snippet)

View file

@ -1,5 +1,5 @@
name = mcl_enchanting name = redstone_enchanting
description = Enchanting for MineClone2 description = Enchanting, using Redstone for MineClone2
depends = tt, walkover, mcl_sounds, mcl_colors, mcl_experience, mcl_util depends = tt, walkover, mcl_sounds, mcl_colors, mcl_experience, mcl_util, mesecons
optional_depends = screwdriver optional_depends = screwdriver
author = Fleckenstein author = haui111

Binary file not shown.

After

Width:  |  Height:  |  Size: 366 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 142 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 275 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 502 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 197 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 583 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 70 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 108 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 103 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 87 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 81 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 91 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 106 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 104 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 105 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 102 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 201 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 144 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 158 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 162 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 96 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 485 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 471 B

Binary file not shown.

After

Width:  |  Height:  |  Size: 199 B