Compare commits
877 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 26bb5986c6 | |||
| e175bccace | |||
| 127872b310 | |||
| b030cb9f00 | |||
| f1e5a33a6e | |||
| f42a5778d2 | |||
| d131e12498 | |||
| f1d9fda6ce | |||
| 2141ffe7f0 | |||
| 7baf538a76 | |||
| e833aa1e61 | |||
| 202259ef2a | |||
| fabc9bd82c | |||
| 9c021867f0 | |||
| 9749faa692 | |||
| 37e7c02c3c | |||
| 7f2318f89c | |||
| 925cf092be | |||
| 7c6ceefd94 | |||
| c7ec7e0890 | |||
| 0a7799a664 | |||
| 1316f035cd | |||
| 10a0453bea | |||
| efe726ecdd | |||
| 9a255432f5 | |||
| eba3e2456a | |||
| d40b9831c1 | |||
| 6632344f87 | |||
| 724f3baf4c | |||
| f7562db2e9 | |||
| 68de8fa1a2 | |||
| 6864f7ae07 | |||
| 7fa7b726f2 | |||
| c814fe591d | |||
| cd0a5d631b | |||
| d82cdabc6d | |||
| 2e976a609f | |||
| a13f9955f2 | |||
| a65b5015e6 | |||
| 07eb6c1238 | |||
| 529ea5e239 | |||
| a9b7faa98b | |||
| 78c7235bea | |||
| 59edb38208 | |||
| 08a7aff600 | |||
| 9f19e05592 | |||
| 5f20e3346c | |||
| fd188dc96c | |||
| e471293e60 | |||
| f28a3574df | |||
| b2b21eae41 | |||
| e8a186df60 | |||
| 6425ef6ecd | |||
| 7ebb2a0fbb | |||
| 20a1fec6fb | |||
| 0fffc829ab | |||
| 88635d9a8d | |||
| 0fd0ed1b1c | |||
| 87f884228e | |||
| 3495d3dfd4 | |||
| 0acb03b83d | |||
| 9adb0359dd | |||
| ac259dce6a | |||
| 7a6d49412e | |||
| 10f47a560a | |||
| a8f0bbe06b | |||
| dd3cdfcec5 | |||
| 503f14f0a6 | |||
| 30af345ceb | |||
| e8af0f228b | |||
| 0291ceff30 | |||
| d0614ba7d8 | |||
| 54366e2b35 | |||
| d128b0c228 | |||
| f7aa4c92bc | |||
| 0709d2dfc4 | |||
| 2ea08a3fc9 | |||
| 8c7185f8ff | |||
| f7651fff29 | |||
| 51f2a42367 | |||
| 4829ec8286 | |||
| 0b7341e4a8 | |||
| b252d1c891 | |||
| a31de25257 | |||
| 01f56ae633 | |||
| 669aa3188e | |||
| 219de337be | |||
| 7747899e90 | |||
| 82751e761e | |||
| c4c0585fd3 | |||
| 496e159010 | |||
| 754ee1ba83 | |||
| ffe1a52456 | |||
| 28696bd531 | |||
| 29098372af | |||
| 9dbcf21fa9 | |||
| a5a1f79102 | |||
| 8fb12119ef | |||
| 7f83c73a28 | |||
| 80a473a93b | |||
| adac94555b | |||
| 2f11054132 | |||
| 1314ee4588 | |||
| 4484863452 | |||
| ba9b790a02 | |||
| e4d862dbfd | |||
| 812e8c5990 | |||
| e3eeee7784 | |||
| 467bb91628 | |||
| 10a12a9b97 | |||
| e5f345d49c | |||
| 95ce9694aa | |||
| d1ec1a88ee | |||
| bfe82cdc0a | |||
| 4fe0d5e767 | |||
| b38148e095 | |||
| d528d9f205 | |||
| 60211cccdd | |||
| c3a331c13f | |||
| add866443d | |||
| bf83de08b2 | |||
| 6f822af262 | |||
| 7566b3e2fc | |||
| 30c074021b | |||
| e6586ac360 | |||
| 0429fe5f21 | |||
| e16d90333b | |||
| 59c7dd1285 | |||
| 13ba399418 | |||
| 8d152afcd3 | |||
| 9fdfbbea54 | |||
| f4303fc1ec | |||
| 3c62ac79c3 | |||
| e42863643d | |||
| ace7c7d660 | |||
| 35f2aa7d51 | |||
| 926a4a87c6 | |||
| d1d2c415bf | |||
| f631858be6 | |||
| d407ec4922 | |||
| 3587fce218 | |||
| 7464647bb8 | |||
| 0848f5db70 | |||
| 822e394966 | |||
| 68ed4c9c0f | |||
| f13d7f351d | |||
| 086ddd5a67 | |||
| acb1d00197 | |||
| 4aaa3f8929 | |||
| 793b8d6655 | |||
| cba89b0323 | |||
| 1f2cdfd843 | |||
| da39d81d5f | |||
| 1442248ec3 | |||
| 1500661e43 | |||
| a7c2824624 | |||
| 9d2549bdd8 | |||
| a37a2b4e89 | |||
| aa6bad7a72 | |||
| e2e5eed351 | |||
| b6de4ebf18 | |||
| 4545d78a51 | |||
| 6dc75fe26e | |||
| 0552282d9d | |||
| 8be01dfb87 | |||
| 4c5803b986 | |||
| 3b4b9a1bd5 | |||
| 2c7959e399 | |||
| 4649841341 | |||
| 3d4cfb2ee8 | |||
| 8092d0d354 | |||
| ceee1f181f | |||
| eefb11544e | |||
| af5921f9e8 | |||
| 75be2ff039 | |||
| b6f4bdb64d | |||
| b76c9f1371 | |||
| 50bf591418 | |||
| b077aff1f8 | |||
| 8debd6c499 | |||
| 53ad6c776b | |||
| e37f8ef65d | |||
| d8b20f53a9 | |||
| bf1a3b7751 | |||
| c8a6d50ce3 | |||
| 13af30f657 | |||
| 5d7f552643 | |||
| 82be548fc7 | |||
| 38249608e4 | |||
| 8f66765696 | |||
| fd5f9263d8 | |||
| 36d94a17aa | |||
| ede2b4ce25 | |||
| e09ec8c420 | |||
| 3d4c03e184 | |||
| 17119fd990 | |||
| 9a00185b6d | |||
| 2c7b239914 | |||
| 4039188712 | |||
| ecb697ab11 | |||
| ab1f519401 | |||
| d06a70ee22 | |||
| 422f9faf76 | |||
| 96ab73001b | |||
| 854676a33c | |||
| 7f76723da5 | |||
| 3fc7cf0247 | |||
| b377dfdd69 | |||
| 51522019ca | |||
| ff1091d252 | |||
| 15dff5d53d | |||
| 7ab89a0657 | |||
| dcd36b3b2f | |||
| 7b985c72bd | |||
| 269d3766db | |||
| d7e7ef0cb4 | |||
| 472f1e65a2 | |||
| 56268aba79 | |||
| 9d7dacdc29 | |||
| fb2aa21337 | |||
| 8bad14f982 | |||
| 0e797b2120 | |||
| 17c38a6418 | |||
| 58a6dabb20 | |||
| 329e613c99 | |||
| 11a4783881 | |||
| e230440cba | |||
| 149e7d251a | |||
| 405f14bd13 | |||
| acd77ff3f2 | |||
| a0ec9ceb51 | |||
| d6f2ed30e5 | |||
| 9785e38e3f | |||
| 1759bd898e | |||
| ae0d02e7d5 | |||
| d76eec2145 | |||
| d7e1554e41 | |||
| 9dee7f6c0e | |||
| 13c3067068 | |||
| 7c4e5679a3 | |||
| 03ed421331 | |||
| 36197a5dc6 | |||
| f407a26a8f | |||
| cb1011295c | |||
| 55a56ad79d | |||
| dd2f1c6dc7 | |||
| f14407b87a | |||
| 04f006695e | |||
| 4f36ccf64d | |||
| d9b4410c94 | |||
| 9bbd0ad61b | |||
| 662a7805dd | |||
| c46eadec08 | |||
| 148207f5c3 | |||
| 3ae251f098 | |||
| 82a906886f | |||
| 5b2c6658c0 | |||
| 653557bc65 | |||
| dde87448a9 | |||
| 8c29eeecdc | |||
| d852d0c216 | |||
| f9bb00a7e7 | |||
| 9f7e42ca7d | |||
| b76c18fedf | |||
| 98ce8235bb | |||
| e1ea4ae22f | |||
| 20ba83c529 | |||
| 225a4d5ab6 | |||
| bd4f03652e | |||
| d6650f9617 | |||
| c5607bda4e | |||
| 11af1f2111 | |||
| 7748f7c92d | |||
| 801fec3eaa | |||
| de324aad91 | |||
| 16ccb2ee46 | |||
| bd0d2a1f28 | |||
| 9abd53a8e8 | |||
| 1f12fc5e91 | |||
| 87fcc6c267 | |||
| e301459dfa | |||
| bf802f1c6f | |||
| 7ba4ca6923 | |||
| 53ed861e23 | |||
| 833f8aca2a | |||
| 9bcf45b7e2 | |||
| b2847677ed | |||
| 95845d5a6c | |||
| 286a3631be | |||
| 6506301049 | |||
| 422543f205 | |||
| 1eec160b74 | |||
| de23b62493 | |||
| 2b6299f2b0 | |||
| b495c972c4 | |||
| 7722dcc720 | |||
| c4d5add5f1 | |||
| 348e6436b8 | |||
| 92457ac680 | |||
| 9e53737635 | |||
| 0e0729166f | |||
| 15a1e8f150 | |||
| b443f1ce57 | |||
| 486a68d06b | |||
| 9b263c5501 | |||
| daf4910548 | |||
| 4f5bdfefe8 | |||
| c9f1387098 | |||
| 1f1d6d041a | |||
| 403a6e8b4a | |||
| 0a0c23c190 | |||
| d28cd798e9 | |||
| 3dedb7eefb | |||
| ae3295d3c9 | |||
| 4bac5f43db | |||
| 2e9a5dc8ea | |||
| 9ac4ea4e6e | |||
| 601faf5087 | |||
| 88e3df897e | |||
| f57a8cefda | |||
| d3fdac2b81 | |||
| f7be92adcf | |||
| 53f18f8e80 | |||
| 770db27777 | |||
| de674f72bd | |||
| 19747ba1f1 | |||
| 024b5c6503 | |||
| 63dd035c85 | |||
| e611b1fb76 | |||
| 4c8ad87875 | |||
| 194d1171f9 | |||
| 376bbf7e84 | |||
| ddfac3a339 | |||
| 95d8216992 | |||
| 4e2afb297e | |||
| d9588441b0 | |||
| 86a42e970f | |||
| bdb0ac14c5 | |||
| 8c735305d7 | |||
| 9011273229 | |||
| 3328bfcda2 | |||
| 158d7c6a04 | |||
| 0085262779 | |||
| 1ed654843c | |||
| 6277058167 | |||
| 6e6f8d33cd | |||
| efb9ab512a | |||
| a9c891f69a | |||
| 2ea120e614 | |||
| 29c18bbf33 | |||
| 027e8477c2 | |||
| f8bac0475a | |||
| 55c527e557 | |||
| 7714f5196e | |||
| 430ee8430d | |||
| 2e98ec015c | |||
| b6955d42b6 | |||
| e696b31013 | |||
| b84c25e64c | |||
| 327b26559f | |||
| f434688f3a | |||
| 7996c44075 | |||
| f5e9df07d4 | |||
| 159a9370c9 | |||
| ad5dcf5c97 | |||
| 104d6fc34d | |||
| 40caeec92f | |||
| 119cdbc2c0 | |||
| a44c74b0d7 | |||
| a55dbb061c | |||
| 9fdf0345b3 | |||
| 346f5aeaac | |||
| d4b5d0dc26 | |||
| d77838146d | |||
| 5b1f98b2d8 | |||
| 1c197c0f20 | |||
| 46a1faaca2 | |||
| dd28b610e1 | |||
| aa2bb45199 | |||
| 48146af137 | |||
| 582d7f140c | |||
| ffdc052d99 | |||
| de7d6321f0 | |||
| 235eef23e3 | |||
| c7fcdf7d8b | |||
| 3a6ab149e4 | |||
| 9337eceb82 | |||
| 35f91bf0d0 | |||
| 6d14d082b0 | |||
| 98ad919f1b | |||
| fb4af262b7 | |||
| 5f774749e8 | |||
| 81b3ff6976 | |||
| c8698fc2bf | |||
| be9fb6d04c | |||
| 90ca2c7e92 | |||
| 39ac308889 | |||
| 4d268b97a9 | |||
| 4b6fbf68b6 | |||
| a289dec832 | |||
| a4f50ea9ef | |||
| 0e8f7c9d03 | |||
| 7c0935f447 | |||
| 1e9e8d2639 | |||
| 3455e815b8 | |||
| a08e61b818 | |||
| 19c6e2ff2d | |||
| 4f25c1551b | |||
| 3b94e9420d | |||
| f30f334a23 | |||
| ed702a5c73 | |||
| 1364117374 | |||
| ed4b864ba2 | |||
| 706e577dab | |||
| ccc8486571 | |||
| 3e8440644e | |||
| 50f4e08b64 | |||
| cfa9fa2843 | |||
| 47f819e021 | |||
| e67b196e19 | |||
| 6d151bb890 | |||
| 3305270a71 | |||
| f824bfd2e1 | |||
| 036f4e1c5b | |||
| 146d3f5628 | |||
| 9c821cb015 | |||
| 3a83c99b1f | |||
| 447c6debab | |||
| 50470ae3cf | |||
| 993be652c9 | |||
| b3bfbd0b58 | |||
| 49b3dc8b60 | |||
| 71ffcfb839 | |||
| 73f76a6654 | |||
| 645de1d868 | |||
| 8f40478695 | |||
| 056fcc3818 | |||
| 0ed0eb9d5f | |||
| 3ddc846648 | |||
| f98f6ef852 | |||
| 4192d721a0 | |||
| a0f3ef9d86 | |||
| 6b29288de6 | |||
| 285fc6314c | |||
| 50fd83e96b | |||
| cc51138a6a | |||
| 918df0bf7f | |||
| c852199901 | |||
| fd95d3de47 | |||
| c3dd6dabe1 | |||
| b0e81ac2d1 | |||
| 30f4cdf545 | |||
| ee9441474e | |||
| 8846202270 | |||
| 17a900ae9a | |||
| 66bc243b41 | |||
| a2bda8f449 | |||
| a2c2a4df0f | |||
| b4e237244a | |||
| b541ad8d18 | |||
| 64f29a7dba | |||
| 6d25b7ef3c | |||
| c3a608ef59 | |||
| af1f5c34d2 | |||
| f5378e060e | |||
| 47407acc42 | |||
| d7f3428824 | |||
| 63e339b88b | |||
| 98761809fd | |||
| 8cb013b686 | |||
| f2fe376982 | |||
| 603452de1f | |||
| 40bd96d21c | |||
| a14d160a07 | |||
| df28a5520f | |||
| 0d096944cc | |||
| 963d3414d8 | |||
| 4414451f5e | |||
| e0ddb92b81 | |||
| 6f551ad67f | |||
| fd3349614d | |||
| 903f211044 | |||
| 78e1e26a11 | |||
| 2a6de11597 | |||
| cd2b53af85 | |||
| 1c5565491a | |||
| 311cc5c6f6 | |||
| 41796449ed | |||
| 9eef9d3840 | |||
| 13afa6908a | |||
| 103438f805 | |||
| eaa01f7648 | |||
| e81fb09599 | |||
| 94d73aec7c | |||
| b51af43dba | |||
| 85dc8ae7c1 | |||
| c34176f392 | |||
| 76fe2175a0 | |||
| c5d33ed892 | |||
| b423d99879 | |||
| 81156b411d | |||
| 6be1660d41 | |||
| 304f394497 | |||
| 50f21125c8 | |||
| 30b85bd239 | |||
| 9ce00d338f | |||
| 11f5b71089 | |||
| e7da72163b | |||
| 6d7c65dd70 | |||
| 5e21101619 | |||
| 3db8d0185f | |||
| 2f5ecfe638 | |||
| 75843e802d | |||
| e41b6943aa | |||
| 92347ad2f5 | |||
| 517bd77df7 | |||
| 19f928a9a5 | |||
| 73251a0fe5 | |||
| 9335daff7d | |||
| cc5377d53b | |||
| 059f20d801 | |||
| d229570495 | |||
| c284748b6c | |||
| 880a9c8821 | |||
| c68c02ef3b | |||
| 89c4d2736c | |||
| 01778794e5 | |||
| 8f2a06e457 | |||
| 2d71b75019 | |||
| 9f09cd04d4 | |||
| b041fae0d5 | |||
| c466a0e00e | |||
| 618e9390c6 | |||
| 9a71bfb0f0 | |||
| 9680123906 | |||
| 87730894e9 | |||
| 71c944daea | |||
| e96b4a698a | |||
| 1d5465a4b8 | |||
| 09cbfe96d6 | |||
| cbdad7c58e | |||
| 6be96956a9 | |||
| e376e002e9 | |||
| 0b9df31d4e | |||
| cef6dbf0d7 | |||
| e4af7b1947 | |||
| 6eadb8f861 | |||
| b6b6a83563 | |||
| 32ab4c6af4 | |||
| fda8c87410 | |||
| 389e060707 | |||
| 0942a90ef4 | |||
| 8cef06512a | |||
| 8e4658be20 | |||
| 0bd2bd6b5a | |||
| db2c4c4325 | |||
| ac793ee847 | |||
| 6404f26cca | |||
| ced6ad865c | |||
| 24750f00b1 | |||
| df08ce0513 | |||
| f9c274fb48 | |||
| 3582582e3f | |||
| 6de48f8541 | |||
| 5a2c2d06d3 | |||
| 98d3cafdfd | |||
| 904de49543 | |||
| b0772bf94c | |||
| aa5d5e3623 | |||
| 42f4ef2855 | |||
| 3eb2582f29 | |||
| 307f86ded8 | |||
| 56f57e18a5 | |||
| eab695b692 | |||
| 0fb393820b | |||
| 01fe5c7a8b | |||
| 8468b47443 | |||
| 6cb583c918 | |||
| d69395a117 | |||
| 59effe8131 | |||
| 6f42876963 | |||
| 08952b48dd | |||
| e3c9c4ce65 | |||
| 7b91da58c0 | |||
| 26c06bca15 | |||
| 4458bd28ab | |||
| df3f00d978 | |||
| 18ae994ee4 | |||
| 47888b5546 | |||
| e18593feb5 | |||
| af4c3de55e | |||
| bea29331a3 | |||
| 9b9579b358 | |||
| 52da4f9528 | |||
| 50aac2c768 | |||
| 33946438bd | |||
| 9372cb2f14 | |||
| 00037ace77 | |||
| e13af643ba | |||
| ffcfd809d8 | |||
| 7c10a6b883 | |||
| c2bddc30c4 | |||
| 024655f84d | |||
| 589e48ac01 | |||
| 43d3a2c1c0 | |||
| c432fa7200 | |||
| cc744ab8b9 | |||
| 8fe4229a8e | |||
| 3f86884965 | |||
| 1319ec79c9 | |||
| 31a3afc18b | |||
| 9d6026635d | |||
| 39038ac935 | |||
| 4f627b234c | |||
| 6180c188e6 | |||
| 7ada6d18ee | |||
| f493767243 | |||
| ba4cdbcb85 | |||
| f3877aa1ec | |||
| 366b31b3aa | |||
| 533fb5c34b | |||
| 62d1d904c6 | |||
| 03fb43db16 | |||
| 9576bec855 | |||
| b5da6730a1 | |||
| 039bab4811 | |||
| 4b5bdf9893 | |||
| 3c3c23712d | |||
| af91c04ea1 | |||
| 0240a5d76a | |||
| 0c0aafba2f | |||
| b541025738 | |||
| 62f842d4ef | |||
| fc154d8568 | |||
| 4641e48529 | |||
| 0fae87afc7 | |||
| ee1b6bb0d7 | |||
| 36ca8b9f0a | |||
| 9c94c7342b | |||
| 399d67b42c | |||
| 10761a1e9d | |||
| d1ddf53d99 | |||
| f776b4d548 | |||
| 41180792e1 | |||
| 2269c05d98 | |||
| 63616e5730 | |||
| 6ca3e6e696 | |||
| a4b5cfc3b9 | |||
| 38b0a7a153 | |||
| aa4863a979 | |||
| 44c7a46315 | |||
| c3b1dea7c5 | |||
| 40ec517480 | |||
| 2fdc16d3a8 | |||
| 053485a95a | |||
| e910af7734 | |||
| 59d7bd6c16 | |||
| 1a11462ddd | |||
| 77d615559f | |||
| 6878bfa4b0 | |||
| f1d50eca1a | |||
| 4ee32dd0b0 | |||
| 66e589324a | |||
| 362b001cb4 | |||
| b6fd4b3c0f | |||
| e364603a5a | |||
| c58bebc346 | |||
| 97f11f0c61 | |||
| 5c2fa72f95 | |||
| ebd8501301 | |||
| fa07247bd7 | |||
| 95d25ddf47 | |||
| 7a45e1faf4 | |||
| 1f88494832 | |||
| c629b4e0cf | |||
| 65ca607134 | |||
| 898c07ca01 | |||
| 883c267aa8 | |||
| 22cf913708 | |||
| b4ba1af1ec | |||
| 892c919ee2 | |||
| a65b3d2ceb | |||
| c826a3e24f | |||
| fc98505f22 | |||
| ea54ccbcf5 | |||
| 7796c6d4b6 | |||
| e2e6f6e83f | |||
| a7a1a87cd8 | |||
| e50eb7965f | |||
| d25a8a53a2 | |||
| 92b48f01a2 | |||
| 42f0d37c44 | |||
| 088a1827be | |||
| 6a21968dab | |||
| 7c5ff5322a | |||
| 7834028459 | |||
| c43cbbef43 | |||
| ead6274ca4 | |||
| f1c41bab3f | |||
| 12e74dc0de | |||
| c10088d907 | |||
| a12d29c4a0 | |||
| 2227510acf | |||
| 97ae7e1f14 | |||
| fc119070b2 | |||
| 82e3a95f11 | |||
| e6998913e1 | |||
| a3e69ce608 | |||
| ceef176a2a | |||
| c2e2696707 | |||
| 4d6c61dfcb | |||
| 932141cc9e | |||
| adf59774d4 | |||
| 9c6668b0f7 | |||
| 1b7f11a12e | |||
| 3cf4f9122c | |||
| d97996070a | |||
| 8a165bea09 | |||
| f707f95373 | |||
| b2a660ec9b | |||
| d6499c16b0 | |||
| de3e0178a4 | |||
| 203522316c | |||
| 719ea5090b | |||
| 00e19d67a2 | |||
| 169f6393d1 | |||
| 12bf337238 | |||
| 3b544c2486 | |||
| 660e17d167 | |||
| b10246a67b | |||
| 74362bb543 | |||
| 81df58afa5 | |||
| 535289e694 | |||
| d730503378 | |||
| f3349b0a2d | |||
| f667e9a5f0 | |||
| 2c0a2975de | |||
| 2e3d6b721a | |||
| 94e294f4e9 | |||
| 91620a0042 | |||
| ffc79b5494 | |||
| ce7c29d0ac | |||
| 5ac8db41e7 | |||
| 6ece190ac4 | |||
| 00a596ea8f | |||
| 1fc1d5517d | |||
| d5fc7a5b21 | |||
| 1f85d0f607 | |||
| dfe5b82bda | |||
| c7f8f4249e | |||
| 5efa6d6251 | |||
| 4269a66a4b | |||
| df2a7c1858 | |||
| c483bd17f5 | |||
| 92536fceb4 | |||
| ded71cb2bd | |||
| 41a4518c5b | |||
| 87643094c3 | |||
| 8a4c9b58e6 | |||
| 5436e6bf08 | |||
| 078112d97b | |||
| 46355a4e9b | |||
| eb389971a3 | |||
| a38ebf7c4d | |||
| dfcba264f3 | |||
| d343ac47f5 | |||
| 05db930a4e | |||
| 33bc0a6a3f | |||
| f2f48a8d59 | |||
| 0f0af2349b | |||
| 32a4fcab77 | |||
| a847a01d8a | |||
| ed643787df | |||
| 524b26d2a2 | |||
| 184b1f8efb | |||
| 06cca13087 | |||
| 8e735e72ff | |||
| d3dd137570 | |||
| 78e1126c38 | |||
| ebe3ff045d | |||
| 6291a545c3 | |||
| 99fd5a9d53 | |||
| 416c7d2683 | |||
| 0c88d1e7ee | |||
| d88f550eb0 | |||
| e21c59b326 | |||
| d8af8d26be | |||
| 02426bc101 | |||
| 11f8471772 | |||
| d35b720a16 | |||
| 7a5b84c10a | |||
| 800860d4e6 | |||
| ac81418684 | |||
| 7daad58607 | |||
| 038ca23523 | |||
| 37d8833b95 | |||
| fdcba13369 | |||
| b1ac0adfd8 | |||
| 7ba2893635 | |||
| ed8baf8c15 | |||
| 758377ed5d | |||
| a2091d10fe | |||
| fed12cb99f | |||
| 66c365d11f | |||
| 044f4c9ed3 | |||
| 91a74813d9 | |||
| a0b645a0a7 | |||
| d439fb2915 | |||
| 7efd4d872f | |||
| 1b09760631 | |||
| 04daadceed | |||
| 4d3df96350 | |||
| d7e2ae8fcb | |||
| 73f471e685 | |||
| 390ad875ee | |||
| e5f43bf315 | |||
| 8a72ebca89 | |||
| ad1eff2adb | |||
| 9e252df8d9 | |||
| 67584083c6 | |||
| c1c7e94cf6 | |||
| 85dec35366 | |||
| d5372a5ff6 | |||
| c8eb792d38 | |||
| f4ef7edf86 | |||
| 67c733b418 | |||
| fe4db2eb98 | |||
| 2891014cf6 | |||
| e809c688df | |||
| 71a9bb2532 | |||
| 3363acb7db | |||
| 8f6f35b9cf | |||
| ff75f34333 | |||
| e2c0129037 | |||
| 7fe7f4b1c2 | |||
| 693487504c | |||
| 883d9ba49b | |||
| fe8d824526 | |||
| d2250b115f | |||
| e5ab9df086 | |||
| 96af371882 | |||
| bde76d1fb1 | |||
| eb4caaa688 | |||
| 3ba04b3831 | |||
| 7cd8b72bb7 | |||
| 2182b6e37c | |||
| 5d26b98ab8 | |||
| 979531afb7 | |||
| dcf7de9000 | |||
| 87999dbf27 | |||
| c2d18ce013 | |||
| 046a27bf4c | |||
| 841bc6e356 | |||
| e72b5b369c | |||
| d635a87f01 | |||
| 51481d3e30 | |||
| 77e11c7a24 | |||
| 3056bb6ffb | |||
| edc0cef2bb | |||
| 4bd2797f5e | |||
| f37dfd0a24 | |||
| 937ea00e9d | |||
| b431d5d681 | |||
| 0ef854ca4b | |||
| 2c6e50d48a | |||
| dcd94b1cfa | |||
| 89de98f71e | |||
| d16677224a | |||
| 89bebc4385 | |||
| 987ea8d39d | |||
| f4212a86c3 | |||
| 3c4a0cae11 | |||
| 2894a7caa0 | |||
| 044e639827 | |||
| d7b97fa7b8 | |||
| 62435a65f1 | |||
| bf4818cf97 |
@@ -0,0 +1,30 @@
|
||||
---
|
||||
name: Bug report
|
||||
about: You found a bug or encountered a crash? Please report it here.
|
||||
|
||||
---
|
||||
|
||||
<!-- Provide a summary of the issue in the Title above, please do not "[Tag]" it. -->
|
||||
|
||||
**Describe the bug**
|
||||
<!-- Always use the most recent version from ae-mod.info, it might already be fixed. -->
|
||||
|
||||
**To Reproduce**
|
||||
<!-- Please provide the steps to reproduce it, otherwise we might not be able to fix it. -->
|
||||
|
||||
**Expected behavior**
|
||||
<!-- A clear and concise description of what you expected to happen. -->
|
||||
|
||||
**Additional context**
|
||||
<!-- Screenshots, crashlogs, etc. -->
|
||||
<!-- A complete crashlog is required when reporting a crash. No excerpts. -->
|
||||
<!-- Please use pastebin or gist for posting the complete crashlog. -->
|
||||
|
||||
**Environment**
|
||||
<!-- Include as many relevant details about the environment -->
|
||||
<!-- Like the used version, SP/MP, other mods and their version -->
|
||||
<!-- The following ones are required, please note "latest" is not a version -->
|
||||
|
||||
- Minecraft Version:
|
||||
- AE2 Version:
|
||||
- Forge Version:
|
||||
@@ -0,0 +1,17 @@
|
||||
---
|
||||
name: Feature Request
|
||||
about: A feature request or suggestion to improve Applied Energistics 2
|
||||
|
||||
---
|
||||
|
||||
<!-- Provide a summary of the issue in the Title above, please do not "[Tag]" it. -->
|
||||
|
||||
**Describe the feature**
|
||||
<!-- Tell us how it should work. -->
|
||||
|
||||
**Reasons why it should be considered**
|
||||
<!-- This can help us in various degrees, e.g. to determine if it fits our design ideas. -->
|
||||
|
||||
**Additional Context**
|
||||
<!-- Use this for further details, e.g. screenshots, links to mods for integrations. -->
|
||||
<!-- Features will only be considered for the latest/next version. -->
|
||||
@@ -0,0 +1,23 @@
|
||||
name: Build
|
||||
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
- name: Set up OpenJDK 17
|
||||
uses: actions/setup-java@v4
|
||||
with:
|
||||
java-version: '17'
|
||||
distribution: 'adopt' # You can choose other OpenJDK distributions.
|
||||
- name: Update Build Script (Before Build)
|
||||
run: ./gradlew updateBuildScript
|
||||
- name: Build with Gradle
|
||||
run: ./gradlew build
|
||||
- name: Upload Artifact
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: AE2-UEL
|
||||
path: build/libs/*.jar # Make sure this path matches the location of your build artifacts
|
||||
@@ -0,0 +1,82 @@
|
||||
# Publishes built jars to distribution platforms
|
||||
name: Publish
|
||||
|
||||
on:
|
||||
push:
|
||||
tags:
|
||||
- 'v[0-9]+.[0-9]+.[0-9]+' # any semver tag, e.g. 1.2.3
|
||||
|
||||
env:
|
||||
# type of release
|
||||
RELEASE_TYPE: "release"
|
||||
|
||||
jobs:
|
||||
Publish:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
permissions:
|
||||
contents: write # needed to create GitHub releases
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Check for Duplicate Tags
|
||||
run: |
|
||||
if git rev-parse -q --verify "refs/tags/${{ github.ref }}" >/dev/null; then
|
||||
echo "Tag already exists. A version bump is required."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
|
||||
- name: Build Project
|
||||
uses: gradle/gradle-build-action@v2
|
||||
with:
|
||||
arguments: 'build --build-cache --daemon' # use the daemon here so the rest of the process is faster
|
||||
generate-job-summary: false
|
||||
gradle-home-cache-includes: |
|
||||
caches
|
||||
jdks
|
||||
notifications
|
||||
wrapper
|
||||
|
||||
- name: Publish to GitHub
|
||||
uses: softprops/action-gh-release@v1
|
||||
with:
|
||||
files: "build/libs/*.jar"
|
||||
generate_release_notes: true
|
||||
fail_on_unmatched_files: true
|
||||
|
||||
- name: Publish to Maven
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
MAVEN_USER: "${{secrets.MAVEN_USER}}"
|
||||
MAVEN_PASSWORD: "${{secrets.MAVEN_PASSWORD}}"
|
||||
with:
|
||||
arguments: 'publish --daemon'
|
||||
generate-job-summary: false
|
||||
gradle-home-cache-includes: |
|
||||
caches
|
||||
jdks
|
||||
notifications
|
||||
wrapper
|
||||
|
||||
- name: Publish to Curseforge
|
||||
uses: gradle/gradle-build-action@v2
|
||||
env:
|
||||
CURSEFORGE_API_KEY: "${{secrets.CURSEFORGE_API_KEY}}"
|
||||
CURSEFORGE_PROJECT_ID: "${{secrets.CURSEFORGE_PROJECT_ID}}"
|
||||
RELEASE_TYPE: "${{env.RELEASE_TYPE}}"
|
||||
with:
|
||||
arguments: 'curseforge --daemon'
|
||||
generate-job-summary: false
|
||||
gradle-home-cache-includes: |
|
||||
caches
|
||||
jdks
|
||||
notifications
|
||||
wrapper
|
||||
@@ -0,0 +1,39 @@
|
||||
# Updates the Gradle Cache when relevant files change
|
||||
name: Update Gradle Cache
|
||||
|
||||
on:
|
||||
workflow_dispatch:
|
||||
push:
|
||||
branches:
|
||||
- master
|
||||
paths:
|
||||
- "gradle**" # covers gradle folder, gradle.properties, gradlew
|
||||
- "build.gradle*"
|
||||
- "settings.gradle*"
|
||||
- "src/main/resources/*_at.cfg" # access transformers
|
||||
|
||||
jobs:
|
||||
Update_Cache:
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- name: Checkout Repository
|
||||
uses: actions/checkout@v3
|
||||
|
||||
- name: Setup Java
|
||||
uses: actions/setup-java@v3
|
||||
with:
|
||||
distribution: 'zulu'
|
||||
java-version: '17'
|
||||
|
||||
- name: Update Cache
|
||||
uses: gradle/gradle-build-action@v2
|
||||
with:
|
||||
arguments: 'test --build-cache --no-daemon' # disable daemon since only one gradle operation will happen
|
||||
generate-job-summary: false
|
||||
gradle-home-cache-includes: |
|
||||
caches
|
||||
jdks
|
||||
notifications
|
||||
wrapper
|
||||
cache-write-only: true
|
||||
+76
-24
@@ -1,31 +1,83 @@
|
||||
# exclude all
|
||||
/*
|
||||
.nopublish
|
||||
|
||||
# include important folders
|
||||
# need gradle
|
||||
!gradle/
|
||||
!gradlew
|
||||
!gradlew.bat
|
||||
!build.gradle
|
||||
!gradle.properties
|
||||
!.travis.yml
|
||||
### Windows ###
|
||||
|
||||
# include markdowns
|
||||
!README.md
|
||||
!LICENSE
|
||||
thumbs.db
|
||||
*.db
|
||||
|
||||
# include sourcecode
|
||||
!src/
|
||||
### Java ###
|
||||
|
||||
# include git important files
|
||||
!.gitmodules
|
||||
!.gitignore
|
||||
*.class
|
||||
|
||||
# code format to reduce noise in git commits
|
||||
!codeformat/
|
||||
# Mobile Tools for Java (J2ME)
|
||||
.mtj.tmp/
|
||||
|
||||
# Github specific files and directories
|
||||
!.github/
|
||||
# Package Files #
|
||||
*.war
|
||||
*.ear
|
||||
*.txt
|
||||
|
||||
# Explicit ignores
|
||||
Thumbs.db
|
||||
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||
hs_err_pid*
|
||||
|
||||
### Eclipse ###
|
||||
|
||||
*.pydevproject
|
||||
.metadata
|
||||
.gradle
|
||||
bin/
|
||||
tmp/
|
||||
*.tmp
|
||||
*.bak
|
||||
*.swp
|
||||
*~.nib
|
||||
local.properties
|
||||
.settings/
|
||||
.loadpath
|
||||
/eclipse
|
||||
|
||||
# Eclipse Core
|
||||
.project
|
||||
|
||||
# External tool builders
|
||||
.externalToolBuilders/
|
||||
|
||||
# Locally stored "Eclipse launch configurations"
|
||||
*.launch
|
||||
|
||||
# CDT-specific
|
||||
.cproject
|
||||
|
||||
# JDT-specific (Eclipse Java Development Tools)
|
||||
.classpath
|
||||
|
||||
# Java annotation processor (APT)
|
||||
.factorypath
|
||||
|
||||
# PDT-specific
|
||||
.buildpath
|
||||
|
||||
# sbteclipse plugin
|
||||
.target
|
||||
|
||||
# TeXlipse plugin
|
||||
.texlipse
|
||||
|
||||
### Intellij IDEA ###
|
||||
|
||||
*.iml
|
||||
*.ipr
|
||||
*.iws
|
||||
|
||||
.idea/
|
||||
.idea_modules/
|
||||
/classes/
|
||||
/out/
|
||||
/build/
|
||||
|
||||
# Linux
|
||||
*~
|
||||
|
||||
run/
|
||||
|
||||
logs/
|
||||
|
||||
-20
@@ -1,20 +0,0 @@
|
||||
sudo: required
|
||||
dist: trusty
|
||||
|
||||
language: java
|
||||
jdk:
|
||||
- oraclejdk8
|
||||
- openjdk8
|
||||
|
||||
before_cache:
|
||||
- rm -f $HOME/.gradle/caches/modules-2/modules-2.lock
|
||||
- rm -fr $HOME/.gradle/caches/*/plugin-resolution/
|
||||
- rm -f $HOME/.gradle/caches/minecraft/deobfedDeps/providedDummy.jar
|
||||
- rm -f $HOME/.gradle/caches/minecraft/deobfedDeps/compileDummy.jar
|
||||
cache:
|
||||
directories:
|
||||
- $HOME/.gradle/caches/
|
||||
- $HOME/.gradle/wrapper/
|
||||
|
||||
install: "./gradlew setupCIWorkspace"
|
||||
script: "./gradlew build test"
|
||||
+58
@@ -0,0 +1,58 @@
|
||||
Changes so far :
|
||||
|
||||
Design changes/breakages:
|
||||
- Interfaces no longer spill items of one pattern on other faces
|
||||
- Interfaces now push patterns in round-robin (Interfaces, then sides)
|
||||
|
||||
|
||||
|
||||
|
||||
Fixes:
|
||||
|
||||
- Fix gregtech machines appearing with 'unnamed' or 'draconium lens' on the interface terminal on specific situations.
|
||||
- Add memorycard support for fluid interfaces, import/export/storage busses and level emitters ( this fix was upstreamed to AE2 for MC 1.16)
|
||||
- Storage busses now hide/show inaccessible items as configured.
|
||||
- Exclusive Blocking mode for GTCE ( shapes, molds and configured circuits do not block GTCE machines )
|
||||
- Blocking modes default to block on any item in the iventory the entity exposes
|
||||
- Fuzzy includes items that report that they're damageable, but report a maxDamage of 0 ( auto-crafting of basic capacitors -> resonant capacitors is now possible ) <- Broken item implementation.
|
||||
- Fix CME exceptions on the energy grid
|
||||
- Fix AE going offline even with enough power by extracting from the local buffer always last
|
||||
- Fix IO-Port copying craftable flag into items
|
||||
- Fix NBT of old items not clearing on drives that reached 64 types once
|
||||
|
||||
Performance:
|
||||
|
||||
- Added @talchas fixes for insane channelless AE networks.
|
||||
- Implemented StorageDrawers slotless itemrepository.
|
||||
- Removed CraftedEvent calls (really bad lag with craftweaker versions before CraftTweaker2-1.12-4.1.20.626)
|
||||
- Count items set in interfaces before queuing crafting for them needlessly
|
||||
- Backported b7ca98d ( Avoid copying items on simulated item extraction )
|
||||
- Cache some level emitters functions
|
||||
- Reduced import bus insert simulation to 1 before real insertion (if possible)
|
||||
- Backported itemlist re-implementation along with pattern changes to avoid CraftingManager fallback issues
|
||||
- Instead of recalculating all the content of the network on every change, track the changes properly and apply them to the cached list of items
|
||||
|
||||
QOL:
|
||||
|
||||
- added highlight interface button to interface terminal ("?" button on the left of the interface slots)
|
||||
- Added bar on the interface terminal that search by inputs ( The one on the LEFT, also searchs by interface name )
|
||||
- Shortcut to molecular assemblers with free slots on the terminal interface by @Theisyat
|
||||
- Toggle button on interface terminal to hide full interfaces
|
||||
- JEI "U", "R" and "A" (Usages/Recipes/Bookmark) now work on the Crafting Status GUI. ( the one that shows the total items to craft, and whats missing)
|
||||
- Patterns can now be made with items currently showing on JEI. ( This is overriden by Just Enough Energistics. )
|
||||
- Added multiplier buttons to processing pattern gui
|
||||
- Switched crafting terminal JEI search to fuzzy mode. If the recipe uses a damageable item, AE will try to grab it ( damaged tools )
|
||||
- Encoded patterns stack up to 64 ( holding shift and clicking the encode arrow will transfer the encoded pattern to the player inventory)
|
||||
- Encoded patterns can be draggred on the interface terminal.
|
||||
- Storage Monitor and Conversion Monitor now also ccepts fluids
|
||||
- Draggable JEI ghost items (also works on bookmarked items. SHIFT + Click will move the hovered item into the first free target slot)
|
||||
- JEI auto switches between crafting and processing patterns
|
||||
- GTCE Blocking mode work through phantom itemfaces
|
||||
- Shift-clicking blank patterns into the pattern terminal will try to fill the blank pattern slots first
|
||||
- Mismached simulated/real item count ( most often due to compacting drawers ) will now tell the player wich item cause the failure when trying to start a craft
|
||||
- Added 'pattern expansion' cards that adds an extra row of patterns to interfaces. up to 3 card on an interface. (each card will increase the interface idle power draw by 4 times)
|
||||
|
||||
HOTKEYS:
|
||||
|
||||
- Implemented mousetweaks API. AE2 custom keybinds now work. (Try right clicking and use the scroll-wheel on the terminals)
|
||||
- Holding SHIFT and scrolling UP and DOWN will increase the items set on the configured slots of Interfaces and Pattern Terminal (Processing mode)
|
||||
@@ -1,243 +1,44 @@
|
||||
[](https://travis-ci.org/AppliedEnergistics/Applied-Energistics-2)
|
||||
[](https://github.com/AppliedEnergistics/Applied-Energistics-2/releases)
|
||||
# Applied Energistics 2 Unofficial Extended Life
|
||||
|
||||
# Applied Energistics 2
|
||||
[](https://www.curseforge.com/minecraft/mc-mods/ae2-extended-life) [](https://www.curseforge.com/minecraft/mc-mods/ae2-extended-life) [](https://github.com/AE2-UEL/Applied-Energistics-2/issues) [](https://github.com/AE2-UEL/Applied-Energistics-2/pulls)
|
||||
|
||||
## Table of Contents
|
||||
|
||||
* [About](#about)
|
||||
* [Contacts](#contacts)
|
||||
* [License](#license)
|
||||
* [Downloads](#downloads)
|
||||
* [Installation](#installation)
|
||||
* [Issues](#issues)
|
||||
* [Building](#building)
|
||||
* [Contribution](#contribution)
|
||||
* [API](#applied-energistics-2-api)
|
||||
* [CraftTweaker](#applied-energistics-2-crafttweaker)
|
||||
* [Localization](#applied-energistics-2-localization)
|
||||
* [Credits](#credits)
|
||||
---
|
||||
|
||||
## About
|
||||
|
||||
A Mod about Matter, Energy and using them to conquer the world..
|
||||
A maintained fork of a Mod about Matter, Energy and using them to conquer the world.
|
||||
|
||||
## Contacts
|
||||
This project started as a fork of [Applied Energistics 2](https://github.com/AppliedEnergistics/Applied-Energistics-2) by [PrototypeTrousers](https://github.com/PrototypeTrousers), initially addressing issues related to the [Nomifactory](https://www.curseforge.com/minecraft/modpacks/nomifactory) modpack. It is now being maintained by the [AE2 Unofficial Extended Life Team](https://github.com/AE2-UEL).
|
||||
|
||||
* [Website](http://ae-mod.info/)
|
||||
* [IRC #appliedenergistics on esper.net](http://webchat.esper.net/?channels=appliedenergistics&prompt=1)
|
||||
* [GitHub](https://github.com/AppliedEnergistics/Applied-Energistics-2)
|
||||
See [Releases](https://github.com/PrototypeTrousers/Applied-Energistics-2/releases) for the compiled jars.
|
||||
|
||||
## RecipeStages
|
||||
|
||||
You need to add the following into a CraftTweaker script:
|
||||
```
|
||||
mods.recipestages.Recipes.setPackageStage("appeng", allStages);
|
||||
```
|
||||
|
||||
The second argument allows you to customize which stages exactly you want to be craftable with AE2. Not sure why you would do that, but we support that nonetheless!
|
||||
|
||||
## License
|
||||
|
||||
* Applied Energistics 2 API
|
||||
- (c) 2013 - 2017 AlgorithmX2 et al
|
||||
- (c) 2013 - 2018 AlgorithmX2 et al
|
||||
- [](http://opensource.org/licenses/MIT)
|
||||
* Applied Energistics 2
|
||||
- (c) 2013 - 2017 AlgorithmX2 et al
|
||||
- (c) 2013 - 2018 AlgorithmX2 et al
|
||||
- [](https://raw.githubusercontent.com/AppliedEnergistics/Applied-Energistics-2/rv2/LICENSE)
|
||||
* Textures and Models
|
||||
- (c) 2013 - 2017 AlgorithmX2 et al
|
||||
- (c) 2013 - 2018 AlgorithmX2 et al
|
||||
- [](https://creativecommons.org/licenses/by-nc-sa/3.0/)
|
||||
* Text and Translations
|
||||
- [](https://creativecommons.org/publicdomain/zero/1.0/)
|
||||
|
||||
## Downloads
|
||||
|
||||
Downloads can be found on [CurseForge](http://www.curse.com/mc-mods/minecraft/223794-applied-energistics-2) or on the [official website](http://ae-mod.info/Downloads/).
|
||||
|
||||
## Installation
|
||||
|
||||
You install this mod by putting it into the `minecraft/mods/` folder. It has no additional hard dependencies.
|
||||
|
||||
## Issues
|
||||
|
||||
Applied Energistics 2 crashing, have a suggestion, found a bug? Create an issue now!
|
||||
|
||||
1. Make sure your issue has not already been answered or fixed and you are using the latest version. Also think about whether your issue is a valid one before submitting it.
|
||||
* If it is already possible with vanilla and AE2 itself, the suggestion will be considered invalid.
|
||||
* Asking for a smaller version, more compact version, or more efficient version of something will also be considered invalid.
|
||||
2. Go to [the issues page](https://github.com/AppliedEnergistics/Applied-Energistics-2/issues) and click [new issue](https://github.com/AppliedEnergistics/Applied-Energistics-2/issues/new)
|
||||
3. Enter your a title of your issue (something that summarizes your issue), and then create a detailed description of the issue.
|
||||
* Do not tag it with something like `[Feature]`, `[Bug]`, or a version.
|
||||
* Restrict it to a single bug or feature, it makes managing them way easier for us.
|
||||
* The following details are required. Also refer to the issue template when creating one.
|
||||
* Forge version
|
||||
* AE2 version
|
||||
* Crash log, when reporting a crash (Please make sure to use [pastebin](http://pastebin.com/))
|
||||
* Never post an excerpt of what you consider important
|
||||
* Always post the full log
|
||||
* Other mods and their version, when reporting an issue between AE and another mod
|
||||
* Also consider updating these before submitting a new issue, it might be already fixed
|
||||
* A detailed description of the bug or feature
|
||||
* To further help in resolving your issues please try to include the follow if applicable:
|
||||
* What was expected?
|
||||
* How to reproduce the problem?
|
||||
* This is usually a great detail and allows us to fix it way faster
|
||||
* Server or Single Player?
|
||||
* Screen shots or Pictures of the problem
|
||||
* Mod Pack using and version?
|
||||
* Keep in mind that some mods might use an outdated version of AE2
|
||||
* If so you should report it to your modpack
|
||||
4. Click `Submit New Issue`, and wait for feedback!
|
||||
|
||||
Providing as many details as possible does help us to find and resolve the issue faster and also you getting a fixed version as fast as possible.
|
||||
|
||||
Please note that we might close any issue not matching these requirements.
|
||||
|
||||
## Building
|
||||
|
||||
1. Clone this repository via
|
||||
- SSH `git clone git@github.com:AppliedEnergistics/Applied-Energistics-2.git` or
|
||||
- HTTPS `git clone https://github.com/AppliedEnergistics/Applied-Energistics-2.git`
|
||||
2. Setup workspace
|
||||
- Decompiled source `gradlew setupDecompWorkspace`
|
||||
- Obfuscated source `gradlew setupDevWorkspace`
|
||||
- CI server `gradlew setupCIWorkspace`
|
||||
3. Build `gradlew build`. Jar will be in `build/libs`
|
||||
4. For core developer: Setup IDE
|
||||
- IntelliJ: Import into IDE, execute `gradlew genIntellijRuns` and change RunConfiguration to `*_main` as quickfix for [ForgeGradle](https://github.com/MinecraftForge/ForgeGradle/issues/357)
|
||||
- Eclipse: execute `gradlew eclipse`
|
||||
5. For add-on developer: Core-Mod Detection
|
||||
- In order to have FML detect AE from your dev environment, add the following VM Option to your run profile
|
||||
- `-Dfml.coreMods.load=appeng.coremod.AppEngCore`
|
||||
|
||||
## Contribution
|
||||
|
||||
Before you want to add major changes, you might want to discuss them with us first, before wasting your time.
|
||||
If you are still willing to contribute to this project, you can contribute via [Pull-Request](https://help.github.com/articles/creating-a-pull-request).
|
||||
|
||||
The [guidelines for contributing](https://github.com/AppliedEnergistics/Applied-Energistics-2/blob/master/.github/CONTRIBUTING.md) contain more detailed information about topics like the used code style and should also be considered.
|
||||
|
||||
Here are a few things to keep in mind that will help get your PR approved.
|
||||
|
||||
* A PR should be focused on content. Any PRs where the changes are only syntax will be rejected.
|
||||
* Use the file you are editing as a style guide.
|
||||
* Consider your feature. [Suggestion Guidelines](http://ae-mod.info/Suggestion-Guidelines/)
|
||||
- Is your suggestion already possible using Vanilla + AE2?
|
||||
- Make sure your feature isn't already in the works, or hasn't been rejected previously.
|
||||
- Does your feature simplify another feature of AE2? These changes will not be accepted.
|
||||
- If your feature can be done by any popular mod, discuss with us first.
|
||||
|
||||
**Getting Started**
|
||||
|
||||
1. Fork this repository
|
||||
2. Clone the fork via
|
||||
* SSH `git clone git@github.com:<your username>/Applied-Energistics-2.git` or
|
||||
* HTTPS `git clone https://github.com/<your username>/Applied-Energistics-2.git`
|
||||
3. Change code base
|
||||
4. Add changes to git `git add -A`
|
||||
5. Commit changes to your clone `git commit -m "<summery of made changes>"`
|
||||
6. Push to your fork `git push`
|
||||
7. Create a Pull-Request on GitHub
|
||||
8. Wait for review
|
||||
9. Squash commits for cleaner history
|
||||
|
||||
If you are only doing single file pull requests, GitHub supports using a quick way without the need of cloning your fork. Also read up about [synching](https://help.github.com/articles/syncing-a-fork) if you plan to contribute on regular basis.
|
||||
|
||||
## Applied Energistics 2 API
|
||||
|
||||
The API for Applied Energistics 2. It is open source to discuss changes, improve documentation, and provide better add-on support in general.
|
||||
|
||||
Universal builds obtained [Here](http://ae2.ae-mod.info/Downloads/) should work in a development environment.
|
||||
|
||||
### Maven
|
||||
|
||||
When compiling against the AE2 API you can use gradle dependencies, just add
|
||||
|
||||
dependencies {
|
||||
compile "appeng:appliedenergistics2:rv_-_____-__:dev"
|
||||
}
|
||||
|
||||
or add the compile line to your existing dependencies task to your build.gradle
|
||||
|
||||
Where the __ are filled in with the correct version criteria; AE2 is available from the default forge maven so no additional repositories are necessary.
|
||||
|
||||
An example string would be `appeng:appliedenergistics2:rv2-alpha-30:dev`
|
||||
|
||||
## Applied Energistics 2 CraftTweaker
|
||||
|
||||
### Inscriber
|
||||
Add a recipe. When `inscribe` is true the bottom and top inputs are not consumed.
|
||||
|
||||
mods.appliedenergistics2.Inscriber.addRecipe(ItemStack output, ItemStack input, boolean inscribe,
|
||||
@Optional ItemStack topInput, @Optional ItemStack bottomInput );
|
||||
|
||||
Remove all recipes for this output stack.
|
||||
|
||||
mods.appliedenergistics2.Inscriber.removeRecipe(ItemStack output);
|
||||
|
||||
### Grindstone
|
||||
Add a recipe.
|
||||
|
||||
mods.appliedenergistics2.Grinder.addRecipe( ItemStack output, ItemStack input, int turns,
|
||||
@Optional ItemStack secondary1Output, @Optional float secondary1Chance,
|
||||
@Optional ItemStack secondary2Output, @Optional float secondary2Chance);
|
||||
|
||||
Remove recipes for this input.
|
||||
|
||||
mods.appliedenergistics2.Grinder.removeRecipe(ItemStack input);
|
||||
|
||||
### Spatial
|
||||
Whitelist a TileEntity class for Spatial IO.
|
||||
|
||||
mods.appliedenergistics2.Spatial.whitelistEntity( String fullEntityClassName );
|
||||
|
||||
### Attunement
|
||||
Attune a ItemStack or ModID to a specific P2P-Tunnel type. ModID's are used as fallback when no ItemStack was found.
|
||||
|
||||
mods.appliedenergistics2.Attunement.attuneME( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneME( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneItem( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneItem( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneFluid( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneFluid( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneRedstone( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneRedstone( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneRF( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneRF( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneIC2( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneIC2( String modID );
|
||||
mods.appliedenergistics2.Attunement.attuneLight( ItemStack itemStack );
|
||||
mods.appliedenergistics2.Attunement.attuneLight( String modID );
|
||||
|
||||
### Cannon
|
||||
Add ammo types for the matter cannon.
|
||||
|
||||
mods.appliedenergistics2.Cannon.registerAmmo( ItemStack itemStack, double weight );
|
||||
|
||||
## Applied Energistics 2 Localization
|
||||
|
||||
### English Text
|
||||
|
||||
`en_US` is included in this repository, fixes to typos are welcome.
|
||||
|
||||
### Encoding
|
||||
|
||||
Files must be encoded as UTF-8.
|
||||
|
||||
### New or updated Translations
|
||||
|
||||
The language files are located in `/src/main/resources/assets/appliedenergistics2/lang/` and use the [appropriate locale code](http://minecraft.gamepedia.com/Language) as name and `.lang` as extension.
|
||||
|
||||
To update an translation edit the corresponding file and improve/correct the existing entry. Or copy any entries from `en_US.lang` for missing translation.
|
||||
|
||||
To create a new translation, copy the contents of `en_US.lang`, create a new file with appropriate filename, and translate it to your language.
|
||||
|
||||
Please keep in mind that we use [String format](https://docs.oracle.com/javase/8/docs/api/java/util/Formatter.html) to pass additional data to the text for displaying.
|
||||
Therefore you should preserve parts like `%s` or `%1$d%%`, which allows us to replace them with the correct values while you still have the option to change their order for match the rules of grammar.
|
||||
This might not be possible for some languages. Should this be the case, please contact us.
|
||||
|
||||
### Final Note
|
||||
|
||||
If you have have issues localizing something feel free to contact us on IRC, at #AppliedEnergistics on Esper.net
|
||||
|
||||
Thanks to everyone helping out to improve localization of AE2.
|
||||
|
||||
## Credits
|
||||
|
||||
Thanks to
|
||||
|
||||
Special thanks to:
|
||||
|
||||
* PrototypeTrousers for the initial fork
|
||||
* Notch et al for Minecraft
|
||||
* Lex et al for MinecraftForge
|
||||
* AlgorithmX2 for AppliedEnergistics2
|
||||
|
||||
+1190
-78
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,52 @@
|
||||
//file:noinspection DependencyNotationArgument
|
||||
// TODO remove when fixed in RFG ^
|
||||
/*
|
||||
* Add your dependencies here. Common configurations:
|
||||
* - implementation("group:name:version:classifier"): if you need this for internal implementation details of the mod.
|
||||
* Available at compiletime and runtime for your environment.
|
||||
*
|
||||
* - compileOnlyApi("g:n:v:c"): if you need this for internal implementation details of the mod.
|
||||
* Available at compiletime but not runtime for your environment.
|
||||
*
|
||||
* - annotationProcessor("g:n:v:c"): mostly for java compiler plugins, if you know you need this, use it, otherwise don't worry
|
||||
*
|
||||
* - testCONFIG("g:n:v:c"): replace CONFIG by one of the above, same as above but for the test sources instead of main
|
||||
*
|
||||
* You can exclude transitive dependencies (dependencies of the chosen dependency) by appending { transitive = false } if needed.
|
||||
*
|
||||
* To add a mod with CurseMaven, replace '("g:n:v:c")' in the above with 'rfg.deobf("curse.maven:project_slug-project_id:file_id")'
|
||||
* Example: implementation rfg.deobf("curse.maven:gregtech-ce-unofficial-557242:4527757")
|
||||
*
|
||||
* To shadow a dependency, use 'shadowImplementation'. For more info, see https://github.com/GregTechCEu/Buildscripts/blob/master/docs/shadow.md
|
||||
*
|
||||
* For more details, see https://docs.gradle.org/8.0.1/userguide/java_library_plugin.html#sec:java_library_configurations_graph
|
||||
*/
|
||||
dependencies {
|
||||
|
||||
// Mods always in-game
|
||||
implementation rfg.deobf("curse.maven:gregtechceu-557242:4429261") // GTCEu
|
||||
implementation rfg.deobf("curse.maven:codechicken-lib-1-8-242818:2779848") // CCL 3.2.3.358
|
||||
implementation rfg.deobf("curse.maven:baubles-227083:2518667") // Baubles
|
||||
implementation rfg.deobf("curse.maven:industrial-craft-242638:2547175") // IC2
|
||||
implementation rfg.deobf("curse.maven:forestry-59751:2684780") // Forestry
|
||||
|
||||
// Mods only in code by default
|
||||
compileOnly "curse.maven:chisel-235279:2915375"
|
||||
compileOnly "curse.maven:hwyla-253449:2568751"
|
||||
compileOnly "curse.maven:recipe-stages-280554:3405072"
|
||||
compileOnly "curse.maven:item-stages-280316:2696769"
|
||||
compileOnly "curse.maven:game-stages-268655:2951844"
|
||||
compileOnly "net.darkhax.tesla:Tesla-1.12.2:1.0.63"
|
||||
compileOnly "curse.maven:CoFHCore-69162:2920433"
|
||||
compileOnly "CraftTweaker2:CraftTweaker2-API:4.1.20.684"
|
||||
compileOnly "curse.maven:inventory-tweaks-223094:2482482"
|
||||
compileOnly "curse.maven:inventory-bogo-sorter-632327:4399738"
|
||||
compileOnly rfg.deobf("curse.maven:ctm-267602:2915363") // CTM 1.0.2.31
|
||||
compileOnly rfg.deobf("curse.maven:actually-additions-228404:3117927") // ActuallyAdditions r152
|
||||
}
|
||||
|
||||
minecraft {
|
||||
injectedTags.put('AEVERSION', aeversion)
|
||||
injectedTags.put('AECHANNEL', aechannel)
|
||||
injectedTags.put('AEBUILD', aebuild)
|
||||
}
|
||||
+180
-29
@@ -1,33 +1,184 @@
|
||||
aeversion=rv5
|
||||
aechannel=alpha
|
||||
aebuild=0
|
||||
aegroup=appeng
|
||||
aebasename=appliedenergistics2
|
||||
modName = AE2 Unofficial Extended Life
|
||||
|
||||
#########################################################
|
||||
# Versions #
|
||||
#########################################################
|
||||
minecraft_version=1.12.2
|
||||
mcp_mappings=snapshot_20171003
|
||||
forge_version=14.23.1.2554
|
||||
# This is a case-sensitive string to identify your mod. Convention is to use lower case.
|
||||
modId = appliedenergistics2
|
||||
|
||||
#########################################################
|
||||
# Installable #
|
||||
#########################################################
|
||||
hwyla_version=1.8.20-B35_1.12
|
||||
modGroup = appeng
|
||||
|
||||
#########################################################
|
||||
# Provided APIs #
|
||||
#########################################################
|
||||
jei_version=4.8.0.105
|
||||
tesla_version=1.0.61
|
||||
ic2_version=2.8.19-ex112
|
||||
top_version=1.12-1.4.18-10
|
||||
cofhcore_version=1.12-4.+
|
||||
crafttweaker_version=4.0.10.310
|
||||
# Version of your mod.
|
||||
# This field can be left empty if you want your mod's version to be determined by the latest git tag instead.
|
||||
modVersion =
|
||||
|
||||
#########################################################
|
||||
# Deployment #
|
||||
#########################################################
|
||||
website_version=1.12.2
|
||||
curse_versions=1.12.2
|
||||
# AE2 Specific Version Settings
|
||||
aeversion=rv6
|
||||
aechannel=stable
|
||||
aebuild=7
|
||||
|
||||
# Whether to use the old jar naming structure (modid-mcversion-version) instead of the new version (modid-version)
|
||||
includeMCVersionJar = false
|
||||
|
||||
# The name of your jar when you produce builds, not including any versioning info
|
||||
modArchivesBaseName = ae2-uel
|
||||
|
||||
# Will update your build.gradle automatically whenever an update is available
|
||||
autoUpdateBuildScript = false
|
||||
|
||||
minecraftVersion = 1.12.2
|
||||
|
||||
# Select a username for testing your mod with breakpoints. You may leave this empty for a random username each time you
|
||||
# restart Minecraft in development. Choose this dependent on your mod:
|
||||
# Do you need consistent player progressing (for example Thaumcraft)? -> Select a name
|
||||
# Do you need to test how your custom blocks interacts with a player that is not the owner? -> leave name empty
|
||||
# Alternatively this can be set with the 'DEV_USERNAME' environment variable.
|
||||
developmentEnvironmentUserName = Developer
|
||||
|
||||
# Enables using modern java syntax (up to version 17) via Jabel, while still targeting JVM 8.
|
||||
# See https://github.com/bsideup/jabel for details on how this works.
|
||||
# Using this requires that you use a Java 17 JDK for development.
|
||||
enableModernJavaSyntax = true
|
||||
|
||||
# Generate a class with String fields for the mod id, name and version named with the fields below
|
||||
generateGradleTokenClass = appeng.Tags
|
||||
gradleTokenModId = MODID
|
||||
gradleTokenModName = MODNAME
|
||||
gradleTokenVersion = VERSION
|
||||
|
||||
# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can
|
||||
# leave this property empty.
|
||||
# Example value: apiPackage = api + modGroup = com.myname.mymodid -> com.myname.mymodid.api
|
||||
apiPackage = api
|
||||
|
||||
# If you want to keep your API code in src/api instead of src/main
|
||||
useSrcApiPath = true
|
||||
|
||||
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/
|
||||
# There can be multiple files in a comma-separated list.
|
||||
# Example value: mymodid_at.cfg,jei_at.cfg
|
||||
accessTransformersFile = appliedenergistics2_at.cfg
|
||||
|
||||
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
|
||||
usesMixins = false
|
||||
# Specify the package that contains all of your Mixins. You may only place Mixins in this package or the build will fail!
|
||||
mixinsPackage =
|
||||
# Automatically generates a mixin config json if enabled, with the name mixins.modid.json
|
||||
generateMixinConfig = false
|
||||
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
|
||||
# Example value: coreModClass = asm.FMLPlugin + modGroup = com.myname.mymodid -> com.myname.mymodid.asm.FMLPlugin
|
||||
coreModClass = core.AE2ELCore
|
||||
# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod (meaning that
|
||||
# there is no class annotated with @Mod) you want this to be true. When in doubt: leave it on false!
|
||||
containsMixinsAndOrCoreModOnly = false
|
||||
|
||||
# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins.
|
||||
forceEnableMixins = false
|
||||
|
||||
# Outputs pre-transformed and post-transformed loaded classes to run/CLASSLOADER_TEMP. Can be used in combination with
|
||||
# diff to see exactly what your ASM or Mixins are changing in the target file.
|
||||
# Optionally can be specified with the 'CORE_MOD_DEBUG' env var. Will output a lot of files!
|
||||
enableCoreModDebug = false
|
||||
|
||||
# Adds CurseMaven, Modrinth Maven, BlameJared maven, and some more well-known 1.12.2 repositories
|
||||
includeWellKnownRepositories = true
|
||||
|
||||
# Adds JEI and TheOneProbe to your development environment. Adds them as 'implementation', meaning they will
|
||||
# be available at compiletime and runtime for your mod (in-game and in-code).
|
||||
# Overrides the above setting to be always true, as these repositories are needed to fetch the mods
|
||||
includeCommonDevEnvMods = true
|
||||
|
||||
|
||||
# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated in your jar. It is your
|
||||
# responsibility check the licence and request permission for distribution, if required.
|
||||
usesShadowedDependencies = false
|
||||
# If disabled, won't remove unused classes from shaded dependencies. Some libraries use reflection to access
|
||||
# their own classes, making the minimization unreliable.
|
||||
minimizeShadowedDependencies = true
|
||||
# If disabled, won't rename the shadowed classes.
|
||||
relocateShadowedDependencies = true
|
||||
|
||||
# Separate run directories into "run/client" for runClient task, and "run/server" for runServer task.
|
||||
# Useful for debugging a server and client simultaneously. If not enabled, it will be in the standard location "run/"
|
||||
separateRunDirectories = false
|
||||
|
||||
# The display name format of versions published to Curse and Modrinth. $MOD_NAME and $VERSION are available variables.
|
||||
# Default: $MOD_NAME \u2212 $VERSION. \u2212 is the minus character which looks much better than the hyphen minus on Curse.
|
||||
versionDisplayFormat = $MOD_NAME \u2212 $VERSION
|
||||
|
||||
# Publishing to modrinth requires you to set the MODRINTH_API_KEY environment variable to your current modrinth API token.
|
||||
|
||||
# The project's ID on Modrinth. Can be either the slug or the ID.
|
||||
# Leave this empty if you don't want to publish on Modrinth.
|
||||
# Alternatively this can be set with the 'MODRINTH_PROJECT_ID' environment variable.
|
||||
modrinthProjectId =
|
||||
|
||||
# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth.
|
||||
# Syntax: scope1-type1:name1;scope2-type2:name2;...
|
||||
# Where scope can be one of [required, optional, incompatible, embedded],
|
||||
# type can be one of [project, version],
|
||||
# and the name is the Modrinth project or version slug/id of the other mod.
|
||||
# Example: required-project:jei;optional-project:top;incompatible-project:gregtech
|
||||
modrinthRelations =
|
||||
|
||||
|
||||
# Publishing to CurseForge requires you to set the CURSEFORGE_API_KEY environment variable to one of your CurseForge API tokens.
|
||||
|
||||
# The project's numeric ID on CurseForge. You can find this in the About Project box.
|
||||
# Leave this empty if you don't want to publish on CurseForge.
|
||||
# Alternatively this can be set with the 'CURSEFORGE_PROJECT_ID' environment variable.
|
||||
curseForgeProjectId =
|
||||
|
||||
# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
|
||||
# Syntax: type1:name1;type2:name2;...
|
||||
# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
|
||||
# and the name is the CurseForge project slug of the other mod.
|
||||
# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft
|
||||
curseForgeRelations =
|
||||
|
||||
# This project's release type on CurseForge and/or Modrinth
|
||||
# Alternatively this can be set with the 'RELEASE_TYPE' environment variable.
|
||||
# Allowed types: release, beta, alpha
|
||||
releaseType = release
|
||||
|
||||
# Generate a default changelog for releases. Requires git to be installed, as it uses it to generate a changelog of
|
||||
# commits since the last tagged release.
|
||||
generateDefaultChangelog = false
|
||||
|
||||
# Prevent the source code from being published
|
||||
noPublishedSources = false
|
||||
|
||||
|
||||
# Publish to a custom maven location. Follows a few rules:
|
||||
# Group ID can be set with the 'ARTIFACT_GROUP_ID' environment variable, default to 'project.group'
|
||||
# Artifact ID can be set with the 'ARTIFACT_ID' environment variable, default to 'project.name'
|
||||
# Version can be set with the 'RELEASE_VERSION' environment variable, default to 'modVersion'
|
||||
# For maven credentials:
|
||||
# Username is set with the 'MAVEN_USER' environment variable, default to "NONE"
|
||||
# Password is set with the 'MAVEN_PASSWORD' environment variable, default to "NONE"
|
||||
customMavenPublishUrl = https://maven.gtceu.com
|
||||
|
||||
# The group for maven artifacts. Defaults to the 'project.modGroup' until the last '.' (if any).
|
||||
# So 'mymod' becomes 'mymod' and 'com.myname.mymodid' 'becomes com.myname'
|
||||
mavenArtifactGroup =
|
||||
|
||||
# Enable spotless checks
|
||||
# Enforces code formatting on your source code
|
||||
# By default this will use the files found here: https://github.com/GregTechCEu/Buildscripts/tree/master/spotless
|
||||
# to format your code. However, you can create your own version of these files and place them in your project's
|
||||
# root directory to apply your own formatting options instead.
|
||||
enableSpotless = false
|
||||
|
||||
# Enable JUnit testing platform used for testing your code.
|
||||
# Uses JUnit 5. See guide and documentation here: https://junit.org/junit5/docs/current/user-guide/
|
||||
enableJUnit = true
|
||||
|
||||
# Deployment debug setting
|
||||
# Uncomment this to test deployments to CurseForge and Modrinth
|
||||
# Alternatively, you can set the 'DEPLOYMENT_DEBUG' environment variable.
|
||||
deploymentDebug = false
|
||||
|
||||
|
||||
# Gradle Settings
|
||||
# Effectively applies the '--stacktrace' flag by default
|
||||
org.gradle.logging.stacktrace = all
|
||||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
||||
# This is required to provide enough memory for the Minecraft decompilation process.
|
||||
org.gradle.jvmargs = -Xmx3G
|
||||
|
||||
@@ -1,59 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
// Suppresses warnings/errors when building javadocs
|
||||
allprojects {
|
||||
tasks.withType(Javadoc) {
|
||||
options.addStringOption('Xdoclint:none', '-quiet')
|
||||
}
|
||||
}
|
||||
|
||||
javadoc {
|
||||
options.encoding = 'UTF-8'
|
||||
options.charSet = 'UTF-8'
|
||||
}
|
||||
|
||||
task javadocs(type: Javadoc) {
|
||||
source = sourceSets.api.java
|
||||
include "appeng/api/**"
|
||||
|
||||
// Due to ForgeGradle having to be a special snowflake,
|
||||
// we have to add some custom configurations to the normal compile configuration and hope it does not break.
|
||||
classpath = configurations.compile + configurations.forgeGradleMc + configurations.forgeGradleMcDeps
|
||||
}
|
||||
|
||||
task javadocJar(type: Jar, dependsOn: javadocs) {
|
||||
from javadoc.destinationDir
|
||||
classifier = 'javadoc'
|
||||
}
|
||||
|
||||
task apiJar(type: Jar) {
|
||||
from sourceSets.api.java
|
||||
include "appeng/api/**"
|
||||
|
||||
from sourceSets.api.output
|
||||
include "appeng/api/**"
|
||||
|
||||
classifier = 'api'
|
||||
}
|
||||
|
||||
artifacts {
|
||||
archives apiJar
|
||||
archives javadocJar
|
||||
archives sourceJar
|
||||
}
|
||||
@@ -1,97 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
repositories {
|
||||
mavenLocal()
|
||||
|
||||
maven {
|
||||
name "Mobius"
|
||||
url "http://mobiusstrip.eu/maven"
|
||||
}
|
||||
|
||||
maven {
|
||||
name = "JEI repo"
|
||||
url "http://dvs1.progwml6.com/files/maven"
|
||||
}
|
||||
|
||||
maven {
|
||||
name = "Tesla repo"
|
||||
url "http://maven.mcmoddev.com"
|
||||
}
|
||||
|
||||
maven {
|
||||
name = "IC2 repo"
|
||||
url = "http://maven.ic2.player.to"
|
||||
}
|
||||
|
||||
maven {
|
||||
name = "CoFH Maven"
|
||||
url = "http://maven.covers1624.net"
|
||||
}
|
||||
|
||||
maven { // TheOneProbe
|
||||
name 'tterrag maven'
|
||||
url "http://maven.tterrag.com/"
|
||||
}
|
||||
|
||||
maven { // McJtyLib
|
||||
name 'mcjty'
|
||||
url "http://maven.k-4u.nl/"
|
||||
}
|
||||
|
||||
maven { // Hwyla
|
||||
name 'tehnut'
|
||||
url "http://tehnut.info/maven"
|
||||
}
|
||||
|
||||
maven { // CraftTweaker
|
||||
name 'jared maven'
|
||||
url "http://maven.blamejared.com/"
|
||||
}
|
||||
|
||||
maven { // modmaven, maven proxy
|
||||
name 'modmaven'
|
||||
url "https://modmaven.k-4u.nl/"
|
||||
}
|
||||
}
|
||||
|
||||
configurations {
|
||||
mods
|
||||
}
|
||||
|
||||
dependencies {
|
||||
// installable runtime dependencies
|
||||
mods "mcp.mobius.waila:Hwyla:${hwyla_version}"
|
||||
mods "net.industrial-craft:industrialcraft-2:${ic2_version}:dev"
|
||||
mods "mcjty.theoneprobe:TheOneProbe-${minecraft_version}:${top_version}"
|
||||
|
||||
// compile against provided APIs
|
||||
compileOnly "mezz.jei:jei_${minecraft_version}:${jei_version}:api"
|
||||
compileOnly "mcp.mobius.waila:Hwyla:${hwyla_version}"
|
||||
compileOnly "net.darkhax.tesla:Tesla-1.12:${tesla_version}"
|
||||
compileOnly "net.industrial-craft:industrialcraft-2:${ic2_version}:api"
|
||||
compileOnly "mcjty.theoneprobe:TheOneProbe-1.12:${top_version}:api"
|
||||
compileOnly "cofh:CoFHCore:${cofhcore_version}:deobf"
|
||||
compileOnly "CraftTweaker2:CraftTweaker2-API:${crafttweaker_version}"
|
||||
|
||||
// at runtime, use the full JEI jar
|
||||
runtime "mezz.jei:jei_${minecraft_version}:${jei_version}"
|
||||
|
||||
// unit test dependencies
|
||||
testCompile "junit:junit:4.12"
|
||||
}
|
||||
@@ -1,55 +0,0 @@
|
||||
/*
|
||||
* This file is part of Applied Energistics 2.
|
||||
* Copyright (c) 2013 - 2014, AlgorithmX2, All rights reserved.
|
||||
*
|
||||
* Applied Energistics 2 is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU Lesser General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* Applied Energistics 2 is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU Lesser General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Lesser General Public License
|
||||
* along with Applied Energistics 2. If not, see <http://www.gnu.org/licenses/lgpl>.
|
||||
*/
|
||||
|
||||
task wrapper(type: Wrapper) {
|
||||
gradleVersion = "2.14"
|
||||
}
|
||||
|
||||
// HWYLA
|
||||
task installHwyla(type: Copy, dependsOn: "deinstallHwyla") {
|
||||
from { configurations.mods }
|
||||
include "**/*Hwyla*.jar"
|
||||
into file(minecraft.runDir + "/mods")
|
||||
}
|
||||
|
||||
task deinstallHwyla(type: Delete) {
|
||||
delete fileTree(dir: minecraft.runDir + "/mods", include: "*Hwyla*.jar")
|
||||
}
|
||||
|
||||
// IC2
|
||||
task installIC2(type: Copy, dependsOn: "deinstallIC2") {
|
||||
from { configurations.mods }
|
||||
include "**/*industrialcraft-2*.jar"
|
||||
into file(minecraft.runDir + "/mods")
|
||||
}
|
||||
|
||||
task deinstallIC2(type: Delete) {
|
||||
delete fileTree(dir: minecraft.runDir + "/mods", include: "*industrialcraft-2*.jar")
|
||||
}
|
||||
|
||||
// TOP
|
||||
task installTop(type: Copy, dependsOn: ["deinstallTop"]) {
|
||||
from { configurations.mods }
|
||||
include "**/*TheOneProbe*.jar"
|
||||
into file(minecraft.runDir + "/mods")
|
||||
}
|
||||
|
||||
task deinstallTop(type: Delete) {
|
||||
delete fileTree(dir: minecraft.runDir + "/mods", include: "*TheOneProbe*.jar")
|
||||
}
|
||||
|
||||
Vendored
BIN
Binary file not shown.
+3
-2
@@ -1,6 +1,7 @@
|
||||
#Tue Jul 04 22:38:49 CEST 2017
|
||||
distributionBase=GRADLE_USER_HOME
|
||||
distributionPath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
|
||||
networkTimeout=10000
|
||||
validateDistributionUrl=true
|
||||
zipStoreBase=GRADLE_USER_HOME
|
||||
zipStorePath=wrapper/dists
|
||||
distributionUrl=https\://services.gradle.org/distributions/gradle-2.14-bin.zip
|
||||
|
||||
@@ -1,78 +1,126 @@
|
||||
#!/usr/bin/env bash
|
||||
#!/bin/sh
|
||||
|
||||
#
|
||||
# Copyright © 2015-2021 the original authors.
|
||||
#
|
||||
# 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
|
||||
#
|
||||
# https://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.
|
||||
#
|
||||
|
||||
##############################################################################
|
||||
##
|
||||
## Gradle start up script for UN*X
|
||||
##
|
||||
#
|
||||
# Gradle start up script for POSIX generated by Gradle.
|
||||
#
|
||||
# Important for running:
|
||||
#
|
||||
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
|
||||
# noncompliant, but you have some other compliant shell such as ksh or
|
||||
# bash, then to run this script, type that shell name before the whole
|
||||
# command line, like:
|
||||
#
|
||||
# ksh Gradle
|
||||
#
|
||||
# Busybox and similar reduced shells will NOT work, because this script
|
||||
# requires all of these POSIX shell features:
|
||||
# * functions;
|
||||
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
|
||||
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
|
||||
# * compound commands having a testable exit status, especially «case»;
|
||||
# * various built-in commands including «command», «set», and «ulimit».
|
||||
#
|
||||
# Important for patching:
|
||||
#
|
||||
# (2) This script targets any POSIX shell, so it avoids extensions provided
|
||||
# by Bash, Ksh, etc; in particular arrays are avoided.
|
||||
#
|
||||
# The "traditional" practice of packing multiple parameters into a
|
||||
# space-separated string is a well documented source of bugs and security
|
||||
# problems, so this is (mostly) avoided, by progressively accumulating
|
||||
# options in "$@", and eventually passing that to Java.
|
||||
#
|
||||
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
|
||||
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
|
||||
# see the in-line comments for details.
|
||||
#
|
||||
# There are tweaks for specific operating systems such as AIX, CygWin,
|
||||
# Darwin, MinGW, and NonStop.
|
||||
#
|
||||
# (3) This script is generated from the Groovy template
|
||||
# https://github.com/gradle/gradle/blob/HEAD/subprojects/plugins/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
|
||||
# within the Gradle project.
|
||||
#
|
||||
# You can find Gradle at https://github.com/gradle/gradle/.
|
||||
#
|
||||
##############################################################################
|
||||
|
||||
# Attempt to set APP_HOME
|
||||
|
||||
# Resolve links: $0 may be a link
|
||||
PRG="$0"
|
||||
# Need this for relative symlinks.
|
||||
while [ -h "$PRG" ] ; do
|
||||
ls=`ls -ld "$PRG"`
|
||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
||||
if expr "$link" : '/.*' > /dev/null; then
|
||||
PRG="$link"
|
||||
else
|
||||
PRG=`dirname "$PRG"`"/$link"
|
||||
fi
|
||||
app_path=$0
|
||||
|
||||
# Need this for daisy-chained symlinks.
|
||||
while
|
||||
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||
[ -h "$app_path" ]
|
||||
do
|
||||
ls=$( ls -ld "$app_path" )
|
||||
link=${ls#*' -> '}
|
||||
case $link in #(
|
||||
/*) app_path=$link ;; #(
|
||||
*) app_path=$APP_HOME$link ;;
|
||||
esac
|
||||
done
|
||||
SAVED="`pwd`"
|
||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
||||
APP_HOME="`pwd -P`"
|
||||
cd "$SAVED" >/dev/null
|
||||
|
||||
APP_NAME="Gradle"
|
||||
APP_BASE_NAME=`basename "$0"`
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS=""
|
||||
# This is normally unused
|
||||
# shellcheck disable=SC2034
|
||||
APP_BASE_NAME=${0##*/}
|
||||
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||
|
||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||
MAX_FD="maximum"
|
||||
MAX_FD=maximum
|
||||
|
||||
warn ( ) {
|
||||
warn () {
|
||||
echo "$*"
|
||||
}
|
||||
} >&2
|
||||
|
||||
die ( ) {
|
||||
die () {
|
||||
echo
|
||||
echo "$*"
|
||||
echo
|
||||
exit 1
|
||||
}
|
||||
} >&2
|
||||
|
||||
# OS specific support (must be 'true' or 'false').
|
||||
cygwin=false
|
||||
msys=false
|
||||
darwin=false
|
||||
nonstop=false
|
||||
case "`uname`" in
|
||||
CYGWIN* )
|
||||
cygwin=true
|
||||
;;
|
||||
Darwin* )
|
||||
darwin=true
|
||||
;;
|
||||
MINGW* )
|
||||
msys=true
|
||||
;;
|
||||
NONSTOP* )
|
||||
nonstop=true
|
||||
;;
|
||||
case "$( uname )" in #(
|
||||
CYGWIN* ) cygwin=true ;; #(
|
||||
Darwin* ) darwin=true ;; #(
|
||||
MSYS* | MINGW* ) msys=true ;; #(
|
||||
NONSTOP* ) nonstop=true ;;
|
||||
esac
|
||||
|
||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||
|
||||
|
||||
# Determine the Java command to use to start the JVM.
|
||||
if [ -n "$JAVA_HOME" ] ; then
|
||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||
# IBM's JDK on AIX uses strange locations for the executables
|
||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
||||
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||
else
|
||||
JAVACMD="$JAVA_HOME/bin/java"
|
||||
JAVACMD=$JAVA_HOME/bin/java
|
||||
fi
|
||||
if [ ! -x "$JAVACMD" ] ; then
|
||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
||||
@@ -81,84 +129,120 @@ Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
else
|
||||
JAVACMD="java"
|
||||
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
JAVACMD=java
|
||||
if ! command -v java >/dev/null 2>&1
|
||||
then
|
||||
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
|
||||
Please set the JAVA_HOME variable in your environment to match the
|
||||
location of your Java installation."
|
||||
fi
|
||||
fi
|
||||
|
||||
# Increase the maximum file descriptors if we can.
|
||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
||||
MAX_FD_LIMIT=`ulimit -H -n`
|
||||
if [ $? -eq 0 ] ; then
|
||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||
MAX_FD="$MAX_FD_LIMIT"
|
||||
fi
|
||||
ulimit -n $MAX_FD
|
||||
if [ $? -ne 0 ] ; then
|
||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
||||
fi
|
||||
else
|
||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
||||
fi
|
||||
fi
|
||||
|
||||
# For Darwin, add options to specify how the application appears in the dock
|
||||
if $darwin; then
|
||||
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
|
||||
fi
|
||||
|
||||
# For Cygwin, switch paths to Windows format before running java
|
||||
if $cygwin ; then
|
||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
||||
|
||||
# We build the pattern for arguments to be converted via cygpath
|
||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||
SEP=""
|
||||
for dir in $ROOTDIRSRAW ; do
|
||||
ROOTDIRS="$ROOTDIRS$SEP$dir"
|
||||
SEP="|"
|
||||
done
|
||||
OURCYGPATTERN="(^($ROOTDIRS))"
|
||||
# Add a user-defined pattern to the cygpath arguments
|
||||
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
|
||||
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
|
||||
fi
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
i=0
|
||||
for arg in "$@" ; do
|
||||
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
|
||||
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
|
||||
|
||||
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
|
||||
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
|
||||
else
|
||||
eval `echo args$i`="\"$arg\""
|
||||
fi
|
||||
i=$((i+1))
|
||||
done
|
||||
case $i in
|
||||
(0) set -- ;;
|
||||
(1) set -- "$args0" ;;
|
||||
(2) set -- "$args0" "$args1" ;;
|
||||
(3) set -- "$args0" "$args1" "$args2" ;;
|
||||
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
|
||||
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
|
||||
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
|
||||
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
|
||||
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
|
||||
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
|
||||
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||
case $MAX_FD in #(
|
||||
max*)
|
||||
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
MAX_FD=$( ulimit -H -n ) ||
|
||||
warn "Could not query maximum file descriptor limit"
|
||||
esac
|
||||
case $MAX_FD in #(
|
||||
'' | soft) :;; #(
|
||||
*)
|
||||
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||
# shellcheck disable=SC3045
|
||||
ulimit -n "$MAX_FD" ||
|
||||
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||
esac
|
||||
fi
|
||||
|
||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||
function splitJvmOpts() {
|
||||
JVM_OPTS=("$@")
|
||||
}
|
||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
||||
# Collect all arguments for the java command, stacking in reverse order:
|
||||
# * args from the command line
|
||||
# * the main class name
|
||||
# * -classpath
|
||||
# * -D...appname settings
|
||||
# * --module-path (only if needed)
|
||||
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
|
||||
|
||||
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||
# For Cygwin or MSYS, switch paths to Windows format before running java
|
||||
if "$cygwin" || "$msys" ; then
|
||||
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
|
||||
CLASSPATH=$( cygpath --path --mixed "$CLASSPATH" )
|
||||
|
||||
JAVACMD=$( cygpath --unix "$JAVACMD" )
|
||||
|
||||
# Now convert the arguments - kludge to limit ourselves to /bin/sh
|
||||
for arg do
|
||||
if
|
||||
case $arg in #(
|
||||
-*) false ;; # don't mess with options #(
|
||||
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
|
||||
[ -e "$t" ] ;; #(
|
||||
*) false ;;
|
||||
esac
|
||||
then
|
||||
arg=$( cygpath --path --ignore --mixed "$arg" )
|
||||
fi
|
||||
# Roll the args list around exactly as many times as the number of
|
||||
# args, so each arg winds up back in the position where it started, but
|
||||
# possibly modified.
|
||||
#
|
||||
# NB: a `for` loop captures its iteration list before it begins, so
|
||||
# changing the positional parameters here affects neither the number of
|
||||
# iterations, nor the values presented in `arg`.
|
||||
shift # remove old arg
|
||||
set -- "$@" "$arg" # push replacement arg
|
||||
done
|
||||
fi
|
||||
|
||||
|
||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
||||
|
||||
# Collect all arguments for the java command;
|
||||
# * $DEFAULT_JVM_OPTS, $JAVA_OPTS, and $GRADLE_OPTS can contain fragments of
|
||||
# shell script including quotes and variable substitutions, so put them in
|
||||
# double quotes to make sure that they get re-expanded; and
|
||||
# * put everything else in single quotes, so that it's not re-expanded.
|
||||
|
||||
set -- \
|
||||
"-Dorg.gradle.appname=$APP_BASE_NAME" \
|
||||
-classpath "$CLASSPATH" \
|
||||
org.gradle.wrapper.GradleWrapperMain \
|
||||
"$@"
|
||||
|
||||
# Stop when "xargs" is not available.
|
||||
if ! command -v xargs >/dev/null 2>&1
|
||||
then
|
||||
die "xargs is not available"
|
||||
fi
|
||||
|
||||
# Use "xargs" to parse quoted args.
|
||||
#
|
||||
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
|
||||
#
|
||||
# In Bash we could simply go:
|
||||
#
|
||||
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
|
||||
# set -- "${ARGS[@]}" "$@"
|
||||
#
|
||||
# but POSIX shell has neither arrays nor command substitution, so instead we
|
||||
# post-process each arg (as a line of input to sed) to backslash-escape any
|
||||
# character that might be a shell metacharacter, then use eval to reverse
|
||||
# that process (while maintaining the separation between arguments), and wrap
|
||||
# the whole thing up as a single "set" statement.
|
||||
#
|
||||
# This will of course break if any of these variables contains a newline or
|
||||
# an unmatched quote.
|
||||
#
|
||||
|
||||
eval "set -- $(
|
||||
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
|
||||
xargs -n1 |
|
||||
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
|
||||
tr '\n' ' '
|
||||
)" '"$@"'
|
||||
|
||||
exec "$JAVACMD" "$@"
|
||||
|
||||
Vendored
+32
-30
@@ -1,4 +1,20 @@
|
||||
@if "%DEBUG%" == "" @echo off
|
||||
@rem
|
||||
@rem Copyright 2015 the original author or authors.
|
||||
@rem
|
||||
@rem Licensed under the Apache License, Version 2.0 (the "License");
|
||||
@rem you may not use this file except in compliance with the License.
|
||||
@rem You may obtain a copy of the License at
|
||||
@rem
|
||||
@rem https://www.apache.org/licenses/LICENSE-2.0
|
||||
@rem
|
||||
@rem Unless required by applicable law or agreed to in writing, software
|
||||
@rem distributed under the License is distributed on an "AS IS" BASIS,
|
||||
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
||||
@rem See the License for the specific language governing permissions and
|
||||
@rem limitations under the License.
|
||||
@rem
|
||||
|
||||
@if "%DEBUG%"=="" @echo off
|
||||
@rem ##########################################################################
|
||||
@rem
|
||||
@rem Gradle startup script for Windows
|
||||
@@ -9,19 +25,23 @@
|
||||
if "%OS%"=="Windows_NT" setlocal
|
||||
|
||||
set DIRNAME=%~dp0
|
||||
if "%DIRNAME%" == "" set DIRNAME=.
|
||||
if "%DIRNAME%"=="" set DIRNAME=.
|
||||
@rem This is normally unused
|
||||
set APP_BASE_NAME=%~n0
|
||||
set APP_HOME=%DIRNAME%
|
||||
|
||||
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
|
||||
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
|
||||
|
||||
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||
set DEFAULT_JVM_OPTS=
|
||||
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
|
||||
|
||||
@rem Find java.exe
|
||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||
|
||||
set JAVA_EXE=java.exe
|
||||
%JAVA_EXE% -version >NUL 2>&1
|
||||
if "%ERRORLEVEL%" == "0" goto init
|
||||
if %ERRORLEVEL% equ 0 goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||
@@ -35,7 +55,7 @@ goto fail
|
||||
set JAVA_HOME=%JAVA_HOME:"=%
|
||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||
|
||||
if exist "%JAVA_EXE%" goto init
|
||||
if exist "%JAVA_EXE%" goto execute
|
||||
|
||||
echo.
|
||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||
@@ -45,44 +65,26 @@ echo location of your Java installation.
|
||||
|
||||
goto fail
|
||||
|
||||
:init
|
||||
@rem Get command-line arguments, handling Windows variants
|
||||
|
||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||
|
||||
:win9xME_args
|
||||
@rem Slurp the command line arguments.
|
||||
set CMD_LINE_ARGS=
|
||||
set _SKIP=2
|
||||
|
||||
:win9xME_args_slurp
|
||||
if "x%~1" == "x" goto execute
|
||||
|
||||
set CMD_LINE_ARGS=%*
|
||||
goto execute
|
||||
|
||||
:4NT_args
|
||||
@rem Get arguments from the 4NT Shell from JP Software
|
||||
set CMD_LINE_ARGS=%$
|
||||
|
||||
:execute
|
||||
@rem Setup the command line
|
||||
|
||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||
|
||||
|
||||
@rem Execute Gradle
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
|
||||
|
||||
:end
|
||||
@rem End local scope for the variables with windows NT shell
|
||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||
|
||||
:fail
|
||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||
rem the _cmd.exe /c_ return code!
|
||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||
exit /b 1
|
||||
set EXIT_CODE=%ERRORLEVEL%
|
||||
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||
exit /b %EXIT_CODE%
|
||||
|
||||
:mainEnd
|
||||
if "%OS%"=="Windows_NT" endlocal
|
||||
|
||||
@@ -0,0 +1,30 @@
|
||||
pluginManagement {
|
||||
repositories {
|
||||
maven {
|
||||
// RetroFuturaGradle
|
||||
name 'GTNH Maven'
|
||||
url 'https://nexus.gtnewhorizons.com/repository/public/'
|
||||
//noinspection GroovyAssignabilityCheck
|
||||
mavenContent {
|
||||
includeGroup 'com.gtnewhorizons'
|
||||
includeGroup 'com.gtnewhorizons.retrofuturagradle'
|
||||
}
|
||||
}
|
||||
gradlePluginPortal()
|
||||
mavenCentral()
|
||||
mavenLocal()
|
||||
}
|
||||
}
|
||||
|
||||
plugins {
|
||||
id 'com.diffplug.blowdryerSetup' version '1.7.0'
|
||||
// Automatic toolchain provisioning
|
||||
id 'org.gradle.toolchains.foojay-resolver-convention' version '0.7.0'
|
||||
}
|
||||
|
||||
blowdryerSetup {
|
||||
repoSubfolder 'spotless'
|
||||
github 'GregTechCEu/Buildscripts', 'tag', 'v1.0.7'
|
||||
}
|
||||
|
||||
rootProject.name = rootProject.projectDir.getName()
|
||||
@@ -30,6 +30,7 @@ import appeng.api.networking.IGridHelper;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.parts.IPartHelper;
|
||||
import appeng.api.storage.IStorageHelper;
|
||||
import appeng.api.util.IClientHelper;
|
||||
|
||||
|
||||
@AEInjectable
|
||||
@@ -60,4 +61,9 @@ public interface IAppEngApi
|
||||
*/
|
||||
IDefinitions definitions();
|
||||
|
||||
/**
|
||||
* @return Utility methods primarily useful for client side stuff
|
||||
*/
|
||||
IClientHelper client();
|
||||
|
||||
}
|
||||
@@ -26,5 +26,23 @@ package appeng.api.config;
|
||||
|
||||
public enum ActionItems
|
||||
{
|
||||
WRENCH, CLOSE, STASH, ENCODE, SUBSTITUTION
|
||||
}
|
||||
WRENCH,
|
||||
CLOSE,
|
||||
STASH,
|
||||
ENCODE,
|
||||
SUBSTITUTION,
|
||||
MULTIPLY_BY_TWO,
|
||||
MULTIPLY_BY_THREE,
|
||||
INCREASE_BY_ONE,
|
||||
DIVIDE_BY_TWO,
|
||||
DIVIDE_BY_THREE,
|
||||
DECREASE_BY_ONE,
|
||||
MAX_COUNT,
|
||||
MOLECULAR_ASSEMBLERS_ON,
|
||||
MOLECULAR_ASSEMBLERS_OFF,
|
||||
TOGGLE_SHOW_FULL_INTERFACES_ON,
|
||||
TOGGLE_SHOW_FULL_INTERFACES_OFF,
|
||||
TOGGLE_SHOW_ONLY_INVALID_PATTERNS_ON,
|
||||
TOGGLE_SHOW_ONLY_INVALID_PATTERNS_OFF,
|
||||
HIGHLIGHT_INTERFACE
|
||||
}
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
package appeng.api.config;
|
||||
|
||||
public enum LockCraftingMode {
|
||||
/**
|
||||
* Crafting is never locked.
|
||||
*/
|
||||
NONE,
|
||||
/**
|
||||
* After pushing a pattern to an adjacent machine, the interface will not accept further crafts until a
|
||||
* redstone pulse is received.
|
||||
*/
|
||||
LOCK_UNTIL_PULSE,
|
||||
/**
|
||||
* Crafting is locked while the interface is receiving a redstone signal.
|
||||
*/
|
||||
LOCK_WHILE_HIGH,
|
||||
/**
|
||||
* Crafting is locked while the interface is not receiving a redstone signal.
|
||||
*/
|
||||
LOCK_WHILE_LOW,
|
||||
/**
|
||||
* After pushing a pattern to an adjacent machine, the interface will not accept further crafts until the
|
||||
* primary pattern result is returned to the network through the interface.
|
||||
*/
|
||||
LOCK_UNTIL_RESULT
|
||||
}
|
||||
@@ -28,7 +28,8 @@ public enum PowerUnits
|
||||
{
|
||||
AE( "gui.appliedenergistics2.units.appliedenergstics" ), // Native Units - AE Energy
|
||||
EU( "gui.appliedenergistics2.units.ic2" ), // IndustrialCraft 2 - Energy Units
|
||||
RF( "gui.appliedenergistics2.units.rf" ); // RF - Redstone Flux
|
||||
RF( "gui.appliedenergistics2.units.rf" ), // RF - Redstone Flux
|
||||
GTEU( "gui.appliedenergistics2.units.gteu" ); // RF - Redstone Flux
|
||||
|
||||
/**
|
||||
* unlocalized name for the power unit.
|
||||
@@ -46,14 +47,13 @@ public enum PowerUnits
|
||||
|
||||
/**
|
||||
* do power conversion using AE's conversion rates.
|
||||
*
|
||||
* <p>
|
||||
* Example: PowerUnits.EU.convertTo( PowerUnits.AE, 32 );
|
||||
*
|
||||
* <p>
|
||||
* will normally returns 64, as it will convert the EU, to AE with AE's power settings.
|
||||
*
|
||||
* @param target target power unit
|
||||
* @param value value
|
||||
*
|
||||
* @param value value
|
||||
* @return value converted to target units, from this units.
|
||||
*/
|
||||
public double convertTo( final PowerUnits target, final double value )
|
||||
|
||||
@@ -57,6 +57,8 @@ public enum Settings
|
||||
|
||||
IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ),
|
||||
|
||||
UNLOCK(EnumSet.allOf(LockCraftingMode.class)),
|
||||
|
||||
BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ),
|
||||
@@ -81,7 +83,11 @@ public enum Settings
|
||||
|
||||
PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) );
|
||||
SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) ),
|
||||
|
||||
STICKY_MODE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||
|
||||
;
|
||||
|
||||
private final EnumSet<? extends Enum<?>> values;
|
||||
|
||||
|
||||
@@ -24,15 +24,65 @@
|
||||
package appeng.api.config;
|
||||
|
||||
|
||||
public enum TunnelType
|
||||
{
|
||||
ME, // Network Tunnel
|
||||
IC2_POWER, // EU Tunnel
|
||||
FE_POWER, // Forge Energy tunnel
|
||||
REDSTONE, // Redstone Tunnel
|
||||
FLUID, // Fluid Tunnel
|
||||
ITEM, // Item Tunnel
|
||||
LIGHT, // Light Tunnel
|
||||
BUNDLED_REDSTONE, // Bundled Redstone Tunnel
|
||||
COMPUTER_MESSAGE // Computer Message Tunnel
|
||||
import appeng.api.AEApi;
|
||||
import appeng.api.definitions.IItemDefinition;
|
||||
import appeng.api.definitions.IParts;
|
||||
import appeng.api.parts.IPartItem;
|
||||
import com.google.common.base.Preconditions;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.util.EnumHelper;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import java.util.function.Function;
|
||||
import java.util.function.Supplier;
|
||||
|
||||
public enum TunnelType {
|
||||
ME(tryPartStack(IParts::p2PTunnelME)),
|
||||
IC2_POWER(tryPartStack(IParts::p2PTunnelEU)),
|
||||
FE_POWER(tryPartStack(IParts::p2PTunnelFE)),
|
||||
GTEU_POWER(tryPartStack(IParts::p2PTunnelGTEU)),
|
||||
REDSTONE(tryPartStack(IParts::p2PTunnelRedstone)),
|
||||
FLUID(tryPartStack(IParts::p2PTunnelFE)),
|
||||
ITEM(tryPartStack(IParts::p2PTunnelItems)),
|
||||
LIGHT(tryPartStack(IParts::p2PTunnelLight));
|
||||
|
||||
private ItemStack partItemStack;
|
||||
private Supplier<ItemStack> partItemStackSupplier;
|
||||
|
||||
@Deprecated
|
||||
TunnelType() {
|
||||
this.partItemStack = ItemStack.EMPTY;
|
||||
this.partItemStackSupplier = null;
|
||||
}
|
||||
|
||||
// Public facing.
|
||||
TunnelType(ItemStack partItemStack) {
|
||||
this.partItemStack = partItemStack;
|
||||
this.partItemStackSupplier = null;
|
||||
}
|
||||
|
||||
// Work around things instantiating this class too early.
|
||||
TunnelType(Supplier<ItemStack> supplier) {
|
||||
this.partItemStack = null;
|
||||
this.partItemStackSupplier = supplier;
|
||||
}
|
||||
|
||||
private static Supplier<ItemStack> tryPartStack(Function<IParts, IItemDefinition> supplier) {
|
||||
return () -> supplier.apply(AEApi.instance().definitions().parts()).maybeStack(1).orElse(ItemStack.EMPTY);
|
||||
}
|
||||
|
||||
public static TunnelType registerTunnelType(@Nonnull String name, @Nonnull ItemStack partItemStack) {
|
||||
Preconditions.checkArgument(partItemStack.isEmpty() || partItemStack.getItem() instanceof IPartItem<?>,
|
||||
"Part item must be an instance of IPartItem");
|
||||
|
||||
return EnumHelper.addEnum(TunnelType.class, name, new Class[]{ItemStack.class}, partItemStack);
|
||||
}
|
||||
|
||||
public ItemStack getPartItemStack() {
|
||||
if (this.partItemStackSupplier != null) {
|
||||
this.partItemStack = this.partItemStackSupplier.get();
|
||||
this.partItemStackSupplier = null;
|
||||
}
|
||||
return partItemStack;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -32,61 +32,62 @@ import net.minecraft.item.ItemStack;
|
||||
import appeng.api.definitions.IItemDefinition;
|
||||
|
||||
|
||||
public enum Upgrades
|
||||
{
|
||||
/**
|
||||
* Gold Tier Upgrades.
|
||||
*/
|
||||
CAPACITY( 0 ), REDSTONE( 0 ), CRAFTING( 0 ),
|
||||
public enum Upgrades {
|
||||
/**
|
||||
* Gold Tier Upgrades.
|
||||
*/
|
||||
CAPACITY(0),
|
||||
REDSTONE(0),
|
||||
CRAFTING(0),
|
||||
MAGNET(0),
|
||||
STICKY(0),
|
||||
|
||||
/**
|
||||
* Diamond Tier Upgrades.
|
||||
*/
|
||||
FUZZY( 1 ), SPEED( 1 ), INVERTER( 1 );
|
||||
/**
|
||||
* Diamond Tier Upgrades.
|
||||
*/
|
||||
FUZZY(1),
|
||||
SPEED(1),
|
||||
INVERTER(1),
|
||||
PATTERN_EXPANSION(1),
|
||||
QUANTUM_LINK(1);
|
||||
|
||||
private final int tier;
|
||||
private final Map<ItemStack, Integer> supportedMax = new HashMap<>();
|
||||
private final int tier;
|
||||
private final Map<ItemStack, Integer> supportedMax = new HashMap<>();
|
||||
|
||||
Upgrades( final int tier )
|
||||
{
|
||||
this.tier = tier;
|
||||
}
|
||||
Upgrades(final int tier) {
|
||||
this.tier = tier;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return list of Items/Blocks that support this upgrade, and how many it supports.
|
||||
*/
|
||||
public Map<ItemStack, Integer> getSupported()
|
||||
{
|
||||
return this.supportedMax;
|
||||
}
|
||||
/**
|
||||
* @return list of Items/Blocks that support this upgrade, and how many it supports.
|
||||
*/
|
||||
public Map<ItemStack, Integer> getSupported() {
|
||||
return this.supportedMax;
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a specific amount of this upgrade into a specific machine
|
||||
*
|
||||
* @param item machine in which this upgrade can be installed
|
||||
* @param maxSupported amount how many upgrades can be installed
|
||||
*/
|
||||
public void registerItem( final IItemDefinition item, final int maxSupported )
|
||||
{
|
||||
item.maybeStack( 1 ).ifPresent( is -> this.registerItem( is, maxSupported ) );
|
||||
}
|
||||
/**
|
||||
* Registers a specific amount of this upgrade into a specific machine
|
||||
*
|
||||
* @param item machine in which this upgrade can be installed
|
||||
* @param maxSupported amount how many upgrades can be installed
|
||||
*/
|
||||
public void registerItem(final IItemDefinition item, final int maxSupported) {
|
||||
item.maybeStack(1).ifPresent(is -> this.registerItem(is, maxSupported));
|
||||
}
|
||||
|
||||
/**
|
||||
* Registers a specific amount of this upgrade into a specific machine
|
||||
*
|
||||
* @param stack machine in which this upgrade can be installed
|
||||
* @param maxSupported amount how many upgrades can be installed
|
||||
*/
|
||||
public void registerItem( final ItemStack stack, final int maxSupported )
|
||||
{
|
||||
if( stack != null )
|
||||
{
|
||||
this.supportedMax.put( stack, maxSupported );
|
||||
}
|
||||
}
|
||||
/**
|
||||
* Registers a specific amount of this upgrade into a specific machine
|
||||
*
|
||||
* @param stack machine in which this upgrade can be installed
|
||||
* @param maxSupported amount how many upgrades can be installed
|
||||
*/
|
||||
public void registerItem(final ItemStack stack, final int maxSupported) {
|
||||
if (stack != null) {
|
||||
this.supportedMax.put(stack, maxSupported);
|
||||
}
|
||||
}
|
||||
|
||||
public int getTier()
|
||||
{
|
||||
return this.tier;
|
||||
}
|
||||
public int getTier() {
|
||||
return this.tier;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -148,6 +148,8 @@ public interface IBlocks
|
||||
|
||||
ITileDefinition iface();
|
||||
|
||||
ITileDefinition fluidIface();
|
||||
|
||||
ITileDefinition cellWorkbench();
|
||||
|
||||
ITileDefinition iOPort();
|
||||
|
||||
@@ -30,8 +30,7 @@ import appeng.api.util.AEColoredItemDefinition;
|
||||
/**
|
||||
* A list of all items in AE
|
||||
*/
|
||||
public interface IItems
|
||||
{
|
||||
public interface IItems {
|
||||
IItemDefinition certusQuartzAxe();
|
||||
|
||||
IItemDefinition certusQuartzHoe();
|
||||
@@ -64,6 +63,14 @@ public interface IItems
|
||||
|
||||
IItemDefinition wirelessTerminal();
|
||||
|
||||
IItemDefinition wirelessCraftingTerminal();
|
||||
|
||||
IItemDefinition wirelessPatternTerminal();
|
||||
|
||||
IItemDefinition wirelessInterfaceTerminal();
|
||||
|
||||
IItemDefinition wirelessFluidTerminal();
|
||||
|
||||
IItemDefinition biometricCard();
|
||||
|
||||
IItemDefinition chargedStaff();
|
||||
@@ -88,6 +95,14 @@ public interface IItems
|
||||
|
||||
IItemDefinition cell64k();
|
||||
|
||||
IItemDefinition fluidCell1k();
|
||||
|
||||
IItemDefinition fluidCell4k();
|
||||
|
||||
IItemDefinition fluidCell16k();
|
||||
|
||||
IItemDefinition fluidCell64k();
|
||||
|
||||
IItemDefinition spatialCell2();
|
||||
|
||||
IItemDefinition spatialCell16();
|
||||
|
||||
@@ -27,111 +27,126 @@ package appeng.api.definitions;
|
||||
/**
|
||||
* A list of all materials in AE
|
||||
*/
|
||||
public interface IMaterials
|
||||
{
|
||||
IItemDefinition cell2SpatialPart();
|
||||
public interface IMaterials {
|
||||
IItemDefinition cell2SpatialPart();
|
||||
|
||||
IItemDefinition cell16SpatialPart();
|
||||
IItemDefinition cell16SpatialPart();
|
||||
|
||||
IItemDefinition cell128SpatialPart();
|
||||
IItemDefinition cell128SpatialPart();
|
||||
|
||||
IItemDefinition silicon();
|
||||
IItemDefinition silicon();
|
||||
|
||||
IItemDefinition skyDust();
|
||||
IItemDefinition skyDust();
|
||||
|
||||
IItemDefinition calcProcessorPress();
|
||||
IItemDefinition calcProcessorPress();
|
||||
|
||||
IItemDefinition engProcessorPress();
|
||||
IItemDefinition engProcessorPress();
|
||||
|
||||
IItemDefinition logicProcessorPress();
|
||||
IItemDefinition logicProcessorPress();
|
||||
|
||||
IItemDefinition calcProcessorPrint();
|
||||
IItemDefinition calcProcessorPrint();
|
||||
|
||||
IItemDefinition engProcessorPrint();
|
||||
IItemDefinition engProcessorPrint();
|
||||
|
||||
IItemDefinition logicProcessorPrint();
|
||||
IItemDefinition logicProcessorPrint();
|
||||
|
||||
IItemDefinition siliconPress();
|
||||
IItemDefinition siliconPress();
|
||||
|
||||
IItemDefinition siliconPrint();
|
||||
IItemDefinition siliconPrint();
|
||||
|
||||
IItemDefinition namePress();
|
||||
IItemDefinition namePress();
|
||||
|
||||
IItemDefinition logicProcessor();
|
||||
IItemDefinition logicProcessor();
|
||||
|
||||
IItemDefinition calcProcessor();
|
||||
IItemDefinition calcProcessor();
|
||||
|
||||
IItemDefinition engProcessor();
|
||||
IItemDefinition engProcessor();
|
||||
|
||||
IItemDefinition basicCard();
|
||||
IItemDefinition basicCard();
|
||||
|
||||
IItemDefinition advCard();
|
||||
IItemDefinition advCard();
|
||||
|
||||
IItemDefinition purifiedCertusQuartzCrystal();
|
||||
IItemDefinition purifiedCertusQuartzCrystal();
|
||||
|
||||
IItemDefinition purifiedNetherQuartzCrystal();
|
||||
IItemDefinition purifiedNetherQuartzCrystal();
|
||||
|
||||
IItemDefinition purifiedFluixCrystal();
|
||||
IItemDefinition purifiedFluixCrystal();
|
||||
|
||||
IItemDefinition cell1kPart();
|
||||
IItemDefinition cell1kPart();
|
||||
|
||||
IItemDefinition cell4kPart();
|
||||
IItemDefinition cell4kPart();
|
||||
|
||||
IItemDefinition cell16kPart();
|
||||
IItemDefinition cell16kPart();
|
||||
|
||||
IItemDefinition cell64kPart();
|
||||
IItemDefinition cell64kPart();
|
||||
|
||||
IItemDefinition emptyStorageCell();
|
||||
IItemDefinition emptyStorageCell();
|
||||
|
||||
IItemDefinition cardRedstone();
|
||||
IItemDefinition cardRedstone();
|
||||
|
||||
IItemDefinition cardSpeed();
|
||||
IItemDefinition cardSpeed();
|
||||
|
||||
IItemDefinition cardCapacity();
|
||||
IItemDefinition cardCapacity();
|
||||
|
||||
IItemDefinition cardFuzzy();
|
||||
IItemDefinition cardPatternExpansion();
|
||||
|
||||
IItemDefinition cardInverter();
|
||||
IItemDefinition cardQuantumLink();
|
||||
|
||||
IItemDefinition cardCrafting();
|
||||
IItemDefinition cardMagnet();
|
||||
|
||||
IItemDefinition enderDust();
|
||||
IItemDefinition cardFuzzy();
|
||||
|
||||
IItemDefinition flour();
|
||||
IItemDefinition cardInverter();
|
||||
|
||||
IItemDefinition goldDust();
|
||||
IItemDefinition cardCrafting();
|
||||
|
||||
IItemDefinition ironDust();
|
||||
IItemDefinition cardSticky();
|
||||
|
||||
IItemDefinition fluixDust();
|
||||
IItemDefinition enderDust();
|
||||
|
||||
IItemDefinition certusQuartzDust();
|
||||
IItemDefinition flour();
|
||||
|
||||
IItemDefinition netherQuartzDust();
|
||||
IItemDefinition goldDust();
|
||||
|
||||
IItemDefinition matterBall();
|
||||
IItemDefinition ironDust();
|
||||
|
||||
IItemDefinition certusQuartzCrystal();
|
||||
IItemDefinition fluixDust();
|
||||
|
||||
IItemDefinition certusQuartzCrystalCharged();
|
||||
IItemDefinition certusQuartzDust();
|
||||
|
||||
IItemDefinition fluixCrystal();
|
||||
IItemDefinition netherQuartzDust();
|
||||
|
||||
IItemDefinition fluixPearl();
|
||||
IItemDefinition matterBall();
|
||||
|
||||
IItemDefinition woodenGear();
|
||||
IItemDefinition certusQuartzCrystal();
|
||||
|
||||
IItemDefinition wirelessReceiver();
|
||||
IItemDefinition certusQuartzCrystalCharged();
|
||||
|
||||
IItemDefinition wirelessBooster();
|
||||
IItemDefinition fluixCrystal();
|
||||
|
||||
IItemDefinition annihilationCore();
|
||||
IItemDefinition fluixPearl();
|
||||
|
||||
IItemDefinition formationCore();
|
||||
IItemDefinition woodenGear();
|
||||
|
||||
IItemDefinition singularity();
|
||||
IItemDefinition wirelessReceiver();
|
||||
|
||||
IItemDefinition qESingularity();
|
||||
IItemDefinition wirelessBooster();
|
||||
|
||||
IItemDefinition blankPattern();
|
||||
IItemDefinition annihilationCore();
|
||||
|
||||
IItemDefinition formationCore();
|
||||
|
||||
IItemDefinition singularity();
|
||||
|
||||
IItemDefinition qESingularity();
|
||||
|
||||
IItemDefinition blankPattern();
|
||||
|
||||
IItemDefinition fluidCell1kPart();
|
||||
|
||||
IItemDefinition fluidCell4kPart();
|
||||
|
||||
IItemDefinition fluidCell16kPart();
|
||||
|
||||
IItemDefinition fluidCell64kPart();
|
||||
}
|
||||
|
||||
@@ -30,81 +30,106 @@ import appeng.api.util.AEColoredItemDefinition;
|
||||
/**
|
||||
* A list of all parts in AE
|
||||
*/
|
||||
public interface IParts
|
||||
{
|
||||
AEColoredItemDefinition cableSmart();
|
||||
public interface IParts {
|
||||
AEColoredItemDefinition cableSmart();
|
||||
|
||||
AEColoredItemDefinition cableCovered();
|
||||
AEColoredItemDefinition cableCovered();
|
||||
|
||||
AEColoredItemDefinition cableGlass();
|
||||
AEColoredItemDefinition cableGlass();
|
||||
|
||||
AEColoredItemDefinition cableDenseCovered();
|
||||
|
||||
AEColoredItemDefinition cableDenseSmart();
|
||||
AEColoredItemDefinition cableDenseCovered();
|
||||
|
||||
AEColoredItemDefinition lumenCableSmart();
|
||||
AEColoredItemDefinition cableDenseSmart();
|
||||
|
||||
AEColoredItemDefinition lumenCableCovered();
|
||||
AEColoredItemDefinition lumenCableSmart();
|
||||
|
||||
AEColoredItemDefinition lumenCableGlass();
|
||||
AEColoredItemDefinition lumenCableCovered();
|
||||
|
||||
AEColoredItemDefinition lumenDenseCableSmart();
|
||||
AEColoredItemDefinition lumenCableGlass();
|
||||
|
||||
IItemDefinition quartzFiber();
|
||||
AEColoredItemDefinition lumenDenseCableSmart();
|
||||
|
||||
IItemDefinition toggleBus();
|
||||
IItemDefinition quartzFiber();
|
||||
|
||||
IItemDefinition invertedToggleBus();
|
||||
IItemDefinition toggleBus();
|
||||
|
||||
IItemDefinition storageBus();
|
||||
IItemDefinition invertedToggleBus();
|
||||
|
||||
IItemDefinition importBus();
|
||||
IItemDefinition storageBus();
|
||||
|
||||
IItemDefinition exportBus();
|
||||
IItemDefinition oreDictStorageBus();
|
||||
|
||||
IItemDefinition iface();
|
||||
IItemDefinition importBus();
|
||||
|
||||
IItemDefinition levelEmitter();
|
||||
IItemDefinition exportBus();
|
||||
|
||||
IItemDefinition annihilationPlane();
|
||||
IItemDefinition iface();
|
||||
|
||||
IItemDefinition identityAnnihilationPlane();
|
||||
IItemDefinition fluidIface();
|
||||
|
||||
IItemDefinition formationPlane();
|
||||
IItemDefinition levelEmitter();
|
||||
|
||||
IItemDefinition p2PTunnelME();
|
||||
IItemDefinition annihilationPlane();
|
||||
|
||||
IItemDefinition p2PTunnelRedstone();
|
||||
IItemDefinition identityAnnihilationPlane();
|
||||
|
||||
IItemDefinition p2PTunnelItems();
|
||||
IItemDefinition formationPlane();
|
||||
|
||||
IItemDefinition p2PTunnelFluids();
|
||||
IItemDefinition p2PTunnelME();
|
||||
|
||||
IItemDefinition p2PTunnelEU();
|
||||
IItemDefinition p2PTunnelRedstone();
|
||||
|
||||
IItemDefinition p2PTunnelFE();
|
||||
IItemDefinition p2PTunnelItems();
|
||||
|
||||
IItemDefinition p2PTunnelLight();
|
||||
IItemDefinition p2PTunnelFluids();
|
||||
|
||||
// IItemDefinition p2PTunnelOpenComputers();
|
||||
IItemDefinition p2PTunnelEU();
|
||||
|
||||
IItemDefinition cableAnchor();
|
||||
IItemDefinition p2PTunnelFE();
|
||||
|
||||
IItemDefinition monitor();
|
||||
IItemDefinition p2PTunnelGTEU();
|
||||
|
||||
IItemDefinition semiDarkMonitor();
|
||||
IItemDefinition p2PTunnelLight();
|
||||
|
||||
IItemDefinition darkMonitor();
|
||||
// IItemDefinition p2PTunnelOpenComputers();
|
||||
|
||||
IItemDefinition interfaceTerminal();
|
||||
IItemDefinition cableAnchor();
|
||||
|
||||
IItemDefinition patternTerminal();
|
||||
IItemDefinition monitor();
|
||||
|
||||
IItemDefinition craftingTerminal();
|
||||
IItemDefinition semiDarkMonitor();
|
||||
|
||||
IItemDefinition terminal();
|
||||
IItemDefinition darkMonitor();
|
||||
|
||||
IItemDefinition storageMonitor();
|
||||
IItemDefinition interfaceTerminal();
|
||||
|
||||
IItemDefinition conversionMonitor();
|
||||
IItemDefinition patternTerminal();
|
||||
|
||||
IItemDefinition expandedProcessingPatternTerminal();
|
||||
|
||||
IItemDefinition interfaceConfigurationTerminal();
|
||||
|
||||
IItemDefinition fluidInterfaceConfigurationTerminal();
|
||||
|
||||
IItemDefinition craftingTerminal();
|
||||
|
||||
IItemDefinition terminal();
|
||||
|
||||
IItemDefinition storageMonitor();
|
||||
|
||||
IItemDefinition conversionMonitor();
|
||||
|
||||
IItemDefinition fluidTerminal();
|
||||
|
||||
IItemDefinition fluidImportBus();
|
||||
|
||||
IItemDefinition fluidExportBus();
|
||||
|
||||
IItemDefinition fluidStorageBus();
|
||||
|
||||
IItemDefinition fluidLevelEmitter();
|
||||
|
||||
IItemDefinition fluidAnnihilationPlane();
|
||||
|
||||
IItemDefinition fluidFormationnPlane();
|
||||
}
|
||||
|
||||
@@ -19,12 +19,11 @@
|
||||
package appeng.api.features;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import java.util.List;
|
||||
import java.util.Optional;
|
||||
|
||||
|
||||
/**
|
||||
@@ -57,21 +56,35 @@ public interface IInscriberRecipe
|
||||
@Nonnull
|
||||
ItemStack getOutput();
|
||||
|
||||
|
||||
@Nonnull
|
||||
List<ItemStack> getTopInputs();
|
||||
|
||||
/**
|
||||
* gets the top optional
|
||||
*
|
||||
* @return item which is used top
|
||||
*/
|
||||
@Deprecated
|
||||
@Nonnull
|
||||
Optional<ItemStack> getTopOptional();
|
||||
default Optional<ItemStack> getTopOptional(){
|
||||
return getTopInputs().isEmpty() ? Optional.empty() : Optional.of(getTopInputs().get(0));
|
||||
}
|
||||
|
||||
|
||||
@Nonnull
|
||||
List<ItemStack> getBottomInputs();
|
||||
|
||||
/**
|
||||
* gets the bottom optional
|
||||
*
|
||||
* @return item which is used bottom
|
||||
*/
|
||||
@Deprecated
|
||||
@Nonnull
|
||||
Optional<ItemStack> getBottomOptional();
|
||||
default Optional<ItemStack> getBottomOptional() {
|
||||
return getBottomInputs().isEmpty() ? Optional.empty() : Optional.of(getBottomInputs().get(0));
|
||||
}
|
||||
|
||||
/**
|
||||
* type of inscriber process
|
||||
|
||||
@@ -19,11 +19,11 @@
|
||||
package appeng.api.features;
|
||||
|
||||
|
||||
import java.util.Collection;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import java.util.Collection;
|
||||
import java.util.Collections;
|
||||
|
||||
|
||||
/**
|
||||
@@ -66,7 +66,7 @@ public interface IInscriberRecipeBuilder
|
||||
* @return currently used builder
|
||||
*/
|
||||
@Nonnull
|
||||
IInscriberRecipeBuilder withTopOptional( @Nonnull ItemStack topOptional );
|
||||
IInscriberRecipeBuilder withTopOptional(@Nonnull Collection<ItemStack> topOptional );
|
||||
|
||||
/**
|
||||
* Creates an inscriber recipe with bot.
|
||||
@@ -77,7 +77,7 @@ public interface IInscriberRecipeBuilder
|
||||
* @return currently used builder
|
||||
*/
|
||||
@Nonnull
|
||||
IInscriberRecipeBuilder withBottomOptional( @Nonnull ItemStack bottomOptional );
|
||||
IInscriberRecipeBuilder withBottomOptional( @Nonnull Collection<ItemStack> bottomOptional );
|
||||
|
||||
/**
|
||||
* Creates an inscriber recipe with type.
|
||||
@@ -104,4 +104,14 @@ public interface IInscriberRecipeBuilder
|
||||
*/
|
||||
@Nonnull
|
||||
IInscriberRecipe build();
|
||||
|
||||
@Deprecated
|
||||
default IInscriberRecipeBuilder withTopOptional(@Nonnull ItemStack topOptional){
|
||||
return withTopOptional(Collections.singleton(topOptional));
|
||||
}
|
||||
|
||||
@Deprecated
|
||||
default IInscriberRecipeBuilder withBottomOptional(@Nonnull ItemStack bottomOptional){
|
||||
return withBottomOptional(Collections.singleton(bottomOptional));
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,13 +24,12 @@
|
||||
package appeng.api.features;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import appeng.api.config.TunnelType;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.common.capabilities.Capability;
|
||||
|
||||
import appeng.api.config.TunnelType;
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
/**
|
||||
@@ -47,7 +46,9 @@ public interface IP2PTunnelRegistry
|
||||
* @param type - the type of tunnel. Nullable, but then ignored
|
||||
*/
|
||||
void addNewAttunement( @Nonnull ItemStack trigger, @Nullable TunnelType type );
|
||||
|
||||
void addNewAttunement( @Nonnull String ModId, @Nullable TunnelType type );
|
||||
|
||||
void addNewAttunement( @Nonnull Capability<?> cap, @Nullable TunnelType type );
|
||||
|
||||
/**
|
||||
@@ -57,6 +58,8 @@ public interface IP2PTunnelRegistry
|
||||
*
|
||||
* @return null if no attunement can be found or attunement
|
||||
*/
|
||||
@Nonnull
|
||||
@Nullable
|
||||
TunnelType getTunnelTypeByItem( ItemStack trigger );
|
||||
|
||||
TunnelType registerTunnelType( @Nonnull String enumName, @Nonnull ItemStack partStack );
|
||||
}
|
||||
@@ -28,47 +28,45 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.util.IConfigManager;
|
||||
import net.minecraftforge.fml.common.network.IGuiHandler;
|
||||
|
||||
|
||||
/**
|
||||
* A handler for a wireless terminal.
|
||||
*/
|
||||
public interface IWirelessTermHandler extends INetworkEncodable
|
||||
{
|
||||
public interface IWirelessTermHandler extends INetworkEncodable {
|
||||
|
||||
/**
|
||||
* @param is wireless terminal
|
||||
*
|
||||
* @return true, if usePower, hasPower, etc... can be called for the provided item
|
||||
*/
|
||||
boolean canHandle( ItemStack is );
|
||||
/**
|
||||
* @param is wireless terminal
|
||||
* @return true, if usePower, hasPower, etc... can be called for the provided item
|
||||
*/
|
||||
boolean canHandle(ItemStack is);
|
||||
|
||||
/**
|
||||
* use an amount of power, in AE units
|
||||
*
|
||||
* @param amount is in AE units ( 5 per MJ ), if you return false, the item should be dead and return false for
|
||||
* hasPower
|
||||
* @param is wireless terminal
|
||||
*
|
||||
* @return true if wireless terminal uses power
|
||||
*/
|
||||
boolean usePower( EntityPlayer player, double amount, ItemStack is );
|
||||
/**
|
||||
* use an amount of power, in AE units
|
||||
*
|
||||
* @param amount is in AE units ( 5 per MJ ), if you return false, the item should be dead and return false for
|
||||
* hasPower
|
||||
* @param is wireless terminal
|
||||
* @return true if wireless terminal uses power
|
||||
*/
|
||||
boolean usePower(EntityPlayer player, double amount, ItemStack is);
|
||||
|
||||
/**
|
||||
* gets the power status of the item.
|
||||
*
|
||||
* @param is wireless terminal
|
||||
*
|
||||
* @return returns true if there is any power left.
|
||||
*/
|
||||
boolean hasPower( EntityPlayer player, double amount, ItemStack is );
|
||||
/**
|
||||
* gets the power status of the item.
|
||||
*
|
||||
* @param is wireless terminal
|
||||
* @return returns true if there is any power left.
|
||||
*/
|
||||
boolean hasPower(EntityPlayer player, double amount, ItemStack is);
|
||||
|
||||
/**
|
||||
* Return the config manager for the wireless terminal.
|
||||
*
|
||||
* @param is wireless terminal
|
||||
*
|
||||
* @return config manager of wireless terminal
|
||||
*/
|
||||
IConfigManager getConfigManager( ItemStack is );
|
||||
/**
|
||||
* Return the config manager for the wireless terminal.
|
||||
*
|
||||
* @param is wireless terminal
|
||||
* @return config manager of wireless terminal
|
||||
*/
|
||||
IConfigManager getConfigManager(ItemStack is);
|
||||
|
||||
IGuiHandler getGuiHandler(ItemStack is);
|
||||
}
|
||||
@@ -0,0 +1,7 @@
|
||||
package appeng.api.implementations;
|
||||
|
||||
public interface IUpgradeableCellContainer {
|
||||
int availableUpgrades();
|
||||
|
||||
void setupUpgrades();
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.implementations;
|
||||
|
||||
|
||||
import appeng.api.config.Upgrades;
|
||||
import appeng.api.implementations.tiles.ISegmentedInventory;
|
||||
import appeng.api.util.IConfigurableObject;
|
||||
|
||||
|
||||
public interface IUpgradeableCellHost extends IConfigurableObject, ISegmentedInventory {
|
||||
|
||||
/**
|
||||
* determine how many of an upgrade are installed.
|
||||
*/
|
||||
default int getInstalledUpgrades(Upgrades u) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
}
|
||||
@@ -35,6 +35,6 @@ import appeng.api.networking.IGridHost;
|
||||
public interface INetworkTool extends IGuiItemObject
|
||||
{
|
||||
IGridHost getGridHost(); // null for most purposes.
|
||||
|
||||
|
||||
IItemHandler getInventory();
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import appeng.api.util.AEColor;
|
||||
|
||||
|
||||
/**
|
||||
* Memory Card API
|
||||
@@ -41,13 +43,18 @@ public interface IMemoryCard
|
||||
* Configures the data stored on the memory card, the SettingsName, will be
|
||||
* localized when displayed.
|
||||
*
|
||||
* The data can contain an optional string with the key "tooltip", which will be used as
|
||||
* unlocalized string to display it after the settings name.
|
||||
*
|
||||
* The data can contain an optional intArray using "colorCode" to be displayed on the model itself.
|
||||
* It needs to have exactly 8 elements representing the ordinal of the matching {@link AEColor}.
|
||||
* The first 4 values represent the top row, left to right. The second 4 the bottom row.
|
||||
*
|
||||
* @param is item
|
||||
* @param SettingsName unlocalized string that represents the tile entity.
|
||||
* @param data may contain a String called "tooltip" which is is a
|
||||
* unlocalized string displayed after the settings name, optional
|
||||
* but can be used to add details to the card for later.
|
||||
* @param settingsName unlocalized string that represents the tile entity.
|
||||
* @param data the NBT tag, refer to the normal comment for special keys.
|
||||
*/
|
||||
void setMemoryCardContents( ItemStack is, String SettingsName, NBTTagCompound data );
|
||||
void setMemoryCardContents( ItemStack is, String settingsName, NBTTagCompound data );
|
||||
|
||||
/**
|
||||
* returns the settings name provided by a previous call to
|
||||
@@ -68,6 +75,17 @@ public interface IMemoryCard
|
||||
*/
|
||||
NBTTagCompound getData( ItemStack is );
|
||||
|
||||
/**
|
||||
* This represent as 4x2 grid of {@link AEColor} without transparent/fluix color.
|
||||
*
|
||||
* First 4 colors are used for the top row, second for the bottom one.
|
||||
*
|
||||
* @param is item
|
||||
*
|
||||
* @return a hash representation of the memory card content
|
||||
*/
|
||||
AEColor[] getColorCode( ItemStack is );
|
||||
|
||||
/**
|
||||
* notify the user of a outcome related to the memory card.
|
||||
*
|
||||
|
||||
@@ -24,10 +24,13 @@
|
||||
package appeng.api.implementations.items;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.storage.ICellWorkbenchItem;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.IStorageChannel;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
/**
|
||||
@@ -40,7 +43,7 @@ import appeng.api.storage.data.IAEItemStack;
|
||||
*
|
||||
* The standard AE implementation only provides 1-63 Types
|
||||
*/
|
||||
public interface IStorageCell extends ICellWorkbenchItem
|
||||
public interface IStorageCell<T extends IAEStack<T>> extends ICellWorkbenchItem
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -51,7 +54,7 @@ public interface IStorageCell extends ICellWorkbenchItem
|
||||
*
|
||||
* @return number of bytes
|
||||
*/
|
||||
int getBytes( ItemStack cellItem );
|
||||
int getBytes( @Nonnull ItemStack cellItem );
|
||||
|
||||
/**
|
||||
* Determines the number of bytes used for any type included on the cell.
|
||||
@@ -60,7 +63,7 @@ public interface IStorageCell extends ICellWorkbenchItem
|
||||
*
|
||||
* @return number of bytes
|
||||
*/
|
||||
int getBytesPerType( ItemStack cellItem );
|
||||
int getBytesPerType( @Nonnull ItemStack cellItem );
|
||||
|
||||
/**
|
||||
* Must be between 1 and 63, indicates how many types you want to store on
|
||||
@@ -70,7 +73,7 @@ public interface IStorageCell extends ICellWorkbenchItem
|
||||
*
|
||||
* @return number of types
|
||||
*/
|
||||
int getTotalTypes( ItemStack cellItem );
|
||||
int getTotalTypes( @Nonnull ItemStack cellItem );
|
||||
|
||||
/**
|
||||
* Allows you to fine tune which items are allowed on a given cell, if you
|
||||
@@ -82,7 +85,7 @@ public interface IStorageCell extends ICellWorkbenchItem
|
||||
*
|
||||
* @return true to preventAdditionOfItem
|
||||
*/
|
||||
boolean isBlackListed( ItemStack cellItem, IAEItemStack requestedAddition );
|
||||
boolean isBlackListed( @Nonnull ItemStack cellItem, @Nonnull T requestedAddition );
|
||||
|
||||
/**
|
||||
* Allows you to specify if this storage cell can be stored inside other
|
||||
@@ -103,10 +106,16 @@ public interface IStorageCell extends ICellWorkbenchItem
|
||||
*
|
||||
* @return if the ItemStack should behavior as a storage cell.
|
||||
*/
|
||||
boolean isStorageCell( ItemStack i );
|
||||
boolean isStorageCell( @Nonnull ItemStack i );
|
||||
|
||||
/**
|
||||
* @return drain in ae/t this storage cell will use.
|
||||
*/
|
||||
double getIdleDrain();
|
||||
|
||||
/**
|
||||
* @return the type of channel your cell should be part of
|
||||
*/
|
||||
@Nonnull
|
||||
IStorageChannel<T> getChannel();
|
||||
}
|
||||
|
||||
@@ -29,5 +29,5 @@ package appeng.api.implementations.items;
|
||||
*/
|
||||
public enum MemoryCardMessages
|
||||
{
|
||||
INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_CLEARED
|
||||
INVALID_MACHINE, SETTINGS_LOADED, SETTINGS_SAVED, SETTINGS_RESET, SETTINGS_CLEARED
|
||||
}
|
||||
|
||||
@@ -40,11 +40,13 @@ public interface IChestOrDrive extends ICellContainer, IGridHost, IOrientable
|
||||
/**
|
||||
* 0 - cell is missing.
|
||||
*
|
||||
* 1 - green,
|
||||
* 1 - green, the cell is present and partially empty
|
||||
*
|
||||
* 2 - orange,
|
||||
* 2 - orange, the cell is present and full on types
|
||||
*
|
||||
* 3 - red
|
||||
* 3 - red, the cell is present and full on bytes
|
||||
*
|
||||
* 4 - blue, the cell is present but totally empty
|
||||
*
|
||||
* @param slot slot index
|
||||
*
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
package appeng.api.implementations.tiles;
|
||||
|
||||
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
package appeng.api.implementations.tiles;
|
||||
|
||||
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.networking.events.MENetworkEvent;
|
||||
import appeng.api.util.IReadOnlyCollection;
|
||||
|
||||
@@ -43,7 +45,8 @@ public interface IGrid
|
||||
*
|
||||
* @return the IGridCache you requested.
|
||||
*/
|
||||
<C extends IGridCache> C getCache( Class<? extends IGridCache> iface );
|
||||
@Nonnull
|
||||
<C extends IGridCache> C getCache( @Nonnull Class<? extends IGridCache> iface );
|
||||
|
||||
/**
|
||||
* Post an event into the network event bus.
|
||||
@@ -52,7 +55,8 @@ public interface IGrid
|
||||
*
|
||||
* @return returns ev back to original poster
|
||||
*/
|
||||
MENetworkEvent postEvent( MENetworkEvent ev );
|
||||
@Nonnull
|
||||
MENetworkEvent postEvent( @Nonnull MENetworkEvent ev );
|
||||
|
||||
/**
|
||||
* Post an event into the network event bus, but direct it at a single node.
|
||||
@@ -61,7 +65,8 @@ public interface IGrid
|
||||
*
|
||||
* @return returns ev back to original poster
|
||||
*/
|
||||
MENetworkEvent postEventTo( IGridNode node, MENetworkEvent ev );
|
||||
@Nonnull
|
||||
MENetworkEvent postEventTo( @Nonnull IGridNode node, @Nonnull MENetworkEvent ev );
|
||||
|
||||
/**
|
||||
* get a list of the diversity of classes, you can use this to better detect which machines your interested in,
|
||||
@@ -69,6 +74,7 @@ public interface IGrid
|
||||
*
|
||||
* @return IReadOnlyCollection of all available host types (Of Type IGridHost).
|
||||
*/
|
||||
@Nonnull
|
||||
IReadOnlyCollection<Class<? extends IGridHost>> getMachinesClasses();
|
||||
|
||||
/**
|
||||
@@ -78,11 +84,13 @@ public interface IGrid
|
||||
*
|
||||
* @return IMachineSet of all nodes belonging to hosts of specified class.
|
||||
*/
|
||||
IMachineSet getMachines( Class<? extends IGridHost> gridHostClass );
|
||||
@Nonnull
|
||||
IMachineSet getMachines( @Nonnull Class<? extends IGridHost> gridHostClass );
|
||||
|
||||
/**
|
||||
* @return IReadOnlyCollection for all nodes on the network, node visitors are preferred.
|
||||
*/
|
||||
@Nonnull
|
||||
IReadOnlyCollection<IGridNode> getNodes();
|
||||
|
||||
/**
|
||||
@@ -93,5 +101,6 @@ public interface IGrid
|
||||
/**
|
||||
* @return the node considered the pivot point of the grid.
|
||||
*/
|
||||
@Nonnull
|
||||
IGridNode getPivot();
|
||||
}
|
||||
@@ -26,6 +26,9 @@ package appeng.api.networking;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
@@ -49,6 +52,7 @@ public interface IGridBlock
|
||||
*
|
||||
* @return ae/t to use.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getIdlePowerUsage();
|
||||
|
||||
/**
|
||||
@@ -56,10 +60,11 @@ public interface IGridBlock
|
||||
*
|
||||
* @return Set of flags for this IGridBlock
|
||||
*/
|
||||
@Nonnull
|
||||
EnumSet<GridFlags> getFlags();
|
||||
|
||||
/**
|
||||
* generally speaking you will return true for this, the one exception is buses, or worm holes where the node
|
||||
* Generally speaking you will return true for this, the one exception is buses, or worm holes where the node
|
||||
* represents something that isn't a real connection in the world, but rather one represented internally to the
|
||||
* block.
|
||||
*
|
||||
@@ -68,37 +73,46 @@ public interface IGridBlock
|
||||
boolean isWorldAccessible();
|
||||
|
||||
/**
|
||||
* Must not return when {@link #isWorldAccessible()} is true.
|
||||
* Otherwise the behavior is unspecified.
|
||||
*
|
||||
* @return current location of this node
|
||||
*/
|
||||
@Nonnull
|
||||
DimensionalCoord getLocation();
|
||||
|
||||
/**
|
||||
* @return Transparent, or a valid color, NULL IS NOT A VALID RETURN
|
||||
*/
|
||||
@Nonnull
|
||||
AEColor getGridColor();
|
||||
|
||||
/**
|
||||
* Notifies your IGridBlock that changes were made to your connections
|
||||
*/
|
||||
void onGridNotification( GridNotification notification );
|
||||
void onGridNotification( @Nonnull GridNotification notification );
|
||||
|
||||
/**
|
||||
* Update Blocks network/connection/booting status. grid,
|
||||
*
|
||||
* @param grid grid
|
||||
* @param channelsInUse used channels
|
||||
* @deprecated to be removed in rv7
|
||||
*/
|
||||
@Deprecated
|
||||
void setNetworkStatus( IGrid grid, int channelsInUse );
|
||||
|
||||
/**
|
||||
* Determine which sides of the block can be connected too, only used when isWorldAccessible returns true, not used
|
||||
* for {@link IPart} implementations.
|
||||
*/
|
||||
@Nonnull
|
||||
EnumSet<EnumFacing> getConnectableSides();
|
||||
|
||||
/**
|
||||
* @return the IGridHost for the node, this will be an IGridPart or a TileEntity generally speaking.
|
||||
*/
|
||||
@Nonnull
|
||||
IGridHost getMachine();
|
||||
|
||||
/**
|
||||
@@ -109,7 +123,8 @@ public interface IGridBlock
|
||||
/**
|
||||
* Determines what item stack is used to render this node in the GUI.
|
||||
*
|
||||
* @return the render item stack to use to render this node, null is valid, and will not show this node.
|
||||
* @return the render item stack to use to render this node. Returning an empty ItemStack will not show this node.
|
||||
*/
|
||||
@Nonnull
|
||||
ItemStack getMachineRepresentation();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
/**
|
||||
* Allows you to create a network wise service, AE2 uses these for providing
|
||||
* item, spatial, and tunnel services.
|
||||
@@ -50,7 +53,7 @@ public interface IGridCache
|
||||
* @param gridNode removed from that grid
|
||||
* @param machine to be removed machine
|
||||
*/
|
||||
void removeNode( IGridNode gridNode, IGridHost machine );
|
||||
void removeNode( @Nonnull IGridNode gridNode, @Nonnull IGridHost machine );
|
||||
|
||||
/**
|
||||
* informs you cache that a machine was added to the grid.
|
||||
@@ -62,7 +65,7 @@ public interface IGridCache
|
||||
* @param gridNode added to grid node
|
||||
* @param machine to be added machine
|
||||
*/
|
||||
void addNode( IGridNode gridNode, IGridHost machine );
|
||||
void addNode( @Nonnull IGridNode gridNode, @Nonnull IGridHost machine );
|
||||
|
||||
/**
|
||||
* Called when a grid splits into two grids, AE will call a split as it
|
||||
@@ -71,7 +74,7 @@ public interface IGridCache
|
||||
*
|
||||
* @param destinationStorage storage which receives half of old grid
|
||||
*/
|
||||
void onSplit( IGridStorage destinationStorage );
|
||||
void onSplit( @Nonnull IGridStorage destinationStorage );
|
||||
|
||||
/**
|
||||
* Called when two grids merge into one, AE will call a join as it
|
||||
@@ -80,12 +83,12 @@ public interface IGridCache
|
||||
*
|
||||
* @param sourceStorage old storage
|
||||
*/
|
||||
void onJoin( IGridStorage sourceStorage );
|
||||
void onJoin( @Nonnull IGridStorage sourceStorage );
|
||||
|
||||
/**
|
||||
* Called when saving changes,
|
||||
*
|
||||
* @param destinationStorage storage
|
||||
*/
|
||||
void populateGridStorage( IGridStorage destinationStorage );
|
||||
void populateGridStorage( @Nonnull IGridStorage destinationStorage );
|
||||
}
|
||||
|
||||
@@ -24,7 +24,9 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
/**
|
||||
@@ -38,14 +40,14 @@ public interface IGridCacheRegistry
|
||||
*
|
||||
* @param iface grid cache class
|
||||
*/
|
||||
void registerGridCache( Class<? extends IGridCache> iface, Class<? extends IGridCache> implementation );
|
||||
void registerGridCache( @Nonnull Class<? extends IGridCache> iface, @Nonnull Class<? extends IGridCache> implementation );
|
||||
|
||||
/**
|
||||
* requests a new INSTANCE of a grid cache for use, used internally
|
||||
*
|
||||
* @param grid grid
|
||||
*
|
||||
* @return a new HashMap of IGridCaches from the registry, called from IGrid when constructing a new grid.
|
||||
* @return a new Map of IGridCaches from the registry, called from IGrid when constructing a new grid.
|
||||
*/
|
||||
HashMap<Class<? extends IGridCache>, IGridCache> createCacheInstance( IGrid grid );
|
||||
Map<Class<? extends IGridCache>, IGridCache> createCacheInstance( IGrid grid );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.util.AEPartLocation;
|
||||
|
||||
|
||||
@@ -45,6 +47,7 @@ public interface IGridConnection
|
||||
*
|
||||
* @return the IGridNode which represents the opposite side of the connection.
|
||||
*/
|
||||
@Nonnull
|
||||
IGridNode getOtherSide( IGridNode gridNode );
|
||||
|
||||
/**
|
||||
@@ -54,6 +57,7 @@ public interface IGridConnection
|
||||
*
|
||||
* @return the direction of the connection, only valid for in world connections.
|
||||
*/
|
||||
@Nonnull
|
||||
AEPartLocation getDirection( IGridNode gridNode );
|
||||
|
||||
/**
|
||||
@@ -65,11 +69,13 @@ public interface IGridConnection
|
||||
/**
|
||||
* @return node A
|
||||
*/
|
||||
@Nonnull
|
||||
IGridNode a();
|
||||
|
||||
/**
|
||||
* @return node B
|
||||
*/
|
||||
@Nonnull
|
||||
IGridNode b();
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
public interface IGridConnectionVisitor extends IGridVisitor
|
||||
{
|
||||
|
||||
@@ -32,5 +35,5 @@ public interface IGridConnectionVisitor extends IGridVisitor
|
||||
*
|
||||
* @param n the connection.
|
||||
*/
|
||||
void visitConnection( IGridConnection n );
|
||||
void visitConnection( @Nonnull IGridConnection n );
|
||||
}
|
||||
|
||||
@@ -24,12 +24,14 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.exceptions.FailedConnectionException;
|
||||
|
||||
|
||||
/**
|
||||
* A helper responsible for creating new {@link IGridNode}, {@link IGridConnection} or potentially similar tasks.
|
||||
*
|
||||
*
|
||||
* @author yueh
|
||||
* @version rv5
|
||||
* @since rv5
|
||||
@@ -39,7 +41,7 @@ public interface IGridHelper
|
||||
|
||||
/**
|
||||
* Create a grid node for your {@link IGridHost}
|
||||
*
|
||||
*
|
||||
* The passed {@link IGridBlock} represents the definition for properties like connectable sides.
|
||||
* Refer to its documentation for further details.
|
||||
*
|
||||
@@ -47,18 +49,20 @@ public interface IGridHelper
|
||||
*
|
||||
* @return grid node of block
|
||||
*/
|
||||
IGridNode createGridNode( IGridBlock block );
|
||||
@Nonnull
|
||||
IGridNode createGridNode( @Nonnull IGridBlock block );
|
||||
|
||||
/**
|
||||
* Create a direct connection between two {@link IGridNode}.
|
||||
*
|
||||
*
|
||||
* This will be considered as having a distance of 1, regardless of the location of both nodes.
|
||||
*
|
||||
*
|
||||
* @param a to be connected gridnode
|
||||
* @param b to be connected gridnode
|
||||
*
|
||||
* @throws appeng.api.exceptions.FailedConnectionException
|
||||
*/
|
||||
IGridConnection createGridConnection( IGridNode a, IGridNode b ) throws FailedConnectionException;
|
||||
@Nonnull
|
||||
IGridConnection createGridConnection( @Nonnull IGridNode a, @Nonnull IGridNode b ) throws FailedConnectionException;
|
||||
|
||||
}
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
|
||||
import appeng.api.parts.IPart;
|
||||
@@ -49,7 +52,8 @@ public interface IGridHost
|
||||
* @return a new IGridNode, create these with
|
||||
* AEApi.INSTANCE().createGridNode( MyIGridBlock )
|
||||
*/
|
||||
IGridNode getGridNode( AEPartLocation dir );
|
||||
@Nullable
|
||||
IGridNode getGridNode( @Nonnull AEPartLocation dir );
|
||||
|
||||
/**
|
||||
* Determines how cables render when they connect to this block. Priority is
|
||||
@@ -57,7 +61,8 @@ public interface IGridHost
|
||||
*
|
||||
* @param dir direction
|
||||
*/
|
||||
AECableType getCableConnectionType( AEPartLocation dir );
|
||||
@Nonnull
|
||||
AECableType getCableConnectionType( @Nonnull AEPartLocation dir );
|
||||
|
||||
/**
|
||||
* break this host, its violating security rules, just break your block, or part.
|
||||
|
||||
@@ -26,6 +26,8 @@ package appeng.api.networking;
|
||||
|
||||
import java.util.Iterator;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
/**
|
||||
* An extension of IGridBlock, only means something when your getFlags() contains REQUIRE_CHANNEL, when done properly it
|
||||
@@ -40,5 +42,6 @@ public interface IGridMultiblock extends IGridBlock
|
||||
*
|
||||
* @return an iterator that will iterate all the nodes for the multiblock. ( read-only iterator expected. )
|
||||
*/
|
||||
@Nonnull
|
||||
Iterator<IGridNode> getMultiblockNodes();
|
||||
}
|
||||
|
||||
@@ -26,6 +26,8 @@ package appeng.api.networking;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
@@ -50,7 +52,7 @@ public interface IGridNode
|
||||
*
|
||||
* @param visitor visitor
|
||||
*/
|
||||
void beginVisit( IGridVisitor visitor );
|
||||
void beginVisit( @Nonnull IGridVisitor visitor );
|
||||
|
||||
/**
|
||||
* inform the node that your IGridBlock has changed its internal state, and force the node to update.
|
||||
@@ -68,6 +70,7 @@ public interface IGridNode
|
||||
*
|
||||
* @return grid host
|
||||
*/
|
||||
@Nonnull
|
||||
IGridHost getMachine();
|
||||
|
||||
/**
|
||||
@@ -75,6 +78,7 @@ public interface IGridNode
|
||||
*
|
||||
* @return grid
|
||||
*/
|
||||
@Nonnull
|
||||
IGrid getGrid();
|
||||
|
||||
/**
|
||||
@@ -86,11 +90,13 @@ public interface IGridNode
|
||||
/**
|
||||
* @return the world the node is located in
|
||||
*/
|
||||
@Nonnull
|
||||
World getWorld();
|
||||
|
||||
/**
|
||||
* @return a set of the connected sides, INTERNAL represents an invisible connection
|
||||
*/
|
||||
@Nonnull
|
||||
EnumSet<AEPartLocation> getConnectedSides();
|
||||
|
||||
/**
|
||||
@@ -98,11 +104,13 @@ public interface IGridNode
|
||||
*
|
||||
* @return grid connections
|
||||
*/
|
||||
@Nonnull
|
||||
IReadOnlyCollection<IGridConnection> getConnections();
|
||||
|
||||
/**
|
||||
* @return the IGridBlock for this node
|
||||
*/
|
||||
@Nonnull
|
||||
IGridBlock getGridBlock();
|
||||
|
||||
/**
|
||||
@@ -122,7 +130,7 @@ public interface IGridNode
|
||||
* @param name nbt name
|
||||
* @param nodeData to be loaded data
|
||||
*/
|
||||
void loadFromNBT( String name, NBTTagCompound nodeData );
|
||||
void loadFromNBT( @Nonnull String name, @Nonnull NBTTagCompound nodeData );
|
||||
|
||||
/**
|
||||
* this should be called for each node you maintain, you can save all your nodes to the same tag with different
|
||||
@@ -131,7 +139,7 @@ public interface IGridNode
|
||||
* @param name nbt name
|
||||
* @param nodeData to be saved data
|
||||
*/
|
||||
void saveToNBT( String name, NBTTagCompound nodeData );
|
||||
void saveToNBT( @Nonnull String name, @Nonnull NBTTagCompound nodeData );
|
||||
|
||||
/**
|
||||
* @return if the node's channel requirements are currently met, use this for display purposes, use isActive for
|
||||
@@ -146,7 +154,7 @@ public interface IGridNode
|
||||
*
|
||||
* @return true if has flag
|
||||
*/
|
||||
boolean hasFlag( GridFlags flag );
|
||||
boolean hasFlag( @Nonnull GridFlags flag );
|
||||
|
||||
/**
|
||||
* @return the ownerID this represents the person who placed the node.
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
|
||||
@@ -33,6 +35,7 @@ public interface IGridStorage
|
||||
/**
|
||||
* @return an NBTTagCompound that can be read, and written too.
|
||||
*/
|
||||
@Nonnull
|
||||
NBTTagCompound dataObject();
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
/**
|
||||
* Simple Visitor pattern access to network nodes.
|
||||
*/
|
||||
@@ -39,5 +42,5 @@ public interface IGridVisitor
|
||||
*
|
||||
* @return true to continue visiting nodes beyond this node.
|
||||
*/
|
||||
boolean visitNode( IGridNode n );
|
||||
boolean visitNode( @Nonnull IGridNode n );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.util.IReadOnlyCollection;
|
||||
|
||||
|
||||
@@ -33,5 +35,6 @@ public interface IMachineSet extends IReadOnlyCollection<IGridNode>
|
||||
/**
|
||||
* @return the machine class for this set.
|
||||
*/
|
||||
@Nonnull
|
||||
Class<? extends IGridHost> getMachineClass();
|
||||
}
|
||||
|
||||
@@ -28,6 +28,8 @@ import appeng.api.networking.security.IActionSource;
|
||||
import appeng.api.networking.storage.IBaseMonitor;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
||||
{
|
||||
@@ -56,4 +58,30 @@ public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
||||
* @return an empty string or the name of the cpu.
|
||||
*/
|
||||
String getName();
|
||||
|
||||
|
||||
/**
|
||||
* @return final output of the current crafting operation, or null if not crafting
|
||||
*/
|
||||
@Nullable
|
||||
default IAEItemStack getFinalOutput()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return remaining count of items (or other units of processing) for the current crafting job
|
||||
*/
|
||||
default long getRemainingItemCount()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return total count of items (or other units of processing) for the current crafting job
|
||||
*/
|
||||
default long getStartItemCount()
|
||||
{
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.crafting;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
public interface ICraftingCallback
|
||||
{
|
||||
|
||||
@@ -32,5 +35,5 @@ public interface ICraftingCallback
|
||||
*
|
||||
* @param job - final job
|
||||
*/
|
||||
void calculationComplete( ICraftingJob job );
|
||||
void calculationComplete( @Nonnull ICraftingJob job );
|
||||
}
|
||||
|
||||
@@ -99,9 +99,18 @@ public interface ICraftingGrid extends IGridCache
|
||||
/**
|
||||
* is this item being crafted?
|
||||
*
|
||||
* @param aeStackInSlot item being crafted
|
||||
* @param what item being crafted
|
||||
*
|
||||
* @return true if it is being crafting
|
||||
*/
|
||||
boolean isRequesting( IAEItemStack aeStackInSlot );
|
||||
boolean isRequesting( IAEItemStack what );
|
||||
|
||||
/**
|
||||
* The total amount being requested across all crafting cpus of a grid.
|
||||
*
|
||||
* @param what item being requested, ignores stacksize
|
||||
*
|
||||
* @return The total amount being requested.
|
||||
*/
|
||||
long requesting( IAEItemStack what );
|
||||
}
|
||||
|
||||
@@ -31,6 +31,9 @@ import net.minecraft.world.World;
|
||||
import appeng.api.implementations.ICraftingPatternItem;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
|
||||
/**
|
||||
* do not implement provided by {@link ICraftingPatternItem}
|
||||
@@ -74,6 +77,14 @@ public interface ICraftingPatternDetails
|
||||
*/
|
||||
IAEItemStack[] getCondensedOutputs();
|
||||
|
||||
/**
|
||||
* The primary output of this pattern. The pattern will only be used to craft the primary output; the others are
|
||||
* just byproducts.
|
||||
*/
|
||||
default IAEItemStack getPrimaryOutput() {
|
||||
return getOutputs()[0];
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a list of the outputs, will include nulls.
|
||||
*/
|
||||
@@ -84,6 +95,11 @@ public interface ICraftingPatternDetails
|
||||
*/
|
||||
boolean canSubstitute();
|
||||
|
||||
default List<IAEItemStack> getSubstituteInputs( int slot )
|
||||
{
|
||||
return Collections.emptyList();
|
||||
}
|
||||
|
||||
/**
|
||||
* Allow using this INSTANCE of the pattern details to preform the crafting action with performance enhancements.
|
||||
*
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking.energy;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.config.AccessRestriction;
|
||||
import appeng.api.config.Actionable;
|
||||
|
||||
@@ -42,7 +44,7 @@ public interface IAEPowerStorage extends IEnergySource
|
||||
*
|
||||
* @return amount of power which was unable to be stored
|
||||
*/
|
||||
double injectAEPower( double amt, Actionable mode );
|
||||
double injectAEPower( double amt, @Nonnull Actionable mode );
|
||||
|
||||
/**
|
||||
* @return the current maximum power ( this can change :P )
|
||||
@@ -67,5 +69,6 @@ public interface IAEPowerStorage extends IEnergySource
|
||||
*
|
||||
* @return access restriction what the network can do
|
||||
*/
|
||||
@Nonnull
|
||||
AccessRestriction getPowerFlow();
|
||||
}
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.energy;
|
||||
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.networking.IGridCache;
|
||||
import appeng.api.networking.events.MENetworkPowerStatusChange;
|
||||
@@ -38,17 +41,20 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
||||
/**
|
||||
* @return the current calculated idle energy drain each tick, is used internally to drain power for each tick.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getIdlePowerUsage();
|
||||
|
||||
/**
|
||||
* @return the average power drain over the past 10 ticks, includes idle usage during this time, and all use of
|
||||
* extractPower.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getAvgPowerUsage();
|
||||
|
||||
/**
|
||||
* @return the average energy injected into the system per tick, for the last 10 ticks.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getAvgPowerInjection();
|
||||
|
||||
/**
|
||||
@@ -79,13 +85,15 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
||||
*
|
||||
* @return the amount of power that the network has OVER the limit.
|
||||
*/
|
||||
double injectPower( double amt, Actionable mode );
|
||||
@Nonnegative
|
||||
double injectPower( @Nonnegative double amt, @Nonnull Actionable mode );
|
||||
|
||||
/**
|
||||
* this is should be considered an estimate, and not relied upon for real calculations.
|
||||
*
|
||||
* @return estimated available power.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getStoredPower();
|
||||
|
||||
/**
|
||||
@@ -93,6 +101,7 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
||||
*
|
||||
* @return estimated available power.
|
||||
*/
|
||||
@Nonnegative
|
||||
double getMaxStoredPower();
|
||||
|
||||
/**
|
||||
@@ -101,5 +110,6 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
||||
*
|
||||
* @return Amount of power required to charge the grid, in AE.
|
||||
*/
|
||||
double getEnergyDemand( double maxRequired );
|
||||
@Nonnegative
|
||||
double getEnergyDemand( @Nonnegative double maxRequired );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.energy;
|
||||
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.config.PowerMultiplier;
|
||||
|
||||
@@ -39,5 +42,6 @@ public interface IEnergySource
|
||||
*
|
||||
* @return returns extracted power.
|
||||
*/
|
||||
double extractAEPower( double amt, Actionable mode, PowerMultiplier usePowerMultiplier );
|
||||
@Nonnegative
|
||||
double extractAEPower( @Nonnegative double amt, @Nonnull Actionable mode, @Nonnull PowerMultiplier usePowerMultiplier );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.energy;
|
||||
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
|
||||
|
||||
/**
|
||||
* DO NOT IMPLEMENT.
|
||||
*
|
||||
@@ -39,7 +42,7 @@ public interface IEnergyWatcher
|
||||
* @param amount
|
||||
* @return true, if successfully added.
|
||||
*/
|
||||
boolean add( double amount );
|
||||
boolean add( @Nonnegative double amount );
|
||||
|
||||
/**
|
||||
* Remove a specific threshold from the watcher.
|
||||
@@ -47,7 +50,7 @@ public interface IEnergyWatcher
|
||||
* @param amount
|
||||
* @return true, if successfully removed.
|
||||
*/
|
||||
boolean remove( double amount );
|
||||
boolean remove( @Nonnegative double amount );
|
||||
|
||||
/**
|
||||
* Removes all thresholds and resets the watcher to a clean state.
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.energy;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
public interface IEnergyWatcherHost
|
||||
{
|
||||
|
||||
@@ -33,12 +36,12 @@ public interface IEnergyWatcherHost
|
||||
*
|
||||
* @param newWatcher new watcher
|
||||
*/
|
||||
void updateWatcher( IEnergyWatcher newWatcher );
|
||||
void updateWatcher( @Nonnull IEnergyWatcher newWatcher );
|
||||
|
||||
/**
|
||||
* Called when a threshold is crossed.
|
||||
*
|
||||
* @param energyGrid grid
|
||||
*/
|
||||
void onThresholdPass( IEnergyGrid energyGrid );
|
||||
void onThresholdPass( @Nonnull IEnergyGrid energyGrid );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking.pathing;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.networking.IGridCache;
|
||||
|
||||
|
||||
@@ -39,6 +41,7 @@ public interface IPathingGrid extends IGridCache
|
||||
* @return the controller state of the network, useful if you want to
|
||||
* require a controller for a feature.
|
||||
*/
|
||||
@Nonnull
|
||||
ControllerState getControllerState();
|
||||
|
||||
/**
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking.security;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
|
||||
|
||||
@@ -38,5 +40,6 @@ public interface IActionHost
|
||||
* @return the the gridnode that actions from this IGridHost are preformed
|
||||
* by.
|
||||
*/
|
||||
@Nonnull
|
||||
IGridNode getActionableNode();
|
||||
}
|
||||
|
||||
@@ -24,6 +24,9 @@
|
||||
package appeng.api.networking.security;
|
||||
|
||||
|
||||
import javax.annotation.Nonnegative;
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
@@ -46,7 +49,7 @@ public interface ISecurityGrid extends IGridCache
|
||||
*
|
||||
* @return true if the player has permissions.
|
||||
*/
|
||||
boolean hasPermission( EntityPlayer player, SecurityPermissions perm );
|
||||
boolean hasPermission( @Nonnull EntityPlayer player, @Nonnull SecurityPermissions perm );
|
||||
|
||||
/**
|
||||
* Check if a player has permissions.
|
||||
@@ -56,7 +59,7 @@ public interface ISecurityGrid extends IGridCache
|
||||
*
|
||||
* @return true if the player has permissions.
|
||||
*/
|
||||
boolean hasPermission( int playerID, SecurityPermissions perm );
|
||||
boolean hasPermission( @Nonnegative int playerID, @Nonnull SecurityPermissions perm );
|
||||
|
||||
/**
|
||||
* @return PlayerID of the admin, or owner, this is the person who placed the security block.
|
||||
|
||||
@@ -25,7 +25,7 @@ package appeng.api.networking.security;
|
||||
|
||||
|
||||
import java.util.EnumSet;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
|
||||
@@ -48,7 +48,7 @@ public interface ISecurityProvider
|
||||
*
|
||||
* @param playerPerms player permissions
|
||||
*/
|
||||
void readPermissions( HashMap<Integer, EnumSet<SecurityPermissions>> playerPerms );
|
||||
void readPermissions( Map<Integer, EnumSet<SecurityPermissions>> playerPerms );
|
||||
|
||||
/**
|
||||
* @return is security on or off?
|
||||
|
||||
@@ -26,6 +26,8 @@ package appeng.api.networking.security;
|
||||
|
||||
import java.util.EnumSet;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.config.SecurityPermissions;
|
||||
|
||||
|
||||
@@ -41,5 +43,5 @@ public interface ISecurityRegistry
|
||||
* @param playerID player id
|
||||
* @param permissions permissions of player
|
||||
*/
|
||||
void addPlayer( int playerID, EnumSet<SecurityPermissions> permissions );
|
||||
void addPlayer( int playerID, @Nonnull EnumSet<SecurityPermissions> permissions );
|
||||
}
|
||||
|
||||
@@ -44,10 +44,7 @@ public interface IStackWatcherHost
|
||||
/**
|
||||
* Called when a watched item changes amounts.
|
||||
*
|
||||
* @param o changed item list
|
||||
* @param fullStack old stack
|
||||
* @param diffStack new stack
|
||||
* @param src action source
|
||||
* @param chan storage channel
|
||||
*/
|
||||
void onStackChange( IItemList<?> o, IAEStack<?> fullStack, IAEStack<?> diffStack, IActionSource src, IStorageChannel<?> chan );
|
||||
|
||||
@@ -51,6 +51,7 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable
|
||||
* @param input injected items
|
||||
*/
|
||||
void postAlterationOfStoredItems( IStorageChannel<?> chan, Iterable<? extends IAEStack<?>> input, IActionSource src );
|
||||
void postCraftablesChanges( IStorageChannel<?> chan, Iterable<? extends IAEStack<?>> input, IActionSource src);
|
||||
|
||||
/**
|
||||
* Used to add a cell provider to the storage system
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking.ticking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.networking.IGridNode;
|
||||
|
||||
|
||||
@@ -45,18 +47,18 @@ public interface IGridTickable
|
||||
*/
|
||||
|
||||
/**
|
||||
* You can return null, if you wish to tick using MC's ticking mechanism, or
|
||||
* you can return a valid TickingRequest to tell AE a guide for which type
|
||||
* of responsiveness your device wants.
|
||||
* Return a valid TickingRequest to tell AE a guide for which type of
|
||||
* responsiveness your device wants.
|
||||
*
|
||||
* this will be called for your tile any time your tile changes grids, this
|
||||
* This will be called for your tile any time your tile changes grids, this
|
||||
* can happen at any time, so if your using the sleep feature you may wish
|
||||
* to preserve your sleep, in the result of this method. or you can simply
|
||||
* reset it.
|
||||
*
|
||||
* @return null or a valid new TickingRequest
|
||||
* @return a valid new TickingRequest
|
||||
*/
|
||||
TickingRequest getTickingRequest( IGridNode node );
|
||||
@Nonnull
|
||||
TickingRequest getTickingRequest( @Nonnull IGridNode node );
|
||||
|
||||
/**
|
||||
* AE lets you adjust your tick rate based on the results of your tick, if
|
||||
@@ -67,11 +69,12 @@ public interface IGridTickable
|
||||
*
|
||||
* Note: this is never called if you return null from getTickingRequest.
|
||||
*
|
||||
* @param TicksSinceLastCall the number of world ticks that were skipped since your last
|
||||
* @param ticksSinceLastCall the number of world ticks that were skipped since your last
|
||||
* tick, you can use this to adjust speed of processing or adjust
|
||||
* your tick rate.
|
||||
*
|
||||
* @return tick rate adjustment.
|
||||
*/
|
||||
TickRateModulation tickingRequest( IGridNode node, int TicksSinceLastCall );
|
||||
@Nonnull
|
||||
TickRateModulation tickingRequest( @Nonnull IGridNode node, int ticksSinceLastCall );
|
||||
}
|
||||
|
||||
@@ -24,6 +24,8 @@
|
||||
package appeng.api.networking.ticking;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import appeng.api.networking.IGridCache;
|
||||
import appeng.api.networking.IGridNode;
|
||||
|
||||
@@ -42,7 +44,7 @@ public interface ITickManager extends IGridCache
|
||||
*
|
||||
* @param node gridnode
|
||||
*/
|
||||
boolean alertDevice( IGridNode node );
|
||||
boolean alertDevice( @Nonnull IGridNode node );
|
||||
|
||||
/**
|
||||
* disables ticking for your device.
|
||||
@@ -51,7 +53,7 @@ public interface ITickManager extends IGridCache
|
||||
*
|
||||
* @return if the call was successful.
|
||||
*/
|
||||
boolean sleepDevice( IGridNode node );
|
||||
boolean sleepDevice( @Nonnull IGridNode node );
|
||||
|
||||
/**
|
||||
* enables ticking for your device, undoes a sleepDevice call.
|
||||
@@ -60,5 +62,5 @@ public interface ITickManager extends IGridCache
|
||||
*
|
||||
* @return if the call was successful.
|
||||
*/
|
||||
boolean wakeDevice( IGridNode node );
|
||||
boolean wakeDevice( @Nonnull IGridNode node );
|
||||
}
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
@@ -21,7 +22,7 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
@API( apiVersion = "@aeversion@", owner = "appliedenergistics2", provides = "appliedenergistics2|API" )
|
||||
@API(apiVersion = "rv6", owner = "appliedenergistics2", provides = "appliedenergistics2|API")
|
||||
package appeng.api;
|
||||
|
||||
|
||||
|
||||
@@ -41,6 +41,13 @@ import appeng.api.util.AEPartLocation;
|
||||
public interface IFacadeContainer
|
||||
{
|
||||
|
||||
/**
|
||||
* Checks if the {@link IFacadePart} can be added to the given side.
|
||||
*
|
||||
* @return true if the facade can be successfully added
|
||||
*/
|
||||
boolean canAddFacade( IFacadePart a );
|
||||
|
||||
/**
|
||||
* Attempts to add the {@link IFacadePart} to the given side.
|
||||
*
|
||||
|
||||
@@ -209,6 +209,7 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
* Called when you right click the part, very similar to Block.onActivateBlock
|
||||
*
|
||||
* @param player right clicking player
|
||||
* @param hand hand used
|
||||
* @param pos position of block
|
||||
*
|
||||
* @return if your activate method performed something.
|
||||
@@ -219,12 +220,41 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
* Called when you right click the part, very similar to Block.onActivateBlock
|
||||
*
|
||||
* @param player shift right clicking player
|
||||
* @param hand hand used
|
||||
* @param pos position of block
|
||||
*
|
||||
* @return if your activate method performed something, you should use false unless you really need it.
|
||||
*/
|
||||
boolean onShiftActivate( EntityPlayer player, EnumHand hand, Vec3d pos );
|
||||
|
||||
/**
|
||||
* Called when you left click the part, very similar to Block.onBlockClicked
|
||||
*
|
||||
* @param player left clicking player
|
||||
* @param hand hand used
|
||||
* @param pos position of block
|
||||
*
|
||||
* @return if your activate method performed something, you should use false unless you really need it.
|
||||
*/
|
||||
default boolean onClicked( EntityPlayer player, EnumHand hand, Vec3d pos )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when you shift-left click the part, very similar to Block.onBlockClicked
|
||||
*
|
||||
* @param player shift-left clicking player
|
||||
* @param hand hand used
|
||||
* @param pos position of block
|
||||
*
|
||||
* @return if your activate method performed something, you should use false unless you really need it.
|
||||
*/
|
||||
default boolean onShiftClicked( EntityPlayer player, EnumHand hand, Vec3d pos )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Add drops to the items being dropped into the world, if your item stores its contents when wrenched use the
|
||||
* wrenched boolean to control what data is saved vs dropped when it is broken.
|
||||
@@ -261,6 +291,9 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
|
||||
/**
|
||||
* Used to determine which parts can be placed on what cables.
|
||||
*
|
||||
* Dense cables are not allowed for functional (getGridNode returns a node) parts.
|
||||
* Doing so will result in crashes.
|
||||
*
|
||||
* @param what placed part
|
||||
*
|
||||
@@ -325,4 +358,14 @@ public interface IPart extends IBoxProvider, ICustomCableConnection
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
/**
|
||||
* Flag to be passed to the renderer.
|
||||
*
|
||||
* @return flag or null
|
||||
*/
|
||||
default Long getRenderFlag()
|
||||
{
|
||||
return null;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -0,0 +1,15 @@
|
||||
|
||||
package appeng.api.parts;
|
||||
|
||||
|
||||
import java.util.List;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.client.renderer.block.model.BakedQuad;
|
||||
|
||||
|
||||
public interface IPartBakedModel
|
||||
{
|
||||
List<BakedQuad> getPartQuads( @Nullable Long partFlags, long rand );
|
||||
}
|
||||
@@ -24,6 +24,7 @@
|
||||
package appeng.api.parts;
|
||||
|
||||
|
||||
import appeng.api.util.AEPartLocation;
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.util.EnumActionResult;
|
||||
@@ -32,35 +33,11 @@ import net.minecraft.util.EnumHand;
|
||||
import net.minecraft.util.math.BlockPos;
|
||||
import net.minecraft.world.World;
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
public interface IPartHelper
|
||||
{
|
||||
/**
|
||||
* Register a new layer with the part layer system, this allows you to write an in between between tile entities and
|
||||
* parts.
|
||||
*
|
||||
* AE By Default includes,
|
||||
*
|
||||
* 1. ISidedInventory ( and by extension IInventory. )
|
||||
*
|
||||
* 2. IFluidHandler Forge Fluids
|
||||
*
|
||||
* 3. IPowerEmitter BC Power output.
|
||||
*
|
||||
* 4. IPowerReceptor BC Power input.
|
||||
*
|
||||
* 5. IEnergySink IC2 Power input.
|
||||
*
|
||||
* 6. IEnergySource IC2 Power output.
|
||||
*
|
||||
* 7. IPipeConnection BC Pipe Connections
|
||||
*
|
||||
* As long as a valid layer is registered for a interface you can simply implement that interface on a part get
|
||||
* implement it.
|
||||
*
|
||||
* @return true on success, false on failure, usually a error will be logged as well.
|
||||
*/
|
||||
boolean registerNewLayer( String string, String layerInterface );
|
||||
|
||||
/**
|
||||
* use in use item, to try and place a IBusItem
|
||||
@@ -79,4 +56,51 @@ public interface IPartHelper
|
||||
* @return the render mode
|
||||
*/
|
||||
CableRenderMode getCableRenderMode();
|
||||
|
||||
/**
|
||||
* Try to get a part at a specific place in the world.
|
||||
*
|
||||
* @param w world the part is in
|
||||
* @param pos pos of the part host
|
||||
* @param side side to test for a part on.
|
||||
*
|
||||
* @return the part if it exists, null otherwise
|
||||
*/
|
||||
@Nullable
|
||||
IPart getPart( World w, BlockPos pos, AEPartLocation side );
|
||||
|
||||
/**
|
||||
* Try to get a part host at a specific place in the world.
|
||||
*
|
||||
* @param w world the part host is in
|
||||
* @param pos pos of the part host
|
||||
*
|
||||
* @return the part host if it exists, null otherwise
|
||||
*/
|
||||
@Nullable
|
||||
IPartHost getPartHost( World w, BlockPos pos );
|
||||
|
||||
/**
|
||||
* Get a part host if it exists, or place one if it doesn't.
|
||||
*
|
||||
* @param w world the part host is in
|
||||
* @param pos pos to get or place the part host
|
||||
* @param force whether to skip permission and existing block checks and forcibly place the part host here.
|
||||
* @param p the placing player, or null if none
|
||||
*
|
||||
* @return the existing or created part host, or null if it didn't already exist and part host is unable to be placed.
|
||||
*/
|
||||
@Nullable
|
||||
IPartHost getOrPlacePartHost( World w, BlockPos pos, boolean force, @Nullable EntityPlayer p );
|
||||
|
||||
/**
|
||||
* Test if a part host can be successfully placed at a given position by the provided player.
|
||||
*
|
||||
* @param w world the part host is in
|
||||
* @param pos pos to test for part host placement
|
||||
* @param p the placing player, or null if none
|
||||
*
|
||||
* @return if the part can be placed at the provided world and position
|
||||
*/
|
||||
boolean canPlacePartHost( World w, BlockPos pos, @Nullable EntityPlayer p );
|
||||
}
|
||||
|
||||
@@ -72,7 +72,7 @@ public interface IPartHost extends ICustomCableConnection
|
||||
* @return null if the item failed to add, the side it was placed on other wise ( may different for cables,
|
||||
* {@link AEPartLocation}.UNKNOWN )
|
||||
*/
|
||||
AEPartLocation addPart( ItemStack is, AEPartLocation side, EntityPlayer owner, EnumHand hand );
|
||||
AEPartLocation addPart( ItemStack is, AEPartLocation side, EntityPlayer owner, EnumHand hand );
|
||||
|
||||
/**
|
||||
* Get part by side ( center is {@link AEPartLocation}.UNKNOWN )
|
||||
@@ -145,13 +145,24 @@ public interface IPartHost extends ICustomCableConnection
|
||||
*/
|
||||
SelectedPart selectPart( Vec3d pos );
|
||||
|
||||
/**
|
||||
* Same as {@link #selectPart(Vec3d)}, but with global instead of local coordinates.
|
||||
*/
|
||||
default SelectedPart selectPartGlobal( Vec3d pos ) {
|
||||
DimensionalCoord globalPos = getLocation();
|
||||
return selectPart(pos.subtract(
|
||||
globalPos.getPos().getX(),
|
||||
globalPos.getPos().getY(),
|
||||
globalPos.getPos().getZ()));
|
||||
}
|
||||
|
||||
/**
|
||||
* can be used by parts to trigger the tile or part to save.
|
||||
*/
|
||||
void markForSave();
|
||||
|
||||
/**
|
||||
* part of the {@link LayerBase}
|
||||
* called when parts are added or removed
|
||||
*/
|
||||
void partChanged();
|
||||
|
||||
@@ -169,11 +180,6 @@ public interface IPartHost extends ICustomCableConnection
|
||||
*/
|
||||
boolean isEmpty();
|
||||
|
||||
/**
|
||||
* @return a mutable list of flags you can adjust to track state.
|
||||
*/
|
||||
Set<LayerFlags> getLayerFlags();
|
||||
|
||||
/**
|
||||
* remove host from world...
|
||||
*/
|
||||
@@ -191,4 +197,4 @@ public interface IPartHost extends ICustomCableConnection
|
||||
*/
|
||||
boolean isInWorld();
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,98 +0,0 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.parts;
|
||||
|
||||
|
||||
import java.util.Set;
|
||||
|
||||
import net.minecraft.tileentity.TileEntity;
|
||||
import net.minecraft.util.EnumFacing;
|
||||
|
||||
import appeng.api.util.AEPartLocation;
|
||||
|
||||
|
||||
/**
|
||||
* All Layers must extends this, this get part implementation is provided to interface with the parts, however a real
|
||||
* implementation will be used at runtime.
|
||||
*
|
||||
* TODO: Consider removing and replacing with capabilities.
|
||||
*/
|
||||
public abstract class LayerBase extends TileEntity // implements IPartHost
|
||||
{
|
||||
|
||||
/**
|
||||
* Grants access for the layer to the parts of the host.
|
||||
*
|
||||
* This Method looks silly, that is because its not used at runtime, a real implementation will be used instead.
|
||||
*
|
||||
* @param side side of part
|
||||
*
|
||||
* @return the part for the requested side.
|
||||
*/
|
||||
public IPart getPart( final AEPartLocation side )
|
||||
{
|
||||
return null; // place holder.
|
||||
}
|
||||
|
||||
/**
|
||||
* Grants access for the layer to the parts of the host.
|
||||
*
|
||||
* This Method looks silly, that is because its not used at runtime, a real implementation will be used instead.
|
||||
*
|
||||
* @param side side of part
|
||||
*
|
||||
* @return the part for the requested side.
|
||||
*/
|
||||
public IPart getPart( final EnumFacing side )
|
||||
{
|
||||
return null; // place holder.
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the parts change in the container, YOU MUST CALL super.PartChanged();
|
||||
*/
|
||||
public void notifyNeighbors()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* called when the parts change in the container, YOU MUST CALL super.PartChanged();
|
||||
*/
|
||||
public void partChanged()
|
||||
{
|
||||
}
|
||||
|
||||
/**
|
||||
* @return a mutable list of flags you can adjust to track state.
|
||||
*/
|
||||
public Set<LayerFlags> getLayerFlags()
|
||||
{
|
||||
return null; // place holder.
|
||||
}
|
||||
|
||||
public void markForSave()
|
||||
{
|
||||
// something!
|
||||
}
|
||||
}
|
||||
@@ -30,6 +30,7 @@ import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RecipeException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
|
||||
|
||||
@Deprecated
|
||||
public interface ICraftHandler
|
||||
{
|
||||
|
||||
@@ -29,6 +29,7 @@ import net.minecraft.item.ItemStack;
|
||||
import appeng.api.exceptions.MissingIngredientException;
|
||||
import appeng.api.exceptions.RegistrationException;
|
||||
|
||||
|
||||
@Deprecated
|
||||
public interface IIngredient
|
||||
{
|
||||
|
||||
@@ -28,6 +28,7 @@ import java.io.BufferedReader;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
|
||||
@Deprecated
|
||||
public interface IRecipeLoader
|
||||
{
|
||||
|
||||
@@ -0,0 +1,47 @@
|
||||
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.implementations.tiles.IChestOrDrive;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public interface ICellGuiHandler
|
||||
{
|
||||
/**
|
||||
* Return true if this handler can show GUI for this channel.
|
||||
*
|
||||
* @param channel Storage channel
|
||||
* @return True if handled, else false.
|
||||
*/
|
||||
<T extends IAEStack<T>> boolean isHandlerFor( IStorageChannel<T> channel );
|
||||
|
||||
/**
|
||||
* Return true to prioritize this handler for the provided {@link ItemStack}.
|
||||
*
|
||||
* @param is Cell ItemStack
|
||||
* @return True, if specialized else false.
|
||||
*/
|
||||
default boolean isSpecializedFor( ItemStack is )
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Called when the storage cell is placed in an ME Chest and the user tries to open the terminal side, if your item
|
||||
* is not available via ME Chests simply tell the user they can't use it, or something, other wise you should open
|
||||
* your gui and display the cell to the user.
|
||||
*
|
||||
* @param player player opening chest gui
|
||||
* @param chest to be opened chest
|
||||
* @param cellHandler cell handler
|
||||
* @param inv inventory handler
|
||||
* @param is item
|
||||
* @param chan storage channel
|
||||
*/
|
||||
<T extends IAEStack<T>> void openChestGui( EntityPlayer player, IChestOrDrive chest, ICellHandler cellHandler, IMEInventoryHandler<T> inv, ItemStack is, IStorageChannel<T> chan );
|
||||
|
||||
}
|
||||
@@ -24,10 +24,8 @@
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import net.minecraft.entity.player.EntityPlayer;
|
||||
import net.minecraft.item.ItemStack;
|
||||
|
||||
import appeng.api.implementations.tiles.IChestOrDrive;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
@@ -52,26 +50,12 @@ public interface ICellHandler
|
||||
*
|
||||
* @param is a storage cell item.
|
||||
* @param host anytime the contents of your storage cell changes it should use this to request a save, please
|
||||
* note, this value can be null.
|
||||
* note, this value can be null. If provided, the host is responsible for persisting the cell content.
|
||||
* @param channel the storage channel requested.
|
||||
*
|
||||
* @return a new IMEHandler for the provided item
|
||||
*/
|
||||
<T extends IAEStack<T>> IMEInventoryHandler<T> getCellInventory( ItemStack is, ISaveProvider host, IStorageChannel<T> channel );
|
||||
|
||||
/**
|
||||
* Called when the storage cell is planed in an ME Chest and the user tries to open the terminal side, if your item
|
||||
* is not available via ME Chests simply tell the user they can't use it, or something, other wise you should open
|
||||
* your gui and display the cell to the user.
|
||||
*
|
||||
* @param player player opening chest gui
|
||||
* @param chest to be opened chest
|
||||
* @param cellHandler cell handler
|
||||
* @param inv inventory handler
|
||||
* @param is item
|
||||
* @param chan storage channel
|
||||
*/
|
||||
<T extends IAEStack<T>> void openChestGui( EntityPlayer player, IChestOrDrive chest, ICellHandler cellHandler, IMEInventoryHandler<T> inv, ItemStack is, IStorageChannel<T> chan );
|
||||
<T extends IAEStack<T>> ICellInventoryHandler<T> getCellInventory( ItemStack is, ISaveProvider host, IStorageChannel<T> channel );
|
||||
|
||||
/**
|
||||
* 0 - cell is missing.
|
||||
@@ -87,10 +71,31 @@ public interface ICellHandler
|
||||
*
|
||||
* @return get the status of the cell based on its contents.
|
||||
*/
|
||||
<T extends IAEStack<T>> int getStatusForCell( ItemStack is, IMEInventory<T> handler );
|
||||
default <T extends IAEStack<T>> int getStatusForCell( ItemStack is, ICellInventoryHandler<T> handler )
|
||||
{
|
||||
if( handler.getCellInv() != null )
|
||||
{
|
||||
int val = handler.getCellInv().getStatusForCell();
|
||||
|
||||
if( val == 1 && handler.isPreformatted() )
|
||||
{
|
||||
val = 2;
|
||||
}
|
||||
|
||||
return val;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/**
|
||||
* @return the ae/t to drain for this storage cell inside a chest/drive.
|
||||
*/
|
||||
<T extends IAEStack<T>> double cellIdleDrain( ItemStack is, IMEInventory<T> handler );
|
||||
default <T extends IAEStack<T>> double cellIdleDrain( ItemStack is, ICellInventoryHandler<T> handler )
|
||||
{
|
||||
if( handler.getCellInv() != null )
|
||||
{
|
||||
return handler.getCellInv().getIdleDrain();
|
||||
}
|
||||
return 1.0;
|
||||
}
|
||||
}
|
||||
@@ -28,10 +28,10 @@ import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.items.IItemHandler;
|
||||
|
||||
import appeng.api.config.FuzzyMode;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public interface ICellInventory extends IMEInventory<IAEItemStack>
|
||||
public interface ICellInventory<T extends IAEStack<T>> extends IMEInventory<T>
|
||||
{
|
||||
|
||||
/**
|
||||
@@ -40,7 +40,7 @@ public interface ICellInventory extends IMEInventory<IAEItemStack>
|
||||
ItemStack getItemStack();
|
||||
|
||||
/**
|
||||
* @return idle cost for this Storage Cell
|
||||
* @return the ae/t to drain for this storage cell inside a chest/drive.
|
||||
*/
|
||||
double getIdleDrain();
|
||||
|
||||
@@ -115,7 +115,22 @@ public interface ICellInventory extends IMEInventory<IAEItemStack>
|
||||
int getUnusedItemCount();
|
||||
|
||||
/**
|
||||
* @return the status number for this drive.
|
||||
* 0 - cell is missing.
|
||||
*
|
||||
* 1 - green, ( usually means available room for types or items. )
|
||||
*
|
||||
* 2 - orange, ( usually means available room for items, but not types. )
|
||||
*
|
||||
* 3 - red, ( usually means the cell is 100% full )
|
||||
*
|
||||
* 4 - blue, ( usually means the cell is available and completely empty. )
|
||||
*
|
||||
* @return get the status of the cell based on its contents.
|
||||
*/
|
||||
int getStatusForCell();
|
||||
|
||||
/**
|
||||
* Tells the cell to persist to NBT
|
||||
*/
|
||||
void persist();
|
||||
}
|
||||
|
||||
@@ -24,17 +24,22 @@
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import appeng.api.config.IncludeExclude;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
|
||||
|
||||
public interface ICellInventoryHandler extends IMEInventoryHandler<IAEItemStack>
|
||||
public interface ICellInventoryHandler<T extends IAEStack<T>> extends IMEInventoryHandler<T>
|
||||
{
|
||||
|
||||
/**
|
||||
* Get access to the ICellInventory. Can be null for custom cells.
|
||||
*
|
||||
* @return get access to the Cell Inventory.
|
||||
*/
|
||||
ICellInventory getCellInv();
|
||||
@Nullable
|
||||
ICellInventory<T> getCellInv();
|
||||
|
||||
boolean isPreformatted();
|
||||
|
||||
|
||||
@@ -24,7 +24,11 @@
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
|
||||
|
||||
import appeng.api.IAppEngApi;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
@@ -42,9 +46,19 @@ public interface ICellRegistry
|
||||
/**
|
||||
* Register a new handler.
|
||||
*
|
||||
* Never be call before {@link FMLInitializationEvent} was handled by AE2.
|
||||
* Will throw an exception otherwise.
|
||||
*
|
||||
* @param handler cell handler
|
||||
*/
|
||||
void addCellHandler( ICellHandler handler );
|
||||
void addCellHandler( @Nonnull ICellHandler handler );
|
||||
|
||||
/**
|
||||
* Register a new handler
|
||||
*
|
||||
* @param handler cell gui handler
|
||||
*/
|
||||
void addCellGuiHandler( @Nonnull ICellGuiHandler handler );
|
||||
|
||||
/**
|
||||
* return true, if you can get a InventoryHandler for the item passed.
|
||||
@@ -57,22 +71,34 @@ public interface ICellRegistry
|
||||
boolean isCellHandled( ItemStack is );
|
||||
|
||||
/**
|
||||
* get the handler, for the requested type.
|
||||
* get the handler, for the requested item.
|
||||
*
|
||||
* @param is to be checked item
|
||||
*
|
||||
* @return the handler registered for this item type.
|
||||
*/
|
||||
@Nullable
|
||||
ICellHandler getHandler( ItemStack is );
|
||||
|
||||
/**
|
||||
* returns an IMEInventoryHandler for the provided item.
|
||||
* get the handler, for the requested channel.
|
||||
*
|
||||
* @param channel requested channel
|
||||
* @param Cell ItemStack
|
||||
* @return the handler registered for this channel.
|
||||
*/
|
||||
@Nullable
|
||||
<T extends IAEStack<T>> ICellGuiHandler getGuiHandler( IStorageChannel<T> channel, ItemStack is );
|
||||
|
||||
/**
|
||||
* returns an ICellInventoryHandler for the provided item by querying all registered handlers.
|
||||
*
|
||||
* @param is item with inventory handler
|
||||
* @param host can be null, or the hosting tile / part.
|
||||
* @param host can be null. If provided, the host is responsible for persisting the cell content.
|
||||
* @param chan the storage channel to request the handler for.
|
||||
*
|
||||
* @return new IMEInventoryHandler, or null if there isn't one.
|
||||
* @return new ICellInventoryHandler, or null if there isn't one.
|
||||
*/
|
||||
<T extends IAEStack<T>> IMEInventoryHandler<T> getCellInventory( ItemStack is, ISaveProvider host, IStorageChannel<T> chan );
|
||||
@Nullable
|
||||
<T extends IAEStack<T>> ICellInventoryHandler<T> getCellInventory( ItemStack is, ISaveProvider host, IStorageChannel<T> chan );
|
||||
}
|
||||
@@ -89,4 +89,12 @@ public interface IMEInventoryHandler<T extends IAEStack<T>> extends IMEInventory
|
||||
* @return true, if this inventory is valid for this pass.
|
||||
*/
|
||||
boolean validForPass( int i );
|
||||
|
||||
/**
|
||||
* Gets whether an inventory is "Sticky" i.e. only it and other sticky storages that have partitions with certain
|
||||
* items are allowed to be put into sticky storages.
|
||||
*/
|
||||
default boolean isSticky() {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -24,8 +24,19 @@
|
||||
package appeng.api.storage;
|
||||
|
||||
|
||||
import javax.annotation.Nullable;
|
||||
|
||||
|
||||
/**
|
||||
* Tells the cell provider that changes have been made an the cell must be persisted
|
||||
*
|
||||
*/
|
||||
public interface ISaveProvider
|
||||
{
|
||||
|
||||
void saveChanges( IMEInventory<?> cellInventory );
|
||||
/**
|
||||
* Cell has changed and needs to be changed.
|
||||
*
|
||||
* @param cellInventory can be null for custom cells.
|
||||
*/
|
||||
void saveChanges( @Nullable ICellInventory<?> cellInventory );
|
||||
}
|
||||
|
||||
@@ -32,10 +32,9 @@ import javax.annotation.Nullable;
|
||||
import io.netty.buffer.ByteBuf;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
import net.minecraftforge.fluids.FluidStack;
|
||||
|
||||
import appeng.api.networking.energy.IEnergySource;
|
||||
import appeng.api.networking.security.IActionSource;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
|
||||
@@ -56,6 +55,17 @@ public interface IStorageChannel<T extends IAEStack<T>>
|
||||
return 1;
|
||||
}
|
||||
|
||||
/**
|
||||
* The number of units (eg item count, or millibuckets) that can be stored per byte in a storage cell.
|
||||
* Standard value for items is 8, and for fluids it's 8000
|
||||
*
|
||||
* @return number of units
|
||||
*/
|
||||
default int getUnitsPerByte()
|
||||
{
|
||||
return 8;
|
||||
}
|
||||
|
||||
/**
|
||||
* Create a new {@link IItemList} of the specific type.
|
||||
*
|
||||
@@ -68,9 +78,12 @@ public interface IStorageChannel<T extends IAEStack<T>>
|
||||
* Create a new {@link IAEStack} subtype of the specific object.
|
||||
*
|
||||
* The parameter is unbound to allow a slightly more flexible approach.
|
||||
* But the general intention is about converting an {@link ItemStack} into the corresponding {@link IAEItemStack}.
|
||||
* But the general intention is about converting an {@link ItemStack} or {@link FluidStack} into the corresponding
|
||||
* {@link IAEStack}.
|
||||
* Another valid case might be to use it instead of {@link IAEStack#copy()}, but this might not be supported by all
|
||||
* types.
|
||||
* IAEStacks that use custom items for {@link IAEStack#asItemStackRepresentation()} must also be able to convert
|
||||
* these.
|
||||
*
|
||||
* @param input The object to turn into an {@link IAEStack}
|
||||
* @return The converted stack or null
|
||||
@@ -88,29 +101,11 @@ public interface IStorageChannel<T extends IAEStack<T>>
|
||||
T readFromPacket( @Nonnull ByteBuf input ) throws IOException;
|
||||
|
||||
/**
|
||||
* use energy from energy, to remove request items from cell, at the request of src.
|
||||
*
|
||||
* @param energy to be drained energy source
|
||||
* @param cell cell of requested items
|
||||
* @param request requested items
|
||||
* @param src action source
|
||||
*
|
||||
* @return items that successfully extracted.
|
||||
* create from nbt data
|
||||
*
|
||||
* @param nbt
|
||||
* @return
|
||||
*/
|
||||
@Nullable
|
||||
T poweredExtraction( @Nonnull IEnergySource energy, @Nonnull IMEInventory<T> cell, @Nonnull T request, @Nonnull IActionSource src );
|
||||
|
||||
/**
|
||||
* use energy from energy, to inject input items into cell, at the request of src
|
||||
*
|
||||
* @param energy to be added energy source
|
||||
* @param cell injected cell
|
||||
* @param input to be injected items
|
||||
* @param src action source
|
||||
*
|
||||
* @return items that failed to insert.
|
||||
*/
|
||||
@Nullable
|
||||
T poweredInsert( @Nonnull IEnergySource energy, @Nonnull IMEInventory<T> cell, @Nonnull T input, @Nonnull IActionSource src );
|
||||
|
||||
T createFromNBT( @Nonnull NBTTagCompound nbt );
|
||||
}
|
||||
|
||||
@@ -28,10 +28,15 @@ import java.util.Collection;
|
||||
|
||||
import javax.annotation.Nonnull;
|
||||
|
||||
import net.minecraft.item.ItemStack;
|
||||
import net.minecraft.nbt.NBTTagCompound;
|
||||
|
||||
import appeng.api.config.Actionable;
|
||||
import appeng.api.networking.crafting.ICraftingLink;
|
||||
import appeng.api.networking.crafting.ICraftingRequester;
|
||||
import appeng.api.networking.energy.IEnergySource;
|
||||
import appeng.api.networking.security.IActionSource;
|
||||
import appeng.api.networking.storage.IStorageGrid;
|
||||
import appeng.api.storage.data.IAEFluidStack;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IAEStack;
|
||||
@@ -90,4 +95,38 @@ public interface IStorageHelper
|
||||
*/
|
||||
ICraftingLink loadCraftingLink( NBTTagCompound data, ICraftingRequester req );
|
||||
|
||||
/**
|
||||
* Extracts items from a {@link IMEInventory} respecting power requirements.
|
||||
*
|
||||
* @param energy Energy source.
|
||||
* @param inv Inventory to extract from.
|
||||
* @param request Requested item and count.
|
||||
* @param src Action source.
|
||||
* @param mode Simulate or modulate
|
||||
* @return extracted items or {@code null} of nothing was extracted.
|
||||
*/
|
||||
<T extends IAEStack<T>> T poweredExtraction( final IEnergySource energy, final IMEInventory<T> inv, final T request, final IActionSource src, final Actionable mode );
|
||||
|
||||
/**
|
||||
* Inserts items into a {@link IMEInventory} respecting power requirements.
|
||||
*
|
||||
* @param energy Energy source.
|
||||
* @param inv Inventory to insert into.
|
||||
* @param request Items to insert.
|
||||
* @param src Action source.
|
||||
* @param mode Simulate or modulate
|
||||
* @return items not inserted or {@code null} if everything was inserted.
|
||||
*/
|
||||
<T extends IAEStack<T>> T poweredInsert( final IEnergySource energy, final IMEInventory<T> inv, final T input, final IActionSource src, final Actionable mode );
|
||||
|
||||
/**
|
||||
* Posts alteration of stored items to the provided {@link IStorageGrid}.
|
||||
* This can be used by cell containers to notify the grid of storage cell changes.
|
||||
*
|
||||
* @param gs the storage grid.
|
||||
* @param removedCell the removed cell itemstack
|
||||
* @param addedCell the added cell itemstack
|
||||
* @param src the action source
|
||||
*/
|
||||
void postChanges( @Nonnull final IStorageGrid gs, @Nonnull final ItemStack removedCell, @Nonnull final ItemStack addedCell, @Nonnull final IActionSource src );
|
||||
}
|
||||
|
||||
@@ -112,4 +112,17 @@ public interface IAEItemStack extends IAEStack<IAEItemStack>
|
||||
* @return definition stack
|
||||
*/
|
||||
ItemStack getDefinition();
|
||||
|
||||
/**
|
||||
* Compare this AE item stack to another item stack, but ignores
|
||||
* the amount. It checks the item type, NBT and damage values.
|
||||
*
|
||||
* @param is An item stack
|
||||
*/
|
||||
boolean equals( ItemStack is );
|
||||
|
||||
ItemStack getCachedItemStack( long stackSize );
|
||||
|
||||
void setCachedItemStack( ItemStack is );
|
||||
|
||||
}
|
||||
@@ -149,16 +149,14 @@ public interface IAEStack<T extends IAEStack<T>>
|
||||
boolean equals( Object obj );
|
||||
|
||||
/**
|
||||
* compare stacks using fuzzy logic
|
||||
* Compare the same subtype of {@link IAEStack} with another using a fuzzy comparison.
|
||||
*
|
||||
* a IAEItemStack to another AEItemStack or a ItemStack.
|
||||
*
|
||||
* @param st stacks
|
||||
* @param mode used fuzzy mode
|
||||
* @param other The stack to compare.
|
||||
* @param mode Which {@link FuzzyMode} should be used.
|
||||
*
|
||||
* @return true if two stacks are equal based on AE Fuzzy Comparison.
|
||||
*/
|
||||
boolean fuzzyComparison( Object st, FuzzyMode mode );
|
||||
boolean fuzzyComparison( T other, FuzzyMode mode );
|
||||
|
||||
/**
|
||||
* Slower for disk saving, but smaller/more efficient for packets.
|
||||
@@ -200,7 +198,7 @@ public interface IAEStack<T extends IAEStack<T>>
|
||||
|
||||
/**
|
||||
* Returns itemstack for display and similar purposes. Always has a count of 1.
|
||||
*
|
||||
*
|
||||
* @return itemstack
|
||||
*/
|
||||
ItemStack asItemStackRepresentation();
|
||||
|
||||
+14
-6
@@ -21,14 +21,22 @@
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.parts;
|
||||
package appeng.api.util;
|
||||
|
||||
/**
|
||||
* TODO: Consider removing and replacing with capabilities.
|
||||
*/
|
||||
public enum LayerFlags
|
||||
|
||||
public enum AECableSize
|
||||
{
|
||||
NONE,
|
||||
NORMAL,
|
||||
DENSE;
|
||||
|
||||
IC2_ENET
|
||||
public static AECableSize min( AECableSize a, AECableSize b )
|
||||
{
|
||||
return a.compareTo( b ) < 0 ? a : b;
|
||||
}
|
||||
|
||||
public static AECableSize max( AECableSize a, AECableSize b )
|
||||
{
|
||||
return a.compareTo( b ) > 0 ? a : b;
|
||||
}
|
||||
}
|
||||
@@ -29,32 +29,32 @@ public enum AECableType
|
||||
/**
|
||||
* No Cable present.
|
||||
*/
|
||||
NONE,
|
||||
NONE( AECableVariant.NONE, AECableSize.NONE ),
|
||||
|
||||
/**
|
||||
* Connections to this block should render as glass.
|
||||
*/
|
||||
GLASS,
|
||||
GLASS( AECableVariant.GLASS, AECableSize.NORMAL ),
|
||||
|
||||
/**
|
||||
* Connections to this block should render as covered.
|
||||
*/
|
||||
COVERED,
|
||||
COVERED( AECableVariant.COVERED, AECableSize.NORMAL ),
|
||||
|
||||
/**
|
||||
* Connections to this block should render as smart.
|
||||
*/
|
||||
SMART,
|
||||
SMART( AECableVariant.SMART, AECableSize.NORMAL ),
|
||||
|
||||
/**
|
||||
* Smart Dense Cable, represents a tier 2 block that can carry 32 channels.
|
||||
*/
|
||||
DENSE_COVERED,
|
||||
DENSE_COVERED( AECableVariant.COVERED, AECableSize.DENSE ),
|
||||
|
||||
/**
|
||||
* Smart Dense Cable, represents a tier 2 block that can carry 32 channels.
|
||||
*/
|
||||
DENSE_SMART;
|
||||
DENSE_SMART( AECableVariant.SMART, AECableSize.DENSE );
|
||||
|
||||
public static final AECableType[] VALIDCABLES = {
|
||||
GLASS,
|
||||
@@ -64,4 +64,97 @@ public enum AECableType
|
||||
DENSE_SMART
|
||||
};
|
||||
|
||||
private final AECableVariant variant;
|
||||
private final AECableSize size;
|
||||
|
||||
private AECableType( AECableVariant variant, AECableSize size )
|
||||
{
|
||||
this.variant = variant;
|
||||
this.size = size;
|
||||
}
|
||||
|
||||
public AECableSize size()
|
||||
{
|
||||
return this.size;
|
||||
}
|
||||
|
||||
public AECableVariant variant()
|
||||
{
|
||||
return this.variant;
|
||||
}
|
||||
|
||||
public boolean isValid()
|
||||
{
|
||||
return this.variant != AECableVariant.NONE && this.size != AECableSize.NONE;
|
||||
}
|
||||
|
||||
public boolean isDense()
|
||||
{
|
||||
return this.size == AECableSize.DENSE;
|
||||
}
|
||||
|
||||
public boolean isSmart()
|
||||
{
|
||||
return this.variant == AECableVariant.SMART;
|
||||
}
|
||||
|
||||
public static AECableType min( AECableType a, AECableType b )
|
||||
{
|
||||
final AECableVariant v = AECableVariant.min( a.variant(), b.variant() );
|
||||
final AECableSize s = AECableSize.min( a.size(), b.size() );
|
||||
|
||||
return AECableType.from( v, s );
|
||||
}
|
||||
|
||||
public static AECableType max( AECableType a, AECableType b )
|
||||
{
|
||||
final AECableVariant v = AECableVariant.max( a.variant(), b.variant() );
|
||||
final AECableSize s = AECableSize.max( a.size(), b.size() );
|
||||
|
||||
return AECableType.from( v, s );
|
||||
}
|
||||
|
||||
private static AECableType from( AECableVariant variant, AECableSize size )
|
||||
{
|
||||
switch( variant )
|
||||
{
|
||||
case GLASS:
|
||||
switch( size )
|
||||
{
|
||||
case NORMAL:
|
||||
return GLASS;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case COVERED:
|
||||
switch( size )
|
||||
{
|
||||
case NORMAL:
|
||||
return COVERED;
|
||||
case DENSE:
|
||||
return DENSE_COVERED;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
break;
|
||||
case SMART:
|
||||
switch( size )
|
||||
{
|
||||
case NORMAL:
|
||||
return SMART;
|
||||
case DENSE:
|
||||
return DENSE_SMART;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
||||
return NONE;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -0,0 +1,43 @@
|
||||
/*
|
||||
* The MIT License (MIT)
|
||||
*
|
||||
* Copyright (c) 2013 AlgorithmX2
|
||||
*
|
||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
* this software and associated documentation files (the "Software"), to deal in
|
||||
* the Software without restriction, including without limitation the rights to
|
||||
* use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
||||
* the Software, and to permit persons to whom the Software is furnished to do so,
|
||||
* subject to the following conditions:
|
||||
*
|
||||
* The above copyright notice and this permission notice shall be included in all
|
||||
* copies or substantial portions of the Software.
|
||||
*
|
||||
* THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
* IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
||||
* FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
||||
* COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
||||
* IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
*/
|
||||
|
||||
package appeng.api.util;
|
||||
|
||||
|
||||
public enum AECableVariant
|
||||
{
|
||||
NONE,
|
||||
GLASS,
|
||||
COVERED,
|
||||
SMART;
|
||||
|
||||
public static AECableVariant min( AECableVariant a, AECableVariant b )
|
||||
{
|
||||
return a.compareTo( b ) < 0 ? a : b;
|
||||
}
|
||||
|
||||
public static AECableVariant max( AECableVariant a, AECableVariant b )
|
||||
{
|
||||
return a.compareTo( b ) > 0 ? a : b;
|
||||
}
|
||||
}
|
||||
@@ -74,25 +74,30 @@ public enum AEColor
|
||||
|
||||
TRANSPARENT( "gui.appliedenergistics2.Fluix", null, 0x1B2344, 0x895CA8, 0xD7BBEC );
|
||||
|
||||
public static final List<AEColor> VALID_COLORS = Arrays.asList( WHITE, ORANGE, MAGENTA, LIGHT_BLUE, YELLOW, LIME, PINK, GRAY, LIGHT_GRAY, CYAN, PURPLE, BLUE, BROWN, GREEN, RED, BLACK );
|
||||
public static final List<AEColor> VALID_COLORS = Arrays.asList( WHITE, ORANGE, MAGENTA, LIGHT_BLUE, YELLOW, LIME, PINK, GRAY, LIGHT_GRAY, CYAN, PURPLE,
|
||||
BLUE, BROWN, GREEN, RED, BLACK );
|
||||
|
||||
/**
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #blackVariant dark variant} of the apprioriate AE color.
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #blackVariant dark
|
||||
* variant} of the apprioriate AE color.
|
||||
*/
|
||||
public static final int TINTINDEX_DARK = 1;
|
||||
|
||||
/**
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #mediumVariant medium variant} of the apprioriate AE color.
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #mediumVariant medium
|
||||
* variant} of the apprioriate AE color.
|
||||
*/
|
||||
public static final int TINTINDEX_MEDIUM = 2;
|
||||
|
||||
/**
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #whiteVariant bright variant} of the apprioriate AE color.
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get the {@link #whiteVariant bright
|
||||
* variant} of the apprioriate AE color.
|
||||
*/
|
||||
public static final int TINTINDEX_BRIGHT = 3;
|
||||
|
||||
/**
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get a color between the {@link #mediumVariant medium}
|
||||
* The {@link BakedQuad#getTintIndex() tint index} that can normally be used to get a color between the
|
||||
* {@link #mediumVariant medium}
|
||||
* and {@link #whiteVariant bright variant} of the apprioriate AE color.
|
||||
*/
|
||||
public static final int TINTINDEX_MEDIUM_BRIGHT = 4;
|
||||
@@ -141,7 +146,8 @@ public enum AEColor
|
||||
{
|
||||
switch( tintIndex )
|
||||
{
|
||||
// Please note that tintindex 0 is hardcoded for the block breaking particles. Returning anything other than -1 for tintindex=0 here
|
||||
// Please note that tintindex 0 is hardcoded for the block breaking particles. Returning anything other than
|
||||
// -1 for tintindex=0 here
|
||||
// will cause issues with those particles
|
||||
case 0:
|
||||
return -1;
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user