Compare commits

..
Author SHA1 Message Date
Vincent Lee 568ee043df God dammit 2016-01-16 12:33:05 -06:00
Vincent Lee a615538289 Stop spamming packets when done digesting 2016-01-16 02:07:18 -06:00
Vincent Lee 7907d1d582 Fix passives decaying directly into nothing instead of a dead bush 2016-01-16 01:57:31 -06:00
Vincent Lee 46900df6cb Serverside gourmaryllis 2016-01-16 01:42:07 -06:00
Vincent Lee 1d8c536139 Fix pool minecart rendery fully 2016-01-15 21:48:29 -06:00
Vincent Lee eb028d6c05 Fully fix mana pool models 2016-01-15 21:20:49 -06:00
Vincent Lee 406f89a968 Cleanup, implement some easter egg models I missed 2016-01-15 14:14:10 -06:00
Vincent Lee 2c15b6150c Lots of MOP guards. closes #41 2016-01-15 11:27:32 -06:00
Vincent Lee bee13337ad Made laputa shard save string block id's instead of integer id's. Also, a possible fix for #40 2016-01-15 10:56:23 -06:00
Vincent Lee 98e28a0967 Made some things one sided only 2016-01-14 22:44:50 -06:00
Vincent Lee 4a4e583aa8 Fix wonky petal apothecary collision 2016-01-14 21:53:18 -06:00
Vincent Lee 300b1926de Possible fix for #38 2016-01-14 17:20:05 -06:00
Vincent Lee 3818d2879d no longer register gaia tesr onto vanilla skulls 2016-01-14 16:47:48 -06:00
Vincent Lee e12163f70c Merge upstream 2016-01-14 16:40:14 -06:00
Vincent Lee dcb236607d Fix hopperhock placing items one block too far away. Closes #39 2016-01-14 12:08:57 -06:00
Vincent Lee 08de553593 No longer use the raw potion array, use potio registry 2016-01-14 11:54:08 -06:00
Vincent Lee b01e9dfed7 Staging changes would be a good idea. Also fix possible potion crash 2016-01-13 17:14:12 -06:00
Vincent Lee 4b7608fc2a Add nag that this is unofficial right now 2016-01-13 14:13:19 -06:00
Vincent Lee 103efe9c7b Destitch cocoon texmap 2016-01-13 12:54:02 -06:00
Vincent Lee 1402e2a50a Start work on destitching apothecary texmaps 2016-01-13 12:37:15 -06:00
Vincent Lee c8d9764fe3 Read atlas size dynamically 2016-01-13 10:59:10 -06:00
Vincent Lee 3e19a84b6d Fix terra shatterer tooltip darkening screen. Closes #37 2016-01-13 00:42:32 -06:00
Vincent Lee a30887d6f9 Debug thing for me, to dump the texture atlas 2016-01-13 00:02:18 -06:00
Vincent Lee 80bd63be0b Bunch of TE particle textures. Fix a bellows crash and teru teru bozu not working with sunflower 2016-01-12 23:27:36 -06:00
Vincent Lee 6c9a01978a Cocoon of caprice model 2016-01-12 15:04:08 -06:00
Vincent Lee 19e387f359 Fix off by one in forest drum meta to state 2016-01-12 13:58:19 -06:00
Vincent Lee f799f7bc32 Revert "Trying to render AO pool"
This reverts commit d8a74e2e44.
2016-01-12 12:00:29 -06:00
Vincent Lee d8a74e2e44 Trying to render AO pool 2016-01-11 20:06:59 -06:00
Vincent Lee 30578abfb4 Merge pull request #36 from GirafiStudios/MC18
Fixed special named Tiny Potatoes. (Besides Ible)
2016-01-11 17:14:30 -06:00
GirafiStudios a172a325e1 Fixed named Tiny Potatoes rendering (Besides Ible) 2016-01-11 23:45:43 +01:00
Vincent Lee 64e3a96651 I is retarded 2016-01-11 14:25:00 -06:00
Vincent Lee 94d72161a9 Revert mesher lambdas 2016-01-11 14:10:11 -06:00
Vincent Lee 8e7f1cfac1 Temporary java 8 reobfuscation fix closes #33. 2016-01-11 11:23:46 -06:00
Vincent Lee f3cce3d24e Global safety checks for blockstates while chunks are unloading 2016-01-10 22:53:21 -06:00
Vincent Lee 84204db587 Fix ender air bottle render, move to java 8, giant import cleanup 2016-01-10 18:16:30 -06:00
Vincent Lee 404d99445e Sleeves render on spreaders again. Closes #6 2016-01-09 23:35:18 -06:00
Vincent Lee f3f055a58e More 2016-01-09 21:26:43 -06:00
Vincent Lee e142561799 Model cleanup 2016-01-09 21:22:37 -06:00
Vincent Lee 14a7f6b14b COrrect Crafty crate models 2016-01-09 21:01:50 -06:00
Vincent Lee a6899a9f40 Special flower lighting crash 2016-01-09 19:31:58 -06:00
Vincent Lee 57398723a4 Cleanup 2016-01-09 19:05:37 -06:00
Vincent Lee 4345bd9728 More blockstate guards in TE and blockstate conversions 2016-01-09 19:01:31 -06:00
Vincent Lee 1c14dcf8ff Fix pylon crash 2016-01-09 18:37:12 -06:00
Vincent Lee 7615d0b893 Fix recipes for 1.9 purpur not being registered 2016-01-09 17:49:59 -06:00
Vincent Lee 568ed80ede Allow platform to render other smart models 2016-01-09 00:03:04 -06:00
Vincent Lee c3dce97e0d Fix pylon and pool rendering in multiblock. Closes #25 2016-01-08 23:03:30 -06:00
Vincent Lee 61b8616008 Fix double flowers not dropping from both halves. Closes #24 2016-01-08 20:34:55 -06:00
Vincent Lee f61d47f2dc Some cleanup, fix wand of the forest minor bugs. Closes #22 2016-01-08 19:53:28 -06:00
Vincent Lee 9e16c4490b Rename RenderEventHandler, restore flugel tiara extra renders, and fix sparkles renderirng too low. Closes #21 2016-01-08 19:10:28 -06:00
Vincent Lee b4df8ce418 Full platform models. Fix bore lens crash and add copyleft headers to some things 2016-01-08 18:47:31 -06:00
Vincent Lee 84d0c75605 Fix lighting, AO is still broken 2016-01-08 14:56:16 -06:00
Vincent Lee 9c3a042089 pool tesr now uses baked model 2016-01-08 14:14:17 -06:00
Vincent Lee a1aa50b532 Merge upstream release 248 2016-01-08 12:34:51 -06:00
Vincent Lee 972943a9ac Updates to internal handler and icons 2016-01-08 12:33:49 -06:00
Vincent Lee a4a77fb20f Merge upstream 2016-01-08 12:00:01 -06:00
Vincent Lee 3a54166954 Revert "Tentatively change relics to use UUID. Still use playernames for display" due to a better solution being merged upstream.
This reverts commit 0687f56c32.
2016-01-08 11:29:03 -06:00
Vincent Lee cd77b41d31 Incense plate converted to json 2016-01-07 21:19:39 -06:00
Vincent Lee 20b5743221 Safety guards for blockstates, remove all useless casts 2016-01-07 19:55:54 -06:00
Vincent Lee e58eb1b345 Fix alfportal derp 2016-01-07 17:03:28 -06:00
Vincent Lee 064fd20edb Mana flash and water bowl items 2016-01-07 16:56:03 -06:00
Vincent Lee 85102dea89 Mana inkwell item model. Pylon models fully working 2016-01-07 14:32:38 -06:00
Vincent Lee baf14c361b Fix third person render 2016-01-07 11:59:22 -06:00
Vincent Lee 3b7d7628cf Derp 2016-01-07 11:46:36 -06:00
Vincent Lee 8155dc3059 Life imbuer model complete 2016-01-07 11:35:41 -06:00
Vincent Lee 0494c0eba2 Generify stuff, fix gaia head render, hourglass inventory model 2016-01-07 10:32:51 -06:00
Vincent Lee 12dfecb8ac Add a bunch of dirty, dirty tesr item hook items. Also fix fabulous mana pool leaking its fabulousness 2016-01-07 08:52:58 -06:00
Vincent Lee 92aaa9f70a Spreader turntable model 2016-01-06 21:40:18 -06:00
Vincent Lee 929860f8fa Partial claw model. Fix cell block being a debug floating island. Fix a pure daisy oredict bug by checking for drops instead of state 2016-01-06 20:56:25 -06:00
Vincent Lee 383cd059cc Fix hourglass having inverted redstone power. How come no one caught this?! 2016-01-06 20:16:22 -06:00
Vincent Lee 2ddf71d76f Cleanup 2016-01-05 21:41:07 -06:00
Vincent Lee 34fae04641 Made API dediserver-safe. Remove icon methods from SubTileSignature. 2016-01-05 21:39:56 -06:00
Vincent Lee dc6af948d9 Don't use a sideonly client method. Closes #18 2016-01-05 21:23:50 -06:00
Vincent Lee 3fe2a0006c Change crystal bow draw animation to better reflect when it's fully charged 2016-01-05 19:51:41 -06:00
Vincent Lee 89dac440c8 Change starfield item model to match upstream 2016-01-05 19:27:54 -06:00
Vincent Lee 5797d18d9b Fix a bunch of coloring mistakes. Fix flower particles because I'm dumb 2016-01-05 19:24:30 -06:00
Vincent Lee 52cf3df27e Fix tessellator bugs, fix alf portal crash 2016-01-05 17:15:22 -06:00
Vincent Lee b976ed5df1 Cleanup JEI integration, add copyleft. 2016-01-05 17:01:46 -06:00
Vincent Lee e727cb7f2b Merge branch 'jei' into MC18 2016-01-05 16:51:18 -06:00
Vincent Lee 8e6dc7c637 JEI integration complete (runic altar, mana infusion) 2016-01-05 16:51:03 -06:00
Vincent Lee 28249d1e33 Elven trade integration 2016-01-05 15:36:10 -06:00
Vincent Lee b24585b13d Update a bunch of recipes to take vanilla blocks and items. Also remove prismarine lex entry and move infusion recipe to mana pool page. 2016-01-05 12:25:53 -06:00
Vincent Lee 86880bfd49 Fix helmet of revealing inv model 2016-01-05 00:05:09 -06:00
Vincent Lee c8c50f9af0 Future is now part 1: conversions recipes to vanilla 2016-01-04 23:29:50 -06:00
Vincent Lee 0e301a4e33 Fix apothecary light level crash, tiny potato render crash. Closes #17 2016-01-04 22:47:47 -06:00
Vincent Lee 10d095d656 Finish pure daisy integration 2016-01-04 22:46:24 -06:00
Vincent Lee 9bf2e0c555 Semi working petal apothecary itnegration 2016-01-04 22:34:45 -06:00
Vincent Lee 95118696ce Half complete petal apothecary 2016-01-04 20:57:14 -06:00
Vincent Lee ab4f6f6433 workaround for pylon enchant power. closes #16 2016-01-04 19:58:54 -06:00
Vincent Lee 46c13be698 Fix rotations and nameplates for tiny potato 2016-01-04 14:09:18 -06:00
Vincent Lee ad58fb1855 Partial tiny potato 2016-01-04 12:18:19 -06:00
Vincent Lee 12ae7ed3d1 Fix thaumcraft integration crashing 2016-01-04 10:01:04 -06:00
Vincent Lee 6cf82eb98d Rudimentary pure daisy integration 2016-01-03 23:43:24 -06:00
Vincent Lee b10a642297 Brewery recipe support 2016-01-03 22:02:02 -06:00
Vincent Lee 75ab210227 Item models fully working. TESRs may be changed in future 2016-01-03 19:59:27 -06:00
Vincent Lee 0b27d9d0b5 Attempt at json pool model 2016-01-03 19:29:09 -06:00
Vincent Lee 3c102bbc75 Move mc dep ver out of @Mod 2016-01-02 23:32:55 -06:00
Vincent Lee 4e1065855e Some formatting cleanups. Add copyleft header to all new classes 2016-01-02 23:21:55 -06:00
Vincent Lee 3eb67e3fea Corporea index and cube item model 2016-01-02 19:43:41 -06:00
Vincent Lee 5d80b7d9ce Fix thaumcraft 5 goggles of revealing integration. closes #14 2016-01-02 19:07:52 -06:00
Vincent Lee f7e5054bf4 Fix armor rendering - thanks primetoxinz for the find! 2016-01-01 16:05:17 -06:00
Vincent Lee 906fb74ec0 Fix santaweave inv icons 2016-01-01 15:35:08 -06:00
Vincent Lee 48cf387682 Unssuccessful attempt to fix sky renderer leaking state. Mark for release 2015-12-31 14:28:13 -06:00
Vincent Lee c54b85dfd5 Cacophonium block model 2015-12-31 13:34:09 -06:00
Vincent Lee bd98879d49 Fix piston relays 2015-12-31 13:13:32 -06:00
Vincent Lee b3a83031c1 Misc rendering fixes 2015-12-31 12:45:18 -06:00
Vincent Lee c8d4c54ed7 Bandaid for one block off multiblock render 2015-12-30 23:47:16 -06:00
Vincent Lee 9ee02b55ad Fix bifrost rod, gateway core and root model 2015-12-30 23:37:49 -06:00
Vincent Lee 2cc7e133cc fluxfield model, fix pump crash, fix gaia render 2015-12-30 22:25:08 -06:00
Vincent Lee 0c062967a0 Mana Bomb, Mana Detector 2015-12-30 21:23:54 -06:00
Vincent Lee 1cf175d412 Baubles and stuff 2015-12-30 20:56:50 -06:00
Vincent Lee 5293f811c8 Fix king key weapon and item render 2015-12-30 19:34:14 -06:00
Vincent Lee c5a5657810 Missed some >.> also a teeny bit of attribution that probably won't even show up because it runs off the screen 2015-12-30 18:33:56 -06:00
Vincent Lee 4dd62fae37 Corporea blocks, luminizers, comment out nei and cbmp stuff so it can actually build. 2015-12-30 18:27:06 -06:00
Vincent Lee a67aeee496 SPark changer, terrasteel plate, fix spark entity render 2015-12-30 14:51:14 -06:00
Vincent Lee c2470f80ee Fixes so server works 2015-12-30 13:11:18 -06:00
Vincent Lee b4300a9e3b Corporea item icons (world render broken still). Temp fix for pylon multiblock rendering. 2015-12-30 00:55:21 -06:00
Vincent Lee 9f5455aa9f Let it run on 1.8.8 as well. 2015-12-29 23:47:28 -06:00
Vincent Lee 37b5d00388 Update to 1.8.9, fix apothecary collision 2015-12-29 23:45:26 -06:00
Vincent Lee 1973779897 Petal apothecaries fully restored 2015-12-29 22:37:19 -06:00
Vincent Lee 71607ae3bd Merge release build 246 2015-12-29 19:36:50 -06:00
Vincent Lee 965ab01889 Fix the textures 2015-12-29 14:56:19 -06:00
Vincent Lee 5a630fbf39 Done with floating flowers completely. Can't get the spinning right though. 2015-12-29 14:45:50 -06:00
Vincent Lee 3aef9efe8b Floating flowers kinda sorta mostly working 2015-12-29 00:34:13 -06:00
Vincent Lee 8f70814ae6 Partially working floaters 2015-12-28 22:21:22 -06:00
Vincent Lee 43cd84d2cd Fix multiblock rendering and enchanter activation bug 2015-12-28 19:11:20 -06:00
Vincent Lee 2f0915e18c Lots more item models, red string block models 2015-12-28 17:50:33 -06:00
Vincent Lee 8eedaa5563 Fix texture errors, fix pool and apothecary collision detection 2015-12-28 16:11:01 -06:00
Vincent Lee b701f197ee Some progress on floating flowers 2015-12-28 14:17:10 -06:00
Vincent Lee bf07f10ac7 Fix brewery rendering and operation 2015-12-27 22:38:26 -06:00
Vincent Lee 90fcc98bd0 Fix wisp particle 2015-12-27 20:33:24 -06:00
Vincent Lee c513f17f88 All brews, mana tablet, mana gun, incense, and other items 2015-12-27 20:16:31 -06:00
Vincent Lee e83d1600cf Blood pendant, enchanted soil, enchanter, open bucket, prism, fix some rendering 2015-12-27 16:52:30 -06:00
Vincent Lee 5b1ac0368d Quartz, prismarine, various items, fix upper slab uvlock 2015-12-27 15:39:45 -06:00
Vincent Lee 65837fbf38 Punt on apothecary. Items first 2015-12-27 12:52:02 -06:00
Vincent Lee 33a8d5e33c Done with apothecaries for today >.> 2015-12-27 01:51:06 -06:00
Vincent Lee b740a22684 Fix old tex, temporary json 2015-12-27 00:42:24 -06:00
Vincent Lee 7c41ffcaa1 Destitched model files 2015-12-27 00:26:41 -06:00
Vincent Lee 781f586d19 Upload some files so I can use modelcreator in windows >.> 2015-12-26 21:55:32 -06:00
Vincent Lee 794e1352e8 Lenses and lens rendering on spreader 2015-12-26 20:00:34 -06:00
Vincent Lee f449fca882 Actually commit this time 2015-12-26 17:41:50 -06:00
Vincent Lee 73663e8a0a Fix rod models, made runic altar and avatar render their items 2015-12-26 17:38:07 -06:00
Vincent Lee 86cd656360 Merge branch 'MC18' of github.com:williewillus/Botania into MC18 2015-12-26 16:27:00 -06:00
Vincent Lee 20b433af3c Merge pull request #2 from primetoxinz/MC18
More Item Models :D
2015-12-26 16:22:09 -06:00
Vincent Lee 5fe696875f More various models 2015-12-26 16:21:21 -06:00
primetoxinz 18dceeeb5f fix for merge 2015-12-26 16:43:32 -05:00
Tyler ccbf325a76 Merge pull request #2 from williewillus/MC18
Merge
2015-12-26 16:32:18 -05:00
Vincent Lee 2f4785c7b4 Clean up flower and mushroom jsons 2015-12-26 12:35:46 -06:00
Vincent Lee e2ac5ecad1 Fix double flowers fully, a couple more models 2015-12-26 00:49:30 -06:00
Vincent Lee 8cda41cdb8 Finish walls, and ALL slabs. Made floating flowers render properly in world. 2015-12-25 22:44:10 -06:00
Vincent Lee b36f51f6d8 Clean up a ton of models, add some walls 2015-12-24 22:00:24 -06:00
Vincent Lee 32fe7f6ce3 Fix landing and break particles in specail flowers 2015-12-24 15:05:52 -06:00
Vincent Lee 0687f56c32 Tentatively change relics to use UUID. Still use playernames for display 2015-12-24 14:42:52 -06:00
Vincent Lee 70d4450a6a Wand of the Forest, Fel pumpkin, trodden path 2015-12-24 14:00:11 -06:00
Vincent Lee dcd08963e9 Special item models 2015-12-24 12:33:25 -06:00
Vincent Lee 23cab39892 All special flowers. item model system not yet done 2015-12-24 11:05:00 -06:00
Vincent Lee f4ea60ba2c IT WORKS 2015-12-24 03:04:16 -06:00
Vincent Lee 319bab35a0 Lay all groundwork for special flower models. Not yet tested. 2015-12-24 02:14:21 -06:00
Vincent Lee d58f153742 Solid vine and crash fixes for it 2015-12-23 23:54:59 -06:00
Vincent Lee 64a8dfbcfe Drums, runic altar, mana pool kinda, distributor, force relay, starfield 2015-12-23 20:26:33 -06:00
Vincent Lee eabb0f94e3 Mana beacon, unstable block, petal block 2015-12-23 17:19:23 -06:00
primetoxinz d23cca33e1 More Item models 2015-12-23 17:07:32 -05:00
Tyler cbbefff0ce Merge pull request #1 from williewillus/MC18
merge
2015-12-23 17:03:30 -05:00
Vincent Lee cfaeecc41a Panes, and fixes so no crashes in debug world 2015-12-23 16:03:07 -06:00
Vincent Lee 0887191a64 All stair models done 2015-12-23 14:30:18 -06:00
Vincent Lee b10615c909 Revert unnecessary changes 2015-12-23 00:42:00 -06:00
Vincent Lee 2c660ba82b Merge branch 'primetoxinz-MC18' into MC18 2015-12-23 00:40:40 -06:00
Vincent Lee 92e90ed2b9 Merge branch 'MC18' of github.com:primetoxinz/Botania into primetoxinz-MC18 2015-12-23 00:39:40 -06:00
Vincent Lee 3d41be585b Pylons kinda working 2015-12-22 23:26:27 -06:00
Vincent Lee 57e5a3d0ac Pylon obj model possibly. item working, tile not so 2015-12-22 22:47:29 -06:00
primetoxinz 1b1e5e3bf0 Fixed Formatting 2015-12-22 23:34:35 -05:00
primetoxinz 7e0145bf34 remove debug code, whoops 2015-12-22 23:17:09 -05:00
primetoxinz e77678593f remove launch files 2015-12-22 23:09:21 -05:00
primetoxinz 9f429c7e17 Added most tools and armour models 2015-12-22 23:06:33 -05:00
primetoxinz 305b99b3f5 Added Models for Resources and other items 2015-12-22 22:37:27 -05:00
Vincent Lee 33b423aaa1 Lexicon item model. Alf/managlass blocks, altgrass 2015-12-22 20:28:14 -06:00
Vincent Lee d2340905d6 Livingwood, and livingrock and livingwood stairs 2015-12-22 17:43:51 -06:00
Vincent Lee 70353cf143 Livingrock, and reorganize model names. Sorry for the diff thrashing 2015-12-22 16:48:56 -06:00
Vincent Lee 42110cec45 Fix duplicate eventhandler 2015-12-22 16:18:34 -06:00
Vincent Lee cff6120aaf First block models 2015-12-22 16:16:04 -06:00
Vincent Lee 56228446b8 Stub out all rendering. Compiles and runsgit add -A 2015-12-22 12:49:18 -06:00
Vincent Lee b21d6f5ee6 All non rendering components compile 2015-12-22 11:13:23 -06:00
Vincent Lee 0db00970ab Made futurestone registration a bit less hardcody 2015-12-21 22:44:11 -06:00
Vincent Lee 320f6405e4 Rendering tweaks, and fix up all stairs/slabs/walls 2015-12-21 22:40:52 -06:00
Vincent Lee a23f317368 Finish BC integratoin 2015-12-21 19:49:51 -06:00
Vincent Lee 5379cda754 Update buildcraft api to 7.2.0 and integration mostly 2015-12-21 19:44:52 -06:00
Vincent Lee a9b060257f 1.8.8 tess fixes, potential double plant fix, bunch of reflectoin in spawner claw 2015-12-21 19:25:58 -06:00
Vincent Lee 5d666cd891 Some 1.8.8 tessellator changes 2015-12-21 13:53:31 -06:00
Vincent Lee ffe7b4ccc8 API looks to be good again 2015-12-21 13:01:33 -06:00
Vincent Lee c480a3303a Remove unneeded casts since 1.8.8 restores generics 2015-12-21 12:53:59 -06:00
Vincent Lee dbb549ba2a Merge upstream release 245 2015-12-21 12:47:58 -06:00
Vincent Lee b8a1a9cd5d Some 1.8.8 fixes before merging upstream 2015-12-21 12:24:28 -06:00
Vincent Lee 5211ed9149 Merge upstream and probably introduce a zillion errors 2015-12-14 16:38:07 -06:00
Vincent Lee 6b03424e2c Commit before merging upstream 2015-12-14 12:46:31 -06:00
Vincent Lee 8361d1743d Some rendering experiements, update notes 2015-11-30 12:53:36 -06:00
Vincent Lee 6cc88f1c5a Almost done with TEs 2015-11-29 16:45:36 -06:00
Vincent Lee 4736be9d61 Corporea done 2015-11-29 15:59:17 -06:00
Vincent Lee e4864d2e7b Red string blocks and tiles 2015-11-29 15:26:59 -06:00
Vincent Lee d0a14a451b More IIcon exorcisms, various compilation fixes now that we know states 2015-11-29 15:06:03 -06:00
Vincent Lee f58440b79a Misc cleanups and fixes. All magic flowers compile now! 2015-11-29 12:59:22 -06:00
Vincent Lee 9ea899bad5 Fix alf portal states, made the api compile now! 2015-11-28 20:54:09 -06:00
Vincent Lee e4b58e0c2d Remove InterpolatedIcon. Now present natively in 1.8 2015-11-28 19:57:33 -06:00
Vincent Lee a9baf71924 TESRs and fixed quite a few todos 2015-11-28 19:55:12 -06:00
Vincent Lee 4a4763b075 Light work on decor 2015-11-27 22:58:18 -06:00
Vincent Lee 1817e75b5d More decor states 2015-11-27 13:04:23 -06:00
Vincent Lee 6c637d27b2 Lots of rendering work. Multiblock structures migrated from to states 2015-11-26 22:14:46 -06:00
Vincent Lee e679a2062d Misc touchups everywhere. Move ModBanners in block pkg 2015-11-26 17:33:36 -06:00
Vincent Lee bf81e002e8 More blockstates 2015-11-26 12:03:33 -06:00
Vincent Lee a40a443607 Merge upstream 2015-11-26 02:27:25 -06:00
Vincent Lee ddf2a94aa1 Some states in the root package. here we go! 2015-11-26 02:18:20 -06:00
Vincent Lee 2dae52a9ff Full GLStatemanager substitution 2015-11-26 00:50:46 -06:00
Vincent Lee 9cd7a4a0d5 Tweak multiblocks a bit 2015-11-26 00:20:11 -06:00
Vincent Lee 0a7268fc98 Move botaniaStateProps and all state enums into the api so others can use them to set our blockstates 2015-11-26 00:09:29 -06:00
Vincent Lee 4426f8904f Some touchups on entities 2015-11-25 01:36:21 -06:00
Vincent Lee c0bcfb6448 Most functional flora 2015-11-24 17:31:19 -06:00
Vincent Lee b4d9c3ded8 Some of genereating flora 2015-11-24 01:10:03 -06:00
Vincent Lee 605e38337a Rest of root package TE 2015-11-24 00:49:57 -06:00
Vincent Lee b72be67dd7 Smaller TE's in the root package. several of the bigger ones left 2015-11-22 23:56:18 -06:00
Vincent Lee c2f1a9ab17 corporea, mana, and string tile entities 2015-11-22 16:19:02 -06:00
Vincent Lee 999705294d root package of block, first pass done 2015-11-22 15:28:50 -06:00
Vincent Lee 3fe15e6b7d Remove trivial IIcon refs in Item to get a better sense of my progress there 2015-11-21 23:12:46 -06:00
Vincent Lee 921370b546 block. corporea, dispenser, mana, string. some of the base pkg too 2015-11-21 22:53:58 -06:00
Vincent Lee 3f9d5c888f Finish rods (a bit of block leaked in, oops) 2015-11-20 18:36:01 -06:00
Vincent Lee 55bf02798d Most of rod package 2015-11-20 13:45:35 -06:00
Vincent Lee e3b22975cb Merge upstream 2015-11-20 01:00:31 -06:00
Vincent Lee 3ebcd10233 Finish ring of Loki 2015-11-20 00:53:35 -06:00
Vincent Lee 02ed9f1c84 Finish tools and relics except some of Loki 2015-11-18 19:07:37 -06:00
Vincent Lee 27126c074d Some of tool package 2015-11-18 18:39:52 -06:00
Vincent Lee 8cc23c7fb3 Update readme 2015-11-18 08:38:20 -06:00
Vincent Lee 9cbd2708db Base item package, tc interaction items 2015-11-18 08:33:32 -06:00
Vincent Lee 4c0922f0b4 Update Botania refs to TC api 2015-11-18 01:04:51 -06:00
Vincent Lee ed75f4a4b7 Delete parts of TC5 api that actually weren't needed. Oops. 2015-11-18 01:01:46 -06:00
Vincent Lee 5c98dc562c Update RF API to Progressive Automation / FluxDucts' variant 2015-11-18 00:54:48 -06:00
Vincent Lee da1dc51202 Update to TC5 API 2015-11-18 00:49:52 -06:00
Vincent Lee 2376287dd7 Some items 2015-11-17 13:09:45 -06:00
Vincent Lee 750276db9b Merge upstream 2015-11-17 01:07:15 -06:00
Vincent Lee 58dbb0f9cf Lenses, materials, records, relics, equipment 2015-11-17 01:03:09 -06:00
Vincent Lee 6fb9b0101e Some entities 2015-11-17 00:30:32 -06:00
Vincent Lee 3b8926c24b Easy stuff in common.core 2015-11-16 16:37:03 -06:00
Vincent Lee bbbe93a8de common.lexicon 2015-11-16 13:40:19 -06:00
Vincent Lee 9da9d61880 break from client for now 2015-11-16 13:35:58 -06:00
Vincent Lee 29e42d86ea Some of client.render.tile 2015-11-16 13:15:32 -06:00
Vincent Lee 88ca096ae0 client.gui.lexicon 2015-11-14 19:48:26 -06:00
Vincent Lee b07cac07a0 Fix the ctors oops 2015-11-14 15:50:23 -06:00
Vincent Lee afb9650b12 Update EntityThrowableCopy to 1.8 ver 2015-11-14 15:49:58 -06:00
Vincent Lee a1c3b00ae0 client.core.fx 2015-11-14 12:28:02 -06:00
Vincent Lee b22e485217 Some of client.core.handler. Most of this will need to be migrated to layerrenderers 2015-11-14 12:21:30 -06:00
Vincent Lee 7ad1820fcb Low hanging fruit: core.world, core.network, core.lib, core.crafting, some miscs 2015-11-14 00:59:47 -06:00
Vincent Lee 8591551a1b Lots of tessellator substitutions, full findreplace from CC to BlockPos. Some low hanging fruit in client 2015-11-14 00:39:42 -06:00
Vincent Lee 4d674da1b7 Most of what I can do with API done. 2015-11-14 00:28:00 -06:00
Vincent Lee d293a7dcc7 update readme 2015-11-13 20:22:39 -06:00
Vincent Lee 920324b135 Much of the API (blockpos and enumfacing, some low hanging fruit). Not done with it yet though. 2015-11-13 20:19:29 -06:00
Vincent Lee 67d5d65902 Shotgun tile.getWorldObj into tile.getWorld. May cause some individual errors but fix later 2015-11-13 19:53:37 -06:00
Vincent Lee f6cfeedd1d Vec3 and AABB factory to plain ctor 2015-11-13 19:51:23 -06:00
Vincent Lee 5a11a58346 cpw.mods.fml to net.minecraftforge.fml 2015-11-13 19:50:23 -06:00
Vincent Lee da2e5dfa51 Update build.gradle 2015-11-13 19:49:41 -06:00
2875 changed files with 39474 additions and 26416 deletions

