Done except energy values
This commit is contained in:
parent
8e80a15c10
commit
7204d4956f
|
@ -29,6 +29,7 @@ read_globals = {
|
|||
"mcl_particles",
|
||||
"screwdriver",
|
||||
"mcl_crafting_table",
|
||||
"mcl_enchantments",
|
||||
|
||||
"Raycast",
|
||||
"Settings",
|
||||
|
|
31
README.md
31
README.md
|
@ -40,33 +40,37 @@ If you have a suggestion or notice a bug, visit the [GitHub issues page](https:/
|
|||
|
||||
<details><summary><h1>Changelog:</h1></summary>
|
||||
|
||||
### 5.0 (the new most insteresting release so far)
|
||||
#### You MUST break and replace any existing Deconstructors when updating from any previous version.
|
||||
### 5.0 (the most insteresting release so far)
|
||||
#### You MUST break and replace any existing Constructors, Deconstructors, and Energy Collectors when updating from any previous version. Nothing will be lost.
|
||||
* New features:
|
||||
* Added a [wiki](https://github.com/ThePython10110/ExchangeClone/wiki)! This is where you can find more complete information on pretty much everything.
|
||||
* Because the wiki exists, I won't be including anywhere near as many details about how features work in the changelog.
|
||||
* Added the Transmutation Table(t): Much better than the constructor/deconstructor.
|
||||
* Alchemical Tome: Instantly teaches every item with an energy value to the Transmutation Table(t).
|
||||
* Dark/Red Matter Furnaces: Can be powered by Energy Collectors, much faster, and sometimes double ores.
|
||||
* Personal Energy Link: Allows you to use hoppers to get items into/out of your Personal Energy (MineClone)
|
||||
* Upgraded Energy Collectors: Now MK1-MK5. They use personal energy unless they have an orb.
|
||||
* The ability to upgrade dark/red matter tools to give them fortune, looting, fire aspect, and silk touch
|
||||
* The ability to upgrade dark/red matter armor to give it thorns and frost walker
|
||||
* Mind, Life, Body, and Soul Stones
|
||||
* Upgraded Energy Collectors: Now MK1-MK5, each giving more energy per second. They now use personal energy by default.
|
||||
* Upgrades (MCL only)
|
||||
* Upgrades can give dark/red matter tools fortune, looting, fire aspect, and silk touch (note: abilities ignore enchantments)
|
||||
* Upgrades can give dark/red matter armor thorns and frost walker
|
||||
* Mod developers can now set their own energy values by setting `exchangeclone_custom_energy` in the item/node definition.
|
||||
* Changes
|
||||
* The changelog now has the most recent updates first, to make things easier to find.
|
||||
* Energy for Dark/Red Matter tool abilities (as well as the Transmutation Table) is no longer stored in an orb, but inside the player.
|
||||
* The amount of energy you currently have stored is visible in the bottom right of the screen.
|
||||
* Because of this, the PESA is now useless and deprecated. It will be removed after a few releases (so probably a couple months at least). Remove any Exchange Orbs from your personal storage.
|
||||
* Energy for Dark/Red Matter tool abilities (as well as the Transmutation Table) is no longer stored in an orb, but inside the player (called "personal energy").
|
||||
* The amount of energy you currently have stored is visible in the bottom right of the screen.
|
||||
* Because of this, the PESA is now useless and deprecated. It will be removed after a few releases (so probably a couple months at least). Remove any Exchange Orbs from your personal storage.
|
||||
* Energy Collectors, Deconstructors, and Constructors now send their energy to the placer's personal energy when they do not contain an orb.
|
||||
* A lot of items (including DM/RM tools and armor) will not burn in lava in MineClone2.
|
||||
* Energy Collectors now send their energy to the placer's personal energy by default.
|
||||
* Deconstructors and Constructors now work with hoppers and don't have that weird lag thing when deconstructing
|
||||
* The lag was caused by the fact that Enchant97 copied used node timers. Now they don't.
|
||||
* **You MUST break and replace any existing Constructors, Deconstructors, and Energy Collectors when updating from any previous version. Nothing will be lost.**
|
||||
* Red Matter Armor now sets your maximum health to 200 instead of 2000
|
||||
* Exchange Orbs are now 18x better as fuel than they used to be
|
||||
* DM/RM Shovels will now only create paths on blocks below air.
|
||||
* Bugfixes:
|
||||
* I must have skipped a row while going through MineClone's mod list. Several mods starting with `mcl_b` or `mcl_c` have been added to the whitelist.
|
||||
* Fixed right-clicking with an orb not showing charge
|
||||
* Fixed unnecessary chat logging when deconstructing/constructing
|
||||
* The names for Dark and Red Matter Armor now are correct in MineClone2
|
||||
* Removed unnecessary tool repair recipes from dark/red matter tools/armor
|
||||
* Fixed a couple of armor texture issues in Minetest Game (though it still looks like diamond armor; 3D Armor doesn't support texture modifiers)
|
||||
* The Red Katar is now actually craftable in Minetest Game (I just forgot that shears were only in MCL2)
|
||||
|
@ -123,7 +127,7 @@ If you have a suggestion or notice a bug, visit the [GitHub issues page](https:/
|
|||
* Fixed crash based on PESA inventory movement
|
||||
* Added `mcl_blackstone` to the mod whitelist
|
||||
|
||||
### 3.0 (the most interesting release so far)
|
||||
### 3.0 (the formerly most interesting release)
|
||||
* New features:
|
||||
* Added Alchemical Coal, Mobius Fuel, Aeternalis Fuel, Dark Matter (blocks and orbs), and Red Matter (blocks and orbs)
|
||||
* Added PESA (Personal Energy Storage Accessor)
|
||||
|
@ -213,7 +217,8 @@ If you have a suggestion or notice a bug, visit the [GitHub issues page](https:/
|
|||
</details>
|
||||
|
||||
### Features that I plan on adding eventually:
|
||||
* Something that places nodes in a square (with varying range), possibly with a low energy cost
|
||||
* Mind, Life, Body, and Soul Stones
|
||||
* Mercurial Eye (?)
|
||||
* Ability to smelt with the Philosopher's Stone and coal/charcoal (maybe?)
|
||||
* Exchangeclone guidebook (maybe depend on doc mod?)
|
||||
* As soon as Minetest 5.8 comes out, better textures for armor...
|
||||
|
|
24
armor.lua
24
armor.lua
|
@ -111,7 +111,7 @@ if exchangeclone.mcl then
|
|||
feet = get_armor_texture("boots","dark"),
|
||||
},
|
||||
toughness = 4,
|
||||
groups = {dark_matter_armor = 1, fire_immune = 1},
|
||||
groups = {dark_matter_armor = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
craft_material = "exchangeclone:dark_matter",
|
||||
cook_material = "mcl_core:diamondblock",
|
||||
})
|
||||
|
@ -139,7 +139,7 @@ if exchangeclone.mcl then
|
|||
feet = get_armor_texture("boots","red"),
|
||||
},
|
||||
toughness = 5,
|
||||
groups = {red_matter_armor = 1, disable_repair = 1, fire_immune = 1},
|
||||
groups = {red_matter_armor = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
craft_material = "exchangeclone:red_matter",
|
||||
cook_material = "exchangeclone:dark_matter",
|
||||
on_equip_callbacks = {
|
||||
|
@ -193,7 +193,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_helmet","dark"),
|
||||
preview = get_armor_texture("helmet","dark", true),
|
||||
armor_groups = {fleshy = 13},
|
||||
groups = {["armor_head"] = 1, ["dark_matter_armor"] = 1, armor_heal = 5, armor_fire = 1, armor_water = 1, disable_repair = 1,}
|
||||
groups = {["armor_head"] = 1, ["dark_matter_armor"] = 1, armor_heal = 5, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:chestplate_dark_matter", {
|
||||
description = "Dark Matter Chestplate",
|
||||
|
@ -201,7 +201,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_chestplate","dark"),
|
||||
preview = get_armor_texture("chestplate","dark", true),
|
||||
armor_groups = {fleshy = 21},
|
||||
groups = {["armor_torso"] = 1, ["dark_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_torso"] = 1, ["dark_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:leggings_dark_matter", {
|
||||
description = "Dark Matter Leggings",
|
||||
|
@ -209,7 +209,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_leggings","dark"),
|
||||
preview = get_armor_texture("leggings","dark", true),
|
||||
armor_groups = {fleshy = 18},
|
||||
groups = {["armor_legs"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_legs"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:boots_dark_matter", {
|
||||
description = "Dark Matter Boots",
|
||||
|
@ -217,7 +217,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_boots","dark"),
|
||||
preview = get_armor_texture("boots","dark", true),
|
||||
armor_groups = {fleshy = 10},
|
||||
groups = {["armor_feet"] = 1, ["dark_matter_armor"] = 1, armor_heal = 4, armor_fire = 1, armor_water = 1, armor_feather = 1, disable_repair = 1}
|
||||
groups = {["armor_feet"] = 1, ["dark_matter_armor"] = 1, armor_heal = 4, armor_fire = 1, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:shield_dark_matter", {
|
||||
description = "Dark Matter Shield",
|
||||
|
@ -225,7 +225,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_shield","dark"),
|
||||
preview = get_armor_texture("shield","dark", true),
|
||||
armor_groups = {fleshy = 18},
|
||||
groups = {["armor_shield"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_shield"] = 1, ["dark_matter_armor"] = 1, armor_heal = 7, armor_fire = 1, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:helmet_red_matter", {
|
||||
description = "Red Matter Helmet",
|
||||
|
@ -233,7 +233,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_helmet","red"),
|
||||
preview = get_armor_texture("helmet","red", true),
|
||||
armor_groups = {fleshy = 15},
|
||||
groups = {["armor_head"] = 1, ["red_matter_armor"] = 1, armor_heal = 10, armor_fire = 2, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_head"] = 1, ["red_matter_armor"] = 1, armor_heal = 10, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:chestplate_red_matter", {
|
||||
description = "Red Matter Chestplate",
|
||||
|
@ -241,7 +241,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_chestplate","red"),
|
||||
preview = get_armor_texture("chestplate","red", true),
|
||||
armor_groups = {fleshy = 23},
|
||||
groups = {["armor_torso"] = 1, ["red_matter_armor"] = 1, armor_heal = 16, armor_fire = 2, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_torso"] = 1, ["red_matter_armor"] = 1, armor_heal = 16, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:leggings_red_matter", {
|
||||
description = "Red Matter Leggings",
|
||||
|
@ -249,7 +249,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_leggings","red"),
|
||||
preview = get_armor_texture("leggings","red", true),
|
||||
armor_groups = {fleshy = 20},
|
||||
groups = {["armor_legs"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1}
|
||||
groups = {["armor_legs"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:boots_red_matter", {
|
||||
description = "Red Matter Boots",
|
||||
|
@ -257,7 +257,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_boots","red"),
|
||||
preview = get_armor_texture("boots","red", true),
|
||||
armor_groups = {fleshy = 12},
|
||||
groups = {["armor_feet"] = 1, ["red_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1}
|
||||
groups = {["armor_feet"] = 1, ["red_matter_armor"] = 1, armor_heal = 8, armor_fire = 2, armor_water = 1, armor_feather = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_armor("exchangeclone:shield_red_matter", {
|
||||
description = "Red Matter Shield",
|
||||
|
@ -265,7 +265,7 @@ else
|
|||
inventory_image = get_armor_texture("inv_shield","red"),
|
||||
preview = get_armor_texture("shield","red", true),
|
||||
armor_groups = {fleshy = 20},
|
||||
groups = {["armor_shield"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, disable_repair = 1}
|
||||
groups = {["armor_shield"] = 1, ["red_matter_armor"] = 1, armor_heal = 14, armor_fire = 2, armor_water = 1, disable_repair = 1, exchangeclone_upgradable = 1}
|
||||
})
|
||||
armor:register_on_equip(function(player, index, stack)
|
||||
exchangeclone.check_armor_health(player)
|
||||
|
|
4
axes.lua
4
axes.lua
|
@ -68,7 +68,7 @@ minetest.register_tool("exchangeclone:dark_matter_axe", {
|
|||
description = "Dark Matter Axe",
|
||||
wield_image = "exchangeclone_dark_matter_axe.png",
|
||||
inventory_image = "exchangeclone_dark_matter_axe.png",
|
||||
groups = { tool=1, axe=1, dig_speed_class=7, enchantability=0, disable_repair = 1 },
|
||||
groups = { tool=1, axe=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -93,7 +93,7 @@ minetest.register_tool("exchangeclone:red_matter_axe", {
|
|||
description = "Red Matter Axe",
|
||||
wield_image = "exchangeclone_red_matter_axe.png",
|
||||
inventory_image = "exchangeclone_red_matter_axe.png",
|
||||
groups = { tool=1, axe=1, dig_speed_class=8, enchantability=0, disable_repair = 1 },
|
||||
groups = { tool=1, axe=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
|
|
@ -44,14 +44,16 @@ local function get_constructor_formspec()
|
|||
end
|
||||
end
|
||||
|
||||
minetest.register_alias("exchangeclone:element_constructor", "exchangeclone:constructor")
|
||||
|
||||
-- Register LBM to update constructors
|
||||
minetest.register_lbm({
|
||||
name = "exchangeclone:constructor_alert",
|
||||
nodenames = {"exchangeclone:constructor"},
|
||||
run_at_every_load = true,
|
||||
run_at_every_load = false,
|
||||
action = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[3,1]label[0,0;BREAK AND REPLACE]")
|
||||
meta:set_string("formspec", "size[3,1]label[0,0;Break and replace.\nNothing will be lost.]")
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -63,11 +65,19 @@ local function can_dig(pos, player)
|
|||
end
|
||||
|
||||
local function constructor_action(pos)
|
||||
local inv = minetest.get_meta(pos):get_inventory()
|
||||
local using_orb = true
|
||||
local player
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if inv:get_stack("fuel", 1):get_name() ~= "exchangeclone:exchange_orb" then
|
||||
using_orb = false
|
||||
player = minetest.get_player_by_name(meta:get_string("exchangeclone_placer"))
|
||||
if not (player and player ~= "") then return end
|
||||
end
|
||||
local src_stack = inv:get_stack("src", 1)
|
||||
local dst_stack = inv:get_stack("dst", 1)
|
||||
|
||||
if not inv:is_empty("fuel") and not inv:is_empty("src") then
|
||||
if not inv:is_empty("src") then
|
||||
-- make sure the stack at dst is same as the src (including enchantments)
|
||||
if not inv:is_empty("dst") then
|
||||
if src_stack:get_name() ~= dst_stack:get_name() then
|
||||
|
@ -88,13 +98,23 @@ local function constructor_action(pos)
|
|||
and result ~= "mcl_core:apple_gold_enchanted" then
|
||||
result = string.sub(src_stack:get_name(), 1, -11)
|
||||
end
|
||||
-- make sure orb has enough charge
|
||||
local orb_charge = exchangeclone.get_orb_energy(inv, "fuel", 1)
|
||||
-- make sure orb/player has enough energy
|
||||
local current_energy
|
||||
if using_orb then
|
||||
current_energy = exchangeclone.get_orb_energy(inv, "fuel", 1)
|
||||
else
|
||||
current_energy = exchangeclone.get_player_energy(player)
|
||||
end
|
||||
local energy_value = exchangeclone.get_item_energy(src_stack:get_name())
|
||||
if energy_value > 0 then
|
||||
local max_amount = math.min(src_stack:get_stack_max(), math.floor(orb_charge/energy_value))
|
||||
local max_amount = math.min(src_stack:get_stack_max(), math.floor(current_energy/energy_value))
|
||||
local added_amount = max_amount - inv:add_item("dst", ItemStack(result.." "..max_amount)):get_count()
|
||||
exchangeclone.set_orb_energy(inv, "fuel", 1, math.min(orb_charge, orb_charge - (energy_value * added_amount))) -- not sure if "math.min()" is necessary
|
||||
local result_energy = math.min(current_energy, current_energy - (energy_value * added_amount)) -- not sure if "math.min()" is necessary
|
||||
if using_orb then
|
||||
exchangeclone.set_orb_energy(inv, "fuel", 1, result_energy)
|
||||
else
|
||||
exchangeclone.set_player_energy(player, result_energy)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
@ -107,7 +127,6 @@ local function on_construct(pos)
|
|||
inv:set_size("dst", 1)
|
||||
meta:set_string("formspec", get_constructor_formspec())
|
||||
meta:set_string("infotext", "Constructor")
|
||||
constructor_action(pos)
|
||||
end
|
||||
|
||||
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
||||
|
@ -184,11 +203,17 @@ minetest.register_node("exchangeclone:constructor", {
|
|||
meta:from_table(meta2)
|
||||
end
|
||||
end,
|
||||
on_timer = constructor_action,
|
||||
after_place_node = function(pos, player, itemstack, pointed_thing)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("exchangeclone_placer", player:get_player_name())
|
||||
end,
|
||||
on_construct = on_construct,
|
||||
on_metadata_inventory_move = constructor_action,
|
||||
on_metadata_inventory_put = constructor_action,
|
||||
on_metadata_inventory_take = constructor_action,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
if listname == "fuel" then return end
|
||||
constructor_action(pos)
|
||||
end,
|
||||
on_blast = on_blast,
|
||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||
|
|
|
@ -35,14 +35,16 @@ local function get_deconstructor_formspec()
|
|||
end
|
||||
end
|
||||
|
||||
minetest.register_alias("exchangeclone:element_deconstructor", "exchangeclone:deconstructor")
|
||||
|
||||
-- Register LBM to update deconstructors
|
||||
minetest.register_lbm({
|
||||
name = "exchangeclone:deconstructor_alert",
|
||||
nodenames = {"exchangeclone:deconstructor"},
|
||||
run_at_every_load = true,
|
||||
run_at_every_load = false,
|
||||
action = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[3,1]label[0,0;BREAK AND REPLACE]")
|
||||
meta:set_string("formspec", "size[3,1]label[0,0;Break and replace.\nNothing will be lost.]")
|
||||
end,
|
||||
})
|
||||
|
||||
|
@ -54,9 +56,17 @@ local function can_dig(pos, player)
|
|||
end
|
||||
|
||||
local function deconstructor_action(pos)
|
||||
local limit = exchangeclone.orb_max
|
||||
local using_orb = true
|
||||
local player
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
if inv:get_stack("fuel", 1):get_name() ~= "exchangeclone:exchange_orb" then return end
|
||||
if inv:get_stack("fuel", 1):get_name() ~= "exchangeclone:exchange_orb" then
|
||||
limit = 2147483647
|
||||
using_orb = false
|
||||
player = minetest.get_player_by_name(meta:get_string("exchangeclone_placer"))
|
||||
if not (player and player ~= "") then return end
|
||||
end
|
||||
local stack = inv:get_stack("src", 1)
|
||||
local individual_energy_value = exchangeclone.get_item_energy(stack:get_name())
|
||||
if individual_energy_value <= 0 then return end
|
||||
|
@ -67,13 +77,22 @@ local function deconstructor_action(pos)
|
|||
if stack:get_name() == "exchangeclone:exchange_orb" then
|
||||
individual_energy_value = individual_energy_value + exchangeclone.get_orb_itemstack_energy(stack)
|
||||
end
|
||||
local orb_energy = exchangeclone.get_orb_energy(inv, "fuel", 1)
|
||||
local max_count = math.floor((exchangeclone.orb_max - orb_energy)/individual_energy_value)
|
||||
local current_energy
|
||||
if using_orb then
|
||||
current_energy = exchangeclone.get_orb_energy(inv, "fuel", 1)
|
||||
else
|
||||
current_energy = exchangeclone.get_player_energy(player)
|
||||
end
|
||||
local max_count = math.floor((limit - current_energy)/individual_energy_value)
|
||||
local add_count = math.min(max_count, stack:get_count())
|
||||
local energy_value = individual_energy_value * add_count
|
||||
local result = orb_energy + energy_value
|
||||
if result < 0 or result > exchangeclone.orb_max then return end
|
||||
exchangeclone.set_orb_energy(inv, "fuel", 1, result)
|
||||
local result = current_energy + energy_value
|
||||
if result < 0 or result > limit then return end
|
||||
if using_orb then
|
||||
exchangeclone.set_orb_energy(inv, "fuel", 1, result)
|
||||
else
|
||||
exchangeclone.set_player_energy(player, result)
|
||||
end
|
||||
stack:set_count(stack:get_count() - add_count)
|
||||
if stack:get_count() == 0 then stack = ItemStack("") end
|
||||
inv:set_stack("src", 1, stack)
|
||||
|
@ -162,11 +181,18 @@ minetest.register_node("exchangeclone:deconstructor", {
|
|||
meta:from_table(meta2)
|
||||
end
|
||||
end,
|
||||
after_place_node = function(pos, player, itemstack, pointed_thing)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("exchangeclone_placer", player:get_player_name())
|
||||
end,
|
||||
on_timer = deconstructor_action,
|
||||
on_construct = on_construct,
|
||||
on_metadata_inventory_move = deconstructor_action,
|
||||
on_metadata_inventory_put = deconstructor_action,
|
||||
on_metadata_inventory_take = deconstructor_action,
|
||||
on_metadata_inventory_take = function(pos, listname, index, stack, player)
|
||||
if listname == "fuel" then return end
|
||||
deconstructor_action(pos)
|
||||
end,
|
||||
on_blast = on_blast,
|
||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||
|
|
|
@ -26,6 +26,19 @@ local function get_energy_collector_formspec()
|
|||
return table.concat(formspec, "")
|
||||
end
|
||||
|
||||
minetest.register_alias("exchangeclone:energy_collector", "exchangeclone:energy_collector_mk1")
|
||||
|
||||
-- Register LBM to update deconstructors
|
||||
minetest.register_lbm({
|
||||
name = "exchangeclone:collector_alert",
|
||||
nodenames = {"exchangeclone:energy_collector_mk1"},
|
||||
run_at_every_load = false,
|
||||
action = function(pos, node)
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_string("formspec", "size[3,1]label[0,0;Break and replace.\nNothing will be lost.]")
|
||||
end,
|
||||
})
|
||||
|
||||
local check_positions = {
|
||||
{x=0,y=0,z=1},
|
||||
{x=0,y=0,z=-1},
|
||||
|
@ -35,13 +48,24 @@ local check_positions = {
|
|||
{x=-1,y=0,z=0},
|
||||
}
|
||||
|
||||
local function check_for_furnaces(pos, set_furnace)
|
||||
local function check_for_furnaces(pos, set_furnace, start)
|
||||
local found = false
|
||||
for _, check_pos in ipairs(check_positions) do
|
||||
local new_pos = vector.add(pos, check_pos)
|
||||
local node = minetest.get_node(new_pos)
|
||||
if minetest.get_item_group(node.name, "exchangeclone_furnace") > 0 then
|
||||
local furnace = minetest.get_item_group(node.name, "exchangeclone_furnace")
|
||||
if furnace > 0 then
|
||||
found = true
|
||||
if start then
|
||||
local timer = minetest.get_node_timer(new_pos)
|
||||
if not timer:is_started() then
|
||||
if furnace == 1 then -- Dark Matter
|
||||
timer:start(0.45)
|
||||
elseif furnace == 2 then -- Red Matter
|
||||
timer:start(0.16)
|
||||
end
|
||||
end
|
||||
end
|
||||
if set_furnace ~= nil then
|
||||
local meta = minetest.get_meta(new_pos)
|
||||
meta:set_int("using_collector", set_furnace)
|
||||
|
@ -72,9 +96,9 @@ local function on_timer(pos, elapsed)
|
|||
end
|
||||
|
||||
if minetest.get_natural_light(above) >= 14 then
|
||||
if check_for_furnaces(pos, 1) then
|
||||
if check_for_furnaces(pos, 1, true) then
|
||||
-- do nothing, energy is being used for the furnace.
|
||||
return
|
||||
return true
|
||||
end
|
||||
local amount = meta:get_int("collector_amount")
|
||||
if using_orb then
|
||||
|
@ -86,7 +110,7 @@ local function on_timer(pos, elapsed)
|
|||
end
|
||||
exchangeclone.set_orb_energy(inv, "main", 1, stored)
|
||||
else
|
||||
local placer = meta:get_string("collector_placer")
|
||||
local placer = meta:get_string("exchangeclone_placer")
|
||||
if placer and placer ~= "" then
|
||||
local player = minetest.get_player_by_name(placer)
|
||||
if player then
|
||||
|
@ -151,12 +175,10 @@ local function on_dig_node(pos, oldnode, oldmetadata, player)
|
|||
local meta2 = meta:to_table()
|
||||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"main"}) do
|
||||
local stack = inv:get_stack(listname, 1)
|
||||
if not stack:is_empty() then
|
||||
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||
minetest.add_item(p, stack)
|
||||
end
|
||||
local stack = inv:get_stack("main", 1)
|
||||
if not stack:is_empty() then
|
||||
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||
minetest.add_item(p, stack)
|
||||
end
|
||||
meta:from_table(meta2)
|
||||
end
|
||||
|
@ -198,7 +220,7 @@ function exchangeclone.register_energy_collector(itemstring, name, amount, modif
|
|||
local player_name = player:get_player_name()
|
||||
local meta = minetest.get_meta(pos)
|
||||
meta:set_int("collector_amount", amount)
|
||||
meta:set_string("collector_placer", player_name)
|
||||
meta:set_string("exchangeclone_placer", player_name)
|
||||
meta:set_string("infotext", name.."\nOwned by"..player_name)
|
||||
end,
|
||||
on_blast = on_blast,
|
||||
|
@ -206,7 +228,10 @@ function exchangeclone.register_energy_collector(itemstring, name, amount, modif
|
|||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||
})
|
||||
minetest.register_craft(recipe)
|
||||
minetest.register_craft({
|
||||
output = itemstring,
|
||||
recipe = recipe
|
||||
})
|
||||
end
|
||||
|
||||
--[[if minetest.get_modpath("pipeworks") then
|
||||
|
@ -248,47 +273,37 @@ if exchangeclone.mcl then
|
|||
chest = "mcl_chests:chest"
|
||||
end
|
||||
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector", "Energy Collector MK1", 4, "", {
|
||||
output = "exchangeclone:energy_collector",
|
||||
recipe = {
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector_mk1", "Energy Collector MK1", 4, "", {
|
||||
{glass, glass, glass},
|
||||
{"exchangeclone:exchange_orb", chest, "exchangeclone:exchange_orb"},
|
||||
{iron, iron, iron}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector_mk2", "Energy Collector MK2", 12, "^[multiply:#555555", {
|
||||
output = "exchangeclone:energy_collector_mk2",
|
||||
recipe = {
|
||||
{iron, iron, iron},
|
||||
{"exchangeclone:energy_collector", "exchangeclone:energy_collector", "exchangeclone:energy_collector"},
|
||||
{"exchangeclone:energy_collector_mk1", "exchangeclone:energy_collector_mk1", "exchangeclone:energy_collector_mk1"},
|
||||
{iron, iron, iron}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector_mk3", "Energy Collector MK3", 40, "^[multiply:#770000", {
|
||||
output = "exchangeclone:energy_collector_mk3",
|
||||
recipe = {
|
||||
{iron, iron, iron},
|
||||
{"exchangeclone:energy_collector_mk2", "exchangeclone:energy_collector_mk2", "exchangeclone:energy_collector_mk2"},
|
||||
{iron, iron, iron}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector_mk4", "Energy Collector MK4", 160, "^[multiply:#007700", {
|
||||
output = "exchangeclone:energy_collector_mk4",
|
||||
recipe = {
|
||||
{iron, iron, iron},
|
||||
{"exchangeclone:energy_collector_mk3", "exchangeclone:energy_collector_mk3", "exchangeclone:energy_collector_mk3"},
|
||||
{iron, iron, iron}
|
||||
}
|
||||
})
|
||||
)
|
||||
|
||||
exchangeclone.register_energy_collector("exchangeclone:energy_collector_mk5", "Energy Collector MK5", 640, "^[multiply:#000077", {
|
||||
output = "exchangeclone:energy_collector_mk5",
|
||||
recipe = {
|
||||
{iron, iron, iron},
|
||||
{"exchangeclone:energy_collector_mk4", "exchangeclone:energy_collector_mk4", "exchangeclone:energy_collector_mk4"},
|
||||
{iron, iron, iron}
|
||||
}
|
||||
})
|
||||
)
|
55
furnaces.lua
55
furnaces.lua
|
@ -45,8 +45,8 @@ local base_formspec =
|
|||
"size[10,8.75]"..
|
||||
"label[0,4;Inventory]"..
|
||||
exchangeclone.inventory_formspec(0,4.5)..
|
||||
"list[context;src;2.75,0.5;1,1]"..
|
||||
"list[context;fuel;2.75,2.5;1,1;]"..
|
||||
"list[context;src;2.9,0.5;1,1]"..
|
||||
"list[context;fuel;2.9,2.5;1,1;]"..
|
||||
"list[context;dst;5.75,1.5;1,1;]"..
|
||||
"listring[context;dst]"..
|
||||
"listring[current_player;main]"..
|
||||
|
@ -59,29 +59,43 @@ if exchangeclone.mcl then
|
|||
base_formspec = base_formspec..
|
||||
mcl_formspec.get_itemslot_bg(0,4.5,9,3)..
|
||||
mcl_formspec.get_itemslot_bg(0,7.74,9,1)..
|
||||
mcl_formspec.get_itemslot_bg(2.75,0.5,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(2.75,2.5,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(2.9,0.5,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(2.9,2.5,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(5.75,1.5,1,1)
|
||||
end
|
||||
|
||||
local function inactive_formspec(type)
|
||||
local num_columns = (type == "Dark" and 2) or 3
|
||||
return base_formspec..
|
||||
"list[context;src;0,1;"..tostring(num_columns)..",3;1]"..
|
||||
"label[2.75,0;"..type.." Matter Furnace]"..
|
||||
"image[2.75,1.5;1,1;default_furnace_fire_bg.png]"..
|
||||
local result = base_formspec..
|
||||
"list[context;src;0,0.5;"..tostring(num_columns)..",3;1]"..
|
||||
"list[context;dst;7,0.5;"..tostring(num_columns)..",3;1]"..
|
||||
"label[2.9,0;"..type.." Matter Furnace]"..
|
||||
"image[2.9,1.5;1,1;default_furnace_fire_bg.png]"..
|
||||
"image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[transformR270]"
|
||||
if exchangeclone.mcl then
|
||||
result = result..
|
||||
mcl_formspec.get_itemslot_bg(0,0.5,num_columns,3)..
|
||||
mcl_formspec.get_itemslot_bg(7,0.5,num_columns,3)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
local function active_formspec(fuel_percent, item_percent, type)
|
||||
local num_columns = (type == "Dark" and 2) or 3
|
||||
return base_formspec..
|
||||
"image[2.75,1.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
|
||||
local result = base_formspec..
|
||||
"image[2.9,1.5;1,1;default_furnace_fire_bg.png^[lowpart:"..
|
||||
(100-fuel_percent)..":default_furnace_fire_fg.png]"..
|
||||
"list[context;src;0,1;"..tostring(num_columns)..",3;1]"..
|
||||
"list[context;src;0,0.5;"..tostring(num_columns)..",3;1]"..
|
||||
"list[context;dst;7,0.5;"..tostring(num_columns)..",3;1]"..
|
||||
"image[4.1,1.5;1.5,1;gui_furnace_arrow_bg.png^[lowpart:"..
|
||||
(item_percent)..":gui_furnace_arrow_fg.png^[transformR270]"..
|
||||
"label[2.75,0;"..type.." Matter Furnace]"
|
||||
"label[2.9,0;"..type.." Matter Furnace]"
|
||||
if exchangeclone.mcl then
|
||||
result = result..
|
||||
mcl_formspec.get_itemslot_bg(0,0.5,num_columns,3)..
|
||||
mcl_formspec.get_itemslot_bg(7,0.5,num_columns,3)
|
||||
end
|
||||
return result
|
||||
end
|
||||
|
||||
local receive_fields = function(pos, formname, fields, sender)
|
||||
|
@ -277,12 +291,9 @@ local function check_srclist(pos)
|
|||
return "not empty"
|
||||
end
|
||||
local size = inv:get_size("src")
|
||||
minetest.log(size)
|
||||
for i=2,size do
|
||||
local stack = inv:get_stack("src", i)
|
||||
minetest.log(dump(stack))
|
||||
if not stack:is_empty() then
|
||||
minetest.log("Setting stacks")
|
||||
inv:set_stack("src", 1, stack)
|
||||
inv:set_stack("src", i, ItemStack(""))
|
||||
return true
|
||||
|
@ -493,7 +504,7 @@ local inactive_def = {
|
|||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"src", "dst", "fuel"}) do
|
||||
if listname == "src" then
|
||||
if listname == "src" or listname == "dst" then
|
||||
for i = 1,7 do
|
||||
local stack = inv:get_stack(listname, i)
|
||||
if not stack:is_empty() then
|
||||
|
@ -518,7 +529,7 @@ local inactive_def = {
|
|||
local inv = meta:get_inventory()
|
||||
inv:set_size("src", 7)
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("dst", 1)
|
||||
inv:set_size("dst", 7)
|
||||
end,
|
||||
on_destruct = function(pos)
|
||||
if exchangeclone.mcl then
|
||||
|
@ -583,7 +594,7 @@ local active_def = {
|
|||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"src", "dst", "fuel"}) do
|
||||
if listname == "src" then
|
||||
if listname == "src" or listname == "dst" then
|
||||
for i = 1,7 do
|
||||
local stack = inv:get_stack(listname, i)
|
||||
if not stack:is_empty() then
|
||||
|
@ -671,7 +682,7 @@ minetest.override_item("exchangeclone:red_matter_furnace", {
|
|||
local inv = meta:get_inventory()
|
||||
inv:set_size("src", 10)
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("dst", 1)
|
||||
inv:set_size("dst", 10)
|
||||
end,
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
|
@ -680,7 +691,7 @@ minetest.override_item("exchangeclone:red_matter_furnace", {
|
|||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"src", "dst", "fuel"}) do
|
||||
if listname == "src" then
|
||||
if listname == "src" or listname == "dst" then
|
||||
for i = 1,10 do
|
||||
local stack = inv:get_stack(listname, i)
|
||||
if not stack:is_empty() then
|
||||
|
@ -721,7 +732,7 @@ minetest.override_item("exchangeclone:red_matter_furnace_active", {
|
|||
local inv = meta:get_inventory()
|
||||
inv:set_size("src", 10)
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("dst", 1)
|
||||
inv:set_size("dst", 10)
|
||||
end,
|
||||
|
||||
after_dig_node = function(pos, oldnode, oldmetadata, digger)
|
||||
|
@ -730,7 +741,7 @@ minetest.override_item("exchangeclone:red_matter_furnace_active", {
|
|||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"src", "dst", "fuel"}) do
|
||||
if listname == "src" then
|
||||
if listname == "src" or listname == "dst" then
|
||||
for i = 1,10 do
|
||||
local stack = inv:get_stack(listname, i)
|
||||
if not stack:is_empty() then
|
||||
|
|
|
@ -72,7 +72,7 @@ minetest.register_tool("exchangeclone:dark_matter_hammer", {
|
|||
description = "Dark Matter Hammer",
|
||||
wield_image = "exchangeclone_dark_matter_hammer.png",
|
||||
inventory_image = "exchangeclone_dark_matter_hammer.png",
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, dark_matter_hammer = 1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, dark_matter_hammer = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -97,7 +97,7 @@ minetest.register_tool("exchangeclone:dark_matter_hammer_3x3", {
|
|||
description = "Dark Matter Hammer",
|
||||
wield_image = "exchangeclone_dark_matter_hammer.png",
|
||||
inventory_image = "exchangeclone_dark_matter_hammer.png",
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, dark_matter_hammer = 1, not_in_creative_inventory = 1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, dark_matter_hammer = 1, not_in_creative_inventory = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -122,7 +122,7 @@ minetest.register_tool("exchangeclone:red_matter_hammer", {
|
|||
description = "Red Matter Hammer",
|
||||
wield_image = "exchangeclone_red_matter_hammer.png",
|
||||
inventory_image = "exchangeclone_red_matter_hammer.png",
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, red_matter_hammer = 1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, red_matter_hammer = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -147,7 +147,7 @@ minetest.register_tool("exchangeclone:red_matter_hammer_3x3", {
|
|||
description = "Red Matter Hammer",
|
||||
wield_image = "exchangeclone_red_matter_hammer.png",
|
||||
inventory_image = "exchangeclone_red_matter_hammer.png",
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, red_matter_hammer = 1, not_in_creative_inventory = 1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, hammer=1, dig_speed_class=7, enchantability=0, red_matter_hammer = 1, not_in_creative_inventory = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
|
4
hoes.lua
4
hoes.lua
|
@ -115,7 +115,7 @@ local hoe_def = {
|
|||
wield_scale = exchangeclone.wield_scale,
|
||||
on_place = hoe_on_place,
|
||||
on_secondary_use = hoe_on_place,
|
||||
groups = { tool=1, hoe=1, enchantability=0, dark_matter_hoe = 1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, hoe=1, enchantability=0, dark_matter_hoe = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 0.25,
|
||||
damage_groups = { fleshy = 7, },
|
||||
|
@ -142,7 +142,7 @@ minetest.register_tool("exchangeclone:dark_matter_hoe_3x3", table.copy(hoe_3x3_d
|
|||
hoe_def.description = "Red Matter Hoe"
|
||||
hoe_def.wield_image = "exchangeclone_red_matter_hoe.png"
|
||||
hoe_def.inventory_image = "exchangeclone_red_matter_hoe.png"
|
||||
hoe_def.groups = { tool=1, hoe=1, enchantability=0, red_matter_hoe = 1, disable_repair = 1, fire_immune = 1 }
|
||||
hoe_def.groups = { tool=1, hoe=1, enchantability=0, red_matter_hoe = 1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1}
|
||||
hoe_def.tool_capabilities = {
|
||||
full_punch_interval = 0.25,
|
||||
damage_groups = { fleshy = 8, },
|
||||
|
|
5
init.lua
5
init.lua
|
@ -25,11 +25,11 @@ dofile(modpath.."/craftitems.lua")
|
|||
if exchangeclone.mcl or minetest.get_modpath("3d_armor") then
|
||||
dofile(modpath.."/armor.lua")
|
||||
end
|
||||
dofile(modpath.."/multidig.lua")
|
||||
if exchangeclone.mcl then
|
||||
mcl_item_id.set_mod_namespace("exchangeclone")
|
||||
dofile(modpath.."/shears.lua")
|
||||
end
|
||||
dofile(modpath.."/multidig.lua")
|
||||
dofile(modpath.."/swords.lua")
|
||||
dofile(modpath.."/axes.lua")
|
||||
dofile(modpath.."/hoes.lua")
|
||||
|
@ -37,6 +37,9 @@ dofile(modpath.."/pickaxes.lua")
|
|||
dofile(modpath.."/hammers.lua")
|
||||
dofile(modpath.."/shovels.lua")
|
||||
dofile(modpath.."/red_matter_multitools.lua")
|
||||
if exchangeclone.mcl then
|
||||
dofile(modpath.."/tool_upgrades.lua")
|
||||
end
|
||||
dofile(modpath.."/philosophers_stone.lua")
|
||||
dofile(modpath.."/pesa.lua")
|
||||
dofile(modpath.."/transmutation_table.lua")
|
||||
|
|
|
@ -349,8 +349,6 @@ local longdesc = "A mysterious device discovered by alchemists millenia ago.
|
|||
"It has the ability to transmute nearby nodes into other nodes. The range can be increased or decreased from 0 to 4 by (shift-)aux1-right-clicking.\n"..
|
||||
"Transmute nodes by (shift-)right-clicking (holding shift causes a few differences in transmutation). They are changed in a cube centered on "..
|
||||
"the node directly below you, with a radius equal to the range.\n"..
|
||||
"The ancient tome (entitled the \"Tekkit Wiki\") vaguely mentioned a \"cooldown\" when used to transmute large areas, "..
|
||||
"but ThePython was far to lazy to implement such a thing (maybe just have the charge level/radius reset every time?).\n\n"..
|
||||
"The Philosopher's Stone is also useful in converting various resources, such as turning coal into iron, or gold into "..item1..".\n"..
|
||||
"See the crafting guide for recipes. The Philosopher's Stone is NEVER used up in crafting recipes (if it is, it's a bug). The transmutation "..
|
||||
"range is reset when used in a crafting recipe."
|
||||
|
@ -478,7 +476,7 @@ minetest.register_on_craft(function(itemstack, player, old_craft_grid, craft_inv
|
|||
end) --]]
|
||||
|
||||
minetest.register_tool("exchangeclone:philosophers_stone", {
|
||||
description = "Philosopher's Stone",
|
||||
description = "Philosopher's Stone\nAlways returned when crafting",
|
||||
inventory_image = "exchangeclone_philosophers_stone.png",
|
||||
wield_image = "exchangeclone_philosophers_stone.png",
|
||||
_tt_help = tt_help,
|
||||
|
|
14
pickaxes.lua
14
pickaxes.lua
|
@ -81,9 +81,15 @@ local function pickaxe_on_use(itemstack, player, pointed_thing)
|
|||
end
|
||||
|
||||
for name, def in pairs(minetest.registered_nodes) do
|
||||
if name:find("_ore") or name:find("stone_with") or name:find("deepslate_with")
|
||||
or name:find("diorite_with") or name:find("andesite_with") or name:find("granite_with")
|
||||
or name:find("tuff_with") or (name == "mcl_blackstone:nether_gold") or (name == "mcl_nether:ancient_debris") then
|
||||
if name:find("_ore")
|
||||
or name:find("stone_with")
|
||||
or name:find("deepslate_with")
|
||||
or name:find("diorite_with")
|
||||
or name:find("andesite_with")
|
||||
or name:find("granite_with")
|
||||
or name:find("tuff_with")
|
||||
or (name == "mcl_blackstone:nether_gold")
|
||||
or (name == "mcl_nether:ancient_debris") then
|
||||
local groups = table.copy(def.groups)
|
||||
groups.exchangeclone_ore = 1
|
||||
minetest.override_item(name, {groups = groups})
|
||||
|
@ -95,7 +101,7 @@ local pick_def = {
|
|||
wield_image = "exchangeclone_dark_matter_pickaxe.png",
|
||||
inventory_image = "exchangeclone_dark_matter_pickaxe.png",
|
||||
exchangeclone_pick_mode = "1x1",
|
||||
groups = { tool=1, pickaxe=1, dig_speed_class=7, enchantability=0, dark_matter_pickaxe=1, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, pickaxe=1, dig_speed_class=7, enchantability=0, dark_matter_pickaxe=1, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
|
|
@ -69,7 +69,7 @@ local katar_def = {
|
|||
inventory_image = "exchangeclone_red_katar.png",
|
||||
on_secondary_use = katar_on_use,
|
||||
on_place = katar_on_use,
|
||||
groups = { tool=1, red_katar = 1, sword = 1, axe=1, hoe = 1, shears = 1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, red_katar = 1, sword = 1, axe=1, hoe = 1, shears = 1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 0.3,
|
||||
|
@ -232,7 +232,7 @@ local morningstar_def = {
|
|||
on_secondary_use = morningstar_on_use,
|
||||
exchangeclone_pick_mode = "1x1",
|
||||
on_place = morningstar_on_use,
|
||||
groups = { tool=1, red_morningstar = 1, shovel = 1, hammer=1, pickaxe = 1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, red_morningstar = 1, shovel = 1, hammer=1, pickaxe = 1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 0.3,
|
||||
|
|
|
@ -75,7 +75,7 @@ minetest.register_tool("exchangeclone:dark_matter_shears", {
|
|||
wield_image = "exchangeclone_dark_matter_shears.png",
|
||||
inventory_image = "exchangeclone_dark_matter_shears.png",
|
||||
stack_max = 1,
|
||||
groups = { tool=1, shears=1, dig_speed_class=7, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, shears=1, dig_speed_class=7, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 0.4,
|
||||
max_drop_level=1,
|
||||
|
@ -97,7 +97,7 @@ minetest.register_tool("exchangeclone:red_matter_shears", {
|
|||
wield_image = "exchangeclone_red_matter_shears.png",
|
||||
inventory_image = "exchangeclone_red_matter_shears.png",
|
||||
stack_max = 1,
|
||||
groups = { tool=1, shears=1, dig_speed_class=8, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, shears=1, dig_speed_class=8, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
tool_capabilities = {
|
||||
full_punch_interval = 0.3,
|
||||
max_drop_level=1,
|
||||
|
|
|
@ -77,7 +77,7 @@ minetest.register_tool("exchangeclone:dark_matter_shovel", {
|
|||
description = "Dark Matter Shovel",
|
||||
wield_image = "exchangeclone_dark_matter_shovel.png",
|
||||
inventory_image = "exchangeclone_dark_matter_shovel.png",
|
||||
groups = { tool=1, shovel=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, shovel=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -102,7 +102,7 @@ minetest.register_tool("exchangeclone:red_matter_shovel", {
|
|||
description = "Red Matter Shovel",
|
||||
wield_image = "exchangeclone_red_matter_shovel.png",
|
||||
inventory_image = "exchangeclone_red_matter_shovel.png",
|
||||
groups = { tool=1, shovel=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, shovel=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
|
|
@ -151,7 +151,7 @@ end
|
|||
|
||||
local red_matter_sword_action = function(itemstack, player, pointed_thing)
|
||||
local damage_all = itemstack:get_meta():get_int("exchangeclone_damage_all")
|
||||
if not damage_all == 0 then damage_all = 1 end
|
||||
if damage_all ~= 0 then damage_all = 1 end
|
||||
|
||||
if player:get_player_control().sneak then
|
||||
if damage_all == 0 then
|
||||
|
@ -173,7 +173,7 @@ minetest.register_tool("exchangeclone:dark_matter_sword", {
|
|||
description = "Dark Matter Sword",
|
||||
wield_image = "exchangeclone_dark_matter_sword.png",
|
||||
inventory_image = "exchangeclone_dark_matter_sword.png",
|
||||
groups = { tool=1, sword=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, sword=1, dig_speed_class=7, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
@ -198,7 +198,7 @@ minetest.register_tool("exchangeclone:red_matter_sword", {
|
|||
description = "Red Matter Sword",
|
||||
wield_image = "exchangeclone_red_matter_sword.png",
|
||||
inventory_image = "exchangeclone_red_matter_sword.png",
|
||||
groups = { tool=1, sword=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1 },
|
||||
groups = { tool=1, sword=1, dig_speed_class=8, enchantability=0, disable_repair = 1, fire_immune = 1, exchangeclone_upgradable = 1},
|
||||
wield_scale = exchangeclone.wield_scale,
|
||||
tool_capabilities = {
|
||||
-- 1/1.2
|
||||
|
|
Binary file not shown.
After Width: | Height: | Size: 666 B |
Binary file not shown.
After Width: | Height: | Size: 689 B |
Binary file not shown.
After Width: | Height: | Size: 645 B |
Binary file not shown.
After Width: | Height: | Size: 767 B |
|
@ -0,0 +1,532 @@
|
|||
local width = (exchangeclone.mcl and 9) or 8
|
||||
|
||||
local upgrader_formspec =
|
||||
"size["..tostring(width)..", 7]"..
|
||||
"label[0.5,0.5;Upgrader]"..
|
||||
"label["..tostring(width/3-0.5)..",0.5;Upgrade]"..
|
||||
"list[context;fuel;"..tostring(width/3-0.5)..",1;1,1]"..
|
||||
"label["..tostring(width/2-0.5)..",0.5;Tool/Armor]"..
|
||||
"list[context;src;"..tostring(width/2-0.5)..",1;1,1]"..
|
||||
"label["..tostring(2*width/3-0.5)..",0.5;Output]"..
|
||||
"list[context;dst;"..tostring(2*width/3-0.5)..",1;1,1]"..
|
||||
exchangeclone.inventory_formspec(0,2.75)..
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;src]"..
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;fuel]"..
|
||||
"listring[current_player;main]"..
|
||||
"listring[context;dst]"..
|
||||
"listring[current_player;main]"
|
||||
|
||||
if exchangeclone.mcl then
|
||||
upgrader_formspec = upgrader_formspec..
|
||||
mcl_formspec.get_itemslot_bg(width/3-0.5,1,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(width/2-0.5,1,1,1)..
|
||||
mcl_formspec.get_itemslot_bg(2*width/3-0.5,1,1,1)
|
||||
end
|
||||
|
||||
function exchangeclone.enchant(itemstack, enchantment, level)
|
||||
local enchantments = mcl_enchanting.get_enchantments(itemstack) or {}
|
||||
if enchantments[enchantment] and enchantments[enchantment] == level then return false end
|
||||
enchantments[enchantment] = level
|
||||
mcl_enchanting.set_enchantments(itemstack, enchantments)
|
||||
return itemstack
|
||||
end
|
||||
|
||||
function exchangeclone.register_upgrade(itemstring, name, modifier, recipe, enchantment, level, upgradable_items)
|
||||
minetest.register_craftitem(itemstring, {
|
||||
description = name,
|
||||
wield_image = "exchangeclone_upgrade.png"..modifier,
|
||||
inventory_image = "exchangeclone_upgrade.png"..modifier,
|
||||
groups = {exchangeclone_upgrade = 1},
|
||||
enchantment = enchantment,
|
||||
level = level,
|
||||
upgradable_items = upgradable_items
|
||||
})
|
||||
minetest.register_craft({
|
||||
output = itemstring,
|
||||
recipe = recipe,
|
||||
})
|
||||
end
|
||||
|
||||
minetest.register_craft({
|
||||
type = "fuel",
|
||||
recipe = "group:exchangeclone_upgrade",
|
||||
time = 10000
|
||||
})
|
||||
|
||||
local function upgrader_action(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local upgrade = inv:get_stack("fuel", 1)
|
||||
local tool = inv:get_stack("src", 1)
|
||||
local dst = inv:get_stack("dst", 1)
|
||||
if (not dst:is_empty())
|
||||
or upgrade:is_empty()
|
||||
or tool:is_empty() then
|
||||
return
|
||||
end
|
||||
local upgrade_def = upgrade:get_definition()
|
||||
if not upgrade_def.upgradable_items[tool:get_name()] then
|
||||
local found = false
|
||||
for item, _ in pairs(upgrade_def.upgradable_items) do
|
||||
if item:sub(1,6) == "group:" and (minetest.get_item_group(tool:get_name(), item:sub(7,-1)) > 0) then
|
||||
found = true
|
||||
break
|
||||
end
|
||||
end
|
||||
if not found then return end
|
||||
end
|
||||
|
||||
local new_tool = exchangeclone.enchant(tool, upgrade_def.enchantment, upgrade_def.level)
|
||||
if not new_tool then return end -- If the tool already has that enchantment
|
||||
|
||||
inv:set_stack("dst", 1, new_tool)
|
||||
|
||||
tool:set_count(tool:get_count() - 1)
|
||||
if tool:get_count() == 0 then tool = ItemStack("") end
|
||||
inv:set_stack("src", 1, tool)
|
||||
|
||||
upgrade:set_count(upgrade:get_count() - 1)
|
||||
if upgrade:get_count() == 0 then upgrade = ItemStack("") end
|
||||
inv:set_stack("fuel", 1, upgrade)
|
||||
end
|
||||
|
||||
|
||||
local function allow_metadata_inventory_put(pos, listname, index, stack, player)
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
if listname == "fuel" then
|
||||
if minetest.get_item_group(stack:get_name(), "exchangeclone_upgrade") > 0 then
|
||||
return stack:get_count()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif listname == "src" then
|
||||
if minetest.get_item_group(stack:get_name(), "exchangeclone_upgradable") > 0 then
|
||||
return stack:get_count()
|
||||
else
|
||||
return 0
|
||||
end
|
||||
elseif listname == "dst" then
|
||||
return 0
|
||||
end
|
||||
end
|
||||
|
||||
local function allow_metadata_inventory_move(pos, from_list, from_index, to_list, to_index, count, player)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
local stack = inv:get_stack(from_list, from_index)
|
||||
return allow_metadata_inventory_put(pos, to_list, to_index, stack, player)
|
||||
end
|
||||
|
||||
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
|
||||
if minetest.is_protected(pos, player:get_player_name()) then
|
||||
return 0
|
||||
end
|
||||
return stack:get_count()
|
||||
end
|
||||
|
||||
local after_dig_node = function(pos, oldnode, oldmetadata, player)
|
||||
if exchangeclone.mcl then
|
||||
local meta = minetest.get_meta(pos)
|
||||
local meta2 = meta:to_table()
|
||||
meta:from_table(oldmetadata)
|
||||
local inv = meta:get_inventory()
|
||||
for _, listname in ipairs({"fuel", "dst", "src"}) do
|
||||
local stack = inv:get_stack(listname, 1)
|
||||
if not stack:is_empty() then
|
||||
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||
minetest.add_item(p, stack)
|
||||
end
|
||||
end
|
||||
meta:from_table(meta2)
|
||||
local p = {x=pos.x+math.random(0, 10)/10-0.5, y=pos.y, z=pos.z+math.random(0, 10)/10-0.5}
|
||||
end
|
||||
end
|
||||
|
||||
local function on_blast(pos)
|
||||
local drops = {}
|
||||
exchangeclone.get_inventory_drops(pos, "src", drops)
|
||||
exchangeclone.get_inventory_drops(pos, "fuel", drops)
|
||||
exchangeclone.get_inventory_drops(pos, "dst", drops)
|
||||
minetest.remove_node(pos)
|
||||
return drops
|
||||
end
|
||||
|
||||
local function can_dig(pos, player)
|
||||
if exchangeclone.mcl then return true end
|
||||
local meta = minetest.get_meta(pos);
|
||||
local inv = meta:get_inventory()
|
||||
return inv:is_empty("src") and inv:is_empty("fuel") and inv:is_empty("dst")
|
||||
end
|
||||
|
||||
local function get_level(level)
|
||||
if exchangeclone.mcl then
|
||||
return nil
|
||||
else
|
||||
return level
|
||||
end
|
||||
end
|
||||
|
||||
minetest.register_node("exchangeclone:upgrader", {
|
||||
description = "Upgrader",
|
||||
tiles = {
|
||||
"exchangeclone_upgrader_top.png",
|
||||
"exchangeclone_upgrader_bottom.png",
|
||||
"exchangeclone_upgrader_side.png",
|
||||
},
|
||||
on_construct = function(pos)
|
||||
local meta = minetest.get_meta(pos)
|
||||
local inv = meta:get_inventory()
|
||||
inv:set_size("fuel", 1)
|
||||
inv:set_size("src", 1)
|
||||
inv:set_size("dst", 1)
|
||||
meta:set_string("infotext", "Upgrader")
|
||||
meta:set_string("formspec", upgrader_formspec)
|
||||
end,
|
||||
groups = {pickaxey=5, material_stone=1, cracky = 3, container = 4, level = get_level(4)}, --ridiculous workaround
|
||||
allow_metadata_inventory_move = allow_metadata_inventory_move,
|
||||
allow_metadata_inventory_take = allow_metadata_inventory_take,
|
||||
allow_metadata_inventory_put = allow_metadata_inventory_put,
|
||||
on_metadata_inventory_move = upgrader_action,
|
||||
on_metadata_inventory_take = upgrader_action,
|
||||
on_metadata_inventory_put = upgrader_action,
|
||||
on_blast = on_blast,
|
||||
after_dig_node = after_dig_node,
|
||||
can_dig = can_dig,
|
||||
_mcl_blast_resistance = 1500,
|
||||
_mcl_hardness = 75,
|
||||
})
|
||||
|
||||
|
||||
minetest.register_craftitem("exchangeclone:blank_upgrade", {
|
||||
description = "Blank Upgrade",
|
||||
wield_image = "exchangeclone_upgrade.png",
|
||||
inventory_image = "exchangeclone_upgrade.png",
|
||||
})
|
||||
|
||||
minetest.register_craft({
|
||||
output = "exchangeclone:blank_upgrade",
|
||||
recipe = {
|
||||
{"exchangeclone:dark_matter_block", "mcl_deepslate:tuff", "exchangeclone:dark_matter_block"}, -- Tuff has to be useful SOMEHOW...
|
||||
{"mcl_deepslate:tuff", "exchangeclone:philosophers_stone", "mcl_deepslate:tuff"},
|
||||
{"exchangeclone:red_matter_block", "mcl_deepslate:tuff", "exchangeclone:red_matter_block"}
|
||||
},
|
||||
replacements = {{"exchangeclone:philosophers_stone", "exchangeclone:philosophers_stone"}}
|
||||
})
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:fire_aspect_1_upgrade",
|
||||
"Fire Aspect I Upgrade",
|
||||
"^[multiply:#ff0000",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"},
|
||||
{"mcl_nether:magma", "exchangeclone:blank_upgrade", "mcl_nether:magma"},
|
||||
{"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"fire_aspect",
|
||||
1,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:red_katar"] = true,
|
||||
["exchangeclone:red_katar_3x3"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:fire_aspect_2_upgrade",
|
||||
"Fire Aspect II Upgrade",
|
||||
"^[multiply:#ffaa00",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"},
|
||||
{"mcl_nether:magma", "exchangeclone:fire_aspect_1_upgrade", "mcl_nether:magma"},
|
||||
{"exchangeclone:dark_matter", "mcl_nether:magma", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"fire_aspect",
|
||||
2,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:red_katar"] = true,
|
||||
["exchangeclone:red_katar_3x3"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:looting_1_upgrade",
|
||||
"Looting I Upgrade",
|
||||
"^[multiply:#33aa00",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
{"mcl_mobitems:blaze_rod", "exchangeclone:blank_upgrade", "mcl_mobitems:blaze_rod"},
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"looting",
|
||||
1,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:red_katar"] = true,
|
||||
["exchangeclone:red_katar_3x3"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:looting_2_upgrade",
|
||||
"Looting II Upgrade",
|
||||
"^[multiply:#77ff00",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
{"mcl_mobitems:blaze_rod", "exchangeclone:looting_1_upgrade", "mcl_mobitems:blaze_rod"},
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"looting",
|
||||
2,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:red_katar"] = true,
|
||||
["exchangeclone:red_katar_3x3"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:looting_3_upgrade",
|
||||
"Looting III Upgrade",
|
||||
"^[multiply:#ffff00",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
{"mcl_mobitems:blaze_rod", "exchangeclone:looting_2_upgrade", "mcl_mobitems:blaze_rod"},
|
||||
{"exchangeclone:dark_matter", "mcl_mobitems:blaze_rod", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"looting",
|
||||
3,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:red_katar"] = true,
|
||||
["exchangeclone:red_katar_3x3"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:thorns_1_upgrade",
|
||||
"Thorns I Upgrade",
|
||||
"^[multiply:#773300",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:cactus", "exchangeclone:blank_upgrade", "mcl_core:cactus"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"thorns",
|
||||
1,
|
||||
{
|
||||
["group:dark_matter_armor"] = true,
|
||||
["group:red_matter_armor"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:thorns_2_upgrade",
|
||||
"Thorns II Upgrade",
|
||||
"^[multiply:#441100",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:cactus", "exchangeclone:thorns_1_upgrade", "mcl_core:cactus"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"thorns",
|
||||
2,
|
||||
{
|
||||
["group:dark_matter_armor"] = true,
|
||||
["group:red_matter_armor"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:thorns_3_upgrade",
|
||||
"Thorns III Upgrade",
|
||||
"^[multiply:#220500",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:cactus", "exchangeclone:thorns_2_upgrade", "mcl_core:cactus"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:cactus", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"thorns",
|
||||
3,
|
||||
{
|
||||
["group:dark_matter_armor"] = true,
|
||||
["group:red_matter_armor"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:frost_walker_1_upgrade",
|
||||
"Frost Walker I Upgrade",
|
||||
"^[multiply:#77aaff",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:packed_ice", "exchangeclone:blank_upgrade", "mcl_core:packed_ice"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"frost_walker",
|
||||
1,
|
||||
{
|
||||
["exchangeclone:boots_dark_matter"] = true,
|
||||
["exchangeclone:boots_red_matter"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:frost_walker_2_upgrade",
|
||||
"Frost Walker II Upgrade",
|
||||
"^[multiply:#77ffff",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:packed_ice", "exchangeclone:frost_walker_1_upgrade", "mcl_core:packed_ice"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:packed_ice", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"frost_walker",
|
||||
2,
|
||||
{
|
||||
["exchangeclone:boots_dark_matter"] = true,
|
||||
["exchangeclone:boots_red_matter"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:silk_touch_upgrade",
|
||||
"Silk Touch Upgrade",
|
||||
"^[brighten",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:cobweb", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:cobweb", "exchangeclone:blank_upgrade", "mcl_core:cobweb"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:cobweb", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"silk_touch",
|
||||
1,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:dark_matter_shovel"] = true,
|
||||
["exchangeclone:red_matter_shovel"] = true,
|
||||
["exchangeclone:dark_matter_shears"] = true,
|
||||
["exchangeclone:red_matter_shears"] = true,
|
||||
["group:dark_matter_pickaxe"] = true,
|
||||
["group:red_matter_pickaxe"] = true,
|
||||
["group:dark_matter_hoe"] = true,
|
||||
["group:red_matter_hoe"] = true,
|
||||
["group:dark_matter_hammer"] = true,
|
||||
["group:red_matter_hammer"] = true,
|
||||
["group:red_katar"] = true,
|
||||
["group:red_morningstar"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:fortune_1_upgrade",
|
||||
"Fortune I Upgrade",
|
||||
"^[multiply:#ff00ff",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:diamond", "exchangeclone:blank_upgrade", "mcl_core:diamond"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"fortune",
|
||||
1,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:dark_matter_shovel"] = true,
|
||||
["exchangeclone:red_matter_shovel"] = true,
|
||||
["exchangeclone:dark_matter_shears"] = true,
|
||||
["exchangeclone:red_matter_shears"] = true,
|
||||
["group:dark_matter_pickaxe"] = true,
|
||||
["group:red_matter_pickaxe"] = true,
|
||||
["group:dark_matter_hoe"] = true,
|
||||
["group:red_matter_hoe"] = true,
|
||||
["group:dark_matter_hammer"] = true,
|
||||
["group:red_matter_hammer"] = true,
|
||||
["group:red_katar"] = true,
|
||||
["group:red_morningstar"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:fortune_2_upgrade",
|
||||
"Fortune II Upgrade",
|
||||
"^[multiply:#aa00ff",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:diamond", "exchangeclone:fortune_1_upgrade", "mcl_core:diamond"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"fortune",
|
||||
2,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:dark_matter_shovel"] = true,
|
||||
["exchangeclone:red_matter_shovel"] = true,
|
||||
["exchangeclone:dark_matter_shears"] = true,
|
||||
["exchangeclone:red_matter_shears"] = true,
|
||||
["group:dark_matter_pickaxe"] = true,
|
||||
["group:red_matter_pickaxe"] = true,
|
||||
["group:dark_matter_hoe"] = true,
|
||||
["group:red_matter_hoe"] = true,
|
||||
["group:dark_matter_hammer"] = true,
|
||||
["group:red_matter_hammer"] = true,
|
||||
["group:red_katar"] = true,
|
||||
["group:red_morningstar"] = true,
|
||||
}
|
||||
)
|
||||
|
||||
exchangeclone.register_upgrade(
|
||||
"exchangeclone:fortune_3_upgrade",
|
||||
"Fortune III Upgrade",
|
||||
"^[multiply:#7700ff",
|
||||
{
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
{"mcl_core:diamond", "exchangeclone:fortune_2_upgrade", "mcl_core:diamond"},
|
||||
{"exchangeclone:dark_matter", "mcl_core:diamond", "exchangeclone:dark_matter"},
|
||||
},
|
||||
"fortune",
|
||||
3,
|
||||
{
|
||||
["exchangeclone:dark_matter_sword"] = true,
|
||||
["exchangeclone:red_matter_sword"] = true,
|
||||
["exchangeclone:dark_matter_axe"] = true,
|
||||
["exchangeclone:red_matter_axe"] = true,
|
||||
["exchangeclone:dark_matter_shovel"] = true,
|
||||
["exchangeclone:red_matter_shovel"] = true,
|
||||
["exchangeclone:dark_matter_shears"] = true,
|
||||
["exchangeclone:red_matter_shears"] = true,
|
||||
["group:dark_matter_pickaxe"] = true,
|
||||
["group:red_matter_pickaxe"] = true,
|
||||
["group:dark_matter_hoe"] = true,
|
||||
["group:red_matter_hoe"] = true,
|
||||
["group:dark_matter_hammer"] = true,
|
||||
["group:red_matter_hammer"] = true,
|
||||
["group:red_katar"] = true,
|
||||
["group:red_morningstar"] = true,
|
||||
}
|
||||
)
|
Loading…
Reference in New Issue