change every mention of lapis and mcl to redstone and add textures to try and solve error messages
|
@ -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},
|
||||||
|
|
338
engine.lua
|
@ -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)
|
||||||
|
|
|
@ -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
|
||||||
|
|
98
init.lua
|
@ -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)
|
||||||
|
|
8
mod.conf
|
@ -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
|
||||||
|
|
BIN
textures/enchanting_table_book.png
Normal file
After Width: | Height: | Size: 366 B |
BIN
textures/redstone_enchanting_book_closed.png
Normal file
After Width: | Height: | Size: 142 B |
BIN
textures/redstone_enchanting_book_enchanted.png
Normal file
After Width: | Height: | Size: 275 B |
BIN
textures/redstone_enchanting_book_entity.png
Normal file
After Width: | Height: | Size: 502 B |
BIN
textures/redstone_enchanting_book_open.png
Normal file
After Width: | Height: | Size: 197 B |
BIN
textures/redstone_enchanting_button.png
Normal file
After Width: | Height: | Size: 70 B |
BIN
textures/redstone_enchanting_button_background.png
Normal file
After Width: | Height: | Size: 583 B |
BIN
textures/redstone_enchanting_button_hovered.png
Normal file
After Width: | Height: | Size: 70 B |
BIN
textures/redstone_enchanting_button_off.png
Normal file
After Width: | Height: | Size: 70 B |
BIN
textures/redstone_enchanting_glyph_1.png
Normal file
After Width: | Height: | Size: 108 B |
BIN
textures/redstone_enchanting_glyph_10.png
Normal file
After Width: | Height: | Size: 104 B |
BIN
textures/redstone_enchanting_glyph_11.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
textures/redstone_enchanting_glyph_12.png
Normal file
After Width: | Height: | Size: 103 B |
BIN
textures/redstone_enchanting_glyph_13.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/redstone_enchanting_glyph_14.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/redstone_enchanting_glyph_15.png
Normal file
After Width: | Height: | Size: 87 B |
BIN
textures/redstone_enchanting_glyph_16.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
textures/redstone_enchanting_glyph_17.png
Normal file
After Width: | Height: | Size: 81 B |
BIN
textures/redstone_enchanting_glyph_18.png
Normal file
After Width: | Height: | Size: 91 B |
BIN
textures/redstone_enchanting_glyph_2.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/redstone_enchanting_glyph_3.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/redstone_enchanting_glyph_4.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
textures/redstone_enchanting_glyph_5.png
Normal file
After Width: | Height: | Size: 104 B |
BIN
textures/redstone_enchanting_glyph_6.png
Normal file
After Width: | Height: | Size: 106 B |
BIN
textures/redstone_enchanting_glyph_7.png
Normal file
After Width: | Height: | Size: 104 B |
BIN
textures/redstone_enchanting_glyph_8.png
Normal file
After Width: | Height: | Size: 105 B |
BIN
textures/redstone_enchanting_glyph_9.png
Normal file
After Width: | Height: | Size: 102 B |
BIN
textures/redstone_enchanting_lapis_background.png
Normal file
After Width: | Height: | Size: 201 B |
BIN
textures/redstone_enchanting_number_1.png
Normal file
After Width: | Height: | Size: 144 B |
BIN
textures/redstone_enchanting_number_1_off.png
Normal file
After Width: | Height: | Size: 96 B |
BIN
textures/redstone_enchanting_number_2.png
Normal file
After Width: | Height: | Size: 158 B |
BIN
textures/redstone_enchanting_number_2_off.png
Normal file
After Width: | Height: | Size: 96 B |
BIN
textures/redstone_enchanting_number_3.png
Normal file
After Width: | Height: | Size: 162 B |
BIN
textures/redstone_enchanting_number_3_off.png
Normal file
After Width: | Height: | Size: 96 B |
BIN
textures/redstone_enchanting_table_bottom.png
Normal file
After Width: | Height: | Size: 485 B |
BIN
textures/redstone_enchanting_table_side.png
Normal file
After Width: | Height: | Size: 471 B |
BIN
textures/redstone_enchanting_table_top.png
Normal file
After Width: | Height: | Size: 199 B |