Compare commits
1033 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 1d1205412c | |||
| ad8b7aa7bd | |||
| 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 | |||
| 3e09c49e03 | |||
| 9481c9a7d7 | |||
| ccefb47581 | |||
| 59af05aeb1 | |||
| b32834e2b3 | |||
| 6c7cbb7ee1 | |||
| 84c065ff28 | |||
| c9b92a81a3 | |||
| eed4776c6f | |||
| 22807bc619 | |||
| ae352c093e | |||
| 36d6681eac | |||
| 6cffe93970 | |||
| b1472c58d0 | |||
| 96450a76c7 | |||
| ac209053b9 | |||
| dce1aa37eb | |||
| 0b6831e4d7 | |||
| da6d8ba9a8 | |||
| f0e45c7a3c | |||
| cbfc88c87f | |||
| 8c5842aca9 | |||
| 483049f555 | |||
| a7a65ae39d | |||
| 45878df17d | |||
| 98142d8ade | |||
| 7956872d1d | |||
| e243c8e9a2 | |||
| 641d0d40cc | |||
| 50fad685b6 | |||
| 1ad49edd76 | |||
| 7ceaa4cc3e | |||
| b70c86542b | |||
| c1197c0084 | |||
| f0d807f0a2 | |||
| 5fa2c0ab27 | |||
| 3063bd887c | |||
| fac4a8f9dc | |||
| 9d8226da19 | |||
| 33754d289d | |||
| 959672dae3 | |||
| 90c17c09a8 | |||
| e0bf7223e0 | |||
| ba9af94228 | |||
| 122b6163dc | |||
| fab42ccc75 | |||
| f5dd2c8b0a | |||
| a126112a2d | |||
| 99cda5f5a3 | |||
| 56a5363528 | |||
| be65edbd5b | |||
| fe5d9251eb | |||
| 3cf48b2291 | |||
| cc4599b5fc | |||
| c1fa77df51 | |||
| 725fa491e6 | |||
| e2a6cd1d57 | |||
| 6ddf60fab8 | |||
| 2c07acfe81 | |||
| 3749742231 | |||
| 74b9610b45 | |||
| a725779ff6 | |||
| b82df25c75 | |||
| cc9b33b473 | |||
| 5496b746ea | |||
| f80f623ccf | |||
| cba6c5500f | |||
| bc8268af94 | |||
| 297cd16702 | |||
| 41711e50b9 | |||
| 2bfb8b75e8 | |||
| 58e96aa3de | |||
| 4f07b63b13 | |||
| 905dd6c888 | |||
| ab7f35a9ee | |||
| 6e81f698c0 | |||
| 8ad8ce68b5 | |||
| 644194d0d6 | |||
| 95b27f490c | |||
| 6032c0328e | |||
| e8d554d69d | |||
| 1e15b23506 | |||
| 2ed7a5598a | |||
| 1c05dd5834 | |||
| 632d124359 | |||
| 829c18e2bb | |||
| d3a5be7ed6 | |||
| 217cbf0982 | |||
| 4dd0a4cd96 | |||
| 54c0ce43ea | |||
| bd8f43acbf | |||
| 970630a90d | |||
| 771a944058 | |||
| db1cd8c312 | |||
| 375e1efb15 | |||
| 955fcac92a | |||
| 216e2cb1e3 | |||
| 53f5724657 | |||
| a3269826f9 | |||
| 1a918be658 | |||
| 90130e72aa | |||
| c8f10d92bb | |||
| 548af3c6cc | |||
| 98b9380494 | |||
| bbf4d4a9ce | |||
| 1513ba3f6a | |||
| f03f8ec432 | |||
| e1dcd588b7 | |||
| 8338a7d13e | |||
| b8e685b1b6 | |||
| d84500c5b7 | |||
| a1679c944b | |||
| a3a39201d1 | |||
| d788da687e | |||
| 030e0c6a14 | |||
| 8e4265aa33 | |||
| 80eaa032b9 | |||
| bee9c70497 | |||
| c4fa21c193 | |||
| 8a7450168b | |||
| 7cb641cdc8 | |||
| b5b8050c4c | |||
| e65083b045 | |||
| b61219ef88 | |||
| 4f9fd1b369 | |||
| 630fae3f73 | |||
| 488ef1b544 | |||
| 098ee2f000 | |||
| 04d2b06c0d | |||
| ac48ab02fc | |||
| 9022150e38 | |||
| 65c6d2249a | |||
| 8e7f79a9ea | |||
| 95b48b9438 | |||
| cdd76b7b22 | |||
| 3e2bc0e038 | |||
| eec3e59eea | |||
| e39855b48f | |||
| cdcab7d91c | |||
| 27ad2c2b96 | |||
| 542a2e5d5a | |||
| 3b58f5e8da | |||
| 092afad4a5 | |||
| 6aa810d62a | |||
| 41d98f9944 | |||
| 1b198979fd | |||
| 8d5cc916e0 | |||
| 5abb8bf886 | |||
| 0bed78a144 | |||
| 30940e91ea | |||
| 0f9ac5fdda | |||
| 5e001d86cb | |||
| b13a338948 | |||
| 454404b0c1 |
@@ -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
|
### Windows ###
|
||||||
# need gradle
|
|
||||||
!gradle/
|
|
||||||
!gradlew
|
|
||||||
!gradlew.bat
|
|
||||||
!build.gradle
|
|
||||||
!gradle.properties
|
|
||||||
!.travis.yml
|
|
||||||
|
|
||||||
# include markdowns
|
thumbs.db
|
||||||
!README.md
|
*.db
|
||||||
!LICENSE
|
|
||||||
|
|
||||||
# include sourcecode
|
### Java ###
|
||||||
!src/
|
|
||||||
|
|
||||||
# include git important files
|
*.class
|
||||||
!.gitmodules
|
|
||||||
!.gitignore
|
|
||||||
|
|
||||||
# code format to reduce noise in git commits
|
# Mobile Tools for Java (J2ME)
|
||||||
!codeformat/
|
.mtj.tmp/
|
||||||
|
|
||||||
# Github specific files and directories
|
# Package Files #
|
||||||
!.github/
|
*.war
|
||||||
|
*.ear
|
||||||
|
*.txt
|
||||||
|
|
||||||
# Explicit ignores
|
# virtual machine crash logs, see http://www.java.com/en/download/help/error_hotspot.xml
|
||||||
Thumbs.db
|
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,191 +1,44 @@
|
|||||||
[](https://travis-ci.org/AppliedEnergistics/Applied-Energistics-2)
|
# Applied Energistics 2 Unofficial Extended Life
|
||||||
[](https://github.com/AppliedEnergistics/Applied-Energistics-2/releases)
|
|
||||||
|
|
||||||
# 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)
|
|
||||||
* [Localization](#applied-energistics-2-localization)
|
|
||||||
* [Credits](#credits)
|
|
||||||
|
|
||||||
## About
|
## 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/)
|
See [Releases](https://github.com/PrototypeTrousers/Applied-Energistics-2/releases) for the compiled jars.
|
||||||
* [IRC #appliedenergistics on esper.net](http://webchat.esper.net/?channels=appliedenergistics&prompt=1)
|
|
||||||
* [GitHub](https://github.com/AppliedEnergistics/Applied-Energistics-2)
|
## 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
|
## License
|
||||||
|
|
||||||
* Applied Energistics 2 API
|
* Applied Energistics 2 API
|
||||||
- (c) 2013 - 2017 AlgorithmX2 et al
|
- (c) 2013 - 2018 AlgorithmX2 et al
|
||||||
- [](http://opensource.org/licenses/MIT)
|
- [](http://opensource.org/licenses/MIT)
|
||||||
* Applied Energistics 2
|
* 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)
|
- [](https://raw.githubusercontent.com/AppliedEnergistics/Applied-Energistics-2/rv2/LICENSE)
|
||||||
* Textures and Models
|
* Textures and Models
|
||||||
- (c) 2013 - 2017 AlgorithmX2 et al
|
- (c) 2013 - 2018 AlgorithmX2 et al
|
||||||
- [](https://creativecommons.org/licenses/by-nc-sa/3.0/)
|
- [](https://creativecommons.org/licenses/by-nc-sa/3.0/)
|
||||||
* Text and Translations
|
* Text and Translations
|
||||||
- [](https://creativecommons.org/publicdomain/zero/1.0/)
|
- [](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 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
|
## Credits
|
||||||
|
|
||||||
Thanks to
|
Special thanks to:
|
||||||
|
|
||||||
|
* PrototypeTrousers for the initial fork
|
||||||
* Notch et al for Minecraft
|
* Notch et al for Minecraft
|
||||||
* Lex et al for MinecraftForge
|
* Lex et al for MinecraftForge
|
||||||
* AlgorithmX2 for AppliedEnergistics2
|
* AlgorithmX2 for AppliedEnergistics2
|
||||||
|
|||||||
+1196
-81
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)
|
||||||
|
}
|
||||||
+181
-23
@@ -1,26 +1,184 @@
|
|||||||
aeversion=rv5
|
modName = AE2 Unofficial Extended Life
|
||||||
aechannel=alpha
|
|
||||||
aebuild=0
|
|
||||||
aegroup=appeng
|
|
||||||
aebasename=appliedenergistics2
|
|
||||||
|
|
||||||
#########################################################
|
# This is a case-sensitive string to identify your mod. Convention is to use lower case.
|
||||||
# Versions #
|
modId = appliedenergistics2
|
||||||
#########################################################
|
|
||||||
minecraft_version=1.12
|
|
||||||
mcp_mappings=snapshot_20170704
|
|
||||||
forge_version=14.21.1.2412
|
|
||||||
|
|
||||||
#########################################################
|
modGroup = appeng
|
||||||
# Installable #
|
|
||||||
#########################################################
|
|
||||||
hwyla_version=1.8.19-B33_1.12
|
|
||||||
|
|
||||||
#########################################################
|
# Version of your mod.
|
||||||
# Provided APIs #
|
# This field can be left empty if you want your mod's version to be determined by the latest git tag instead.
|
||||||
#########################################################
|
modVersion =
|
||||||
jei_version=4.7.1.69
|
|
||||||
tesla_version=1.0.61
|
# AE2 Specific Version Settings
|
||||||
ic2_version=2.8.7-ex112
|
aeversion=rv6
|
||||||
rf_version=2.0.0.1
|
aechannel=stable
|
||||||
top_version=1.12-1.4.8-2
|
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,89 +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.epoxide.xyz"
|
|
||||||
}
|
|
||||||
|
|
||||||
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"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
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}"
|
|
||||||
// mods "com.github.mcjty:compatlayer:${compatlayer_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-${minecraft_version}:${tesla_version}"
|
|
||||||
compileOnly "net.industrial-craft:industrialcraft-2:${ic2_version}:api"
|
|
||||||
compileOnly "mcjty.theoneprobe:TheOneProbe-1.12:${top_version}:api"
|
|
||||||
|
|
||||||
// deobfCompile "mcp.mobius.waila:Hwyla:${hwyla_version}"
|
|
||||||
deobfCompile "cofh:RedstoneFlux:${minecraft_version}-${rf_version}:universal"
|
|
||||||
|
|
||||||
// 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
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
|
distributionUrl=https\://services.gradle.org/distributions/gradle-8.5-bin.zip
|
||||||
|
networkTimeout=10000
|
||||||
|
validateDistributionUrl=true
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
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
|
# Attempt to set APP_HOME
|
||||||
|
|
||||||
# Resolve links: $0 may be a link
|
# Resolve links: $0 may be a link
|
||||||
PRG="$0"
|
app_path=$0
|
||||||
# Need this for relative symlinks.
|
|
||||||
while [ -h "$PRG" ] ; do
|
# Need this for daisy-chained symlinks.
|
||||||
ls=`ls -ld "$PRG"`
|
while
|
||||||
link=`expr "$ls" : '.*-> \(.*\)$'`
|
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
|
||||||
if expr "$link" : '/.*' > /dev/null; then
|
[ -h "$app_path" ]
|
||||||
PRG="$link"
|
do
|
||||||
else
|
ls=$( ls -ld "$app_path" )
|
||||||
PRG=`dirname "$PRG"`"/$link"
|
link=${ls#*' -> '}
|
||||||
fi
|
case $link in #(
|
||||||
|
/*) app_path=$link ;; #(
|
||||||
|
*) app_path=$APP_HOME$link ;;
|
||||||
|
esac
|
||||||
done
|
done
|
||||||
SAVED="`pwd`"
|
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
|
||||||
APP_HOME="`pwd -P`"
|
|
||||||
cd "$SAVED" >/dev/null
|
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
# This is normally unused
|
||||||
APP_BASE_NAME=`basename "$0"`
|
# shellcheck disable=SC2034
|
||||||
|
APP_BASE_NAME=${0##*/}
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
APP_HOME=$( cd "${APP_HOME:-./}" && pwd -P ) || exit
|
||||||
DEFAULT_JVM_OPTS=""
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
MAX_FD="maximum"
|
MAX_FD=maximum
|
||||||
|
|
||||||
warn ( ) {
|
warn () {
|
||||||
echo "$*"
|
echo "$*"
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
die ( ) {
|
die () {
|
||||||
echo
|
echo
|
||||||
echo "$*"
|
echo "$*"
|
||||||
echo
|
echo
|
||||||
exit 1
|
exit 1
|
||||||
}
|
} >&2
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
# OS specific support (must be 'true' or 'false').
|
||||||
cygwin=false
|
cygwin=false
|
||||||
msys=false
|
msys=false
|
||||||
darwin=false
|
darwin=false
|
||||||
nonstop=false
|
nonstop=false
|
||||||
case "`uname`" in
|
case "$( uname )" in #(
|
||||||
CYGWIN* )
|
CYGWIN* ) cygwin=true ;; #(
|
||||||
cygwin=true
|
Darwin* ) darwin=true ;; #(
|
||||||
;;
|
MSYS* | MINGW* ) msys=true ;; #(
|
||||||
Darwin* )
|
NONSTOP* ) nonstop=true ;;
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
NONSTOP* )
|
|
||||||
nonstop=true
|
|
||||||
;;
|
|
||||||
esac
|
esac
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
# Determine the Java command to use to start the JVM.
|
# Determine the Java command to use to start the JVM.
|
||||||
if [ -n "$JAVA_HOME" ] ; then
|
if [ -n "$JAVA_HOME" ] ; then
|
||||||
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
|
||||||
# IBM's JDK on AIX uses strange locations for the executables
|
# IBM's JDK on AIX uses strange locations for the executables
|
||||||
JAVACMD="$JAVA_HOME/jre/sh/java"
|
JAVACMD=$JAVA_HOME/jre/sh/java
|
||||||
else
|
else
|
||||||
JAVACMD="$JAVA_HOME/bin/java"
|
JAVACMD=$JAVA_HOME/bin/java
|
||||||
fi
|
fi
|
||||||
if [ ! -x "$JAVACMD" ] ; then
|
if [ ! -x "$JAVACMD" ] ; then
|
||||||
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
|
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."
|
location of your Java installation."
|
||||||
fi
|
fi
|
||||||
else
|
else
|
||||||
JAVACMD="java"
|
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.
|
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
|
Please set the JAVA_HOME variable in your environment to match the
|
||||||
location of your Java installation."
|
location of your Java installation."
|
||||||
|
fi
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
case $MAX_FD in #(
|
||||||
if [ $? -eq 0 ] ; then
|
max*)
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
|
||||||
MAX_FD="$MAX_FD_LIMIT"
|
# shellcheck disable=SC3045
|
||||||
fi
|
MAX_FD=$( ulimit -H -n ) ||
|
||||||
ulimit -n $MAX_FD
|
warn "Could not query maximum file descriptor limit"
|
||||||
if [ $? -ne 0 ] ; then
|
esac
|
||||||
warn "Could not set maximum file descriptor limit: $MAX_FD"
|
case $MAX_FD in #(
|
||||||
fi
|
'' | soft) :;; #(
|
||||||
else
|
*)
|
||||||
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
|
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
|
||||||
fi
|
# shellcheck disable=SC3045
|
||||||
fi
|
ulimit -n "$MAX_FD" ||
|
||||||
|
warn "Could not set maximum file descriptor limit to $MAX_FD"
|
||||||
# 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" ;;
|
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
# Collect all arguments for the java command, stacking in reverse order:
|
||||||
function splitJvmOpts() {
|
# * args from the command line
|
||||||
JVM_OPTS=("$@")
|
# * the main class name
|
||||||
}
|
# * -classpath
|
||||||
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
|
# * -D...appname settings
|
||||||
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
|
# * --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
|
@rem
|
||||||
@rem Gradle startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
@@ -9,19 +25,23 @@
|
|||||||
if "%OS%"=="Windows_NT" setlocal
|
if "%OS%"=="Windows_NT" setlocal
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%"=="" set DIRNAME=.
|
||||||
|
@rem This is normally unused
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
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.
|
@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
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if %ERRORLEVEL% equ 0 goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
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_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto execute
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
@@ -45,44 +65,26 @@ echo location of your Java installation.
|
|||||||
|
|
||||||
goto fail
|
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
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
|
|
||||||
@rem Execute Gradle
|
@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
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
if %ERRORLEVEL% equ 0 goto mainEnd
|
||||||
|
|
||||||
:fail
|
:fail
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
rem the _cmd.exe /c_ return code!
|
rem the _cmd.exe /c_ return code!
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
set EXIT_CODE=%ERRORLEVEL%
|
||||||
exit /b 1
|
if %EXIT_CODE% equ 0 set EXIT_CODE=1
|
||||||
|
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
|
||||||
|
exit /b %EXIT_CODE%
|
||||||
|
|
||||||
:mainEnd
|
:mainEnd
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
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()
|
||||||
@@ -25,13 +25,13 @@ package appeng.api;
|
|||||||
|
|
||||||
|
|
||||||
import appeng.api.definitions.IDefinitions;
|
import appeng.api.definitions.IDefinitions;
|
||||||
import appeng.api.exceptions.FailedConnection;
|
|
||||||
import appeng.api.features.IRegistryContainer;
|
import appeng.api.features.IRegistryContainer;
|
||||||
import appeng.api.networking.IGridBlock;
|
import appeng.api.networking.IGridHelper;
|
||||||
import appeng.api.networking.IGridConnection;
|
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
import appeng.api.parts.IPartHelper;
|
import appeng.api.parts.IPartHelper;
|
||||||
import appeng.api.storage.IStorageHelper;
|
import appeng.api.storage.IStorageHelper;
|
||||||
|
import appeng.api.util.IClientHelper;
|
||||||
|
|
||||||
|
|
||||||
@AEInjectable
|
@AEInjectable
|
||||||
public interface IAppEngApi
|
public interface IAppEngApi
|
||||||
@@ -42,36 +42,28 @@ public interface IAppEngApi
|
|||||||
IRegistryContainer registries();
|
IRegistryContainer registries();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return helper for working with storage data types.
|
* @return A helper for working with storage data types.
|
||||||
*/
|
*/
|
||||||
IStorageHelper storage();
|
IStorageHelper storage();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return helper for working with grids, and buses.
|
* @return A helper to create {@link IGridNode} and other grid related objects.
|
||||||
|
*/
|
||||||
|
IGridHelper grid();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return A helper for working with grids, and buses.
|
||||||
*/
|
*/
|
||||||
IPartHelper partHelper();
|
IPartHelper partHelper();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return an accessible list of all AE definitions
|
* @return An accessible list of all AE definitions
|
||||||
*/
|
*/
|
||||||
IDefinitions definitions();
|
IDefinitions definitions();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* create a grid node for your {@link appeng.api.networking.IGridHost}
|
* @return Utility methods primarily useful for client side stuff
|
||||||
*
|
|
||||||
* @param block grid block
|
|
||||||
*
|
|
||||||
* @return grid node of block
|
|
||||||
*/
|
*/
|
||||||
IGridNode createGridNode( IGridBlock block );
|
IClientHelper client();
|
||||||
|
|
||||||
/**
|
|
||||||
* create a connection between two {@link appeng.api.networking.IGridNode}
|
|
||||||
*
|
|
||||||
* @param a to be connected gridnode
|
|
||||||
* @param b to be connected gridnode
|
|
||||||
*
|
|
||||||
* @throws appeng.api.exceptions.FailedConnection
|
|
||||||
*/
|
|
||||||
IGridConnection createGridConnection( IGridNode a, IGridNode b ) throws FailedConnection;
|
|
||||||
}
|
}
|
||||||
@@ -1,64 +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.client;
|
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
|
||||||
|
|
||||||
import com.google.common.collect.ImmutableList;
|
|
||||||
|
|
||||||
import net.minecraft.block.state.IBlockState;
|
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Needs to be moved to an internal class. API is only allowed to contain interfaces and/or data.
|
|
||||||
*
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
@Deprecated
|
|
||||||
public class BakingPipeline<F, T> implements BakingPipelineElement<F, T>
|
|
||||||
{
|
|
||||||
|
|
||||||
private final ImmutableList<BakingPipelineElement<?, ?>> pipeline;
|
|
||||||
|
|
||||||
public BakingPipeline( BakingPipelineElement<?, ?>... pipeline )
|
|
||||||
{
|
|
||||||
this.pipeline = ImmutableList.copyOf( pipeline );
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: fix generics
|
|
||||||
*/
|
|
||||||
@Override
|
|
||||||
public List pipe( List things, IBakedModel parent, IBlockState state, EnumFacing side, long rand )
|
|
||||||
{
|
|
||||||
for( BakingPipelineElement pipe : this.pipeline )
|
|
||||||
{
|
|
||||||
things = pipe.pipe( things, parent, state, side, rand );
|
|
||||||
}
|
|
||||||
return things;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
||||||
@@ -26,5 +26,24 @@ package appeng.api.config;
|
|||||||
|
|
||||||
public enum ActionItems
|
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,
|
||||||
|
CONFIGURE_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
|
AE( "gui.appliedenergistics2.units.appliedenergstics" ), // Native Units - AE Energy
|
||||||
EU( "gui.appliedenergistics2.units.ic2" ), // IndustrialCraft 2 - Energy Units
|
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.
|
* unlocalized name for the power unit.
|
||||||
@@ -46,14 +47,13 @@ public enum PowerUnits
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* do power conversion using AE's conversion rates.
|
* do power conversion using AE's conversion rates.
|
||||||
*
|
* <p>
|
||||||
* Example: PowerUnits.EU.convertTo( PowerUnits.AE, 32 );
|
* 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.
|
* will normally returns 64, as it will convert the EU, to AE with AE's power settings.
|
||||||
*
|
*
|
||||||
* @param target target power unit
|
* @param target target power unit
|
||||||
* @param value value
|
* @param value value
|
||||||
*
|
|
||||||
* @return value converted to target units, from this units.
|
* @return value converted to target units, from this units.
|
||||||
*/
|
*/
|
||||||
public double convertTo( final PowerUnits target, final double value )
|
public double convertTo( final PowerUnits target, final double value )
|
||||||
|
|||||||
@@ -26,5 +26,5 @@ package appeng.api.config;
|
|||||||
|
|
||||||
public enum SearchBoxMode
|
public enum SearchBoxMode
|
||||||
{
|
{
|
||||||
AUTOSEARCH, MANUAL_SEARCH, JEI_AUTOSEARCH, JEI_MANUAL_SEARCH
|
AUTOSEARCH, AUTOSEARCH_KEEP, MANUAL_SEARCH, MANUAL_SEARCH_KEEP, JEI_AUTOSEARCH, JEI_AUTOSEARCH_KEEP, JEI_MANUAL_SEARCH, JEI_MANUAL_SEARCH_KEEP
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,31 +33,61 @@ public enum Settings
|
|||||||
{
|
{
|
||||||
LEVEL_EMITTER_MODE( EnumSet.allOf( LevelEmitterMode.class ) ),
|
LEVEL_EMITTER_MODE( EnumSet.allOf( LevelEmitterMode.class ) ),
|
||||||
|
|
||||||
REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ), REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ),
|
REDSTONE_EMITTER( EnumSet.of( RedstoneMode.HIGH_SIGNAL, RedstoneMode.LOW_SIGNAL ) ),
|
||||||
|
|
||||||
|
REDSTONE_CONTROLLED( EnumSet.allOf( RedstoneMode.class ) ),
|
||||||
|
|
||||||
CONDENSER_OUTPUT( EnumSet.allOf( CondenserOutput.class ) ),
|
CONDENSER_OUTPUT( EnumSet.allOf( CondenserOutput.class ) ),
|
||||||
|
|
||||||
POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ), ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ),
|
POWER_UNITS( EnumSet.allOf( PowerUnits.class ) ),
|
||||||
|
|
||||||
SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ), SORT_BY( EnumSet.allOf( SortOrder.class ) ),
|
ACCESS( EnumSet.of( AccessRestriction.READ_WRITE, AccessRestriction.READ, AccessRestriction.WRITE ) ),
|
||||||
|
|
||||||
SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ), VIEW_MODE( EnumSet.allOf( ViewItems.class ) ), SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ),
|
SORT_DIRECTION( EnumSet.allOf( SortDir.class ) ),
|
||||||
|
|
||||||
ACTIONS( EnumSet.allOf( ActionItems.class ) ), IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ),
|
SORT_BY( EnumSet.allOf( SortOrder.class ) ),
|
||||||
|
|
||||||
BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ), OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ),
|
SEARCH_TOOLTIPS( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ), CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
VIEW_MODE( EnumSet.allOf( ViewItems.class ) ),
|
||||||
|
|
||||||
FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ), LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ),
|
SEARCH_MODE( EnumSet.allOf( SearchBoxMode.class ) ),
|
||||||
|
|
||||||
TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ), COPY_MODE( EnumSet.allOf( CopyMode.class ) ),
|
ACTIONS( EnumSet.allOf( ActionItems.class ) ),
|
||||||
|
|
||||||
INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ), CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
IO_DIRECTION( EnumSet.of( RelativeDirection.LEFT, RelativeDirection.RIGHT ) ),
|
||||||
|
|
||||||
STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ), PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
UNLOCK(EnumSet.allOf(LockCraftingMode.class)),
|
||||||
|
|
||||||
SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) );
|
BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
OPERATION_MODE( EnumSet.allOf( OperationMode.class ) ),
|
||||||
|
|
||||||
|
FULLNESS_MODE( EnumSet.allOf( FullnessMode.class ) ),
|
||||||
|
|
||||||
|
CRAFT_ONLY( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
FUZZY_MODE( EnumSet.allOf( FuzzyMode.class ) ),
|
||||||
|
|
||||||
|
LEVEL_TYPE( EnumSet.allOf( LevelType.class ) ),
|
||||||
|
|
||||||
|
TERMINAL_STYLE( EnumSet.of( TerminalStyle.TALL, TerminalStyle.SMALL ) ),
|
||||||
|
|
||||||
|
COPY_MODE( EnumSet.allOf( CopyMode.class ) ),
|
||||||
|
|
||||||
|
INTERFACE_TERMINAL( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
CRAFT_VIA_REDSTONE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
STORAGE_FILTER( EnumSet.allOf( StorageFilter.class ) ),
|
||||||
|
|
||||||
|
PLACE_BLOCK( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
SCHEDULING_MODE( EnumSet.allOf( SchedulingMode.class ) ),
|
||||||
|
|
||||||
|
STICKY_MODE( EnumSet.of( YesNo.YES, YesNo.NO ) ),
|
||||||
|
|
||||||
|
;
|
||||||
|
|
||||||
private final EnumSet<? extends Enum<?>> values;
|
private final EnumSet<? extends Enum<?>> values;
|
||||||
|
|
||||||
|
|||||||
@@ -24,16 +24,65 @@
|
|||||||
package appeng.api.config;
|
package appeng.api.config;
|
||||||
|
|
||||||
|
|
||||||
public enum TunnelType
|
import appeng.api.AEApi;
|
||||||
{
|
import appeng.api.definitions.IItemDefinition;
|
||||||
ME, // Network Tunnel
|
import appeng.api.definitions.IParts;
|
||||||
IC2_POWER, // EU Tunnel
|
import appeng.api.parts.IPartItem;
|
||||||
RF_POWER, // RF Tunnel
|
import com.google.common.base.Preconditions;
|
||||||
FE_POWER, // Forge Energy tunnel
|
import net.minecraft.item.ItemStack;
|
||||||
REDSTONE, // Redstone Tunnel
|
import net.minecraftforge.common.util.EnumHelper;
|
||||||
FLUID, // Fluid Tunnel
|
|
||||||
ITEM, // Item Tunnel
|
import javax.annotation.Nonnull;
|
||||||
LIGHT, // Light Tunnel
|
import java.util.function.Function;
|
||||||
BUNDLED_REDSTONE, // Bundled Redstone Tunnel
|
import java.util.function.Supplier;
|
||||||
COMPUTER_MESSAGE // Computer Message Tunnel
|
|
||||||
|
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;
|
import appeng.api.definitions.IItemDefinition;
|
||||||
|
|
||||||
|
|
||||||
public enum Upgrades
|
public enum Upgrades {
|
||||||
{
|
/**
|
||||||
/**
|
* Gold Tier Upgrades.
|
||||||
* Gold Tier Upgrades.
|
*/
|
||||||
*/
|
CAPACITY(0),
|
||||||
CAPACITY( 0 ), REDSTONE( 0 ), CRAFTING( 0 ),
|
REDSTONE(0),
|
||||||
|
CRAFTING(0),
|
||||||
|
MAGNET(0),
|
||||||
|
STICKY(0),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Diamond Tier Upgrades.
|
* Diamond Tier Upgrades.
|
||||||
*/
|
*/
|
||||||
FUZZY( 1 ), SPEED( 1 ), INVERTER( 1 );
|
FUZZY(1),
|
||||||
|
SPEED(1),
|
||||||
|
INVERTER(1),
|
||||||
|
PATTERN_EXPANSION(1),
|
||||||
|
QUANTUM_LINK(1);
|
||||||
|
|
||||||
private final int tier;
|
private final int tier;
|
||||||
private final Map<ItemStack, Integer> supportedMax = new HashMap<>();
|
private final Map<ItemStack, Integer> supportedMax = new HashMap<>();
|
||||||
|
|
||||||
Upgrades( final int tier )
|
Upgrades(final int tier) {
|
||||||
{
|
this.tier = tier;
|
||||||
this.tier = tier;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return list of Items/Blocks that support this upgrade, and how many it supports.
|
* @return list of Items/Blocks that support this upgrade, and how many it supports.
|
||||||
*/
|
*/
|
||||||
public Map<ItemStack, Integer> getSupported()
|
public Map<ItemStack, Integer> getSupported() {
|
||||||
{
|
return this.supportedMax;
|
||||||
return this.supportedMax;
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a specific amount of this upgrade into a specific machine
|
* Registers a specific amount of this upgrade into a specific machine
|
||||||
*
|
*
|
||||||
* @param item machine in which this upgrade can be installed
|
* @param item machine in which this upgrade can be installed
|
||||||
* @param maxSupported amount how many upgrades can be installed
|
* @param maxSupported amount how many upgrades can be installed
|
||||||
*/
|
*/
|
||||||
public void registerItem( final IItemDefinition item, final int maxSupported )
|
public void registerItem(final IItemDefinition item, final int maxSupported) {
|
||||||
{
|
item.maybeStack(1).ifPresent(is -> this.registerItem(is, maxSupported));
|
||||||
item.maybeStack( 1 ).ifPresent( is -> this.registerItem( is, maxSupported ) );
|
}
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Registers a specific amount of this upgrade into a specific machine
|
* Registers a specific amount of this upgrade into a specific machine
|
||||||
*
|
*
|
||||||
* @param stack machine in which this upgrade can be installed
|
* @param stack machine in which this upgrade can be installed
|
||||||
* @param maxSupported amount how many upgrades can be installed
|
* @param maxSupported amount how many upgrades can be installed
|
||||||
*/
|
*/
|
||||||
public void registerItem( final ItemStack stack, final int maxSupported )
|
public void registerItem(final ItemStack stack, final int maxSupported) {
|
||||||
{
|
if (stack != null) {
|
||||||
if( stack != null )
|
this.supportedMax.put(stack, maxSupported);
|
||||||
{
|
}
|
||||||
this.supportedMax.put( stack, maxSupported );
|
}
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public int getTier()
|
public int getTier() {
|
||||||
{
|
return this.tier;
|
||||||
return this.tier;
|
}
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -148,6 +148,8 @@ public interface IBlocks
|
|||||||
|
|
||||||
ITileDefinition iface();
|
ITileDefinition iface();
|
||||||
|
|
||||||
|
ITileDefinition fluidIface();
|
||||||
|
|
||||||
ITileDefinition cellWorkbench();
|
ITileDefinition cellWorkbench();
|
||||||
|
|
||||||
ITileDefinition iOPort();
|
ITileDefinition iOPort();
|
||||||
|
|||||||
@@ -30,8 +30,7 @@ import appeng.api.util.AEColoredItemDefinition;
|
|||||||
/**
|
/**
|
||||||
* A list of all items in AE
|
* A list of all items in AE
|
||||||
*/
|
*/
|
||||||
public interface IItems
|
public interface IItems {
|
||||||
{
|
|
||||||
IItemDefinition certusQuartzAxe();
|
IItemDefinition certusQuartzAxe();
|
||||||
|
|
||||||
IItemDefinition certusQuartzHoe();
|
IItemDefinition certusQuartzHoe();
|
||||||
@@ -64,6 +63,14 @@ public interface IItems
|
|||||||
|
|
||||||
IItemDefinition wirelessTerminal();
|
IItemDefinition wirelessTerminal();
|
||||||
|
|
||||||
|
IItemDefinition wirelessCraftingTerminal();
|
||||||
|
|
||||||
|
IItemDefinition wirelessPatternTerminal();
|
||||||
|
|
||||||
|
IItemDefinition wirelessInterfaceTerminal();
|
||||||
|
|
||||||
|
IItemDefinition wirelessFluidTerminal();
|
||||||
|
|
||||||
IItemDefinition biometricCard();
|
IItemDefinition biometricCard();
|
||||||
|
|
||||||
IItemDefinition chargedStaff();
|
IItemDefinition chargedStaff();
|
||||||
@@ -88,6 +95,14 @@ public interface IItems
|
|||||||
|
|
||||||
IItemDefinition cell64k();
|
IItemDefinition cell64k();
|
||||||
|
|
||||||
|
IItemDefinition fluidCell1k();
|
||||||
|
|
||||||
|
IItemDefinition fluidCell4k();
|
||||||
|
|
||||||
|
IItemDefinition fluidCell16k();
|
||||||
|
|
||||||
|
IItemDefinition fluidCell64k();
|
||||||
|
|
||||||
IItemDefinition spatialCell2();
|
IItemDefinition spatialCell2();
|
||||||
|
|
||||||
IItemDefinition spatialCell16();
|
IItemDefinition spatialCell16();
|
||||||
|
|||||||
@@ -27,111 +27,126 @@ package appeng.api.definitions;
|
|||||||
/**
|
/**
|
||||||
* A list of all materials in AE
|
* A list of all materials in AE
|
||||||
*/
|
*/
|
||||||
public interface IMaterials
|
public interface IMaterials {
|
||||||
{
|
IItemDefinition cell2SpatialPart();
|
||||||
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
|
* A list of all parts in AE
|
||||||
*/
|
*/
|
||||||
public interface IParts
|
public interface IParts {
|
||||||
{
|
AEColoredItemDefinition cableSmart();
|
||||||
AEColoredItemDefinition cableSmart();
|
|
||||||
|
|
||||||
AEColoredItemDefinition cableCovered();
|
AEColoredItemDefinition cableCovered();
|
||||||
|
|
||||||
AEColoredItemDefinition cableGlass();
|
AEColoredItemDefinition cableGlass();
|
||||||
|
|
||||||
AEColoredItemDefinition cableDense();
|
AEColoredItemDefinition cableDenseCovered();
|
||||||
|
|
||||||
AEColoredItemDefinition lumenCableSmart();
|
AEColoredItemDefinition cableDenseSmart();
|
||||||
|
|
||||||
AEColoredItemDefinition lumenCableCovered();
|
AEColoredItemDefinition lumenCableSmart();
|
||||||
|
|
||||||
AEColoredItemDefinition lumenCableGlass();
|
AEColoredItemDefinition lumenCableCovered();
|
||||||
|
|
||||||
AEColoredItemDefinition lumenCableDense();
|
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 p2PTunnelRF();
|
IItemDefinition p2PTunnelItems();
|
||||||
|
|
||||||
IItemDefinition p2PTunnelFE();
|
IItemDefinition p2PTunnelFluids();
|
||||||
|
|
||||||
IItemDefinition p2PTunnelLight();
|
IItemDefinition p2PTunnelEU();
|
||||||
|
|
||||||
// IItemDefinition p2PTunnelOpenComputers();
|
IItemDefinition p2PTunnelFE();
|
||||||
|
|
||||||
IItemDefinition cableAnchor();
|
IItemDefinition p2PTunnelGTEU();
|
||||||
|
|
||||||
IItemDefinition monitor();
|
IItemDefinition p2PTunnelLight();
|
||||||
|
|
||||||
IItemDefinition semiDarkMonitor();
|
// IItemDefinition p2PTunnelOpenComputers();
|
||||||
|
|
||||||
IItemDefinition darkMonitor();
|
IItemDefinition cableAnchor();
|
||||||
|
|
||||||
IItemDefinition interfaceTerminal();
|
IItemDefinition monitor();
|
||||||
|
|
||||||
IItemDefinition patternTerminal();
|
IItemDefinition semiDarkMonitor();
|
||||||
|
|
||||||
IItemDefinition craftingTerminal();
|
IItemDefinition darkMonitor();
|
||||||
|
|
||||||
IItemDefinition terminal();
|
IItemDefinition interfaceTerminal();
|
||||||
|
|
||||||
IItemDefinition storageMonitor();
|
IItemDefinition patternTerminal();
|
||||||
|
|
||||||
IItemDefinition conversionMonitor();
|
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();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -21,6 +21,8 @@ package appeng.api.exceptions;
|
|||||||
|
|
||||||
public class CoreInaccessibleException extends RuntimeException
|
public class CoreInaccessibleException extends RuntimeException
|
||||||
{
|
{
|
||||||
|
private static final long serialVersionUID = -7434641554655517242L;
|
||||||
|
|
||||||
public CoreInaccessibleException( final String message )
|
public CoreInaccessibleException( final String message )
|
||||||
{
|
{
|
||||||
super( message );
|
super( message );
|
||||||
|
|||||||
@@ -37,7 +37,7 @@ import appeng.api.networking.IGridNode;
|
|||||||
* @version rv3
|
* @version rv3
|
||||||
* @since rv3
|
* @since rv3
|
||||||
*/
|
*/
|
||||||
public class ExistingConnectionException extends FailedConnection
|
public class ExistingConnectionException extends FailedConnectionException
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = 2975450379720353182L;
|
private static final long serialVersionUID = 2975450379720353182L;
|
||||||
|
|||||||
+3
-3
@@ -40,16 +40,16 @@ import appeng.api.networking.IGridNode;
|
|||||||
* @version rv3
|
* @version rv3
|
||||||
* @since rv0
|
* @since rv0
|
||||||
*/
|
*/
|
||||||
public class FailedConnection extends Exception
|
public class FailedConnectionException extends Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -2544208090248293753L;
|
private static final long serialVersionUID = -2544208090248293753L;
|
||||||
|
|
||||||
public FailedConnection()
|
public FailedConnectionException()
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public FailedConnection( String message )
|
public FailedConnectionException( String message )
|
||||||
{
|
{
|
||||||
super( message );
|
super( message );
|
||||||
}
|
}
|
||||||
+4
-2
@@ -19,9 +19,11 @@
|
|||||||
package appeng.api.exceptions;
|
package appeng.api.exceptions;
|
||||||
|
|
||||||
|
|
||||||
public class MissingDefinition extends RuntimeException
|
public class MissingDefinitionException extends RuntimeException
|
||||||
{
|
{
|
||||||
public MissingDefinition( final String message )
|
private static final long serialVersionUID = -6547396584255825761L;
|
||||||
|
|
||||||
|
public MissingDefinitionException( final String message )
|
||||||
{
|
{
|
||||||
super( message );
|
super( message );
|
||||||
}
|
}
|
||||||
+2
-2
@@ -24,12 +24,12 @@
|
|||||||
package appeng.api.exceptions;
|
package appeng.api.exceptions;
|
||||||
|
|
||||||
|
|
||||||
public class MissingIngredientError extends Exception
|
public class MissingIngredientException extends Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -998858343831371697L;
|
private static final long serialVersionUID = -998858343831371697L;
|
||||||
|
|
||||||
public MissingIngredientError( final String n )
|
public MissingIngredientException( final String n )
|
||||||
{
|
{
|
||||||
super( n );
|
super( n );
|
||||||
}
|
}
|
||||||
+2
-2
@@ -24,12 +24,12 @@
|
|||||||
package appeng.api.exceptions;
|
package appeng.api.exceptions;
|
||||||
|
|
||||||
|
|
||||||
public class ModNotInstalled extends Exception
|
public class ModNotInstalledException extends Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -9052435206368425494L;
|
private static final long serialVersionUID = -9052435206368425494L;
|
||||||
|
|
||||||
public ModNotInstalled( final String t )
|
public ModNotInstalledException( final String t )
|
||||||
{
|
{
|
||||||
super( t );
|
super( t );
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ package appeng.api.exceptions;
|
|||||||
* @version rv3
|
* @version rv3
|
||||||
* @since rv3
|
* @since rv3
|
||||||
*/
|
*/
|
||||||
public class NullNodeConnectionException extends FailedConnection
|
public class NullNodeConnectionException extends FailedConnectionException
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -2143719383495321764L;
|
private static final long serialVersionUID = -2143719383495321764L;
|
||||||
|
|||||||
+2
-2
@@ -24,12 +24,12 @@
|
|||||||
package appeng.api.exceptions;
|
package appeng.api.exceptions;
|
||||||
|
|
||||||
|
|
||||||
public class RecipeError extends Exception
|
public class RecipeException extends Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -6602870588617670262L;
|
private static final long serialVersionUID = -6602870588617670262L;
|
||||||
|
|
||||||
public RecipeError( final String n )
|
public RecipeException( final String n )
|
||||||
{
|
{
|
||||||
super( n );
|
super( n );
|
||||||
}
|
}
|
||||||
+2
-2
@@ -24,12 +24,12 @@
|
|||||||
package appeng.api.exceptions;
|
package appeng.api.exceptions;
|
||||||
|
|
||||||
|
|
||||||
public class RegistrationError extends Exception
|
public class RegistrationException extends Exception
|
||||||
{
|
{
|
||||||
|
|
||||||
private static final long serialVersionUID = -6602870588617670263L;
|
private static final long serialVersionUID = -6602870588617670263L;
|
||||||
|
|
||||||
public RegistrationError( final String n )
|
public RegistrationException( final String n )
|
||||||
{
|
{
|
||||||
super( n );
|
super( n );
|
||||||
}
|
}
|
||||||
@@ -34,7 +34,7 @@ package appeng.api.exceptions;
|
|||||||
* @version rv3
|
* @version rv3
|
||||||
* @since rv3
|
* @since rv3
|
||||||
*/
|
*/
|
||||||
public class SecurityConnectionException extends FailedConnection
|
public class SecurityConnectionException extends FailedConnectionException
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 5048714900434215426L;
|
private static final long serialVersionUID = 5048714900434215426L;
|
||||||
private static final String DEFAULT_MESSAGE = "Connection failed due to different security realms.";
|
private static final String DEFAULT_MESSAGE = "Connection failed due to different security realms.";
|
||||||
|
|||||||
@@ -0,0 +1,84 @@
|
|||||||
|
/*
|
||||||
|
* The MIT License (MIT)
|
||||||
|
*
|
||||||
|
* Copyright (c) 2017 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.features;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import net.minecraft.item.Item;
|
||||||
|
|
||||||
|
import appeng.api.implementations.items.IAEItemPowerStorage;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A registry to allow mapping {@link Item}s to a specific charge rate when being placed inside a charger.
|
||||||
|
*
|
||||||
|
* The registry is used in favor of an additional method for {@link IAEItemPowerStorage} with a fixed value per item.
|
||||||
|
* This allows more flexibility for other charger like machines to choose their own values when needed.
|
||||||
|
*
|
||||||
|
* There is no guarantee that this is charged per tick, it only represents the value per operation.
|
||||||
|
* By default this is one charging operation every 10 ticks in case of an AE2 charger.
|
||||||
|
*
|
||||||
|
* @author yueh
|
||||||
|
* @version rv5
|
||||||
|
* @since rv5
|
||||||
|
*/
|
||||||
|
public interface IChargerRegistry
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fetch a charge rate for a specific item.
|
||||||
|
*
|
||||||
|
* The specific item does not need to have a mapping registered at all.
|
||||||
|
* In this case it will use a default value of 160 AE.
|
||||||
|
*
|
||||||
|
* @param item A {@link Item} implementing {@link IAEItemPowerStorage}.
|
||||||
|
* @return custom rate or default of 160
|
||||||
|
*/
|
||||||
|
@Nonnegative
|
||||||
|
double getChargeRate( @Nonnull Item item );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register a custom charge rate for a specific item.
|
||||||
|
*
|
||||||
|
* Capped at 16000 to avoid extracting too much energy from a network for each operation.
|
||||||
|
* This is done silently without any feedback or exception.
|
||||||
|
* Further the cap is not fixed, it can change at any time in the future should power issues arise.
|
||||||
|
*
|
||||||
|
* @param item A {@link Item} implementing {@link IAEItemPowerStorage}.
|
||||||
|
* @param chargeRate the custom rate, must be > 0, capped to 16000d
|
||||||
|
*/
|
||||||
|
void addChargeRate( @Nonnull Item item, @Nonnegative double chargeRate );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Remove the custom rate for a specific item.
|
||||||
|
*
|
||||||
|
* It will revert to the default value afterwards.
|
||||||
|
*
|
||||||
|
* @param item A {@link Item} implementing {@link IAEItemPowerStorage}.
|
||||||
|
*/
|
||||||
|
void removeChargeRate( @Nonnull Item item );
|
||||||
|
|
||||||
|
}
|
||||||
@@ -0,0 +1,115 @@
|
|||||||
|
/*
|
||||||
|
* 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.features;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Builder for a grinder recipe.
|
||||||
|
*
|
||||||
|
* The only default value provided are turns at a value of 8.
|
||||||
|
*
|
||||||
|
* @author yueh
|
||||||
|
* @version rv5
|
||||||
|
* @since rv5
|
||||||
|
*/
|
||||||
|
public interface IGrinderRecipeBuilder
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an grinder recipe with inputs.
|
||||||
|
* Needs to be invoked.
|
||||||
|
*
|
||||||
|
* @param input new input for the recipe
|
||||||
|
*
|
||||||
|
* @return currently used builder
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder withInput( @Nonnull ItemStack input );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an grinder recipe with output.
|
||||||
|
* Needs to be invoked.
|
||||||
|
*
|
||||||
|
* @param output new output for the recipe
|
||||||
|
*
|
||||||
|
* @return currently used builder
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder withOutput( @Nonnull ItemStack output );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an grinder recipe with the first optional output and its chance.
|
||||||
|
*
|
||||||
|
* @param optional new first optional for the recipe
|
||||||
|
* @param chance chance for the first optional output, must be within 0.0 - 1.0
|
||||||
|
*
|
||||||
|
* @return currently used builder
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder withFirstOptional( @Nonnull ItemStack optional, float chance );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an grinder recipe with the second optional output and its chance.
|
||||||
|
*
|
||||||
|
* @param optional new second optional for the recipe
|
||||||
|
* @param chance chance for the second optional output, must be within 0.0 - 1.0
|
||||||
|
*
|
||||||
|
* @return currently used builder
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder withSecondOptional( @Nonnull ItemStack optional, float chance );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates an grinder recipe with the amount of turns as cost.
|
||||||
|
*
|
||||||
|
* Defaults to 8 when not called.
|
||||||
|
*
|
||||||
|
* @param turns new turns for the recipe, must be > 0
|
||||||
|
*
|
||||||
|
* @return currently used builder
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder withTurns( @Nonnegative int turns );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Finalizes the process of making the recipe.
|
||||||
|
* Needs to be invoked to fetch grinder recipe.
|
||||||
|
*
|
||||||
|
* @return valid grinder recipe
|
||||||
|
*
|
||||||
|
* @throws IllegalStateException when input is not defined
|
||||||
|
* @throws IllegalStateException when input has no size
|
||||||
|
* @throws IllegalStateException when output is not defined
|
||||||
|
* @throws IllegalStateException when both optionals are not defined
|
||||||
|
* @throws IllegalStateException when process type is not defined
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipe build();
|
||||||
|
}
|
||||||
@@ -38,6 +38,14 @@ import net.minecraft.item.ItemStack;
|
|||||||
public interface IGrinderRegistry
|
public interface IGrinderRegistry
|
||||||
{
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Extensible way to create a grinder recipe.
|
||||||
|
*
|
||||||
|
* @return builder for grinder recipes
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IGrinderRecipeBuilder builder();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An immutable list of the currently registered recipes.
|
* An immutable list of the currently registered recipes.
|
||||||
*
|
*
|
||||||
@@ -47,48 +55,13 @@ public interface IGrinderRegistry
|
|||||||
Collection<IGrinderRecipe> getRecipes();
|
Collection<IGrinderRecipe> getRecipes();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Add a new recipe with a single input and output and how many turns it requires.
|
* Add a new recipe to the registry.
|
||||||
*
|
|
||||||
* Will ignore duplicate recipes with the same input item.
|
|
||||||
*
|
|
||||||
* @param in The {@link ItemStack} to grind.
|
|
||||||
* @param out The {@link ItemStack} to output.
|
|
||||||
* @param turns Amount of turns to turn the input into the output, with turns > 0.
|
|
||||||
*/
|
*/
|
||||||
void addRecipe( @Nonnull ItemStack in, @Nonnull ItemStack out, int turns );
|
boolean addRecipe( IGrinderRecipe recipe );
|
||||||
|
|
||||||
/**
|
|
||||||
* Add a new recipe with an input, output and a single optional output.
|
|
||||||
*
|
|
||||||
* Will ignore duplicate recipes with the same input item.
|
|
||||||
*
|
|
||||||
* @param in The {@link ItemStack} to grind.
|
|
||||||
* @param out The {@link ItemStack} to output.
|
|
||||||
* @param optional The optional {@link ItemStack} to output of a certain chance.
|
|
||||||
* @param chance Chance to get the optional output within 0.0 - 1.0
|
|
||||||
* @param turns Amount of turns to turn the input into the output, with turns > 0.
|
|
||||||
*/
|
|
||||||
void addRecipe( @Nonnull ItemStack in, @Nonnull ItemStack out, @Nonnull ItemStack optional, float chance, int turns );
|
|
||||||
|
|
||||||
/**
|
|
||||||
* add a new recipe with optional outputs, duplicates will not be added.
|
|
||||||
*
|
|
||||||
* Will ignore duplicate recipes with the same input item.
|
|
||||||
*
|
|
||||||
* @param in The {@link ItemStack} to grind.
|
|
||||||
* @param out The {@link ItemStack} to output.
|
|
||||||
* @param optional The first optional {@link ItemStack} to output of a certain chance.
|
|
||||||
* @param chance Chance to get the first optional output within 0.0 - 1.0
|
|
||||||
* @param optional2 The second optional {@link ItemStack} to output of a certain chance.
|
|
||||||
* @param chance2 chance to get the second optional output within 0.0 - 1.0
|
|
||||||
* @param turns Amount of turns to turn the input into the output, with turns > 0.
|
|
||||||
*
|
|
||||||
*/
|
|
||||||
void addRecipe( @Nonnull ItemStack in, @Nonnull ItemStack out, @Nonnull ItemStack optional, float chance, @Nonnull ItemStack optional2, float chance2, int turns );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove the specific from the recipe list.
|
* Remove the specific from the recipe list.
|
||||||
*
|
*
|
||||||
* @param recipe The recipe to be removed.
|
* @param recipe The recipe to be removed.
|
||||||
* @return true, if it was removed
|
* @return true, if it was removed
|
||||||
*/
|
*/
|
||||||
@@ -106,11 +79,11 @@ public interface IGrinderRegistry
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows do add a custom ratio from an ore to dust when being grinded.
|
* Allows do add a custom ratio from an ore to dust when being grinded.
|
||||||
*
|
*
|
||||||
* The default ratio is 1 ore to 2 dusts.
|
* The default ratio is 1 ore to 2 dusts.
|
||||||
*
|
*
|
||||||
* These have to be added before any recipe is registered. Otherwise it will use the default value.
|
* These have to be added before any recipe is registered. Otherwise it will use the default value.
|
||||||
*
|
*
|
||||||
* @param oredictName The name of the ore;
|
* @param oredictName The name of the ore;
|
||||||
* @param ratio The amount, must be > 0;
|
* @param ratio The amount, must be > 0;
|
||||||
*/
|
*/
|
||||||
@@ -118,9 +91,9 @@ public interface IGrinderRegistry
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a custom ratio for a specific ore name.
|
* Remove a custom ratio for a specific ore name.
|
||||||
*
|
*
|
||||||
* Will use the default of 2 value afterwards.
|
* Will use the default of 2 value afterwards.
|
||||||
*
|
*
|
||||||
* @param oredictName The name of the ore;
|
* @param oredictName The name of the ore;
|
||||||
*/
|
*/
|
||||||
boolean removeDustRatio( @Nonnull String oredictName );
|
boolean removeDustRatio( @Nonnull String oredictName );
|
||||||
|
|||||||
@@ -19,12 +19,11 @@
|
|||||||
package appeng.api.features;
|
package appeng.api.features;
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import net.minecraft.item.ItemStack;
|
||||||
import java.util.Optional;
|
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.List;
|
||||||
import net.minecraft.item.ItemStack;
|
import java.util.Optional;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -57,21 +56,35 @@ public interface IInscriberRecipe
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
ItemStack getOutput();
|
ItemStack getOutput();
|
||||||
|
|
||||||
|
|
||||||
|
@Nonnull
|
||||||
|
List<ItemStack> getTopInputs();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets the top optional
|
* gets the top optional
|
||||||
*
|
*
|
||||||
* @return item which is used top
|
* @return item which is used top
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
@Nonnull
|
@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
|
* gets the bottom optional
|
||||||
*
|
*
|
||||||
* @return item which is used bottom
|
* @return item which is used bottom
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
@Nonnull
|
@Nonnull
|
||||||
Optional<ItemStack> getBottomOptional();
|
default Optional<ItemStack> getBottomOptional() {
|
||||||
|
return getBottomInputs().isEmpty() ? Optional.empty() : Optional.of(getBottomInputs().get(0));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* type of inscriber process
|
* type of inscriber process
|
||||||
|
|||||||
@@ -19,11 +19,11 @@
|
|||||||
package appeng.api.features;
|
package appeng.api.features;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
|
import java.util.Collection;
|
||||||
import net.minecraft.item.ItemStack;
|
import java.util.Collections;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -66,7 +66,7 @@ public interface IInscriberRecipeBuilder
|
|||||||
* @return currently used builder
|
* @return currently used builder
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
IInscriberRecipeBuilder withTopOptional( @Nonnull ItemStack topOptional );
|
IInscriberRecipeBuilder withTopOptional(@Nonnull Collection<ItemStack> topOptional );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an inscriber recipe with bot.
|
* Creates an inscriber recipe with bot.
|
||||||
@@ -77,7 +77,7 @@ public interface IInscriberRecipeBuilder
|
|||||||
* @return currently used builder
|
* @return currently used builder
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
IInscriberRecipeBuilder withBottomOptional( @Nonnull ItemStack bottomOptional );
|
IInscriberRecipeBuilder withBottomOptional( @Nonnull Collection<ItemStack> bottomOptional );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Creates an inscriber recipe with type.
|
* Creates an inscriber recipe with type.
|
||||||
@@ -104,4 +104,14 @@ public interface IInscriberRecipeBuilder
|
|||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nonnull
|
||||||
IInscriberRecipe build();
|
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));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -31,11 +31,19 @@ import net.minecraft.item.ItemStack;
|
|||||||
* Lets you manipulate Inscriber Recipes, by adding or editing existing ones.
|
* Lets you manipulate Inscriber Recipes, by adding or editing existing ones.
|
||||||
*
|
*
|
||||||
* @author thatsIch
|
* @author thatsIch
|
||||||
* @version rv3
|
* @version rv5
|
||||||
* @since rv2
|
* @since rv2
|
||||||
*/
|
*/
|
||||||
public interface IInscriberRegistry
|
public interface IInscriberRegistry
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
* Extensible way to create an inscriber recipe.
|
||||||
|
*
|
||||||
|
* @return builder for inscriber recipes
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
IInscriberRecipeBuilder builder();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An immutable copy of currently registered recipes.
|
* An immutable copy of currently registered recipes.
|
||||||
*
|
*
|
||||||
@@ -65,29 +73,25 @@ public interface IInscriberRegistry
|
|||||||
@Nonnull
|
@Nonnull
|
||||||
Set<ItemStack> getInputs();
|
Set<ItemStack> getInputs();
|
||||||
|
|
||||||
/**
|
|
||||||
* Extensible way to create an inscriber recipe.
|
|
||||||
*
|
|
||||||
* @return builder for inscriber recipes
|
|
||||||
*/
|
|
||||||
@Nonnull
|
|
||||||
IInscriberRecipeBuilder builder();
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* add a new recipe the easy way, duplicates will not be added.
|
* add a new recipe the easy way, duplicates will not be added.
|
||||||
* Added recipes will be automatically added to the optionals and inputs.
|
* Added recipes will be automatically added to the optionals and inputs.
|
||||||
*
|
*
|
||||||
* @param recipe new recipe
|
* @param recipe new recipe
|
||||||
|
*
|
||||||
|
* @return true, when successfully added
|
||||||
*
|
*
|
||||||
* @throws IllegalArgumentException if null is added
|
* @throws IllegalArgumentException if null is added
|
||||||
*/
|
*/
|
||||||
void addRecipe( IInscriberRecipe recipe );
|
boolean addRecipe( IInscriberRecipe recipe );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Removes all equal recipes from the registry.
|
* Removes all equal recipes from the registry.
|
||||||
*
|
*
|
||||||
* @param toBeRemovedRecipe to be removed recipe, can be null, makes just no sense.
|
* @param toBeRemovedRecipe to be removed recipe, can be null, makes just no sense.
|
||||||
|
*
|
||||||
|
* @return true, when successfully removed
|
||||||
*/
|
*/
|
||||||
void removeRecipe( IInscriberRecipe toBeRemovedRecipe );
|
boolean removeRecipe( IInscriberRecipe toBeRemovedRecipe );
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,13 +24,13 @@
|
|||||||
package appeng.api.features;
|
package appeng.api.features;
|
||||||
|
|
||||||
|
|
||||||
|
import appeng.api.config.TunnelType;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.common.capabilities.Capability;
|
||||||
|
|
||||||
import javax.annotation.Nonnull;
|
import javax.annotation.Nonnull;
|
||||||
import javax.annotation.Nullable;
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
|
||||||
|
|
||||||
import appeng.api.config.TunnelType;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A Registry for how p2p Tunnels are attuned
|
* A Registry for how p2p Tunnels are attuned
|
||||||
@@ -46,8 +46,11 @@ public interface IP2PTunnelRegistry
|
|||||||
* @param type - the type of tunnel. Nullable, but then ignored
|
* @param type - the type of tunnel. Nullable, but then ignored
|
||||||
*/
|
*/
|
||||||
void addNewAttunement( @Nonnull ItemStack trigger, @Nullable TunnelType type );
|
void addNewAttunement( @Nonnull ItemStack trigger, @Nullable TunnelType type );
|
||||||
|
|
||||||
void addNewAttunement( @Nonnull String ModId, @Nullable TunnelType type );
|
void addNewAttunement( @Nonnull String ModId, @Nullable TunnelType type );
|
||||||
|
|
||||||
|
void addNewAttunement( @Nonnull Capability<?> cap, @Nullable TunnelType type );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* returns null if no attunement can be found.
|
* returns null if no attunement can be found.
|
||||||
*
|
*
|
||||||
@@ -55,6 +58,8 @@ public interface IP2PTunnelRegistry
|
|||||||
*
|
*
|
||||||
* @return null if no attunement can be found or attunement
|
* @return null if no attunement can be found or attunement
|
||||||
*/
|
*/
|
||||||
@Nonnull
|
@Nullable
|
||||||
TunnelType getTunnelTypeByItem( ItemStack trigger );
|
TunnelType getTunnelTypeByItem( ItemStack trigger );
|
||||||
|
|
||||||
|
TunnelType registerTunnelType( @Nonnull String enumName, @Nonnull ItemStack partStack );
|
||||||
}
|
}
|
||||||
@@ -48,6 +48,7 @@ public interface IRecipeHandlerRegistry
|
|||||||
* @param name name of crafthandler
|
* @param name name of crafthandler
|
||||||
* @param handler class of crafthandler
|
* @param handler class of crafthandler
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
void addNewCraftHandler( String name, Class<? extends ICraftHandler> handler );
|
void addNewCraftHandler( String name, Class<? extends ICraftHandler> handler );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,11 +66,13 @@ public interface IRecipeHandlerRegistry
|
|||||||
* @return A recipe handler by name, returns null on failure.
|
* @return A recipe handler by name, returns null on failure.
|
||||||
*/
|
*/
|
||||||
@Nullable
|
@Nullable
|
||||||
|
@Deprecated
|
||||||
ICraftHandler getCraftHandlerFor( String name );
|
ICraftHandler getCraftHandlerFor( String name );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a new recipe handler, which can be used to parse, and read recipe files.
|
* @return a new recipe handler, which can be used to parse, and read recipe files.
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
IRecipeHandler createNewRecipehandler();
|
IRecipeHandler createNewRecipehandler();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -34,7 +34,8 @@ import appeng.api.storage.ICellRegistry;
|
|||||||
/**
|
/**
|
||||||
* @author AlgorithmX2
|
* @author AlgorithmX2
|
||||||
* @author thatsIch
|
* @author thatsIch
|
||||||
* @version rv2
|
* @author yueh
|
||||||
|
* @version rv5
|
||||||
* @since rv0
|
* @since rv0
|
||||||
*/
|
*/
|
||||||
@AEInjectable
|
@AEInjectable
|
||||||
@@ -76,6 +77,11 @@ public interface IRegistryContainer
|
|||||||
*/
|
*/
|
||||||
IInscriberRegistry inscriber();
|
IInscriberRegistry inscriber();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Manage charger via API
|
||||||
|
*/
|
||||||
|
IChargerRegistry charger();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get access to the locatable registry
|
* get access to the locatable registry
|
||||||
*/
|
*/
|
||||||
|
|||||||
@@ -28,47 +28,45 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import appeng.api.util.IConfigManager;
|
import appeng.api.util.IConfigManager;
|
||||||
|
import net.minecraftforge.fml.common.network.IGuiHandler;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* A handler for a wireless terminal.
|
* A handler for a wireless terminal.
|
||||||
*/
|
*/
|
||||||
public interface IWirelessTermHandler extends INetworkEncodable
|
public interface IWirelessTermHandler extends INetworkEncodable {
|
||||||
{
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param is wireless terminal
|
* @param is wireless terminal
|
||||||
*
|
* @return true, if usePower, hasPower, etc... can be called for the provided item
|
||||||
* @return true, if usePower, hasPower, etc... can be called for the provided item
|
*/
|
||||||
*/
|
boolean canHandle(ItemStack is);
|
||||||
boolean canHandle( ItemStack is );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* use an amount of power, in AE units
|
* 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
|
* @param amount is in AE units ( 5 per MJ ), if you return false, the item should be dead and return false for
|
||||||
* hasPower
|
* hasPower
|
||||||
* @param is wireless terminal
|
* @param is wireless terminal
|
||||||
*
|
* @return true if wireless terminal uses power
|
||||||
* @return true if wireless terminal uses power
|
*/
|
||||||
*/
|
boolean usePower(EntityPlayer player, double amount, ItemStack is);
|
||||||
boolean usePower( EntityPlayer player, double amount, ItemStack is );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* gets the power status of the item.
|
* gets the power status of the item.
|
||||||
*
|
*
|
||||||
* @param is wireless terminal
|
* @param is wireless terminal
|
||||||
*
|
* @return returns true if there is any power left.
|
||||||
* @return returns true if there is any power left.
|
*/
|
||||||
*/
|
boolean hasPower(EntityPlayer player, double amount, ItemStack is);
|
||||||
boolean hasPower( EntityPlayer player, double amount, ItemStack is );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Return the config manager for the wireless terminal.
|
* Return the config manager for the wireless terminal.
|
||||||
*
|
*
|
||||||
* @param is wireless terminal
|
* @param is wireless terminal
|
||||||
*
|
* @return config manager of wireless terminal
|
||||||
* @return config manager of wireless terminal
|
*/
|
||||||
*/
|
IConfigManager getConfigManager(ItemStack is);
|
||||||
IConfigManager getConfigManager( ItemStack is );
|
|
||||||
|
IGuiHandler getGuiHandler(ItemStack is);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
package appeng.api.implementations;
|
||||||
|
|
||||||
|
public interface IUpgradeableCellContainer {
|
||||||
|
int availableUpgrades();
|
||||||
|
|
||||||
|
void setupUpgrades();
|
||||||
|
}
|
||||||
+11
-9
@@ -21,19 +21,21 @@
|
|||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package appeng.api.client;
|
package appeng.api.implementations;
|
||||||
|
|
||||||
|
|
||||||
import java.util.List;
|
import appeng.api.config.Upgrades;
|
||||||
|
import appeng.api.implementations.tiles.ISegmentedInventory;
|
||||||
import net.minecraft.block.state.IBlockState;
|
import appeng.api.util.IConfigurableObject;
|
||||||
import net.minecraft.client.renderer.block.model.IBakedModel;
|
|
||||||
import net.minecraft.util.EnumFacing;
|
|
||||||
|
|
||||||
|
|
||||||
public interface BakingPipelineElement<F, T>
|
public interface IUpgradeableCellHost extends IConfigurableObject, ISegmentedInventory {
|
||||||
{
|
|
||||||
|
|
||||||
public List<T> pipe( List<F> elements, IBakedModel parent, IBlockState state, EnumFacing side, long rand );
|
/**
|
||||||
|
* 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
|
public interface INetworkTool extends IGuiItemObject
|
||||||
{
|
{
|
||||||
IGridHost getGridHost(); // null for most purposes.
|
IGridHost getGridHost(); // null for most purposes.
|
||||||
|
|
||||||
IItemHandler getInventory();
|
IItemHandler getInventory();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ package appeng.api.implementations.items;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import appeng.api.config.AccessRestriction;
|
import appeng.api.config.AccessRestriction;
|
||||||
|
import appeng.api.config.Actionable;
|
||||||
import appeng.api.networking.energy.IAEPowerStorage;
|
import appeng.api.networking.energy.IAEPowerStorage;
|
||||||
|
|
||||||
|
|
||||||
@@ -42,27 +43,27 @@ public interface IAEItemPowerStorage
|
|||||||
*
|
*
|
||||||
* @return amount unable to be stored
|
* @return amount unable to be stored
|
||||||
*/
|
*/
|
||||||
double injectAEPower( ItemStack is, double amt );
|
double injectAEPower( ItemStack stack, double amount, Actionable mode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Attempt to extract power from the device, it will extract what it can and
|
* Attempt to extract power from the device, it will extract what it can and
|
||||||
* return it.
|
* return it.
|
||||||
*
|
*
|
||||||
* @param amt to be extracted power from device
|
* @param amount to be extracted power from device
|
||||||
*
|
*
|
||||||
* @return what it could extract
|
* @return what it could extract
|
||||||
*/
|
*/
|
||||||
double extractAEPower( ItemStack is, double amt );
|
double extractAEPower( ItemStack stack, double amount, Actionable mode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current maximum power ( this can change :P )
|
* @return the current maximum power ( this can change :P )
|
||||||
*/
|
*/
|
||||||
double getAEMaxPower( ItemStack is );
|
double getAEMaxPower( ItemStack stack );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the current AE Power Level, this may exceed getMEMaxPower()
|
* @return the current AE Power Level, this may exceed getMEMaxPower()
|
||||||
*/
|
*/
|
||||||
double getAECurrentPower( ItemStack is );
|
double getAECurrentPower( ItemStack stack );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Control the power flow by telling what the network can do, either add? or
|
* Control the power flow by telling what the network can do, either add? or
|
||||||
@@ -70,5 +71,5 @@ public interface IAEItemPowerStorage
|
|||||||
*
|
*
|
||||||
* @return access restriction of network
|
* @return access restriction of network
|
||||||
*/
|
*/
|
||||||
AccessRestriction getPowerFlow( ItemStack is );
|
AccessRestriction getPowerFlow( ItemStack stack );
|
||||||
}
|
}
|
||||||
@@ -28,6 +28,8 @@ import net.minecraft.entity.player.EntityPlayer;
|
|||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
import appeng.api.util.AEColor;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Memory Card API
|
* Memory Card API
|
||||||
@@ -41,13 +43,18 @@ public interface IMemoryCard
|
|||||||
* Configures the data stored on the memory card, the SettingsName, will be
|
* Configures the data stored on the memory card, the SettingsName, will be
|
||||||
* localized when displayed.
|
* 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 is item
|
||||||
* @param SettingsName unlocalized string that represents the tile entity.
|
* @param settingsName unlocalized string that represents the tile entity.
|
||||||
* @param data may contain a String called "tooltip" which is is a
|
* @param data the NBT tag, refer to the normal comment for special keys.
|
||||||
* unlocalized string displayed after the settings name, optional
|
|
||||||
* but can be used to add details to the card for later.
|
|
||||||
*/
|
*/
|
||||||
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
|
* returns the settings name provided by a previous call to
|
||||||
@@ -68,6 +75,17 @@ public interface IMemoryCard
|
|||||||
*/
|
*/
|
||||||
NBTTagCompound getData( ItemStack is );
|
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.
|
* notify the user of a outcome related to the memory card.
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -29,6 +29,7 @@ import net.minecraft.item.ItemStack;
|
|||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
import appeng.api.implementations.TransitionResult;
|
import appeng.api.implementations.TransitionResult;
|
||||||
|
import appeng.api.storage.ISpatialDimension;
|
||||||
import appeng.api.util.WorldCoord;
|
import appeng.api.util.WorldCoord;
|
||||||
|
|
||||||
|
|
||||||
@@ -57,7 +58,7 @@ public interface ISpatialStorageCell
|
|||||||
*
|
*
|
||||||
* @return the world for this cell
|
* @return the world for this cell
|
||||||
*/
|
*/
|
||||||
World getWorld( ItemStack is );
|
ISpatialDimension getSpatialDimension();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* get the currently stored size.
|
* get the currently stored size.
|
||||||
@@ -69,22 +70,13 @@ public interface ISpatialStorageCell
|
|||||||
WorldCoord getStoredSize( ItemStack is );
|
WorldCoord getStoredSize( ItemStack is );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Minimum coordinates in its world for the storage cell.
|
* get the currently stored Dimension id.
|
||||||
*
|
*
|
||||||
* @param is spatial storage cell
|
* @param is spatial storage cell
|
||||||
*
|
*
|
||||||
* @return minimum coordinate of dimension
|
* @return dimension id or -1
|
||||||
*/
|
*/
|
||||||
WorldCoord getMin( ItemStack is );
|
int getStoredDimensionID( ItemStack is );
|
||||||
|
|
||||||
/**
|
|
||||||
* Maximum coordinates in its world for the storage cell.
|
|
||||||
*
|
|
||||||
* @param is spatial storage cell
|
|
||||||
*
|
|
||||||
* @return maximum coordinate of dimension
|
|
||||||
*/
|
|
||||||
WorldCoord getMax( ItemStack is );
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Perform a spatial swap with the contents of the cell, and the world.
|
* Perform a spatial swap with the contents of the cell, and the world.
|
||||||
@@ -93,9 +85,9 @@ public interface ISpatialStorageCell
|
|||||||
* @param w world of spatial
|
* @param w world of spatial
|
||||||
* @param min min coord
|
* @param min min coord
|
||||||
* @param max max coord
|
* @param max max coord
|
||||||
* @param doTransition transition
|
* @param playerId owner of current grid or -1
|
||||||
*
|
*
|
||||||
* @return result of transition
|
* @return result of transition
|
||||||
*/
|
*/
|
||||||
TransitionResult doSpatialTransition( ItemStack is, World w, WorldCoord min, WorldCoord max, boolean doTransition );
|
TransitionResult doSpatialTransition( ItemStack is, World w, WorldCoord min, WorldCoord max, int playerId );
|
||||||
}
|
}
|
||||||
@@ -24,10 +24,13 @@
|
|||||||
package appeng.api.implementations.items;
|
package appeng.api.implementations.items;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
import appeng.api.storage.ICellWorkbenchItem;
|
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
|
* 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
|
* @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.
|
* 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
|
* @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
|
* 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
|
* @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
|
* 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
|
* @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
|
* 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.
|
* @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.
|
* @return drain in ae/t this storage cell will use.
|
||||||
*/
|
*/
|
||||||
double getIdleDrain();
|
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
|
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.
|
* 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
|
* @param slot slot index
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
package appeng.api.implementations.tiles;
|
package appeng.api.implementations.tiles;
|
||||||
|
|
||||||
|
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -23,6 +23,7 @@
|
|||||||
|
|
||||||
package appeng.api.implementations.tiles;
|
package appeng.api.implementations.tiles;
|
||||||
|
|
||||||
|
|
||||||
import net.minecraftforge.items.IItemHandler;
|
import net.minecraftforge.items.IItemHandler;
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.networking.events.MENetworkEvent;
|
import appeng.api.networking.events.MENetworkEvent;
|
||||||
import appeng.api.util.IReadOnlyCollection;
|
import appeng.api.util.IReadOnlyCollection;
|
||||||
|
|
||||||
@@ -43,7 +45,8 @@ public interface IGrid
|
|||||||
*
|
*
|
||||||
* @return the IGridCache you requested.
|
* @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.
|
* Post an event into the network event bus.
|
||||||
@@ -52,7 +55,8 @@ public interface IGrid
|
|||||||
*
|
*
|
||||||
* @return returns ev back to original poster
|
* @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.
|
* 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
|
* @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,
|
* 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).
|
* @return IReadOnlyCollection of all available host types (Of Type IGridHost).
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IReadOnlyCollection<Class<? extends IGridHost>> getMachinesClasses();
|
IReadOnlyCollection<Class<? extends IGridHost>> getMachinesClasses();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -78,11 +84,13 @@ public interface IGrid
|
|||||||
*
|
*
|
||||||
* @return IMachineSet of all nodes belonging to hosts of specified class.
|
* @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.
|
* @return IReadOnlyCollection for all nodes on the network, node visitors are preferred.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IReadOnlyCollection<IGridNode> getNodes();
|
IReadOnlyCollection<IGridNode> getNodes();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,5 +101,6 @@ public interface IGrid
|
|||||||
/**
|
/**
|
||||||
* @return the node considered the pivot point of the grid.
|
* @return the node considered the pivot point of the grid.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridNode getPivot();
|
IGridNode getPivot();
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,9 @@ package appeng.api.networking;
|
|||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import net.minecraft.item.ItemStack;
|
import net.minecraft.item.ItemStack;
|
||||||
import net.minecraft.util.EnumFacing;
|
import net.minecraft.util.EnumFacing;
|
||||||
|
|
||||||
@@ -49,6 +52,7 @@ public interface IGridBlock
|
|||||||
*
|
*
|
||||||
* @return ae/t to use.
|
* @return ae/t to use.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getIdlePowerUsage();
|
double getIdlePowerUsage();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -56,10 +60,11 @@ public interface IGridBlock
|
|||||||
*
|
*
|
||||||
* @return Set of flags for this IGridBlock
|
* @return Set of flags for this IGridBlock
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
EnumSet<GridFlags> getFlags();
|
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
|
* represents something that isn't a real connection in the world, but rather one represented internally to the
|
||||||
* block.
|
* block.
|
||||||
*
|
*
|
||||||
@@ -68,37 +73,46 @@ public interface IGridBlock
|
|||||||
boolean isWorldAccessible();
|
boolean isWorldAccessible();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* Must not return when {@link #isWorldAccessible()} is true.
|
||||||
|
* Otherwise the behavior is unspecified.
|
||||||
|
*
|
||||||
* @return current location of this node
|
* @return current location of this node
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
DimensionalCoord getLocation();
|
DimensionalCoord getLocation();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return Transparent, or a valid color, NULL IS NOT A VALID RETURN
|
* @return Transparent, or a valid color, NULL IS NOT A VALID RETURN
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
AEColor getGridColor();
|
AEColor getGridColor();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Notifies your IGridBlock that changes were made to your connections
|
* 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,
|
* Update Blocks network/connection/booting status. grid,
|
||||||
*
|
*
|
||||||
* @param grid grid
|
* @param grid grid
|
||||||
* @param channelsInUse used channels
|
* @param channelsInUse used channels
|
||||||
|
* @deprecated to be removed in rv7
|
||||||
*/
|
*/
|
||||||
|
@Deprecated
|
||||||
void setNetworkStatus( IGrid grid, int channelsInUse );
|
void setNetworkStatus( IGrid grid, int channelsInUse );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Determine which sides of the block can be connected too, only used when isWorldAccessible returns true, not used
|
* Determine which sides of the block can be connected too, only used when isWorldAccessible returns true, not used
|
||||||
* for {@link IPart} implementations.
|
* for {@link IPart} implementations.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
EnumSet<EnumFacing> getConnectableSides();
|
EnumSet<EnumFacing> getConnectableSides();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the IGridHost for the node, this will be an IGridPart or a TileEntity generally speaking.
|
* @return the IGridHost for the node, this will be an IGridPart or a TileEntity generally speaking.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridHost getMachine();
|
IGridHost getMachine();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -109,7 +123,8 @@ public interface IGridBlock
|
|||||||
/**
|
/**
|
||||||
* Determines what item stack is used to render this node in the GUI.
|
* 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();
|
ItemStack getMachineRepresentation();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Allows you to create a network wise service, AE2 uses these for providing
|
* Allows you to create a network wise service, AE2 uses these for providing
|
||||||
* item, spatial, and tunnel services.
|
* item, spatial, and tunnel services.
|
||||||
@@ -50,7 +53,7 @@ public interface IGridCache
|
|||||||
* @param gridNode removed from that grid
|
* @param gridNode removed from that grid
|
||||||
* @param machine to be removed machine
|
* @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.
|
* 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 gridNode added to grid node
|
||||||
* @param machine to be added machine
|
* @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
|
* 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
|
* @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
|
* 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
|
* @param sourceStorage old storage
|
||||||
*/
|
*/
|
||||||
void onJoin( IGridStorage sourceStorage );
|
void onJoin( @Nonnull IGridStorage sourceStorage );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when saving changes,
|
* Called when saving changes,
|
||||||
*
|
*
|
||||||
* @param destinationStorage storage
|
* @param destinationStorage storage
|
||||||
*/
|
*/
|
||||||
void populateGridStorage( IGridStorage destinationStorage );
|
void populateGridStorage( @Nonnull IGridStorage destinationStorage );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,9 @@
|
|||||||
package appeng.api.networking;
|
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
|
* @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
|
* requests a new INSTANCE of a grid cache for use, used internally
|
||||||
*
|
*
|
||||||
* @param grid grid
|
* @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;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.util.AEPartLocation;
|
import appeng.api.util.AEPartLocation;
|
||||||
|
|
||||||
|
|
||||||
@@ -45,6 +47,7 @@ public interface IGridConnection
|
|||||||
*
|
*
|
||||||
* @return the IGridNode which represents the opposite side of the connection.
|
* @return the IGridNode which represents the opposite side of the connection.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridNode getOtherSide( IGridNode gridNode );
|
IGridNode getOtherSide( IGridNode gridNode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -54,6 +57,7 @@ public interface IGridConnection
|
|||||||
*
|
*
|
||||||
* @return the direction of the connection, only valid for in world connections.
|
* @return the direction of the connection, only valid for in world connections.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
AEPartLocation getDirection( IGridNode gridNode );
|
AEPartLocation getDirection( IGridNode gridNode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -65,11 +69,13 @@ public interface IGridConnection
|
|||||||
/**
|
/**
|
||||||
* @return node A
|
* @return node A
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridNode a();
|
IGridNode a();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return node B
|
* @return node B
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridNode b();
|
IGridNode b();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
public interface IGridConnectionVisitor extends IGridVisitor
|
public interface IGridConnectionVisitor extends IGridVisitor
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -32,5 +35,5 @@ public interface IGridConnectionVisitor extends IGridVisitor
|
|||||||
*
|
*
|
||||||
* @param n the connection.
|
* @param n the connection.
|
||||||
*/
|
*/
|
||||||
void visitConnection( IGridConnection n );
|
void visitConnection( @Nonnull IGridConnection n );
|
||||||
}
|
}
|
||||||
|
|||||||
+27
-18
@@ -1,7 +1,7 @@
|
|||||||
/*
|
/*
|
||||||
* The MIT License (MIT)
|
* The MIT License (MIT)
|
||||||
*
|
*
|
||||||
* Copyright (c) 2013 AlgorithmX2
|
* Copyright (c) 2017 AlgorithmX2
|
||||||
*
|
*
|
||||||
* Permission is hereby granted, free of charge, to any person obtaining a copy of
|
* 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
|
* this software and associated documentation files (the "Software"), to deal in
|
||||||
@@ -21,39 +21,48 @@
|
|||||||
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
* CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
package appeng.api.storage.data;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.features.IItemComparison;
|
import appeng.api.exceptions.FailedConnectionException;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Don't cast this... either compare with it, or copy it.
|
* A helper responsible for creating new {@link IGridNode}, {@link IGridConnection} or potentially similar tasks.
|
||||||
*
|
*
|
||||||
* Don't Implement.
|
* @author yueh
|
||||||
|
* @version rv5
|
||||||
|
* @since rv5
|
||||||
*/
|
*/
|
||||||
public interface IAETagCompound
|
public interface IGridHelper
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a copy ( the copy will not be a IAETagCompound, it will be a NBTTagCompound )
|
* 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.
|
||||||
|
*
|
||||||
|
* @param block grid block
|
||||||
|
*
|
||||||
|
* @return grid node of block
|
||||||
*/
|
*/
|
||||||
NBTTagCompound getNBTTagCompoundCopy();
|
@Nonnull
|
||||||
|
IGridNode createGridNode( @Nonnull IGridBlock block );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* compare to other NBTTagCompounds or IAETagCompounds
|
* Create a direct connection between two {@link IGridNode}.
|
||||||
*
|
*
|
||||||
* @param a compared object
|
* This will be considered as having a distance of 1, regardless of the location of both nodes.
|
||||||
*
|
*
|
||||||
* @return true, if they are the same.
|
* @param a to be connected gridnode
|
||||||
|
* @param b to be connected gridnode
|
||||||
|
*
|
||||||
|
* @throws appeng.api.exceptions.FailedConnectionException
|
||||||
*/
|
*/
|
||||||
@Override
|
@Nonnull
|
||||||
boolean equals( Object a );
|
IGridConnection createGridConnection( @Nonnull IGridNode a, @Nonnull IGridNode b ) throws FailedConnectionException;
|
||||||
|
|
||||||
/**
|
|
||||||
* @return the special comparison for this tag
|
|
||||||
*/
|
|
||||||
IItemComparison getSpecialComparison();
|
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
import net.minecraft.tileentity.TileEntity;
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
import appeng.api.parts.IPart;
|
import appeng.api.parts.IPart;
|
||||||
@@ -49,7 +52,8 @@ public interface IGridHost
|
|||||||
* @return a new IGridNode, create these with
|
* @return a new IGridNode, create these with
|
||||||
* AEApi.INSTANCE().createGridNode( MyIGridBlock )
|
* 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
|
* Determines how cables render when they connect to this block. Priority is
|
||||||
@@ -57,7 +61,8 @@ public interface IGridHost
|
|||||||
*
|
*
|
||||||
* @param dir direction
|
* @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.
|
* 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 java.util.Iterator;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* An extension of IGridBlock, only means something when your getFlags() contains REQUIRE_CHANNEL, when done properly it
|
* 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. )
|
* @return an iterator that will iterate all the nodes for the multiblock. ( read-only iterator expected. )
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
Iterator<IGridNode> getMultiblockNodes();
|
Iterator<IGridNode> getMultiblockNodes();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ package appeng.api.networking;
|
|||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
import net.minecraft.world.World;
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
@@ -50,7 +52,7 @@ public interface IGridNode
|
|||||||
*
|
*
|
||||||
* @param visitor visitor
|
* @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.
|
* 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
|
* @return grid host
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridHost getMachine();
|
IGridHost getMachine();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -75,6 +78,7 @@ public interface IGridNode
|
|||||||
*
|
*
|
||||||
* @return grid
|
* @return grid
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGrid getGrid();
|
IGrid getGrid();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -86,11 +90,13 @@ public interface IGridNode
|
|||||||
/**
|
/**
|
||||||
* @return the world the node is located in
|
* @return the world the node is located in
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
World getWorld();
|
World getWorld();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return a set of the connected sides, INTERNAL represents an invisible connection
|
* @return a set of the connected sides, INTERNAL represents an invisible connection
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
EnumSet<AEPartLocation> getConnectedSides();
|
EnumSet<AEPartLocation> getConnectedSides();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -98,11 +104,13 @@ public interface IGridNode
|
|||||||
*
|
*
|
||||||
* @return grid connections
|
* @return grid connections
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IReadOnlyCollection<IGridConnection> getConnections();
|
IReadOnlyCollection<IGridConnection> getConnections();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the IGridBlock for this node
|
* @return the IGridBlock for this node
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridBlock getGridBlock();
|
IGridBlock getGridBlock();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -122,7 +130,7 @@ public interface IGridNode
|
|||||||
* @param name nbt name
|
* @param name nbt name
|
||||||
* @param nodeData to be loaded data
|
* @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
|
* 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 name nbt name
|
||||||
* @param nodeData to be saved data
|
* @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
|
* @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
|
* @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.
|
* @return the ownerID this represents the person who placed the node.
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import net.minecraft.nbt.NBTTagCompound;
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
|
||||||
@@ -33,6 +35,7 @@ public interface IGridStorage
|
|||||||
/**
|
/**
|
||||||
* @return an NBTTagCompound that can be read, and written too.
|
* @return an NBTTagCompound that can be read, and written too.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
NBTTagCompound dataObject();
|
NBTTagCompound dataObject();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Simple Visitor pattern access to network nodes.
|
* Simple Visitor pattern access to network nodes.
|
||||||
*/
|
*/
|
||||||
@@ -39,5 +42,5 @@ public interface IGridVisitor
|
|||||||
*
|
*
|
||||||
* @return true to continue visiting nodes beyond this node.
|
* @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;
|
package appeng.api.networking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.util.IReadOnlyCollection;
|
import appeng.api.util.IReadOnlyCollection;
|
||||||
|
|
||||||
|
|
||||||
@@ -33,5 +35,6 @@ public interface IMachineSet extends IReadOnlyCollection<IGridNode>
|
|||||||
/**
|
/**
|
||||||
* @return the machine class for this set.
|
* @return the machine class for this set.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
Class<? extends IGridHost> getMachineClass();
|
Class<? extends IGridHost> getMachineClass();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,10 +24,12 @@
|
|||||||
package appeng.api.networking.crafting;
|
package appeng.api.networking.crafting;
|
||||||
|
|
||||||
|
|
||||||
import appeng.api.networking.security.BaseActionSource;
|
import appeng.api.networking.security.IActionSource;
|
||||||
import appeng.api.networking.storage.IBaseMonitor;
|
import appeng.api.networking.storage.IBaseMonitor;
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
|
|
||||||
|
import javax.annotation.Nullable;
|
||||||
|
|
||||||
|
|
||||||
public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
||||||
{
|
{
|
||||||
@@ -40,7 +42,7 @@ public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
|||||||
/**
|
/**
|
||||||
* @return the action source for the CPU.
|
* @return the action source for the CPU.
|
||||||
*/
|
*/
|
||||||
BaseActionSource getActionSource();
|
IActionSource getActionSource();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the available storage in bytes
|
* @return the available storage in bytes
|
||||||
@@ -56,4 +58,30 @@ public interface ICraftingCPU extends IBaseMonitor<IAEItemStack>
|
|||||||
* @return an empty string or the name of the cpu.
|
* @return an empty string or the name of the cpu.
|
||||||
*/
|
*/
|
||||||
String getName();
|
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;
|
package appeng.api.networking.crafting;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
public interface ICraftingCallback
|
public interface ICraftingCallback
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -32,5 +35,5 @@ public interface ICraftingCallback
|
|||||||
*
|
*
|
||||||
* @param job - final job
|
* @param job - final job
|
||||||
*/
|
*/
|
||||||
void calculationComplete( ICraftingJob job );
|
void calculationComplete( @Nonnull ICraftingJob job );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -33,7 +33,7 @@ import net.minecraft.world.World;
|
|||||||
|
|
||||||
import appeng.api.networking.IGrid;
|
import appeng.api.networking.IGrid;
|
||||||
import appeng.api.networking.IGridCache;
|
import appeng.api.networking.IGridCache;
|
||||||
import appeng.api.networking.security.BaseActionSource;
|
import appeng.api.networking.security.IActionSource;
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
|
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ public interface ICraftingGrid extends IGridCache
|
|||||||
* @return a future which will at an undetermined point in the future get you the {@link ICraftingJob} do not wait
|
* @return a future which will at an undetermined point in the future get you the {@link ICraftingJob} do not wait
|
||||||
* on this, your be waiting forever.
|
* on this, your be waiting forever.
|
||||||
*/
|
*/
|
||||||
Future<ICraftingJob> beginCraftingJob( World world, IGrid grid, BaseActionSource actionSrc, IAEItemStack craftWhat, ICraftingCallback callback );
|
Future<ICraftingJob> beginCraftingJob( World world, IGrid grid, IActionSource actionSrc, IAEItemStack craftWhat, ICraftingCallback callback );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Submit the job to the Crafting system for processing.
|
* Submit the job to the Crafting system for processing.
|
||||||
@@ -82,7 +82,7 @@ public interface ICraftingGrid extends IGridCache
|
|||||||
* {@link ICraftingRequester} methods. if you send null, this object should be discarded after verifying the
|
* {@link ICraftingRequester} methods. if you send null, this object should be discarded after verifying the
|
||||||
* return state.
|
* return state.
|
||||||
*/
|
*/
|
||||||
ICraftingLink submitJob( ICraftingJob job, ICraftingRequester requestingMachine, ICraftingCPU target, boolean prioritizePower, BaseActionSource src );
|
ICraftingLink submitJob( ICraftingJob job, ICraftingRequester requestingMachine, ICraftingCPU target, boolean prioritizePower, IActionSource src );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return list of all the crafting cpus on the grid
|
* @return list of all the crafting cpus on the grid
|
||||||
@@ -99,9 +99,18 @@ public interface ICraftingGrid extends IGridCache
|
|||||||
/**
|
/**
|
||||||
* is this item being crafted?
|
* is this item being crafted?
|
||||||
*
|
*
|
||||||
* @param aeStackInSlot item being crafted
|
* @param what item being crafted
|
||||||
*
|
*
|
||||||
* @return true if it is being crafting
|
* @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.implementations.ICraftingPatternItem;
|
||||||
import appeng.api.storage.data.IAEItemStack;
|
import appeng.api.storage.data.IAEItemStack;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* do not implement provided by {@link ICraftingPatternItem}
|
* do not implement provided by {@link ICraftingPatternItem}
|
||||||
@@ -74,6 +77,14 @@ public interface ICraftingPatternDetails
|
|||||||
*/
|
*/
|
||||||
IAEItemStack[] getCondensedOutputs();
|
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.
|
* @return a list of the outputs, will include nulls.
|
||||||
*/
|
*/
|
||||||
@@ -84,6 +95,11 @@ public interface ICraftingPatternDetails
|
|||||||
*/
|
*/
|
||||||
boolean canSubstitute();
|
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.
|
* 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;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.config.AccessRestriction;
|
import appeng.api.config.AccessRestriction;
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
|
|
||||||
@@ -42,7 +44,7 @@ public interface IAEPowerStorage extends IEnergySource
|
|||||||
*
|
*
|
||||||
* @return amount of power which was unable to be stored
|
* @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 )
|
* @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
|
* @return access restriction what the network can do
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
AccessRestriction getPowerFlow();
|
AccessRestriction getPowerFlow();
|
||||||
}
|
}
|
||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking.energy;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
import appeng.api.networking.IGridCache;
|
import appeng.api.networking.IGridCache;
|
||||||
import appeng.api.networking.events.MENetworkPowerStatusChange;
|
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.
|
* @return the current calculated idle energy drain each tick, is used internally to drain power for each tick.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getIdlePowerUsage();
|
double getIdlePowerUsage();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the average power drain over the past 10 ticks, includes idle usage during this time, and all use of
|
* @return the average power drain over the past 10 ticks, includes idle usage during this time, and all use of
|
||||||
* extractPower.
|
* extractPower.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getAvgPowerUsage();
|
double getAvgPowerUsage();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return the average energy injected into the system per tick, for the last 10 ticks.
|
* @return the average energy injected into the system per tick, for the last 10 ticks.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getAvgPowerInjection();
|
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.
|
* @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.
|
* this is should be considered an estimate, and not relied upon for real calculations.
|
||||||
*
|
*
|
||||||
* @return estimated available power.
|
* @return estimated available power.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getStoredPower();
|
double getStoredPower();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -93,6 +101,7 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
|||||||
*
|
*
|
||||||
* @return estimated available power.
|
* @return estimated available power.
|
||||||
*/
|
*/
|
||||||
|
@Nonnegative
|
||||||
double getMaxStoredPower();
|
double getMaxStoredPower();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -101,5 +110,6 @@ public interface IEnergyGrid extends IGridCache, IEnergySource, IEnergyGridProvi
|
|||||||
*
|
*
|
||||||
* @return Amount of power required to charge the grid, in AE.
|
* @return Amount of power required to charge the grid, in AE.
|
||||||
*/
|
*/
|
||||||
double getEnergyDemand( double maxRequired );
|
@Nonnegative
|
||||||
|
double getEnergyDemand( @Nonnegative double maxRequired );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,7 +24,10 @@
|
|||||||
package appeng.api.networking.energy;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
import java.util.Set;
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
|
|
||||||
@@ -35,17 +38,91 @@ import appeng.api.config.Actionable;
|
|||||||
public interface IEnergyGridProvider
|
public interface IEnergyGridProvider
|
||||||
{
|
{
|
||||||
/**
|
/**
|
||||||
|
* internal use only
|
||||||
|
*
|
||||||
|
* Can return a list of providers behind the current.
|
||||||
|
*
|
||||||
|
* An example would be something acting as proxy between different {@link IEnergyGrid}s.
|
||||||
|
*
|
||||||
|
* This can contain duplicate entries, AE will ensure that each provider is only visited once.
|
||||||
|
*
|
||||||
* internal use only
|
* internal use only
|
||||||
*/
|
*/
|
||||||
double extractAEPower( double amt, Actionable mode, Set<IEnergyGrid> seen );
|
@Nonnull
|
||||||
|
Collection<IEnergyGridProvider> providers();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* internal use only
|
* internal use only
|
||||||
|
*
|
||||||
|
* Extracts the requested amount from the provider.
|
||||||
|
*
|
||||||
|
* This should never forward a call to another {@link IEnergyGridProvider}, instead return them via
|
||||||
|
* {@link IEnergyGridProvider#providers()}
|
||||||
|
*
|
||||||
|
* @return the used amount
|
||||||
*/
|
*/
|
||||||
double injectAEPower( double amt, Actionable mode, Set<IEnergyGrid> seen );
|
@Nonnegative
|
||||||
|
double extractProviderPower( @Nonnegative double amt, @Nonnull Actionable mode );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Injects the offered amount into the provider.
|
||||||
|
*
|
||||||
|
* This should never forward a call to another {@link IEnergyGridProvider}, instead return them via
|
||||||
|
* {@link IEnergyGridProvider#providers()}
|
||||||
|
*
|
||||||
|
* internal use only
|
||||||
|
*
|
||||||
|
* @return the leftover amount
|
||||||
|
*/
|
||||||
|
@Nonnegative
|
||||||
|
double injectProviderPower( @Nonnegative double amt, @Nonnull Actionable mode );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* internal use only
|
* internal use only
|
||||||
|
*
|
||||||
|
* Returns the current demand of an provider.
|
||||||
|
*
|
||||||
|
* This should never forward a call to another {@link IEnergyGridProvider}, instead return them via
|
||||||
|
* {@link IEnergyGridProvider#providers()}
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* @param d the max amount offered, the demand should never exceed it.
|
||||||
|
* @return the total amount demanded
|
||||||
*/
|
*/
|
||||||
double getEnergyDemand( double d, Set<IEnergyGrid> seen );
|
@Nonnegative
|
||||||
|
double getProviderEnergyDemand( @Nonnegative double d );
|
||||||
|
|
||||||
|
/**
|
||||||
|
* internal use only
|
||||||
|
*
|
||||||
|
* AE currently uses this to enqueue the next visited provider.
|
||||||
|
*
|
||||||
|
* There is no guarantee that this works on in a perfect way.
|
||||||
|
* It can be limited to the returns of the past {@link IEnergyGridProvider#providers()}, but not any future one
|
||||||
|
* discovered by visiting further providers.
|
||||||
|
*
|
||||||
|
* E.g. inject into the the lowest one first or extract from the highest one.
|
||||||
|
*
|
||||||
|
* @return the current stored amount.
|
||||||
|
*
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
@Nonnegative
|
||||||
|
double getProviderStoredEnergy();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* internal use only
|
||||||
|
*
|
||||||
|
* AE currently uses this to enqueue the next visited provider.
|
||||||
|
*
|
||||||
|
* There is no guarantee that this works on in a perfect way.
|
||||||
|
* It can be limited to the returns of the past {@link IEnergyGridProvider#providers()}, but not any future one
|
||||||
|
* discovered by visiting further providers.
|
||||||
|
*
|
||||||
|
* E.g. inject into the the lowest one first or extract from the highest one.
|
||||||
|
*
|
||||||
|
* @return the maximum amount stored.
|
||||||
|
*/
|
||||||
|
@Nonnegative
|
||||||
|
double getProviderMaxEnergy();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking.energy;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.config.Actionable;
|
import appeng.api.config.Actionable;
|
||||||
import appeng.api.config.PowerMultiplier;
|
import appeng.api.config.PowerMultiplier;
|
||||||
|
|
||||||
@@ -39,5 +42,6 @@ public interface IEnergySource
|
|||||||
*
|
*
|
||||||
* @return returns extracted power.
|
* @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;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* DO NOT IMPLEMENT.
|
* DO NOT IMPLEMENT.
|
||||||
*
|
*
|
||||||
@@ -39,7 +42,7 @@ public interface IEnergyWatcher
|
|||||||
* @param amount
|
* @param amount
|
||||||
* @return true, if successfully added.
|
* @return true, if successfully added.
|
||||||
*/
|
*/
|
||||||
boolean add( double amount );
|
boolean add( @Nonnegative double amount );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Remove a specific threshold from the watcher.
|
* Remove a specific threshold from the watcher.
|
||||||
@@ -47,7 +50,7 @@ public interface IEnergyWatcher
|
|||||||
* @param amount
|
* @param amount
|
||||||
* @return true, if successfully removed.
|
* @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.
|
* Removes all thresholds and resets the watcher to a clean state.
|
||||||
|
|||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking.energy;
|
package appeng.api.networking.energy;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
|
||||||
public interface IEnergyWatcherHost
|
public interface IEnergyWatcherHost
|
||||||
{
|
{
|
||||||
|
|
||||||
@@ -33,12 +36,12 @@ public interface IEnergyWatcherHost
|
|||||||
*
|
*
|
||||||
* @param newWatcher new watcher
|
* @param newWatcher new watcher
|
||||||
*/
|
*/
|
||||||
void updateWatcher( IEnergyWatcher newWatcher );
|
void updateWatcher( @Nonnull IEnergyWatcher newWatcher );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Called when a threshold is crossed.
|
* Called when a threshold is crossed.
|
||||||
*
|
*
|
||||||
* @param energyGrid grid
|
* @param energyGrid grid
|
||||||
*/
|
*/
|
||||||
void onThresholdPass( IEnergyGrid energyGrid );
|
void onThresholdPass( @Nonnull IEnergyGrid energyGrid );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -25,7 +25,7 @@ package appeng.api.networking.events;
|
|||||||
|
|
||||||
|
|
||||||
import appeng.api.storage.IMEMonitor;
|
import appeng.api.storage.IMEMonitor;
|
||||||
import appeng.api.storage.StorageChannel;
|
import appeng.api.storage.IStorageChannel;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -40,9 +40,9 @@ public class MENetworkStorageEvent extends MENetworkEvent
|
|||||||
{
|
{
|
||||||
|
|
||||||
public final IMEMonitor monitor;
|
public final IMEMonitor monitor;
|
||||||
public final StorageChannel channel;
|
public final IStorageChannel channel;
|
||||||
|
|
||||||
public MENetworkStorageEvent( final IMEMonitor o, final StorageChannel chan )
|
public MENetworkStorageEvent( final IMEMonitor o, final IStorageChannel chan )
|
||||||
{
|
{
|
||||||
this.monitor = o;
|
this.monitor = o;
|
||||||
this.channel = chan;
|
this.channel = chan;
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
package appeng.api.networking.pathing;
|
package appeng.api.networking.pathing;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.networking.IGridCache;
|
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
|
* @return the controller state of the network, useful if you want to
|
||||||
* require a controller for a feature.
|
* require a controller for a feature.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
ControllerState getControllerState();
|
ControllerState getControllerState();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,11 +24,12 @@
|
|||||||
package appeng.api.networking.security;
|
package appeng.api.networking.security;
|
||||||
|
|
||||||
|
|
||||||
import appeng.api.networking.IGridHost;
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
|
|
||||||
|
|
||||||
public interface IActionHost extends IGridHost
|
public interface IActionHost
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -39,5 +40,6 @@ public interface IActionHost extends IGridHost
|
|||||||
* @return the the gridnode that actions from this IGridHost are preformed
|
* @return the the gridnode that actions from this IGridHost are preformed
|
||||||
* by.
|
* by.
|
||||||
*/
|
*/
|
||||||
|
@Nonnull
|
||||||
IGridNode getActionableNode();
|
IGridNode getActionableNode();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -0,0 +1,77 @@
|
|||||||
|
/*
|
||||||
|
* 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.networking.security;
|
||||||
|
|
||||||
|
|
||||||
|
import java.util.Optional;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The source of any action.
|
||||||
|
*
|
||||||
|
* This can either be a {@link EntityPlayer} or an {@link IActionHost}.
|
||||||
|
*
|
||||||
|
* In most cases this is used for security checks, but can be used to validate the source itself.
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
public interface IActionSource
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If present, AE will consider the player being the source for the action.
|
||||||
|
*
|
||||||
|
* This will take precedence over {@link IActionSource#machine()} in any case.
|
||||||
|
*
|
||||||
|
* @return An optional player issuing the action.
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
Optional<EntityPlayer> player();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* If present, it indicates the {@link IActionHost} of the source.
|
||||||
|
*
|
||||||
|
* Should {@link IActionSource#player()} be absent, it will consider a machine as source.
|
||||||
|
*
|
||||||
|
* It is recommended to include the machine even when a player is present.
|
||||||
|
*
|
||||||
|
* @return An optional machine issuing the action or acting as proxy for a player.
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
Optional<IActionHost> machine();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* An {@link IActionSource} can have multiple optional contexts.
|
||||||
|
*
|
||||||
|
* It is strongly recommended to limit the uses for absolutely necessary cases.
|
||||||
|
*
|
||||||
|
* Currently there are no public contexts made available by AE.
|
||||||
|
* An example would be the context interfaces use internally to avoid looping items between each other.
|
||||||
|
*/
|
||||||
|
@Nonnull
|
||||||
|
<T> Optional<T> context( @Nonnull Class<T> key );
|
||||||
|
}
|
||||||
@@ -24,6 +24,9 @@
|
|||||||
package appeng.api.networking.security;
|
package appeng.api.networking.security;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnegative;
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
import appeng.api.config.SecurityPermissions;
|
import appeng.api.config.SecurityPermissions;
|
||||||
@@ -46,7 +49,7 @@ public interface ISecurityGrid extends IGridCache
|
|||||||
*
|
*
|
||||||
* @return true if the player has permissions.
|
* @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.
|
* Check if a player has permissions.
|
||||||
@@ -56,7 +59,7 @@ public interface ISecurityGrid extends IGridCache
|
|||||||
*
|
*
|
||||||
* @return true if the player has permissions.
|
* @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.
|
* @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.EnumSet;
|
||||||
import java.util.HashMap;
|
import java.util.Map;
|
||||||
|
|
||||||
import appeng.api.config.SecurityPermissions;
|
import appeng.api.config.SecurityPermissions;
|
||||||
|
|
||||||
@@ -48,7 +48,7 @@ public interface ISecurityProvider
|
|||||||
*
|
*
|
||||||
* @param playerPerms player permissions
|
* @param playerPerms player permissions
|
||||||
*/
|
*/
|
||||||
void readPermissions( HashMap<Integer, EnumSet<SecurityPermissions>> playerPerms );
|
void readPermissions( Map<Integer, EnumSet<SecurityPermissions>> playerPerms );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return is security on or off?
|
* @return is security on or off?
|
||||||
|
|||||||
@@ -26,6 +26,8 @@ package appeng.api.networking.security;
|
|||||||
|
|
||||||
import java.util.EnumSet;
|
import java.util.EnumSet;
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.config.SecurityPermissions;
|
import appeng.api.config.SecurityPermissions;
|
||||||
|
|
||||||
|
|
||||||
@@ -41,5 +43,5 @@ public interface ISecurityRegistry
|
|||||||
* @param playerID player id
|
* @param playerID player id
|
||||||
* @param permissions permissions of player
|
* @param permissions permissions of player
|
||||||
*/
|
*/
|
||||||
void addPlayer( int playerID, EnumSet<SecurityPermissions> permissions );
|
void addPlayer( int playerID, @Nonnull EnumSet<SecurityPermissions> permissions );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,49 +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.networking.security;
|
|
||||||
|
|
||||||
|
|
||||||
import net.minecraft.entity.player.EntityPlayer;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* TODO: Consider refactoring.
|
|
||||||
*/
|
|
||||||
public class PlayerSource extends BaseActionSource
|
|
||||||
{
|
|
||||||
|
|
||||||
public final EntityPlayer player;
|
|
||||||
public final IActionHost via;
|
|
||||||
|
|
||||||
public PlayerSource( final EntityPlayer p, final IActionHost v )
|
|
||||||
{
|
|
||||||
this.player = p;
|
|
||||||
this.via = v;
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public boolean isPlayer()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -28,7 +28,7 @@ import appeng.api.storage.IMEMonitorHandlerReceiver;
|
|||||||
import appeng.api.storage.data.IAEStack;
|
import appeng.api.storage.data.IAEStack;
|
||||||
|
|
||||||
|
|
||||||
public interface IBaseMonitor<T extends IAEStack>
|
public interface IBaseMonitor<T extends IAEStack<T>>
|
||||||
{
|
{
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -24,8 +24,8 @@
|
|||||||
package appeng.api.networking.storage;
|
package appeng.api.networking.storage;
|
||||||
|
|
||||||
|
|
||||||
import appeng.api.networking.security.BaseActionSource;
|
import appeng.api.networking.security.IActionSource;
|
||||||
import appeng.api.storage.StorageChannel;
|
import appeng.api.storage.IStorageChannel;
|
||||||
import appeng.api.storage.data.IAEStack;
|
import appeng.api.storage.data.IAEStack;
|
||||||
import appeng.api.storage.data.IItemList;
|
import appeng.api.storage.data.IItemList;
|
||||||
|
|
||||||
@@ -44,11 +44,8 @@ public interface IStackWatcherHost
|
|||||||
/**
|
/**
|
||||||
* Called when a watched item changes amounts.
|
* Called when a watched item changes amounts.
|
||||||
*
|
*
|
||||||
* @param o changed item list
|
|
||||||
* @param fullStack old stack
|
|
||||||
* @param diffStack new stack
|
* @param diffStack new stack
|
||||||
* @param src action source
|
|
||||||
* @param chan storage channel
|
* @param chan storage channel
|
||||||
*/
|
*/
|
||||||
void onStackChange( IItemList o, IAEStack fullStack, IAEStack diffStack, BaseActionSource src, StorageChannel chan );
|
void onStackChange( IItemList<?> o, IAEStack<?> fullStack, IAEStack<?> diffStack, IActionSource src, IStorageChannel<?> chan );
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,11 +26,11 @@ package appeng.api.networking.storage;
|
|||||||
|
|
||||||
import appeng.api.networking.IGridCache;
|
import appeng.api.networking.IGridCache;
|
||||||
import appeng.api.networking.IGridHost;
|
import appeng.api.networking.IGridHost;
|
||||||
import appeng.api.networking.security.BaseActionSource;
|
import appeng.api.networking.security.IActionSource;
|
||||||
import appeng.api.storage.ICellContainer;
|
import appeng.api.storage.ICellContainer;
|
||||||
import appeng.api.storage.ICellProvider;
|
import appeng.api.storage.ICellProvider;
|
||||||
|
import appeng.api.storage.IStorageChannel;
|
||||||
import appeng.api.storage.IStorageMonitorable;
|
import appeng.api.storage.IStorageMonitorable;
|
||||||
import appeng.api.storage.StorageChannel;
|
|
||||||
import appeng.api.storage.data.IAEStack;
|
import appeng.api.storage.data.IAEStack;
|
||||||
|
|
||||||
|
|
||||||
@@ -50,7 +50,8 @@ public interface IStorageGrid extends IGridCache, IStorageMonitorable
|
|||||||
*
|
*
|
||||||
* @param input injected items
|
* @param input injected items
|
||||||
*/
|
*/
|
||||||
void postAlterationOfStoredItems( StorageChannel chan, Iterable<? extends IAEStack> input, BaseActionSource src );
|
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
|
* Used to add a cell provider to the storage system
|
||||||
|
|||||||
@@ -24,6 +24,8 @@
|
|||||||
package appeng.api.networking.ticking;
|
package appeng.api.networking.ticking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.networking.IGridNode;
|
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
|
* Return a valid TickingRequest to tell AE a guide for which type of
|
||||||
* you can return a valid TickingRequest to tell AE a guide for which type
|
* responsiveness your device wants.
|
||||||
* 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
|
* 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
|
* to preserve your sleep, in the result of this method. or you can simply
|
||||||
* reset it.
|
* 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
|
* 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.
|
* 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
|
* tick, you can use this to adjust speed of processing or adjust
|
||||||
* your tick rate.
|
* your tick rate.
|
||||||
*
|
*
|
||||||
* @return tick rate adjustment.
|
* @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;
|
package appeng.api.networking.ticking;
|
||||||
|
|
||||||
|
|
||||||
|
import javax.annotation.Nonnull;
|
||||||
|
|
||||||
import appeng.api.networking.IGridCache;
|
import appeng.api.networking.IGridCache;
|
||||||
import appeng.api.networking.IGridNode;
|
import appeng.api.networking.IGridNode;
|
||||||
|
|
||||||
@@ -42,7 +44,7 @@ public interface ITickManager extends IGridCache
|
|||||||
*
|
*
|
||||||
* @param node gridnode
|
* @param node gridnode
|
||||||
*/
|
*/
|
||||||
boolean alertDevice( IGridNode node );
|
boolean alertDevice( @Nonnull IGridNode node );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* disables ticking for your device.
|
* disables ticking for your device.
|
||||||
@@ -51,7 +53,7 @@ public interface ITickManager extends IGridCache
|
|||||||
*
|
*
|
||||||
* @return if the call was successful.
|
* @return if the call was successful.
|
||||||
*/
|
*/
|
||||||
boolean sleepDevice( IGridNode node );
|
boolean sleepDevice( @Nonnull IGridNode node );
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* enables ticking for your device, undoes a sleepDevice call.
|
* enables ticking for your device, undoes a sleepDevice call.
|
||||||
@@ -60,5 +62,5 @@ public interface ITickManager extends IGridCache
|
|||||||
*
|
*
|
||||||
* @return if the call was successful.
|
* @return if the call was successful.
|
||||||
*/
|
*/
|
||||||
boolean wakeDevice( IGridNode node );
|
boolean wakeDevice( @Nonnull IGridNode node );
|
||||||
}
|
}
|
||||||
|
|||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user