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
-- 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},

View file

@ -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)

View file

@ -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

View file

@ -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)

View file

@ -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

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