Did stuff

This commit is contained in:
ThePython 2024-03-20 07:52:06 -07:00
parent 52916955cb
commit 3c4970c7cd
8 changed files with 141 additions and 13 deletions

View File

@ -432,13 +432,14 @@ I didn't get to everything I wanted to, mostly because the automatic energy valu
* Alchemical Books\*\*
* Catalytic Lens
* Mercurial Eye
* Evertide Amulet (but without being able to stand on water)\*
* Volcanite Amulet (but without being able to stand on lava)\*
* Evertide Amulet (but without being able to stand on water)\*\*
* Volcanite Amulet (but without being able to stand on lava)\*\*
* Pedestals\*\* (haven't added all the abilities yet)
* Black Hole Band and Void Ring\*
* Black Hole Band and Void Ring\*\*
* Nova Catalyst/Cataclysm?
* Knowledge Sharing Book
* EMC Link\*\*
* Support for EMC values greater than 1 trillion with the [BigNum](https://github.com/thepython10110/bignum) library
\* Planned for v8.0
@ -448,5 +449,4 @@ I didn't get to everything I wanted to, mostly because the automatic energy valu
* Divining Rods (I would have to manually add energy values for ores, and I'm not going to do that)
* Energy Condensers (what's the point?)
* Watch of Flowing Time (impossible/laggy)
* Interdiction Torches (extremely laggy)
* Any item from ProjectE(xpansion) with an EMC value of over 1 trillion
* Interdiction Torches (laggy)

View File

@ -14,6 +14,7 @@ ExchangeClone upports all items in the following mods/games (and anything that c
* Nether
* Mobs Redo API and Mobs Animals
* Animalia
* Logistica
ExchangeClone is tested with the latest release of Minetest, Minetest Game, MineClone2, and Mineclonia.
@ -36,13 +37,12 @@ Dependencies: Minetest Game or MineClone.
## Known issues:
* The sword/katar AOE ability does not take upgrades (looting, fire aspect, etc.) into account. This will probably not be fixed (MCL)
* Klein Stars and Upgrades can be used as fuel. This isn't really a problem, but it will probably be removed once I decide the new hopper API is old enough that most people are using it.
* Dark/Red Matter Shears will sometimes (randomly) be treated as normal shears when used by dispensers. This will not be fixed.
* Dark/Red Matter Shears will sometimes (randomly) be treated as normal shears when used by MCL dispensers. This will not be fixed.
* In Mineclonia, when inserting items into Dark/Red Matter Furnaces with hoppers, they will not start at the correct speed, instead being limited to a maximum of 1 item/second. This will not be fixed unless Mineclonia changes how things work.
* In Mineclonia, hoppers can put invalid items into Energy Collectors. This will not be fixed.
* Tools do not show the wear bar (to show the charge level) when first created or crafted. It only appears after changing the range. This will not be fixed.
* Unfortunately, caused by the performance improvements to various tool abilities, using the shear ability on sea grass (MCL) will also remove the sand below the sea grass. I can't think of a good way to fix it.
* Dark and Red Matter Armor can make the player invincible. This is an [engine problem](https://github.com/minetest/minetest/issues/14344) that I can't fix.
* Unfortunately, changes to various tool abilities in v7.0, using the shear ability on sea grass (MCL) will also remove the sand below the sea grass. I can't think of a good way to fix it.
* Dark and Red Matter Armor can make the player invincible. This is an [engine problem](https://github.com/minetest/minetest/issues/14344) that I can't fix without simply making the armor worse.
* Mobs Redo (and mods that use it) don't care that DM/RM tools are supposed to be unbreakable and add wear to them anyway.
* Covalence Dust and the Talisman of Repair cannot repair certain tools. This will not be fixed.
* DM/RM tools are too fast in MTG (can't figure out why)

View File

@ -177,10 +177,12 @@ local function allow_metadata_inventory_move(pos, from_list, from_index, to_list
end
local function allow_metadata_inventory_take(pos, listname, index, stack, player)
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
if player:is_player() then
local name = player:get_player_name()
if minetest.is_protected(pos, name) then
minetest.record_protection_violation(pos, name)
return 0
end
end
return stack:get_count()
end

View File

@ -108,6 +108,7 @@ if exchangeclone.mcl2 then
mcl_item_id.set_mod_namespace("exchangeclone")
end
-- The order is usually unimportant
local files = {
"craftitems",
"fuels",
@ -137,6 +138,7 @@ local files = {
"alchemical_books",
"dark_matter_pedestal",
"black_hole_band",
"rings",
}
if exchangeclone.mcl or minetest.get_modpath("3d_armor") then

View File

@ -283,6 +283,55 @@ if exchangeclone.mtg then
end
if minetest.global_exists("logistica") then
exchangeclone.register_craft_type("lava_furnace", "shapeless") -- weird that it's not cooking but I can't see any way around that
exchangeclone.register_craft({
output = "logistica:silverin",
type = "lava_furnace",
recipe = {
exchangeclone.mcl and "mcl_core:sand" or "default:silver_sand",
exchangeclone.itemstrings.ice
}
})
exchangeclone.register_craft({
output = "logistica:silverin_circuit",
type = "lava_furnace",
recipe = {
"logistica:silverin_slice",
exchangeclone.mcl and "mesecons:redstone" or "default:mese_crystal_fragment"
}
})
exchangeclone.register_craft({
output = "logistica:silverin_mirror_box",
type = "lava_furnace",
recipe = {
exchangeclone.itemstrings.glass,
"logistica:silverin_slice",
"logistica:silverin_slice",
"logistica:silverin_slice",
"logistica:silverin_slice",
"logistica:silverin_slice",
"logistica:silverin_slice",
}
})
exchangeclone.register_craft({
output = "logistica:silverin_plate",
type = "lava_furnace",
recipe = {
"logistica:silverin",
exchangeclone.itemstrings.iron,
}
})
exchangeclone.register_craft({
output = "logistica:wireless_crystal",
type = "lava_furnace",
recipe = {
"logistica:silverin",
exchangeclone.itemstrings.emeraldworth,
}
})
end
-- Up to this point, no EMC values have actually been set.

71
exchangeclone/rings.lua Normal file
View File

@ -0,0 +1,71 @@
minetest.register_tool("exchangeclone:zero_ring", {
description = "Zero Ring",
inventory_image = "exchangeclone_zero_ring.png",
_exchangeclone_passive = {
func = function() end,
active_image = "exchangeclone_zero_ring_active.png",
}
})
local set_fire
if exchangeclone.mcl then
set_fire = function(player, pos)
-- Check protection
local protname = player:get_player_name()
if minetest.is_protected(pos, protname) then
minetest.record_protection_violation(pos, protname)
end
local above = vector.offset(pos, 0,1,0)
local pointed_thing = {type="node",under=pos,above=above}
local nodedef = minetest.registered_nodes[minetest.get_node(pos).name]
if nodedef and nodedef._on_ignite then
local overwrite = nodedef._on_ignite(player, pointed_thing)
if not overwrite then
mcl_fire.set_fire(pointed_thing, player, false)
end
else
mcl_fire.set_fire(pointed_thing, player, false)
end
end
else
set_fire = function(player, pos)
local protname = player:get_player_name()
if minetest.is_protected(pos, protname) then
minetest.record_protection_violation(pos, protname)
end
local nodedef = minetest.registered_nodes[minetest.get_node(pos).name]
local above = vector.offset(pos, 0,1,0)
if nodedef.on_ignite then
nodedef.on_ignite(pos, player)
else
minetest.set_node(above, {name = "fire:basic_flame"})
end
end
end
minetest.register_tool("exchangeclone:ring_of_ignition", {
description = "Ring of Ignition",
inventory_image = "exchangeclone_ring_of_ignition.png",
on_secondary_use = exchangeclone.toggle_active,
on_place = exchangeclone.toggle_active,
_exchangeclone_passive = {
func = function(player)
local player_pos = player:get_pos()
local offset = vector.new(5,1,5)
local start, _end = player_pos + offset, player_pos - offset
minetest.log(dump({start = start, _end = _end}))
-- conveniently, MTG and MCL agree on the flammable group
local nodes = minetest.find_nodes_in_area(start, _end, "group:flammable")
for _, pos in pairs(nodes) do
local above_pos = vector.offset(pos,0,1,0)
if minetest.get_node(above_pos).name == "air" then
if math.random() < 0.2 then
set_fire(player, pos)
end
end
end
end,
active_image = "exchangeclone_ring_of_ignition_active.png",
}
})

View File

@ -1,3 +1,4 @@
-- You can edit these tables any time before minetest.register_on_mods_loaded functions are run.
exchangeclone.group_values = {}
exchangeclone.base_emc_values = {}

View File

@ -390,6 +390,9 @@ exchangeclone.itemstrings = {
water_bucket = exchangeclone.mcl and "mcl_buckets:bucket_water" or "bucket:bucket_water",
lava_bucket = exchangeclone.mcl and "mcl_buckets:bucket_lava" or "bucket:bucket_lava",
empty_bucket = exchangeclone.mcl and "mcl_buckets:bucket_empty" or "bucket:bucket_empty",
snow = exchangeclone.mcl and "mcl_core:snow" or "default:snow",
fire = exchangeclone.mcl and "mcl_fire:fire" or "fire:fire",
ice = exchangeclone.mcl and "mcl_core:ice" or "default:ice"
}
exchangeclone.emc_aliases = {}