From a64e38e4af7f21b095e56116a21a77b684802a8a Mon Sep 17 00:00:00 2001 From: ThePython <87204246+ThePython10110@users.noreply.github.com> Date: Mon, 4 Mar 2024 16:41:27 -0800 Subject: [PATCH] Added amulets, started black hole band --- .cdb.json | 16 -- README.md | 14 +- exchangeclone/alchemical_books.lua | 13 +- exchangeclone/amulets.lua | 186 ++++++++++++++++++ exchangeclone/black_hole_band.lua | 23 +++ exchangeclone/init.lua | 1 + exchangeclone/sounds/exchangeclone_pickup.ogg | Bin 0 -> 24467 bytes .../exchangeclone_lava_projectile.png | Bin 0 -> 3221 bytes .../exchangeclone_water_projectile.png | Bin 0 -> 3288 bytes .../items/exchangeclone_evertide_amulet.png | Bin 0 -> 277 bytes .../items/exchangeclone_volcanite_amulet.png | Bin 0 -> 277 bytes modpack.conf | 5 +- zzzz_exchangeclone_init/lib.lua | 5 + 13 files changed, 236 insertions(+), 27 deletions(-) delete mode 100644 .cdb.json create mode 100644 exchangeclone/amulets.lua create mode 100644 exchangeclone/black_hole_band.lua create mode 100644 exchangeclone/sounds/exchangeclone_pickup.ogg create mode 100644 exchangeclone/textures/exchangeclone_lava_projectile.png create mode 100644 exchangeclone/textures/exchangeclone_water_projectile.png create mode 100644 exchangeclone/textures/items/exchangeclone_evertide_amulet.png create mode 100644 exchangeclone/textures/items/exchangeclone_volcanite_amulet.png diff --git a/.cdb.json b/.cdb.json deleted file mode 100644 index ae61bc7..0000000 --- a/.cdb.json +++ /dev/null @@ -1,16 +0,0 @@ -{ - "type": "MOD", - "title": "ExchangeClone", - "name": "exchangeclone", - "tags": [ - "magic", - "technology" - ], - "license": "GPL-3.0-or-later", - "media_license": "GPL-3.0-or-later", - "short_description": "Exchange nodes into other nodes", - "dev_state": "ACTIVELY_DEVELOPED", - "repo": "https://github.com/thepython10110/exchangeclone", - "website": "https://thepython10110.github.io", - "issue_tracker": "https://github.com/thepython10110/exchangeclone/issues" -} diff --git a/README.md b/README.md index 6f1bf71..ac28e27 100644 --- a/README.md +++ b/README.md @@ -59,7 +59,7 @@ Dependencies: Minetest Game or MineClone. * Also includes some features from ProjectExpansion, an expansion to ProjectE (MIT). * Code: GPLv3+ * Originally started as a fork of Enchant97's mod [Element Exchange](https://github.com/enchant97/minetest_element_exchange) (GPLv3+). - * Some code copied/modified from MineClone2 and Minetest Game (both GPLv3+) + * Some code copied/modified from other places, of course, but not large amounts and not closed-source projects. Sometimes I remember to give credit, sometimes I don't. * Textures: * Upgrader and Upgrades: Created by me (CC-BY-SA-3.0) * Energy Collectors: @@ -84,8 +84,8 @@ You can find the old textures and sounds by going back to previous commits in Gi - [x] Add more matter/fuel types - [x] Make collectors less expensive and less effective (gold instead of glowstone) - [x] Make collectors use ProjectExpansion's textures -- [ ] Add Evertide Amulet -- [ ] Add Volcanite Amulet +- [x] Add Evertide Amulet +- [x] Add Volcanite Amulet - [ ] Add Zero Ring - [ ] Add Ring of Ignition - [ ] Add Black Hole Band (without bag functionality) @@ -94,8 +94,8 @@ You can find the old textures and sounds by going back to previous commits in Gi - [ ] Add Pedestal abilities - [x] Passive Stones - [x] Talisman - - [ ] Evertide (MCL) - - [ ] Volcanite (MCL) + - [x] Evertide + - [x] Volcanite - [ ] Zero - [ ] Ignition - [ ] Black Hole/Void @@ -118,6 +118,10 @@ You can find the old textures and sounds by going back to previous commits in Gi * Added Magenta through White Fuel/Matter (would have added fading matter, but it's over 1 trillion EMC) * Added `_get_emc`, `_set_emc`, and `_add_emc` to player metatables. This means you can use `player:_get_emc()` instead of `exchangeclone.get_player_emc(player)`. **WARNING: Do not use these functions in `on_joinplayer` functions.** * Added the same functions for itemstack metatables, as well as `__star_emc` and `_get_star_max`. `_set_emc` and `_add_emc` work by changing the metadata EMC value. + * Added Evertide/Volcanite Amulets + * Projectiles do not work in Mineclonia. + * The "Buckets use select box" (`mcl_buckets_use_select_box`) setting must be enabled to use projectiles in MineClone2. + * Pedestal abilities use the "Weather" mod (the one by theFox) in Minetest Game * Changes: * The Constructor and Deconstructor are now deprecated, replaced with the EMC Link. * Upgrades and Stars can no longer be used as fuel. diff --git a/exchangeclone/alchemical_books.lua b/exchangeclone/alchemical_books.lua index 8e0547d..8e02fd9 100644 --- a/exchangeclone/alchemical_books.lua +++ b/exchangeclone/alchemical_books.lua @@ -273,6 +273,11 @@ minetest.register_on_player_receive_fields(function(player, formname, fields) end) local function alchemical_book_function(itemstack, player, pointed_thing) + local click_test = exchangeclone.check_on_rightclick(itemstack, player, pointed_thing) + if click_test ~= false then + return click_test + end + local use_stack_data = itemstack:get_meta():get_int("exchangeclone_use_stack_data") if use_stack_data == 0 then use_stack_data = nil @@ -294,7 +299,7 @@ end minetest.register_tool("exchangeclone:basic_alchemical_book", { description = "Basic Alchemical Book\n1000 EMC/node\nCannot travel between dimensions", inventory_image = "exchangeclone_basic_alchemical_book.png", - groups = {exchangeclone_alchemical_book = 1}, + groups = {exchangeclone_alchemical_book = 1, disable_repair = 1}, alchemical_book_data = {emc_per_node = 1000, dimension_lock = true}, on_secondary_use = alchemical_book_function, on_place = alchemical_book_function @@ -303,7 +308,7 @@ minetest.register_tool("exchangeclone:basic_alchemical_book", { minetest.register_tool("exchangeclone:advanced_alchemical_book", { description = "Advanced Alchemical Book\n500 EMC/node", inventory_image = "exchangeclone_advanced_alchemical_book.png", - groups = {exchangeclone_alchemical_book = 1}, + groups = {exchangeclone_alchemical_book = 1, disable_repair = 1}, alchemical_book_data = {emc_per_node = 500}, on_secondary_use = alchemical_book_function, on_place = alchemical_book_function @@ -312,7 +317,7 @@ minetest.register_tool("exchangeclone:advanced_alchemical_book", { minetest.register_tool("exchangeclone:master_alchemical_book", { description = "Master Alchemical Book\n100 EMC/node.", inventory_image = "exchangeclone_master_alchemical_book.png", - groups = {exchangeclone_alchemical_book = 1}, + groups = {exchangeclone_alchemical_book = 1, disable_repair = 1}, alchemical_book_data = {emc_per_node = 100}, on_secondary_use = alchemical_book_function, on_place = alchemical_book_function @@ -321,7 +326,7 @@ minetest.register_tool("exchangeclone:master_alchemical_book", { minetest.register_tool("exchangeclone:arcane_alchemical_book", { description = "Arcane Alchemical Book\n0 EMC/node", inventory_image = "exchangeclone_arcane_alchemical_book.png", - groups = {exchangeclone_alchemical_book = 1}, + groups = {exchangeclone_alchemical_book = 1, disable_repair = 1}, alchemical_book_data = {emc_per_node = 0}, on_secondary_use = alchemical_book_function, on_place = alchemical_book_function diff --git a/exchangeclone/amulets.lua b/exchangeclone/amulets.lua new file mode 100644 index 0000000..0f18aff --- /dev/null +++ b/exchangeclone/amulets.lua @@ -0,0 +1,186 @@ +-- This list is copied/modified from 3D Armor. +local fire_nodes = { + ["nether:lava_source"] = true, + ["default:lava_source"] = true, + ["default:lava_flowing"] = true, + ["fire:basic_flame"] = true, + ["fire:permanent_flame"] = true, + ["ethereal:crystal_spike"] = true, + ["ethereal:fire_flower"] = true, + ["nether:lava_crust"] = true, + ["default:torch"] = true, + ["default:torch_ceiling"] = true, + ["default:torch_wall"] = true, +} + +local function place_liquid(itemstack, player, pointed_thing) + local click_test = exchangeclone.check_on_rightclick(itemstack, player, pointed_thing) + if click_test ~= false then + return click_test + end + + if not pointed_thing then return end + local liquid = itemstack:get_name() == "exchangeclone:volcanite_amulet" and "lava" or "water" + local cost = liquid == "lava" and 64 or 0 + + if pointed_thing.type == "node" then + local bucket = ItemStack(exchangeclone.itemstrings[liquid.."_bucket"]) + bucket:get_definition().on_place(bucket, player, pointed_thing) + else + if (not exchangeclone.mcl) or minetest.settings:get_bool("mcl_buckets_use_select_box", false) then + local velocity = player:get_look_dir()*20 + minetest.add_entity(player:get_pos(), "exchangeclone:projectile", minetest.serialize({ + velocity = vector.to_string(velocity), + player = player:get_player_name(), + itemstring = itemstack:get_name(), + texture = liquid == "lava" and "exchangeclone_lava_projectile.png" or "exchangeclone_water_projectile.png" + })) + end + player:_add_emc(-cost) + end +end + +minetest.register_entity("exchangeclone:projectile", { + initial_properties = { + hp_max = 1, + physical = true, + collide_with_objects = false, + pointable = false, + visual = "sprite", + textures = {"blank.png"}, + static_save = false, + }, + on_activate = function(self, staticdata) + local table_data = minetest.deserialize(staticdata) + local velocity = vector.from_string(table_data.velocity) or vector.new(0,0,0) + self._itemstring = table_data.itemstring + self._player = table_data.player + self.object:set_velocity(velocity) + self.object:set_properties({textures = {table_data.texture}}) + end, + on_step = function(self, dtime, moveresult) + for _, collision in ipairs(moveresult.collisions) do + if collision.type == "node" then + local player = minetest.get_player_by_name(self._player) + if not player then return end + local above = vector.new(collision.node_pos) + if collision.old_velocity[collision.axis] < 0 then + above[collision.axis] = above[collision.axis] + 1 + else + above[collision.axis] = above[collision.axis] - 1 + end + place_liquid(ItemStack(self._itemstring), player, {type = "node", under = collision.node_pos, above = above}) + self.object:remove() + break + end + end + end +}) + +local change_count = 9 -- numbers of calls before changing, starts at 9 to make it do it the first time (10) +local evertide_pedestal +if exchangeclone.mcl and minetest.settings:get_bool("mcl_doWeatherCycle", true) then + evertide_pedestal = function() + change_count = change_count + 1 + if change_count >= 10 then + mcl_weather.change_weather("rain") + change_count = 0 + end + end +elseif minetest.get_modpath("weather") then + evertide_pedestal = function() + change_count = change_count + 1 + if change_count >= 10 then + weather.type = "weather:rain" + weather_mod.handle_lightning() + weather_mod.handle_weather_change({type = "weather:rain"}) + change_count = 0 + end + end +end +local volcanite_pedestal +if exchangeclone.mcl and minetest.settings:get_bool("mcl_doWeatherCycle", true) then + volcanite_pedestal = function() + change_count = change_count + 1 + if change_count >= 10 then + minetest.log("clearing?") + mcl_weather.change_weather("none") + change_count = 0 + end + end +elseif minetest.get_modpath("weather") then + volcanite_pedestal = function() + change_count = change_count + 1 + if change_count >= 10 then + weather.type = "none" + weather_mod.handle_lightning() + weather_mod.handle_weather_change({type = "none"}) + change_count = 0 + end + end +end + +minetest.register_tool("exchangeclone:evertide_amulet", { + description = "Evertide Amulet", + inventory_image = "exchangeclone_evertide_amulet.png", + groups = {disable_repair = 1, immune_to_fire = 1}, + on_place = place_liquid, + on_secondary_use = place_liquid, + _exchangeclone_pedestal = evertide_pedestal +}) + +minetest.register_tool("exchangeclone:volcanite_amulet", { + description = "Volcanite Amulet", + inventory_image = "exchangeclone_volcanite_amulet.png", + groups = {disable_repair = 1, immune_to_fire = 1}, + on_place = place_liquid, + on_secondary_use = place_liquid, + _exchangeclone_pedestal = volcanite_pedestal +}) + +-- Drowning damage looks the same in MCL and MTGs +minetest.register_on_player_hpchange(function(player, hp_change, reason) + if hp_change < 0 then + minetest.log(dump({hp_change, reason})) + if reason.type == "drown" then + local inv = player:get_inventory() + local hotbar_max = player:hud_get_hotbar_itemcount() + 1 + for i = 1, hotbar_max do + local stack = inv:get_stack("main", i) + if stack:get_name() == "exchangeclone:evertide_amulet" then + return 0 + end + end + elseif reason.type == "node_damage" and reason.node then + if fire_nodes[reason.node] then + local inv = player:get_inventory() + local hotbar_max = player:hud_get_hotbar_itemcount() + 1 + for i = 1, hotbar_max do + local stack = inv:get_stack("main", i) + if stack:get_name() == "exchangeclone:volcanite_amulet" then + return 0 + end + end + end + end + end + return hp_change +end, true) + +-- Fire damage is different (and a lot easier to detect in MCL) +if exchangeclone.mcl then + mcl_damage.register_modifier(function(obj, damage, reason) + if not obj:is_player() then return end + if reason.flags.is_fire then + local inv = obj:get_inventory() + local hotbar_max = obj:hud_get_hotbar_itemcount() + 1 + for i = 1, hotbar_max do + local stack = inv:get_stack("main", i) + if stack:get_name() == "exchangeclone:volcanite_amulet" then + return 0 + end + end + end + return damage + end) +end \ No newline at end of file diff --git a/exchangeclone/black_hole_band.lua b/exchangeclone/black_hole_band.lua new file mode 100644 index 0000000..08e00e2 --- /dev/null +++ b/exchangeclone/black_hole_band.lua @@ -0,0 +1,23 @@ +-- Some of this is copied from `sneak_drop` by Krunegan because I was too lazy to do it myself +local function pickup_items(player) + local pos = player:get_pos() + local objs = minetest.get_objects_inside_radius(pos, 5) + for j = 1, #objs do + local obj = objs[j] + if obj:get_luaentity() and obj:get_luaentity().name == "__builtin:item" then + local objpos = obj:get_pos() + local objdir = vector.direction(pos, objpos) + local objdist = vector.distance(pos, objpos) + local itemstack = obj:get_luaentity().itemstring + if player:get_inventory():room_for_item("main", itemstack) then + player:get_inventory():add_item("main", itemstack) + obj:remove() + minetest.sound_play("sneak_drop_pickup", { + pos = pos, + max_hear_distance = 16, + gain = 0.4, + }) + end + end + end +end \ No newline at end of file diff --git a/exchangeclone/init.lua b/exchangeclone/init.lua index 5bfe26e..167a2df 100644 --- a/exchangeclone/init.lua +++ b/exchangeclone/init.lua @@ -111,6 +111,7 @@ end local files = { "fuels", "matter", + "amulets", "deprecated_stuff", "energy_collectors", "klein_stars", diff --git a/exchangeclone/sounds/exchangeclone_pickup.ogg b/exchangeclone/sounds/exchangeclone_pickup.ogg new file mode 100644 index 0000000000000000000000000000000000000000..3199d2f42e03acc6f34f862e8a7276bf202d0e29 GIT binary patch literal 24467 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 ZOJfWPHlo0XKIEs{U1ugdnf<^ literal 0 HcmV?d00001 diff --git a/exchangeclone/textures/exchangeclone_lava_projectile.png b/exchangeclone/textures/exchangeclone_lava_projectile.png new file mode 100644 index 0000000000000000000000000000000000000000..f83d812bc9f54a47fb121641bf8a82e2f8921158 GIT binary patch literal 3221 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 OVg^rFKbLh*2~7a!BU}jp literal 0 HcmV?d00001 diff --git a/exchangeclone/textures/items/exchangeclone_volcanite_amulet.png b/exchangeclone/textures/items/exchangeclone_volcanite_amulet.png new file mode 100644 index 0000000000000000000000000000000000000000..a44597e10c8174fec40236906f325ccb9e6c6d61 GIT binary patch literal 277 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!73?$#)eFPFv4DbnY{r~^Jk&)5=$FC`sfeI_PR4P$mu!)ZXFTu&Fr5RU7~2@Fhbj%*wPMr}qd zb0rmo7G*UtDeTJ(DB8d{LGfN*(yJtfDJ$lL$|OBHps?(Q?W5y2FCWGCI3=G#k3Ff^#@&6Lg OVg^rFKbLh*2~7ZFidlyM literal 0 HcmV?d00001 diff --git a/modpack.conf b/modpack.conf index a5d86e7..6738aa0 100644 --- a/modpack.conf +++ b/modpack.conf @@ -1,4 +1,5 @@ name = exchangeclone title = ExchangeClone -description = Equivalent Exchange/ProjectE for Minetest Game and MineClone! Turn items into EMC and EMC into items, craft OP tools and armor, and more! -optional_depends = default, mcl_core, technic, ethereal, why_init, nether, mobs \ No newline at end of file +description = Transmute items into other items, create powerful tools and armor, and more! Based on ProjectE/Equivalent Exchange. +supported_games = mineclone2, minetest_game, mineclonia +unsupported_games = nodecore \ No newline at end of file diff --git a/zzzz_exchangeclone_init/lib.lua b/zzzz_exchangeclone_init/lib.lua index 00ed44f..3ccdccc 100644 --- a/zzzz_exchangeclone_init/lib.lua +++ b/zzzz_exchangeclone_init/lib.lua @@ -385,6 +385,11 @@ exchangeclone.itemstrings = { torch = exchangeclone.mcl and "mcl_torches:torch" or "default:torch", book = exchangeclone.mcl and "mcl_books:book" or "default:book", glass = exchangeclone.mcl and "mcl_core:glass" or "default:glass", + water = exchangeclone.mcl and "mcl_core:water_source" or "default:water_source", + lava = exchangeclone.mcl and "mcl_core:lava_source" or "default:lava_source", + 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", } exchangeclone.emc_aliases = {}