Compare commits

...
577 Commits
Author SHA1 Message Date
Vincent Lee 67ef25de09 Prep for debug helper build 2016-07-31 20:07:49 -05:00
Vincent Lee 072e3a693b Fix extended state blocks shitting themselves 2016-07-31 15:05:27 -05:00
Vincent Lee b29c810a80 Use face quads in floating models. Partially alleviates #414 2016-07-31 12:55:53 -05:00
Vincent Lee 3f8e3f72d9 Version checker just piggybacks off forge one now 2016-07-30 16:37:50 -05:00
Vincent Lee 5041e23ede Cleanup, black hole talisman uses caps, debug handler shows extended state 2016-07-30 16:24:42 -05:00
Vincent Lee 21a35c9c92 1.8 recipes now permanently on, fix initial loop recipe being oredicted. Closes #413 2016-07-30 14:38:46 -05:00
Vincent Lee 6d542dec5a Clean up methodhandles 2016-07-30 14:06:07 -05:00
Vincent Lee 4552a451ae Fix lexicon 3d model 2016-07-30 14:02:25 -05:00
Vincent Lee 5c33e95a54 Remove unused overload 2016-07-30 12:12:33 -05:00
Vincent Lee 1e2bd1d4cd Blocks now own their itemblock model registration 2016-07-30 12:11:28 -05:00
Vincent Lee 1cc995c986 Split black lotus metas 2016-07-30 10:56:14 -05:00
Vincent Lee 1799380064 Blocks own their statemappers 2016-07-30 10:52:48 -05:00
Vincent Lee 0d3ffa2598 Final model splitting, on to code cleanup 2016-07-30 10:38:57 -05:00
Vincent Lee 3dc65c80d8 More model cleanup, and add a readme for artists 2016-07-29 20:55:59 -05:00
Vincent Lee bc0da61058 Build 314 2016-07-29 18:41:07 -05:00
Vincent Lee c9e1647070 Fix crash 2016-07-29 18:24:16 -05:00
Vincent Lee d622f0cd58 Move block registration out of constructors 2016-07-29 18:04:17 -05:00
Vincent Lee 32a505a575 More model reorganization 2016-07-27 22:04:23 -05:00
Vincent Lee 7ce589c6db Made treasure enchants more expensive to apply, remove some log spam 2016-07-27 19:02:31 -05:00
Vincent Lee f0aa44999f Some biomestone jsons 2016-07-27 18:59:27 -05:00
Vincent Lee 88f99a636c Merge branch 'master' of github.com:williewillus/Botania 2016-07-26 20:31:08 -05:00
Vincent Lee 568139fd17 Merge pull request #406 from Flaxbeard/master
Added ManaDiscountEvent
2016-07-26 20:30:49 -05:00
Flaxbeard cf0189c3ee Added ManaDiscountEvent 2016-07-25 16:07:35 -05:00
Vincent Lee 2ee0d7f0ed More borign model cleaning 2016-07-24 21:36:49 -05:00
Vincent Lee 6997a96460 Slabs/walls/stairs own their own model registration 2016-07-24 15:45:43 -05:00
Vincent Lee 179ca23f6c Items now 'own' their own model registration! 2016-07-24 15:09:05 -05:00
Vincent Lee e7e5b1b484 Migrate other meshers 2016-07-24 14:01:14 -05:00
Vincent Lee fbd9917fd4 FOld more methods in 2016-07-24 13:18:46 -05:00
Vincent Lee 881e271a0b Lambdafy everything as they now work 2016-07-24 10:36:58 -05:00
Vincent Lee 3b5c500bc9 Clean up meshers 2016-07-24 10:12:12 -05:00
Vincent Lee 4751da9e7b Panes 2016-07-23 21:18:48 -05:00
Vincent Lee 1c4ae58377 Clean up the pools 2016-07-23 21:08:01 -05:00
Vincent Lee 9f0c710479 More 2016-07-23 20:51:45 -05:00
Vincent Lee 8a13a03016 Optimize number of slab models 2016-07-23 19:41:19 -05:00
Vincent Lee 7ef27df0bc Cleanup the cleanup 2016-07-23 19:29:36 -05:00
Vincent Lee 01a913c96c More model cleanup 2016-07-23 17:49:00 -05:00
Vincent Lee 110396f39e More model cleanup 2016-07-23 17:29:22 -05:00
Vincent Lee 233bc705b0 More model cleanup 2016-07-23 16:39:05 -05:00
Vincent Lee 6264ebddbc Move itemblock jsons to their own subfolder 2016-07-23 16:04:03 -05:00
Vincent Lee bedbf55b33 Separate out biome wall models. Don't worry it'll get organized. Closes #401 2016-07-23 15:58:03 -05:00
Vincent Lee a5d688883e Fix some walls being flipped, separate the models out 2016-07-23 15:31:18 -05:00
Vincent Lee 83d0b8dc12 Remvoe the nag (you're welcome) 2016-07-23 15:09:20 -05:00
Vincent Lee c05c1ef8bf Clean out lang files 2016-07-23 15:08:26 -05:00
Vincent Lee c5d5e59b96 Byebye Future (hah) stones! 2016-07-23 14:50:03 -05:00
Vincent Lee 1fd48994d7 Byebye ender stuff! 2016-07-23 14:17:27 -05:00
Vincent Lee cf56634a91 Byebye thatch and reeds! 2016-07-23 14:04:49 -05:00
Vincent Lee 1344bb8c08 Exorcism begins: remove (almost) all prismarine 2016-07-23 13:51:19 -05:00
Vincent Lee 2bf69eaa56 Useless constant change 2016-07-23 13:32:31 -05:00
Vincent Lee b242d43861 Update forge 2016-07-23 10:48:57 -05:00
Vincent Lee 404c39c8f8 Fix slingshot not firing properly, fixes #402 2016-07-22 18:33:36 -05:00
Vincent Lee d8bdb6a31d Fix cacophonium. Closes #400 2016-07-21 19:02:23 -05:00
Vincent Lee c5208175d7 Made a bunch of evthandlers static 2016-07-20 21:22:33 -05:00
Vincent Lee a0d0fefe8d Move to 1.10 2016-07-20 20:55:20 -05:00
Vincent Lee 87172ea3f2 Build 314 2016-07-20 20:29:16 -05:00
Vincent Lee 16381383cb Fix wills not applying. Closes #372 2016-07-20 20:18:16 -05:00
Vincent Lee 252e3191dc Fix some particles being missing 2016-07-17 21:16:50 -05:00
Vincent Lee ce0ba85397 Made it more reliable 2016-07-17 20:58:30 -05:00
Vincent Lee aa8dc5d16c Fix something in bows not being cross proxied. Closes #398 2016-07-17 20:33:56 -05:00
Vincent Lee dff2cf2bf1 Change flavour text 2016-07-16 17:40:10 -05:00
Vincent Lee 347c100e93 Add the version txt for 1.10.2 that never got added .-. 2016-07-16 17:35:56 -05:00
Vincent Lee 003fb22733 Tidy up, add texture 2016-07-16 17:34:57 -05:00
Vincent Lee 7f5d3859e4 Added the Bergamute 2016-07-16 16:52:59 -05:00
Vincent Lee 124fdeeee3 Possible fix for #343 2016-07-13 21:44:10 -05:00
Vincent Lee 611f33a133 Fix #395 2016-07-13 21:13:36 -05:00
Vincent Lee a76efcc6fc Actually fix #386 2016-07-06 21:46:39 -05:00
Vincent Lee cd3daf2b47 Fix rod of bifrost going batshit. Closes #386 2016-07-04 13:17:57 -05:00
Vincent Lee dc05115497 Merge pull request #370 from howtonotwin/chordata
Rewrite some of the Ring of Chordata
2016-07-04 12:55:41 -05:00
Vincent Lee 44a4657cd8 Fix crafting halo crash and cleanup inventory utils, closes #385 2016-07-04 12:09:52 -05:00
Vincent Lee 8e70e9fa68 FIx starcaller not working, blacklist aura nodes from rod of shaded mesa. Closes #387: 2016-06-30 21:24:40 -05:00
Vincent Lee 0b635c5bc7 Fix missed change in gradle 2016-06-29 20:28:36 -05:00
Vincent Lee 6f69d5d154 Build 312 2016-06-29 20:28:09 -05:00
Vincent Lee 589b4e49b6 Prep buildscripts for 1.10.2 2016-06-29 20:24:25 -05:00
Vincent Lee b30ad911fa Reflect since trying to get around inlining isn't working 2016-06-29 20:22:14 -05:00
Vincent Lee be667b2ee3 Fix some items not being held right 2016-06-29 19:30:06 -05:00
Vincent Lee bea1c6ecdc Fix cross proxy detection to support 1.10.2 2016-06-29 19:29:54 -05:00
Vincent Lee 971b1ee3e2 Fix typo in king key, closes #381 2016-06-28 21:19:18 -05:00
Vincent Lee 4172637bcc Fix drum sound 2016-06-26 17:18:10 -05:00
Vincent Lee 2650813f95 Fix burst range being much smaller than it should be. Closes #376 2016-06-26 16:19:40 -05:00
Vincent Lee 1fbcb0b39b Fix desyncing in runic altar, closes #374 2016-06-26 11:29:47 -05:00
Vincent Lee e28f82dc7d Apothecary right click uses caps 2016-06-26 11:07:46 -05:00
Vincent Lee d3d94e46d7 Special flower item models fall back to poppy. Close #375 2016-06-26 09:05:35 -05:00
Vincent Lee b2d7bc2794 Pick block for entities 2016-06-25 16:09:46 -05:00
Vincent Lee 2afaac9f20 Fix flowers emitting light. Closes #369 2016-06-25 15:27:34 -05:00
Vincent Lee 28b3e5d22b Build 311 2016-06-25 15:10:02 -05:00
Vincent Lee da3958a414 Fix more build stuff 2016-06-25 14:59:39 -05:00
Vincent Lee 4ddf3767c5 Update buildscript for 1.10 2016-06-25 14:50:07 -05:00
Vincent Lee 81c45fb079 Fix ring of far reach and fix proxy selection 2016-06-25 14:43:24 -05:00
Vincent Lee 49d79abb83 Include 1.10 in accepted mc versions 2016-06-24 19:59:24 -05:00
Vincent Lee 1a3b6833b5 Update JEI 2016-06-24 19:58:57 -05:00
Vincent Lee 38cd0fbf55 Switch pain spots to using crossproxy 2016-06-24 19:43:31 -05:00
Vincent Lee 9d1e7f86cf Futureproof update json url 2016-06-24 19:35:24 -05:00
Vincent Lee 5863b165ad Added cross version proxies 2016-06-24 19:33:58 -05:00
Vincent Lee f7a1f629be JEI hack for 1.10 2016-06-24 18:59:23 -05:00
Vincent Lee 6f348e7db1 Made dispenser behaviours 1.10 safe 2016-06-24 18:55:41 -05:00
Howtonotwin b6ddefcaf4 Rewrite some of the Ring of Chordata
Add guard against having two rings equipped; the second ring will be
inactive. Fixes #340
2016-06-24 17:11:55 -04:00
Vincent Lee c6df7c260a Fix lexicon word count 2016-06-22 19:29:06 -05:00
Vincent Lee 9a11ebef1f Fix 1.8 stones not being voided, clean up ore dict registrations that are no longer needed 2016-06-22 19:16:52 -05:00
Vincent Lee 1bb254a4fc Workaround subtiles crashing when dug 2016-06-22 19:04:19 -05:00
Vincent Lee 8600b75691 Fix solegnolia not working on dediserver and threadsafe the collection. Fixes #346 2016-06-22 18:41:21 -05:00
Vincent Lee 337851994f Fix bad portuguese brick recipes. Closes #368 2016-06-21 19:44:14 -05:00
Vincent Lee b232d8bb93 Fix #367 2016-06-21 19:31:24 -05:00
Vincent Lee 2a2971f75a Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-06-21 19:26:56 -05:00
Vincent Lee dced32bf4c Merge pull request #365 from Luxor5393/patch-1
Fix two typos.
2016-06-21 19:23:58 -05:00
Luxor5393 420d4b0aa4 Fix two typos. 2016-06-21 16:57:47 +02:00
Vincent Lee d4b0d0aec9 Cleanup 2016-06-20 19:54:33 -05:00
Vincent Lee e37b3ac3e6 Soulscribe only effective when fully charged 2016-06-20 19:34:08 -05:00
Vincent Lee 6a4f8e9f4b Switch some things to tessellator 2016-06-19 10:37:32 -05:00
Vincent Lee d7929eed08 Fix terra pick darkening screen 2016-06-19 10:21:37 -05:00
Vincent Lee 028f0c4c82 Minor opt to red string interceptor 2016-06-19 10:05:10 -05:00
Vincent Lee 71edb3abb1 Fix transforms on runic altar. Closes #351 2016-06-19 09:47:58 -05:00
Vincent Lee 4fede6f49e Cleanup 2016-06-18 23:12:37 -05:00
Vincent Lee 4ef18f3347 Fully serverside enchanter 2016-06-18 23:09:27 -05:00
Vincent Lee eaa9c89684 Optimize spectator net traffic more - don't use nbt list of nbt longs just use nbt int array 2016-06-18 21:42:53 -05:00
Vincent Lee 37c2adece1 Fix spark particles not spreading out 2016-06-18 21:28:19 -05:00
Vincent Lee 9f94407be0 Fix armor format error 2016-06-18 21:09:08 -05:00
Vincent Lee 7b6d2e843e JK it's 2 overrides 2016-06-18 19:10:27 -05:00
Vincent Lee 7d87732ccb Actually prevent shoving. Why the heck does it require three overrides?? 2016-06-18 19:04:54 -05:00
Vincent Lee 3c9388702c Prevent GG from being shoved while it's still spawning 2016-06-18 18:42:27 -05:00
Vincent Lee e338735814 Allow non-melle player damage to GG (arrows) damage cap still applies. Damage reduction in hard mode now done using armor 2016-06-18 18:36:15 -05:00
Vincent Lee d34fc5a3e1 GG now deals damage if a player is in its path of teleport 2016-06-18 18:03:21 -05:00
Vincent Lee d9522fcc18 Fix gaia removed potion effects not syncing, made magic landmines deal magic (armor bypassing) damage 2016-06-18 17:25:51 -05:00
Vincent Lee 53147606c1 GG automatically distributes drops to appropriate players. Also fix mobs getting too short of a fire resist 2016-06-18 16:48:58 -05:00
Vincent Lee cfb368f67e Immutabilize vector3 as it being defensively copied all over already 2016-06-18 16:11:03 -05:00
Vincent Lee 6c307d16f4 Made Quats proper value type 2016-06-18 15:28:54 -05:00
Vincent Lee 3a8fc10cc9 Fix TE resyncs sending a bit too much stuff 2016-06-18 14:57:13 -05:00
Vincent Lee f2544a6fa4 Remove debug logging in special flower model 2016-06-18 14:37:07 -05:00
Vincent Lee b7e77936b3 Remove guards in TileMod since forge has them now 2016-06-18 14:36:36 -05:00
Vincent Lee 8767180a7b Made special flower models use a guava cache. Fixes threading issues, closes #338 2016-06-18 14:21:56 -05:00
Vincent Lee bc52c67c89 Fix tiara conflicting with spectator mode, closes #356 2016-06-18 12:42:18 -05:00
Vincent Lee 0001f9c8f1 Save flare chakram state in NBT, closes upstream issue 1620 2016-06-17 19:43:45 -05:00
Vincent Lee 9fef518968 Fix broken hsb calculation because mojang's function is broken. Also fix upstream issue 1672 2016-06-17 19:41:59 -05:00
Vincent Lee 6b10ada28a Build 310 I need sleep 2016-06-17 00:21:01 -05:00
Vincent Lee f3a3e80334 Revert "Revert "Fix other mods crashing because of alternate implementations of metadata""
This reverts commit fc23dedd05.
2016-06-17 00:17:51 -05:00
Vincent Lee 5cdd2ee32f Revert "Cleaner solution"
This reverts commit a9cc76576a.
2016-06-17 00:17:48 -05:00
Vincent Lee a9cc76576a Cleaner solution 2016-06-17 00:03:35 -05:00
Vincent Lee fc23dedd05 Revert "Fix other mods crashing because of alternate implementations of metadata"
This reverts commit 25cd574662.
2016-06-17 00:03:04 -05:00
Vincent Lee 65bf209835 Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-06-16 23:46:35 -05:00
Vincent Lee d2e84babb7 Fix flowers popping off on relay and mycelium 2016-06-16 23:44:44 -05:00
Vincent Lee 850ea37f4d Merge pull request #354 from yrsegal/patch-1
Fix other mods crashing because of alternate implementations of metadata
2016-06-16 23:32:23 -05:00
Vincent Lee 2d0af453b3 Tweak various model transforms. Closes #350: 2016-06-16 23:30:23 -05:00
Vincent Lee d5c9c7815e Clean up lightning code 2016-06-16 23:12:22 -05:00
Wire Segal 25cd574662 Fix other mods crashing because of alternate implementations of metadata
Closes #352
Closes #353
2016-06-16 23:57:43 -04:00
Vincent Lee 3cf1619b2e Build 309 2016-06-16 21:22:51 -05:00
Vincent Lee 73c06c10eb Fix server crash 2016-06-16 21:18:35 -05:00
Vincent Lee 1d5dfa149e TIL Collection.removeIf 2016-06-16 21:04:36 -05:00
Vincent Lee c1fff324d1 Remove extraneous debug print 2016-06-16 20:59:52 -05:00
Vincent Lee 95f1e768fe Update forge, fix mana blaster overrides 2016-06-16 20:40:11 -05:00
Vincent Lee ec9496b0e7 Remove some unused stuff 2016-06-16 19:48:14 -05:00
Vincent Lee 5f3951c7fa Fix solegnolia having lower range than advertised. Closes #346 2016-06-16 19:39:26 -05:00
Vincent Lee 47ac6fc65a Check for blocks with no item in overgrowth seed. Closes #347 2016-06-16 19:26:29 -05:00
Vincent Lee ae0894a8d0 Fix keybinding crash. Closes #344 2016-06-16 19:24:12 -05:00
Vincent Lee 96bf87333b Clean up lightning code, batch the render by 200's to not overflow the tess. Closes #342 2016-06-14 20:30:52 -05:00
Vincent Lee 9e09a3f42d Update forge and fix pylon transforms, closes #252 2016-06-12 13:19:31 -05:00
Vincent Lee bc0ca77960 Terra blade now respects 1.9 cooldown 2016-06-11 21:11:47 -05:00
Vincent Lee 8bca8bb5f6 Get rid of some of the many stupid parXX parameter names 2016-06-11 14:42:18 -05:00
Vincent Lee ece95aca1c Big parameter name cleanup, part 1 2016-06-11 14:28:22 -05:00
Vincent Lee c357ab68c3 Super minor optimization for object alloc 2016-06-11 13:58:05 -05:00
Vincent Lee cfc1ba8baf Gaia head can now be worn. Closes #305 2016-06-11 12:57:46 -05:00
Vincent Lee f56eca23fc Fix #330 2016-06-11 11:24:00 -05:00
Vincent Lee b7aab995db Merge pull request #337 from yrsegal/MC19
Fix all outstanding auxiliary renders.
2016-06-10 22:48:18 -05:00
yrsegal ec5fcef90c fix devil tail 2016-06-10 23:22:41 -04:00
yrsegal f4d7a80e49 Fix all cosmetic baubles and use NONE 2016-06-10 22:49:53 -04:00
Vincent Lee c289edd825 Serverside normal sparks 2016-06-10 20:31:34 -05:00
Vincent Lee 5ac09b830d Some net stuff for later 2016-06-10 19:52:05 -05:00
Vincent Lee 709fc130d5 Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-06-10 19:31:29 -05:00
Vincent Lee 873aedf4e5 Fix #332 2016-06-10 19:31:11 -05:00
Vincent Lee 27410530d6 Tweak horn sidings 2016-06-10 19:18:28 -05:00
yrsegal 491452ac7b Fix all outstanding auxiliary renders.
close #49 until the next time renders break
2016-06-10 16:56:39 -04:00
Vincent Lee 4e905ede36 Merge pull request #336 from isambourgg/patch-1
Update fr_FR.lang
2016-06-10 14:46:44 -05:00
Vincent Lee 6afc33c57b Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-06-09 20:50:15 -05:00
Vincent Lee 5f35b8aef0 Readd old overrides, not working because of forge bug 2016-06-09 20:49:49 -05:00
isambourgg 699ee5027a Update fr_FR.lang
Relecture et correction jusqu'à la Ligne 559.
2016-06-09 16:42:34 -04:00
Vincent Lee 7c32f5fbaf Merge pull request #331 from yrsegal/patch
Fix sneaking transforms being out of place for baubles
2016-06-08 18:08:35 -05:00
yrsegal 3c0fe199d5 Fix sneaking transforms being out of place for baubles 2016-06-08 17:02:41 -04:00
Vincent Lee c15f08b066 Remove unofficial port message from login nag 2016-06-07 20:18:05 -05:00
Vincent Lee c47de38ec9 Fix inventory transforms for floating flowers 2016-06-05 18:14:07 -05:00
Vincent Lee 9b3c1d721d Minor potion cleanup 2016-06-05 17:45:58 -05:00
Vincent Lee 5d19a0dd6c Workaround for armorstand helmets. Closes #23 2016-06-05 16:37:52 -05:00
Vincent Lee 89834b4053 Clean up some other models 2016-06-05 15:15:45 -05:00
Vincent Lee 85eef6c461 Steal the transforms from Psi :P 2016-06-05 15:11:17 -05:00
Vincent Lee 9897d3ed80 Merge branch 'newblaster' into MC19 2016-06-05 14:57:44 -05:00
Vincent Lee 02cfe14d94 Move bauble box to caps as well. Closes #297 2016-06-05 14:32:08 -05:00
Vincent Lee 4b4b9a308c Tweaks to previous commit 2016-06-04 23:14:33 -05:00
Vincent Lee 55df4f0619 Move flower pouch to caps 2016-06-04 22:59:53 -05:00
Vincent Lee c83578b920 Clean up basic section lexicon and some misc lang entries 2016-06-04 21:35:43 -05:00
Vincent Lee 39517588e7 Clean up some todos 2016-06-04 20:10:13 -05:00
Vincent Lee 14f0c43850 Fix armor material registration, buff terrasteel armor slightly 2016-06-04 20:00:10 -05:00
Vincent Lee 05c6a07bc2 Clean up logging and log spam. #cleanloginitiative 2016-06-04 19:01:34 -05:00
Vincent Lee d241f95bee Zap some duplicated code 2016-06-04 12:06:39 -05:00
Vincent Lee 49a6f00b41 Update Forge, some fluid cap stuff 2016-06-03 23:10:33 -05:00
Vincent Lee 14b2a35862 Clean up English present in es_ES, fr_FR. My pinkie hurts. 2016-06-03 20:41:32 -05:00
Vincent Lee 4aeed07f75 Clean up English present in nl_NL, pt_BR 2016-06-03 20:27:21 -05:00
Vincent Lee cdcfe75325 Clean up English present in es_AR, ru_RU 2016-06-03 20:20:51 -05:00
Vincent Lee 303e89f6c5 Clean up English present in ja_JP and ko_KR 2016-06-03 20:11:55 -05:00
Vincent Lee c9e501fd02 Clean up English present in zh_CN, zh_TW 2016-06-03 20:03:19 -05:00
Vincent Lee 3049ac9767 Clean up English present in de_DE 2016-06-03 19:52:54 -05:00
Vincent Lee 11c0e4b274 Add warning header to all lang files 2016-06-03 19:41:54 -05:00
Vincent Lee fab5fc0087 Remove ColoredLights integration 2016-06-03 19:28:15 -05:00
Vincent Lee a5df917d5a Update BM mod id 2016-06-03 18:56:06 -05:00
Vincent Lee c2931d1517 Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-06-02 21:41:10 -05:00
Vincent Lee b71cb163a7 Fix fallback for contributors with flowers not in main botania. Closes #321 2016-06-02 21:40:36 -05:00
Vincent Lee ff69a2e458 Merge pull request #320 from yrsegal/MC19
Make the lexicon recipe mappings accept the wildcard value
2016-06-01 21:20:35 -05:00
Vincent Lee 4cfd420cc1 Let some technical blocks drop normal drop from weight lens 2016-06-01 21:09:33 -05:00
Vincent Lee 95bd4689d6 Fix halo crashing, also tweak visuals slightly. Closes #314 2016-06-01 20:39:49 -05:00
Vincent Lee d2aa4e0ebc Fix some missing glstatemanager substitutions. Fixes #307 2016-06-01 20:19:40 -05:00
yrsegal 1bff638075 Make the lexicon recipe mappings accept the wildcard value 2016-06-01 18:39:36 -04:00
Vincent Lee 78f296d0cf Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-05-31 20:58:30 -05:00
Vincent Lee 6014df2b12 Fix a couple baubles 2016-05-31 20:57:45 -05:00
Vincent Lee 30c208aa55 Merge pull request #315 from howtonotwin/258-bhtalisman
Limit BH Talisman to world height. Fixes #258
2016-05-31 20:35:52 -05:00
Vincent Lee 96a2da61f5 Fix wrong import 2016-05-31 20:03:39 -05:00
Howtonotwin fd35d25423 Limit BH Talisman to world height. Fixes #258 2016-05-31 17:17:20 -04:00
Vincent Lee 2065f01b8d Fix pool crafting particles 2016-05-30 21:37:56 -05:00
Vincent Lee 6c52c4f5f9 Fix chakrams being weird. Closes #306 2016-05-30 17:14:06 -05:00
Vincent Lee 307068c9c4 Lower spawn fuzz to 0 in gog, fixes #287 2016-05-30 16:21:56 -05:00
Vincent Lee 688da731ab Spell cloth can no longer be enchanted at an anvil, closes #308 2016-05-30 12:57:21 -05:00
Vincent Lee ac003f1307 Gaia guardian now looks like whoever is viewing it. spooky. 2016-05-28 16:45:57 -05:00
Vincent Lee 3e0f5da01d Clean up gaia head renderer. Closes #303 2016-05-28 15:44:20 -05:00
Vincent Lee cc1b66f3cd Gradle script automatically updates update.json 2016-05-28 12:50:41 -05:00
Vincent Lee c08fa024a0 Add update.json not done yet, bump forge minimum req version 2016-05-28 11:46:06 -05:00
Vincent Lee 4f0d63f5a0 Build 308 2016-05-28 11:09:08 -05:00
Vincent Lee 8ef557e51b Remove loot debug -.- 2016-05-28 11:04:40 -05:00
Vincent Lee 974e8d0316 Build 307 2016-05-27 20:55:48 -05:00
Vincent Lee cf82603f04 Update bow methods. Closes #300 2016-05-27 20:26:54 -05:00
Vincent Lee 1d54442e01 Fix axe digging closes #301 2016-05-27 19:56:07 -05:00
Vincent Lee a07f7914ae Add chest textures, update Forge 2016-05-27 19:51:59 -05:00
Vincent Lee 51c7d310a7 Moar clenaup 2016-05-26 23:22:50 -05:00
Vincent Lee e3e6f8996f Cleanup 2016-05-26 23:08:53 -05:00
Vincent Lee 7f759c1b88 Fix ender air bottle being underpowered 2016-05-24 21:16:18 -05:00
Vincent Lee 57e1fd5b41 Merge branch 'master' of https://github.com/Vazkii/Botania into MC19 2016-05-22 13:20:39 -05:00
Vincent Lee 8b88289789 Fix issues associated with last commit 2016-05-22 13:19:11 -05:00
Vincent Lee ff2afbf037 Untested: replace most uses of common i18n with client one 2016-05-22 11:41:33 -05:00
Vincent Lee 41b3e6cd4f Use all bits for effect packet args. Closes #296 2016-05-21 23:40:10 -05:00
Vincent Lee 930703b5c1 Workaround for 'global' particles at small render distances. Close #15 (mostly) 2016-05-21 23:38:17 -05:00
Vincent Lee f52dca111f Flower bag plays sound and animation. Closes #295 2016-05-21 22:55:30 -05:00
Vincent Lee 9694664922 Fix mana cookie lasting too short (thanks wiresegal) 2016-05-21 22:13:52 -05:00
Vincent Lee e2e00f7ef1 Use chunk util method that exists instead of own thing 2016-05-21 12:13:37 -05:00
Vincent Lee c9de3bcc03 Mana pools now try catalyst recipes first before recipes without catalyst specified. Also make mana bar not render in spectator. Closes #291 2016-05-20 14:36:28 -05:00
Vincent Lee 995c19c04a Fix TE syncing on login, 2 minor optimizations 2016-05-19 14:07:52 -05:00
Vincent Lee 96983a1d6b Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-05-19 10:03:48 -05:00
Vincent Lee 8f00e9bdd6 Build 306 2016-05-19 10:03:24 -05:00
Vincent Lee 49d3004c60 Merge pull request #288 from yrsegal/MC19
Fix recipesorter complaining
2016-05-18 21:36:57 -05:00
Vincent Lee 8fb3b886a8 Get rid of all the nullable-nonnull stuff, warning huge diff 2016-05-18 21:03:12 -05:00
yrsegal 3c159e2485 Fix recipesorter complaining
Closes #269
2016-05-18 21:01:09 -04:00
Vincent Lee bdf51cbc8b Move IManaCollisionGhost to blocks. Closes #280 2016-05-18 19:16:51 -05:00
Vincent Lee 056f46b1f8 Update to 1.9.4 - untested waiting on baubles 2016-05-18 15:22:35 -05:00
Vincent Lee a59ee11da4 Build 305 2016-05-18 14:14:07 -05:00
Vincent Lee 9b06371a4e Fix dirt path and spreader binding. Closes #279 2016-05-18 11:31:12 -05:00
Vincent Lee afb3f6f44b Fix lexicon model i accidentally broke 2016-05-18 11:22:13 -05:00
Vincent Lee 1deb617f72 Fix GOG sound #285 2016-05-18 11:13:38 -05:00
Jonathan Smith 5495271fa2 Merge pull request #1849 from NatsuArashi/patch-3
Update zh_TW.lang
2016-05-18 10:49:15 +01:00
NatsuArashi 588a02f385 Update zh_TW.lang
*部分日本語使用原文
2016-05-18 17:39:27 +08:00
Vincent Lee b1fad332b8 Fix terraaxe icon when inactive, closes #281 2016-05-15 21:51:24 -05:00
Vincent Lee df478b0ff8 Fix picking root block giving bad item. Closes #282 2016-05-15 21:25:54 -05:00
Vincent Lee 68560a335e Minor cleanup 2016-05-13 22:47:18 -05:00
Vincent Lee 13905a174c Fix smoke particles 2016-05-13 00:08:35 -05:00
Vincent Lee ef0f31f2de Some probably useless optimizations 2016-05-12 20:02:57 -05:00
Vincent Lee 1d7a402c6e Optimize itemfinder heavily 2016-05-12 19:45:51 -05:00
Vincent Lee b0fad5db16 Fix hopperhock being broken with vanilla chests 2016-05-12 17:51:58 -05:00
Vincent Lee 481eb5e711 Serverside many subtiles 2016-05-12 17:38:25 -05:00
Vincent Lee 1e26be3c77 Weaken boss collection 2016-05-12 16:30:01 -05:00
Vincent Lee a2d8aa17d2 Fix petal burying #274 2016-05-12 14:47:29 -05:00
Vincent Lee ebc6f1a8c6 Loonium now can be set to a custom loot table. For mapmakers 2016-05-11 19:27:15 -05:00
Vincent Lee 6a5e37b632 Update forge, fully fix loot generation 2016-05-11 11:50:06 -05:00
Vincent Lee 6b55f97a44 Build 304 2016-05-10 23:24:27 -05:00
Vincent Lee ae71a4756c I messed that up >.>. Fix server crash on startup #272 2016-05-10 23:21:38 -05:00
Vincent Lee bf0712a75c Build 302 2016-05-10 23:18:46 -05:00
Vincent Lee 79e2ee7c0a Shim in loot table to suppress errors in public build 2016-05-10 19:54:09 -05:00
Vincent Lee fb7fda6996 Update versionchecker links 2016-05-10 19:39:02 -05:00
Vincent Lee c944512519 Fix pump rendering, pool cart rendering. Made pool cart spawn particles 2016-05-10 19:11:18 -05:00
Vincent Lee dc8104f68b Preliminary work on new loot system 2016-05-10 11:55:50 -05:00
Vincent Lee 46417330a4 Fix #266 log spam 2016-05-07 22:32:09 -05:00
Vincent Lee 2f292ed3be Fix #271 incense rendering 2016-05-07 22:29:46 -05:00
Vincent Lee 4231dc839f Add reverse petal block recipes 2016-05-07 11:56:57 -05:00
Vincent Lee be1eb570ef More minor cleaning 2016-05-06 23:50:00 -05:00
Vincent Lee d524a0b2e9 Fold a couple interfaces together, we have way too many .-. 2016-05-06 23:39:33 -05:00
Vincent Lee afc5f93b55 Fix #265 2016-05-06 22:38:07 -05:00
Vincent Lee 072f13d3db Update JEI and add support for recipe category crafting items 2016-05-06 22:24:15 -05:00
Vincent Lee 5e11fe6e06 Removed model registration for last commit 2016-05-06 19:34:33 -05:00
Vincent Lee a3abfb6aad Removed buried petals and mana flash item forms. Closes #268 2016-05-06 19:30:58 -05:00
Vincent Lee c0c1db1aa7 Fix #267 2016-05-06 19:11:33 -05:00
Vincent Lee e99d5dff63 Update to recommended forge, removed useless synchronization in ManaNetworkHandler 2016-05-06 18:49:11 -05:00
Vincent Lee 1b144e6b58 Fix #264 2016-05-04 19:32:33 -05:00
Vincent Lee 7dcd0281b8 Actually commit new zip 2016-05-04 18:58:15 -05:00
Vincent Lee 2d412ac70f Various cleanups, updated alt textures to 1.9 2016-05-04 18:38:09 -05:00
Vincent Lee a0d251fafd Update forge and close #245 2016-05-03 12:38:52 -05:00
Vincent Lee f24409f336 Add workarounds for the silly forge light bug. Closes #221, probably closes #251 as well 2016-05-03 11:31:59 -05:00
Vincent Lee 7a66a9756b Revert stupid find replace hit 2016-05-02 22:08:10 -05:00
Vincent Lee a802650289 Merge branch 'derpbranch' into MC19 2016-05-02 22:06:29 -05:00
Vincent Lee 130c67e758 Fully serverside gaia guardian, buff it a bit 2016-05-02 22:05:35 -05:00
Vincent Lee d0e2f474bc Resync hourglass whenever it flips, hopefully helps with desyncs 2016-05-02 20:14:46 -05:00
Vincent Lee 6889afc34e Delete old models 2016-05-02 19:59:08 -05:00
Vincent Lee bb152907a7 Fix TESR item transforms 2016-05-02 19:45:30 -05:00
Vincent Lee 3996c5d078 Guard against null chunk in packethandler 2016-05-02 19:24:13 -05:00
Vincent Lee 8f4f63453a Move nonfabulous pools into static renderer. Yay performance improvements! 2016-05-02 19:20:31 -05:00
Vincent Lee 725ae1cef1 Fix crystal cube, closes #253 2016-05-02 08:34:30 -05:00
Vincent Lee 93656a9d43 Fix+tweak paint lens particles 2016-05-01 22:43:33 -05:00
Vincent Lee 96a1db97a9 Serverside TilePool 2016-05-01 22:03:58 -05:00
Vincent Lee a339397fcc Some network boilerplate 2016-05-01 21:25:30 -05:00
Vincent Lee e37255a997 Make platform disappear with managlass, and fix version checker 2016-05-01 11:42:40 -05:00
Vincent Lee 95427b1c9d Fix missing texture on fungal apothecary 2016-04-30 14:03:09 -05:00
Vincent Lee 4a6bf0ed0d Fix incorrect horn sound. Closes #257 2016-04-30 13:26:05 -05:00
Vincent Lee b6827ca04e Remove new cooldown from signal flare, remove redundant check from fire/rainbowrod 2016-04-29 08:15:54 -05:00
Vincent Lee 45df392cce Close #259 2016-04-28 23:37:20 -05:00
Vincent Lee abf5d9672b Make some items use new cooldowns, closes #261 2016-04-28 23:34:40 -05:00
Vincent Lee dc35d395cf Some balance changes 2016-04-27 19:26:56 -05:00
Vincent Lee fca4e2bfa8 Properly check kekimurus. Closes #255 2016-04-27 17:23:00 -05:00
Vincent Lee 543b5a1958 Guard against null item stacks in OD -.-. Closes #254 2016-04-27 17:20:18 -05:00
Vincent Lee f8d18ae769 All other sound subtitles 2016-04-23 22:03:27 -05:00
Vincent Lee 6d350451fc Some sound subtitles 2016-04-23 21:05:11 -05:00
Vincent Lee 5d1829a00e Camo block now respects directional blocks. Closes #110 2016-04-23 18:44:32 -05:00
Vincent Lee 16f6289844 Fix dupe dropping with psi. Closes #250 2016-04-23 16:02:02 -05:00
Vasco Lavos da11e497fc Update contributors.properties 2016-04-22 02:41:54 +01:00
Vincent Lee be155e0abb Tweak lexicon hud, closes #241 2016-04-20 19:47:48 -05:00
Vincent Lee 2ad607bff3 Show all buffs on first row 2016-04-20 19:39:24 -05:00
Wire Segal b090622477 Add a ManaUpgradeRecipe. (#218)
third pr for recipes, yay
2016-04-17 22:07:41 -05:00
Vincent Lee af5e9f7751 Fix grisaia crash. Closes #242 2016-04-17 21:28:27 -05:00
Vincent Lee b32f834a73 Go back to meta for now, should close #183 2016-04-17 20:53:12 -05:00
Vincent Lee d34e3453fe Fix bow not being able to fire, Closes #238 2016-04-17 20:49:27 -05:00
Vincent Lee 5d5109d6d1 Fix some items not being colored. Closes #240 2016-04-17 20:41:51 -05:00
Vincent Lee a838427df8 Finalized migration mechanisms 2016-04-17 20:32:17 -05:00
Vincent Lee 55262cd4e5 Update nag message, add migration recipes for everything 2016-04-17 20:03:31 -05:00
Vincent Lee de0ba4ada9 Revert "Upload remapping code for troubleshooting"
This reverts commit 9309355af2.
2016-04-17 12:00:49 -05:00
Vincent Lee 5bf1c26ffb Make some conditionals smarter 2016-04-17 00:35:09 -05:00
Vincent Lee dd300ea32f Convert gaia guardian to loot tables and fix gg music 2016-04-17 00:31:47 -05:00
Vincent Lee b7fead0e4d Initial stuff 2016-04-16 17:34:17 -05:00
Vincent Lee 905a372708 Add remap for full slabs 2016-04-15 20:06:44 -05:00
Vincent Lee 9309355af2 Upload remapping code for troubleshooting 2016-04-15 19:24:36 -05:00
Vincent Lee 910dfc25db Fix derp 2016-04-15 10:17:39 -05:00
Vincent Lee 0ad2a4f218 Fix boss bar rendering, music still not playing 2016-04-15 10:16:46 -05:00
Vincent Lee b479284760 Fix throwables 2016-04-14 23:00:55 -05:00
Vincent Lee 0a396b0d82 Full optimize imports 2016-04-14 22:49:49 -05:00
Vincent Lee 3f85ca5805 Remove isFull3D as it's no longer used for anything 2016-04-14 22:45:31 -05:00
Vincent Lee 9f60ac59fa Remove old flugel code. This is what git is for :P 2016-04-14 22:42:46 -05:00
Vincent Lee f01b8a1fa9 Prevent paint lens from painting blocks illegal colors 2016-04-14 22:39:26 -05:00
Vincent Lee 8c3d1bde14 Tweak equip sounds, boost thundercaller's attack speed 2016-04-14 22:37:26 -05:00
Vincent Lee a782017852 Remove old remappers 2016-04-14 22:21:55 -05:00
Vincent Lee b9fcf9bd53 Modernize ice pendant. Now acts like frost walker VIII and doesn't require player to be touching ground 2016-04-14 22:18:37 -05:00
Vincent Lee 391eea0416 Minor optimization in jaded ama, closes #186 kinda maybe 2016-04-14 22:05:09 -05:00
Vincent Lee a4279647fa Tweak previous pr 2016-04-14 22:02:40 -05:00
Wire Segal 9e82e5357a Armor keeps enchantments when crafted (#213)
* Armor keeps enchantments when crafted

Closes #209

* Copy runic shielding as well
2016-04-14 21:59:36 -05:00
Vincent Lee d33590f7ca Fix bounding box issue causing bindings to fail. Closes #234 2016-04-14 21:39:43 -05:00
Vincent Lee 45dda5f19c Fix vine balls and tweak slightly 2016-04-14 00:23:29 -05:00
Vincent Lee be9fba512b Fix stair json weirdness 2016-04-13 17:30:26 -05:00
Vincent Lee f219836f81 update canBlockRenderInLayer 2016-04-13 16:20:38 -05:00
Vincent Lee 2c75af2359 Build 301 2016-04-13 10:09:30 -05:00
Vincent Lee 86b6962f94 Minor optimization in MathHelper, cleanup for rel 2016-04-13 09:57:17 -05:00
Vincent Lee 26831d3e98 Tweaks to heisei dream inner workings 2016-04-13 09:48:29 -05:00
Vincent Lee a6c2631946 Cleanup prev commit 2016-04-12 13:47:18 -05:00
Vincent Lee 7a36e543ad Experiemntally convert mana network to using sets 2016-04-12 12:28:58 -05:00
Vincent Lee 649dffcf71 Moar cleanups! 2016-04-12 01:32:49 -05:00
Vincent Lee b3ee6dcf7a More cleanup, brews now average their potion colors instead picking the first 2016-04-12 00:51:09 -05:00
Vincent Lee 69cbecb521 More cleanup, Full pool for JEI handlers 2016-04-11 23:22:02 -05:00
Vincent Lee effd07129c A round of FindBugs, and fix red interceptor not working at all 2016-04-11 22:47:24 -05:00
Vincent Lee e73feae688 Tweak horse inv dropping again 2016-04-11 21:44:30 -05:00
Vincent Lee cee7a965a5 Tweak horse inv dropping 2016-04-11 21:17:42 -05:00
Vincent Lee 07f3099071 Force relay tweaks, hopefully resolves #232 2016-04-11 20:55:11 -05:00
Vincent Lee 70cc32a839 Add RenderFull NBT tag override to pools. Closes #228 2016-04-11 20:18:41 -05:00
Vincent Lee 50eeb06bf6 Remove useless line. Make horse drop all items when being virused, closes #189 2016-04-11 19:43:18 -05:00
Vincent Lee d97b2ceb1d Fix pool's north wall being slightly taller, Fix pump item model 2016-04-09 22:43:50 -05:00
Vincent Lee 209970b60c Fix bauble box gui. Closes #185 2016-04-09 21:37:41 -05:00
Vincent Lee 5cdf48393a Fix top half of double flowers not sparkling with correct color. Also disable random offsetting because it's broken 2016-04-09 21:25:41 -05:00
Vincent Lee 533a287bd3 Allow vanilla flowers to be ground directly into powder. Closes #215 2016-04-09 21:03:51 -05:00
Vincent Lee 7c61b1b9d3 Misc cleanup, fix hud catalyst, test gpg sign 2016-04-09 20:26:04 -05:00
Vincent Lee 4a9c269a67 Clean up terra firma rod code 2016-04-08 13:24:44 -05:00
Vincent Lee 1a7e128ae5 Merge pull request #224 from yrsegal/19FixTerraformRod
Fix the Rod of the Terra Firma not working
2016-04-08 12:59:00 -05:00
Vincent Lee be09676053 Use == 2016-04-08 12:37:13 -05:00
Vincent Lee 11d327dcce Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-04-08 12:32:59 -05:00
Vincent Lee 5df661bf28 Merge pull request #227 from yrsegal/Catalysts
Catalysts can accept any catalyst BlockState.
2016-04-08 12:32:41 -05:00
yrsegal fa8c12d6fc Catalysts can accept any catalyst BlockState.
This constitutes a major, but not breaking, API update. All catalyst
methods previously in RecipeManaInfusion have been deprecated.
2016-04-07 21:50:28 -04:00
Jonathan Smith 3fb76acf57 Merge pull request #1835 from elbo2525/master
Update ja_JP.lang
2016-04-07 09:42:02 +01:00
elbo2525 2471642df7 Update ja_JP.lang 2016-04-07 15:53:52 +09:00
yrsegal 39a44642e4 Fix the Rod of the Terra Firma not working
Closes #191
2016-04-06 18:58:39 -04:00
Vincent Lee bcecfb9148 Merge pull request #222 from yrsegal/19FixMunchdew
Fix munchdew not working
2016-04-06 17:43:06 -05:00
yrsegal 1f11359b23 Fix munchdew not working
Closes #220
2016-04-06 18:14:07 -04:00
Vincent Lee 4ec22a0417 Merge upstream 2016-04-06 09:51:50 -05:00
Vincent Lee 8a6189cbd2 Fix mana tablet rendering 2016-04-06 09:48:28 -05:00
Vincent Lee 796d231867 Fix wall digging textures 2016-04-05 13:20:37 -05:00
Vincent Lee fb0a414443 Rename build to fix stupid issues 2016-04-05 08:51:10 -05:00
Vincent Lee ae57ace7e8 Fix spreader item model, misc fixes, update forge to 1841 so all interact events are back 2016-04-04 21:03:12 -05:00
Vincent Lee f011be3571 Switch last commit to shaders. Thanks PaleoCrafter! 2016-04-04 13:32:36 -05:00
Vincent Lee 109d045a4d Fix ugly multiblock rendering 2016-04-04 13:09:02 -05:00
Vincent Lee 32fb1bcf6d Fix contributor renders. Closes #200 2016-04-04 09:47:02 -05:00
Vincent Lee 529c41407f Allow mana guns to be dual wielded 2016-04-04 09:30:52 -05:00
Vincent Lee ea6484211b API cleanups 2016-04-03 23:26:20 -05:00
Vincent Lee 53ce019cf5 Various misc cleanups 2016-04-03 23:07:24 -05:00
Vincent Lee eec7c8ba59 Fix missing center model for panes. Closes #208 2016-04-03 21:25:55 -05:00
Vincent Lee c07febc67d Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-04-03 21:23:18 -05:00
Vincent Lee 08550cc442 Cleanup 2016-04-03 21:23:04 -05:00
Vincent Lee 82fa306a5c Merge pull request #207 from yrsegal/19Patch
Fix invalid color combination
2016-04-03 21:03:21 -05:00
yrsegal 63a5bdee1c Fix invalid color combination 2016-04-03 21:54:36 -04:00
Vincent Lee f8157f1222 Fix erratic colorization of bursts and flashes
Fix erratic colorization of bursts and flashes
2016-04-03 20:50:14 -05:00
yrsegal 7536ebe4c6 Fix erratic colorization of bursts and flashes
closes #198
2016-04-03 21:38:42 -04:00
Vincent Lee af19c7cece Update kekimurus for extra slice of cake in 1.8 2016-04-03 20:23:05 -05:00
Vincent Lee 43395f9441 Fix walls appearing in vanilla creative tab. Closes #190 2016-04-03 20:08:58 -05:00
Vincent Lee 97495a913d Cleanup walls 2016-04-03 19:59:58 -05:00
Vincent Lee 1d901ec9ac Fix panes. Closes #204 2016-04-03 19:39:05 -05:00
Vincent Lee 62b39ee682 Fix crash serverside. Closes #197 2016-04-03 19:00:20 -05:00
Vincent Lee 759bf2835d Merge branch 'MC19' of github.com:williewillus/Botania into MC19 2016-04-03 18:47:57 -05:00
Vincent Lee 69db133091 Update forge 2016-04-03 18:47:31 -05:00
Wire Segal 5ceceec6bb Various minor fixes
* Fix Lexicon crashing with invalid version format

Closes #192

* Fix crashing on damage taken

Closes #196

* Fix attributes being too present/wrong values

Closes #194
2016-04-03 17:01:24 -05:00
Vasco Lavos e122e5252c Update contributors.properties 2016-04-02 21:39:55 +01:00
Vincent Lee 5f3172bd5d Cleanup, fix soulscribe holding 2016-04-01 16:51:30 -05:00
Vincent Lee 79c8e3d695 various miscellaneous fixes 2016-03-31 01:09:46 -05:00
Vincent Lee f5b435bf24 Model cleanup 2016-03-30 23:26:06 -05:00
Vincent Lee b6d607b553 Bow tweaks 2016-03-27 14:07:27 -05:00
Vincent Lee d411fac65c Half fix floating flowers 2016-03-27 13:35:12 -05:00
Vincent Lee 9bc724d6fd Fix flower models 2016-03-27 12:45:48 -05:00
Vincent Lee bcd00dbba3 Update JEI, more overrides 2016-03-27 12:05:19 -05:00
Vincent Lee c8531fde67 Update forge, some more model overrides 2016-03-27 00:30:45 -05:00
Vincent Lee 4771ec5bdb Some item overrides, fix bow firing 2016-03-24 14:41:10 -05:00
Vincent Lee ecb0f8a4be Fix bow models 2016-03-24 13:47:58 -05:00
Vincent Lee ab618923df Fix some methodhandles 2016-03-24 13:01:07 -05:00
Vincent Lee 674ba5c19d Fix somde models 2016-03-24 12:30:14 -05:00
Vincent Lee 1b87160ef6 Register the potions 2016-03-24 09:45:56 -05:00
Vincent Lee ec419edfe3 Fix sounds 2016-03-24 09:13:15 -05:00
Vincent Lee 5b9a5bf480 Update most reflection names 2016-03-24 00:02:36 -05:00
Vincent Lee 1b79575648 Fix other models 2016-03-23 23:47:06 -05:00
Vincent Lee 0ba32450cf Fix stairs 2016-03-23 23:31:08 -05:00
Vincent Lee 400f6583ad Fix item models 2016-03-23 23:10:22 -05:00
Vincent Lee 365bed04c0 Flowers not working 2016-03-23 22:10:38 -05:00
Vincent Lee 3e79893a35 Barely runs 2016-03-23 21:34:19 -05:00
Vincent Lee d37518c9f4 Compiles. Update JEI. 2016-03-19 15:58:12 -05:00
Vincent Lee 0af2d25a71 Misc fixes, fix baked models 2016-03-19 11:38:16 -05:00
Vincent Lee 268a8afda5 Most TE's 2016-03-19 09:59:45 -05:00
Vincent Lee 5cc6879ecb Lots of blocks 2016-03-18 23:08:49 -05:00
Vincent Lee a268149d73 Misc rendering 2016-03-18 20:42:43 -05:00
Vincent Lee fe16702db4 Brews and potions 2016-03-18 20:26:53 -05:00
Vincent Lee c23b9dcaee Some blocks 2016-03-18 20:20:23 -05:00
Vincent Lee 663c797cf3 More items 2016-03-18 20:01:50 -05:00
Vincent Lee 3852282598 Missed two 2016-03-18 19:03:35 -05:00
Vincent Lee 3dd877e69a Color handling 2016-03-18 18:59:23 -05:00
Vincent Lee 1c608d4636 A lot of items. Rods, and lenses. 2016-03-18 16:51:21 -05:00
Vincent Lee cfbf2cc538 Entities 2016-03-18 14:47:38 -05:00
Vincent Lee 017829927f Some blocks 2016-03-18 13:26:42 -05:00
Vincent Lee 644d6553d1 Large amounts of stuff in client 2016-03-18 13:17:33 -05:00
Vincent Lee 58e06ae86b Most of API 2016-03-18 12:30:10 -05:00
Vincent Lee 3bb203e371 More rename substitutions 2016-03-18 11:07:42 -05:00
Vincent Lee 5821ede5e6 Lots of name substitutions 2016-03-18 10:42:42 -05:00
Vincent Lee 316363d729 Remove redundant check on jaded amaranthus 2016-03-18 00:02:40 -05:00
Vasco Lavos 66a5c5e578 Merge pull request #1828 from yrsegal/master
Add a color function to the RenderTileFloatingFlower
2016-03-18 02:05:07 +00:00
wiiv fcb394bba3 Better textures. (Take 1) 2016-03-18 01:47:56 +00:00
yrsegal e174144937 Add a color function to the RenderTileFloatingFlower
Derivative classes can use it (allows for rainbow floating flowers)
2016-03-17 21:26:39 -04:00
Vincent Lee 6622ec5270 Removeold potion handlers 2016-03-16 22:54:47 -05:00
Vincent Lee f86f42b895 Fix infinite potion spam with sponge 2016-03-14 15:40:49 -05:00
Vincent Lee b9b7a4e07d Finish waterbowl fancification 2016-03-14 13:37:10 -05:00
Vincent Lee 199243c120 waterbowl fancification attempt 2016-03-14 12:46:29 -05:00
Vincent Lee 4b056375d4 Fix pump trying to animate serverside. Closes #181 2016-03-13 12:30:12 -05:00
Vincent Lee 8e550e36d2 Revert "Fix particles being culled at render distance. Closes #15"
This reverts commit 9a756ef79e.
2016-03-13 12:26:21 -05:00
Vincent Lee 9a756ef79e Fix particles being culled at render distance. Closes #15 2016-03-12 21:12:09 -06:00
Vincent Lee bead93c653 Minor memory optimization, fix JEI integration for magical flowers 2016-03-12 20:48:48 -06:00
Vincent Lee e2596f4511 Fix red string comparator not binding, closes #179 2016-03-12 20:39:07 -06:00
Vincent Lee ec1cc498ce Build 299 2016-03-12 20:38:49 -06:00
Vincent Lee 8f67094377 Tweak nag and version checker 2016-03-12 16:50:28 -06:00
Vincent Lee 2172d78dd2 Disable the background downloader for now, at least til we get a file server 2016-03-12 16:36:44 -06:00
Vincent Lee 099c02157e Update buildscript and update checker 2016-03-12 16:26:59 -06:00
Vincent Lee 3cc7099ab2 Fix itemfinder crash. Closes #176 2016-03-12 14:48:45 -06:00
Vincent Lee f1403a4577 Fix terra pick mass harvesting. closes #175 2016-03-12 13:27:47 -06:00
Vincent Lee 64e1282444 Done! 2016-03-12 00:59:11 -06:00
Vincent Lee 949fdde057 Made the old model not render in 1p 2016-03-12 00:51:34 -06:00
Vincent Lee e031b3b52c In working state 2016-03-12 00:23:51 -06:00
Vincent Lee 55c2a522ee Preliminary 3d lexicon 2016-03-11 23:22:38 -06:00
Vincent Lee cf7f10d082 Fix the pump textures 2016-03-11 22:02:45 -06:00
Vasco Lavos 19e226780d memes 2016-03-12 00:43:33 +00:00
Vincent Lee 8909b26e99 Update buildscript 2016-03-11 16:04:31 -06:00
Vincent Lee 3534a6cc5f Close #174 2016-03-11 13:14:42 -06:00
Vincent Lee 95f8cc529f Fix dark quartz slab model 2016-03-11 09:38:08 -06:00
Vincent Lee 4c1b15b336 nullcheck spark item. Closes #173 2016-03-09 20:50:58 -06:00
Vincent Lee 4bad74dbfd Workaround for a jei integration problem, closes #172 2016-03-09 20:27:55 -06:00
Vincent Lee f5b71f9db1 Possible fixes for #171 2016-03-09 15:44:14 -06:00
Vincent Lee 769528ceed Fix prism not resyncing when being automated 2016-03-09 09:56:30 -06:00
Vincent Lee 84e38b5a32 Fix nonssmooth turntable animation. Closes #169 2016-03-09 09:35:45 -06:00
Vincent Lee 3a9f0b346e Fix inverted redstone conditions in prism. Closes #167 2016-03-08 22:44:31 -06:00
Vincent Lee 3097dde357 Restore storage drawers compat, closes #166 2016-03-08 10:57:19 -06:00
Vincent Lee e25cf207a6 Let rabbits spawn from cocoon of cparice 2016-03-07 20:46:05 -06:00
Vincent Lee c74e77d9fc Fix corporea index stars being too bright 2016-03-07 20:44:22 -06:00
Vincent Lee c105b606c4 Moar capability fixes. Closes #165 2016-03-07 20:26:52 -06:00
Vincent Lee 93174616c7 Fall back to null sided cap 2016-03-07 14:01:13 -06:00
Vincent Lee 63f160b78b A reference <3 2016-03-07 13:40:08 -06:00
Vincent Lee bb89013f1e According to lexicon sparks only read from top of inventory 2016-03-07 13:36:27 -06:00
Vincent Lee 1229141b2f Fix sparks not being colored by network 2016-03-07 13:20:49 -06:00
Vincent Lee 9f1a2b8a7d Retrofit corporea to work with capabilities 2016-03-07 13:09:59 -06:00
Vincent Lee cda20175c8 Fix derp when removing workaround. closes #161, #162, #163 2016-03-07 09:40:02 -06:00
Vincent Lee 46ec4b8127 Tweak guard in shedding config. Closes #153 2016-03-06 17:50:55 -06:00
Vincent Lee 8f46355769 Spreader item models. Closes #4. Also fix third person pool model and restore old lexicon model until I'm ready to tackle it 2016-03-06 14:19:28 -06:00
Vincent Lee 93f869a8f5 Removed duplicate pool textures 2016-03-06 12:20:34 -06:00
Vincent Lee 3084b058da Cleanups in API 2016-03-05 22:02:22 -06:00
Vincent Lee db23bffea6 Remove future references to 1.8 from lang file 2016-03-05 20:43:03 -06:00
Vincent Lee 0d9fe52f5d Merge branch 'capability' into MC18 2016-03-05 20:30:08 -06:00
Vincent Lee 036fc4b0cc Use cap's native serialization 2016-03-05 12:12:29 -06:00
Vincent Lee 67bcd94edf Fix inverted potion condition 2016-03-05 09:30:44 -06:00
Vincent Lee 9975f4b028 Make piston relays not stringly typed 2016-03-05 01:34:00 -06:00
Vincent Lee 274b4ab05a onContentsChanged exists 2016-03-04 23:07:16 -06:00
Vincent Lee b581a5544b Fix memory usage problem caused by vanilla 2016-03-04 22:22:07 -06:00
Vincent Lee 28f4321cfb Derp missed one 2016-03-04 21:33:28 -06:00
Vincent Lee 3c5f588431 Get rid of BlockContainer 2016-03-04 11:01:55 -06:00
Vincent Lee 19ed5877df Make API java 7 compileable, so that people who have an optional botania dep don't have to use java 8 2016-03-03 10:33:57 -06:00
Vincent Lee 2f1bc4188a Prevent mobs from riding pool cart 2016-03-03 09:49:15 -06:00
Jonathan Smith 6f6cdf8198 Merge pull request #1823 from NatsuArashi/patch-2
Update zh_TW.lang
2016-03-03 11:58:48 +00:00
NatsuArashi 132584e937 Update zh_TW.lang 2016-03-03 18:10:04 +08:00
Vincent Lee 9aa6405566 Remove debug output 2016-03-02 22:14:08 -06:00
Vincent Lee 40bad433c8 Fel pumpkin can now be placed from dispensers 2016-03-02 22:13:45 -06:00
Vincent Lee 01ca175951 Remove tile ticking shim 2016-03-02 14:15:45 -06:00
Vincent Lee 298d46399f Derp 2016-03-02 14:01:40 -06:00
Vincent Lee a929156626 Fix overeager TE refreshing. Closes #152 and potentially fixes #71 2016-03-02 10:30:46 -06:00
Vincent Lee 70942d7089 Fix faulty pane culling (vanilla bug) 2016-02-29 21:49:54 -06:00
Vincent Lee 38ca4b429d Fix recipe conflicts, making chiseled botania bricks craftable again. Closes #29 2016-02-29 21:30:33 -06:00
Vincent Lee be9e4f731f Fix nulls getting into FakeWorldAccess. Closes #143 2016-02-29 20:41:53 -06:00
Vincent Lee fefb5b5cc4 Tweak corporea funnel lexicon entry, closes #144 2016-02-29 20:35:48 -06:00
Vincent Lee 1c752992cf Fix bore+warp lenses breaking the destination block. Closes #149 2016-02-29 20:18:43 -06:00
Vincent Lee c6420168aa Fix another problem caused by shifting idmap. Closes #147 2016-02-29 19:00:15 -06:00
Vincent Lee ae89d0f18d Shim to avoid potion idmap shifting on startup. Closes #148 2016-02-29 18:56:08 -06:00
Vincent Lee ef2ab91b37 All basic tiles 2016-02-28 20:46:01 -06:00
Vincent Lee 59232209a4 Redstrings 2016-02-28 15:57:59 -06:00
Vincent Lee 20ab306985 Merge branch 'MC18' into capability 2016-02-28 15:45:20 -06:00
Vincent Lee 076a7ee23a Tweak tesr guards. closes #142 2016-02-28 14:58:18 -06:00
Vincent Lee b12cd80ad3 Update forge and close #52 2016-02-28 12:20:11 -06:00
Vincent Lee 6d7fe40cd3 Fix pink wither being too aggressive in showing its love. Closes #141 2016-02-28 11:48:42 -06:00
Vincent Lee e4401efeb6 Hopperhock 2016-02-28 10:53:01 -06:00
Vincent Lee a3c30caa40 Make it compile 2016-02-28 01:44:16 -06:00
Vincent Lee 1580790398 Merge upstream final release 2016-02-28 01:29:25 -06:00
Vincent Lee 8f89b630a5 Merge pull request #140 from blacksmithgu/MC18
Update ItemManaRing to also use durability bar instead of damage
2016-02-28 01:16:54 -06:00
Michael Brenan 861357f313 Update ItemManaRing to also use durability bar instead of damage 2016-02-27 23:40:25 -06:00
Vincent Lee 84b171603d Fix planestrider's sash. Closes #139 2016-02-27 15:31:50 -06:00
Vincent Lee ae356abcfe Reorganize 2016-02-27 14:12:39 -06:00
Vincent Lee d498b7cd2e Fix floating flower spinning (thanks gigaherz and tterrag) Closes #9 2016-02-26 21:15:31 -06:00
Vincent Lee 50420c3b4b Sigh 2016-02-26 20:39:50 -06:00
Vincent Lee 99e9cac30a Merge branch 'MC18' of github.com:williewillus/Botania into MC18 2016-02-26 19:53:12 -06:00
Vincent Lee 18ea3e6bfb Pure daisy now allows variable time recipes, closes #137. 2016-02-26 19:48:43 -06:00
Vincent Lee f51540fd52 Update README.md 2016-02-25 14:56:00 -06:00
Vasco Lavos f8a4018ec7 Build 249 2016-02-25 19:53:29 +00:00
Vasco Lavos 0ee62f53e3 Added back the passive decay time config. 2016-02-25 19:32:36 +00:00
Vasco Lavos fd5606d02d Merge pull request #1775 from the-vindex/master
Added support for StorageDrawers and Deep Storage API
2016-02-25 19:20:13 +00:00
Vasco Lavos 94d94b6c79 Merge pull request #1811 from elbo2525/master
Add ja_JP.lang
2016-02-25 19:20:04 +00:00
Vincent Lee 47001131b0 Move specialflower statemapper to where it belongs 2016-02-22 23:17:52 -06:00
Vincent Lee 1ed833a4a7 Fix mistake in spawnerclaw, made debug atlas dump harder to trigger 2016-02-22 23:10:01 -06:00
Vincent Lee 9d6c10f354 Slight tweaks to corporea cube rendering 2016-02-22 22:03:57 -06:00
Jonathan Smith 52db87735a Merge pull request #1815 from 3TUSK/zh_CN_update
Update zh_CN.lang to latest ver.
2016-02-22 14:07:55 +00:00
Urey.X c9281021b6 Update zh_CN.lang to latest ver.
Also archived the old translation at the end of file.
2016-02-22 08:24:26 -05:00
Vincent Lee 9b3579fe56 Fix touching client classes in methodhandles. Closes #129 2016-02-21 17:03:28 -06:00
elbo2525 d5a3a056f5 Add ja_JP.lang 2016-02-21 10:51:46 +09:00
Vincent Lee d7d4440b0e Update spawner claw to use methodhandles 2016-02-20 18:19:03 -06:00
Vincent Lee 91d234e6ed Fix life aggregator being completely broken 2016-02-20 17:40:20 -06:00
Vincent Lee b4d69dbac2 Fix aesir not binding drops to uuid 2016-02-20 17:26:29 -06:00
Vincent Lee 7967f25c1c Change a bunch of heavy reflection to use methodhandles 2016-02-20 17:24:31 -06:00
Vincent Lee b6427bcae9 Merge branch 'MC18' of github.com:williewillus/Botania into MC18 2016-02-20 13:34:46 -06:00
Vincent Lee 90f793508a Tentative uuid fix for relics. #124 2016-02-20 13:34:16 -06:00
Vincent Lee db6ccb9016 Merge pull request #123 from kevsgrove/patch-1
Update BlockSolidVines.java
2016-02-19 12:44:10 -06:00
Jonathan Smith 3d5a8aab19 Merge pull request #1810 from NatsuArashi/patch-1
Update zh_TW.lang
2016-02-19 17:14:01 +00:00
kevsgrove 59939824a3 Update BlockSolidVines.java 2016-02-19 07:08:12 -08:00
NatsuArashi 0c75bc9356 Update zh_TW.lang 2016-02-19 20:32:48 +08:00
Vincent Lee ad5b7fd73b Merge upstream 2016-02-18 10:04:02 -06:00
Vincent Lee 4f8376a148 Fix dark quartz disabled crashing client (Renari), other cleanups in modelhandler. Closes #119. 2016-02-18 09:26:16 -06:00
Vincent Lee 9e0c7ba0c7 Cleanup in modelhandler, tweak to caching in corporea cube renderer 2016-02-17 17:49:54 -06:00
Vincent Lee 769ed577c4 Fix a rare crash rendering the debug screen 2016-02-17 16:52:07 -06:00
TheWhiteWolves b0fe511fc8 Add the Clayconia Petite (X & Z range 2, Y range 1), Closes #1805 2016-02-13 01:09:21 +00:00
Jonathan Smith fc9470777b Merge pull request #1802 from yrsegal/master
Multiparts now work on both the client and the server.
2016-02-11 12:10:36 +00:00
yrsegal a0d0f2ba65 Multiparts now work on both the client and the server. 2016-02-10 16:57:20 -05:00
Vasco Lavos 044e61f73f Merge pull request #1801 from Vazkii/revert-1800-master
Revert "Multiparts now work on both the client and the server."
2016-02-10 21:49:31 +00:00
Vasco Lavos abc7756a9b Revert "Multiparts now work on both the client and the server." 2016-02-10 21:49:26 +00:00
Jonathan Smith c8a01f7da0 Merge pull request #1800 from yrsegal/master
Multiparts now work on both the client and the server.
2016-02-10 21:48:58 +00:00
yrsegal 59b177e231 Multiparts now work on both the client and the server. 2016-02-10 13:51:31 -05:00
Jonathan Smith 27a5991350 Merge pull request #1798 from isochronous/lex-botania-lang_en-corrections
Lexica Botania lang_en corrections
2016-02-10 08:03:22 +00:00
Jeremy McLeod e0023c0566 Corrected spelling & grammar in Lexica Botania for:
- Manastorm Charge
- Teru Teru Bozu
- Mana Blaster
- Rod of the Lands
- Manasteel Equipment
- Terrasteel Armor
- Terra Shatterer
2016-02-09 19:42:56 -05:00
Jonathan Smith 6135f44792 Merge pull request #1788 from isochronous/patch-1
Fixed a typo
2016-02-05 00:08:26 +00:00
Jeremy McLeod 5270f5ea20 Fixed a typo
adjusted != adjacent
2016-02-04 15:20:30 -05:00
Jonathan Smith ea10c48439 Merge pull request #1783 from nekosune/master
Added quartz variants to Ore Dictionary
2016-02-02 22:05:43 +00:00
nekosune 3593d4b759 Added quartz variants to Ore Dictionary 2016-02-02 21:59:03 +00:00
nekosune 9e37f37c53 Added quartz variants to Ore Dictionary 2016-02-02 21:40:38 +00:00
Vasco Lavos f0f372205c Update contributors.properties 2016-02-02 17:35:45 +00:00
Jonathan Smith 7bfeef18a9 Merge pull request #1782 from PikadudeNo1/patch-1
Fixed Marimorphosises having incorrect downward range
2016-02-01 14:55:50 +00:00
Pikadude No. 1 9a60705967 Fixed Marimorphosises having incorrect downward range 2016-02-01 04:45:47 -08:00
Jonathan Smith 0e617e6046 Merge pull request #1781 from howtonotwin/inkwellfix
Newly infused mana inkwells show durability bar
2016-02-01 09:38:19 +00:00
Rasheeq d32ce6c519 Newly infused mana inkwells show durability bar
No more confused players!
Also fixes williewillus/Botania#91.
2016-01-31 20:54:54 -05:00
Jonathan Smith e0293afad0 Merge pull request #1779 from NatsuArashi/patch-15
Update zh_TW.lang
2016-01-29 09:13:18 +00:00
NatsuArashi dfb2ef2a61 Update zh_TW.lang 2016-01-29 16:08:29 +08:00
Vindex f44d846d32 Added support for StorageDrawers and Deep Storage API 2016-01-24 22:44:30 +01:00
TheWhiteWolves 74d4130ba5 Add some default entities from vanilla and botania to the gravity rod blacklist 2016-01-24 17:39:04 +00:00
2060 changed files with 29042 additions and 35871 deletions

No files matched your search

-29
View File
@@ -1,29 +0,0 @@
-- 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 --
* Lang entries to be updated in non-english: Corporea funnel new numbers. Moving of prismarine entry.
* 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]
+5 -5
View File
@@ -1,14 +1,14 @@
1.8 PORT README:
README:
This is williewillus' 1.8(.8) port of Botania!
This is williewillus' port and continuation of Botania for Minecraft versions 1.8.x and above
All licensing and distribution rights are exactly as 1.7.10 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.
As of 2016 02 25, Vazkii has stopped working on Botania. Requests for design changes will still not be accepted here (post them on reddit). Even then, don't expect anything to be added without severe deliberation scrutiny.
Please report all 1.8 bugs to MY REPOSITORY, NOT VAZKII'S.
Please report all 1.8+ issues to this repository.
These non-CurseForge builds can be openly used in modpacks of any kind, in accordance with the requirements of the license of this mod.
Binary file not shown.
+1 -1
View File
@@ -1,6 +1,6 @@
{
"pack": {
"pack_format": 1,
"pack_format": 2,
"description": "Alternate Botania textures by Futureazoo"
}
}
+38 -22
View File
@@ -1,3 +1,6 @@
import groovy.json.JsonSlurper
import groovy.json.JsonOutput
buildscript {
repositories {
mavenCentral()
@@ -11,12 +14,13 @@ buildscript {
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
classpath 'com.matthewprenger:CurseGradle:1.0-SNAPSHOT'
}
}
repositories {
mavenCentral()
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
@@ -42,7 +46,7 @@ minecraft {
version = "${config.mc_version}-${config.forge_version}"
runDir = "eclipse/assets"
mappings = "snapshot_20151229"
mappings = "snapshot_20160718"
//This, does the token replacement.
//Though, I reccomend this to be replaced with a token such as @VERSION@
replace 'GRADLE:BUILD', config.build_number
@@ -53,9 +57,6 @@ minecraft {
}
//This here is for SCP
repositories {
mavenCentral()
}
configurations {
sshAntTask
}
@@ -66,11 +67,7 @@ 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.25.7.145"
deobfCompile "mezz.jei:jei_1.10.2:3.7.8.234"
//and a bit more for SCP
sshAntTask "org.apache.ant:ant-jsch:1.7.1", "jsch:jsch:0.1.29"
@@ -81,6 +78,9 @@ compileJava {
targetCompatibility = 1.8
}
sourceCompatibility = 1.8
targetCompatibility = 1.8
processResources {
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
@@ -101,7 +101,7 @@ processResources {
*/
task deobfJar(type: Jar) {
from(sourceSets.main.output)
archiveName = "${baseName} ${version}-deobf.${extension}"
archiveName = "${baseName}.${version}-deobf.${extension}"
}
artifacts {
@@ -110,16 +110,33 @@ artifacts {
/**
* Increments the buildnumber in your config file, and saves it
*/
task incrementBuildNumber(dependsOn: 'reobf') << {
task incrementBuildNumber(dependsOn: 'reobfJar') << {
config.build_number = (config.build_number.toString().toInteger()) + 1
configFile.withWriter {
config.toProperties().store(it, "")
}
// todo make this flexibile - collection of supported mc versions
file('web/versions.ini').append("\n${version}=${minecraft.version}")
file("${config.dir_repo}/version/${minecraft.version}.txt").write("${version}")
def updateJsonFile = file('version/update.json')
def updateJson = new JsonSlurper().parse(updateJsonFile) as Map
// todo detect if the mcversion is absent
// Add to version section
updateJson."${minecraft.version}"."${version}" = "See https://github.com/williewillus/Botania/releases/${version}"
// Update promos
updateJson.promos."${minecraft.version}-latest" = "${version}"
updateJson.promos."${minecraft.version}-recommended" = "${version}"
updateJsonFile.write(JsonOutput.prettyPrint(JsonOutput.toJson(updateJson)))
}
/* Unused - Forgecraft and web server stuff
// I have no idea what I'm doing
task wtfGradle2(type: Copy) {
from(jar.destinationDir)
@@ -157,9 +174,7 @@ task sort(type: Delete) {
delete "${config.dir_output}/${deobfJar.archiveName}", "${config.dir_output}/wtf"
}
/**
* This is the upload task from the build.xml
*/
// This is the upload task from the build.xml
task upload() << {
scp('/files') {
fileset(file: jar.archivePath)
@@ -175,9 +190,7 @@ task upload() << {
}
}
/**
* This is deply_web task
*/
// This is deploy_web task
task deployWeb << {
scp('/') {
fileset(dir: 'web') //everything from the web directory
@@ -205,6 +218,7 @@ def scp(String dir, Closure antFileset = {}) {
}
}
}
*/
def parseConfig(File config) {
config.withReader {
@@ -216,21 +230,23 @@ def parseConfig(File config) {
jar {
//rename the default output, for some better... sanity with scipts
archiveName = "${baseName} ${version}.${extension}"
archiveName = "${baseName}-unofficial.${version}.${extension}"
}
curseforge {
apiKey = priv.cfkey
project {
id = "225643"
id = "241973"
changelog = """
See http://botaniamod.net/changelog.php#${version}
See https://github.com/williewillus/Botania/releases/tag/${version}
"""
releaseType = "release"
addGameVersion "${minecraft.version}"
relations {
requiredLibrary 'baubles'
}
}
}
defaultTasks 'clean', 'build', 'sort', 'forgecraft', 'incrementBuildNumber', 'curse', 'upload'
//defaultTasks 'clean', 'build', 'sort', 'forgecraft', 'incrementBuildNumber', 'curse', 'upload'
defaultTasks 'clean', 'build', 'incrementBuildNumber', 'curseforge'
+4 -4
View File
@@ -1,9 +1,9 @@
#
#Fri Jan 08 18:17:27 GMT 2016
#Fri Jul 29 18:40:22 CDT 2016
version=r1.8
dir_output=../Build Output/Botania/
forge_version=11.15.1.1722
mc_version=1.8.9
forge_version=12.18.1.2044
mc_version=1.10.2
dir_repo=./
build_number=249
build_number=315
mod_name=Botania
+4
View File
@@ -53,3 +53,7 @@ l0nekitsune=14
swiftlileagle=14
gryphonn=11
loraanicus=10
samerater=8
coolcabbage16=13
eladkay=3
tobiasling=9
+2 -2
View File
@@ -1,6 +1,6 @@
#Mon Sep 14 12:28:28 PDT 2015
#Sat May 28 11:56:22 CDT 2016
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-all.zip
@@ -12,7 +12,7 @@ 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.util.math.BlockPos;
import net.minecraft.world.World;
public final class BuildCraftAPI {
@@ -10,11 +10,13 @@ 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.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import javax.annotation.Nonnull;
/** Use minecraft's EnumDyeColor in as many places as possible. */
@Deprecated
public enum EnumColor implements IStringSerializable {
@@ -111,13 +113,14 @@ public enum EnumColor implements IStringSerializable {
return name().replace("_", ".").toLowerCase(Locale.ENGLISH);
}
@Nonnull
@Override
public String getName() {
return NAMES[ordinal()];
}
public String getLocalizedName() {
return StatCollector.translateToLocal(getTag());
return I18n.translateToLocal(getTag());
}
public String getDye() {
@@ -6,7 +6,7 @@ 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.NBTPrimitive;
import net.minecraft.nbt.NBTTagString;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.IStringSerializable;
@@ -4,7 +4,7 @@
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
/** To be implemented by TileEntities able to provide a square area on the world, typically BuildCraft markers. */
public interface IAreaProvider {
+2 -1
View File
@@ -4,7 +4,8 @@
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
public interface IBox extends IZone {
IBox expand(int amount);
@@ -2,7 +2,7 @@ package buildcraft.api.core;
import java.util.List;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
/** To be implemented by TileEntities able to provide a path on the world, typically BuildCraft path markers. */
public interface IPathProvider {
@@ -4,7 +4,7 @@
* should be located as "LICENSE.API" in the BuildCraft source code distribution. */
package buildcraft.api.core;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IWorldProperty {
+5 -5
View File
@@ -6,12 +6,12 @@ package buildcraft.api.core;
import java.util.Random;
import net.minecraft.util.BlockPos;
import net.minecraft.util.Vec3;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.math.Vec3d;
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 */
* {@link #contains(Vec3d)} 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. */
@@ -19,8 +19,8 @@ public interface IZone {
/** 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);
boolean contains(Vec3d point);
/** Gets a random position that {@link #contains(Vec3)} will return true. */
/** Gets a random position that {@link #contains(Vec3d)} will return true. */
BlockPos getRandomBlockPos(Random rand);
}
@@ -9,6 +9,7 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidContainerRegistry;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fluids.FluidStack;
/** This class is used whenever stacks needs to be stored as keys. */
@@ -80,7 +81,7 @@ public final class StackKey {
}
}
if (fluidStack != null) {
if (fluidStack.getFluid().getID() != k.fluidStack.getFluid().getID() || fluidStack.amount != k.fluidStack.amount || !objectsEqual(
if (fluidStack.getFluid() != k.fluidStack.getFluid() || fluidStack.amount != k.fluidStack.amount || !objectsEqual(
fluidStack.tag, k.fluidStack.tag)) {
return false;
}
@@ -98,7 +99,7 @@ public final class StackKey {
}
result = 31 * result + 7;
if (fluidStack != null) {
result = 31 * result + fluidStack.getFluid().getID();
result = 31 * result + FluidRegistry.getFluidID(fluidStack.getFluid());
result = 31 * result + fluidStack.amount;
result = 31 * result + objectHashCode(fluidStack.tag);
}
@@ -4,8 +4,8 @@
* 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.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
/* This interface designates a block as a state machine responsible for culling For implementation details look into
@@ -1,7 +1,7 @@
package buildcraft.api.transport;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
@@ -6,7 +6,7 @@ package buildcraft.api.transport;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
@@ -6,7 +6,7 @@ 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.math.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
@@ -11,7 +11,7 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import buildcraft.api.transport.pluggable.PipePluggable;
@@ -5,7 +5,7 @@
package buildcraft.api.transport.pluggable;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -0,0 +1,35 @@
package com.jaquadro.minecraft.storagedrawers.api.inventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
public interface IDrawerInventory extends ISidedInventory
{
/**
* Gets a drawer's group slot index from an IInventory slot index.
*
* @param inventorySlot An IInventory slot index returned from getInventorySlot.
*/
int getDrawerSlot (int inventorySlot);
/**
* Gets an IInventory slot index suitable for operations for the given type.
*
* @param drawerSlot The index of the drawer within its group.
* @param type The type of IInventory slot to return an index for.
*/
int getInventorySlot (int drawerSlot, SlotType type);
/**
* Gets the type associated with a given IInventory slot index.
*
* @param inventorySlot An IInventory slot index returned from getInventorySlot.
*/
SlotType getInventorySlotType (int inventorySlot);
boolean canInsertItem (int slot, ItemStack stack);
boolean canExtractItem (int slot, ItemStack stack);
boolean syncInventoryIfNeeded ();
}
@@ -0,0 +1,15 @@
package com.jaquadro.minecraft.storagedrawers.api.inventory;
/**
* Classifies different IInventory slots according to how they should be used.
*/
public enum SlotType
{
/** An inventory slot for input-only operations; stack sizes artificially held low. */
INPUT,
/** An inventory slot for output-only operations; stack sizes artificially held high. */
OUTPUT;
public static final SlotType[] values = values();
}
@@ -0,0 +1,110 @@
package com.jaquadro.minecraft.storagedrawers.api.storage;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
public interface IDrawer
{
/**
* Gets an ItemStack of size 1 representing the type, metadata, and tags of the stored items.
* The returned ItemStack should not be modified for any reason. Make a copy if you need to store or modify it.
*/
ItemStack getStoredItemPrototype ();
/**
* Gets an ItemStack initialized to the number of items stored in this drawer.
* The returned ItemStack is guaranteed to be a new copy and can be used for any purpose. Does not affect drawer contents.
*/
ItemStack getStoredItemCopy ();
/**
* Sets the type of the stored item and initializes it to the given amount. Any existing item will be replaced.
*
* @param itemPrototype An ItemStack representing the type, metadata, and tags of the item to store.
* @param amount The amount to initialize the stored item count to.
*/
void setStoredItem (ItemStack itemPrototype, int amount);
/**
* Gets the number of items stored in this drawer.
*/
int getStoredItemCount ();
/**
* Sets the number of items stored in this drawer. Triggers syncing of inventories and client data.
* Setting a drawer's count to 0 may also result in the item type being cleared, depending in implementation.
*
* @param amount The new amount of items stored in this drawer.
*/
void setStoredItemCount (int amount);
/**
* Gets the maximum number of items that can be stored in this drawer.
* This value will vary depending on the max stack size of the stored item type.
*/
int getMaxCapacity ();
/**
* Gets the maximum number of items that could be stored in this drawer if it held the given item.
*
* @param itemPrototype The item type to query.
*/
int getMaxCapacity (ItemStack itemPrototype);
/**
* Gets the number of items that could still be added to this drawer before it is full.
*/
int getRemainingCapacity ();
/**
* Gets the max stack size of the item type stored in this drawer. Convenience method.
*/
int getStoredItemStackSize ();
/**
* Gets whether or not an item of the given type and data can be stored in this drawer.
*
* Stack size and available capacity are not considered. For drawers that are not empty, this
* method can allow ore-dictionary compatible items to be accepted into the drawer, as defined by what
* the drawer considers to be an equivalent item.
* For drawers that are empty, locking status is considered.
*
* @param itemPrototype An ItemStack representing the type, metadata, and tags of an item.
*/
boolean canItemBeStored (ItemStack itemPrototype);
/**
* Gets whether or not an item of the given type and data can be extracted from this drawer.
*
* This is intended to allow outbound ore-dictionary conversions of compatible items, as defined by what
* the drawer considers to be an equivalent item.
*
* @param itemPrototype An ItemStack representing the type, metadata, and tags of an item.
*/
boolean canItemBeExtracted (ItemStack itemPrototype);
/**
* Gets whether or not the drawer has items.
* A drawer set with an item type and 0 count is not considered empty.
*/
boolean isEmpty ();
/**
* Gets auxiliary data that has been associated with this drawer.
*
* @param key The key used to identify the data.
* @return An opaque object that was previously stored.
*/
Object getExtendedData (String key);
/**
* Stores auxiliary data with this drawer, mainly for use in integration.
* @param key The key to identify the data with.
* @param data The data to store.
*/
void setExtendedData (String key, Object data);
void writeToNBT (NBTTagCompound tag);
void readFromNBT (NBTTagCompound tag);
}
@@ -0,0 +1,25 @@
package com.jaquadro.minecraft.storagedrawers.api.storage;
import com.jaquadro.minecraft.storagedrawers.api.inventory.IDrawerInventory;
public interface IDrawerGroup
{
/**
* Gets the number of drawers contained within this group.
*/
int getDrawerCount ();
/**
* Gets the drawer at the given slot within this group.
*/
IDrawer getDrawer (int slot);
/**
* Gets whether the drawer in the given slot is usable.
*/
boolean isDrawerEnabled (int slot);
IDrawerInventory getDrawerInventory ();
boolean markDirtyIfNeeded ();
}
@@ -0,0 +1,29 @@
package powercrystals.minefactoryreloaded.api;
import net.minecraft.item.ItemStack;
public interface IDeepStorageUnit
{
/**
* @return A populated ItemStack with stackSize for the full amount of materials in the DSU.
* May have a stackSize > getMaxStackSize(). May have a stackSize of 0 (indicating locked contents).
*/
ItemStack getStoredItemType();
/**
* Sets the total amount of the item currently being stored, or zero if all items are to be removed.
*/
void setStoredItemCount(int amount);
/**
* Sets the type of the stored item and initializes the number of stored items to amount.
* Will overwrite any existing stored items.
*/
void setStoredItemType(ItemStack type, int amount);
/**
* @return The maximum number of items the DSU can hold.
* May change based on the current type stored.
*/
int getMaxStoredCount();
}
@@ -1,6 +1,6 @@
package thaumcraft.api.crafting;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
+111 -89
View File
@@ -2,32 +2,28 @@
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
*
* File Created @ [Jan 14, 2014, 6:15:28 PM (GMT)]
*/
package vazkii.botania.api;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
import com.google.common.base.Preconditions;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import net.minecraft.block.Block;
import net.minecraft.block.BlockCarpet;
import net.minecraft.block.BlockColored;
import net.minecraft.block.BlockStainedGlass;
import net.minecraft.block.BlockStainedGlassPane;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.init.SoundEvents;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.EnumRarity;
import net.minecraft.item.Item;
@@ -36,8 +32,11 @@ import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.SoundEvent;
import net.minecraft.util.text.TextFormatting;
import net.minecraftforge.common.util.EnumHelper;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderState;
import net.minecraftforge.oredict.OreDictionary;
import vazkii.botania.api.brew.Brew;
import vazkii.botania.api.internal.DummyMethodHandler;
@@ -60,65 +59,72 @@ import vazkii.botania.api.wiki.IWikiProvider;
import vazkii.botania.api.wiki.SimpleWikiProvider;
import vazkii.botania.api.wiki.WikiHooks;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
import net.minecraftforge.fml.common.Loader;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.LinkedHashMap;
import java.util.LinkedHashSet;
import java.util.List;
import java.util.Map;
import java.util.Set;
public final class BotaniaAPI {
private static List<LexiconCategory> categories = new ArrayList<>();
private static List<LexiconEntry> allEntries = new ArrayList<>();
private static final List<LexiconCategory> categories = new ArrayList<>();
private static final List<LexiconEntry> allEntries = new ArrayList<>();
public static Map<String, KnowledgeType> knowledgeTypes = new HashMap<>();
public static final Map<String, KnowledgeType> knowledgeTypes = new HashMap<>();
public static Map<String, Brew> brewMap = new LinkedHashMap<>();
public static List<String> disposableBlocks = new ArrayList<>();
public static List<String> semiDisposableBlocks = new ArrayList<>();
public static final Map<String, Brew> brewMap = new LinkedHashMap<>();
public static List<RecipePetals> petalRecipes = new ArrayList<>();
public static List<RecipePureDaisy> pureDaisyRecipes = new ArrayList<>();
public static List<RecipeManaInfusion> manaInfusionRecipes = new ArrayList<>();
public static List<RecipeRuneAltar> runeAltarRecipes = new ArrayList<>();
public static List<RecipeElvenTrade> elvenTradeRecipes = new ArrayList<>();
public static List<RecipeBrew> brewRecipes = new ArrayList<>();
public static List<RecipeManaInfusion> miniFlowerRecipes = new ArrayList<>();
public static final List<String> disposableBlocks = new ArrayList<>();
public static final List<String> semiDisposableBlocks = new ArrayList<>();
private static BiMap<String, Class<? extends SubTileEntity>> subTiles = HashBiMap.<String, Class<? extends SubTileEntity>> create();
private static Map<Class<? extends SubTileEntity>, SubTileSignature> subTileSignatures = new HashMap<>();
public static Set<String> subtilesForCreativeMenu = new LinkedHashSet<>();
public static Map<String, String> subTileMods = new HashMap<>();
public static BiMap<String, String> miniFlowers = HashBiMap.<String, String> create();
public static final List<RecipePetals> petalRecipes = new ArrayList<>();
public static final List<RecipePureDaisy> pureDaisyRecipes = new ArrayList<>();
public static final List<RecipeManaInfusion> manaInfusionRecipes = new ArrayList<>();
public static final List<RecipeRuneAltar> runeAltarRecipes = new ArrayList<>();
public static final List<RecipeElvenTrade> elvenTradeRecipes = new ArrayList<>();
public static final List<RecipeBrew> brewRecipes = new ArrayList<>();
public static final List<RecipeManaInfusion> miniFlowerRecipes = new ArrayList<>();
public static Map<String, Integer> oreWeights = new HashMap<>();
public static Map<String, Integer> oreWeightsNether = new HashMap<>();
public static Map<Item, Block> seeds = new HashMap<>();
private static final BiMap<String, Class<? extends SubTileEntity>> subTiles = HashBiMap.create();
private static final Map<Class<? extends SubTileEntity>, SubTileSignature> subTileSignatures = new HashMap<>();
public static final Set<String> subtilesForCreativeMenu = new LinkedHashSet<>();
public static final Map<String, String> subTileMods = new HashMap<>();
public static final BiMap<String, String> miniFlowers = HashBiMap.create();
public static Set<Item> looniumBlacklist = new LinkedHashSet<>();
public static Map<Block, PropertyEnum<EnumDyeColor>> paintableBlocks = new LinkedHashMap<>();
public static Set<String> magnetBlacklist = new LinkedHashSet<>();
public static Set<Class<? extends Entity>> gravityRodBlacklist = new LinkedHashSet<>();
public static final Map<String, Integer> oreWeights = new HashMap<>();
public static final Map<String, Integer> oreWeightsNether = new HashMap<>();
public static final Map<Item, Block> seeds = new HashMap<>();
public static final Set<Item> looniumBlacklist = new LinkedHashSet<>();
public static final Map<Block, PropertyEnum<EnumDyeColor>> paintableBlocks = new LinkedHashMap<>();
public static final Set<String> magnetBlacklist = new LinkedHashSet<>();
public static final Set<Class<? extends Entity>> gravityRodBlacklist = new LinkedHashSet<>();
public static ArmorMaterial manasteelArmorMaterial = EnumHelper.addArmorMaterial("MANASTEEL", "manasteel", 16, new int[] { 2, 6, 5, 2 }, 18);
public static ToolMaterial manasteelToolMaterial = EnumHelper.addToolMaterial("MANASTEEL", 3, 300, 6.2F, 2F, 20);
public static final ArmorMaterial manasteelArmorMaterial = EnumHelper.addArmorMaterial("MANASTEEL", "manasteel", 16,
new int[] { 2, 6, 5, 2 }, 18, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0);
public static final ToolMaterial manasteelToolMaterial = EnumHelper.addToolMaterial("MANASTEEL", 3, 300, 6.2F, 2F, 20);
public static ArmorMaterial elementiumArmorMaterial = EnumHelper.addArmorMaterial("B_ELEMENTIUM", "b_elementium", 18, new int[] { 2, 6, 5, 2 }, 18);
public static ToolMaterial elementiumToolMaterial = EnumHelper.addToolMaterial("B_ELEMENTIUM", 3, 720, 6.2F, 2F, 20);
public static final ArmorMaterial elementiumArmorMaterial = EnumHelper.addArmorMaterial("B_ELEMENTIUM", "b_elementium", 18,
new int[] { 2, 6, 5, 2 }, 18, SoundEvents.ITEM_ARMOR_EQUIP_IRON, 0);
public static final ToolMaterial elementiumToolMaterial = EnumHelper.addToolMaterial("B_ELEMENTIUM", 3, 720, 6.2F, 2F, 20);
public static ArmorMaterial terrasteelArmorMaterial = EnumHelper.addArmorMaterial("TERRASTEEL", "terrasteel", 34, new int[] {3, 8, 6, 3}, 26);
public static ToolMaterial terrasteelToolMaterial = EnumHelper.addToolMaterial("TERRASTEEL", 4, 2300, 9F, 3F, 26);
public static final ArmorMaterial terrasteelArmorMaterial = EnumHelper.addArmorMaterial("TERRASTEEL", "terrasteel", 34,
new int[] { 3, 8, 6, 3 }, 26, SoundEvents.ITEM_ARMOR_EQUIP_DIAMOND, 3F);
public static final ToolMaterial terrasteelToolMaterial = EnumHelper.addToolMaterial("TERRASTEEL", 4, 2300, 9F, 3F, 26);
public static ArmorMaterial manaweaveArmorMaterial = EnumHelper.addArmorMaterial("MANAWEAVE", "manaweave", 5, new int[] { 1, 2, 2, 1 }, 18);
public static final ArmorMaterial manaweaveArmorMaterial = EnumHelper.addArmorMaterial("MANAWEAVE", "manaweave", 5,
new int[] { 1, 2, 2, 1 }, 18, SoundEvents.ITEM_ARMOR_EQUIP_LEATHER, 0);
public static EnumRarity rarityRelic = EnumHelper.addRarity("RELIC", EnumChatFormatting.GOLD, "Relic");
public static final EnumRarity rarityRelic = EnumHelper.addRarity("RELIC", TextFormatting.GOLD, "Relic");
public static KnowledgeType basicKnowledge;
public static KnowledgeType elvenKnowledge;
public static final KnowledgeType basicKnowledge;
public static final KnowledgeType elvenKnowledge;
// This is here for completeness sake, but you shouldn't use it
public static KnowledgeType relicKnowledge;
public static final KnowledgeType relicKnowledge;
// All of these categories are initialized during botania's PreInit stage.
public static LexiconCategory categoryBasics;
@@ -132,14 +138,14 @@ public final class BotaniaAPI {
public static LexiconCategory categoryAlfhomancy;
public static LexiconCategory categoryMisc;
public static Brew fallbackBrew = new Brew("fallback", "botania.brew.fallback", 0, 0);
public static final Brew fallbackBrew = new Brew("fallback", "botania.brew.fallback", 0, 0);
static {
registerSubTile("", DummySubTile.class);
basicKnowledge = registerKnowledgeType("minecraft", EnumChatFormatting.RESET, true);
elvenKnowledge = registerKnowledgeType("alfheim", EnumChatFormatting.DARK_GREEN, false);
relicKnowledge = registerKnowledgeType("relic", EnumChatFormatting.DARK_PURPLE, false);
basicKnowledge = registerKnowledgeType("minecraft", TextFormatting.RESET, true);
elvenKnowledge = registerKnowledgeType("alfheim", TextFormatting.DARK_GREEN, false);
relicKnowledge = registerKnowledgeType("relic", TextFormatting.DARK_PURPLE, false);
addOreWeight("oreAluminum", 3940); // Tinkers' Construct
addOreWeight("oreAmber", 2075); // Thaumcraft
@@ -210,12 +216,12 @@ public final class BotaniaAPI {
addOreWeightNether("oreOnyx", 500); // SimpleOres 2
addOreWeightNether("oreHaditeCoal", 500); // Hadite
addSeed(Items.wheat_seeds, Blocks.wheat);
addSeed(Items.potato, Blocks.potatoes);
addSeed(Items.carrot, Blocks.carrots);
addSeed(Items.nether_wart, Blocks.nether_wart);
addSeed(Items.pumpkin_seeds, Blocks.pumpkin_stem);
addSeed(Items.melon_seeds, Blocks.melon_stem);
addSeed(Items.WHEAT_SEEDS, Blocks.WHEAT);
addSeed(Items.POTATO, Blocks.POTATOES);
addSeed(Items.CARROT, Blocks.CARROTS);
addSeed(Items.NETHER_WART, Blocks.NETHER_WART);
addSeed(Items.PUMPKIN_SEEDS, Blocks.PUMPKIN_STEM);
addSeed(Items.MELON_SEEDS, Blocks.MELON_STEM);
registerModWiki("Minecraft", new SimpleWikiProvider("Minecraft Wiki", "http://minecraft.gamepedia.com/%s"));
@@ -245,12 +251,12 @@ public final class BotaniaAPI {
registerModWiki("GanysNether", new SimpleWikiProvider("Gany's Nether Wiki", "http://ganys-nether.wikia.com/wiki/%s"));
registerModWiki("GanysEnd", new SimpleWikiProvider("Gany's End Wiki", "http://ganys-end.wikia.com/wiki/%s"));
registerPaintableBlock(Blocks.stained_glass, BlockStainedGlass.COLOR);
registerPaintableBlock(Blocks.stained_glass_pane, BlockStainedGlassPane.COLOR);
registerPaintableBlock(Blocks.stained_hardened_clay, BlockColored.COLOR);
registerPaintableBlock(Blocks.wool, BlockColored.COLOR);
registerPaintableBlock(Blocks.carpet, BlockCarpet.COLOR);
registerPaintableBlock(Blocks.STAINED_GLASS, BlockStainedGlass.COLOR);
registerPaintableBlock(Blocks.STAINED_GLASS_PANE, BlockStainedGlassPane.COLOR);
registerPaintableBlock(Blocks.STAINED_HARDENED_CLAY, BlockColored.COLOR);
registerPaintableBlock(Blocks.WOOL, BlockColored.COLOR);
registerPaintableBlock(Blocks.CARPET, BlockCarpet.COLOR);
registerDisposableBlock("dirt"); // Vanilla
registerDisposableBlock("sand"); // Vanilla
registerDisposableBlock("gravel"); // Vanilla
@@ -275,7 +281,7 @@ public final class BotaniaAPI {
* @param id The ID for this knowledge type.
* @param color The color to display this knowledge type as.
*/
public static KnowledgeType registerKnowledgeType(String id, EnumChatFormatting color, boolean autoUnlock) {
public static KnowledgeType registerKnowledgeType(String id, TextFormatting color, boolean autoUnlock) {
KnowledgeType type = new KnowledgeType(id, color, autoUnlock);
knowledgeTypes.put(id, type);
return type;
@@ -299,47 +305,46 @@ public final class BotaniaAPI {
return fallbackBrew;
}
/*
/**
* Registers a Block as disposable using its Ore Dictionary Name.
*/
public static void registerDisposableBlock(String oreDictName) {
disposableBlocks.add(oreDictName);
}
/*
/**
* Registers a Block as semi disposable using its Ore Dictionary Name.
* This means it will not be trashed when sneaking.
*/
public static void registerSemiDisposableBlock(String oreDictName) {
semiDisposableBlocks.add(oreDictName);
}
/**
* Registers a paintableBlock and returns it.
* You must also provide the PropertyEnum that this block uses to express its color
* The component type of the property must be EnumDyeColor
*/
public static Block registerPaintableBlock(Block paintable, PropertyEnum<EnumDyeColor> colorProp){
paintableBlocks.put(paintable, colorProp);
return paintable;
}
/*
/**
* Blacklists an Entity from being affected by the Rod of the Shaded Mesa.
* Pass in the class for the Entity, e.g. EntityCow.class
*/
public static void blacklistEntityFromGravityRod(Class<? extends Entity> entity) {
gravityRodBlacklist.add(entity);
}
/*
/**
* Checks if the provided Entity is contained in the Blacklist.
* Pass in the class for the Entity, e.g. entity.getClass()
*/
public static boolean isEntityBlacklistedFromGravityRod(Class entity) {
return gravityRodBlacklist.contains(entity);
}
/**
* Blacklists an item from being pulled by the Ring of Magnetization.
* Short.MAX_VALUE can be used as the stack's damage for a wildcard.
@@ -361,11 +366,11 @@ public final class BotaniaAPI {
public static boolean isItemBlacklistedFromMagnet(ItemStack stack) {
return isItemBlacklistedFromMagnet(stack, 0);
}
public static boolean isItemBlacklistedFromMagnet(ItemStack stack, int recursion) {
if(recursion > 5)
return false;
if(stack.getItemDamage() != Short.MAX_VALUE) {
ItemStack copy = new ItemStack(stack.getItem(), 0, Short.MAX_VALUE);
boolean general = isItemBlacklistedFromMagnet(copy, recursion + 1);
@@ -388,7 +393,7 @@ public final class BotaniaAPI {
public static boolean isBlockBlacklistedFromMagnet(Block block, int meta, int recursion) {
if(recursion >= 5)
return false;
if(meta != Short.MAX_VALUE) {
boolean general = isBlockBlacklistedFromMagnet(block, Short.MAX_VALUE, recursion + 1);
if(general)
@@ -407,19 +412,32 @@ public final class BotaniaAPI {
* @return The recipe created.
*/
public static RecipePetals registerPetalRecipe(ItemStack output, Object... inputs) {
Preconditions.checkArgument(inputs.length <= 16);
RecipePetals recipe = new RecipePetals(output, inputs);
petalRecipes.add(recipe);
return recipe;
}
/**
* Registers a Pure Daisy Recipe.
* Registers a Pure Daisy Recipe with the default time
* @param input The block that works as an input for the recipe. Can be a Block or an oredict String.
* @param outputState The blockstate to be placed upon recipe completion.
* @return The recipe created.
*/
public static RecipePureDaisy registerPureDaisyRecipe(Object input, IBlockState outputState) {
RecipePureDaisy recipe = new RecipePureDaisy(input, outputState);
return registerPureDaisyRecipe(input, outputState, RecipePureDaisy.DEFAULT_TIME);
}
/**
* Registers a Pure Daisy Recipe.
* @param input The block that works as an input for the recipe. Can be a Block or an oredict String.
* @param outputState The blockstate to be placed upon recipe completion.
* @param time The amount of time in ticks to complete this recipe. Note that this is ticks on your block, not total time.
* The Pure Daisy only ticks one block at a time in a round robin fashion.
* @return The recipe created.
*/
public static RecipePureDaisy registerPureDaisyRecipe(Object input, IBlockState outputState, int time) {
RecipePureDaisy recipe = new RecipePureDaisy(input, outputState, time);
pureDaisyRecipes.add(recipe);
return recipe;
}
@@ -433,6 +451,7 @@ public final class BotaniaAPI {
* @return The recipe created.
*/
public static RecipeRuneAltar registerRuneAltarRecipe(ItemStack output, int mana, Object... inputs) {
Preconditions.checkArgument(inputs.length <= 16);
RecipeRuneAltar recipe = new RecipeRuneAltar(output, mana, inputs);
runeAltarRecipes.add(recipe);
return recipe;
@@ -446,6 +465,7 @@ public final class BotaniaAPI {
* @return The recipe created.
*/
public static RecipeManaInfusion registerManaInfusionRecipe(ItemStack output, Object input, int mana) {
Preconditions.checkArgument(mana <= 1000000);
RecipeManaInfusion recipe = new RecipeManaInfusion(output, input, mana);
manaInfusionRecipes.add(recipe);
return recipe;
@@ -458,7 +478,7 @@ public final class BotaniaAPI {
*/
public static RecipeManaInfusion registerManaAlchemyRecipe(ItemStack output, Object input, int mana) {
RecipeManaInfusion recipe = registerManaInfusionRecipe(output, input, mana);
recipe.setAlchemy(true);
recipe.setCatalyst(RecipeManaInfusion.alchemyState);
return recipe;
}
@@ -469,7 +489,7 @@ public final class BotaniaAPI {
*/
public static RecipeManaInfusion registerManaConjurationRecipe(ItemStack output, Object input, int mana) {
RecipeManaInfusion recipe = registerManaInfusionRecipe(output, input, mana);
recipe.setConjuration(true);
recipe.setCatalyst(RecipeManaInfusion.conjurationState);
return recipe;
}
@@ -488,9 +508,10 @@ public final class BotaniaAPI {
/**
* Registers a Brew Recipe (for the Botanical Brewery).
* @param brew The brew in to be set in this recipe.
* @inputs The items used in the recipe, no more than 6.
* @param inputs The items used in the recipe, no more than 6.
*/
public static RecipeBrew registerBrewRecipe(Brew brew, Object... inputs) {
Preconditions.checkArgument(inputs.length <= 6);
RecipeBrew recipe = new RecipeBrew(brew, inputs);
brewRecipes.add(recipe);
return recipe;
@@ -498,9 +519,10 @@ public final class BotaniaAPI {
/**
* Registers a SubTileEntity, a new special flower. Look in the subtile package of the API.
* If you call this after PostInit you're a failiure and we are very disappointed in you.
* Call this in preInit, and don't forget to register a model in BotaniaAPIClient.
*/
public static void registerSubTile(String key, Class<? extends SubTileEntity> subtileClass) {
Preconditions.checkArgument(Loader.instance().isInState(LoaderState.PREINITIALIZATION));
subTiles.put(key, subtileClass);
subTileMods.put(key, Loader.instance().activeModContainer().getModId());
}
@@ -655,7 +677,7 @@ public final class BotaniaAPI {
/**
* Registers a Wiki provider for a mod so it uses that instead of the fallback
* FTB wiki. Make sure to call this on PostInit only!
* FTB wiki.
*/
public static void registerModWiki(String mod, IWikiProvider provider) {
WikiHooks.registerModWiki(mod, provider);
@@ -10,7 +10,7 @@ package vazkii.botania.api;
import com.google.common.base.Preconditions;
import com.google.common.collect.Maps;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraftforge.fml.common.Loader;
import net.minecraftforge.fml.common.LoaderState;
import net.minecraftforge.fml.relauncher.Side;
@@ -10,23 +10,19 @@
*/
package vazkii.botania.api.boss;
import java.awt.Rectangle;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.entity.boss.IBossDisplayData;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import vazkii.botania.api.internal.ShaderCallback;
import java.awt.*;
import java.util.UUID;
/**
* An extension of IBossDisplayData. This counts as a botania boss and as a normal
* minecraft boss since it has IBossDisplayData. Instead of using the typical
* BossStatus.setBossStatus(entity, true) to set the health bar in the render use
* BotaniaAPI.internalMethodHandler.setBossStatus(entity);<br><br>
* Alternatively, you can check if botania is loaded and use the vanilla one
* if that's not the case.
* A Botania boss, that is subject to special rendering.
*/
public interface IBotaniaBoss extends IBossDisplayData {
public interface IBotaniaBoss {
/**
* The ResourceLocation to bind for this boss's boss bar.
@@ -51,9 +47,35 @@ public interface IBotaniaBoss extends IBossDisplayData {
public Rectangle getBossBarHPTextureRect();
/**
* A callback for when this boss's boss bar renders, you can do aditional rendering
* A callback for when this boss's boss bar renders, you can do additional rendering
* here if needed.
* @return How tall your auxiliary renders were
*/
@SideOnly(Side.CLIENT)
public void bossBarRenderCallback(ScaledResolution res, int x, int y);
public int bossBarRenderCallback(ScaledResolution res, int x, int y);
/**
* Get the serverside UUID of the {@link net.minecraft.world.BossInfoServer} instance tracking this boss
* Note that this is NOT the entity's UUID, nor is it the clientside UUID of the BossInfoServer instance!
* You will most likely need to sync this yourself using the datawatcher
* @return The uuid.
*/
public UUID getBossInfoUuid();
/**
* The Shader Program to use for this boss's bar. Return 0 case
* you don't want a shader to be used. You can use separate shaders
* for the background and foreground.
* @param background True if rendering the background of the boss bar,
* false if rendering the bar itself that shows the HP.
* @return OpenGL program ID of the shader to use
*/
public int getBossBarShaderProgram(boolean background);
/**
* A callback for the shader, used to pass in uniforms. Return null for no callback.
* @return a ShaderCallback to use. If getBossBarShaderProgram returns an invalid shader the result of this method is ignored.
*/
public ShaderCallback getBossBarShaderCallback(boolean background, int shader);
}
@@ -1,40 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Oct 29, 2014, 6:13:21 PM (GMT)]
*/
package vazkii.botania.api.boss;
import vazkii.botania.api.internal.ShaderCallback;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* A Botania boss whose HP bar makes use of shaders. Shaders
* used through this have a few uniforms available:
* <li><b><i>int</i> time</b> - The amount of total ticks elapsed.</li>
* <li><b><i>int</i> startX</b> - The U coordinate passed in for the render of this bar's texture.</li>
* <li><b><i>int</i> startY</b> - The V coordinate passed in for the render of this bar's texture.</li>
*/
public interface IBotaniaBossWithShader extends IBotaniaBoss {
/**
* The Shader Program to use for this boss bar. Return 0 case
* you don't want a shader to be used. You can use separate shaders
* for the background and foreground.
* @param background True if rendering the background of the boss bar,
* false if rendering the bar itself that shows the HP.
*/
public int getBossBarShaderProgram(boolean background);
/**
* A callback for the shader, used to pass in uniforms. Return null for no callback.
*/
public ShaderCallback getBossBarShaderCallback(boolean background, int shader);
}
+12 -13
View File
@@ -10,25 +10,24 @@
*/
package vazkii.botania.api.brew;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import com.google.common.collect.ImmutableList;
import net.minecraft.item.ItemStack;
import net.minecraft.potion.PotionEffect;
import java.util.List;
/**
* The class for a Brew definition, each one is a singleton.
*/
public class Brew {
String key;
String name;
int color;
int cost;
List<PotionEffect> effects;
boolean canInfuseBloodPendant = true;
boolean canInfuseIncense = true;
private final String key;
private final String name;
private final int color;
private final int cost;
private final List<PotionEffect> effects;
private boolean canInfuseBloodPendant = true;
private boolean canInfuseIncense = true;
/**
* @param name The unlocalized name of this potion.
@@ -42,7 +41,7 @@ public class Brew {
this.name = name;
this.color = color;
this.cost = cost;
this.effects = new ArrayList<>(Arrays.asList(effects));
this.effects = ImmutableList.copyOf(effects);
}
/**
@@ -115,7 +114,7 @@ public class Brew {
}
/**
* Gets the list of potion effects for the ItemStack passed in.
* Gets the list of vanilla PotionEffects for the ItemStack passed in.
* Note that for the lexicon, this passes in a botania Managlass
* Vial or an Alfglass Flask at all times.
*/
@@ -9,6 +9,18 @@
* File Created @ [Feb 14, 2015, 3:28:54 PM (GMT)]
*/
package vazkii.botania.api.corporea;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
import vazkii.botania.api.BotaniaAPI;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
@@ -16,30 +28,15 @@ import java.util.Map;
import java.util.WeakHashMap;
import java.util.regex.Pattern;
import com.google.common.base.Predicates;
import com.google.common.collect.ImmutableList;
import net.minecraft.entity.Entity;
import net.minecraft.inventory.IInventory;
import net.minecraft.inventory.ISidedInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
import net.minecraftforge.common.MinecraftForge;
public final class CorporeaHelper {
private static final List<IInventory> empty = ImmutableList.of();
private static final WeakHashMap<List<ICorporeaSpark>, List<IInventory>> cachedNetworks = new WeakHashMap<>();
private static final List<InvWithLocation> empty = ImmutableList.of();
private static final WeakHashMap<List<ICorporeaSpark>, List<InvWithLocation>> cachedNetworks = new WeakHashMap<>();
private static final List<ICorporeaAutoCompleteController> autoCompleteControllers = new ArrayList<>();
private static final Pattern patternControlCode = Pattern.compile("(?i)\\u00A7[0-9A-FK-OR]");
public static final String[] WILDCARD_STRINGS = new String[] {
"...", "~", "+", "?" , "*"
};
public static final String[] WILDCARD_STRINGS = { "...", "~", "+", "?" , "*" };
/**
* How many items were matched in the last request. If java had "out" params like C# this wouldn't be needed :V
@@ -54,23 +51,23 @@ public final class CorporeaHelper {
* Gets a list of all the inventories on this spark network. This list is cached for use once every tick,
* and if something changes during that tick it'll still have the first result.
*/
public static List<IInventory> getInventoriesOnNetwork(ICorporeaSpark spark) {
public static List<InvWithLocation> getInventoriesOnNetwork(ICorporeaSpark spark) {
ICorporeaSpark master = spark.getMaster();
if(master == null)
return empty;
List<ICorporeaSpark> network = master.getConnections();
if(cachedNetworks.containsKey(network)) {
List<IInventory> cache = cachedNetworks.get(network);
List<InvWithLocation> cache = cachedNetworks.get(network);
if(cache != null)
return cache;
}
List<IInventory> inventories = new ArrayList<>();
List<InvWithLocation> inventories = new ArrayList<>();
if(network != null)
for(ICorporeaSpark otherSpark : network)
if(otherSpark != null) {
IInventory inv = otherSpark.getSparkInventory();
InvWithLocation inv = otherSpark.getSparkInventory();
if(inv != null)
inventories.add(inv);
}
@@ -85,7 +82,7 @@ public final class CorporeaHelper {
* called instead if the context for those exists to avoid having to get the values again.
*/
public static int getCountInNetwork(ItemStack stack, ICorporeaSpark spark, boolean checkNBT) {
List<IInventory> inventories = getInventoriesOnNetwork(spark);
List<InvWithLocation> inventories = getInventoriesOnNetwork(spark);
return getCountInNetwork(stack, inventories, checkNBT);
}
@@ -94,18 +91,18 @@ public final class CorporeaHelper {
* The higher level function that use a Map< IInventory, Integer > should be
* called instead if the context for this exists to avoid having to get the value again.
*/
public static int getCountInNetwork(ItemStack stack, List<IInventory> inventories, boolean checkNBT) {
Map<IInventory, Integer> map = getInventoriesWithItemInNetwork(stack, inventories, checkNBT);
public static int getCountInNetwork(ItemStack stack, List<InvWithLocation> inventories, boolean checkNBT) {
Map<InvWithLocation, Integer> map = getInventoriesWithItemInNetwork(stack, inventories, checkNBT);
return getCountInNetwork(stack, map, checkNBT);
}
/**
* Gets the amount of available items in the network of the type passed in, checking NBT or not.
*/
public static int getCountInNetwork(ItemStack stack, Map<IInventory, Integer> inventories, boolean checkNBT) {
public static int getCountInNetwork(ItemStack stack, Map<InvWithLocation, Integer> inventories, boolean checkNBT) {
int count = 0;
for(IInventory inv : inventories.keySet())
for(InvWithLocation inv : inventories.keySet())
count += inventories.get(inv);
return count;
@@ -116,8 +113,8 @@ public final class CorporeaHelper {
* The higher level function that use a List< IInventory > should be
* called instead if the context for this exists to avoid having to get the value again.
*/
public static Map<IInventory, Integer> getInventoriesWithItemInNetwork(ItemStack stack, ICorporeaSpark spark, boolean checkNBT) {
List<IInventory> inventories = getInventoriesOnNetwork(spark);
public static Map<InvWithLocation, Integer> getInventoriesWithItemInNetwork(ItemStack stack, ICorporeaSpark spark, boolean checkNBT) {
List<InvWithLocation> inventories = getInventoriesOnNetwork(spark);
return getInventoriesWithItemInNetwork(stack, inventories, checkNBT);
}
@@ -126,22 +123,15 @@ public final class CorporeaHelper {
* The deeper level function that use a List< IInventory > should be
* called instead if the context for this exists to avoid having to get the value again.
*/
public static Map<IInventory, Integer> getInventoriesWithItemInNetwork(ItemStack stack, List<IInventory> inventories, boolean checkNBT) {
Map<IInventory, Integer> countMap = new HashMap<>();
for(IInventory inv : inventories) {
int count = 0;
for(int i = 0; i < inv.getSizeInventory(); i++) {
if(!isValidSlot(inv, i))
continue;
ItemStack stackAt = inv.getStackInSlot(i);
if(stacksMatch(stack, stackAt, checkNBT))
count += stackAt.stackSize;
public static Map<InvWithLocation, Integer> getInventoriesWithItemInNetwork(ItemStack stack, List<InvWithLocation> inventories, boolean checkNBT) {
Map<InvWithLocation, Integer> countMap = new HashMap<>();
List<IWrappedInventory> wrappedInventories = BotaniaAPI.internalHandler.wrapInventory(inventories);
for (IWrappedInventory inv : wrappedInventories) {
CorporeaRequest request = new CorporeaRequest(stack, checkNBT, -1);
inv.countItems(request);
if (request.foundItems > 0) {
countMap.put(inv.getWrappedObject(), request.foundItems);
}
if(count > 0)
countMap.put(inv, count);
}
return countMap;
@@ -170,6 +160,9 @@ public final class CorporeaHelper {
* The "matcher" parameter has to be an ItemStack or a String, if the first it'll check if the
* two stacks are similar using the "checkNBT" parameter, else it'll check if the name of the item
* equals or matches (case a regex is passed in) the matcher string.
* <br><br>
* When requesting counting of items, individual stacks may exceed maxStackSize for
* purposes of counting huge amounts.
*/
public static List<ItemStack> requestItem(Object matcher, int itemCount, ICorporeaSpark spark, boolean checkNBT, boolean doit) {
List<ItemStack> stacks = new ArrayList<>();
@@ -177,55 +170,32 @@ public final class CorporeaHelper {
if(MinecraftForge.EVENT_BUS.post(event))
return stacks;
List<IInventory> inventories = getInventoriesOnNetwork(spark);
Map<ICorporeaInterceptor, ICorporeaSpark> interceptors = new HashMap<>();
List<InvWithLocation> inventories = getInventoriesOnNetwork(spark);
lastRequestMatches = 0;
lastRequestExtractions = 0;
List<IWrappedInventory> inventoriesW = BotaniaAPI.internalHandler.wrapInventory(inventories);
Map<ICorporeaInterceptor, ICorporeaSpark> interceptors = new HashMap<ICorporeaInterceptor, ICorporeaSpark>();
int count = itemCount;
for(IInventory inv : inventories) {
boolean removedAny = false;
ICorporeaSpark invSpark = getSparkForInventory(inv);
CorporeaRequest request = new CorporeaRequest(matcher, checkNBT, itemCount);
for(IWrappedInventory inv : inventoriesW) {
ICorporeaSpark invSpark = inv.getSpark();
if(inv instanceof ICorporeaInterceptor) {
ICorporeaInterceptor interceptor = (ICorporeaInterceptor) inv;
InvWithLocation originalInventory = inv.getWrappedObject();
if(originalInventory.world.getTileEntity(originalInventory.pos) instanceof ICorporeaInterceptor) {
ICorporeaInterceptor interceptor = (ICorporeaInterceptor) originalInventory.world.getTileEntity(originalInventory.pos);
interceptor.interceptRequest(matcher, itemCount, invSpark, spark, stacks, inventories, doit);
interceptors.put(interceptor, invSpark);
}
for(int i = inv.getSizeInventory() - 1; i >= 0; i--) {
if(!isValidSlot(inv, i))
continue;
ItemStack stackAt = inv.getStackInSlot(i);
if(matcher instanceof ItemStack ? stacksMatch((ItemStack) matcher, stackAt, checkNBT) : matcher instanceof String ? stacksMatch(stackAt, (String) matcher) : false) {
int rem = Math.min(stackAt.stackSize, count == -1 ? stackAt.stackSize : count);
if(rem > 0) {
ItemStack copy = stackAt.copy();
if(rem < copy.stackSize)
copy.stackSize = rem;
stacks.add(copy);
}
lastRequestMatches += stackAt.stackSize;
lastRequestExtractions += rem;
if(doit && rem > 0) {
inv.decrStackSize(i, rem);
removedAny = true;
if(invSpark != null)
invSpark.onItemExtracted(stackAt);
}
if(count != -1)
count -= rem;
}
if(doit) {
stacks.addAll(inv.extractItems(request));
} else {
stacks.addAll(inv.countItems(request));
}
if(removedAny)
inv.markDirty();
}
lastRequestMatches = request.foundItems;
lastRequestExtractions = request.extractedItems;
for(ICorporeaInterceptor interceptor : interceptors.keySet())
interceptor.interceptRequestLast(matcher, itemCount, interceptors.get(interceptor), spark, stacks, inventories, doit);
@@ -235,11 +205,8 @@ public final class CorporeaHelper {
/**
* Gets the spark attached to the inventory passed case it's a TileEntity.
*/
public static ICorporeaSpark getSparkForInventory(IInventory inv) {
if(!(inv instanceof TileEntity))
return null;
TileEntity tile = (TileEntity) inv;
public static ICorporeaSpark getSparkForInventory(InvWithLocation inv) {
TileEntity tile = inv.world.getTileEntity(inv.pos);
return getSparkForBlock(tile.getWorld(), tile.getPos());
}
@@ -260,13 +227,6 @@ public final class CorporeaHelper {
return getSparkForBlock(world, pos) != null;
}
/**
* Gets if the slot passed in can be extracted from by a spark.
*/
public static boolean isValidSlot(IInventory inv, int slot) {
return !(inv instanceof ISidedInventory) || arrayHas(((ISidedInventory) inv).getSlotsForFace(EnumFacing.UP), slot) && ((ISidedInventory) inv).canExtractItem(slot, inv.getStackInSlot(slot), EnumFacing.UP);
}
/**
* Gets if two stacks match.
*/
@@ -309,17 +269,6 @@ public final class CorporeaHelper {
cachedNetworks.clear();
}
/**
* Helper method to check if an int array contains an int.
*/
public static boolean arrayHas(int[] arr, int val) {
for (int element : arr)
if(element == val)
return true;
return false;
}
/**
* Helper method to make stacksMatch() less messy.
*/
@@ -0,0 +1,26 @@
/**
* This class was created by <Vindex>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
*/
package vazkii.botania.api.corporea;
public class CorporeaRequest {
public final Object matcher;
public final boolean checkNBT;
public int count;
public int foundItems = 0;
public int extractedItems = 0;
public CorporeaRequest(Object matcher, boolean checkNBT, int count) {
super();
this.matcher = matcher;
this.checkNBT = checkNBT;
this.count = count;
}
}
@@ -10,9 +10,6 @@
*/
package vazkii.botania.api.corporea;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* An interface for systems which may control if the item auto complete system should be active
*/
@@ -10,11 +10,10 @@
*/
package vazkii.botania.api.corporea;
import java.util.List;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import java.util.List;
/**
* A TileEntity that implements this will be able to intercept corporea
* requests case there is a Corporea Spark on top.
@@ -26,13 +25,13 @@ public interface ICorporeaInterceptor {
* at this point, but the list of stacks is not complete. The request parameter can
* be either a String or ItemStack.
*/
public void interceptRequest(Object request, int count, ICorporeaSpark spark, ICorporeaSpark source, List<ItemStack> stacks, List<IInventory> inventories, boolean doit);
public void interceptRequest(Object request, int count, ICorporeaSpark spark, ICorporeaSpark source, List<ItemStack> stacks, List<InvWithLocation> inventories, boolean doit);
/**
* Intercepts a request after all the stacks have been found and processed. Both the
* list of inventories and stacks is complete at this point. The request parameter can
* be either a String or ItemStack.
*/
public void interceptRequestLast(Object request, int count, ICorporeaSpark spark, ICorporeaSpark source, List<ItemStack> stacks, List<IInventory> inventories, boolean doit);
public void interceptRequestLast(Object request, int count, ICorporeaSpark spark, ICorporeaSpark source, List<ItemStack> stacks, List<InvWithLocation> inventories, boolean doit);
}
@@ -10,11 +10,11 @@
*/
package vazkii.botania.api.corporea;
import java.util.List;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.item.ItemStack;
import java.util.List;
/**
* An interface for a Corporea Spark. Includes functions for handling
* connections.
@@ -38,7 +38,7 @@ public interface ICorporeaSpark {
/**
* Gets the inventory this spark is bound to, generally the one right below it.
*/
public IInventory getSparkInventory();
public InvWithLocation getSparkInventory();
/**
* Gets the list of sparks this spark is connected to, see registerConnections(). This list
@@ -82,6 +82,6 @@ public interface ICorporeaSpark {
* Gets the network that this spark is on, or the color it's displaying. Sparks may only connect to others
* of the same network, and on changing network should trigger a re-cache of the previous network.
*/
public int getNetwork();
public EnumDyeColor getNetwork();
}
@@ -0,0 +1,56 @@
/**
* This class was created by <Vindex>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
*/
package vazkii.botania.api.corporea;
import net.minecraft.item.ItemStack;
import java.util.List;
/**
* This interface wraps IInventory corporea works with in order to provide
* compatibility with different storage mods.
*
*/
public interface IWrappedInventory {
/**
* Break encapsulation and exposes original inventory.
*/
InvWithLocation getWrappedObject();
/**
* Counts items in the inventory matching the request
*
* @param request
* - specifies what should be found
* @return List of ItemStack, individual stacks may exceed maxStackSize for
* purposes of counting huge amounts. To get final count requestor
* should sum stackSize of all stacks.
*/
List<ItemStack> countItems(CorporeaRequest request);
/**
* Convenience method for accessing spark over inventory
*/
ICorporeaSpark getSpark();
/**
* Extracts items matching request from the inventory.<br/>
* {@link CorporeaRequest#count} is updated to reflect how many items are
* yet to be extracted.<br/>
* {@link CorporeaRequest#foundItems} and
* {@link CorporeaRequest#extractedItems} are updated to reflect how many
* items were found and extracted.
*
* @param request
* @return List of ItemStacks to be delivered to the destination.
*/
List<ItemStack> extractItems(CorporeaRequest request);
}
@@ -0,0 +1,32 @@
package vazkii.botania.api.corporea;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.items.IItemHandler;
public class InvWithLocation {
public final IItemHandler handler;
public final World world;
public final BlockPos pos;
public InvWithLocation(IItemHandler itemHandler, World world, BlockPos pos) {
this.handler = itemHandler;
this.world = world;
this.pos = pos;
}
@Override
public int hashCode() {
return 31 * handler.hashCode() ^ world.hashCode() ^ pos.hashCode();
}
@Override
public boolean equals(Object o) {
return o instanceof InvWithLocation
&& handler.equals(((InvWithLocation) o).handler)
&& world == ((InvWithLocation) o).world
&& pos.equals(((InvWithLocation) o).pos);
}
}
@@ -10,22 +10,20 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.mana.TileSignature;
import java.util.Set;
public class DummyManaNetwork implements IManaNetwork {
public static final DummyManaNetwork instance = new DummyManaNetwork();
@Override
public void clear() {
// NO-OP
}
public void clear() {}
@Override
public TileEntity getClosestPool(BlockPos pos, World world, int limit) {
@@ -38,13 +36,13 @@ public class DummyManaNetwork implements IManaNetwork {
}
@Override
public List<TileSignature> getAllCollectorsInWorld(World world) {
return ImmutableList.of();
public Set<TileSignature> getAllCollectorsInWorld(World world) {
return ImmutableSet.of();
}
@Override
public List<TileSignature> getAllPoolsInWorld(World world) {
return ImmutableList.of();
public Set<TileSignature> getAllPoolsInWorld(World world) {
return ImmutableSet.of();
}
}
@@ -10,10 +10,8 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.init.Blocks;
@@ -22,11 +20,13 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.boss.IBotaniaBoss;
import net.minecraftforge.items.IItemHandlerModifiable;
import vazkii.botania.api.corporea.IWrappedInventory;
import vazkii.botania.api.corporea.InvWithLocation;
import vazkii.botania.api.lexicon.LexiconPage;
import vazkii.botania.api.lexicon.multiblock.MultiblockSet;
import vazkii.botania.api.recipe.RecipeBrew;
@@ -36,6 +36,8 @@ import vazkii.botania.api.recipe.RecipePetals;
import vazkii.botania.api.recipe.RecipeRuneAltar;
import vazkii.botania.api.subtile.SubTileEntity;
import java.util.List;
public class DummyMethodHandler implements IInternalMethodHandler {
@Override
@@ -119,7 +121,7 @@ public class DummyMethodHandler implements IInternalMethodHandler {
@Override
public ItemStack getSubTileAsStack(String subTile) {
return new ItemStack(Blocks.stone, 0, 0);
return new ItemStack(Blocks.STONE, 0, 0);
}
@Override
@@ -148,35 +150,32 @@ public class DummyMethodHandler implements IInternalMethodHandler {
}
@Override
public void drawSimpleManaHUD(int color, int mana, int maxMana, String name, ScaledResolution res) {
// NO-OP
}
public void drawSimpleManaHUD(int color, int mana, int maxMana, String name, ScaledResolution res) {}
@Override
public void drawComplexManaHUD(int color, int mana, int maxMana, String name, ScaledResolution res, ItemStack bindDisplay, boolean properlyBound) {
// NO-OP
}
public void drawComplexManaHUD(int color, int mana, int maxMana, String name, ScaledResolution res, ItemStack bindDisplay, boolean properlyBound) {}
@Override
public ItemStack getBindDisplayForFlowerType(SubTileEntity e) {
return new ItemStack(Blocks.stone, 0, 0);
return new ItemStack(Blocks.STONE, 0, 0);
}
@Override
public void renderLexiconText(int x, int y, int width, int height, String unlocalizedText) {
// NO-OP
}
public void renderLexiconText(int x, int y, int width, int height, String unlocalizedText) {}
@Override
public void sparkleFX(World world, double x, double y, double z, float r, float g, float b, float size, int m) {
// NO-OP
}
public void sparkleFX(World world, double x, double y, double z, float r, float g, float b, float size, int m) {}
@Override
public IInventory getBaublesInventory(EntityPlayer player) {
return null;
}
@Override
public IItemHandlerModifiable getBaublesInventoryWrapped(EntityPlayer player) {
return null;
}
@Override
public boolean shouldForceCheck() {
return true;
@@ -192,20 +191,13 @@ public class DummyMethodHandler implements IInternalMethodHandler {
return null;
}
@Override
public void setBossStatus(IBotaniaBoss status) {
// NO-OP
}
@Override
public boolean isBuildcraftPipe(TileEntity tile) {
return false;
}
@Override
public void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, BlockPos pos, EnumFacing side) {
// NO-OP
}
public void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, BlockPos pos, EnumFacing side) {}
@Override
public boolean hasSolegnoliaAround(Entity e) {
@@ -223,8 +215,11 @@ public class DummyMethodHandler implements IInternalMethodHandler {
}
@Override
public void sendBaubleUpdatePacket(EntityPlayer player, int slot) {
// NO-OP
public void sendBaubleUpdatePacket(EntityPlayer player, int slot) {}
@Override
public List<IWrappedInventory> wrapInventory(List<InvWithLocation> inventories) {
return null;
}
}
@@ -10,9 +10,9 @@
*/
package vazkii.botania.api.internal;
import vazkii.botania.api.lexicon.LexiconPage;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import vazkii.botania.api.lexicon.LexiconPage;
/**
* A dummy page. It does absolutely nothing and is only
@@ -27,8 +27,6 @@ public class DummyPage extends LexiconPage {
@Override
@SideOnly(Side.CLIENT)
public void renderScreen(IGuiLexiconEntry gui, int x, int y) {
// NO-OP
}
public void renderScreen(IGuiLexiconEntry gui, int x, int y) {}
}
@@ -10,11 +10,11 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import vazkii.botania.api.lexicon.LexiconEntry;
import java.util.List;
/**
* Internal interface for the Lexicon Entry GUI. This contains
* everything that can be accessed from it. It's safe to cast
@@ -10,10 +10,8 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import net.minecraft.client.gui.ScaledResolution;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
@@ -21,11 +19,15 @@ import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.boss.IBotaniaBoss;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraftforge.items.IItemHandlerModifiable;
import vazkii.botania.api.corporea.IWrappedInventory;
import vazkii.botania.api.corporea.InvWithLocation;
import vazkii.botania.api.lexicon.LexiconPage;
import vazkii.botania.api.lexicon.multiblock.MultiblockSet;
import vazkii.botania.api.recipe.RecipeBrew;
@@ -34,8 +36,8 @@ import vazkii.botania.api.recipe.RecipeManaInfusion;
import vazkii.botania.api.recipe.RecipePetals;
import vazkii.botania.api.recipe.RecipeRuneAltar;
import vazkii.botania.api.subtile.SubTileEntity;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import java.util.List;
/**
* Any methods that refer to internal methods in Botania are here.
@@ -96,6 +98,8 @@ public interface IInternalMethodHandler {
public IInventory getBaublesInventory(EntityPlayer player);
public IItemHandlerModifiable getBaublesInventoryWrapped(EntityPlayer player);
public void breakOnAllCursors(EntityPlayer player, Item item, ItemStack stack, BlockPos pos, EnumFacing side);
public boolean hasSolegnoliaAround(Entity e);
@@ -112,8 +116,6 @@ public interface IInternalMethodHandler {
public ResourceLocation getDefaultBossBarTexture();
public void setBossStatus(IBotaniaBoss status);
public boolean isBuildcraftPipe(TileEntity tile);
public void sparkleFX(World world, double x, double y, double z, float r, float g, float b, float size, int m);
@@ -124,4 +126,9 @@ public interface IInternalMethodHandler {
public void sendBaubleUpdatePacket(EntityPlayer player, int slot);
/**
* Wrap inventories in the network into wrappers providing compatibility for storage mods.
*/
List<IWrappedInventory> wrapInventory(List<InvWithLocation> inventories);
}
@@ -10,64 +10,64 @@
*/
package vazkii.botania.api.internal;
import java.util.UUID;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import java.util.UUID;
/**
* Interface for the Mana Burst entity. This can safely be casted to EntityThrowable.
*/
public interface IManaBurst {
public boolean isFake();
boolean isFake();
public void setMotion(double x, double y, double z);
void setMotion(double x, double y, double z);
public int getColor();
int getColor();
public void setColor(int color);
void setColor(int color);
public int getMana();
int getMana();
public void setMana(int mana);
void setMana(int mana);
public int getStartingMana();
int getStartingMana();
public void setStartingMana(int mana);
void setStartingMana(int mana);
public int getMinManaLoss();
int getMinManaLoss();
public void setMinManaLoss(int minManaLoss);
void setMinManaLoss(int minManaLoss);
public float getManaLossPerTick();
float getManaLossPerTick();
public void setManaLossPerTick(float mana);
void setManaLossPerTick(float mana);
public float getGravity();
float getGravity();
public void setGravity(float gravity);
void setGravity(float gravity);
public BlockPos getBurstSourceBlockPos();
BlockPos getBurstSourceBlockPos();
public void setBurstSourceCoords(BlockPos pos);
void setBurstSourceCoords(BlockPos pos);
public ItemStack getSourceLens();
ItemStack getSourceLens();
public void setSourceLens(ItemStack lens);
void setSourceLens(ItemStack lens);
public boolean hasAlreadyCollidedAt(BlockPos pos);
boolean hasAlreadyCollidedAt(BlockPos pos);
public void setCollidedAt(BlockPos pos);
void setCollidedAt(BlockPos pos);
public int getTicksExisted();
int getTicksExisted();
public void setFake(boolean fake);
void setFake(boolean fake);
public void setShooterUUID(UUID uuid);
void setShooterUUID(UUID uuid);
public UUID getShooterUIID();
UUID getShooterUUID();
public void ping();
void ping();
}
@@ -10,13 +10,13 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.mana.TileSignature;
import java.util.Set;
/**
* A basic interface for a world's Mana Network.
* @see IInternalMethodHandler#getManaNetworkInstance()
@@ -52,16 +52,16 @@ public interface IManaNetwork {
public TileEntity getClosestPool(BlockPos pos, World world, int limit);
/**
* Gets the list of all Mana Collectors (eg. Mana Spreader) in the dimension
* passed in. Note that this is the actual list and not a copy, make sure to
* clone the list if you intend to change it in any way.
* Gets the set of all Mana Collectors (eg. Mana Spreader) in the dimension
* passed in. Note that this is the actual set and not a copy, make sure to
* clone the set if you intend to change it in any way.
*/
public List<TileSignature> getAllCollectorsInWorld(World world);
public Set<TileSignature> getAllCollectorsInWorld(World world);
/**
* Gets the list of all Mana Pools in the dimension passed in. Note that this
* is the actual list and not a copy, make sure to clone the list if you intend
* Gets the set of all Mana Pools in the dimension passed in. Note that this
* is the actual set and not a copy, make sure to clone the set if you intend
* to change it in any way.
*/
public List<TileSignature> getAllPoolsInWorld(World world);
public Set<TileSignature> getAllPoolsInWorld(World world);
}
@@ -10,24 +10,34 @@
*/
package vazkii.botania.api.internal;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.network.play.server.SPacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.WorldServer;
public final class VanillaPacketDispatcher {
public static void dispatchTEToNearbyPlayers(TileEntity tile) {
World world = tile.getWorld();
List players = world.playerEntities;
for(Object player : players)
if(player instanceof EntityPlayerMP) {
EntityPlayerMP mp = (EntityPlayerMP) player;
if(pointDistancePlane(mp.posX, mp.posZ, tile.getPos().getX() + 0.5, tile.getPos().getZ() + 0.5) < 64)
((EntityPlayerMP) player).playerNetServerHandler.sendPacket(tile.getDescriptionPacket());
if(tile.getWorld() instanceof WorldServer) {
WorldServer ws = ((WorldServer) tile.getWorld());
SPacketUpdateTileEntity packet = tile.getUpdatePacket();
if(packet == null)
return;
for (EntityPlayer player : ws.playerEntities) {
EntityPlayerMP playerMP = ((EntityPlayerMP) player);
if (playerMP.getDistanceSq(tile.getPos()) < 64 * 64
&& ws.getPlayerChunkMap().isPlayerWatchingChunk(playerMP, tile.getPos().getX() >> 4, tile.getPos().getZ() >> 4)) {
playerMP.connection.sendPacket(packet);
}
}
}
}
public static void dispatchTEToNearbyPlayers(World world, BlockPos pos) {
@@ -10,13 +10,19 @@
*/
package vazkii.botania.api.item;
import net.minecraft.inventory.IInventory;
import net.minecraftforge.items.IItemHandler;
import vazkii.botania.api.mana.IManaReceiver;
/**
* A TileEntity that implements this is considered an Avatar.
*/
public interface IAvatarTile extends IInventory, IManaReceiver {
public interface IAvatarTile extends IManaReceiver {
/**
* Gets the avatar's inventory
* @return An IItemhandler representing the avatar's inventory
*/
public IItemHandler getInventory();
/**
* Gets the amount of ticks that have elapsed on this avatar while it's functional
@@ -13,9 +13,7 @@ package vazkii.botania.api.item;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraft.util.math.MathHelper;
/**
* A Bauble Item that implements this will be have hooks to render something on
@@ -37,24 +35,67 @@ public interface IBaubleRender {
/**
* A few helper methods for the render.
*/
public static class Helper {
final class Helper {
/**
* Rotates the render for a bauble correctly if the player is sneaking.
* Use for renders under {@link RenderType#BODY}.
*/
public static void rotateIfSneaking(EntityPlayer player) {
if(player.isSneaking())
applySneakingRotation();
}
/**
* Rotates the render for a bauble correctly for a sneaking player.
* Use for renders under {@link RenderType#BODY}.
*/
public static void applySneakingRotation() {
GlStateManager.rotate(28.64789F, 1.0F, 0.0F, 0.0F);
GlStateManager.translate(0F, 0.2F, 0F);
GlStateManager.rotate(90F / (float) Math.PI, 1.0F, 0.0F, 0.0F);
}
/**
* Shifts the render for a bauble correctly to the head, including sneaking rotation.
* Use for renders under {@link RenderType#HEAD}.
*/
public static void translateToHeadLevel(EntityPlayer player) {
GlStateManager.translate(0, -player.getDefaultEyeHeight() + (player.isSneaking() ? 0.25 : 0), 0);
GlStateManager.translate(0, -player.getDefaultEyeHeight(), 0);
if (player.isSneaking())
GlStateManager.translate(0.25F * MathHelper.sin(player.rotationPitch * (float) Math.PI / 180), 0.25F * MathHelper.cos(player.rotationPitch * (float) Math.PI / 180), 0F);
}
/**
* Shifts the render for a bauble correctly to the face.
* Use for renders under {@link RenderType#HEAD}, and usually after calling {@link Helper#translateToHeadLevel(EntityPlayer)}.
*/
public static void translateToFace() {
GlStateManager.rotate(90F, 0F, 1F, 0F);
GlStateManager.rotate(180F, 1F, 0F, 0F);
GlStateManager.translate(0f, -4.35f, -1.27f);
}
/**
* Scales down the render to a correct size.
* Use for any render.
*/
public static void defaultTransforms() {
GlStateManager.translate(0.0, 3.0, 1.0);
GlStateManager.scale(0.55, 0.55, 0.55);
}
/**
* Shifts the render for a bauble correctly to the chest.
* Use for renders under {@link RenderType#BODY}, and usually after calling {@link Helper#rotateIfSneaking(EntityPlayer)}.
*/
public static void translateToChest() {
GlStateManager.rotate(180F, 1F, 0F, 0F);
GlStateManager.translate(0F, -3.2F, -0.85F);
}
}
public static enum RenderType {
enum RenderType {
/**
* Render Type for the player's body, translations apply on the player's rotation.
* Sneaking is not handled and should be done during the render.
@@ -64,7 +105,7 @@ public interface IBaubleRender {
/**
* Render Type for the player's body, translations apply on the player's head rotations.
* Sneaking is not handled and should be done during the render.~
* Sneaking is not handled and should be done during the render.
* @see IBaubleRender.Helper
*/
HEAD;
@@ -1,26 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Jan 18, 2015, 12:20:44 AM (GMT)]
*/
package vazkii.botania.api.item;
import net.minecraft.item.EnumDyeColor;
/**
* Used to define a Mana Pool that can be dyed through floral powder.
*/
public interface IDyablePool {
public EnumDyeColor getColor();
public void setColor(EnumDyeColor color);
}
@@ -1,28 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Apr 30, 2015, 1:43:17 PM (GMT)]
*/
package vazkii.botania.api.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
/**
* An extension of IWireframeCoordinateListProvider that allows for
* rendering a single thicker wireframe.
*/
public interface IExtendedWireframeCoordinateListProvider extends IWireframeCoordinateListProvider {
/**
* Gets the source wireframe to draw, this one will be drawn thicker.
*/
public BlockPos getSourceWireframe(EntityPlayer player, ItemStack stack);
}
@@ -11,6 +11,7 @@
package vazkii.botania.api.item;
import net.minecraft.item.ItemStack;
import java.util.HashMap;
public interface IFloatingFlower {
@@ -22,7 +23,7 @@ public interface IFloatingFlower {
public void setIslandType(IslandType type);
public class IslandType {
private static HashMap<String, IslandType> registry = new HashMap<>();
private static final HashMap<String, IslandType> registry = new HashMap<>();
public static final IslandType GRASS = new IslandType("GRASS");
public static final IslandType PODZOL = new IslandType("PODZOL");
@@ -35,6 +36,8 @@ public interface IFloatingFlower {
public static final IslandType INFUSED = new IslandType("INFUSED");
public static final IslandType MUTATED = new IslandType("MUTATED");
private final String typeName;
/**
* Instantiates and registers a new floating flower island type
* Note that you need to register the model for this island type, see BotaniaAPIClient
@@ -46,14 +49,11 @@ public interface IFloatingFlower {
registry.put(name, this);
}
public final String typeName;
public static IslandType ofType(String typeStr) {
IslandType type = registry.get(typeStr);
return type == null ? GRASS : type;
}
@Override
public String toString() {
return this.typeName;
}
@@ -9,9 +9,9 @@
* File Created @ [17/11/2015, 20:10:53 (GMT)]
*/
package vazkii.botania.api.item;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import vazkii.botania.api.subtile.SubTileEntity;
/**
@@ -20,9 +20,15 @@ import vazkii.botania.api.subtile.SubTileEntity;
public interface IFlowerPlaceable {
/**
* Gets the block to be placed, return null to not place anything.
* Gets the state to be placed, return null to not place anything.
*/
public Block getBlockToPlaceByFlower(ItemStack stack, SubTileEntity flower, BlockPos pos);
public IBlockState getBlockToPlaceByFlower(ItemStack stack, SubTileEntity flower, BlockPos pos);
/**
* Called after the block is placed.
* @param stack The stack that was placed.
* @param flower The flower doing the placing.
* @param pos The position that was placed at.
*/
public void onBlockPlacedByFlower(ItemStack stack, SubTileEntity flower, BlockPos pos);
}
@@ -11,7 +11,7 @@
package vazkii.botania.api.item;
import net.minecraft.world.World;
/**
* A BiomeGenBase that implements this will not have Botania flowers generated.
* A Biome that implements this will not have Botania flowers generated.
*/
public interface IFlowerlessBiome {
/**
@@ -1,26 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Oct 29, 2014, 4:52:04 PM (GMT)]
*/
package vazkii.botania.api.item;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
/**
* A BlockBush can implement this to check if it can be broken
* by a Horn/Drum of the Wild or not.
* @Deprecated Use IHornHarvestable instead
*/
@Deprecated
public interface IGrassHornExcempt {
public boolean canUproot(World world, BlockPos pos);
}
@@ -11,7 +11,7 @@
package vazkii.botania.api.item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
@@ -22,7 +22,7 @@ public interface IManaDissolvable {
/**
* Called for every tick the item is on a mana pool. If the stack has stack
* size 0 the item is killed. This is called in both the server and client.
* size 0 the item is killed. This is called serverside.
*/
public void onDissolveTick(IManaPool pool, ItemStack stack, EntityItem item);
@@ -11,6 +11,7 @@
package vazkii.botania.api.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.EntityEquipmentSlot;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -23,16 +24,18 @@ import net.minecraft.item.ItemStack;
*/
public interface IManaProficiencyArmor {
public boolean shouldGiveProficiency(ItemStack stack, int slot, EntityPlayer player);
public boolean shouldGiveProficiency(ItemStack stack, EntityEquipmentSlot slot, EntityPlayer player);
public final static class Helper {
public static boolean hasProficiency(EntityPlayer player) {
for(int i = 0; i < 4; i++) {
ItemStack armor = player.getCurrentArmor(i);
for(EntityEquipmentSlot e: EntityEquipmentSlot.values()) {
if(e.getSlotType() != EntityEquipmentSlot.Type.ARMOR)
continue;
ItemStack armor = player.getItemStackFromSlot(e);
if(armor != null) {
Item item = armor.getItem();
if(item instanceof IManaProficiencyArmor && ((IManaProficiencyArmor) item).shouldGiveProficiency(armor, i, player))
if(item instanceof IManaProficiencyArmor && ((IManaProficiencyArmor) item).shouldGiveProficiency(armor, e, player))
return true;
}
}
@@ -10,11 +10,11 @@
*/
package vazkii.botania.api.item;
import java.util.UUID;
import net.minecraft.item.ItemStack;
import net.minecraft.stats.Achievement;
import java.util.UUID;
/**
* An item that implements this counts as a Relic item. This is purely for interaction
* and other mod items should not implement this interface.
@@ -28,8 +28,10 @@ public interface IRelic {
public void bindToUsername(String playerName, ItemStack stack);
/**
* Gets the username of the person this relic is bound to.
* Gets the username of the person this relic is bound to, or the empty String if the username field is empty.
* You should not use this to determine if a relic is bound, use UUIDs instead.
*/
@Deprecated
public String getSoulbindUsername(ItemStack stack);
/**
@@ -38,12 +40,12 @@ public interface IRelic {
public void bindToUUID(UUID uuid, ItemStack stack);
/**
* Gets the UUID of the person this relic is bound to.
* Gets the UUID of the person this relic is bound to, or null if a well-formed UUID could not be found
*/
public UUID getSoulbindUUID(ItemStack stack);
/**
* Checks if the relic is using UUIDs.
* Checks if the relic contains a well-formed UUID.
*/
public boolean hasUUID(ItemStack stack);
@@ -12,8 +12,8 @@ package vazkii.botania.api.item;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
/**
* An item that implements this can break multiple blocks at once
@@ -10,13 +10,11 @@
*/
package vazkii.botania.api.item;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import net.minecraft.util.math.BlockPos;
import java.util.List;
/**
* An item that implements this will allow for various wireframes to be drawn
@@ -27,8 +25,16 @@ public interface IWireframeCoordinateListProvider {
/**
* Returns a list of BlockPos for the wireframes to draw.
* Can be null.
* Will not be null.
*/
public List<BlockPos> getWireframesToDraw(EntityPlayer player, ItemStack stack);
/**
* Gets a wireframe to draw thicker than the rest.
* This is useful to indicate the precedence of some position over the others.
* @return The position of a single wireframe to draw thicker than all the others.
*/
public BlockPos getSourceWireframe(EntityPlayer player, ItemStack stack);
}
@@ -12,8 +12,6 @@ package vazkii.botania.api.item;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.fml.common.eventhandler.Event;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* Why would you ever want this ._.
@@ -10,10 +10,10 @@
*/
package vazkii.botania.api.lexicon;
import java.util.Queue;
import net.minecraftforge.fml.common.eventhandler.Event;
import java.util.Queue;
/**
* Fired when the Lexica Botania's tutorial is started. You can add your
* own entries to the tutorial here. Please use this responsibly.
@@ -12,7 +12,7 @@ package vazkii.botania.api.lexicon;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
@@ -1,14 +1,14 @@
package vazkii.botania.api.lexicon;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.text.TextFormatting;
public class KnowledgeType {
public final String id;
public final EnumChatFormatting color;
public final TextFormatting color;
public final boolean autoUnlock;
public KnowledgeType(String id, EnumChatFormatting color, boolean autoUnlock) {
public KnowledgeType(String id, TextFormatting color, boolean autoUnlock) {
this.id = id;
this.color = color;
this.autoUnlock = autoUnlock;
@@ -10,11 +10,12 @@
*/
package vazkii.botania.api.lexicon;
import net.minecraft.util.ResourceLocation;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.List;
import net.minecraft.util.ResourceLocation;
public class LexiconCategory implements Comparable<LexiconCategory> {
private static int count = 0;
@@ -70,7 +71,7 @@ public class LexiconCategory implements Comparable<LexiconCategory> {
}
@Override
public int compareTo(LexiconCategory category) {
public int compareTo(@Nonnull LexiconCategory category) {
return priority == category.priority ? sortingId - category.sortingId : category.priority - priority;
}
}
@@ -10,16 +10,17 @@
*/
package vazkii.botania.api.lexicon;
import net.minecraft.item.ItemStack;
import net.minecraft.util.text.translation.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import vazkii.botania.api.BotaniaAPI;
import javax.annotation.Nonnull;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.util.StatCollector;
import vazkii.botania.api.BotaniaAPI;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class LexiconEntry implements Comparable<LexiconEntry> {
public final String unlocalizedName;
@@ -27,11 +28,11 @@ public class LexiconEntry implements Comparable<LexiconEntry> {
private KnowledgeType type = BotaniaAPI.basicKnowledge;
public List<LexiconPage> pages = new ArrayList<>();
public final List<LexiconPage> pages = new ArrayList<>();
private boolean priority = false;
private ItemStack icon = null;
private List<ItemStack> extraDisplayedRecipes = new ArrayList<>();
private final List<ItemStack> extraDisplayedRecipes = new ArrayList<>();
/**
* @param unlocalizedName The unlocalized name of this entry. This will be localized by the client display.
@@ -122,7 +123,7 @@ public class LexiconEntry implements Comparable<LexiconEntry> {
}
public final String getNameForSorting() {
return (priority ? 0 : 1) + StatCollector.translateToLocal(getUnlocalizedName());
return (priority ? 0 : 1) + I18n.translateToLocal(getUnlocalizedName());
}
public List<ItemStack> getDisplayedRecipes() {
@@ -159,7 +160,7 @@ public class LexiconEntry implements Comparable<LexiconEntry> {
}
@Override
public int compareTo(LexiconEntry o) {
public int compareTo(@Nonnull LexiconEntry o) {
return getNameForSorting().compareTo(o.getNameForSorting());
}
@@ -10,13 +10,13 @@
*/
package vazkii.botania.api.lexicon;
import java.util.List;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.item.ItemStack;
import vazkii.botania.api.internal.IGuiLexiconEntry;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import vazkii.botania.api.internal.IGuiLexiconEntry;
import java.util.List;
public abstract class LexiconPage {
@@ -40,9 +40,7 @@ public abstract class LexiconPage {
* Called per update tick. Non gui-sensitive version, kept for backwards compatibility only.
*/
@SideOnly(Side.CLIENT)
public void updateScreen() {
// NO-OP
}
public void updateScreen() {}
/**
* Called per update tick. Feel free to override fully, the
@@ -58,41 +56,31 @@ public abstract class LexiconPage {
* You can add buttons and whatever you'd do on initGui() here.
*/
@SideOnly(Side.CLIENT)
public void onOpened(IGuiLexiconEntry gui) {
// NO-OP
}
public void onOpened(IGuiLexiconEntry gui) {}
/**
* Called when this page is opened, be it via closing the gui or when the player changes page.
* Make sure to dispose of anything you don't use any more, such as buttons in the gui's buttonList.
*/
@SideOnly(Side.CLIENT)
public void onClosed(IGuiLexiconEntry gui) {
// NO-OP
}
public void onClosed(IGuiLexiconEntry gui) {}
/**
* Called when a button is pressed, equivalent to GuiScreen.actionPerformed.
*/
@SideOnly(Side.CLIENT)
public void onActionPerformed(IGuiLexiconEntry gui, GuiButton button) {
// NO-OP
}
public void onActionPerformed(IGuiLexiconEntry gui, GuiButton button) {}
/**
* Called when a key is pressed.
*/
@SideOnly(Side.CLIENT)
public void onKeyPressed(char c, int key) {
// NO-OP
}
public void onKeyPressed(char c, int key) {}
/**
* Called when {@link LexiconEntry#setLexiconPages(LexiconPage...)} is called.
*/
public void onPageAdded(LexiconEntry entry, int index) {
// NO-OP
}
public void onPageAdded(LexiconEntry entry, int index) {}
/**
* Shows the list of recipes present in this page for display in the category
@@ -10,12 +10,13 @@
*/
package vazkii.botania.api.lexicon;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import vazkii.botania.api.mana.IManaItem;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.item.ItemStack;
import vazkii.botania.api.mana.IManaItem;
/**
* This class contains mappings for which entry and page correspond to each
* craftable ItemStack. Use the map method to map an ItemStack to a page in
@@ -23,7 +24,7 @@ import vazkii.botania.api.mana.IManaItem;
*/
public final class LexiconRecipeMappings {
private static Map<String, EntryData> mappings = new HashMap<>();
private static final Map<String, EntryData> mappings = new HashMap<>();
/**
* Maps the given stack to the given page of the entry.
@@ -47,21 +48,28 @@ public final class LexiconRecipeMappings {
}
public static EntryData getDataForStack(ItemStack stack) {
String wildKey = stackToString(stack, true);
if (mappings.containsKey(wildKey))
return mappings.get(wildKey);
return mappings.get(stackToString(stack));
}
public static String stackToString(ItemStack stack) {
return stackToString(stack, false);
}
public static String stackToString(ItemStack stack, boolean forceIgnore) {
if(stack == null || stack.getItem() == null)
return "NULL";
if(stack.hasTagCompound() && stack.getItem() instanceof IRecipeKeyProvider)
return ((IRecipeKeyProvider) stack.getItem()).getKey(stack);
return stack.getUnlocalizedName() + (ignoreMeta(stack) ? "" : "~" + stack.getItemDamage());
return stack.getUnlocalizedName() + (forceIgnore || ignoreMeta(stack) ? "" : "~" + stack.getItemDamage());
}
public static boolean ignoreMeta(ItemStack stack) {
return stack.isItemStackDamageable() || stack.getItem() instanceof IManaItem;
return stack.isItemStackDamageable() || stack.getItem() instanceof IManaItem || stack.getItemDamage() == OreDictionary.WILDCARD_VALUE;
}
public static class EntryData {
@@ -10,14 +10,14 @@
*/
package vazkii.botania.api.lexicon.multiblock;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.world.IBlockAccess;
import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent;
import java.util.HashMap;
import java.util.Map;
/**
* A hook for rendering blocks in the multiblock display.
*/
@@ -25,7 +25,7 @@ public interface IMultiblockRenderHook {
public static Map<Block, IMultiblockRenderHook> renderHooks = new HashMap<>();
public void renderBlockForMultiblock(IBlockAccess world, Multiblock mb, IBlockState state, MultiblockComponent comp, float alpha);
public void renderBlockForMultiblock(IBlockAccess world, Multiblock mb, IBlockState state, MultiblockComponent comp);
public boolean needsTranslate(IBlockState state);
@@ -10,14 +10,18 @@
*/
package vazkii.botania.api.lexicon.multiblock;
import java.util.*;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent;
import java.util.ArrayList;
import java.util.EnumMap;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
/**
* This class describes a Mutiblock object. It's used to display a
* multiblock in the lexicon and to show the player in a ghost-like
@@ -25,14 +29,14 @@ import vazkii.botania.api.lexicon.multiblock.component.MultiblockComponent;
*/
public class Multiblock {
public List<MultiblockComponent> components = new ArrayList<>();
public List<ItemStack> materials = new ArrayList<>();
public final List<MultiblockComponent> components = new ArrayList<>();
public final List<ItemStack> materials = new ArrayList<>();
public BlockPos minPos = BlockPos.ORIGIN;
public BlockPos maxPos = BlockPos.ORIGIN;
public BlockPos offPos = BlockPos.ORIGIN;
public HashMap<BlockPos, MultiblockComponent> locationCache = new HashMap<>();
public final HashMap<BlockPos, MultiblockComponent> locationCache = new HashMap<>();
/**
* Adds a multiblock component to this multiblock. The component's x y z
@@ -10,9 +10,8 @@
*/
package vazkii.botania.api.lexicon.multiblock.component;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
@@ -26,8 +25,8 @@ public class AnyComponent extends MultiblockComponent {
@Override
public boolean matches(World world, BlockPos pos) {
Block block = world.getBlockState(pos).getBlock();
return !block.isAir(world, pos) && block.getCollisionBoundingBox(world, pos, world.getBlockState(pos)) != null;
IBlockState state = world.getBlockState(pos);
return !state.getBlock().isAir(state, world, pos) && state.getCollisionBoundingBox(world, pos) != null;
}
}
@@ -14,7 +14,7 @@ import net.minecraft.block.Block;
import net.minecraft.block.properties.PropertyEnum;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.EnumDyeColor;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.BotaniaAPI;
@@ -11,7 +11,7 @@
package vazkii.botania.api.lexicon.multiblock.component;
import net.minecraft.block.Block;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.BotaniaAPI;
import vazkii.botania.api.state.BotaniaStateProps;
@@ -13,7 +13,7 @@ package vazkii.botania.api.lexicon.multiblock.component;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -27,7 +27,7 @@ public class MultiblockComponent {
protected BlockPos relPos;
protected final IBlockState state;
protected final TileEntity tileEntity;
private boolean doFancyRender;
private final boolean doFancyRender;
public MultiblockComponent(BlockPos relPos, IBlockState state) {
this(relPos, state, null);
@@ -1,7 +1,7 @@
package vazkii.botania.api.lexicon.multiblock.component;
import net.minecraft.block.Block;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
// Multiblock component that only compares blocks, not blockstates
@@ -17,8 +17,32 @@ package vazkii.botania.api.mana;
*/
public interface IDirectioned {
/**
* @return The X rotation, in degrees
*/
public float getRotationX();
/**
* @return The Y rotation, in degrees
*/
public float getRotationY();
/**
* Set the X rotation
* @param rot X rotation, in degrees
*/
public void setRotationX(float rot);
/**
* Set the Y rotation
* @param rot Y rotation, in degrees
*/
public void setRotationY(float rot);
/**
* This should be called after rotation setting is done to allow
* for the block to re-calculate.
*/
public void commitRedirection();
}
@@ -1,23 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Jun 19, 2015, 10:05:24 PM (GMT)]
*/
package vazkii.botania.api.mana;
import java.util.UUID;
/**
* This interface marks a TileEntity that can be identified through
* an UUID. This UUID must presist between sessions.
*/
public interface IIdentifiable {
public UUID getIdentifier();
}
@@ -10,7 +10,7 @@
*/
package vazkii.botania.api.mana;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
@@ -11,8 +11,6 @@
package vazkii.botania.api.mana;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* Have an Item implement this to be counted as a lens for the mana spreader.
@@ -11,7 +11,7 @@
package vazkii.botania.api.mana;
import net.minecraft.item.ItemStack;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.math.RayTraceResult;
import vazkii.botania.api.internal.IManaBurst;
/**
@@ -31,7 +31,7 @@ public interface ILensEffect {
* any block. This is called after the collision is handled.
* @return True to kill the burst. False to keep it alive.
*/
public boolean collideBurst(IManaBurst burst, MovingObjectPosition pos, boolean isManaBlock, boolean dead, ItemStack stack);
public boolean collideBurst(IManaBurst burst, RayTraceResult pos, boolean isManaBlock, boolean dead, ItemStack stack);
/**
* Called when a mana burst fired from a mana spreader with this focus is updated.
@@ -10,12 +10,16 @@
*/
package vazkii.botania.api.mana;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
* Any TileEntity that implements this can be counted as a "ghost" block of
* Any Block that implements this can be counted as a "ghost" block of
* sorts, that won't call the collision code for the mana bursts.
*/
public interface IManaCollisionGhost {
public boolean isGhost();
public boolean isGhost(IBlockState state, World world, BlockPos pos);
}
@@ -10,6 +10,8 @@
*/
package vazkii.botania.api.mana;
import net.minecraft.item.EnumDyeColor;
/**
* Any TileEntity that implements this is considered a Mana Pool,
* by which nearby functional flowers will pull mana from it.<br>
@@ -27,4 +29,15 @@ public interface IManaPool extends IManaReceiver {
*/
public boolean isOutputtingPower();
/**
* @return The color of this pool.
*/
public EnumDyeColor getColor();
/**
* Sets the color of this pool.
* @param color The color to set.
*/
public void setColor(EnumDyeColor color);
}
@@ -10,7 +10,7 @@
*/
package vazkii.botania.api.mana;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import vazkii.botania.api.internal.IManaBurst;
@@ -10,15 +10,15 @@
*/
package vazkii.botania.api.mana;
import java.util.UUID;
import vazkii.botania.api.internal.IManaBurst;
import java.util.UUID;
/**
* This describes an interface of a Mana Sender block that should be able to pingbackable
* by a burst to tell it that the burst is still alive.
*/
public interface IPingable extends IIdentifiable {
public interface IPingable {
/**
* Pings this object back, telling it that the burst passed in is still alive
@@ -28,4 +28,9 @@ public interface IPingable extends IIdentifiable {
*/
public void pingback(IManaBurst burst, UUID expectedIdentity);
/**
* @return A unique and persistent identifier for this IPingable
*/
public UUID getIdentifier();
}
@@ -11,7 +11,7 @@
package vazkii.botania.api.mana;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.util.BlockPos;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@@ -1,29 +0,0 @@
/**
* This class was created by <Vazkii>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [15/11/2015, 19:28:18 (GMT)]
*/
package vazkii.botania.api.mana;
/**
* This is an extension of IDirectioned for TileEntities
* that allow for their rotation to be public and modifiable outside.
* This is used in botania for the Redirective mana lens.
*/
public interface IRedirectable extends IDirectioned {
public void setRotationX(float rot);
public void setRotationY(float rot);
/**
* This should be called after rotation setting is done to allow
* for the block to re-calculate.
*/
public void commitRedirection();
}
@@ -0,0 +1,39 @@
/**
* This class was created by <Flaxbeard>. It's distributed as
* part of the Botania Mod. Get the Source Code in github:
* https://github.com/Vazkii/Botania
*
* Botania is Open Source and distributed under the
* Botania License: http://botaniamod.net/license.php
*
* File Created @ [Jul 25, 2016, 9:02:12 PM (GMT)]
*/
package vazkii.botania.api.mana;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fml.common.eventhandler.Event;
public class ManaDiscountEvent extends Event {
private final EntityPlayer entityPlayer;
private float discount;
public ManaDiscountEvent(EntityPlayer entityPlayer, float discount) {
this.entityPlayer = entityPlayer;
this.discount = discount;
}
public EntityPlayer getEntityPlayer() {
return entityPlayer;
}
public float getDiscount() {
return discount;
}
public void setDiscount(float discount) {
this.discount = discount;
}
}
@@ -13,6 +13,7 @@ package vazkii.botania.api.mana;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.common.MinecraftForge;
import vazkii.botania.api.BotaniaAPI;
public final class ManaItemHandler {
@@ -145,7 +146,7 @@ public final class ManaItemHandler {
if(stack.getItem() instanceof IManaItem && !((IManaItem) stack.getItem()).canExportManaToItem(stack, stackInSlot))
continue;
int received = 0;
int received;
if(manaItemSlot.getMana(stackInSlot) + manaToSend <= manaItemSlot.getMaxMana(stackInSlot))
received = manaToSend;
else received = manaToSend - (manaItemSlot.getMana(stackInSlot) + manaToSend - manaItemSlot.getMaxMana(stackInSlot));
@@ -249,6 +250,10 @@ public final class ManaItemHandler {
if(armor != null && armor.getItem() instanceof IManaDiscountArmor)
discount += ((IManaDiscountArmor) armor.getItem()).getDiscount(armor, i, player);
}
ManaDiscountEvent event = new ManaDiscountEvent(player, discount);
MinecraftForge.EVENT_BUS.post(event);
discount = event.getDiscount();
return discount;
}
@@ -4,12 +4,32 @@ import net.minecraft.tileentity.TileEntity;
public class TileSignature {
public final TileEntity tile;
public final boolean remoteWorld;
private final TileEntity tile;
private final boolean remoteWorld;
public TileSignature(TileEntity tile, boolean remoteWorld) {
this.tile = tile;
this.remoteWorld = remoteWorld;
}
public TileEntity getTile() {
return tile;
}
public boolean isRemote() {
return remoteWorld;
}
@Override
public int hashCode() {
return Boolean.hashCode(remoteWorld) ^ System.identityHashCode(tile);
}
@Override
public boolean equals(Object o) {
return o instanceof TileSignature
&& tile == ((TileSignature) o).tile
&& remoteWorld == ((TileSignature) o).remoteWorld;
}
}
@@ -38,15 +38,7 @@ public interface ISparkAttachable extends IManaReceiver {
/**
* Gets the Spark that is attached to this block. A common implementation is
* to check for Spark entities above:
*
List<ISparkEntity> sparks = worldObj.getEntitiesWithinAABB(ISparkEntity.class, new AxisAlignedBB(xCoord, yCoord + 1, zCoord, xCoord + 1, yCoord + 2, zCoord + 1));
if(sparks.size() == 1) {
Entity e = (Entity) sparks.get(0);
return (ISparkEntity) e;
}
return null;
* to check for Spark entities above using world.getEntitiesWithinAABB()
*/
public ISparkEntity getAttachedSpark();
@@ -19,15 +19,7 @@ public interface ISparkEntity {
/**
* Which TileEntity is this Spark attached to? A common implementation is checking the block below.
*
int x = MathHelper.floor_double(posX);
int y = MathHelper.floor_double(posY) - 1;
int z = MathHelper.floor_double(posZ);
TileEntity tile = worldObj.getTileEntity(x, y, z);
if(tile != null && tile instanceof ISparkAttachable)
return (ISparkAttachable) tile;
return null;
* using world.getTileEntity(new BlockPos(this).down())
*/
public ISparkAttachable getAttachedTile();
@@ -49,12 +41,12 @@ public interface ISparkEntity {
* 3: Recessive<br>
* 4: Isolated
*/
public int getUpgrade();
public SparkUpgradeType getUpgrade();
/**
* Sets the upgrade on this Spark. See {@link ISparkEntity#getUpgrade}
*/
public void setUpgrade(int upgrade);
public void setUpgrade(SparkUpgradeType upgrade);
/**
* See {@link ISparkAttachable#areIncomingTranfersDone()}
@@ -10,13 +10,13 @@
*/
package vazkii.botania.api.mana.spark;
import java.util.List;
import com.google.common.base.Predicates;
import net.minecraft.entity.Entity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraft.world.World;
import java.util.List;
public final class SparkHelper {
public static final int SPARK_SCAN_RANGE = 12;
@@ -0,0 +1,9 @@
package vazkii.botania.api.mana.spark;
public enum SparkUpgradeType {
NONE,
DISPERSIVE,
DOMINANT,
RECESSIVE,
ISOLATED
}
@@ -1,4 +1,4 @@
@API(owner = "Botania", apiVersion = "76", provides = "BotaniaAPI")
@API(owner = "Botania", apiVersion = "79", provides = "BotaniaAPI")
package vazkii.botania.api;
import net.minecraftforge.fml.common.API;
@@ -10,13 +10,13 @@
*/
package vazkii.botania.api.recipe;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.math.AxisAlignedBB;
import net.minecraftforge.fml.common.eventhandler.Event;
import java.util.List;
/**
* An event fired when an Elven Portal TE updates. The portal's
* relevant AABB and other stuff is passed in for convenience. This
@@ -29,7 +29,7 @@ public class ElvenPortalUpdateEvent extends Event {
*/
public final TileEntity portalTile;
public final AxisAlignedBB aabb;
public boolean open;
public final boolean open;
public final List<ItemStack> stacksInside;
public ElvenPortalUpdateEvent(TileEntity te, AxisAlignedBB aabb, boolean open, List<ItemStack> stacks) {
@@ -10,15 +10,15 @@
*/
package vazkii.botania.api.recipe;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import vazkii.botania.api.item.IPetalApothecary;
/**
* Have an Item implement this to allow it to be used in the Petal Apothecary.
*/
public interface IFlowerComponent {
public boolean canFit(ItemStack stack, IInventory apothecary);
public boolean canFit(ItemStack stack, IPetalApothecary apothecary);
public int getParticleColor(ItemStack stack);
Loaded 100 of 2060 files, more files were not shown because too many files have changed in this diff. Show more