No files matched your search

-44
View File
@@ -1,44 +0,0 @@
* text eol=lf
*.[jJ][aA][rR] binary
*.[pP][nN][gG] binary
*.[jJ][pP][gG] binary
*.[jJ][pP][eE][gG] binary
*.[gG][iI][fF] binary
*.[tT][iI][fF] binary
*.[tT][iI][fF][fF] binary
*.[iI][cC][oO] binary
*.[sS][vV][gG] text
*.[eE][pP][sS] binary
*.[xX][cC][fF] binary
*.[kK][aA][rR] binary
*.[mM]4[aA] binary
*.[mM][iI][dD] binary
*.[mM][iI][dD][iI] binary
*.[mM][pP]3 binary
*.[oO][gG][gG] binary
*.[rR][aA] binary
*.7[zZ] binary
*.[gG][zZ] binary
*.[tT][aA][rR] binary
*.[tT][gG][zZ] binary
*.[zZ][iI][pP] binary
*.[tT][cC][nN] binary
*.[sS][oO] binary
*.[dD][lL][lL] binary
*.[dD][yY][lL][iI][bB] binary
*.[pP][sS][dD] binary
*.[tT][tT][fF] binary
*.[oO][tT][fF] binary
*.[pP][aA][tT][cC][hH] -text
*.[bB][aA][tT] text eol=crlf
*.[cC][mM][dD] text eol=crlf
*.[pP][sS]1 text eol=crlf
*[aA][uU][tT][oO][gG][eE][nN][eE][rR][aA][tT][eE][dD]* binary
-62
View File
@@ -1,62 +0,0 @@
name: Report Bug
description: "Report a bug."
body:
- type: markdown
attributes:
value: "A bug/crash report with sufficient information and logs to reproduce and track down."
- type: input
id: discord
attributes:
label: Your GTNH Discord Username
description: Leave empty if you don't have one, but this will make it harder to contact you if we need additional info.
placeholder: "Example: Fake#1234"
- type: input
id: version
attributes:
label: Mod Version
description: "What version of the Mod are you using?"
placeholder: "Example: 1.0.0"
validations:
required: true
- type: textarea
id: report
attributes:
label: Bug Report
description: "Relevant information, as well as relevant logs attached such as `logs/fml-client-latest.log."
placeholder: "Example: https://mclo.gs/ OR submit the file to github by dragging it to this textbox."
validations:
required: true
- type: dropdown
id: java
attributes:
label: Java Version
description: What Java version are you using? It's worth mentioning that if you play on Java9+ you should try update to latest minor release (e.g. prefer Java 17.0.6 over 17.0.2) of that version.
options:
- Java 8
- Java 9
- Java 11
- Java 17
- Java 19
- Java 20
- Java 21
- Other (Please Specify)
validations:
required: true
- type: textarea
id: modlist
attributes:
label: Mod List or GTNH Pack Version
description: "List of mods, ideally a minimal reproducible set (can be retrieved from latest.log). If using GTNH please indicate pack version and any changed mods, not the entire modlist."
placeholder: "List of mods or GTNH Pack version goes here"
validations:
required: true
- type: checkboxes
id: final
attributes:
label: Final Checklist
description: Certify that you read things
options:
- label: "I have searched the issues and haven't found a similar issue."
required: true
@@ -1,28 +0,0 @@
name: Feature Request
description: "Request a feature."
body:
- type: markdown
attributes:
value: "Please use this form to request features. We ask you check if it was already requested though"
- type: input
id: discord
attributes:
label: Your GTNH Discord Username
description: Leave empty if you don't have one, but this will make it harder to contact you if we need additional info.
placeholder: "Example: Wumpus#1234"
- type: textarea
id: request
attributes:
label: Feature Request
description: "Relevant information, as well as relevant images"
placeholder: "Example: https://mclo.gs/ OR submit the file to github by dragging it to this textbox."
validations:
required: true
- type: checkboxes
id: final
attributes:
label: Final Checklist
description: Certify that you read things
options:
- label: "I have searched the issues and haven't found a similar issue."
required: true
-13
View File
@@ -1,13 +0,0 @@
name: Build and test
on:
pull_request:
branches: [ master, main ]
push:
branches: [ master, main ]
jobs:
build-and-test:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/build-and-test.yml@master
secrets: inherit
-17
View File
@@ -1,17 +0,0 @@
name: Optimize images
on:
pull_request:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
push:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
jobs:
optimize-images:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/optimize-images.yml@master
secrets: inherit
-14
View File
@@ -1,14 +0,0 @@
name: Release tagged build
on:
push:
tags: [ '*' ]
permissions:
contents: write
jobs:
release-tags:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/release-tags.yml@master
secrets: inherit
+61 -38
View File
@@ -1,38 +1,61 @@
.gradle
.settings
/.idea/
/.vscode/
/run/
/build/
/eclipse/
.classpath
.project
/bin/
/config/
/crash-reports/
/logs/
options.txt
/saves/
usernamecache.json
banned-ips.json
banned-players.json
eula.txt
ops.json
server.properties
servers.dat
usercache.json
whitelist.json
/out/
*.iml
*.ipr
*.iws
src/main/resources/mixins.*([!.]).json
*.bat
*.DS_Store
!gradlew.bat
.factorypath
addon.local.gradle
addon.local.gradle.kts
addon.late.local.gradle
addon.late.local.gradle.kts
layout.json
## Windows
Thumbs.db
## gradle
/.gradle
/build
## ForgeGradle
/run
## eclipse
/.settings
/.metadata
/.classpath
/.project
/eclipse
/bin
## intellij
/out
/.idea
/atlassian-ide-plugin.xml
/*.ipr
/*.iws
/*.iml
## Private Stuffs
/private.properties
## Jars
*.jar
!/gradle/wrapper/gradle-wrapper.jar
!GardenOfGlass.jar
### OSX (adds a lot of garbage)###
.DS_Store
.AppleDouble
.LSOverride
# Icon must end with two \r
Icon
# Thumbnails
._*
# Files that might appear in the root of a volume
.DocumentRevisions-V100
.fseventsd
.Spotlight-V100
.TemporaryItems
.Trashes
.VolumeIcon.icns
# Directories potentially created on remote AFP share
.AppleDB
.AppleDesktop
Network Trash Folder
Temporary Items
.apdisk
-3
View File
@@ -1,3 +0,0 @@
# Any Github changes require admin approval
/.github/** @GTNewHorizons/admin
Binary file not shown.
BIN
View File
Binary file not shown.
+28
View File
@@ -0,0 +1,28 @@
-- API --
* Updated to BlockPos and EnumFacing everywhere where it made sense
* Registering repainting blocks will need to also receive a PropertyEnum with EnumDyeColor as the component type
so Botania knows what property to set the color on
* ICorporeaSpark.getInventory had to be changed to ICorporeaSpark.getSparkInventory because the signature clashed (IInventory vs ItemStack[], respectively)
This can be changed to match vanilla signature, but either would break backward compat.
* SubTileEntity.getComparatorInputOverride parameter removed (it was actually incorrect also. Not side, but the meta of the block).
Anyways, vanilla removed it from their method so we follow suit.
* SubTileEntity's methods that are copied from block (onBlockadded, etc.) updated to match vanilla counterparts
* Multiblock system reworked to use states and blockposes
* Magnet blacklist still uses metas instead of states because they need to support the short maxvalue wildcard.
* Now includes a way for addons to pass the Botania loader the models they want to use to render their subtile with
* Removed icon methods from SubTileSignature
-- Other --
* Most things left untouched to make patches from upstream easier
* Most uses of chunkcoordinates directly convert blockpos (THANK YOU VAZKII FOR USING THEM). Remove creation of extra instances
since BlockPos'es are immutable and thus can be reused everywhere.
* Some really needed fields in EntityItem are private now. Reflection time :(
* Alfglass now just uses the vanilla random model selection system to choose a pattern. Some of your builds may look different.
Unless someone figures out a way to use the old one
* The alt textures will probably be a resource pack now to decrease complexity...
sorry :/ The systems needed to dynamically switch out the textures like that is not worth just throwing them into a resource pack
* Slabs are kinda janky if you look at them - Mojang made some extremely silly assumptions and we're going to have to go with them
* Quartz stair textures may be assigned incorrectly - resource pack authors check me
* Glass pane inner faces are not getting culled (vanilla bug?)
* Some item forms of technical/non-user blocks are removed
* Full list: [all double slab items, all solid vine items]
+12
View File
@@ -1,3 +1,15 @@
1.8 PORT README:
This is williewillus' 1.8(.8) port of Botania!
All licensing and distribution rights are exactly as 1.7.10 Botania
Use at your own risk as bugs may pop up unexpectedly.
I will EXACTLY match Vazkii/upstream design wise so NEVER ask me for balance or design changes. No.
Please report all 1.8 bugs to MY REPOSITORY, NOT VAZKII'S.
![](https://github.com/Vazkii/Botania/blob/master/web/img/logo.png)
Welcome to the Botania repository.
+2
View File
@@ -0,0 +1,2 @@
sh gradlew
pause
+236 -4
View File
@@ -1,5 +1,237 @@
//version: 1707058017
plugins {
id 'com.gtnewhorizons.gtnhconvention'
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
classpath 'com.matthewprenger:CurseGradle:1.0-SNAPSHOT'
}
}
repositories {
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
}
maven {
url "http://dvs1.progwml6.com/files/maven"
}
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'com.matthewprenger.cursegradle'
ext.configFile = file('build.properties')
ext.config = parseConfig(configFile)
ext.priv = parseConfig(file('private.properties'))
version = "${config.version}-${config.build_number}"
group = "vazkii.botania" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = config.mod_name
minecraft {
version = "${config.mc_version}-${config.forge_version}"
runDir = "eclipse/assets"
mappings = "snapshot_20151229"
//This, does the token replacement.
//Though, I reccomend this to be replaced with a token such as @VERSION@
replace 'GRADLE:BUILD', config.build_number
replace 'GRADLE:VERSION', config.version
replaceIn 'LibMisc.java' //I may have missed another file, though I can only find it in here.
useDepAts = true
}
//This here is for SCP
repositories {
mavenCentral()
}
configurations {
sshAntTask
}
//End of the SCP config
dependencies {
compile files(
'Baubles-deobf.jar'
)
//compile "codechicken:CodeChickenLib:1.8-1.1.2.139:dev"
//compile "codechicken:CodeChickenCore:1.8-1.0.5.36:dev"
//compile "codechicken:NotEnoughItems:1.8-1.0.5.104:dev"
//compile "codechicken:ForgeMultipart:1.7.10-1.1.1.320:dev"
deobfCompile "mezz.jei:jei_1.8.9:2.13.7.64"
//and a bit more for SCP
sshAntTask "org.apache.ant:ant-jsch:1.7.1", "jsch:jsch:0.1.29"
}
compileJava {
sourceCompatibility = 1.8
targetCompatibility = 1.8
}
processResources {
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace version and mcversion
expand 'version': project.version, 'mcversion': project.minecraft.version
}
// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info', '**/psd/**'
}
}
/**
* These, go outside of the processResources {}* Though, this was added with the NEI intergation commit (8bf4680)
*/
task deobfJar(type: Jar) {
from(sourceSets.main.output)
archiveName = "${baseName} ${version}-deobf.${extension}"
}
artifacts {
archives deobfJar
}
/**
* Increments the buildnumber in your config file, and saves it
*/
task incrementBuildNumber(dependsOn: 'reobf') << {
config.build_number = (config.build_number.toString().toInteger()) + 1
configFile.withWriter {
config.toProperties().store(it, "")
}
file('web/versions.ini').append("\n${version}=${minecraft.version}")
file("${config.dir_repo}/version/${minecraft.version}.txt").write("${version}")
}
// I have no idea what I'm doing
task wtfGradle2(type: Copy) {
from(jar.destinationDir)
into file("${config.dir_output}/wtf")
}
// Seriously, I'm desperate to make this work
task wtfGradle1(type: Delete) {
dependsOn "wtfGradle2"
delete "${config.dir_output}/wtf/${deobfJar.archiveName}"
}
task output(type: Copy) {
dependsOn "wtfGradle1"
from(jar.destinationDir)
into file(config.dir_output)
}
task outputDeobf(type: Copy) {
dependsOn "output"
from(config.dir_output) {
include deobfJar.archiveName
}
into file("${config.dir_output}/deobf")
}
task forgecraft(type: Copy) {
dependsOn "outputDeobf"
from "${config.dir_output}/wtf"
into file(priv.dir_forgecraft)
}
task sort(type: Delete) {
dependsOn "forgecraft"
delete "${config.dir_output}/${deobfJar.archiveName}", "${config.dir_output}/wtf"
}
/**
* This is the upload task from the build.xml
*/
task upload() << {
scp('/files') {
fileset(file: jar.archivePath)
}
scp('/files/deobf') {
fileset(file: deobfJar.archivePath)
}
scp('/') {
fileset(file: 'web/changelog.txt')
fileset(file: 'web/versions.ini')
}
}
/**
* This is deply_web task
*/
task deployWeb << {
scp('/') {
fileset(dir: 'web') //everything from the web directory
}
}
def scp(String dir, Closure antFileset = {}) {
ant {
taskdef(
name: 'scp',
classname: 'org.apache.tools.ant.taskdefs.optional.ssh.Scp',
classpath: configurations.sshAntTask.asPath)
String dirstr = priv.scp_dir + dir
Map scpArgs = [
todir : dirstr,
password : priv.scp_pass,
sftp: true,
trust: 'yes'
]
delegate.scp(scpArgs) {
antFileset.delegate = delegate
antFileset()
}
}
}
def parseConfig(File config) {
config.withReader {
def prop = new Properties()
prop.load(it)
return (new ConfigSlurper().parse(prop))
}
}
jar {
//rename the default output, for some better... sanity with scipts
archiveName = "${baseName} ${version}.${extension}"
}
curseforge {
apiKey = priv.cfkey
project {
id = "225643"
changelog = """
See http://botaniamod.net/changelog.php#${version}
"""
releaseType = "release"
relations {
requiredLibrary 'baubles'
}
}
}
defaultTasks 'clean', 'build', 'sort', 'forgecraft', 'incrementBuildNumber', 'curse', 'upload'
+9
View File
@@ -0,0 +1,9 @@
#
#Fri Jan 08 18:17:27 GMT 2016
version=r1.8
dir_output=../Build Output/Botania/
forge_version=11.15.0.1688
mc_version=1.8.9
dir_repo=./
build_number=249
mod_name=Botania
+40
View File
@@ -0,0 +1,40 @@
Hey there. Looks like you want to contribute with an issue. Great. Here's what you have to do:
* Have a look through the [Botania FAQ](http://botaniamod.net/faq.php), to see if your issue has been solved already;
* Read through the steps on [Bug Reporting 101](http://vazkii.us/br101/) (You may skip this if you're already familiar with reporting issues, but it's good for newcomers);
* Note the following points:
* Issues regarding MCPC+/Cauldron that are not reproducible with forge only are **not accepted**;
* Issues regarding outdated versions of the mod are **not accepted**;
* Unless you manually update every mod on the pack to the latest, issues regarding any public modpack that is not officially maintained or supported by the botania developers (the ones in the modpack section of the website are not) are **not accepted**;
* Duplicate issues or issues that have been solved already (use the search feature!) will be closed without asking.
* Do not tag your issues' names. "Something Broke" is prefered to "[Bug] Something Broke" because there's a proper label system in place.
* Suggestions are **not** accepted here. Post them on the forums or reddit instead. If there's any still open they're old ones before this rule was added.
The following "bugs" are not accepted:
* Intended Behaviour
* Double tall flowers need be harvested with shears to not clutter the inventory
* Already fixed but people keep reporting it for some reason
* Wearing a Ring of Loki or Ring of the Aesir shows a wireframe below bedrock
* Not a botania problem/Not fixable
* Crash on startup with ChromatiCraft installed (update CC)
* Crash on startup with Blocks3D Mod installed
* Crash on opening the Lexica Botania with Enchiridion installed (update Enchiridion)
* Flowers don't render (Optifine issue)
* Mana Bursts get destroyed on Cauldron by the ClearLagg plugin (add botania:manaBurst to the ClearLagg blacklist)
* Force Relays destroy blocks when used very fast (Can't fix due to the nature of the block)
* Terrasteel crafting won't start (make sure your checkerboard is correct, there's Livingrock under the plate)
* The Horn of the Canopy doesn't break Thaumcraft leaves (Thaumcraft doesn't use the typical class or material)
* Some Baubles don't work properly on LAN (Baubles bug)
[Report the Issue](https://github.com/Vazkii/Botania/issues)!
You can find me at most times on [#vazkii @ irc.esper.net](http://webchat.esper.net/?channels=vazkii), if you need to speak with me about the issue you would report. Just make sure to use common sense and read what the bot tells you.
---
If you want to make a Pull Request keep these in mind:
* Do NOT use the github editor. Test your damn PRs before you submit them.
* I'm very strict when it comes to syntax. Make sure your PR's syntax matches the syntax of the rest of the code. That includes spacing after if/for/(etc), proper bracket usage, camel casing and copyleft headers on new classes.
* If your pull request edits very small chunks of code and isn't flawless I'll close it as it'll probably take less time to fix it myself rather than pull yours and change the code.
* Unless you have a very good reason for it, keep your PRs all in one commit. You can do it with [rebase](https://git-scm.com/docs/git-rebase).
+55
View File
@@ -0,0 +1,55 @@
# Devs
#vazkii=6
wiiv=marimorphosis
dylangk=munchdew
# Cool People
sl1pg8r=endoflame
direwolf20=thermalily
#wayofflowingtime=fallenKanade
wtfgeeks=daybloom
spitefulfox=tainthistle
gideonseymour=arcaneRose
#pahimar=medumone
# Flower Designers
jadedcat=jadedAmaranthus
pokefenn=hydroangeas
finvaara=bubbell
flaxbeard=kekimurus
# Patrons
devinpath=9
cheriekeks=6
orangeninja1=1
disbedan015=14
djcosmic2=3
utoxin=2
evrlost=10
belathus=1
vicceyr=0
superfortress=3
nematrec=15
pika_craft=3
lanman14444=13
noclassdeffound=9
emba=0
jordsta95=6
kei_kouma=15
megatronp=15
thorantin=6
fletchstudios=6
donaber=4
agamemnom=15
dqmhose=13
fma_winry=2
luckylucyf=14
epiczeus=7
fredfrog1234=15
pjfranke=5
_bloop=0
kgevans=15
l0nekitsune=14
swiftlileagle=14
gryphonn=11
loraanicus=10
-20
View File
@@ -1,20 +0,0 @@
// Add your dependencies here
dependencies {
api('com.github.GTNewHorizons:Baubles-Expanded:2.2.14-GTNH:dev')
api('com.github.GTNewHorizons:GTNHLib:0.9.62:dev')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.60:api') {transitive=false}
compileOnly('com.github.GTNewHorizons:ForgeMultipart:1.7.10:dev') {transitive=false}
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.96-GTNH:dev')
compileOnly('com.github.GTNewHorizons:Railcraft:9.17.26:api') {transitive=false}
compileOnly('com.github.GTNewHorizons:StorageDrawers:2.2.20-GTNH:api') {transitive=false}
compileOnly('curse.maven:cofh-lib-220333:2388748')
compileOnly('curse.maven:minefactory-reloaded-66672:2366150')
compileOnly('thaumcraft:Thaumcraft:1.7.10-4.2.3.5:dev')
compileOnly("net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev")
compileOnly("com.github.GTNewHorizons:StructureLib:1.4.34:dev")
}
+1
View File
@@ -0,0 +1 @@
sh gradlew deployWeb
+56
View File
@@ -0,0 +1,56 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<profiles version="2">
<profile kind="CleanUpProfile" name="BotaniaCleanup" version="2">
<setting id="cleanup.remove_unused_private_fields" value="true"/>
<setting id="cleanup.always_use_parentheses_in_expressions" value="false"/>
<setting id="cleanup.never_use_blocks" value="false"/>
<setting id="cleanup.remove_unused_private_methods" value="true"/>
<setting id="cleanup.add_missing_deprecated_annotations" value="true"/>
<setting id="cleanup.convert_to_enhanced_for_loop" value="true"/>
<setting id="cleanup.remove_unnecessary_nls_tags" value="true"/>
<setting id="cleanup.sort_members" value="false"/>
<setting id="cleanup.remove_unused_local_variables" value="true"/>
<setting id="cleanup.never_use_parentheses_in_expressions" value="true"/>
<setting id="cleanup.remove_unused_private_members" value="true"/>
<setting id="cleanup.remove_unnecessary_casts" value="true"/>
<setting id="cleanup.make_parameters_final" value="false"/>
<setting id="cleanup.use_this_for_non_static_field_access" value="true"/>
<setting id="cleanup.remove_private_constructors" value="true"/>
<setting id="cleanup.use_blocks" value="false"/>
<setting id="cleanup.always_use_this_for_non_static_method_access" value="false"/>
<setting id="cleanup.remove_trailing_whitespaces_all" value="true"/>
<setting id="cleanup.always_use_this_for_non_static_field_access" value="false"/>
<setting id="cleanup.use_this_for_non_static_field_access_only_if_necessary" value="true"/>
<setting id="cleanup.add_default_serial_version_id" value="false"/>
<setting id="cleanup.make_type_abstract_if_missing_method" value="false"/>
<setting id="cleanup.qualify_static_member_accesses_through_subtypes_with_declaring_class" value="true"/>
<setting id="cleanup.make_variable_declarations_final" value="false"/>
<setting id="cleanup.add_missing_nls_tags" value="false"/>
<setting id="cleanup.format_source_code" value="false"/>
<setting id="cleanup.qualify_static_method_accesses_with_declaring_class" value="false"/>
<setting id="cleanup.add_missing_override_annotations" value="true"/>
<setting id="cleanup.remove_unused_private_types" value="true"/>
<setting id="cleanup.add_missing_methods" value="false"/>
<setting id="cleanup.make_local_variable_final" value="true"/>
<setting id="cleanup.correct_indentation" value="true"/>
<setting id="cleanup.add_missing_override_annotations_interface_methods" value="true"/>
<setting id="cleanup.remove_unused_imports" value="true"/>
<setting id="cleanup.remove_trailing_whitespaces_ignore_empty" value="false"/>
<setting id="cleanup.make_private_fields_final" value="true"/>
<setting id="cleanup.add_generated_serial_version_id" value="true"/>
<setting id="cleanup.organize_imports" value="true"/>
<setting id="cleanup.remove_trailing_whitespaces" value="true"/>
<setting id="cleanup.sort_members_all" value="false"/>
<setting id="cleanup.use_blocks_only_for_return_and_throw" value="false"/>
<setting id="cleanup.add_missing_annotations" value="true"/>
<setting id="cleanup.use_parentheses_in_expressions" value="true"/>
<setting id="cleanup.qualify_static_field_accesses_with_declaring_class" value="false"/>
<setting id="cleanup.use_this_for_non_static_method_access_only_if_necessary" value="true"/>
<setting id="cleanup.use_this_for_non_static_method_access" value="true"/>
<setting id="cleanup.qualify_static_member_accesses_through_instances_with_declaring_class" value="true"/>
<setting id="cleanup.add_serial_version_id" value="false"/>
<setting id="cleanup.format_source_code_changes_only" value="false"/>
<setting id="cleanup.qualify_static_member_accesses_with_declaring_class" value="true"/>
<setting id="cleanup.always_use_blocks" value="true"/>
</profile>
</profiles>
+20
View File
@@ -0,0 +1,20 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?><templates><template autoinsert="false" context="gettercomment_context" deleted="false" description="Comment for getter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.gettercomment" name="gettercomment"/><template autoinsert="false" context="settercomment_context" deleted="false" description="Comment for setter method" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.settercomment" name="settercomment"/><template autoinsert="false" context="constructorcomment_context" deleted="false" description="Comment for created constructors" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorcomment" name="constructorcomment"/><template autoinsert="false" context="filecomment_context" deleted="false" description="Comment for created Java files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.filecomment" name="filecomment">/**
* This class was created by &lt;Vazkii&gt;. It's distributed as
* part of the ${project_name} Mod. Get the Source Code in github:
* https://github.com/Vazkii/${project_name}
*
* ${project_name} is Open Source and distributed under the
* ${project_name} License: http://botaniamod.net/license.php
*
* File Created @ [${date}, ${time} (GMT)]
*/</template><template autoinsert="false" context="typecomment_context" deleted="false" description="Comment for created types" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.typecomment" name="typecomment"/><template autoinsert="false" context="fieldcomment_context" deleted="false" description="Comment for fields" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.fieldcomment" name="fieldcomment"/><template autoinsert="false" context="methodcomment_context" deleted="false" description="Comment for non-overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodcomment" name="methodcomment"/><template autoinsert="false" context="overridecomment_context" deleted="false" description="Comment for overriding methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.overridecomment" name="overridecomment"/><template autoinsert="false" context="delegatecomment_context" deleted="false" description="Comment for delegate methods" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.delegatecomment" name="delegatecomment"/><template autoinsert="true" context="newtype_context" deleted="false" description="Newly created files" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.newtype" name="newtype">${filecomment}
${package_declaration}
${typecomment}
${type_declaration}</template><template autoinsert="true" context="classbody_context" deleted="false" description="Code in new class type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.classbody" name="classbody">
</template><template autoinsert="true" context="interfacebody_context" deleted="false" description="Code in new interface type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.interfacebody" name="interfacebody">
</template><template autoinsert="true" context="enumbody_context" deleted="false" description="Code in new enum type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.enumbody" name="enumbody">
</template><template autoinsert="true" context="annotationbody_context" deleted="false" description="Code in new annotation type bodies" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.annotationbody" name="annotationbody">
</template><template autoinsert="true" context="catchblock_context" deleted="false" description="Code in new catch blocks" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.catchblock" name="catchblock">// ${todo} Auto-generated catch block
${exception_var}.printStackTrace();</template><template autoinsert="false" context="methodbody_context" deleted="false" description="Code in created method stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.methodbody" name="methodbody"/><template autoinsert="true" context="constructorbody_context" deleted="false" description="Code in created constructor stubs" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.constructorbody" name="constructorbody">${body_statement}
// ${todo} Auto-generated constructor stub</template><template autoinsert="true" context="getterbody_context" deleted="false" description="Code in created getters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.getterbody" name="getterbody">return ${field};</template><template autoinsert="true" context="setterbody_context" deleted="false" description="Code in created setters" enabled="true" id="org.eclipse.jdt.ui.text.codetemplates.setterbody" name="setterbody">${field} = ${param};</template></templates>
-229
View File
@@ -1,229 +0,0 @@
# ExampleMod tag to use as Blowdryer (Spotless, etc.) settings version, leave empty to disable.
# LOCAL to test local config updates.
gtnh.settings.blowdryerTag = 0.2.0
# Human-readable mod name, available for mcmod.info population.
modName = Botania
# Case-sensitive identifier string, available for mcmod.info population and used for automatic mixin JSON generation.
# Conventionally lowercase.
modId = Botania
# Root package of the mod, used to find various classes in other properties,
# mcmod.info substitution, enabling assertions in run tasks, etc.
modGroup = vazkii.botania
# Whether to use modGroup as the maven publishing group.
# When false, com.github.GTNewHorizons is used.
useModGroupForPublishing = false
# Updates your build.gradle and settings.gradle automatically whenever an update is available.
autoUpdateBuildScript = false
# Version of Minecraft to target
minecraftVersion = 1.7.10
# Version of Minecraft Forge to target
forgeVersion = 10.13.4.1614
# Specify an MCP channel for dependency deobfuscation and the deobfParams task.
channel = stable
# Specify an MCP mappings version for dependency deobfuscation and the deobfParams task.
mappingsVersion = 12
# Defines other MCP mappings for dependency deobfuscation.
remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/
# Select a default username for testing your mod. You can always override this per-run by running
# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
developmentEnvironmentUserName = Developer
# Enables modern Java syntax support. Valid values:
# - false: No modern syntax, Java 8 only
# - jabel: Jabel syntax-only support, compiles to J8 bytecode
# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs)
# - modern: Native modern Java bytecode, no downgrading
enableModernJavaSyntax = jvmDowngrader
# If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues,
# and should *not* be used in most situations. -1 disables this.
# forceToolchainVersion = -1
# Target JVM version for JVM Downgrader bytecode downgrading.
# Only used when enableModernJavaSyntax = jvmDowngrader
# downgradeTargetVersion = 8
# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only).
# Classes will be available in META-INF/versions/N/ for each version N in this list.
# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade).
# jvmDowngraderMultiReleaseVersions = 21,25
# Specifies how JVM Downgrader API stubs are provided. Options:
# - shade: Shade minimized stubs into the jar
# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint)
# - external: Another dependency provides stubs (no constraint, no warning)
# - (empty): Warning reminding you to configure stubs
# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md
jvmDowngraderStubsProvider = gtnhlib
# Enables injecting missing generics into the decompiled source code for a better coding experience.
# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
enableGenericInjection = true
# Generate a class with a String field for the mod version named as defined below.
# If generateGradleTokenClass is empty or not missing, no such class will be generated.
# If gradleTokenVersion is empty or missing, the field will not be present in the class.
generateGradleTokenClass = vazkii.botania.common.Tags
# Name of the token containing the project's current version to generate/replace.
gradleTokenVersion = VERSION
# [DEPRECATED]
# Multiple source files can be defined here by providing a comma-separated list: Class1.java,Class2.java,Class3.java
# public static final String VERSION = "GRADLETOKEN_VERSION";
# The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's
# version in @Mod([...], version = VERSION, [...]).
# Leave these properties empty to skip individual token replacements.
# replaceGradleTokenInFile =
# 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
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# There can be multiple files in a space-separated list.
# Example value: mymodid_at.cfg nei_at.cfg
accessTransformersFile = botania_at.cfg
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main.
# This can speed up compile times thanks to not running the mixin annotation processor on all input sources.
# Mixin classes will have access to "main" classes, but not the other way around.
separateMixinSourceSet =
# Adds some debug arguments like verbose output and class export.
usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
# This parameter is for legacy compatibility only
# Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin
coreModClass =
# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class
# that is 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
# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated into your jar. It is your
# responsibility to check the license and request permission for distribution if required.
usesShadowedDependencies = false
# If disabled, won't remove unused classes from shadowed 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
# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
includeWellKnownRepositories = true
# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated
# list of strings, with the acceptable keys being(case does not matter):
# cursemaven
# modrinth
excludeWellKnownRepositories =
# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables.
# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle.
usesMavenPublishing = true
# Maven repository to publish the mod to.
# mavenPublishUrl = https\://nexus.gtnewhorizons.com/repository/releases/
# Publishing to Modrinth requires you to set the MODRINTH_TOKEN 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 to Modrinth.
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:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN 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.
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
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
curseForgeRelations =
# Optional parameter to customize the produced artifacts. Use this to preserve artifact naming when migrating older
# projects. New projects should not use this parameter.
# customArchiveBaseName =
# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory.
# runClientWorkingDirectory = run/client
# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory.
# runServerWorkingDirectory = run/server
# Optional parameter to have the build automatically fail if an illegal version is used.
# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
# The check is ONLY performed if the version is a git tag.
# Note: the specified string must be escaped, so e.g. 1\\.1\\.\\d+ instead of 1\.1\.\d+
# versionPattern =
# Uncomment to prevent the source code from being published.
# noPublishedSources = true
# Uncomment this to disable Spotless checks.
# This should only be uncommented to keep it easier to sync with upstream/other forks.
# That is, if there is no other active fork/upstream, NEVER change this.
disableSpotless = true
# Uncomment this to disable Checkstyle checks (currently wildcard import check).
# disableCheckstyle = true
# Override the IDEA build type. Valid values are: "" (leave blank, do not override), "idea" (force use native IDEA build), "gradle"
# (force use delegated build).
# This is meant to be set in $HOME/.gradle/gradle.properties.
# e.g. add "systemProp.org.gradle.project.ideaOverrideBuildType=idea" will override the build type to be native build.
# WARNING: If you do use this option, it will overwrite whatever you have in your existing projects. This might not be what you want!
# Usually there is no need to uncomment this here as other developers do not necessarily use the same build type as you.
# ideaOverrideBuildType = idea
# Whether IDEA should run spotless checks when pressing the Build button.
# This is meant to be set in $HOME/.gradle/gradle.properties.
# ideaCheckSpotlessOnBuild = true
# Non-GTNH properties
org.gradle.configuration-cache = true
org.gradle.parallel = true
-12
View File
@@ -1,12 +0,0 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/cf726b4a1c84b50457225f9bba6d7650/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/d76df094a9cbbabd3b08251f9e61444a/redirect
toolchainVersion=25
Binary file not shown.
+2 -3
View File
@@ -1,7 +1,6 @@
#Mon Sep 14 12:28:28 PDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
Vendored
+117 -203
View File
@@ -1,248 +1,162 @@
#!/bin/sh
#
# Copyright © 2015 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.
#
# SPDX-License-Identifier: Apache-2.0
#
#!/usr/bin/env bash
##############################################################################
#
# 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/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##
## Gradle start up script for UN*X
##
##############################################################################
# Attempt to set APP_HOME
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD=maximum
MAX_FD="maximum"
warn () {
warn ( ) {
echo "$*"
} >&2
}
die () {
die ( ) {
echo
echo "$*"
echo
exit 1
} >&2
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD=$JAVA_HOME/jre/sh/java
JAVACMD="$JAVA_HOME/jre/sh/java"
else
JAVACMD=$JAVA_HOME/bin/java
JAVACMD="$JAVA_HOME/bin/java"
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
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.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
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" )
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
# 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
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# 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
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
# 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 optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# 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" "$@"
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
Vendored
-93
View File
@@ -1,93 +0,0 @@
@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
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
set DIRNAME=%~dp0
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if %ERRORLEVEL% equ 0 goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto execute
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:execute
@rem Setup the command line
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
-2
View File
@@ -1,2 +0,0 @@
before_install:
- ./gradlew setupCIWorkspace
+4
View File
@@ -0,0 +1,4 @@
scp_dir=
scp_pass=
cfkey=
dir_forgecraft=../Build Output/Botania/
-2
View File
@@ -1,2 +0,0 @@
repositories {
}
-23
View File
@@ -1,23 +0,0 @@
pluginManagement {
repositories {
maven {
// RetroFuturaGradle
name "GTNH Maven"
url "https://nexus.gtnewhorizons.com/repository/public/"
mavenContent {
includeGroup("com.gtnewhorizons")
includeGroupByRegex("com\\.gtnewhorizons\\..+")
}
}
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.24'
}
@@ -0,0 +1,42 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import org.apache.logging.log4j.Level;
import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger;
public final class BCLog {
public static final Logger logger = LogManager.getLogger("BuildCraft");
/** Deactivate constructor */
private BCLog() {}
@Deprecated
public static void logErrorAPI(String mod, Throwable error, Class<?> classFile) {
logErrorAPI(error, classFile);
}
public static void logErrorAPI(Throwable error, Class<?> classFile) {
StringBuilder msg = new StringBuilder("API error! Please update your mods. Error: ");
msg.append(error);
StackTraceElement[] stackTrace = error.getStackTrace();
if (stackTrace.length > 0) {
msg.append(", ").append(stackTrace[0]);
}
logger.log(Level.ERROR, msg.toString());
if (classFile != null) {
msg.append("API error: ").append(classFile.getSimpleName()).append(" is loaded from ").append(classFile.getProtectionDomain().getCodeSource().getLocation());
logger.log(Level.ERROR, msg.toString());
}
}
@Deprecated
public static String getVersion() {
return BuildCraftAPI.getVersion();
}
}
@@ -0,0 +1,52 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import java.lang.reflect.Method;
import java.util.HashMap;
import java.util.Set;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import net.minecraft.block.Block;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public final class BuildCraftAPI {
public static ICoreProxy proxy;
public static final Set<Block> softBlocks = Sets.newHashSet();
public static final HashMap<String, IWorldProperty> worldProperties = Maps.newHashMap();
/** Deactivate constructor */
private BuildCraftAPI() {}
public static String getVersion() {
try {
Class<?> clazz = Class.forName("buildcraft.core.Version");
Method method = clazz.getDeclaredMethod("getVersion");
return String.valueOf(method.invoke(null));
} catch (Exception e) {
return "UNKNOWN VERSION";
}
}
public static IWorldProperty getWorldProperty(String name) {
return worldProperties.get(name);
}
public static void registerWorldProperty(String name, IWorldProperty property) {
if (worldProperties.containsKey(name)) {
BCLog.logger.warn("The WorldProperty key '" + name + "' is being overidden with " + property.getClass().getSimpleName() + "!");
}
worldProperties.put(name, property);
}
public static boolean isSoftBlock(World world, BlockPos pos) {
return worldProperties.get("soft").get(world, pos);
}
}
@@ -0,0 +1,48 @@
package buildcraft.api.core;
import java.util.Map;
import com.google.common.collect.Maps;
import net.minecraftforge.common.config.Property;
/** Use this to access the various config options. It is recommended that you use this as opposed to the variables in
* the mod, as users may only install the modules that they want, and not the one you may have refereed to. */
@Deprecated
public final class ConfigAccessor {
public enum EMod {
CORE,
BUILDERS,
ENERGY,
FACTORY,
ROBITICS,
SILICON,
TRANSPORT
}
private static Map<EMod, IBuildCraftMod> mods = Maps.newHashMap();
private ConfigAccessor() {}
public static Property getOption(EMod mod, String name) {
if (mods.containsKey(mod)) {
return mods.get(mod).getOption(name);
} else {
return null;
}
}
public static boolean getBoolean(EMod mod, String name, boolean defaultBoolean) {
Property prop = getOption(mod, name);
if (prop == null) {
return defaultBoolean;
} else {
return prop.getBoolean(defaultBoolean);
}
}
/** WARNING: INTERNAL USE ONLY! */
public static void addMod(EMod mod, IBuildCraftMod actual) {
mods.put(mod, actual);
}
}
@@ -0,0 +1,147 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import java.util.Locale;
import java.util.Random;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.IStringSerializable;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/** Use minecraft's EnumDyeColor in as many places as possible. */
@Deprecated
public enum EnumColor implements IStringSerializable {
BLACK,
RED,
GREEN,
BROWN,
BLUE,
PURPLE,
CYAN,
LIGHT_GRAY,
GRAY,
PINK,
LIME,
YELLOW,
LIGHT_BLUE,
MAGENTA,
ORANGE,
WHITE;
public static final EnumColor[] VALUES = values();
public static final String[] DYES = { "dyeBlack", "dyeRed", "dyeGreen", "dyeBrown", "dyeBlue", "dyePurple", "dyeCyan", "dyeLightGray", "dyeGray",
"dyePink", "dyeLime", "dyeYellow", "dyeLightBlue", "dyeMagenta", "dyeOrange", "dyeWhite" };
public static final String[] NAMES = { "Black", "Red", "Green", "Brown", "Blue", "Purple", "Cyan", "LightGray", "Gray", "Pink", "Lime", "Yellow",
"LightBlue", "Magenta", "Orange", "White" };
public static final int[] DARK_HEX = { 0x2D2D2D, 0xA33835, 0x394C1E, 0x5C3A24, 0x3441A2, 0x843FBF, 0x36809E, 0x888888, 0x444444, 0xE585A0,
0x3FAA36, 0xCFC231, 0x7F9AD1, 0xFF64FF, 0xFF6A00, 0xFFFFFF };
public static final int[] LIGHT_HEX = { 0x181414, 0xBE2B27, 0x007F0E, 0x89502D, 0x253193, 0x7e34bf, 0x299799, 0xa0a7a7, 0x7A7A7A, 0xD97199,
0x39D52E, 0xFFD91C, 0x66AAFF, 0xD943C6, 0xEA7835, 0xe4e4e4 };
@SideOnly(Side.CLIENT)
private static ResourceLocation iconSheet;
@SideOnly(Side.CLIENT)
private static TextureAtlasSprite[] brushSprites;
public int getDarkHex() {
return DARK_HEX[ordinal()];
}
public int getLightHex() {
return LIGHT_HEX[ordinal()];
}
public static EnumColor fromId(int id) {
if (id < 0 || id >= VALUES.length) {
return WHITE;
}
return VALUES[id];
}
public static EnumColor fromDye(String dyeTag) {
for (int id = 0; id < DYES.length; id++) {
if (DYES[id].equals(dyeTag)) {
return VALUES[id];
}
}
return null;
}
public static EnumColor fromName(String name) {
for (int id = 0; id < NAMES.length; id++) {
if (NAMES[id].equals(name)) {
return VALUES[id];
}
}
return null;
}
public static EnumColor getRand() {
return VALUES[new Random().nextInt(VALUES.length)];
}
public EnumColor getNext() {
EnumColor next = VALUES[(ordinal() + 1) % VALUES.length];
return next;
}
public EnumColor getPrevious() {
EnumColor previous = VALUES[(ordinal() + VALUES.length - 1) % VALUES.length];
return previous;
}
public EnumColor inverse() {
return EnumColor.VALUES[15 - ordinal()];
}
public String getTag() {
return "color." + name().replace("_", ".").toLowerCase(Locale.ENGLISH);
}
public String getBasicTag() {
return name().replace("_", ".").toLowerCase(Locale.ENGLISH);
}
@Override
public String getName() {
return NAMES[ordinal()];
}
public String getLocalizedName() {
return StatCollector.translateToLocal(getTag());
}
public String getDye() {
return DYES[ordinal()];
}
@Override
public String toString() {
String s = name().replace("_", " ");
String[] words = s.split(" ");
StringBuilder b = new StringBuilder();
for (String word : words) {
b.append(word.charAt(0)).append(word.substring(1).toLowerCase(Locale.ENGLISH)).append(" ");
}
return b.toString().trim();
}
@SideOnly(Side.CLIENT)
public static void registerSprites(TextureAtlasSprite[] sprites) {
brushSprites = sprites;
}
@SideOnly(Side.CLIENT)
public TextureAtlasSprite getSprite() {
return brushSprites[ordinal()];
}
}
@@ -0,0 +1,118 @@
package buildcraft.api.core;
import java.util.Locale;
import java.util.Map;
import com.google.common.collect.Maps;
import net.minecraft.nbt.NBTBase;
import net.minecraft.nbt.NBTBase.NBTPrimitive;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
import io.netty.buffer.ByteBuf;
public enum EnumPipePart implements IStringSerializable,INetworkLoadable_BC8<EnumPipePart> {
DOWN(EnumFacing.DOWN),
UP(EnumFacing.UP),
NORTH(EnumFacing.NORTH),
SOUTH(EnumFacing.SOUTH),
WEST(EnumFacing.WEST),
EAST(EnumFacing.EAST),
/** CENTER, UNKNOWN and ALL are all valid uses of this constant. */
CENTER(null);
private static final Map<EnumFacing, EnumPipePart> facingMap = Maps.newEnumMap(EnumFacing.class);
private static final Map<String, EnumPipePart> nameMap = Maps.newHashMap();
private static final int MAX_VALUES = values().length;
public final EnumFacing face;
static {
for (EnumPipePart part : values()) {
nameMap.put(part.name(), part);
if (part.face != null) facingMap.put(part.face, part);
}
}
public static EnumPipePart fromFacing(EnumFacing face) {
if (face == null) return EnumPipePart.CENTER;
return facingMap.get(face);
}
public static EnumPipePart[] validFaces() {
return new EnumPipePart[] { DOWN, UP, NORTH, SOUTH, WEST, EAST };
}
public static EnumPipePart fromMeta(int meta) {
if (meta < 0 || meta >= MAX_VALUES) return EnumPipePart.CENTER;
return values()[meta];
}
private EnumPipePart(EnumFacing face) {
this.face = face;
}
public int getIndex() {
if (face == null) return 6;
return face.getIndex();
}
@Override
public String getName() {
return name().toLowerCase(Locale.ROOT);
}
public EnumPipePart next() {
switch (this) {
case DOWN:
return EAST;
case EAST:
return NORTH;
case NORTH:
return SOUTH;
case SOUTH:
return UP;
case UP:
return WEST;
case WEST:
return DOWN;
default:
return DOWN;
}
}
public EnumPipePart opposite() {
if (this == CENTER) return CENTER;
return fromFacing(face.getOpposite());
}
public static EnumPipePart readFromNBT(NBTBase base) {
if (base == null) return CENTER;
if (base instanceof NBTTagString) {
NBTTagString nbtString = (NBTTagString) base;
String string = nbtString.getString();
return nameMap.containsKey(string) ? nameMap.get(string) : CENTER;
} else {
byte ord = ((NBTPrimitive) base).getByte();
if (ord < 0 || ord > 6) return CENTER;
return values()[ord];
}
}
public NBTBase writeToNBT() {
return new NBTTagString(name());
}
@Override
public EnumPipePart readFromByteBuf(ByteBuf buf) {
byte ord = buf.readByte();
return fromMeta(ord);
}
@Override
public void writeToByteBuf(ByteBuf buf) {
buf.writeByte(ordinal());
}
}
@@ -0,0 +1,17 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
/** To be implemented by TileEntities able to provide a square area on the world, typically BuildCraft markers. */
public interface IAreaProvider {
BlockPos min();
BlockPos max();
/** Remove from the world all objects used to define the area. */
void removeFromWorld();
}
@@ -0,0 +1,19 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
public interface IBox extends IZone {
IBox expand(int amount);
IBox contract(int amount);
BlockPos min();
BlockPos max();
void createLaserData();
}
@@ -0,0 +1,7 @@
package buildcraft.api.core;
import net.minecraftforge.common.config.Property;
public interface IBuildCraftMod {
Property getOption(String name);
}
+14
View File
@@ -0,0 +1,14 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import java.lang.ref.WeakReference;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.world.WorldServer;
public interface ICoreProxy {
WeakReference<EntityPlayer> getBuildCraftPlayer(WorldServer world);
}
@@ -0,0 +1,13 @@
package buildcraft.api.core;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IIconProvider {
public TextureAtlasSprite getIcon(int iconIndex);
@SideOnly(Side.CLIENT)
public void registerIcons(TextureMap iconRegister);
}
@@ -0,0 +1,26 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.item.ItemStack;
public interface IInvSlot {
/** Returns the slot number of the underlying Inventory.
*
* @return the slot number */
int getIndex();
boolean canPutStackInSlot(ItemStack stack);
boolean canTakeStackFromSlot(ItemStack stack);
boolean isItemValidForSlot(ItemStack stack);
ItemStack decreaseStackInSlot(int amount);
ItemStack getStackInSlot();
void setStackInSlot(ItemStack stack);
}
@@ -0,0 +1,14 @@
package buildcraft.api.core;
import net.minecraft.nbt.NBTBase;
/** @param <T> The type that will be loaded from and saved too. This essentially allows Immutable objects to be safely
* loaded without helper methods everywhere. However you are allowed to return this if you are a mutable
* object */
public interface INBTLoadable_BC8<T> {
/** @return An object that has the properties loaded. WARNIG! This might be the same object as the one this method
* was called on! (You should always replace the object you have stored with whatever this returns) */
T readFromNBT(NBTBase nbt);
NBTBase writeToNBT();
}
@@ -0,0 +1,12 @@
package buildcraft.api.core;
import net.minecraft.nbt.NBTTagCompound;
/** Use {@link INBTLoadable_BC8} instead of this, as this gives you more control over what NBT goes where, and what
* objects are allowed to do. */
@Deprecated
public interface INBTStoreable {
void readFromNBT(NBTTagCompound tag);
void writeToNBT(NBTTagCompound tag);
}
@@ -0,0 +1,9 @@
package buildcraft.api.core;
import io.netty.buffer.ByteBuf;
public interface INetworkLoadable_BC8<T> {
T readFromByteBuf(ByteBuf buf);
void writeToByteBuf(ByteBuf buf);
}
@@ -0,0 +1,15 @@
package buildcraft.api.core;
import java.util.List;
import net.minecraft.util.BlockPos;
/** To be implemented by TileEntities able to provide a path on the world, typically BuildCraft path markers. */
public interface IPathProvider {
List<BlockPos> getPath();
/**
* Remove from the world all objects used to define the path.
*/
void removeFromWorld();
}
@@ -0,0 +1,21 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
package buildcraft.api.core;
import io.netty.buffer.ByteBuf;
/** Use {@link INetworkLoadable_BC8} instead, as that gives you more control over how you use objects */
@Deprecated
public interface ISerializable {
/** Serializes the state to the stream
*
* @param data */
void writeData(ByteBuf data);
/** Deserializes the state from the stream
*
* @param data */
void readData(ByteBuf data);
}
+14
View File
@@ -0,0 +1,14 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public interface IWorldProperty {
boolean get(World world, BlockPos pos);
void clear();
}
+26
View File
@@ -0,0 +1,26 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import java.util.Random;
import net.minecraft.util.BlockPos;
import net.minecraft.util.Vec3;
public interface IZone {
/** Returns the smallest possible distance that the index would have to be changed by in order for
* {@link #contains(Vec3)} to return true. If the position is already inside then this will return 0 */
double distanceTo(BlockPos index);
/** Returns {@link #distanceTo(BlockPos)} but squared. Usually this will be quicker to calculate. */
double distanceToSquared(BlockPos index);
/** Returns true if the point is enclosed by this zone, such that none of the coordinates lie outside the range
* specified by this zone. */
boolean contains(Vec3 point);
/** Gets a random position that {@link #contains(Vec3)} will return true. */
BlockPos getRandomBlockPos(Random rand);
}
+39
View File
@@ -0,0 +1,39 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import java.util.Arrays;
public final class JavaTools {
private JavaTools() {
}
public static <T> T[] concat(T[] first, T[] second) {
T[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
public static int[] concat(int[] first, int[] second) {
int[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
public static float[] concat(float[] first, float[] second) {
float[] result = Arrays.copyOf(first, first.length + second.length);
System.arraycopy(second, 0, result, first.length, second.length);
return result;
}
public static String surroundWithQuotes(String stringToSurroundWithQuotes) {
return String.format("\"%s\"", stringToSurroundWithQuotes);
}
public static String stripSurroundingQuotes(String stringToStripQuotes) {
return stringToStripQuotes.replaceAll("^\"|\"$", "");
}
}
@@ -0,0 +1,68 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.world.World;
public class SafeTimeTracker {
private long lastMark = Long.MIN_VALUE;
private long duration = -1;
private long randomRange = 0;
private long lastRandomDelay = 0;
private long internalDelay = 1;
/** Only use this if the delay time changes (say, if you use this to determine when a refining should be complete */
public SafeTimeTracker() {
}
public SafeTimeTracker(long delay) {
internalDelay = delay;
}
/** In many situations, it is a bad idea to have all objects of the same kind to be waiting for the exact same
* amount of time, as that can lead to some situation where they're all synchronized and got to work all at the same
* time. When created with a random range, the mark that is set when reaching the expect delay will be added with a
* random number between [0, range[, meaning that the event will take between 0 and range more tick to run. */
public SafeTimeTracker(long delay, long random) {
internalDelay = delay;
randomRange = random;
}
public boolean markTimeIfDelay(World world) {
return markTimeIfDelay(world, internalDelay);
}
/** Return true if a given delay has passed since last time marked was called successfully. */
public boolean markTimeIfDelay(World world, long delay) {
if (world == null) {
return false;
}
long currentTime = world.getTotalWorldTime();
if (currentTime < lastMark) {
lastMark = currentTime;
return false;
} else if (lastMark + delay + lastRandomDelay <= currentTime) {
duration = currentTime - lastMark;
lastMark = currentTime;
lastRandomDelay = (int) (Math.random() * randomRange);
return true;
} else {
return false;
}
}
public long durationOfLastDelay() {
return duration > 0 ? duration : 0;
}
public void markTime(World world) {
lastMark = world.getTotalWorldTime();
}
}
@@ -0,0 +1,125 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidStack;
/** This class is used whenever stacks needs to be stored as keys. */
public final class StackKey {
public final ItemStack stack;
public final FluidStack fluidStack;
public StackKey(FluidStack fluidStack) {
this(null, fluidStack);
}
public StackKey(ItemStack stack) {
this(stack, null);
}
public StackKey(ItemStack stack, FluidStack fluidStack) {
this.stack = stack;
this.fluidStack = fluidStack;
}
public static StackKey stack(Item item, int amount, int damage) {
return new StackKey(new ItemStack(item, amount, damage));
}
public static StackKey stack(Block block, int amount, int damage) {
return new StackKey(new ItemStack(block, amount, damage));
}
public static StackKey stack(Item item) {
return new StackKey(new ItemStack(item, 1, 0));
}
public static StackKey stack(Block block) {
return new StackKey(new ItemStack(block, 1, 0));
}
public static StackKey stack(ItemStack itemStack) {
return new StackKey(itemStack);
}
public static StackKey fluid(Fluid fluid, int amount) {
return new StackKey(new FluidStack(fluid, amount));
}
public static StackKey fluid(Fluid fluid) {
return new StackKey(new FluidStack(fluid, FluidContainerRegistry.BUCKET_VOLUME));
}
public static StackKey fluid(FluidStack fluidStack) {
return new StackKey(fluidStack);
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (o == null || o.getClass() != StackKey.class) {
return false;
}
StackKey k = (StackKey) o;
if ((stack == null ^ k.stack == null) || (fluidStack == null ^ k.fluidStack == null)) {
return false;
}
if (stack != null) {
if (stack.getItem() != k.stack.getItem() || stack.getHasSubtypes() && stack.getItemDamage() != k.stack.getItemDamage() || !objectsEqual(
stack.getTagCompound(), k.stack.getTagCompound())) {
return false;
}
}
if (fluidStack != null) {
if (fluidStack.getFluid().getID() != k.fluidStack.getFluid().getID() || fluidStack.amount != k.fluidStack.amount || !objectsEqual(
fluidStack.tag, k.fluidStack.tag)) {
return false;
}
}
return true;
}
@Override
public int hashCode() {
int result = 7;
if (stack != null) {
result = 31 * result + stack.getItem().hashCode();
result = 31 * result + stack.getItemDamage();
result = 31 * result + objectHashCode(stack.getTagCompound());
}
result = 31 * result + 7;
if (fluidStack != null) {
result = 31 * result + fluidStack.getFluid().getID();
result = 31 * result + fluidStack.amount;
result = 31 * result + objectHashCode(fluidStack.tag);
}
return result;
}
private boolean objectsEqual(Object o1, Object o2) {
if (o1 == null && o2 == null) {
return true;
} else if (o1 == null || o2 == null) {
return false;
} else {
return o1.equals(o2);
}
}
private int objectHashCode(Object o) {
return o != null ? o.hashCode() : 0;
}
public StackKey copy() {
return new StackKey(stack != null ? stack.copy() : null, fluidStack != null ? fluidStack.copy() : null);
}
}
@@ -0,0 +1,10 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License.
* Please check the contents of the license, which should be located
* as "LICENSE.API" in the BuildCraft source code distribution.
*/
@API(apiVersion = "2.0", owner = "BuildCraft|Core", provides = "BuildCraftAPI|core")
package buildcraft.api.core;
import net.minecraftforge.fml.common.API;
@@ -0,0 +1,27 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
package buildcraft.api.core.render;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.IBlockAccess;
/* This interface designates a block as a state machine responsible for culling For implementation details look into
* FakeBlock implementation */
public interface ICullable {
// Side Rendering States
// They are used to effectively cull obstructed sides while processing facades.
// Make sure your implementation is correct otherwise expect FPS drop
void setRenderSide(EnumFacing side, boolean render);
void setRenderAllSides();
boolean shouldSideBeRendered(IBlockAccess blockAccess, BlockPos pos, int side);
void setRenderMask(int mask);
}
@@ -0,0 +1,7 @@
package buildcraft.api.core.render;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
public interface ITextureStateManager {
void set(TextureAtlasSprite icon);
}
@@ -0,0 +1,18 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
package buildcraft.api.core.render;
import net.minecraft.block.Block;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
public interface ITextureStates extends ICullable {
ITextureStateManager getTextureState();
TextureAtlasSprite getIcon(int side, int meta);
Block getBlock();
}
@@ -0,0 +1,54 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.gates;
import java.util.List;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import buildcraft.api.statements.IActionInternal;
import buildcraft.api.statements.IStatement;
import buildcraft.api.statements.IStatementParameter;
import buildcraft.api.statements.ITriggerInternal;
public abstract class GateExpansionController {
public final IGateExpansion type;
public final TileEntity pipeTile;
public GateExpansionController(IGateExpansion type, TileEntity pipeTile) {
this.pipeTile = pipeTile;
this.type = type;
}
public IGateExpansion getType() {
return type;
}
public boolean isActive() {
return false;
}
public void tick(IGate gate) {}
public void startResolution() {}
public boolean resolveAction(IStatement action, int count) {
return false;
}
public boolean isTriggerActive(IStatement trigger, IStatementParameter[] parameters) {
return false;
}
public void addTriggers(List<ITriggerInternal> list) {}
public void addActions(List<IActionInternal> list) {}
public void writeToNBT(NBTTagCompound nbt) {}
public void readFromNBT(NBTTagCompound nbt) {}
}
@@ -0,0 +1,61 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.gates;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.HashSet;
import java.util.Map;
import java.util.Set;
import com.google.common.collect.HashBiMap;
import net.minecraft.item.ItemStack;
public final class GateExpansions {
private static final Map<String, IGateExpansion> expansions = new HashMap<String, IGateExpansion>();
private static final ArrayList<IGateExpansion> expansionIDs = new ArrayList<IGateExpansion>();
private static final Map<IGateExpansion, ItemStack> recipes = HashBiMap.create();
private GateExpansions() {}
public static void registerExpansion(IGateExpansion expansion) {
registerExpansion(expansion.getUniqueIdentifier(), expansion);
}
public static void registerExpansion(String identifier, IGateExpansion expansion) {
expansions.put(identifier, expansion);
expansionIDs.add(expansion);
}
public static void registerExpansion(IGateExpansion expansion, ItemStack addedRecipe) {
registerExpansion(expansion.getUniqueIdentifier(), expansion);
recipes.put(expansion, addedRecipe);
}
public static IGateExpansion getExpansion(String identifier) {
return expansions.get(identifier);
}
public static Set<IGateExpansion> getExpansions() {
Set<IGateExpansion> set = new HashSet<IGateExpansion>();
set.addAll(expansionIDs);
return set;
}
public static Map<IGateExpansion, ItemStack> getRecipesForPostInit() {
return recipes;
}
// The code below is used by networking.
public static IGateExpansion getExpansionByID(int id) {
return expansionIDs.get(id);
}
public static int getExpansionID(IGateExpansion expansion) {
return expansionIDs.indexOf(expansion);
}
}
@@ -0,0 +1,30 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.gates;
import java.util.List;
import buildcraft.api.statements.IStatement;
import buildcraft.api.statements.IStatementParameter;
import buildcraft.api.statements.StatementSlot;
import buildcraft.api.statements.containers.ISidedStatementContainer;
import buildcraft.api.transport.IPipe;
public interface IGate extends ISidedStatementContainer {
@Deprecated
void setPulsing(boolean pulse);
IPipe getPipe();
List<IStatement> getTriggers();
List<IStatement> getActions();
List<StatementSlot> getActiveActions();
List<IStatementParameter> getTriggerParameters(int index);
List<IStatementParameter> getActionParameters(int index);
}
@@ -0,0 +1,34 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.gates;
import java.util.List;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.renderer.vertex.VertexFormat;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IGateExpansion {
String getUniqueIdentifier();
String getDisplayName();
GateExpansionController makeController(TileEntity pipeTile);
@SideOnly(Side.CLIENT)
void textureStitch(TextureMap map);
@SideOnly(Side.CLIENT)
IGateStaticRenderState getRenderState();
public interface IGateStaticRenderState {
List<BakedQuad> bake(VertexFormat format);
}
}
@@ -0,0 +1,8 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
@API(apiVersion = "4.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|gates")
package buildcraft.api.gates;
import net.minecraftforge.fml.common.API;
+9
View File
@@ -0,0 +1,9 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
public class ActionState {
}
@@ -0,0 +1,12 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
public interface IActionExternal extends IStatement {
void actionActivate(TileEntity target, EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
}
@@ -0,0 +1,11 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
public interface IActionInternal extends IStatement {
void actionActivate(IStatementContainer source, IStatementParameter[] parameters);
}
@@ -0,0 +1,19 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import java.util.Collection;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
public interface IActionProvider {
/** Returns the list of actions that are available from the statement container holding the gate. */
Collection<IActionInternal> getInternalActions(IStatementContainer container);
/** Returns the list of actions available to a gate next to the given block. */
Collection<IActionExternal> getExternalActions(EnumFacing side, TileEntity tile);
}
@@ -0,0 +1,9 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
public interface IActionReceptor {
void actionActivated(IStatement statement, IStatementParameter[] parameters);
}
@@ -0,0 +1,13 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import java.util.List;
public interface IOverrideDefaultStatements {
List<ITriggerExternal> overrideTriggers();
List<IActionExternal> overrideActions();
}
@@ -0,0 +1,36 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IStatement {
/** Every statement needs a unique tag, it should be in the format of "&lt;modid&gt;:&lt;name&gt;.
*
* @return the unique id */
String getUniqueTag();
/** Return the maximum number of parameter this statement can have, 0 if none. */
int maxParameters();
/** Return the minimum number of parameter this statement can have, 0 if none. */
int minParameters();
/** Return the statement description in the UI */
String getDescription();
/** Create parameters for the statement. */
IStatementParameter createParameter(int index);
/** This returns the statement after a left rotation. Used in particular in blueprints orientation. */
IStatement rotateLeft();
/** This should return the icon for this statement, suitable for rending directly into a GUI. This should refer to a
* texture on the map block texture map. */
@SideOnly(Side.CLIENT)
TextureAtlasSprite getGuiSprite();
}
@@ -0,0 +1,12 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.tileentity.TileEntity;
/** This is implemented by objects containing Statements, such as Gates and TileEntities. */
public interface IStatementContainer {
TileEntity getTile();
}
@@ -0,0 +1,36 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IStatementParameter {
/** Every parameter needs a unique tag, it should be in the format of "&lt;modid&gt;:&lt;name&gt;".
*
* @return the unique id */
String getUniqueTag();
@SideOnly(Side.CLIENT)
TextureAtlasSprite getIcon();
ItemStack getItemStack();
/** Return the parameter description in the UI */
String getDescription();
void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse);
void readFromNBT(NBTTagCompound compound);
void writeToNBT(NBTTagCompound compound);
/** This returns the parameter after a left rotation. Used in particular in blueprints orientation. */
IStatementParameter rotateLeft();
}
@@ -0,0 +1,14 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
public interface ITriggerExternal extends IStatement {
boolean isTriggerActive(TileEntity target, EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
}
@@ -0,0 +1,16 @@
package buildcraft.api.statements;
import net.minecraft.util.EnumFacing;
/** This interface can be used by tiles to override external trigger behaviour.
*
* Please use wisely. */
public interface ITriggerExternalOverride {
public enum Result {
TRUE,
FALSE,
IGNORE
}
Result override(EnumFacing side, IStatementContainer source, IStatementParameter[] parameters);
}
@@ -0,0 +1,11 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
public interface ITriggerInternal extends IStatement {
boolean isTriggerActive(IStatementContainer source, IStatementParameter[] parameters);
}
@@ -0,0 +1,20 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import java.util.Collection;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
public interface ITriggerProvider {
/** Returns the list of triggers that are available from the object holding the gate. */
Collection<ITriggerInternal> getInternalTriggers(IStatementContainer container);
/** Returns the list of triggers available to a gate next to the given block. */
Collection<ITriggerExternal> getExternalTriggers(EnumFacing side, TileEntity tile);
}
@@ -0,0 +1,177 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import buildcraft.api.core.BCLog;
public final class StatementManager {
public static Map<String, IStatement> statements = new HashMap<String, IStatement>();
public static Map<String, Class<? extends IStatementParameter>> parameters = new HashMap<String, Class<? extends IStatementParameter>>();
private static List<ITriggerProvider> triggerProviders = new LinkedList<ITriggerProvider>();
private static List<IActionProvider> actionProviders = new LinkedList<IActionProvider>();
/** Deactivate constructor */
private StatementManager() {}
public static void registerTriggerProvider(ITriggerProvider provider) {
if (provider != null && !triggerProviders.contains(provider)) {
triggerProviders.add(provider);
}
}
public static void registerActionProvider(IActionProvider provider) {
if (provider != null && !actionProviders.contains(provider)) {
actionProviders.add(provider);
}
}
public static void registerStatement(IStatement statement) {
statements.put(statement.getUniqueTag(), statement);
}
public static void registerParameterClass(Class<? extends IStatementParameter> param) {
parameters.put(createParameter(param).getUniqueTag(), param);
}
@Deprecated
public static void registerParameterClass(String name, Class<? extends IStatementParameter> param) {
parameters.put(name, param);
}
public static List<ITriggerExternal> getExternalTriggers(EnumFacing side, TileEntity entity) {
List<ITriggerExternal> result;
if (entity instanceof IOverrideDefaultStatements) {
result = ((IOverrideDefaultStatements) entity).overrideTriggers();
if (result != null) {
return result;
}
}
result = new LinkedList<ITriggerExternal>();
for (ITriggerProvider provider : triggerProviders) {
Collection<ITriggerExternal> toAdd = provider.getExternalTriggers(side, entity);
if (toAdd != null) {
for (ITriggerExternal t : toAdd) {
if (!result.contains(t)) {
result.add(t);
}
}
}
}
return result;
}
public static List<IActionExternal> getExternalActions(EnumFacing side, TileEntity entity) {
List<IActionExternal> result = new LinkedList<IActionExternal>();
if (entity instanceof IOverrideDefaultStatements) {
result = ((IOverrideDefaultStatements) entity).overrideActions();
if (result != null) {
return result;
}
}
result = new LinkedList<IActionExternal>();
for (IActionProvider provider : actionProviders) {
Collection<IActionExternal> toAdd = provider.getExternalActions(side, entity);
if (toAdd != null) {
for (IActionExternal t : toAdd) {
if (!result.contains(t)) {
result.add(t);
}
}
}
}
return result;
}
public static List<ITriggerInternal> getInternalTriggers(IStatementContainer container) {
List<ITriggerInternal> result = new LinkedList<ITriggerInternal>();
for (ITriggerProvider provider : triggerProviders) {
Collection<ITriggerInternal> toAdd = provider.getInternalTriggers(container);
if (toAdd != null) {
for (ITriggerInternal t : toAdd) {
if (!result.contains(t)) {
result.add(t);
}
}
}
}
return result;
}
public static List<IActionInternal> getInternalActions(IStatementContainer container) {
List<IActionInternal> result = new LinkedList<IActionInternal>();
for (IActionProvider provider : actionProviders) {
Collection<IActionInternal> toAdd = provider.getInternalActions(container);
if (toAdd != null) {
for (IActionInternal t : toAdd) {
if (!result.contains(t)) {
result.add(t);
}
}
}
}
return result;
}
public static IStatementParameter createParameter(String kind) {
return createParameter(parameters.get(kind));
}
private static IStatementParameter createParameter(Class<? extends IStatementParameter> param) {
try {
return param.newInstance();
} catch (InstantiationException e) {
e.printStackTrace();
} catch (IllegalAccessException e) {
e.printStackTrace();
} catch (Error error) {
BCLog.logErrorAPI(error, IStatementParameter.class);
throw error;
}
return null;
}
// /**
// * Generally, this function should be called by every mod implementing
// * the Statements API ***as a container*** (that is, adding its own gates)
// * on the client side from a given Item of choice.
// */
// @SideOnly(Side.CLIENT)
// public static void registerIcons(TextureAtlasSpriteRegister register) {
// for (IStatement statement : statements.values()) {
// statement.registerIcons(register);
// }
//
// for (Class<? extends IStatementParameter> parameter : parameters.values()) {
// createParameter(parameter).registerIcons(register);
// }
// }
}
@@ -0,0 +1,23 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
public final class StatementMouseClick {
private int button;
private boolean shift;
public StatementMouseClick(int button, boolean shift) {
this.button = button;
this.shift = shift;
}
public boolean isShift() {
return shift;
}
public int getButton() {
return button;
}
}
@@ -0,0 +1,83 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.statements;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public class StatementParameterItemStack implements IStatementParameter {
protected ItemStack stack;
@Override
public TextureAtlasSprite getIcon() {
return null;
}
@Override
public ItemStack getItemStack() {
return stack;
}
@Override
public void onClick(IStatementContainer source, IStatement stmt, ItemStack stack, StatementMouseClick mouse) {
if (stack != null) {
this.stack = stack.copy();
this.stack.stackSize = 1;
} else {
this.stack = null;
}
}
@Override
public void writeToNBT(NBTTagCompound compound) {
if (stack != null) {
NBTTagCompound tagCompound = new NBTTagCompound();
stack.writeToNBT(tagCompound);
compound.setTag("stack", tagCompound);
}
}
@Override
public void readFromNBT(NBTTagCompound compound) {
stack = ItemStack.loadItemStackFromNBT(compound.getCompoundTag("stack"));
}
@Override
public boolean equals(Object object) {
if (object instanceof StatementParameterItemStack) {
StatementParameterItemStack param = (StatementParameterItemStack) object;
return ItemStack.areItemStacksEqual(stack, param.stack) && ItemStack.areItemStackTagsEqual(stack, param.stack);
} else {
return false;
}
}
@Override
public String getDescription() {
if (stack != null) {
return stack.getDisplayName();
} else {
return "";
}
}
@Override
public String getUniqueTag() {
return "buildcraft:stack";
}
// @Override
// public void registerIcons(TextureAtlasSpriteRegister iconRegister) {
//
// }
@Override
public IStatementParameter rotateLeft() {
return this;
}
}
+32
View File
@@ -0,0 +1,32 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
package buildcraft.api.statements;
public class StatementSlot {
public IStatement statement;
public IStatementParameter[] parameters;
@Override
public boolean equals(Object o) {
if (o == null || !(o instanceof StatementSlot)) {
return false;
}
StatementSlot s = (StatementSlot) o;
if (s.statement != statement || parameters.length != s.parameters.length) {
return false;
}
for (int i = 0; i < parameters.length; i++) {
IStatementParameter p1 = parameters[i];
IStatementParameter p2 = s.parameters[i];
if (p1 == null && p2 != null) {
return false;
}
if (!(p1.equals(p2))) {
return false;
}
}
return true;
}
}
@@ -0,0 +1,17 @@
package buildcraft.api.statements.containers;
import net.minecraft.util.EnumFacing;
public interface IRedstoneStatementContainer {
/** Get the redstone input from a given side.
*
* @param side The side - use "UNKNOWN" for maximum input.
* @return The redstone input, from 0 to 15. */
int getRedstoneInput(EnumFacing side);
/** Set the redstone input for a given side.
*
* @param side The side - use "UNKNOWN" for all sides.
* @return Whether the set was successful. */
boolean setRedstoneOutput(EnumFacing side, int value);
}
@@ -0,0 +1,10 @@
package buildcraft.api.statements.containers;
import net.minecraft.util.EnumFacing;
import buildcraft.api.statements.IStatementContainer;
/** Created by asie on 3/14/15. */
public interface ISidedStatementContainer extends IStatementContainer {
EnumFacing getSide();
}
@@ -0,0 +1,8 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
@API(apiVersion = "1.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|statements")
package buildcraft.api.statements;
import net.minecraftforge.fml.common.API;
@@ -0,0 +1,12 @@
package buildcraft.api.transport;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public interface ICustomPipeConnection {
/** @return How long the connecting pipe should extend for. Values less than -4/16 indicate that the pipe will not
* connect at all, and will render as it it was not connected. */
public float getExtension(World world, BlockPos pos, EnumFacing face, IBlockState state);
}
@@ -0,0 +1,18 @@
package buildcraft.api.transport;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
public interface IInjectable {
boolean canInjectItems(EnumFacing from);
/** Offers an ItemStack for 3addition to the pipe. Will be rejected if the pipe doesn't accept items from that side.
*
* @param stack ItemStack offered for addition. Do not manipulate this!
* @param doAdd If false no actual addition should take place. Implementors should simulate.
* @param from Orientation the ItemStack is offered from.
* @param color The color of the item to be added to the pipe, or null for no color.
* @return Amount of items used from the passed stack. */
int injectItem(ItemStack stack, boolean doAdd, EnumFacing from, EnumDyeColor color);
}
@@ -0,0 +1,11 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* BuildCraft is distributed under the terms of the Minecraft Mod Public License 1.0, or MMPL. Please check the contents
* of the license located in http://www.mod-buildcraft.com/MMPL-1.0.txt */
package buildcraft.api.transport;
/** To be implemented by the real item pipe in Transport mod, but leaves knowledge for classes that do not have direct
* dependency on transport. */
public interface IItemPipe {
}
+21
View File
@@ -0,0 +1,21 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import net.minecraft.util.EnumFacing;
import buildcraft.api.gates.IGate;
public interface IPipe {
IPipeTile getTile();
IGate getGate(EnumFacing side);
boolean hasGate(EnumFacing side);
boolean isWired(PipeWire wire);
boolean isWireActive(PipeWire wire);
}
@@ -0,0 +1,24 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import net.minecraft.util.EnumFacing;
public interface IPipeConnection {
enum ConnectOverride {
CONNECT,
DISCONNECT,
DEFAULT
}
/** Allows you to override pipe connection logic.
*
* @param type
* @param with
* @return CONNECT to force a connection, DISCONNECT to force no connection, and DEFAULT to let the pipe decide. */
ConnectOverride overridePipeConnection(IPipeTile.PipeType type, EnumFacing with);
}
@@ -0,0 +1,51 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import net.minecraft.block.Block;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import buildcraft.api.transport.pluggable.PipePluggable;
public interface IPipeTile extends IInjectable {
enum PipeType {
ITEM,
FLUID,
POWER,
STRUCTURE
}
PipeType getPipeType();
World getWorldBC();
/** True if the pipe is connected to the block/pipe in the specific direction
*
* @param with
* @return true if connect */
boolean isPipeConnected(EnumFacing with);
Block getNeighborBlock(EnumFacing dir);
TileEntity getNeighborTile(EnumFacing dir);
IPipe getNeighborPipe(EnumFacing dir);
IPipe getPipe();
int getPipeColor();
PipePluggable getPipePluggable(EnumFacing direction); // Now in IPluggableProvider
boolean hasPipePluggable(EnumFacing direction); // Now in IPluggableProvider
boolean hasBlockingPluggable(EnumFacing direction);
void scheduleNeighborChange();
void scheduleRenderUpdate();
}
@@ -0,0 +1,14 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
public interface IStripesActivator {
void sendItem(ItemStack itemStack, EnumFacing direction);
void dropItem(ItemStack itemStack, EnumFacing direction);
}
@@ -0,0 +1,24 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public interface IStripesHandler {
enum StripesHandlerType {
ITEM_USE,
BLOCK_BREAK
}
StripesHandlerType getType();
boolean shouldHandle(ItemStack stack);
boolean handle(World world, BlockPos pos, EnumFacing direction, ItemStack stack, EntityPlayer player, IStripesActivator activator);
}
@@ -0,0 +1,9 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import cofh.api.energy.IEnergyHandler;
public interface IStripesPipe extends IPipe, IStripesActivator, IEnergyHandler {}
@@ -0,0 +1,48 @@
package buildcraft.api.transport;
import java.util.Map;
import com.google.common.collect.Maps;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
/** Use this class to register blocks with custom block sizes so that pipes can connect to them properly. Note that you
* do not need to register a custom pipe connection if your block implements ICustomPipeConnection. The registered
* version does not override your own implementation. */
public final class PipeConnectionAPI {
private static final Map<Block, ICustomPipeConnection> connections = Maps.newHashMap();
private static final ICustomPipeConnection NOTHING = new ICustomPipeConnection() {
@Override
public float getExtension(World world, BlockPos pos, EnumFacing face, IBlockState state) {
return 0;
}
};
/** Register a block with a custom connection. Useful if you don't own the block class or are adding it for some-one
*
* @param block The block instance
* @param connection The connection instance */
public static void registerConnection(Block block, ICustomPipeConnection connection) {
connections.put(block, connection);
}
public static void registerConnectionAsNothing(Block block) {
connections.put(block, NOTHING);
}
/** Gets the current custom connection that the block uses. Will be null if nothing has been set. */
public static ICustomPipeConnection getCustomConnection(Block block) {
if (block instanceof ICustomPipeConnection) {
return (ICustomPipeConnection) block;
}
ICustomPipeConnection connection = connections.get(block);
if (connection != null) {
return connection;
}
return null;
}
}
+71
View File
@@ -0,0 +1,71 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import buildcraft.api.transport.pluggable.PipePluggable;
public abstract class PipeManager {
public static List<IStripesHandler> stripesHandlers = new ArrayList<IStripesHandler>();
public static ArrayList<Class<? extends PipePluggable>> pipePluggables = new ArrayList<Class<? extends PipePluggable>>();
private static Map<String, Class<? extends PipePluggable>> pipePluggableNames = new HashMap<String, Class<? extends PipePluggable>>();
private static Map<Class<? extends PipePluggable>, String> pipePluggableByNames = new HashMap<Class<? extends PipePluggable>, String>();
private static Map<IStripesHandler, Integer> stripesHandlerPriorities = new HashMap<IStripesHandler, Integer>();
@Deprecated
public static boolean canExtractItems(Object extractor, World world, BlockPos pos) {
return true;
}
@Deprecated
public static boolean canExtractFluids(Object extractor, World world, BlockPos pos) {
return true;
}
@Deprecated
public static void registerStripesHandler(IStripesHandler handler) {
registerStripesHandler(handler, 0);
}
/** Register a Stripes Pipe handler.
*
* @param handler The handler.
* @param priority The priority - 0 is normal, higher numbers have higher priority. */
public static void registerStripesHandler(IStripesHandler handler, int priority) {
stripesHandlers.add(handler);
stripesHandlerPriorities.put(handler, priority);
Collections.sort(stripesHandlers, new Comparator<IStripesHandler>() {
@Override
public int compare(IStripesHandler o1, IStripesHandler o2) {
return stripesHandlerPriorities.get(o2) - stripesHandlerPriorities.get(o1);
}
});
}
public static void registerPipePluggable(Class<? extends PipePluggable> pluggable, String name) {
pipePluggables.add(pluggable);
pipePluggableNames.put(name, pluggable);
pipePluggableByNames.put(pluggable, name);
}
public static Class<?> getPluggableByName(String pluggableName) {
return pipePluggableNames.get(pluggableName);
}
public static String getPluggableName(Class<? extends PipePluggable> aClass) {
return pipePluggableByNames.get(aClass);
}
}
@@ -0,0 +1,73 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.transport;
import java.util.Locale;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public enum PipeWire {
RED,
BLUE,
GREEN,
YELLOW;
public static Item item;
public static final PipeWire[] VALUES = values();
public PipeWire reverse() {
switch (this) {
case RED:
return YELLOW;
case BLUE:
return GREEN;
case GREEN:
return BLUE;
default:
return RED;
}
}
public String getTag() {
return name().toLowerCase(Locale.ENGLISH) + "PipeWire";
}
public String getColor() {
String name = this.toString().toLowerCase(Locale.ENGLISH);
char first = Character.toUpperCase(name.charAt(0));
return first + name.substring(1);
}
public ItemStack getStack() {
return getStack(1);
}
public ItemStack getStack(int qty) {
if (item == null) {
return null;
} else {
return new ItemStack(item, qty, ordinal());
}
}
public boolean isPipeWire(ItemStack stack) {
if (stack == null) {
return false;
} else if (stack.getItem() != item) {
return false;
} else {
return stack.getItemDamage() == ordinal();
}
}
public static PipeWire fromOrdinal(int ordinal) {
if (ordinal < 0 || ordinal >= VALUES.length) {
return RED;
} else {
return VALUES[ordinal];
}
}
}
@@ -0,0 +1,8 @@
/** Copyright (c) 2011-2015, SpaceToad and the BuildCraft Team http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License. Please check the contents of the license, which
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
@API(apiVersion = "4.1", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|transport")
package buildcraft.api.transport;
import net.minecraftforge.fml.common.API;
@@ -0,0 +1,7 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.util.EnumFacing;
public interface IConnectionMatrix {
boolean isConnected(EnumFacing face);
}
@@ -0,0 +1,11 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.block.state.IBlockState;
public interface IFacadePluggable {
IBlockState getCurrentState();
boolean isTransparent();
boolean isHollow();
}
@@ -0,0 +1,9 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.util.EnumFacing;
import buildcraft.api.transport.IPipe;
public interface IPipePluggableDynamicRenderer {
void renderDynamicPluggable(IPipe pipe, EnumFacing side, PipePluggable pipePluggable, double x, double y, double z);
}
@@ -0,0 +1,10 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.item.ItemStack;
import net.minecraft.util.EnumFacing;
import buildcraft.api.transport.IPipe;
public interface IPipePluggableItem {
PipePluggable createPipePluggable(IPipe pipe, EnumFacing side, ItemStack stack);
}
@@ -0,0 +1,9 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.util.EnumFacing;
public interface IPipePluggableState {
IConnectionMatrix getPluggableConnections();
PipePluggable getPluggable(EnumFacing face);
}
@@ -0,0 +1,19 @@
package buildcraft.api.transport.pluggable;
import java.util.List;
import net.minecraft.client.renderer.block.model.BakedQuad;
import net.minecraft.util.EnumFacing;
import buildcraft.api.transport.IPipe;
public interface IPipePluggableStaticRenderer {
List<BakedQuad> bakeCutout(IPipeRenderState render, IPipePluggableState pluggableState, IPipe pipe, PipePluggable pluggable, EnumFacing face);
/** Use this if you need to render in the translucent pass. */
public interface Translucent extends IPipePluggableStaticRenderer {
/** For performance return a list that is as small as possible */
List<BakedQuad> bakeTranslucent(IPipeRenderState render, IPipePluggableState pluggableState, IPipe pipe, PipePluggable pluggable,
EnumFacing face);
}
}
Loaded 100 of 2875 files, more files were not shown because too many files have changed in this diff. Show more