From ec1254ff5ec6aea31516af5a0758e0a796399a42 Mon Sep 17 00:00:00 2001 From: minermoder27 Date: Wed, 19 Mar 2014 21:25:32 +1300 Subject: [PATCH] Upload files --- LICENSE.txt | 202 ++++++++++++++++++++++++ README.md | 6 + depends.txt | 1 + emcs.lua | 75 +++++++++ init.lua | 93 +++++++++++ textures/equivalent_exchange-bar-bg.xcf | Bin 0 -> 4814 bytes textures/equivalent_exchange_magic.png | Bin 0 -> 613 bytes textures/equivalent_exchange_magic.xcf | Bin 0 -> 2420 bytes 8 files changed, 377 insertions(+) create mode 100644 LICENSE.txt create mode 100644 README.md create mode 100644 depends.txt create mode 100644 emcs.lua create mode 100644 init.lua create mode 100644 textures/equivalent_exchange-bar-bg.xcf create mode 100644 textures/equivalent_exchange_magic.png create mode 100644 textures/equivalent_exchange_magic.xcf diff --git a/LICENSE.txt b/LICENSE.txt new file mode 100644 index 0000000..d645695 --- /dev/null +++ b/LICENSE.txt @@ -0,0 +1,202 @@ + + Apache License + Version 2.0, January 2004 + http://www.apache.org/licenses/ + + TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + + 1. Definitions. + + "License" shall mean the terms and conditions for use, reproduction, + and distribution as defined by Sections 1 through 9 of this document. + + "Licensor" shall mean the copyright owner or entity authorized by + the copyright owner that is granting the License. + + "Legal Entity" shall mean the union of the acting entity and all + other entities that control, are controlled by, or are under common + control with that entity. For the purposes of this definition, + "control" means (i) the power, direct or indirect, to cause the + direction or management of such entity, whether by contract or + otherwise, or (ii) ownership of fifty percent (50%) or more of the + outstanding shares, or (iii) beneficial ownership of such entity. + + "You" (or "Your") shall mean an individual or Legal Entity + exercising permissions granted by this License. + + "Source" form shall mean the preferred form for making modifications, + including but not limited to software source code, documentation + source, and configuration files. + + "Object" form shall mean any form resulting from mechanical + transformation or translation of a Source form, including but + not limited to compiled object code, generated documentation, + and conversions to other media types. + + "Work" shall mean the work of authorship, whether in Source or + Object form, made available under the License, as indicated by a + copyright notice that is included in or attached to the work + (an example is provided in the Appendix below). + + "Derivative Works" shall mean any work, whether in Source or Object + form, that is based on (or derived from) the Work and for which the + editorial revisions, annotations, elaborations, or other modifications + represent, as a whole, an original work of authorship. For the purposes + of this License, Derivative Works shall not include works that remain + separable from, or merely link (or bind by name) to the interfaces of, + the Work and Derivative Works thereof. + + "Contribution" shall mean any work of authorship, including + the original version of the Work and any modifications or additions + to that Work or Derivative Works thereof, that is intentionally + submitted to Licensor for inclusion in the Work by the copyright owner + or by an individual or Legal Entity authorized to submit on behalf of + the copyright owner. For the purposes of this definition, "submitted" + means any form of electronic, verbal, or written communication sent + to the Licensor or its representatives, including but not limited to + communication on electronic mailing lists, source code control systems, + and issue tracking systems that are managed by, or on behalf of, the + Licensor for the purpose of discussing and improving the Work, but + excluding communication that is conspicuously marked or otherwise + designated in writing by the copyright owner as "Not a Contribution." + + "Contributor" shall mean Licensor and any individual or Legal Entity + on behalf of whom a Contribution has been received by Licensor and + subsequently incorporated within the Work. + + 2. Grant of Copyright License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + copyright license to reproduce, prepare Derivative Works of, + publicly display, publicly perform, sublicense, and distribute the + Work and such Derivative Works in Source or Object form. + + 3. Grant of Patent License. Subject to the terms and conditions of + this License, each Contributor hereby grants to You a perpetual, + worldwide, non-exclusive, no-charge, royalty-free, irrevocable + (except as stated in this section) patent license to make, have made, + use, offer to sell, sell, import, and otherwise transfer the Work, + where such license applies only to those patent claims licensable + by such Contributor that are necessarily infringed by their + Contribution(s) alone or by combination of their Contribution(s) + with the Work to which such Contribution(s) was submitted. If You + institute patent litigation against any entity (including a + cross-claim or counterclaim in a lawsuit) alleging that the Work + or a Contribution incorporated within the Work constitutes direct + or contributory patent infringement, then any patent licenses + granted to You under this License for that Work shall terminate + as of the date such litigation is filed. + + 4. Redistribution. You may reproduce and distribute copies of the + Work or Derivative Works thereof in any medium, with or without + modifications, and in Source or Object form, provided that You + meet the following conditions: + + (a) You must give any other recipients of the Work or + Derivative Works a copy of this License; and + + (b) You must cause any modified files to carry prominent notices + stating that You changed the files; and + + (c) You must retain, in the Source form of any Derivative Works + that You distribute, all copyright, patent, trademark, and + attribution notices from the Source form of the Work, + excluding those notices that do not pertain to any part of + the Derivative Works; and + + (d) If the Work includes a "NOTICE" text file as part of its + distribution, then any Derivative Works that You distribute must + include a readable copy of the attribution notices contained + within such NOTICE file, excluding those notices that do not + pertain to any part of the Derivative Works, in at least one + of the following places: within a NOTICE text file distributed + as part of the Derivative Works; within the Source form or + documentation, if provided along with the Derivative Works; or, + within a display generated by the Derivative Works, if and + wherever such third-party notices normally appear. The contents + of the NOTICE file are for informational purposes only and + do not modify the License. You may add Your own attribution + notices within Derivative Works that You distribute, alongside + or as an addendum to the NOTICE text from the Work, provided + that such additional attribution notices cannot be construed + as modifying the License. + + You may add Your own copyright statement to Your modifications and + may provide additional or different license terms and conditions + for use, reproduction, or distribution of Your modifications, or + for any such Derivative Works as a whole, provided Your use, + reproduction, and distribution of the Work otherwise complies with + the conditions stated in this License. + + 5. Submission of Contributions. Unless You explicitly state otherwise, + any Contribution intentionally submitted for inclusion in the Work + by You to the Licensor shall be under the terms and conditions of + this License, without any additional terms or conditions. + Notwithstanding the above, nothing herein shall supersede or modify + the terms of any separate license agreement you may have executed + with Licensor regarding such Contributions. + + 6. Trademarks. This License does not grant permission to use the trade + names, trademarks, service marks, or product names of the Licensor, + except as required for reasonable and customary use in describing the + origin of the Work and reproducing the content of the NOTICE file. + + 7. Disclaimer of Warranty. Unless required by applicable law or + agreed to in writing, Licensor provides the Work (and each + Contributor provides its Contributions) on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or + implied, including, without limitation, any warranties or conditions + of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A + PARTICULAR PURPOSE. You are solely responsible for determining the + appropriateness of using or redistributing the Work and assume any + risks associated with Your exercise of permissions under this License. + + 8. Limitation of Liability. In no event and under no legal theory, + whether in tort (including negligence), contract, or otherwise, + unless required by applicable law (such as deliberate and grossly + negligent acts) or agreed to in writing, shall any Contributor be + liable to You for damages, including any direct, indirect, special, + incidental, or consequential damages of any character arising as a + result of this License or out of the use or inability to use the + Work (including but not limited to damages for loss of goodwill, + work stoppage, computer failure or malfunction, or any and all + other commercial damages or losses), even if such Contributor + has been advised of the possibility of such damages. + + 9. Accepting Warranty or Additional Liability. While redistributing + the Work or Derivative Works thereof, You may choose to offer, + and charge a fee for, acceptance of support, warranty, indemnity, + or other liability obligations and/or rights consistent with this + License. However, in accepting such obligations, You may act only + on Your own behalf and on Your sole responsibility, not on behalf + of any other Contributor, and only if You agree to indemnify, + defend, and hold each Contributor harmless for any liability + incurred by, or claims asserted against, such Contributor by reason + of your accepting any such warranty or additional liability. + + END OF TERMS AND CONDITIONS + + APPENDIX: How to apply the Apache License to your work. + + To apply the Apache License to your work, attach the following + boilerplate notice, with the fields enclosed by brackets "[]" + replaced with your own identifying information. (Don't include + the brackets!) The text should be enclosed in the appropriate + comment syntax for the file format. We also recommend that a + file or class name and description of purpose be included on the + same "printed page" as the copyright notice for easier + identification within third-party archives. + + Copyright [yyyy] [name of copyright owner] + + Licensed under the Apache License, Version 2.0 (the "License"); + you may not use this file except in compliance with the License. + You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + + Unless required by applicable law or agreed to in writing, software + distributed under the License is distributed on an "AS IS" BASIS, + WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + See the License for the specific language governing permissions and + limitations under the License. diff --git a/README.md b/README.md new file mode 100644 index 0000000..1bcdf1d --- /dev/null +++ b/README.md @@ -0,0 +1,6 @@ +Equivalent Exchange for Minetest + +A semi-port of the minecraft mod Equivalent Exchange + +Usage: +Cheat yourself a energy condenser (equivalent_exchange:condenser) \ No newline at end of file diff --git a/depends.txt b/depends.txt new file mode 100644 index 0000000..331d858 --- /dev/null +++ b/depends.txt @@ -0,0 +1 @@ +default \ No newline at end of file diff --git a/emcs.lua b/emcs.lua new file mode 100644 index 0000000..d69e6ff --- /dev/null +++ b/emcs.lua @@ -0,0 +1,75 @@ +local emcs = { + node = { + ["default:"] = { + ["stone"] = 1, + ["cobble"] = 1, + ["desert_stone"] = 1, + ["stonebrick"] = 1, + ["desert_stonebrick"] = 1, + ["dirt_with_grass"] = 1, + ["dirt_with_snow"] = 1, + dirt = 1, + sand=1, + ["desert_sand"] = 1, + gravel = 4, + sandstone = 4, + sandstonebrick = 4, + clay = 16, + brick = 16, + tree = 32, + jungletree = 32, + junglewood = 8, + cactus = 8, + papyrus = 32, + bookshelf = 336, + glass = 1, + fence_wood = 12, + rail = 96, + ladder = 14, + wood = 8, + torch = 9, + sign_wall = 52, + chest = 64, + chest_locked = 320, + furnace = 8, + mossycobble = 1, + mese=75978, + obsidian = 64, + } + }, + craftitem = { + ["default:"] = { + stick = 2, + paper = 96, + book = 288, + coal_lump = 128, + mese_crystal = 8442, + diamond = 8192, + clay_lump = 16, + steel_ingot = 256, + copper_ingot = 85, + bronze_ingot = 255, + gold_ingot = 2048, + mese_crystal_fragment = 938, + clay_brick = 16, + } + } +-- block = { +-- ["default:"] = { +-- } +-- } +} + +for type, emcset in pairs(emcs) do + for prefix, subs in pairs(emcset) do + for name, emc in pairs(subs) do + local ornode = minetest.registered_items[prefix..name] + local node = {emc=emc} + for tagname, tagvalue in pairs(ornode) do + node[tagname] = tagvalue + end + print(name.."="..emc.."="..dump(node.emc)) + minetest["register_"..type](":"..prefix..name, node) + end + end +end \ No newline at end of file diff --git a/init.lua b/init.lua new file mode 100644 index 0000000..99f1b22 --- /dev/null +++ b/init.lua @@ -0,0 +1,93 @@ +dofile(minetest.get_modpath("equivalent_exchange").."/emcs.lua") + +equivalent_exchange = { + convert = function(pos) + local meta = minetest.get_meta(pos) + local inventory = meta:get_inventory() + local target = inventory:get_stack("to", 1) + if target:is_empty() then return end + if not inventory:room_for_item("from", target:get_name()) then return end + target = target:to_table() + local target_emc = equivalent_exchange.get_emc(target.name) + if not target_emc then return end + local emc = meta:get_int("emc") + local size = inventory:get_size("from") + for i=1, size do + local stack = inventory:get_stack("from", i) + if not stack:is_empty() then + stack = stack:to_table() + local local_emc = equivalent_exchange.get_emc(stack.name) + if local_emc ~= nil then + emc = emc + local_emc * stack.count + inventory:set_stack("from", i, {}) + end + --print(dump(stack)) + end + end + local timesOver = math.floor(emc / target_emc) + emc = emc - timesOver * target_emc + meta:set_int("emc", emc) + inventory:add_item("from", {name=target.name, count = timesOver}) + meta:set_string("formspec", equivalent_exchange.get_formspec(emc, target_emc)) + end, + get_emc = function(name) + return minetest.registered_items[name].emc + end, + get_formspec = function(emc, target) + return "size[8,10]".. + "list[current_name;to;1,0;1,1;]".. + "list[current_name;from;0,1.5;8,4;]".. + "list[current_player;main;0,6;8,4;]".. + "image[4,0;1,1;default_furnace_fire_bg.png^[lowpart:".. + (emc/target*100)..":default_furnace_fire_fg.png]" + end, +} + +minetest.register_craftitem("equivalent_exchange:book_of_power_1", { + description = "Book Of Power 1", + inventory_image = "default_book.png", + emc = 1200, +}) + +minetest.register_node("equivalent_exchange:condenser", { + description = "Energy Condenser", + tiles = { + "default_chest_top.png^equivalent_exchange_magic.png", + "default_chest_top.png^equivalent_exchange_magic.png", + "default_chest_side.png^equivalent_exchange_magic.png", + "default_chest_side.png^equivalent_exchange_magic.png", + "default_chest_side.png^equivalent_exchange_magic.png", + "default_chest_front.png^equivalent_exchange_magic.png" + }, + paramtype2 = "facedir", + groups = {cracky=2}, + is_ground_content = false, + sounds = default.node_sound_stone_defaults(), + on_construct = function(pos) + local meta = minetest.get_meta(pos) + meta:set_string("formspec", equivalent_exchange.get_formspec(0, 0)) + meta:set_string("infotext", "Energy Condenser") + local inv = meta:get_inventory() + inv:set_size("to", 1) + inv:set_size("from", 8*4) + end, + can_dig = function(pos,player) + local meta = minetest.get_meta(pos); + local inv = meta:get_inventory() + if not inv:is_empty("to") then + return false + elseif not inv:is_empty("from") then + return false + end + return true + end, + on_metadata_inventory_put = function(pos, listname, index, stack, player) + equivalent_exchange.convert(pos) + return stack:get_count() + end, + on_metadata_inventory_move = function(pos, from_list, from_index, to_list, to_index, count, player) + equivalent_exchange.convert(pos) + return count + end, + emc = 500 +}) \ No newline at end of file diff --git a/textures/equivalent_exchange-bar-bg.xcf b/textures/equivalent_exchange-bar-bg.xcf new file mode 100644 index 0000000000000000000000000000000000000000..2ec4e87f34f4dcda637709765656f0aaa912da58 GIT binary patch literal 4814 zcmeHJc|4Te9v>8AU$U!AJEDjb6%z_cNg_%bV~oi%%#bCOR0xSmrG&JQ$W|&UiBefg zqFtL7D&Dcw``+G9^ZtI%40-SE{&7F|-v2tE&w0*ye#<%M`+UFWJcr2&45mcTeJQ@I z00s#P6{-SupeRBW5rM}TsAQ{D5(z65WvHWsRaMwxoC?I-LMzLJVGZc)z(7V&D7=%< zsbtMz&_WqLlyFw4AH~+*(Fr{YL?|ne#$*^UIV>NvL9_@-hZ`Chz@Tv10W2R~DIH%X zogKjDP;`jKfW!2rQ4D7o66GfyBcV$dQoVnYI^?JP`wpf?aD!=dRuGe7G&C0&BY$QT z+6=;iSfLbF5Z#Z##eBA}FP9NIygeBFP*cdV`hs6^rc4hrGG`rg$u8S$asP7Cxj#L=xV(Ztq0U`y(8bn`kI zF6E`i275Y~O;r|!xd%m+rZc&X#LM zM|N%WakezjB4dCY#dy)`4bdsb%5P#o|I4PT(+75Nyd2GSVF?hRG-ZzcnxL3{CokNA zfWDq*w<}KWjR{<1Z#r2C{QaZUbmuv)$0b~D=9BrnKf52+mFJ{Hv)pWEY0F}Sq}B|o zvrqW0%(FGE81eht)@x^v>HI3N$&5F$Uga0HJG-o| z{lhoH)~7gewyj6N*0kdlx1N0BtMWBSJW*vGbBA>y+tc$a8#{Ocn}h}ohe9f>Zh12( zut|?M1pXqEvPx>(-v1%6fn*lD`)^6jJzxLi(|53`<9JgEo$SxM)BxkDp-o(4`hw-& zq49^#T)FppKwy&sI$V4s6OR^Oe*ohVaq<&Pgc_)S{P8>3)JQy$G01xm@P4V`c`sib zZKKt6=P#piWA&l;1 zp|2rixhp!JIypG1oJdm%~QnP6)Vi=-rWaA37W&^EV-yj49eE#^bfXSr( z$)VBcQad4KxAE=y`hU0wH2M6tN_!e}q83<2U=( z^{}oiCuI}M)n*n&4k8B3h$BcK7ntMg+xs;_4I5}lVt|E{H)`kVz1PGd`d>9)E;zW8 zv)*x@uG%OJum<9jg+hWg^gg?D@#MakptbgMU=32F0b6(f&8fNP2ob;%U?1HmKei{D zwR#aQL5ehp2hsk#i;W$1cEE^YaI zJ@wJxheCyl2e8UN{X8gvG_F6`|KmT09OU51kADl{$qv2YpTN*h0Ze2rJg87H48qCr z&|;xN1snMwzQl|oiH??%Ra90VOPMrHZ^o?IW(%k`b`Hy(T|L&(7_0y`H#}-fY}~Hh zY3YYDvybN$oGm+l=}JvqedFEM_9xF@z3mc{fP7Vrag@nA(`Oo+nlD(m$Zo0AO1CxZ zycuvi35$%5*&dgel9ry4dF({qnc}jF$}2TDZa3b2@bKx2H*dQ}Nl42pscMd!Fhxh- z(0GoyrPX44#}zKC*RH2CHw1-*MQ)DSk&v`!-+{wf$4;IuEID_fs`~oP+f6NPkDk4J z^R9a|Sw=xwO>6wbsd@&6v**sYw6=9vwqljL=XxJMe>Qhx)aKZo3CXGZ4<63SJylRt zdhTLXb#48f=KF1rpS|pS|502@RsrB^BYdOTX7i~wknim3?nz_#1+YWIH*JlLOWd8d zUkJan;?m`7b+;Ps-fw^0@v5`yvxJnKl8VMyA$&7{Z@+Xo0pE8+U`S|0bPVLDq#Zbv znKKgpy;gw#`W@s;%Z*Xh96w=-F2bK@VYLY1yRGp;_#6U$d@{m6O298i_%{Il1BCy+ zyN4_zKSoUx;OiO~nh@}p{D98^_}g|QK>ooaS-B?*ib~EyerMFR-Vg zuBAO`>hxjumpQv3`+fnz-0)4q?B^Umb*2c|2lzwmcYgTPD@`HT~gb(a{2-pve z*c7upJ~3r4u%B}x|4eat1*qr7twx03f$)EmmLu4o4Dd|=KIA((xvU4eC_5uD2gx@ElFos}X0H12Tc!{I)D)+U>eh{+14cQ0y*#N%~*uPv|dvl2W4TV5U(dkE6xkPu-;?GeU?1QQv5)Ezz;9@7CD;e}1Mv9-?9VVZMfUBGeGe~hUl6|# zKCyWS_R9(J55w>N%o~&k_J_r9u}~;}FS;)w{*mzW3ror`R08}vD1KB=cMornfDh_1 zFfy4t&l2DR`>=UX`~voO5#k5pJ4yda}WFU8GbZ8()Nlj2>E@cM*00GHKL_t(I%YD<&Zqq;* z1n}Pm=TAdJ60sJbxZHRuUV$TTz#G5=f>ifFy%8v+joXHrgEwtJz$dMI*qQl8JLB-~ zZDNT8`1XcMB^lrN!X0emGMr9go8-DH~ZGmrR*S- zwqYs-QdMPgXEW*vO?fWFyS(QfNwrL7n%=?I^k{34s+G+!8!J0v=d!GcH$p}RjcS<` z)7z;p7c{|x$YwO)!|ULWx$NF{y+CsK7GwR3ri%j^EB~0Wuf9EaUD_KwWZbg3Jj(g6 z)1$xoZfmc_V3f-;8}j`0s89cJz{J8!KNW6JOmI4+igYDTS^vku!VA%@QfIGL82)e; zXOwigQ)aB+Uv{d7vqaTUC39^i=YUX%wRu_T4k9I;hPJW3NQ4HBxxF$x5nolA+?ifw z0g=T)MDy6gU1MD*^RQQj!`4E4RheG(utHfMnrs;+Xmv-mdbYdsoMSR~*Z+7s23h3kbxw0Uq*(a{T4=w3BE||f00000NkvXXu0mjf)7%V` literal 0 HcmV?d00001 diff --git a/textures/equivalent_exchange_magic.xcf b/textures/equivalent_exchange_magic.xcf new file mode 100644 index 0000000000000000000000000000000000000000..b419af5d40a6c52d10693388cafc4cc1b89d4e5c GIT binary patch literal 2420 zcmcJQTXPge6vumSvzxuJ!P}EnOd=*5t75@}CB|GJK2TPP1<3{i4^}Ok$!5szY_hwQ z_AP%cz0Qi;Pi4c?H#r8bW>#6)uBB>iGb+_{^ z7)Q1;N?Y?uLocYhksQ$SK` zQDQ{P(STcyDrhM{95o=BX4XhX!(OlAU=>qP$(QDbt2iPV4U3}Ed!6D3kPj6nIed1P zp6)b;ivVZUnCt$WMo^^9eUUmoX1&>S?$#>za0Phy-0T{6b3d~h4vzs{Jiy8gN5*fj zagGI;jlJh@|H-i}v+?NpJAdsYiXFZ1bKIt57mD#W$kudhx)`q~dh5~6(Jn#!(ap16 zb$E-5TYud6;!qv)GdH)E1S-q}yng18iY0l0Kb<+a16$nK-~nESXLsE^p$X5fi4w0N zI-9X+>3XX%xj?q1utO};W=t)@!^Ny^?b+{s<9_Z2b`UDu!>s7uq3`c=ANP`#(93Ze z(Y?c0AK0f+yDxX`cl$K9cjkfOG=M)m6sKVUe|*SIzA$C9MeL0&Od73Wdt;@EOlycK z*rT~onn=GN#Lhh6`76X;?9%*u{>orWka?I7_Fum}(GoyLDX@dz!$C1We_Z+H@`*i& zJ=R~Y%w5*^_!%8ZW$v4Sca=3l>mCrn0-E=}PEoK3?|#)gj$i@HcVoTdcL-Vev`ZwZ zlNce9%4#N&AEb16-aOt0A18O|l^%M@W=hiQWbsx2&R3D@K1yjS(&pPi9qp2r1)r+% zOPjN34hwZAl7p#S_N38A-RE8Ni_o5P4`4aIRY;Z2!PzX>w@wR1kv4^Nj-ZQ-ufwS! z<0-LK942%?SdVOhI*{Z*MQBC{$0&;7EuhF_I+YiKRW3$gpBt!67J8;TDNG1fe2+r17vFztSYhUBr(tY{$>O z8btgSr;PRpPH!^}SnXyezbFY-{WSugRec%~417szL6KP*xJn%jK?^=r6hd2KkqB1ej+F`Yi_Tn*3q4gSydL4QP9YFYr!3Sh7KSPn>A%_r2?AS7I^ IPt-X32dbxqZ2$lO literal 0 HcmV?d00001