Compare commits

...

1300 Commits

Author SHA1 Message Date
E. Kim 5c8dc8f7ec
Update ko_kr.json (#1882) 2021-07-24 20:15:31 +10:00
E. Kim 94cd26a56d
Update ko_kr.json (#1879) 2021-07-08 16:52:44 +10:00
ph0elyx 0a2ad414ef
Update spanish translations (#1878)
* Update es_ar.json

* Update es_es.json

* Update es_ar.json

* Update es_es.json

* Update es_mx.json
2021-07-07 12:26:34 +10:00
KdotJPG f4a0c274ea
Improve simplex code and results, make it fully seedable. (#1874) 2021-06-30 10:31:57 +10:00
Forstride 993a556e93
Added unbreakable infertile crops tag for Serene Seasons compatibility 2021-06-21 23:05:31 -04:00
Forstride bebe90ee5e Added block/item tags for new Serene Seasons fertility system 2021-06-21 19:24:43 -04:00
Forstride 516879ed8c
Changed Woodland tree feature for Dynamic Trees compatibility 2021-06-17 07:09:57 -04:00
Adubbz c49a82b9c1 Fixed crashing when gravel beaches are disabled. Closes #1846, #1857, #1866 2021-06-17 15:06:51 +10:00
Adubbz df04ab8727 Fixed crashing with Terra. Closes #1864 2021-06-15 13:26:43 +10:00
Forstride c9cfab8065 Added missing Spanish Moss loot tables 2021-06-12 11:57:29 -04:00
Forstride 8882a9314c - Re-added the Cold Desert and Grassland biomes
- Added Tall Dead Forest, Shroomy Wetland, and Grassland Clover Patch sub-biomes
- Removed the Jade Grassland, Mushroomy Muskeg, Silkglade/Silkglade Nest, Overgrown Fungal Jungle, and Wooded Wasteland
- Reworked Redwood and Bayou tree generation (Thanks to SuperCoder79!)
- Added Spanish Moss, Clover, and Huge Clover blocks
- Tweaked the Muskeg, Seasonal Forest, Woodland, and respective sub-biomes
2021-06-07 17:30:53 -04:00
Forstride 1eeca25ed0 Added built-in classic textures resource pack (Not fully working yet), removed April Fools easter egg from the Rainbow Hills 2021-06-04 10:59:55 -04:00
Forstride 7f4c3623df Re-added the Woodland and Muskeg biomes, split the Marsh back into a primary biome
NOTE: This update will require you to clear your configs and create a new world.
2021-06-01 12:11:50 -04:00
Corail31 503cda9ef1
boat variants (#1863) 2021-05-25 08:36:09 +10:00
Aarrn33 35b5b2f340
Create fr-fr.json (#1856)
* Create fr-fr.json

* Changed file name
2021-05-15 14:03:16 -04:00
TheSonit d57bf96802
Created ukrainian localization (#1852) 2021-05-08 21:19:48 +10:00
SuperCoder79 c1615c50ef
Optimize performance and memory usage (#1850) 2021-05-06 20:49:47 +10:00
Forstride 030559a74a Merge branch 'BOP-1.16.4-13.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.16.4-13.x.x 2021-05-05 01:46:08 -04:00
Forstride d5396c0485 Fixed BOP biomes not generating flowers when using bonemeal 2021-05-05 01:45:57 -04:00
E. Kim 3a75fde67c
Update ko_kr.json (#1847) 2021-05-05 14:39:45 +10:00
Forstride 7e0b396cb6 Prevented sprouts from generating in caves 2021-05-04 18:13:14 -04:00
Forstride b393c2f109 Added trunk bushes to redwood trees 2021-05-04 03:30:56 -04:00
Forstride ba0e812ec1 Added alternate generation style for hellbark trees/saplings to make collecting wood easier 2021-05-03 20:30:00 -04:00
Forstride 3b754115a8 Changed temperatures of the Grove, Lavender Field, and Prairie so they no longer use tropical seasons in Serene Seasons 2021-05-03 19:08:43 -04:00
Forstride 22892df504 Tweaks to the Burnt Forest sub-biome 2021-04-27 16:51:58 -04:00
Adubbz 87aa9a03a9 Updated to 1.16.5 2021-04-24 10:19:47 +10:00
Adubbz 3f805e37e1 Don't upload to maven - Those who want it can use Curseforge's one instead 2021-04-24 09:59:09 +10:00
Adubbz d94e32ee3c More Jenkins changes 2021-04-24 09:54:36 +10:00
Adubbz 72d3ea9c8e More Jenkinsfile changes 2021-04-24 09:51:09 +10:00
Adubbz 8caa6a9aa2 Jenkinsfile updates 2021-04-24 09:49:27 +10:00
joker876 acd9f9db5b
pl_pl localization (#1840)
* Update pl_pl.json

* Added proper spacings here and there
2021-04-21 16:20:40 -04:00
Corgi Taco 6f3410f5cd
-Modded End and Nether chunk generator compat in BOP Worldtype (#1825) 2021-03-21 11:04:25 +11:00
ph0elyx ecec6bb865
Update spanish translations (#1821)
* Update es_es.json

* Update es_ar.json

* Update es_mx.json

* Update es_ar.json

* Update es_es.json

* Update es_mx.json
2021-03-13 19:09:01 +11:00
Forstride 624e5a29d8 Fixed beach biomes not working...For the entirety of 1.16.4... 2021-03-11 14:21:10 -05:00
zorc 6434926d54
Update zh_cn.json (#1796)
Update zh_cn.json
2021-01-26 09:41:08 +11:00
BardinTheDwarf a970db94e9
Update ru_ru.json (#1793) 2021-01-22 21:23:14 +11:00
Adubbz a276d30e1f Enqueue in common setup, closed #1758 2021-01-20 11:23:16 +11:00
Wizqok 02157af333
de_de.json uptodate (#1780)
* Update de_de.json

added all new entries, removed not used ones

* syntax
2021-01-06 09:00:51 +11:00
E. Kim a68e2a8c3d
Update ko_kr.json (#1771) 2020-12-25 22:33:33 -05:00
Forstride 967f4fa5f2 Updated some biome temperatures for Serene Seasons compatibility 2020-12-11 19:46:21 -05:00
ph0elyx 22861fdba4
Update es_es.json es_mx.json es_ar.json (#1759)
* Update es_ar.json, es_es.json, es_mx.json

* Update es_es.json, es_mx.json, es_ar.json

Co-authored-by: Felipe Clariá <63019092+feliclaria@users.noreply.github.com>
2020-12-11 09:40:09 +11:00
Adubbz cca10ac408 Adopted Forge's new world type system 2020-12-08 12:25:09 +11:00
WuzgXY 51f5cb1b6d
Correction of "Cherry" (#1749) 2020-11-28 18:46:45 +11:00
Forstride e7d0561af4 Replaced Evoker spawns in the Ominous Woods with Illusioners 2020-11-21 07:27:37 -05:00
Forstride f438861cf3 Re-added biome dictionary tags 2020-11-10 02:41:19 -05:00
Adubbz 8887217790 Scale ocean climate zooming with biome size option 2020-11-10 09:55:54 +11:00
Forstride f66a7f349e Changed foliage/leaf block loot tables to use the Forge shears tag (Closes #1689) 2020-11-09 00:47:01 -05:00
Adubbz b8bbadd73a Fixed issues with the biome config file. Closes #1693 2020-11-09 12:08:14 +11:00
Adubbz 7a9533387b Re-added support for biomes from other mods. Closes #1670 2020-11-09 11:48:33 +11:00
Felipe Clariá ae366e8877
Update es_ar.json, es_es.json, es_mx.json (#1741) 2020-11-09 11:46:06 +11:00
Forstride e93b6331f4 Changed the Volcanic Forest to a Burnt Forest sub-biome for the Dead Forest 2020-11-08 00:47:48 -05:00
Felipe Clariá 3ecc927854
Update es_ar.json, es_es.json, es_mx.json (#1737)
* Update es_ar.json, es_es.json, es_mx.json

* Fixes

* Update es_ar.json, es_es.json, es_mx.json
2020-11-06 06:58:03 -05:00
Forstride 18f2d5e66a Added Tropic Plains and Volcanic Forest sub-biomes 2020-11-06 05:14:42 -05:00
Forstride c12735accc Added ambient particles to certain biomes 2020-11-06 02:38:17 -05:00
Forstride 0123ce2257 Renamed Bamboo Grove to Bamboo Blossom Grove 2020-11-05 21:04:14 -05:00
Forstride ad1deb9352 Fixed technical biomes not being registered properly 2020-11-05 02:57:10 -05:00
Forstride 4fc61b1930 Tweaked Tundra Basin scale 2020-11-05 02:44:27 -05:00
Forstride f59bc74869 "Updated" to 1.16.4 2020-11-05 02:16:35 -05:00
Forstride 8e193fab55 Updated language files from existing PRs 2020-11-04 15:43:29 -05:00
Forstride 80d6bc0769 Finalized biome rework 2020-11-04 15:34:55 -05:00
Forstride 27c59e07eb Rework stuff 2020-10-28 05:55:07 -04:00
Forstride daffd4b951 Copied fixes over to biome rework branch 2020-10-12 06:20:26 -04:00
Forstride 69ad6bfc15 More stable than Nintendo patch notes 2020-10-07 22:06:45 -04:00
Forstride 61968d1721 Improved mahogany tree generation 2020-10-07 21:03:14 -04:00
Forstride 91c81c38f1 Even more biome rework stuff 2020-10-07 17:26:14 -04:00
Forstride 49469a9618 More biome rework progress 2020-10-07 04:40:19 -04:00
Forstride 316600aae7 More biome rework stuff 2020-10-07 00:36:04 -04:00
Forstride 692a20d335 WIP rework stuff 2020-10-06 21:37:30 -04:00
Forstride 9279cc7547 - Added Lush Desert biome
- Added Orange Sand/Sandstone (And all matching blocks for it)
- Changed the Brushland into a new biome called the Dryland
- Renamed the Origin Hills to Origin Valley
- Renamed the Rainbow Valley to Rainbow Hills
- Removed Xeric Shrubland sub-biome
- Removed Oasis sub-biome
- Improved various textures
2020-10-05 21:01:09 -04:00
SuperCoder79 1a5742af0f
Change climate offsetting to random instead of bitmask (#1690) 2020-10-05 12:11:48 +11:00
SuperCoder79 5741d6e98b
Improve Origin Hills tree generation and beach generation (#1688)
* Trees now follow Alpha Minecraft's generation gradient
* Beaches use Alpha's noise generation for sand and gravel
2020-10-04 18:14:22 -04:00
Forstride f064126e70 Removed roots (They didn't generate in 1.16.3 anyway), fixed potted sprout texture 2020-10-03 23:11:08 -04:00
Felipe Clariá a7883a194b
Update es_ar.json, es_es.json, es_mx.json (#1678)
* Update spanish

* Update es_ar.json, es_es.json, es_mx.json
2020-09-27 20:31:37 +10:00
Forstride 987a45a5c9 Re-added the Jade Cliffs. Improved the Overgrown Cliffs 2020-09-24 21:55:05 -04:00
Forstride e3467be773 Added huge toadstools to the Woodland, fixed placing seagrass on white/black sand (Closes #1668) 2020-09-24 16:10:26 -04:00
Adubbz 9af3b6f06c Also register configured origin carver 2020-09-24 14:59:54 +10:00
Adubbz 376348eb9f Moved carvers to their own class 2020-09-24 14:54:19 +10:00
Adubbz 58253db099 Whoops 2020-09-24 14:40:45 +10:00
Adubbz dfa48edd52 Removed now unnecessary workaround for configured features 2020-09-24 14:37:44 +10:00
Adubbz 70ee37f212 Fixed grass/foliage colours 2020-09-24 14:32:54 +10:00
Adubbz 39aec91eb2 wip colour stuff 2020-09-24 13:39:08 +10:00
Forstride f0663276d3 Added temporary grass color overrides for the Fungal Jungle/Rainbow Valley/Silkglade 2020-09-23 23:07:53 -04:00
Forstride 382fc4a90c Finished up feature overhaul stuff 2020-09-22 16:41:31 -04:00
Forstride 99c204f18b Yet another tedious feature overhaul commit 2020-09-22 13:34:18 -04:00
Forstride 3faab8a5dd Removed small cattails, more tedious feature stuff 2020-09-21 18:31:42 -04:00
Forstride 4ec7e4147b Even more tedious feature crap 2020-09-21 13:48:23 -04:00
Forstride 69f3c81785 More tedious feature overhauls 2020-09-21 09:28:40 -04:00
Adubbz df13f6756d Change lavender fields to use BOPConfiguredFeatures 2020-09-21 12:10:52 +10:00
Adubbz ca237aed5a More workarounds for arbitrary limitations set by Mojang 2020-09-21 11:53:34 +10:00
Adubbz 7798e91fa8 (Hopefully) fixed tree generation in all biomes 2020-09-20 11:30:14 +10:00
Adubbz 1ecc8babf3 Fixed mystic grove trees 2020-09-20 11:23:15 +10:00
Adubbz 83f0b8d4be Fixed all biomes being classed as "ocean" 2020-09-19 19:44:25 +10:00
Adubbz 7970d1bfff Hacks 2020-09-19 19:10:20 +10:00
Adubbz cc72f61a57 More feature fixes 2020-09-19 18:53:19 +10:00
Adubbz 95347887f8 Moved to 1.16.3, register surface builders 2020-09-19 17:33:59 +10:00
Adubbz 045c804f14 Compiles 2020-09-07 12:10:07 +10:00
Forstride 5441279e4c Fixed sky colors 2020-08-25 17:44:44 -04:00
Adubbz ad5259af61 Misc fixes 2020-08-25 23:06:25 +10:00
Forstride 2bc36c12ff Fixed biome classes 2020-08-25 07:51:25 -04:00
Adubbz 5dcd185f9f Updated the boreal forest 2020-08-20 20:18:53 +10:00
Adubbz dd58816617 1.16.2 setup 2020-08-20 14:04:09 +10:00
Bobcorn Octopus 7fc9ffff02
Update zh_cn.json (#1662) 2020-08-07 14:38:03 +10:00
Masterlupo c8d26102e3
Update it_it.json (#1660) 2020-08-06 17:50:36 +10:00
Forstride 4477af35d6 Fixed some biomes using water creature entity classification instead of water ambient for fish spawns 2020-07-29 19:32:40 -04:00
Felipe Clariá 9d8db7917b
Update spanish translations (#1650) 2020-07-23 14:40:54 +10:00
Forstride 0b1c6fc3a6 Added a few custom paintings 2020-07-21 15:38:37 -04:00
Adubbz 8f4a43af31 Fixed server seed inconsistency. Closes #1644 2020-07-21 13:32:11 +10:00
Smollet777 b1dd655bb5
Update ru_ru.json (#1643) 2020-07-19 17:37:54 +10:00
Forstride 4aa598b660 Added black sand/sandstone, changed the Volcano Edge biome into Volcanic Plains 2020-07-18 13:30:48 -04:00
Forstride 0a08fa9694 Merge branch 'BOP-1.16.x-11.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.16.x-11.x.x 2020-07-17 13:15:31 -04:00
Felipe Clariá 18c8392af1
Update spanish translations (#1642) 2020-07-17 13:15:11 -04:00
Forstride acde71c51c Tweaked the Bog, Grassland, and Tundra biomes 2020-07-17 13:15:09 -04:00
Forstride bcd099261b Changed the Ghost Forest to a snowy biome called the Muskeg
(Be sure to delete your existing configs and use a new world, or you will likely run into issues!)
2020-07-17 09:46:19 -04:00
Forstride 0b54837832 Improvements to the Tropics and Grassland biomes 2020-07-16 09:18:00 -04:00
Masterlupo ed4257fb70
Italian localization (#1640) 2020-07-15 13:20:49 -04:00
Adubbz 6cfa2afe4b Added an option to disable bop nether generation 2020-07-15 12:04:17 +10:00
Adubbz 99eb540906 Fixed world type resetting to Biomes O' Plenty after customizing a Vanilla worldtype 2020-07-14 20:19:02 +10:00
Felipe Clariá 9f601850fc
Update spanish translations (#1639) 2020-07-14 20:05:43 +10:00
Forstride b9fbc0d347 Added sign textures for if/when we add them 2020-07-13 17:42:18 -04:00
Forstride ccdbf253bd Merge branch 'BOP-1.16.x-11.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.16.x-11.x.x 2020-07-13 11:49:51 -04:00
Forstride fb1412909f Made the Origin Hills sand/gravel generation slightly more authentic to Alpha, removed the Origin Beach (No longer needed) 2020-07-13 11:49:24 -04:00
Adubbz bb60c8d49d Mark 1.16 builds as beta 2020-07-13 10:48:45 +10:00
Forstride fd099a00d5 Removed water/lava ponds from the Origin Hills 2020-07-12 20:39:51 -04:00
Forstride 3156168833 Merge branch 'BOP-1.16.x-11.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.16.x-11.x.x 2020-07-12 08:46:08 -04:00
Forstride 3bc5724766 Re-added Origin Grass Blocks for the Origin Hills 2020-07-12 08:45:45 -04:00
Felipe Clariá 5e16d64a0a
Update spanish translations (#1638) 2020-07-11 19:29:26 -04:00
Forstride 43f17912de Renamed Undergarden to "Undergrowth" and Shadowlands to "Withered Abyss" 2020-07-10 14:51:25 -04:00
Adubbz a0174bf1f5 Update issue template versions 2020-07-10 23:33:12 +10:00
Adubbz 0bb50a2840 Fixed GuiEventHandler causing issues on servers 2020-07-10 23:30:44 +10:00
Forstride d504aebb96 Fixed supported plant types for Dried Salt blocks 2020-07-10 07:00:53 -04:00
Adubbz ff777917a1 Forge version bump 2020-07-10 19:27:42 +10:00
Adubbz b51d9a4dce Set bop worldtype by default 2020-07-10 19:17:36 +10:00
Adubbz 94dcd5f2d7 Skip the experimental complain screen 2020-07-10 18:41:04 +10:00
Forstride 29e6569f3c Flesh tendons, new maple/autumn leaf textures 2020-07-09 16:04:29 -04:00
Adubbz 6ea9a33bc1 Fleshy tweaks 2020-07-09 22:28:57 +10:00
Adubbz dc8964a9fd More fleshy things 2020-07-09 22:18:54 +10:00
Forstride b3931fc24b Fleshy things 2020-07-08 09:29:02 -04:00
Adubbz 6a95b28bc6 The bop worldtype now works on servers again 2020-07-08 22:49:38 +10:00
Forstride 563b2857a4 Various texture/biome tweaks 2020-07-08 06:50:30 -04:00
Adubbz be402fba7f Fixed biome provider preservation across world loads 2020-07-07 22:55:36 +10:00
Forstride e33525cd99 Added recipe for Nether Crystal Blocks, tweaked cattail textures 2020-07-07 06:23:02 -04:00
Forstride ac5527fd6c More Nether biome improvements 2020-07-06 02:37:51 -04:00
Forstride 24533be7c0 More Nether biome stuff 2020-07-05 13:46:53 -04:00
Forstride 2c703ba7b3 Nether biome stuff 2020-07-05 11:57:44 -04:00
Adubbz 9281f5df44 Fixed tree decay 2020-07-05 22:59:58 +10:00
Adubbz e31d46c2af Removed /bop tpbiome as Vanilla added its own command 2020-07-05 22:40:12 +10:00
Adubbz a2b377f2d5 Nether biome placement is now not-garbage 2020-07-05 22:30:55 +10:00
Adubbz d35095a2d0 Nether biomes now work 2020-07-05 22:01:06 +10:00
Forstride 965aa0551f Added Nether Crystals, removed Ash Blocks 2020-07-05 07:34:50 -04:00
Forstride 435ee8fbb0 Textures and stuff 2020-07-05 06:19:02 -04:00
Adubbz 8651b778d2 Boats suck thank you for coming to my TED talk 2020-07-05 20:11:34 +10:00
Adubbz 4d38d284a3 Block fixes 2020-07-05 20:04:48 +10:00
Adubbz bbcfb5e948 Fixed remaining compile errors 2020-07-05 19:37:00 +10:00
Adubbz 907934184b More fixes 2020-07-05 02:08:15 +10:00
Forstride ecbeb67551 Updated wall blockstates/models, added new block/item tags 2020-07-03 13:56:32 -04:00
Forstride 6a7ce041b5 Small fixes 2020-07-03 13:13:54 -04:00
Forstride a6db9423b9 Fixed up biome classes 2020-07-03 12:47:52 -04:00
Adubbz 2a246d57bc Mappings workarounds 2020-07-04 01:20:20 +10:00
Adubbz 814c9226b1 Updated gen features (except trees) 2020-07-04 00:22:59 +10:00
Adubbz ccf63a6bc0 Misc fixes 2020-07-03 23:49:05 +10:00
Adubbz 7f721ada2f Updated mappings and bumped versions 2020-06-26 12:46:10 +10:00
peehpeh fab38c4c35
Edited spanish translations (#1621) 2020-06-01 13:45:08 +10:00
Forstride b6dd8df42d Tweaked Dune Grass and Wanderer Music Disc textures 2020-05-28 20:21:36 -04:00
Adubbz 5f8430a78d
Attempt to bump required Forge version 2020-05-21 17:49:34 +10:00
Forstride b53a98852d Added stripped wood recipes (Closes #1612) 2020-05-18 18:38:28 -04:00
AtlaStar 3321b05f22
Forge 31.2.0 fixes (#1605)
* Changed environment for testing in eclipse

* Fixes issue for Forge 31.2.0

Changes the way SoundEvents are constructed as to no longer use depreciated call to super in 31.2.0

* Remove generated files

Some things got past BiomeOPlenty's .gitignore, simply removing them before submitting a PR

* Cleanup

Should resolve style issues in PR

Co-authored-by: D Melton <55304913+DMelton1221@users.noreply.github.com>
2020-05-16 18:15:44 +10:00
Adubbz 4919a112be
Bump forge version 2020-05-15 12:32:03 +10:00
peehpeh e28ab2ca8d
Updated spanish translations (#1599) 2020-05-14 15:14:28 -04:00
Forstride b2a9ab1bad Added block.properties for shader support (Doesn't seem to be working though? OptiFine might not have re-added support yet) 2020-05-04 09:03:44 -04:00
Adubbz 30a3e3fff0
Remove this too 2020-05-01 23:52:23 +10:00
Adubbz 4b44cdc955
Remove legacy server.properties workaround 2020-05-01 23:50:57 +10:00
SuperCoder79 7bca7e9707
refactor biome layers to match vanilla's new 1.15 system (#1571) 2020-04-21 21:23:54 +10:00
LoganDark 21ae14f67b
fix infinite loop in BushTreeFeature (#1589) 2020-04-21 21:23:31 +10:00
EnterFor 3d69190338
Update zh_cn.json (#1570)
* Update zh_cn.json

Hey, I fixed the error and completed some translations,
Can you merge it? Thank you in advance!

* Update zh_cn.json
2020-03-25 21:00:41 +11:00
Adubbz 46c9ba2441
Merge pull request #1568 from TrinityDevelopers/patch-1
Correct inconsistent tabs/spaces
2020-03-22 19:07:15 +11:00
Andrew Miller ae1a2277a7
Correct inconsistent tabs/spaces 2020-03-19 11:40:52 -05:00
Adubbz ca41c32588 Fix ModFeatures indentation 2020-03-15 11:18:02 +11:00
Adubbz fc61d76d61
Merge pull request #1565 from TelepathicGrunt/BOP-1.15.x-10.x.x
Register all BoP features now into Forge's feature Registry
2020-03-15 11:13:22 +11:00
alex sarnese b7b868bc22 Register all BoP features now into Forge's feature Registry 2020-03-08 16:18:37 -04:00
Forstride b74700e5be Renamed Pink/White Cherry and Jacaranda Leaves to "Blossoms" 2020-03-07 10:14:57 -05:00
Adubbz a2538d105a
Merge pull request #1564 from Smollet777/patch-1
Update ru_ru.json (root, tall wheat)
2020-03-06 11:55:23 +11:00
Smollet777 da652d9359
Update ru_ru.json (root, tall wheat) 2020-03-05 22:03:47 +02:00
Forstride 3ab58bceb7 Re-added roots 2020-03-03 08:20:02 -05:00
Forstride b58a3ff88e Removed passive mobs from the Dead Forest, changed biome dictionary tags for the Origin Hills/Orchard 2020-02-26 09:45:33 -05:00
Forstride c1dc42290e Fixed the Snowy Taiga not generating 2020-02-22 19:04:46 -05:00
Forstride 7e0f2b8894 Added OnlyIn client annotation for GUI Event Handler (Closes #1561) 2020-02-22 14:25:04 -05:00
Adubbz e1ea75fbaa Attempt to fix bad maven universal artifact 2020-02-22 22:57:17 +11:00
Adubbz ba648379a6 Added various config options 2020-02-22 21:55:55 +11:00
Adubbz e297832f5e Make the orchard a technical biome 2020-02-22 20:32:44 +11:00
Adubbz 38522884f2 Technical biomes can now be disabled. Fixed potential crashes when disabling certain biomes 2020-02-22 20:02:17 +11:00
Adubbz b591814b1f Island biomes can now be disabled 2020-02-22 18:32:41 +11:00
Forstride 8ef12c9856 Tweaked tall wheat texture and Prairie grass/foliage color 2020-02-20 00:22:20 -05:00
Forstride e9d75a5a4f Changed barley to tall wheat and made tweaks to the Pasture biome 2020-02-19 14:45:18 -05:00
Forstride 050344333f Improved mahogany leaf texture 2020-02-19 09:01:29 -05:00
Forstride 03fa5d5034 Fixed "CliamteLayer" typo 2020-02-19 00:56:08 -05:00
Forstride 6500381007 Fixed edge biome crash, set fallback biome for empty climates to ocean 2020-02-18 08:46:31 -05:00
Forstride 12277ce96f Tweaks to the Bog, Mangrove, and Tundra 2020-02-18 08:29:02 -05:00
Forstride 16d0e0f7a7 Removed Glowstone Grotto nether biome (NOTE: CONFIGS NEED TO BE DELETED OR YOUR GAME WILL CRASH ON LOAD!) 2020-02-18 07:21:12 -05:00
Adubbz 42680921e5 Vanilla biome weights are now configurable 2020-02-18 22:58:12 +11:00
Forstride efca80836c Added more tall grass to the Lush Grassland, made the Floodplains flatter 2020-02-18 01:43:56 -05:00
Forstride 10d94df8d7 Changed the Rainforest back to a subtropical biome
NOTE: This will affect existing worlds and cause chunk borders!  Additionally, please delete old configs before creating a new world!
2020-02-17 08:22:03 -05:00
Adubbz fa6dd5f3be Fixed structure generation. Closes #1531 2020-02-16 20:48:02 +11:00
Smollet777 974a1cc242
Update ru_ru.json (#1548)
dried salt
dead branch
2020-02-16 01:40:36 -05:00
E. Kim dea75e0f74
Update ko_kr.json (#1553)
* Update ko_kr.json

* Update ko_kr.json
2020-02-16 01:40:29 -05:00
Forstride e612de9359 Reduced the amount of brown mushrooms in the Mire. Removed ponds from the Prairie 2020-02-14 01:51:25 -05:00
Forstride da86c23c27 - Added Snow Golem spawns to the Alps
- Added Evoker spawns to the Ominous Woods
- Added Stray spawns to the Wasteland
- Removed witch huts from the Bog, Ghost Forest, and Marsh
2020-02-14 00:17:41 -05:00
Adubbz 15078fde5a Sort biome weights json alphabetically 2020-02-14 13:18:48 +11:00
Adubbz 8fbe69e163 Simplified standard biome weights config 2020-02-14 11:02:25 +11:00
Smollet777 f2222e3958
Update ru_ru.json (Fungal Jungle) (#1546) 2020-02-13 13:05:19 -05:00
Forstride 9190077145 Removed bee nests from the Prairie and Tropical Rainforest 2020-02-13 03:51:38 -05:00
Forstride ac218d5153 Allowed TNT to be crafted with white sand, and rabbit stew to be crafted with toadstools. Updated block/item tags 2020-02-13 01:36:40 -05:00
Forstride 2f99887eb7 Updated biome dictionary tags 2020-02-13 00:38:26 -05:00
Forstride c7ff6cc032 - Added Fungal Jungle overworld biome
- Added Huge Glowshrooms and Huge Toadstools
- Removed Fungi Forest Nether biome
- Re-added hostile mobs to the Tropics/White Beach biomes
- Cleaned up vanilla biome climate registration
2020-02-12 08:35:14 -05:00
Adubbz aa943081e3 Prefix modid in weights config for standard biomes, fallback on Ocean for empty climates 2020-02-11 21:04:36 +11:00
Adubbz 9a8f7727b4 Preliminary biome weight config file implementation 2020-02-11 19:32:56 +11:00
Adubbz 656399c37d Refactored biome registration 2020-02-11 18:13:08 +11:00
E. Kim 5006dc4d99
Create ko_kr.json (#1545) 2020-02-11 01:13:03 -05:00
Forstride e884a076cc Fixed the Wooded Badlands Plateau not generating 2020-02-10 00:37:25 -05:00
Forstride 3f59e898a8 Adjusted lush swamp/rainforest temperatures to be in line with other tropical biomes 2020-02-09 20:01:59 -05:00
Forstride b9aa7d96ca Tweaked the grass color of the Origin Hills 2020-02-09 06:39:35 -05:00
Forstride a18aeee5c7 Added branches for dead trees 2020-02-09 01:20:12 -05:00
Forstride 6f0d4fd3da Renamed Dried Sand to Dried Salt, tweaks to the Wasteland biome 2020-02-08 08:53:41 -05:00
Forstride d834a5c637 Improvements to the Ghost Forest and Mire 2020-02-07 00:23:14 -05:00
Forstride 7b0edb129e Added better edge casing for swamp <-> jungle biomes, minor biome tweaks 2020-02-06 23:00:06 -05:00
Forstride 165a8d5e63 Changed Origin Leaves/Sapling texture, minor biome tweaks 2020-02-06 21:22:32 -05:00
Forstride cf2fa10d2b Merge branch 'BOP-1.15.x-10.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.15.x-10.x.x 2020-02-06 08:13:31 -05:00
Forstride fb6f02dcb6 Updated door/trapdoor textures 2020-02-06 08:13:11 -05:00
Adubbz 4fff57deff
Merge pull request #1541 from Smollet777/patch-2
Update ru_ru.json (Ghost forest)
2020-02-06 19:46:18 +11:00
Smollet777 e45533ba5b
Update ru_ru.json (Ghost forest) 2020-02-06 10:45:35 +02:00
Forstride 4c4d3f7a8b Added Ghost Forest biome, moved Rainforest biome from Subtropical to Tropical climate, improvements to Mire biome 2020-02-06 00:44:14 -05:00
Adubbz f0b00091e7
Merge pull request #1540 from HJ-zhtw/HJ-zhtw-patch-1
Update zh_tw.json
2020-02-03 23:05:23 +11:00
__HJ f8f9b3de46
Update zh_tw.json
- Translated Sprout & Toadstool
2020-02-03 19:58:29 +08:00
__HJ d6a1e3aeca
Create zh_tw.json (#1539)
Here comes the translations of Traditional Chinese. Based on the Simplified, but I really reedited it "from head to toe."
It took me so much time to finish removing texts and resorting.

Highlights:
- Localized for Traditional Chinese
- Updated all of the strings, e.g. Removing the things that no longer exist, Adding the new things released, Resorting the strings according to en_us.

PS, The strings of Biome is untranlated for now as I'm exhausted and I have no idea where it would show. Anyway, those who want to translate it completely don't need to worry about that, like aforementioned, I've resorted all of the strings, just go translating!

Any sugesstion/correction would be appreciated.
2020-02-02 22:10:11 -05:00
Forstride 9d12744124 Removed lava lakes from the Poppy Field 2020-01-27 16:57:54 -05:00
Adubbz 1784846496
Merge pull request #1536 from HeresHavi/BOP-1.15.x-10.x.x
Added Poppy Fields nl translation
2020-01-25 12:30:43 +11:00
Rico ea68465148
Added Poppy Field biome 2020-01-25 02:14:32 +01:00
Adubbz 301eed4282 Updated to Minecraft 1.15.2 2020-01-25 00:40:20 +11:00
Smollet777 acd0a41d1e update ru_ru.json (poppy field) (#1534) 2020-01-23 08:39:05 -05:00
Forstride 6ea189b002 Tweaks to Poppy Field rarity/mob spawns 2020-01-23 07:00:37 -05:00
Forstride 0c87454b31 Added Poppy Field biome 2020-01-23 05:55:23 -05:00
Adubbz 1421f9ef8b Do biome dictionary and villager type registration earlier. Closes #1529 2020-01-19 10:42:23 +11:00
Forstride d116ef13ee Tweaks to the Mystic Grove 2020-01-06 14:35:51 -05:00
Smollet777 b64be5a89a Update ru_ru.json (#1527) 2020-01-07 01:11:42 +11:00
Rico 49e6528ee5 Dutch Localization (#1525) 2020-01-03 15:35:24 +11:00
Forstride eada57a419 Added villager types for remaining biomes 2020-01-02 03:08:07 -05:00
Forstride df98950041 Minor biome tweaks 2020-01-01 20:07:52 -05:00
Adubbz 9a35bb4915 Fixed villager types. Closes #1519 2020-01-01 19:46:05 +11:00
Adubbz ad525e7987 Fixed nether fortress generation. Closes #1523 2020-01-01 19:22:19 +11:00
Adubbz f9d4959bc8 Fix huge mushroom generation in BOP biomes. Note that this is still broken in Vanilla biomes due to a Forge bug. The Forge bug is present with or without BOP installed. 2020-01-01 17:15:49 +11:00
Adubbz 01eabf4aab Fixed recursion crash in some generation features 2020-01-01 09:55:36 +11:00
Adubbz 883717a7c1 Mappings overhaul 2019-12-31 18:31:48 +11:00
Forstride b89bf2e58b Gave Rainbow Leaf coloration a wavy pattern 2019-12-30 12:39:27 -05:00
Forstride 79ff303edc Added bees to the Rainbow Valley 2019-12-30 03:06:01 -05:00
Forstride fbc3c11a07 Added Rainbow Birch trees and Rainbow Valley island biome 2019-12-29 23:20:12 -05:00
Forstride 6fbf2bc527 Replaced the Jacaranda leaves in the Highland Moor with Violets 2019-12-29 20:47:30 -05:00
Forstride bf9ac947e4 Fixed big oak trees not generating 2019-12-28 23:44:31 -05:00
Adubbz ce2a82d860 Updated issue templates for 1.15 2019-12-28 21:12:54 +11:00
Smollet777 1e519393f1 Update ru_ru.json (#1520)
Removed End biome stuff
2019-12-28 21:09:24 +11:00
Adubbz 80e1d30c29 Fixed boats. Closes #1518 2019-12-28 12:38:34 +11:00
Adubbz 93aa27cd66 Water plants still suck 2019-12-28 12:05:07 +11:00
Adubbz a3c211c953 Fix water plants 2: Electric boogaloo. Closes #1516 2019-12-28 10:50:53 +11:00
Adubbz 62c3a88b65 Mark doors and trapdoors as noOcclusion. Closes #1517 2019-12-28 09:48:12 +11:00
Forstride 3ae21f3370 Removed squid spawns from normal biomes 2019-12-27 10:43:20 -05:00
Forstride 5d602bcc6b Added bees to various biomes 2019-12-27 09:10:22 -05:00
Adubbz 6abee962d5 Fixed water plant generation 2019-12-27 18:39:58 +11:00
Adubbz e209b53009 Fixed trees growing from saplings 2019-12-27 17:55:04 +11:00
Adubbz fda42522f1 Fixed tpbiome comman 2019-12-27 09:27:35 +11:00
Forstride 979b540b8b Lowered lilypad spawn frequency 2019-12-26 12:56:30 -05:00
Adubbz 72badaaeff Fixed overworld biomes generating in the nether 2019-12-26 20:58:50 +11:00
Adubbz 29941fa176 Change biomes to use Mojang's builder model 2019-12-26 20:47:18 +11:00
Adubbz 1fb942549c Update curse gradle 2019-12-26 19:53:01 +11:00
Adubbz 25225a82e7 Fixed leaves occlusion 2019-12-26 19:50:59 +11:00
Adubbz f441328158 Mappings updates 2019-12-26 19:39:05 +11:00
Forstride 7b727bfbcf Fixed block rendering types 2019-12-26 02:14:28 -05:00
Adubbz cd43eceda6 Version bump 2019-12-26 17:43:41 +11:00
Adubbz b0d6aaa504 Runs 2019-12-26 17:42:37 +11:00
Forstride cf8c7233d4 Oops 2019-12-26 00:51:05 -05:00
Adubbz b6513a05b1 Now compiles 2019-12-26 16:34:54 +11:00
Adubbz c509ad4f73 Finished updating biomes 2019-12-26 15:58:02 +11:00
Adubbz 7d8f604f71 Fixed gen layers 2019-12-26 15:08:26 +11:00
Forstride e7fa9f2959 Tree stuff 2019-12-25 22:31:52 -05:00
Adubbz fe14627fc1 Merge branch 'BOP-1.15.x-10.x.x' of github.com:Glitchfiend/BiomesOPlenty into BOP-1.15.x-10.x.x
# Conflicts:
#	src/main/java/biomesoplenty/common/block/trees/EtherealTree.java
#	src/main/java/biomesoplenty/common/world/gen/feature/BOPBiomeFeatures.java
2019-12-26 13:48:41 +11:00
Adubbz 36189b68e3 More tree stuff 2019-12-26 13:43:42 +11:00
Forstride e99690d60f Removed End biome stuff 2019-12-25 18:44:22 -05:00
Adubbz d6ae490f4b Fixes 2019-12-26 10:14:01 +11:00
Adubbz 5bd54e57d3 Mass fixes 2019-12-25 19:38:59 +11:00
Adubbz 877aa321ac More mappings 2019-12-25 09:24:33 +11:00
Adubbz 1d2a4a57c6 Many fixes 2019-12-25 00:54:37 +11:00
Adubbz ef64a3a2cc Various mappings, some initial fixes 2019-12-24 22:25:03 +11:00
Adubbz a8a695afc1 Setup support for custom mappings 2019-12-24 21:08:51 +11:00
Adubbz ea9e47b29d Updated for latest MCP mappings 2019-12-21 22:58:29 +11:00
Adubbz 985d240bbe Fixed compile error 2019-12-14 21:44:32 +11:00
thedarkcolour 1a37569034 Optimized tpbiome command by using ExecutorService (#1504) 2019-12-14 18:40:58 +11:00
Forstride 7c4f41c6db
Merge pull request #1498 from BlackNightDragon/BlackNightDragon-patch-2
Update ru_ru.json
2019-12-02 07:22:10 -05:00
BlackNightDragon 7725f26752
Update ru_ru.json
Added a missing strings and fix other cosmetic things.
2019-11-24 03:22:14 +07:00
BlackNightDragon 0c360e4dc5
Update ru_ru.json
Added a missing strings and fix other cosmetic things.
2019-11-24 03:16:53 +07:00
Adubbz 1ad433a6b4
Merge pull request #1495 from BlackNightDragon/BlackNightDragon-patch-2
New russian translation
2019-11-22 10:55:44 +11:00
BlackNightDragon 55c0743967
Create ru_ru.json 2019-11-19 22:56:56 +07:00
Adubbz ebbb29db19
Merge pull request #1490 from El-Limbo/patch-3
Massive Spanish Translation (AR)
2019-11-10 19:20:25 +11:00
Adubbz 13ce1c5193
Merge pull request #1491 from El-Limbo/patch-4
Massive Spanish Translation (MX)
2019-11-10 19:20:18 +11:00
Adubbz 6248e6a7c2
Merge pull request #1489 from El-Limbo/patch-2
Massive Spanish Translation (Spain)
2019-11-10 19:20:08 +11:00
El-Limbo a8bbdd108b
Create es_mx.json
And the méxico spanish lang file
2019-11-08 22:52:34 -03:00
El-Limbo aad0108663
Create es_ar.json
Argentina Spanish Lang File
2019-11-08 22:50:00 -03:00
El-Limbo c222e051c0
es_es Lang File
Europe Spanish Lang File
2019-11-08 22:09:20 -03:00
Forstride ea6b3ed4f8
Updated Discord link in README.md 2019-10-22 13:40:23 -04:00
Adubbz 998efb6aa5 Update to Forge RB, update MCP mappings 2019-10-04 19:46:14 +10:00
Adubbz 99648cb276
Merge pull request #1466 from Ilos/patch-2
update german translation to match vanilla names
2019-09-15 20:21:38 +10:00
Forstride ba79043436 Fixed mangrove root/reed/watergrass loot tables 2019-09-06 17:36:26 -04:00
Forstride 7b584af533 Changed reeds, watergrass, and mangrove roots into proper double tall blocks. NOTE: This will cause issues in existing worlds! Update at your own risk! 2019-09-01 15:15:09 -04:00
Ilos 7e9cdf12c5
update german translation to match vanilla names 2019-08-30 18:15:17 +02:00
Forstride 8cfe54f4f9 Removed witch huts from the Mangrove and Highland Moor 2019-08-30 07:42:44 -04:00
Forstride 33d17288e1
Merge pull request #1465 from Ilos/patch-1
Create de_de.json
2019-08-29 21:32:38 -04:00
Ilos 273953e6e5
Create de_de.json
add german translation
2019-08-30 03:16:45 +02:00
Forstride fed9774a46 Optimized class imports 2019-08-28 07:30:51 -04:00
Forstride 7ea2605756 Changed blue hydrangeas and goldenrods into tall flowers (NOTE: This may cause issues in existing worlds! Update at your own risk!) 2019-08-27 14:06:48 -04:00
Forstride 7c82ce7a42 Made poplar tree generation look slightly more natural 2019-08-25 05:16:15 -04:00
Forstride aaa1b7c337 Fixed big trees not generating alternate leaves 2019-08-24 08:11:36 -04:00
Forstride da78fdd52d Added a deeper middle block layer for the Alps and Volcano biomes, fixed big trees not growing on non-soil blocks, fixed ash/mud/flesh blocks not having proper shading (At the expense of not sinking into the blocks) 2019-08-24 06:49:25 -04:00
Forstride 48aa602981 Prevented non-opped players from using the tpbiome command (Closes #1459) 2019-08-24 04:28:08 -04:00
Forstride ed7b19ba9e Changed texture folder names to match vanilla (NOTE: This will break existing texture packs with BOP support!) 2019-08-23 18:33:47 -04:00
Forstride 48082e8a54 Fixed sparse trees not being sparse, and huge trees in the Mystic Grove being too huge 2019-08-23 13:17:13 -04:00
Adubbz a8ef891b37 General system stability improvements to enhance the user's experience. Closes #1439 2019-08-23 22:09:07 +10:00
Adubbz fa5fbc23c8 Fixed rare biome generation. Closes #1438 2019-08-23 21:02:37 +10:00
Forstride 4fc7f77f34 Fixed trees not growing around ground foliage (Closes #1461) 2019-08-23 02:23:48 -04:00
Forstride 5b025fb267 Added missing smooth white sandstone recipe 2019-08-23 01:30:10 -04:00
Forstride b9dcbf6d08 Updated Forge to 28.0.55, improved mod logo 2019-08-21 09:21:24 -04:00
Forstride 84e8e21297 Added Jacaranda trees to the vanilla Flower Forest, added big Jacaranda tree variant to Lavender Field/sapling 2019-08-21 05:06:29 -04:00
Forstride 0703f0f63d Changed order that blocks are registered for cleaner creative menu 2019-08-20 05:57:02 -04:00
Forstride 37b8e6615e Fixed Ethereal wood map colors 2019-08-20 01:52:35 -04:00
Forstride f72b585e2a Tweaked various biome weights (WARNING: This update will cause abrupt chunk borders in existing worlds! Update at your own risk!) 2019-08-13 03:34:44 -04:00
Forstride f322a68c92 Removed Lily of the Valley from the Prairie 2019-08-13 00:13:07 -04:00
Forstride 7c3340de32 Lowered the amount of trees in the Snowy Coniferous Forest/Snowy Forest, tweaked how Orchards generate within Plains to better match vanilla 2019-08-12 22:32:29 -04:00
Forstride 92c5d14a74 Added Fir/Snowy Fir Clearing and Temperate Rainforest Hills sub-biomes, renamed Moor to Highland Moor, made a separate climate for the Wasteland, allowed Deep Warm Ocean to generate within Warm Oceans (NOTE: This update will cause abrupt chunk borders in existing worlds! Update at your own risk!) 2019-08-11 11:02:56 -04:00
Forstride 5f238f2031 Use white sand instead of normal sand for sediment in the Mystic Grove 2019-08-11 05:15:53 -04:00
Forstride c3be92173c Tweaked cypress tree generation 2019-08-11 05:04:57 -04:00
Forstride 4552aa716d Added large versions of the yellow/orange autumn and maple trees 2019-08-11 02:43:19 -04:00
Forstride 378266175a Lush Swamp should be in Subtropical climate, not Wet Temperate. Adjusted Mangrove and Bayou weights (NOTE: This update will cause abrupt chunk borders in existing worlds! Update at your own risk!) 2019-08-10 23:47:38 -04:00
Forstride f5309bae51 Removed Dry Plains biome, moved Lush Swamp back to the Wet Temperate climate, renamed Glowstone Cavern to Glowstone Grotto (NOTE: This update will cause abrupt chunk borders in existing worlds! Update at your own risk!) 2019-08-10 23:31:08 -04:00
Forstride 552e3511aa Updated BOP icon, fixed Origin Hills underwater fog color 2019-08-10 22:16:31 -04:00
Forstride f8ce3f8055 Improved poplar tree generation 2019-08-10 08:19:22 -04:00
Forstride 1c6b1f66c4 Changed default Wet Temperate climate temperature to Cool 2019-08-10 06:21:25 -04:00
Adubbz 18946ec9ec Don't convert biomes already registered to a climate via our api 2019-08-10 20:15:51 +10:00
Adubbz 786d0416c3 Fixed mod version. Closes #1422 2019-08-10 19:42:27 +10:00
Adubbz 76e1664844 Copy modded biomes to our worldtype. Closes #1428 2019-08-10 19:16:51 +10:00
Forstride a4e70ccc71
Merge pull request #1448 from Corail31/BOP-1.14.x-9.x.x
fix #1446 & add dispenser behavior for bop boats
2019-08-10 04:27:55 -04:00
Corail31 da98209404 fix #1446 & add dispenser behavior for bop boats 2019-08-10 10:11:24 +02:00
Forstride cebf4dea75 Improved Cherry Log textures 2019-08-10 04:11:07 -04:00
Adubbz 0e19ff4312 Merge branch 'BOP-1.14.x-9.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-08-10 16:17:03 +10:00
Adubbz 073cd6fbb3 Put config loading back in construction. Closes #1447 2019-08-10 16:16:39 +10:00
Forstride 66d0c6e5c5 Improved the Bayou biome, allowed all BOP biomes to be spawned in 2019-08-10 01:29:48 -04:00
Adubbz d664cd9e1e Perform registration during the registration events. Closes #1444 2019-08-10 13:35:50 +10:00
Adubbz f51511b738 Updated to Forge 28.0.45... It works fine? 2019-08-10 12:51:40 +10:00
Forstride 6397ced587 Merge branch 'BOP-1.14.x-9.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-08-06 16:32:47 -04:00
Forstride f9d74389c1 Fixed a potential crash caused by big oak trees, tweaked a few textures 2019-08-06 16:32:22 -04:00
Forstride ada8e9df61
Merge pull request #1437 from Waterrail/patch-1
Update pl_pl.json
2019-08-06 11:40:34 -04:00
Waterrail eef914cbdc
Update pl_pl.json
Poprawiono niektóre nazwy, by były bardziej spójne z vanilla Minecraft
2019-08-06 17:37:18 +02:00
Forstride 4f1a1276e4 Various biome tweaks 2019-08-06 11:14:28 -04:00
Forstride fd082d19c1 Tweaked mud generation in Mangroves 2019-08-05 23:50:06 -04:00
Forstride 3450b516c1 Changed beach biomes for vanilla biomes, added the Mangrove as a beach biome for tropical biomes, moved the Lush Swamp to the Warm Temperate climate (NOTE: This can cause abrupt chunk borders in existing worlds! Update at your own risk!) 2019-08-05 23:31:54 -04:00
Forstride 09040388a0 Added BOP features to various vanilla biomes (NOTE: This will also affect the Default world type. Load existing vanilla worlds at your own risk!) 2019-08-05 19:56:06 -04:00
Forstride 9d79c9a2af Allowed Sprouts to be placed in Flower Pots, made Toadstools more common 2019-08-05 05:10:42 -04:00
Forstride 7688e3ff82 Work on End biomes 2019-08-05 01:37:45 -04:00
Forstride f334573f3c Removed Poison Puffs 2019-08-04 23:51:11 -04:00
Forstride 859d9dd05d "Fixed" Flowering Oak leaf model in Fast graphics 2019-08-04 23:34:08 -04:00
Forstride dffbbc8f1b Finished up Nether biomes, which now generate 2019-08-04 08:53:48 -04:00
Adubbz d7e36a8ac0 Added support for Nether biomes 2019-08-04 22:04:37 +10:00
Forstride 689c3d5f00 More work on Nether biomes 2019-08-04 04:38:59 -04:00
Forstride ec0977da4d More work on Nether biomes, tweaks to the Tundra and Bog biomes 2019-08-04 00:26:18 -04:00
Forstride f303021c7b Changed Nether Sprouts into regular Sprouts and allowed them to grow on any block with a solid top 2019-08-03 02:45:56 -04:00
Forstride 2615f757fc Started working on Nether biomes/End biomes (Currently not available), fixed Polish localization file name (Closes #1432) 2019-07-31 20:08:21 -04:00
Forstride 4de28da3b0
Merge pull request #1427 from Corail31/BOP-1.14.x-9.x.x
bop boats now extends BoatEntity
2019-07-29 21:10:38 -04:00
Corail31 ce1cdff408 bop boats now extends BoatEntity 2019-07-30 02:17:25 +02:00
Forstride 5193e0e67c
Merge pull request #1426 from Corail31/BOP-1.14.x-9.x.x
fix boat inputs allowing to move
2019-07-29 14:07:52 -04:00
Corail31 c341b1d687 adapt without event 2019-07-29 14:04:20 +02:00
Corail31 d7412bb750 fix boat inputs allowing to move
and also removes the import in the api
2019-07-29 12:48:34 +02:00
Adubbz 8c4c64d559
Merge pull request #1425 from Corail31/BOP-1.14.x-9.x.x
fix custom boats
2019-07-29 18:15:30 +10:00
Corail31 184761785c fix custom boats 2019-07-29 10:12:20 +02:00
Forstride c6e1abbe14 Fixed Flowering Oak Sapling loot table (Closes #1424) 2019-07-29 02:08:29 -04:00
Forstride 0fe5beb957 Improved reed/cattail texture 2019-07-29 01:36:00 -04:00
Forstride 5f09ca000d Fixed flammability for foliage/wood blocks and removed unnecessary classes 2019-07-29 00:10:48 -04:00
Forstride 1d467724df Added Polish translation (Made by DarkKnightComes) 2019-07-28 22:08:43 -04:00
Forstride 02404340cc Fixed plant sustainability for white sand/mud, fixed cattails being able to grow on top of each other 2019-07-28 06:38:55 -04:00
Forstride 19c5032dc4 Added foxes to our biomes because I somehow forgot to 2019-07-28 05:11:16 -04:00
Forstride 3a4458a666 Started working on re-adding boats (Still broken, boat items spawn oak boats for the time being) 2019-07-27 21:14:29 -04:00
Forstride 7a560a8fd9 Allowed BOP saplings/flower/mushrooms to be placed in flower pots, added suspicious stew effects for BOP flowers, added makeshift vanilla sign recipes using BOP planks 2019-07-27 06:39:31 -04:00
Forstride 5ea3b0996e Allowed BOP logs to be stripped (Closes #1394), and saplings/leaves/plants to be composted 2019-07-27 01:12:22 -04:00
Forstride 4e33f53f8a Fixed sounds/tool effectiveness for various blocks, renamed block/item classes to match 1.14 naming convention 2019-07-26 06:57:24 -04:00
Forstride b9eb540c98 For some reason the last commit didn't fully work? 2019-07-25 18:38:52 -04:00
Forstride 3efcf8059f Removed tiny cacti and mud ball entity, fixed stack sizes for mud balls/music disc 2019-07-25 18:37:45 -04:00
Adubbz 89783dc592
Merge pull request #1420 from Solid-Block/patch-1
Update zh_cn.json
2019-07-24 17:03:19 +10:00
SolidBlock a3e8f1f37b
Update zh_cn.json
fixed mistakes 修复错误
2019-07-24 14:14:13 +08:00
Forstride 0c47a3dac0 Merge branch 'BOP-1.14.x-9.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-07-24 01:59:08 -04:00
Forstride 57d24ab3a6 Fixed reed/watergrass/mangrove root item placement (Again...), removed sweet berry bushes from Orchards 2019-07-24 01:58:38 -04:00
Adubbz b6f15e77d3 Update Forge and MCP mappings 2019-07-23 11:44:08 +10:00
Forstride 6f9d9ffd56 Added bamboo to Cherry Blossom Grove and Tropics 2019-07-22 02:40:59 -04:00
Forstride 20778d8633 Fixed advancements, temporarily removed boat/sign files 2019-07-21 23:33:50 -04:00
Adubbz 89cc842ba0 Updated to 1.14.4 2019-07-22 10:42:00 +10:00
Adubbz 5593a6dd75
Merge pull request #1418 from dmitrij-drandarov/BOP-1.14.x-9.x.x
Update to latest mappings (20190721) and forge version (1.14.3)
2019-07-21 22:18:05 +10:00
Dmitrij Drandarov 94f768b689 Update to latest mappings (20190721) and forge version (1.14.3) 2019-07-21 14:14:25 +02:00
Adubbz 1b38a12465 Bump Forge version 2019-07-04 19:03:13 +10:00
Forstride e3d20e621b
Merge pull request #1408 from XuyuEre/patch-6
Update zh_cn.json
2019-07-02 16:54:35 -04:00
xuyu0v0 a0f2a6fd95
Update zh_cn.json
Add new Translation.
2019-07-02 16:52:58 -04:00
Adubbz ebd9b2c102 Workaround server.properties being overwritten by introducing a config option for using the BoP worldtype on servers 2019-07-02 01:13:43 +10:00
Forstride 1e1a23b5cd Allowed fir, redwood, and umbran saplings to grow 2x2 trees 2019-06-28 16:16:40 -04:00
Forstride 0b8f81b801 Merge branch 'BOP-1.14.x-9.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-06-28 09:40:41 -04:00
Forstride 50b8ac79ca Added villages to BOP biomes 2019-06-28 09:38:31 -04:00
Adubbz 93f4005907 Fix issue template ordering 2019-06-28 13:53:11 +10:00
Adubbz c0aa1d6709 Updated issue templates 2019-06-28 13:51:52 +10:00
Forstride 648723ea6b Updated a few additional textures 2019-06-27 22:42:49 -04:00
Forstride 1af555f8b2 Updated Ethereal wood textures 2019-06-27 21:30:38 -04:00
Adubbz 36b2a2170e Added support for the bamboo forest 2019-06-28 11:12:07 +10:00
Forstride 51b1d5dfb1 Switched to DefaultBiomeFeatures for common vanilla features in biomes 2019-06-27 16:52:52 -04:00
Forstride f3be863e22 Added block drop loot tables 2019-06-26 07:23:43 -04:00
Forstride 12e55d9983 Added mud brick/white sandstone walls, cut/smooth sandstone slabs, and smooth sandstone stairs 2019-06-25 19:57:27 -04:00
Forstride 7d459d7cb9 Fixed fence data tags, renamed music disc stuff to match vanilla 2019-06-25 19:02:54 -04:00
Forstride 8d9cbadd83 Added sweet berry bushes to our biomes 2019-06-25 12:11:02 -04:00
Forstride bab7465770 Added new vanilla flowers to our biomes, added JSON files for new white sandstone/mud brick stuff 2019-06-25 08:24:21 -04:00
Adubbz 3bc801338a Updated to 1.14.3 2019-06-25 18:58:34 +10:00
Adubbz 9fdd228178 All current compile errors fixed 2019-06-25 18:33:02 +10:00
Adubbz 47ba320312 Updated commands. Only trees remain 2019-06-25 17:56:34 +10:00
Adubbz c54f209808 Various fixes 2019-06-25 17:20:36 +10:00
Adubbz 14a709ee00 Finished updating biomes 2019-06-25 16:47:04 +10:00
Adubbz 28bf6c0bec Many biome fixes 2019-06-25 15:33:43 +10:00
Adubbz 0f435c7f93 Finished off worldgen (except trees) 2019-06-25 13:48:39 +10:00
Adubbz e98567ca4f Merge branch 'BOP-1.14.x-9.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-06-16 18:21:59 +10:00
Adubbz c75ac189b0 Update mcp mappings 2019-06-16 18:21:36 +10:00
Forstride 4b8069139c Added texture update textures as the defaults 2019-06-14 01:20:02 -04:00
Adubbz 567b505439 Fixes 2019-06-14 00:00:59 +10:00
Adubbz 5b42883511 GenLayers updated, misc other stuff 2019-06-13 21:30:50 +10:00
Adubbz 9ffb7c5e5f Merge branch 'BOP-1.13-8.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-06-13 17:37:18 +10:00
Adubbz cde4ad9871 Biome updates 2: Electric Boogaloo 2019-06-13 17:31:07 +10:00
Adubbz be037ab704 First pass of biome updates 2019-06-13 16:07:49 +10:00
Adubbz 23d673cbb0 Updated blocks 2019-06-13 15:08:11 +10:00
Forstride 23ad4b22dd Changed Cold Desert to not have snow, added missing override annotations 2019-06-13 00:49:50 -04:00
Adubbz eb7114b90e Merge branch 'BOP-1.13-8.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.14.x-9.x.x 2019-06-13 12:58:48 +10:00
Forstride 82f4c5adf6 Various biome tweaks 2019-06-11 02:23:23 -04:00
Forstride 25025fa0ff Tweaked flower generation for certain biomes 2019-06-09 11:00:30 -04:00
Forstride 3a8abc08f0 Added Lush Grassland biome 2019-06-09 05:20:31 -04:00
Forstride b8ea059b65 Changed dead tree generation, increased cattail amounts in biomes that have them 2019-06-08 05:44:16 -04:00
Forstride dbfe3a5c74 Fixed placement check for giant trees in the Mystic Grove 2019-06-08 00:57:14 -04:00
Adubbz 9fa38b93a5 Fork off for 1.14 2019-06-08 13:59:20 +10:00
Forstride 55f9e9a1ee Various biome tweaks 2019-06-07 01:20:52 -04:00
Forstride 5fe2002a55 Started experimenting with End biomes (Not currently available yet) 2019-06-05 23:04:26 -04:00
Forstride 6935d814eb Fixed a crash caused by bramble blocks, various biome tweaks 2019-06-05 04:23:07 -04:00
Forstride ee7eb08ce3 Various biome tweaks 2019-06-04 21:31:59 -04:00
Forstride cd844584af Prevented non-overworld dimensions from using BOP's overworld biome provider 2019-06-04 20:35:54 -04:00
Forstride 56d4fee422 Various biome tweaks 2019-06-04 13:36:28 -04:00
Forstride cf568cc2ab Various biome tweaks 2019-06-04 10:26:27 -04:00
Forstride 3881e7731a Various biome tweaks 2019-06-04 00:02:18 -04:00
Forstride be568c0612 Fixed the bases of fir/redwood trees not generating properly. Various biome tweaks 2019-06-03 20:24:08 -04:00
Forstride 4370284949 Renamed the Dead Swamp to Mire, renamed the Highland Moor to Moor, various biome tweaks 2019-06-03 08:06:04 -04:00
Forstride 545f4bfb6c Changed the Orchard biome to a sub-biome of the vanilla Plains (Replacing the Forest as its sub-biome), improved the Grove biome, prevented Plains/Forest islands from generating within oceans, added the vanilla Desert as an edge biome of the Wasteland 2019-06-02 20:19:23 -04:00
Forstride 15692a62ce Cleaned up unused class imports 2019-06-02 05:03:53 -04:00
Forstride 8609474464 Updated issue templates 2019-06-01 14:29:26 -04:00
Forstride fc5ced7b8e
Update question.md 2019-06-01 14:21:17 -04:00
Forstride 744e7533a1
Update question.md 2019-06-01 14:19:41 -04:00
Forstride fa07ef85d6
Update question.md 2019-06-01 14:19:20 -04:00
Adubbz e0b2228052 Fixed server crashing on boot. Closes #1401 2019-06-01 18:12:11 +10:00
Forstride 6e3d1abf0e Various biome tweaks 2019-05-31 16:38:15 -04:00
Forstride cf097bf273 Tweaks to the Bog biome 2019-05-31 08:08:32 -04:00
Forstride 15a9d26d97 Removed the Bog Mire sub-biome, renamed the Bog biome to Dead Swamp, added a new Bog biome based on a cranberry bog 2019-05-31 01:46:51 -04:00
Forstride 6be2d7d8b8 Added natural carved pumpkins/jack-o-lanterns to the Pumpkin Patch biome. Removed unused textures 2019-05-30 16:58:36 -04:00
Forstride 07e23ec0ff Added Pumpkin Patch sub-biome to the Seasonal Forest 2019-05-29 20:56:49 -04:00
Forstride a28abaa24b Biome tweaks 2019-05-27 19:55:15 -04:00
Forstride 8408bf093e Fixed some improper biome tags 2019-05-26 19:15:39 -04:00
Forstride d9be67967d Added Dry Plains biome 2019-05-26 17:33:04 -04:00
Forstride 87d4015726
Update README.md 2019-05-26 04:14:50 -04:00
Forstride 1cd07cb9cf Added missing entities to various biomes 2019-05-26 01:05:14 -04:00
Forstride 1cbe6fbfd9 Allowed palm saplings to grow on sand, Tropics/Volcano tweaks 2019-05-25 20:00:54 -04:00
Forstride 264cec0e33 Fixed water plant itemblock not placing the right block 2019-05-25 18:56:36 -04:00
Forstride ec19709dd6 Various biome improvements, allowed players to spawn in more biomes 2019-05-25 15:31:39 -04:00
Forstride b5318a9126
Merge pull request #1398 from XuyuEre/patch-4
Create zh_cn.json
2019-05-25 14:00:54 -04:00
xuyu0v0 acb363cd40
Create zh_cn.json 2019-05-25 13:43:36 -04:00
Forstride ff0b701098 Fixed willow vine flammability, beaches in Cold Deserts, and various grass/foliage colors 2019-05-25 05:28:12 -04:00
Forstride 142ff6680f Added Igloos/Woodland Mansions to certain biomes 2019-05-25 04:36:50 -04:00
Adubbz 71e656536c Update issue templates 2019-05-25 18:17:56 +10:00
Adubbz f1ac1e8911 Apparently this didn't get pushed 2019-05-25 15:35:03 +10:00
Adubbz 5116a18791 Renaming access transformer 2019-05-25 15:24:40 +10:00
Adubbz f6423c90bb Do curseforge task earlier 2019-05-25 13:53:12 +10:00
Adubbz 2811e8f34e changelog_file, not changelog 2019-05-25 13:49:23 +10:00
Adubbz 9f067691c3 Actually set the curse api key... 2019-05-25 13:43:58 +10:00
Adubbz 0a1cc9b45b Added mainArtifact to curseforge gradle section 2019-05-25 13:36:24 +10:00
Adubbz 077354255b Try this instead 2019-05-25 13:28:35 +10:00
Adubbz f4432d518c Prepare for alpha builds 2019-05-25 13:18:22 +10:00
Adubbz a3c914fa48
Merge pull request #1383 from DaDodger/patch-1
pt_br cleanup
2019-05-25 13:00:53 +10:00
Forstride d0caff2385 Biome tweaks 2019-05-24 22:45:09 -04:00
Forstride b1bf9fabba Added smelting recipes 2019-05-24 22:20:03 -04:00
Forstride 034ea250af Added vanilla blocks to our tag JSONs for the time being until Forge fixes tags 2019-05-24 22:04:20 -04:00
Adubbz ebe61f8930 Revert gradle update 2019-05-25 11:25:12 +10:00
Adubbz ae14dd18e7 Fixed entities 2019-05-25 11:09:26 +10:00
Adubbz 43f4c6c2a7 Updated Forge 2019-05-25 10:31:41 +10:00
Forstride cb522f2675 Fixed flammability for our blocks 2019-05-24 20:18:12 -04:00
Forstride a363ea6b59 Re-added Mangrove 2019-05-24 18:47:51 -04:00
Forstride 7250c168c6 Finished Volcano biome 2019-05-24 16:59:54 -04:00
Forstride b5e6671d1b Island stuff 2019-05-24 07:02:52 -04:00
Adubbz 93dfc32901 Remove debug spam 2019-05-24 19:42:26 +10:00
Adubbz 63389cb46d Generate islands before deep oceans 2019-05-24 19:41:53 +10:00
Forstride af85dd641b Durr 2019-05-24 05:26:00 -04:00
Adubbz a53a6eb2cb Hurr 2019-05-24 19:00:17 +10:00
Adubbz c7720fffb6 Re-added island biomes 2019-05-24 18:48:24 +10:00
Forstride f1fe7a745c River stuff (Too lazy to write a proper commit description) 2019-05-24 01:56:19 -04:00
Adubbz c65d54116c Added support for custom river biomes 2019-05-24 15:35:17 +10:00
Forstride 44795b0e61 Assigned beach biomes to our biomes, generate oceans by climate 2019-05-24 01:20:02 -04:00
Adubbz bb6f283f41 Oops 2019-05-24 14:59:16 +10:00
Adubbz f7e91937d8 Setup for climate-based ocean biomes 2019-05-24 14:51:58 +10:00
Adubbz c739135516 Ensure the beach biome id is actually -1 when the biome is null 2019-05-24 14:27:46 +10:00
Adubbz 5bffc07653 Adjust this too 2019-05-24 14:22:50 +10:00
Adubbz b29ab83903 Fix beach default 2019-05-24 14:22:06 +10:00
Adubbz b68c9522a6 Added support for custom beach biomes 2019-05-24 14:04:04 +10:00
Forstride dfe0c2debf Biome tweaks 2019-05-23 23:51:20 -04:00
Adubbz e3f288ecc6 Added support for custom edge biomes 2019-05-24 13:34:33 +10:00
Adubbz 8ba40c27fd Don't create an instance of BlockWaterTopPlant inline for registration. Fixes a crash on boot 2019-05-24 11:15:48 +10:00
Forstride e004478e3e Re-added reeds and watergrass 2019-05-23 18:26:07 -04:00
Forstride 2e9c5178b2 Biome tweaks 2019-05-23 01:10:10 -04:00
Forstride 0c97c19c1d Tweaked sub-biome rarity 2019-05-22 16:04:48 -04:00
Forstride fbd92d83d5 Allowed the player to spawn in BOP biomes 2019-05-22 02:46:35 -04:00
Forstride 92809f3092 Biome tweaks 2019-05-22 00:43:56 -04:00
Forstride c0739d8f43 Started re-adding boat entities 2019-05-21 22:37:23 -04:00
Forstride fbe6213f7e Removed short grass, tweaked biomes, fixed tree generation block replacement 2019-05-21 21:30:35 -04:00
Forstride 9e8c34618f Implemented saplings properly 2019-05-21 04:42:25 -04:00
Forstride 5d0115f05e Re-added Silkglade 2019-05-21 02:46:28 -04:00
Forstride 7d8b7b65ce Biome tweaks 2019-05-20 20:41:51 -04:00
Forstride 91cf57c696 Re-added Bayou 2019-05-20 17:05:00 -04:00
Forstride 66216018e0 Fixed Bramble 2019-05-19 19:29:23 -04:00
Forstride ca4acfc728 More biome tweaks 2019-05-19 10:32:57 -04:00
Adubbz dc0cab9228 Merge branch 'BOP-1.13-8.x.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.13-8.x.x 2019-05-19 23:25:48 +10:00
Adubbz 0ff8ae6c7c Added support for subbiomes 2019-05-19 23:25:32 +10:00
Forstride 8d11b2cb25 Tweaked biomes 2019-05-19 09:07:50 -04:00
Adubbz 6c4a11b15e Fixed tpbiome dropping you underneath the world 2019-05-19 20:35:56 +10:00
Adubbz f439032546 Hopefully fixed climates getting clobbered 2019-05-19 20:30:07 +10:00
Forstride 4c68c40904 Re-added most of the remaining overworld biomes, revamped climate mapping 2019-05-18 23:20:31 -04:00
Forstride ada0bd0aa3 Re-added Dead Forest and Grove 2019-05-18 01:58:59 -04:00
Forstride f04d75739a Re-added Cold Desert and Bog Mire 2019-05-17 23:12:49 -04:00
Forstride 97abc07c4a Fixed transparency for leaves in fast graphics 2019-05-14 14:53:48 -04:00
Forstride 289ddbee5f Re-added Brushland, Tundra, and Flower Meadow 2019-05-14 04:17:30 -04:00
Forstride 406b6502df Re-added Shield biome 2019-05-13 19:40:09 -04:00
Forstride d34c3ee723 Re-added Boreal Forest, Pasture, and Prairie 2019-05-13 05:08:42 -04:00
Diego efbe076cf0
pt_br cleanup 2019-05-05 13:54:26 -03:00
Forstride 70eaa49128 Re-added Chaparral 2019-05-04 18:11:38 -04:00
Forstride 9c8e64dacb Tweaked climate mapping 2019-05-04 14:34:57 -04:00
Adubbz 2733f1aba9 Prevent oceans from generating in extreme climates 2019-05-04 22:43:16 +10:00
Adubbz d58be03152 Groovy requires double quotes for format strings 2019-05-04 17:51:02 +10:00
Adubbz 1b4b8cffe0 Another attempt at fixing changelog naming 2019-05-04 17:46:37 +10:00
Adubbz 48a05fb3fe Account for missing changelog for curse 2019-05-04 17:37:42 +10:00
Adubbz 35aeb8afdb Attempt at better changelog naming 2019-05-04 17:32:09 +10:00
Adubbz 102c5e3453 More attempted fixes 2019-05-04 17:27:07 +10:00
Adubbz 51ff1cc235 Oops 2019-05-04 16:01:40 +10:00
Adubbz 5d234873c2 Swap build number for git hash 2019-05-04 15:57:04 +10:00
Adubbz fd3a0e46b0 It would be a good idea to include the password when trying to upload to maven... 2019-05-04 15:44:30 +10:00
Adubbz 9f528f4440 Grep only for lines starting with version 2019-05-04 15:41:27 +10:00
Adubbz 61cfaca544 Fixed maven url 2019-05-04 15:30:06 +10:00
Adubbz 03687501ea Minor fix 2019-05-04 15:25:24 +10:00
Adubbz ec6d959cfe More gradle fixes 2019-05-04 15:15:31 +10:00
Adubbz 4c312894b5 Build updates 2019-05-04 14:59:28 +10:00
Forstride a7db4332eb Re-added Outback and Xeric Shrubland 2019-05-03 23:55:34 -04:00
Forstride 70cfdf7e3a Cleaned some stuff up 2019-05-03 20:08:45 -04:00
Forstride ba27feabf7 Re-added Origin Hills, Snowy Forest, and Temperate Rainforest 2019-05-03 17:47:02 -04:00
Forstride 15ca3613dd Re-added Mystic Grove and Ominous Woods 2019-05-03 15:25:53 -04:00
Forstride 962675faa5 Removed Loamy/Silty/Sandy/Origin grass/dirt/etc. blocks 2019-05-03 14:13:31 -04:00
Forstride 0cbed91d11 Merged Dead Swamp and Bog into a single biome 2019-05-03 13:44:08 -04:00
Adubbz 55a938e8b6 Fixed tiny cacti placement 2019-05-04 00:11:02 +10:00
Forstride 290533131e Re-added Lush Swamp 2019-05-03 03:27:39 -04:00
Adubbz 9f10486989 Merged with Forstride's changes 2019-05-03 16:18:57 +10:00
Forstride 7e662ef79b Re-added Orchard 2019-05-03 01:56:44 -04:00
Forstride 5266a2c112 Redesigned Steppe biome 2019-05-02 23:16:18 -04:00
Forstride b644b75920 Re-added Dead Swamp and Lavender Fields 2019-05-02 17:30:59 -04:00
Forstride 10712027c4 Re-added Seasonal Forest 2019-05-02 15:16:44 -04:00
Forstride 7e9da5e1a7 Started re-adding Wasteland 2019-05-02 13:06:37 -04:00
Adubbz 3eb0516ce1 Re-added twiglets 2019-05-02 22:19:37 +10:00
Adubbz 7f1d083a0b Re-added big tree generation 2019-05-02 19:45:22 +10:00
Forstride ac2c70c097 Re-added Maple Woods 2019-05-01 23:16:51 -04:00
Forstride 072c4c7623 Fixed an issue with climate mapping 2019-05-01 20:21:59 -04:00
Forstride de4e309e53 Re-added Steppe and Tropical Rainforest 2019-05-01 18:39:21 -04:00
Forstride fcbdecd4e8 Re-added Redwood Forest and Alps 2019-05-01 15:17:41 -04:00
Adubbz 4ff264ddfc We don't need the gen layer visualizer atm 2019-05-01 16:34:54 +10:00
Adubbz 443ef45fbe Re-added bop tpbiome 2019-05-01 16:19:29 +10:00
Forstride ab667b9513 Re-added Meadow, Snowy Coniferous Forest, and Woodland 2019-04-30 22:18:04 -04:00
Forstride 581c541073 Re-added Grassland 2019-04-30 18:17:42 -04:00
Forstride d39aa6a42b Re-added Wetland 2019-04-30 17:24:22 -04:00
Forstride 2ce1b15a24 Re-added the Shrubland 2019-04-30 15:35:40 -04:00
Forstride d9534569d7 Started working on adding biomes back 2019-04-30 13:33:10 -04:00
Adubbz 9e9299b665 Updated to 1.13.2 2019-04-30 15:39:42 +10:00
Adubbz e791a36e2f
Merge pull request #1373 from Regnander/patch-2
Create sv_se.json
2019-04-14 07:52:49 +10:00
A. Regnander 764a08eff5
Create sv_se.json 2019-04-13 20:08:55 +02:00
Forstride 5a62b79eff
Merge pull request #1356 from DaDodger/patch-2
Update pt_br.json
2019-03-31 10:33:37 -04:00
Adubbz 8e575c0b54 Re-added mahogany trees 2019-02-24 23:00:17 +11:00
Adubbz 2002152d8a Re-added bushes 2019-02-24 22:05:34 +11:00
Adubbz 6770e18d50 Re-added bulb trees 2019-02-24 21:52:19 +11:00
Adubbz 890f7308db Re-added bayou trees 2019-02-24 21:32:12 +11:00
Adubbz d16d851619 Re-added normal tree gen 2019-02-16 18:28:39 +11:00
Diego 7f65a68525
Update pt_br.json 2019-02-13 17:38:23 -02:00
Adubbz 17dfb6a377 Added fir trees & updated forge 2019-02-09 20:22:58 +11:00
Forstride 7a6abc9022 Updated block bounding boxes 2019-01-28 12:42:52 -05:00
Adubbz 5bb7155286 Updated to new Forge 2019-01-28 11:34:54 +11:00
Adubbz 51ac820532 Update MCP mappings and Forge 2019-01-27 09:50:01 +11:00
Forstride e02cffa5fa
Merge pull request #1348 from DaDodger/patch-1
Create pt_br.json for 1.13
2019-01-23 11:30:49 -05:00
Diego b7b320dfdb
Create pt_br.json for 1.13 2019-01-23 14:12:19 -02:00
Forstride f268aa8552 Fixed some recipes and added tags for more blocks 2019-01-16 06:46:23 -05:00
Adubbz be1b0fb550 Tagged our grass blocks as forge:dirt. Still need to fix canSustainPlant in forge 2019-01-16 12:33:15 +11:00
Forstride ebaa00d0f0 Added grass/foliage coloring for other blocks, moved advancements/recipes to the data folder 2019-01-15 20:04:43 -05:00
Adubbz 90421e3530 Fixed tag loading 2019-01-16 11:54:37 +11:00
Forstride 3ef59f474e Fix merge conflicts 2019-01-16 11:15:30 +11:00
Adubbz 969c7b39e2 Fixed inventory grass colouring 2019-01-16 11:05:25 +11:00
Adubbz 26b1db1c25 Fixed grass block in world colouring 2019-01-16 10:53:45 +11:00
Adubbz 3b076fdc7e Added example biome, generates in world 2019-01-15 10:17:22 +11:00
Adubbz eef4615a2d Hooked up gen layers to the BoP world type 2019-01-14 23:42:13 +11:00
Adubbz 2d25e3d99b Genlayerbiome done 2019-01-14 23:06:01 +11:00
Adubbz 518e6ffe47 Preparations for our custom GenLayerBiome 2019-01-14 22:19:11 +11:00
Adubbz b1d67034dc Fixed dumb climate genlayer bugs 2019-01-14 21:45:55 +11:00
Adubbz 98cba6e62c Climate layer works 2019-01-14 20:21:56 +11:00
Adubbz 65305344f7 GenLayerTemperatureNoise appears to work 2019-01-14 14:05:26 +11:00
Adubbz cd015346de Reverted Forge by 1 version. Seems there's issues with the config changes 2019-01-14 12:02:09 +11:00
Adubbz 8f611d556c Finished cleaning up Mojang's gen layer stuff. Now to do our own. 2019-01-14 11:49:55 +11:00
Forstride 7004b689cd Added proper map colors to blocks 2019-01-14 11:09:39 +11:00
Adubbz 6801ac63e1 More work on genlayers 2019-01-14 11:08:52 +11:00
Adubbz 728044dfba Start on GenLayer stuff 2019-01-14 09:27:50 +11:00
Adubbz ce4e321475 Update Forge 2019-01-14 09:26:05 +11:00
Forstride 5d1328baf2 Added proper map colors to blocks 2019-01-13 13:56:31 -05:00
Adubbz e8de5e822b Use TTFTCUTS colouring for the map thing 2019-01-13 20:23:09 +11:00
Adubbz 4ee56a1f0d Added a genlayer visualizer debug tool 2019-01-13 18:25:05 +11:00
Adubbz ac5010c1eb Commented out farmland blocks because of broken textures, added the bop worldtype (no logic yet, just the worldtype itself) 2019-01-13 15:48:50 +11:00
Adubbz 6548b38ffa Added farmland and grasspath ats 2019-01-13 10:54:47 +11:00
Forstride 8d36d9f5d1 Re-added bramble block 2019-01-12 18:38:58 -05:00
Forstride 088195c315 Started adding grass/dirt blocks, fixed some recipes 2019-01-12 15:49:17 -05:00
Forstride b90b472cc3 Re-added Flesh block, tested particles for flowers 2019-01-12 06:14:49 -05:00
Forstride bb27856827 Remade Dead/Hellbark wood textures 2019-01-12 05:54:41 -05:00
Adubbz f13f692efd Re-added dead wood files 2019-01-12 21:28:05 +11:00
Adubbz 38a8b79fd6 Attempted to add mud particles (currently not working, handleStatusUpdate doesn't appear to be called. Mudballs may not be spawning on the client? 2019-01-12 12:55:10 +11:00
Adubbz 75bf89e31f Attempted to get mudballs working. Seems entity registration is buggy 2019-01-12 11:51:55 +11:00
Forstride a67b28bbd2 Even more stuff 2019-01-11 12:47:31 -05:00
Forstride aa6a51a2f7 More stuff 2019-01-11 10:39:23 -05:00
Adubbz 7e3850538d Actually fixed ATs 2019-01-11 23:17:28 +11:00
Adubbz a975fde9b9 Moar ats 2019-01-11 22:59:28 +11:00
Forstride e5b2431ffb Removed un-needed wood assets 2019-01-11 06:25:22 -05:00
Adubbz 5021731064 Probably better to not leave this in 2019-01-11 22:12:14 +11:00
Adubbz 4ff4ca3508 Added all wooden assets 2019-01-11 22:06:24 +11:00
Forstride 986d6d66f7 Added more fir blocks 2019-01-11 04:33:56 -05:00
Forstride c970e6673a More asset stuff 2019-01-11 03:23:51 -05:00
Adubbz 513f7cd049 Access transformers work properly now, thanks to LexManos. Can now add block sounds and other stuff :) 2019-01-11 16:48:53 +11:00
Adubbz dd140a7dbc Attempted to get access transformers working 2019-01-11 11:37:54 +11:00
Forstride 1cc69438d6 Cleared out existing log/leaf/wood blocks and items 2019-01-10 12:45:02 -05:00
Forstride 771193b7cc Started re-adding plants and stuff 2019-01-10 08:38:29 -05:00
Forstride 5f16ea4eaf Added mud blocks, added remaining methods to ash blocks 2019-01-10 06:26:47 -05:00
Forstride 88f6ea79c6 Removed fruits, updated localization to use JSON format 2019-01-10 05:50:37 -05:00
Adubbz 2b6b856591 Oops 2019-01-10 20:12:41 +11:00
Adubbz e15b139496 Remove old comment 2019-01-10 20:10:22 +11:00
Adubbz 5faec2839c Wanderer now works, reverted texture path changes 2019-01-10 20:06:24 +11:00
Adubbz 68fa0aad3c Updated Forge, added sounds 2019-01-10 19:44:17 +11:00
Adubbz 50cf0f59e1 Re-added the BoP creative tab and the items 2019-01-10 17:28:53 +11:00
Forstride 2ef252f106 Removed unused resources, changed texture folder names, and added trapdoor/stripped log textures for our woods 2019-01-09 10:31:45 -05:00
Adubbz ae5df8f9cd Updated to the new Forge/ForgeGradle 2019-01-09 12:33:02 +11:00
Adubbz ae3bb28a93 Ash block texturing works 2019-01-08 19:47:58 +11:00
Adubbz 87c73863f8 Re-added 7.1.0 assets 2019-01-08 18:52:27 +11:00
Adubbz 5d011224b5 Rollback forge gradle, the new version is broken 2019-01-08 18:50:41 +11:00
Adubbz 5f7015aeee Basic block registration works 2019-01-07 22:23:07 +11:00
Adubbz 7f6ace64e9 Mod now loads. Doesn't actually do anything (yet) 2019-01-07 19:35:58 +11:00
Adubbz 57ac719093 Preliminary gradle fixing. Have I ever mentioned that I think Gradle is rubbish? 2019-01-07 17:13:56 +11:00
Forstride 58f076007a
Oops 2018-12-30 07:51:15 -05:00
Forstride ac3d37bac3
Removed lava lakes from Redwood Forest and Wasteland (Closes #1343) 2018-12-30 07:08:29 -05:00
Forstride 1852e82d28 Tweaks to the Flower Field and Ominous Woods 2018-12-12 21:16:36 -05:00
Forstride 8031e86f3a Improved the Boreal Forest, Dead Forest, Dead Swamp, Fen, Ominous Woods, and Quagmire biomes 2018-12-11 17:55:30 -05:00
Forstride ccf44d2636 Improved the Bog, Fen, and Marsh biomes 2018-12-11 05:39:29 -05:00
Forstride 5de9ff775f Updated Forge 2018-12-05 19:09:44 -05:00
Forstride 4437557e77 Added Flower Forest extension that adds flowering oak trees and some of our flowers to the vanilla Flower Forest 2018-12-05 02:40:21 -05:00
Forstride 8c98ccd80d Improved the Lush Swamp, Orchard, and Steppe biomes. Added fossils to our desert/swamp biomes 2018-12-04 17:29:35 -05:00
Forstride e2eda98f2e Removed slanting from palm trees, added palm trees to the Rainforest biome 2018-12-04 15:52:23 -05:00
Forstride 2f4c74e99f Improved the Tundra biome and added a Snowy Tundra sub-biome 2018-12-04 15:33:08 -05:00
Forstride e00cd25c0b Improved the Oasis, Outback, and Xeric Shrubland biomes 2018-11-28 19:30:24 -05:00
Forstride 43a5000bd7 Enabled rain in the Cold Desert (Goes against the name, but it had to be done for the sake of Serene Seasons) 2018-11-27 20:02:50 -05:00
Forstride 6f3826a62f Tweaked several biome temperatures to better accomodate for snowfall in Serene Seasons 2018-11-27 19:23:09 -05:00
Forstride cf08d7367e More improvements to the Redwood Forest and Temperate Rainforest 2018-11-26 21:08:54 -05:00
Forstride 87b669cc9b Improved the Temperate Rainforest biome, removed the flower basket item 2018-11-26 19:08:51 -05:00
Forstride 9e8f943b30 Removed Flowering Vines and Umbran Tree Moss 2018-11-26 17:05:06 -05:00
Forstride eb7e738b55 Merge branch 'BOP-1.12.x-7.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.12.x-7.0.x 2018-11-26 00:42:10 -05:00
Forstride b1de30e5b9 Changed redwood leaves to be evergreen, tweaked redwood forest height variation 2018-11-26 00:41:59 -05:00
Adubbz f8b9cdd574
Nope, didn't work 2018-11-26 12:58:27 +11:00
Adubbz a0581b5eae
Also attempt to use https for the changelog 2018-11-26 12:55:38 +11:00
Adubbz 30e41fb320
Use https for upload 2018-11-26 12:51:55 +11:00
Forstride f6b6a44122 Added Redwood Forest Edge biome, improved redwood tree generation, reduced fog density in Ominous Woods 2018-11-25 20:28:15 -05:00
Adubbz 03c397026c
Merge pull request #1317 from GirafiStudios/biome_command
Added auto completion for tpbiome command
2018-10-04 22:32:21 +10:00
Forstride b3b5a635b5
Merge pull request #1316 from GirafiStudios/blue_fire
Fixed blue fire jar placing, Closes #1304
2018-10-03 23:23:56 -04:00
GirafiStudios 880b211dcd Added auto completion for tpbiome command
A few other small improvements to auto completion for BoP commands in general
2018-10-04 04:24:19 +02:00
GirafiStudios f2eb0052fe Only make blue fire jars place blue fire 2018-10-04 02:56:25 +02:00
GirafiStudios e76b5dad2a Fixed blue fire jar placing
Fixed getSubItems being client only
Fixed potential NPE when setting creative tabs
2018-10-04 02:44:11 +02:00
Forstride 0aafba6424
Merge pull request #1314 from GirafiStudios/BOP-1.12.x-7.0.x
Fixed BoP boats not being breakable by hand, Fixed #1197
2018-10-01 21:02:33 -04:00
GirafiStudios 5004b9b311 Fixed BoP boats not being breakable by hand
Fixed BoP boat creative pick result
2018-10-02 00:50:44 +02:00
Forstride b488980334 Removed Jacaranda trees from Extreme Hills 2018-08-01 17:17:36 -04:00
Forstride 11e764ce5f Removed flowering oak trees and clover patches from the vanilla Forest 2018-07-30 09:28:10 -04:00
Forstride d8674b1568
Merge pull request #1296 from ferreusveritas/BOP-1.12.x-7.0.x
Add getModdedBiomeGrassColor and getModdedBiomeFoliageColor to biomes
2018-07-29 19:55:26 -04:00
ferreusveritas 1b1d78797d Add getModdedBiomeGrassColor and getModdedBiomeFoliageColor to biomes 2018-07-29 19:37:00 -04:00
Forstride e85fd1d9f7
Merge pull request #1295 from AlekseiVoronin/patch-1
Update ru_RU.lang
2018-07-28 09:46:57 -04:00
Алексей 35bb07618e
Update ru_RU.lang
I've found very much the errors and fixed them.
2018-07-28 18:31:51 +05:00
Forstride c1b44f73cc
Update README.md 2018-07-27 21:43:06 -04:00
Forstride d1254eab46
Update README.md 2018-07-02 07:42:07 -04:00
Adubbz a9e42935d0
Merge pull request #1280 from DYColdWind/patch-3
Update zh_CN.lang
2018-06-21 15:27:22 +10:00
冷风 ecfc5ea983
Update zh_CN.lang 2018-06-21 13:10:27 +08:00
Adubbz 9d9e912766
Merge pull request #1279 from GirafiStudios/BOP-1.12.x-7.0.x
Various misc fixes
2018-06-21 10:55:45 +10:00
GirafiStudios b62083115e Fixed Blue Fire inventory render
Fixed Earth item not having localization
Fixed client SideOnlys on a few getPickBlock methods
2018-06-20 18:07:34 +02:00
Adubbz 5c092bd853
Merge pull request #1267 from lyricalreverie/BOP-1.12.x-7.0.x
Update ChunkGeneratorOverworldBOP.java
2018-05-27 16:09:57 +10:00
lyricalreverie 433ee183dd
Update ChunkGeneratorOverworldBOP.java
Lava lake event should not be posted unless checks of hasVillageGenerated, lavaLakeChance and useLavaLakes pass for consistency with vanilla chunk generation. Event subscribers will assume those checks have already passed.
2018-05-26 22:22:39 -07:00
Forstride 63de307f82
Merge pull request #1265 from kellixon/patch-1
Update ru_RU.lang
2018-05-21 10:48:15 -04:00
Konstantin 4681b40d52
Update ru_RU.lang
MC 1.12.2. BiomesOPlenty 7.0.1.2389.
2018-05-21 17:25:08 +03:00
NatsuArashi 92a52269eb Up to date,fix typo...etc. [zh_TW] (#1263)
* Up to date,fix typo...etc.

* Update zh_TW.lang
2018-05-15 13:31:47 -04:00
Forstride 8fbc40d7eb Allowed Squids to spawn in swampy biomes 2018-05-13 07:37:33 -04:00
Forstride c91a7f62f7 Fixed lily pad particles 2018-04-28 01:05:46 -04:00
Forstride c454d7724f
Merge pull request #1255 from Fuzss/patch-3
Update de_DE.lang
2018-04-27 14:13:04 -04:00
Fuzss 2f9c564ccb
Update de_DE.lang 2018-04-27 20:08:27 +02:00
Forstride 5dbf7f9a04
Merge pull request #1253 from Fuzss/patch-2
Update de_DE.lang
2018-04-27 13:59:24 -04:00
Fuzss eb0c9c456c
Update de_DE.lang 2018-04-27 19:45:56 +02:00
Forstride 2791755a37 Added Rabbit and Donkey spawns to various BOP biomes 2018-04-26 00:20:43 -04:00
Forstride 948b53d4a3
Merge pull request #1252 from DYColdWind/patch-2
Update zh_CN.lang
2018-04-25 00:05:25 -04:00
冷风 957fc6ad85
Update zh_CN.lang 2018-04-25 10:40:50 +08:00
Forstride 96da628dfc Fixed NPE with creative tab (Closes #1250) 2018-04-24 19:11:04 -04:00
Forstride 8079fe3f86 Removed Pixies (Moved to Familiar Fauna) 2018-04-24 00:49:08 -04:00
Forstride de0f1a9576 Allowed BOP fluid buckets to display in the BOP creative tab 2018-04-23 08:30:01 -04:00
Forstride 85d6f49aa9 Fixed crash if all island biomes are disabled (Closes #1233) 2018-04-23 08:09:40 -04:00
Forstride 6717a9708c Prevented Nether generation above the bedrock and fixed tpbiome command in Nether (Closes #1140, #1141) 2018-04-23 07:55:22 -04:00
Forstride 5d08edd06a Removed some loot table entries 2018-04-23 05:46:38 -04:00
Adubbz 14fa8b672d
Merge pull request #1249 from koh-gh/BOP-1.12.x-7.0.x
Update ja_JP.lang
2018-04-23 19:25:41 +10:00
koh 55e95d5990 Update ja_JP.lang 2018-04-23 18:15:16 +09:00
Forstride c4210e46bb Removed last remaining bucket override stuff 2018-04-23 03:49:51 -04:00
Forstride 907fc2f2cc Removed Forge bucket override stuff since it's not needed anymore 2018-04-23 03:08:22 -04:00
Forstride 6c4ba9eb0b Tweaked mud and flesh block sounds 2018-04-23 02:45:26 -04:00
Forstride 266bc2189a Fixed terrarium block particles 2018-04-22 21:24:59 -04:00
Forstride 98f33c225b Merge branch 'BOP-1.12.x-7.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.12.x-7.0.x 2018-04-21 04:26:42 -04:00
Forstride f17f5523be Tweaked map colors 2018-04-21 04:26:33 -04:00
Adubbz 6629f386ea
Merge pull request #1248 from DYColdWind/patch-1
Update zh_CN.lang
2018-04-21 16:20:05 +10:00
冷风 3154ba0563
Update zh_CN.lang 2018-04-21 11:05:02 +08:00
冷风 8811664bf3
Update zh_CN.lang 2018-04-21 11:04:02 +08:00
Forstride ec2e483467 Updated map colors for blocks 2018-04-20 22:16:20 -04:00
Forstride 5e84eafdf4 Fixed some leaf textures not looking right in Fast graphics mode 2018-04-20 06:22:25 -04:00
Adubbz 7442feb06c
Added scatterYMethod to the options for GeneratorLakes 2018-04-16 20:23:52 +10:00
Adubbz dbd1037bac
Fixed adding new generators via config files 2018-04-16 20:18:44 +10:00
Adubbz a4f650747d
Merge pull request #1244 from DYColdWind/patch-5
Update zh_CN.lang
2018-04-16 15:15:22 +10:00
冷风 d2de186f99
Update zh_CN.lang 2018-04-16 13:01:55 +08:00
Forstride 7a5ffa9d73
Merge pull request #1243 from lihow731/BOP-1.12.x-7.0.x
Update zh_TW.lang
2018-04-16 00:37:31 -04:00
Forstride 61dcf6e741 Removed stalactites/stalagmites 2018-04-16 00:37:15 -04:00
Leon Liao 17b4731e3e Update zh_TW.lang 2018-04-16 12:22:05 +08:00
Forstride 9dde633a19 Added short Bone columns to the Visceral Heap, changed the Eyebulb texture, made the vanilla Nether biome more common 2018-04-15 22:16:33 -04:00
Forstride 66cf539390 Disabled Wheat Grass, Damp Grass, and Shrub generation in all biomes 2018-04-15 18:24:42 -04:00
Forstride bdcf18a4e8 Merge branch 'BOP-1.12.x-7.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.12.x-7.0.x 2018-04-15 05:28:03 -04:00
Forstride 0996c23544 Added Curse effect for Blue Fire 2018-04-15 05:27:53 -04:00
Forstride 924983649b
Merge pull request #1240 from kellixon/patch-1
Update ru_RU.lang
2018-04-15 02:32:35 -04:00
Forstride 1c6fad26bf Fixed disabled biomes crashing due to village material replacement (Closes #1239) 2018-04-15 02:31:02 -04:00
Konstantin 361d6a5121
Update ru_RU.lang
Optimization for version BiomesOPlenty 7.0.1.2358 (MC 1.12.2). 437 lines en_US=437 lines ru_RU.
2018-04-15 09:15:02 +03:00
Forstride f65618ce55 Replaced Sapling Terrarium with Beach Terrarium 2018-04-15 01:57:21 -04:00
Forstride 8db12839d0 Removed the Polar Chasm biome, added Blue Fire to the Phantasmagoric Inferno, reworked Terrarium models/textures 2018-04-15 00:05:02 -04:00
Adubbz c2f47957ef
Merge pull request #1238 from DYColdWind/patch-4
Update zh_CN.lang
2018-04-15 13:14:57 +10:00
冷风 7912571463
Update zh_CN.lang 2018-04-15 09:02:40 +08:00
Forstride 24c7daec5f Removed Turnips, Ambrosia, Salads, Jelled Poison, and Pinecones 2018-04-14 11:57:29 -04:00
Forstride 314dff5bc4 Improved the Xeric Shrubland biome 2018-04-14 11:05:30 -04:00
Forstride 4bac91e0dd Removed world creation menu options for replacing BOP trees/grasses/soils/etc. with vanilla blocks (NOTE: This can still be done using our config file system if you so desire) 2018-04-14 10:49:43 -04:00
Forstride 457bfe3ab4 Removed slowdown from Ash blocks, decreased slowdown from Flesh blocks 2018-04-14 09:12:48 -04:00
Forstride 03c2f3dd8b Improvements to the Fungi Forest biome 2018-04-14 01:54:34 -04:00
Forstride 8f0e4d375d Added Bramble thorns that generate in the Corrupted Sands biome. Improved the Phantasmagoric Inferno biome 2018-04-13 23:29:11 -04:00
Forstride c53b3402e7 Merge branch 'BOP-1.12.x-7.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.12.x-7.0.x 2018-04-13 09:55:47 -04:00
Forstride 0093e0189a Tweaked the amount of Sea Oats in Beach biomes 2018-04-13 09:55:32 -04:00
Forstride fcd56f0f49
Merge pull request #1234 from DYColdWind/patch-3
Update zh_CN.lang
2018-04-13 00:53:46 -04:00
Forstride c1831cf3df Improved the Barley texture 2018-04-13 00:52:05 -04:00
冷风 436700ac03
Update zh_CN.lang 2018-04-13 12:49:23 +08:00
冷风 dd75a92e0a
Update zh_CN.lang 2018-04-13 12:47:55 +08:00
Forstride bd7cdf2262 Added village material replacements for various BOP biomes 2018-04-12 22:30:09 -04:00
Forstride e7b2cd0396 Fixed oasis generation so grass blocks don't generate under other grass blocks 2018-04-12 19:07:49 -04:00
Forstride 152df7c2bc Added Origin Beach biome to appear around the Origin Island 2018-04-12 17:14:06 -04:00
Forstride 805e0f772d Added Sea Oats to the Beach biome 2018-04-12 07:43:51 -04:00
Forstride 953aa894ae
Merge pull request #1232 from lihow731/BOP-1.12.x-7.0.x
Update zh_TW.lang
2018-04-12 02:36:06 -04:00
Forstride f9cef50b93 Gave Barley a high chance of dropping wheat seeds. 2018-04-12 02:35:12 -04:00
Leon Liao 9f6502e793 Update zh_TW.lang 2018-04-12 14:33:20 +08:00
Forstride 6e5fda4882 Re-added the Pasture biome as a sub-biome of the Prairie. Added Barley. Improved the Prairie biome. 2018-04-12 02:11:49 -04:00
Forstride e5b9601d83 Improved the grass/foliage color of the Grove biome 2018-04-12 00:21:43 -04:00
Adubbz 6d87dc4202
Merge pull request #1230 from koh-gh/BOP-1.12.x-7.0.x
Update ja_JP.lang
2018-04-12 04:39:02 +10:00
koh 4f727b87f0 Update ja_JP.lang
Tweak translations of slab and stairs.
2018-04-09 23:43:06 +09:00
Forstride b4cfd02d38 Added more types of flowers to the Flower Field biome 2018-04-07 19:28:22 -04:00
Forstride d8dde943da Fixed hoes not being damaged when used on BOP grass/dirt (Closese #1210) 2018-04-07 04:30:41 -04:00
Forstride 198d9da3d0 Fixed Pixies interacting with pressure plates (Closes #1217) and Pixie trail particles. 2018-04-07 04:25:04 -04:00
Forstride d5ceebedab Added harvest tools for various blocks (Closes #1204) 2018-03-17 12:37:59 -04:00
Forstride cbd1fd69c7 Fixed shrub leaves decaying 2018-03-15 07:54:00 -04:00
Forstride 3b8604412d Tweaked wood textures 2018-03-12 07:06:16 -04:00
Forstride c96b41702b Tweaked the Tundra biome and temperatures for a few biomes. Improved cattail texture 2018-03-11 12:35:16 -04:00
Forstride 750fc6e94f Tweaked the Wasteland biome 2018-03-05 08:04:02 -05:00
Forstride 369b05a616
Merge pull request #1202 from koh-gh/BOP-1.12.x-7.0.x
Update ja_JP.lang
2018-03-05 07:03:18 -05:00
koh 5209a366d3 Update ja_JP.lang
Add boat.
2018-03-05 20:14:09 +09:00
koh 55283f6872
Merge pull request #1 from Glitchfiend/BOP-1.12.x-7.0.x
Merge
2018-03-05 19:45:56 +09:00
Adubbz 084d380259
Merge pull request #1201 from lihow731/BOP-1.12.x-7.0.x
Update zh_TW.lang
2018-03-05 21:43:20 +11:00
Li-Hao Liao (Leon Liao) f1024b3445 Update zh_TW.lang 2018-03-05 18:22:21 +08:00
Forstride b26f2d81fa
Merge pull request #1200 from DYColdWind/patch-2
Update zh_CN.lang
2018-03-05 00:04:38 -05:00
冷风 25127ca360
Update zh_CN.lang 2018-03-05 13:02:06 +08:00
冷风 af223c39a3
Update zh_CN.lang 2018-03-05 12:51:44 +08:00
Forstride e88cc2f8ae Added dispenser behaviors and furnace fuel amounts for BOP boats 2018-03-04 12:05:27 -05:00
Forstride 7dffb4754f Added boats for BOP wood types (Closes #716) 2018-03-04 08:25:04 -05:00
Forstride 838d80d4c1
Merge pull request #1196 from lihow731/BOP-1.12.x-7.0.x
Update zh_TW.lang
2018-03-03 05:56:53 -05:00
LiHao Liao (Leon Liao) dc34f7b5a0 Update zh_TW.lang 2018-03-03 18:36:46 +08:00
Forstride e759686e61
Merge pull request #1195 from koh-gh/patch-2
Update ja_JP.lang
2018-03-03 05:03:30 -05:00
koh 39640b81ba
Update ja_JP.lang
Fixed a few lack of correction.
2018-03-03 18:32:32 +09:00
Forstride 917c075b26 Increased the temperature of a few biomes so they don't get snow during winter in Tough As Nails 2018-03-02 05:09:50 -05:00
Forstride 37e9ffa51c Decreased the amount of stalagmites/stalactites underground 2018-03-02 04:08:54 -05:00
Forstride a5c23fa9e1 Fixed sheep eating sounds for BOP grass blocks (Closes #1176). Tweaked foliage values for various biomes 2018-03-01 21:53:06 -05:00
Forstride fee7329151 Added smelting recipes for gem ore blocks (Closes #1116) 2018-03-01 20:57:58 -05:00
Forstride 7adf0f38e3 Tweaked vanilla forest biome extensions 2018-03-01 02:46:32 -05:00
Adubbz d595ef77b5
Merge pull request #1192 from koh-gh/patch-1
Update ja_JP.lang
2018-02-28 22:39:30 +11:00
koh-gh 8ebeacde42
Update ja_JP.lang
Update and rewrite for BoP 1.12.2
2018-02-28 20:37:36 +09:00
Adubbz 2b22653e8d
Merge pull request #1187 from srs-bsns/7.0.x/fixfluids
Initialize fluid hardness to match vanilla fluids
2018-02-21 18:46:50 +11:00
srs-bsns 02bef12c47
Initialize fluid hardness to match vanilla fluids
This initialises BoP fluids to have a hardness of 100.0F which matches
vanilla water and lava. Calling #setHardness subsequently sets the
blockResistance (blockHardness * 5.0F) which handles resistence to
explosions.

An exception was made for quicksand, which initializes to the same
hardness as minecraft:sand (0.5F) so that explosions won't leave piles
of quicksand floating around.

Signed-off-by: srs-bsns <forfrdm@gmail.com>
2018-02-21 01:33:04 -05:00
Adubbz c3a4237b83
Fixed an issue with obtaining biome names on servers when using tpbiome 2018-02-12 11:28:48 +11:00
Adubbz 0e6e960e50
Merge pull request #1170 from Foxgreat/patch-1
Update ru_RU.lang
2018-01-17 07:11:40 +11:00
Foxgreat ef6561803f
Update ru_RU.lang
Hello! I updated some phrases, please add them to your mod.

I corrected phrases about hellish entity and blocks, and added some translate to words)
2018-01-16 21:45:53 +06:00
Adubbz c4385d995e
Merge pull request #1162 from InterPlay02/BOP-1.12.x-7.0.x
Revised and fixed version (pt-BR.lang)
2017-12-30 11:07:58 +11:00
InterPlay 7e7dfe48e8
Revised and fixed version (pt-BR.lang)
And, if the mod itself don't have any actualization, should be the final version
2017-12-29 22:06:24 -02:00
Adubbz d2a862a516
Merge pull request #1161 from InterPlay02/BOP-1.12.x-7.0.x
Added pt-BR.lang File for 1.12.2
2017-12-30 08:30:31 +11:00
InterPlay 5a2ec05001
Added pt-BR.lang File for 1.12.2 2017-12-29 18:54:53 -02:00
Adubbz a008e5f28c
Merge pull request #1144 from TartaricAcid/BOP-1.12.x-7.0.x
Update zh_CN language file
2017-11-23 08:07:01 +11:00
TartaricAcid 29a49f8486 Update zh_CN language file 2017-11-22 21:57:41 +08:00
Adubbz 53eee75917 Properly fixed ocean biomes in the Nether. Closes #1070 2017-11-16 20:58:52 +11:00
Adubbz 6dc42451c1
Merge pull request #1138 from srs-bsns/fix1070
Override for #getBiomesForGeneration, fixes #1070
2017-11-13 08:25:05 +11:00
srs-bsns 7c2fc86c72
Override for #getBiomesForGeneration, fixes #1070
This adds an override for `BiomeProvider#getBiomesForGeneration` to
`BiomeProviderBOPHell` that defaults to `Biomes.HELL` instead of
`Biomes.DEFAULT` (ocean) if a chunk's biome array contains -1.

Signed-off-by: srs-bsns <forfrdm@gmail.com>
2017-11-12 04:49:34 -05:00
Adubbz 82f31e5da0
Merge pull request #1137 from raspopov/patch-1
Updated Russian translation
2017-11-11 23:17:53 +11:00
Nikolay Raspopov b630ff1fcf
Updated Russian translation
Added Mudball, Wasp.
Fixed advancements.biomesoplenty.*
2017-11-11 09:02:12 +03:00
Adubbz 8dc8f466d7
Merge pull request #1126 from CDAGaming/BOP-1.12.x-7.0.x
Code Cleanup + Gradle Version Adjusts
2017-11-02 15:46:41 +11:00
CDAGaming 3bf716cf8a
Revert Gradle Version Changes 2017-11-01 20:51:32 -05:00
CDAGaming 8a6426e196
Code Cleanup + Gradle Version Adjusts
- This PR Also Adjusts the Gradle URL to -all
(Suggested by IntelliJ IDEA)

(Code Cleanup by IntelliJ IDEA)
2017-10-31 19:48:04 -05:00
Adubbz d1ec982df9
Merge pull request #1113 from GirafiStudios/basket
Improved Flower Basket support, Closes #999
2017-11-01 11:10:00 +11:00
Adubbz 6ea6cde527
Merge pull request #1125 from CDAGaming/BOP-1.12.x-7.0.x
WIP: Update Forge and MCP Mappings Version
2017-11-01 11:09:44 +11:00
CDAGaming 8aa95d1818
Revert "Code Cleanup -- Optional" & MCP Update 2017-10-31 19:01:35 -05:00
CDAGaming 05a805eb46 Code Cleanup -- Optional 2017-10-30 19:06:00 -05:00
CDAGaming 124aa77d06 Update Forge and MCP Mappings Version
(Also Includes Code Simplifying)
2017-10-30 18:43:09 -05:00
CDAGaming 3c6ccdd855
Merge pull request #1 from Glitchfiend/BOP-1.12.x-7.0.x
Upstream Merge (Prep for PR)
2017-10-30 13:54:22 -05:00
Adubbz a0968515cb
Merge pull request #1121 from DYColdWind/patch-1
Update zh_CN.lang
2017-10-29 13:38:09 +11:00
冷风 4e19307cbb
Update zh_CN.lang 2017-10-29 10:14:04 +08:00
Adubbz a44ca64e73 Merge pull request #1120 from GirafiStudios/polish_translation
Added Polish translation (Made by @EliogabalusPL)
2017-10-24 09:57:52 +11:00
GirafiStudios b8ba633f23 Readd 2017-10-23 23:33:05 +02:00
GirafiStudios c874eb35c7 Remove 2017-10-23 23:31:08 +02:00
GirafiStudios 63601b9316 Fixed translation file 2017-10-23 22:31:05 +02:00
GirafiStudios 1f8783a1cc Added Polish translation (Made by @EliogabalusPL) 2017-10-23 20:04:54 +02:00
Adubbz d773808bc1 Vanilla extension ids now match Vanilla biome ids rather than their names. Closes #1119 2017-10-23 21:29:35 +11:00
Adubbz 1173bff305 Fixed a ConcurrentModificationException when generation features are disabled. Closes #1118 2017-10-23 09:35:45 +11:00
GirafiStudios 39595d0c74 Improved Flower Basket support
Fixed a few possible NPEs
2017-10-15 16:34:06 +02:00
Adubbz 33c595f486 Merge pull request #1111 from GirafiStudios/biome_finder
Fixed biome finder not working on servers, Closes #1109
2017-10-05 10:20:23 +11:00
GirafiStudios 478130c26a Specified methods access levels, rather than having them package-private 2017-10-05 01:19:23 +02:00
GirafiStudios 00456bd224 Fixed biome finder not working on servers
Additional null check, to hopefully prevent issues in the future
Some minor cleanup
2017-10-04 19:48:18 +02:00
Adubbz 107285e234 Fixed biome finder crafting. Closes #1081 2017-09-25 12:32:36 +10:00
Adubbz b57eb9787e All metadata values of our grasses/dirts are now registered with the Ore Dictionary 2017-09-25 12:11:06 +10:00
Adubbz 3458e1b5f9 Fixed entity ids. Closes #1083 2017-09-25 11:59:59 +10:00
Adubbz 67fd033e3c Fixed flowering leaves on fast graphics. Closes #1061
I guess this has to be done manually now...
2017-09-25 11:32:15 +10:00
Adubbz c57c458e69 Hoes now turn Overgrown Stone into Stone. Closes #1102 2017-09-25 10:50:42 +10:00
Adubbz a1b36bec78 Merge pull request #1076 from popocamonroy/patch-3
Create es_MX.lang
2017-07-21 17:59:25 +10:00
popocamonroy 5f264c2341 Create es_MX.lang 2017-07-21 02:58:20 -05:00
Adubbz 064e411d72 Fixed tpbiome command on servers 2017-07-11 11:21:36 +10:00
Forstride 7767650a93 Disabled poison ivy by default, removed the Generate Flax option 2017-06-29 15:17:00 -04:00
Forstride 4981ddb3b4 Fixed some recipes and stuff 2017-06-28 20:27:45 -04:00
Forstride 6e3ebabde9 Added more recipe advancements 2017-06-28 19:12:54 -04:00
Forstride 1b6b5dc0ad Added more advancements, started on recipe advancements 2017-06-28 14:22:21 -04:00
Forstride 6a8332f386 Fixed the root/all biomes advancements (More advancements to come soon) 2017-06-28 06:38:12 -04:00
Adubbz b931caaca1 Updated to Forge 2379 2017-06-28 10:49:34 +10:00
Forstride 8faab3f05c Fixed some stuff with entity sounds 2017-06-25 11:47:17 -04:00
Forstride 94f04fa1b3 Removed Butterflies and Snails (To be merged with our upcoming mod, Familiar Fauna), fixed entity names to include BOP mod ID 2017-06-25 10:10:36 -04:00
Forstride fcdda72f35 Tweaked the Coniferous Forest biome 2017-06-24 12:31:36 -04:00
Adubbz a5563eec33 Updated to the new Forge registry setup. Closes #1015 2017-06-24 13:22:34 +10:00
Forstride f32d655af2 Fixed light opacity for hot spring water/blood, tweaked the Desert/Mesa extensions 2017-06-20 14:59:52 -04:00
Forstride 9d85377265 Cleaned up JSON recipes 2017-06-20 10:24:44 -04:00
Adubbz 5417e0656b Updated to Forge 2340 2017-06-20 23:35:08 +10:00
Adubbz 93475aafd6 Switched to using JSON recipes 2017-06-20 22:31:57 +10:00
Adubbz 962f1d0db5 Updated MCP mappings 2017-06-20 14:23:47 +10:00
Adubbz 26c88739cb Updated CurseGradle 2017-06-20 13:23:05 +10:00
Adubbz 023e5e5969 Improved Issue Template spacing and sectioning 2017-06-16 17:26:09 +10:00
Adubbz 70bf47a40d Update ISSUE_TEMPLATE.md 2017-06-16 17:21:37 +10:00
Adubbz 11ec1c9c85 Update ISSUE_TEMPLATE.md 2017-06-16 17:21:16 +10:00
Adubbz e37d25b128 Update ISSUE_TEMPLATE.md 2017-06-16 17:20:38 +10:00
Adubbz d6d478b46d Merge pull request #1050 from raspopov/patch-1
Updated Russian translation
2017-06-16 10:40:28 +10:00
Adubbz d7fb9a18f2 The fallback height variation can no longer return negative numbers 2017-06-16 10:38:33 +10:00
Adubbz 78881de9f7 Updated to Forge 14.21.0.2330 2017-06-16 09:54:36 +10:00
Forstride 9498d91de6 Reduced the amount of mushrooms in most biomes, removed wheat/damp grass from a few biomes 2017-06-14 12:50:21 -04:00
Nikolay Raspopov 169ffa6e36 Updated Russian translation
Added white sand, willow vine. Removed mud tools, corruption record, flippers, eggs etc.
2017-06-13 22:27:36 +03:00
Forstride aa2848cb9e Prevented torches/snow layers/etc. from being placed on blocks that they shouldn't be allowed to (close #1049) 2017-06-13 09:21:48 -04:00
Forstride 41cdbabdb5 Fixed sand/gravel generation to not replace village farmland blocks, tweaked the Mystic Grove/Redwood Forest 2017-06-13 03:53:37 -04:00
Forstride 570954e7c6 Tweaked the Redwood Forest biome 2017-06-13 01:17:24 -04:00
Forstride bfb1c17ae8 Prevented BOP blocks/items from appearing in all creative tabs (closes #1048) 2017-06-13 00:42:02 -04:00
Forstride 23ad88b448 Merge branch 'BOP-1.12.x-7.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.12.x-7.0.x 2017-06-12 14:26:06 -04:00
Forstride 25764622dd Fixed mud/flesh blocks not slowing the player down 2017-06-12 14:25:51 -04:00
Adubbz 9f6c532e43 Fixed ore dictionary recipes 2017-06-12 13:05:21 +10:00
Adubbz 0f8be0526e Fixed crafting recipes 2017-06-11 22:55:47 +10:00
Forstride f8ea5933a2 Added parrots to tropical biomes 2017-06-11 07:07:17 -04:00
Adubbz fab275beac Initial update to 1.12 (Crafting recipes don't work yet) 2017-06-11 20:36:25 +10:00
Adubbz f27fc3b85b Setup Forge for 1.12 2017-06-11 19:14:54 +10:00
Forstride 0114127565 Re-organized the BOP creative menu 2017-06-11 04:28:52 -04:00
Adubbz d841c7ca1a Incremented the version number 2017-06-11 18:10:33 +10:00
Adubbz 47f29517cd Switched to using Forge spawn eggs 2017-06-11 18:09:00 +10:00
Adubbz e706e1cdf1 Fixed a crash with buildcraft. Closes #1046 2017-06-11 17:31:28 +10:00
Adubbz 9873b7ad56 Re-added errors for properties using default value (as log spam this time), fixed some errors not showing during json parsing 2017-06-11 16:39:35 +10:00
Forstride 1e6d27672e Removed the flippers, wading boots, flower band, and corruption music disc 2017-06-11 00:46:32 -04:00
Forstride 69def48012 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-06-10 23:44:23 -04:00
Forstride d019d127f4 Removed the Heathland biome, added the Alps Foothills biome, changed the Mangrove to a primary biome in the hot swamp climate, tweaked a lot of other biomes. 2017-06-10 23:44:10 -04:00
Adubbz 2a1863cd12 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-06-11 08:49:06 +10:00
Adubbz a6adb737e6 Removed detection for reusing default config files. Turns out this has unintended consequences 2017-06-11 08:49:00 +10:00
Forstride 3b318a6060 Removed the mud tools/armor, scythes, and plain/lush/exotic flower bands. Tweaked various textures 2017-06-10 09:03:09 -04:00
Adubbz 0af17b32fd Default biome config files are now generated. Please note, you CANNOT directly copy and paste these, the game WILL crash INTENTIONALLY. You must only include the sections you have changed from default. 2017-06-10 20:48:04 +10:00
Adubbz 3cebe1d3e6 Fixed a crash when disabling biome ids. Closes #1030 2017-06-10 12:48:28 +10:00
Forstride 7a6c983667 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-06-07 00:45:08 -04:00
Forstride 3054a00eb5 Updated logo/icon 2017-06-07 00:44:58 -04:00
Forstride 21dbe55c49 Update README.md 2017-06-07 00:26:25 -04:00
Forstride bb495471ed Possibly fixed an issue with AbyssalCraft 2017-06-06 23:47:05 -04:00
Forstride 67901ed0c2 Fixed which biomes can appear as Biome Essence, prevented the Cold Beach from generating alongside the Alps 2017-06-06 20:41:52 -04:00
Forstride d7928f8bb9 Added white sand beaches to the Tropical Island (Includes white sand/sandstone blocks) 2017-06-06 01:44:48 -04:00
Forstride 6f2b55aa47 Tweaked the Redwood Forest, decreased mushroom amounts in certain biomes 2017-05-28 20:53:30 -04:00
Forstride 3ab380cd95 Added bamboo stalks to Tropical Islands 2017-05-27 20:27:52 -04:00
Forstride c44bc02158 Allowed hot spring water to be picked up with buckets, added willow vines back to willow trees, and added amethyst to the ore dictionary 2017-05-27 18:25:33 -04:00
Forstride 42f53229e3 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-05-27 16:44:54 -04:00
Forstride 84e926b5da Changed Leaf Piles to only generate on grass/dirt blocks 2017-05-27 16:44:40 -04:00
Adubbz e2820ff066 Merge pull request #1027 from raspopov/patch-1
Updated Russian translation
2017-05-27 19:14:51 +10:00
Nikolay Raspopov 99e342279c Updated Russian translation
Removed flax string, shale, siltstone, limestone, ichor, and souls.
Added Mycelial Netherrack.
2017-05-27 12:12:35 +03:00
Forstride 2513b31d7c Allowed Woodland Mansions to spawn in certain BOP biomes 2017-05-27 04:48:25 -04:00
Forstride 23bed4eacc Allowed jungle temples, desert pyramids, igloos, and witch huts to spawn in certain BOP biomes 2017-05-27 02:34:22 -04:00
Forstride 6486c6be9e A few more biome tweaks 2017-05-26 19:19:17 -04:00
Forstride 5a86dca66f More biome tweaks 2017-05-26 18:31:34 -04:00
Forstride 2e3a09d316 Reduced the amount of ground foliage in most biomes 2017-05-26 16:54:52 -04:00
Forstride 7240bbd56d Merge pull request #1024 from Al05/patch-5
Update bg_BG.lang
2017-05-24 20:13:51 -04:00
Al05 ede6a10963 Update bg_BG.lang
Al_05: Added translation for the mycelial netherrack.
2017-05-24 10:37:43 +03:00
Forstride 6b304bb998 Allowed stone formations to drop when broken with a pickaxe 2017-05-22 22:39:29 -04:00
Forstride bb2c1c3944 Allowed palm/mangrove saplings to grow on sand, made palm leaves non-decayable 2017-05-22 22:14:42 -04:00
Forstride 1324d30ab9 Removed flax string, shale, siltstone, limestone, ichor, and souls 2017-05-22 05:58:38 -04:00
Forstride 591d86586b Fixed flower band crafting recipes 2017-05-21 00:55:43 -04:00
Forstride cd5eee7d9b Tweaked poison ivy and clover patches 2017-05-18 15:42:19 -04:00
Cheeserolls 553641d9bb Try to make climate layer generation more robust (and catch an annoying bug) 2017-05-18 11:43:03 +01:00
Forstride 406dd93a2f Added branches to the bush/berry bush texture 2017-05-17 01:37:45 -04:00
Forstride 9e0dc810a4 Added mycelium particles to Mycelial Netherrack, added hot spring pools to the Polar Chasm 2017-05-16 15:36:25 -04:00
Adubbz 8d89b6ae5a Switched to using MutableBlockPos for fog colours 2017-05-15 22:55:45 +10:00
Adubbz 840ac96179 Merge pull request #1018 from HenryLoenwind/crash4218-1.11
Prevent crashes when the used item cannot be found on the player
2017-05-14 14:30:39 +10:00
Henry Loenwind a3d75ea69e Prevent crashes when the used item cannot be found on the player
* re https://github.com/SleepyTrousers/EnderIO/issues/4218
2017-05-14 06:25:23 +02:00
Forstride 6f975cd2c2 Added Mycelial Netherrack to the Fungi Forest, tweaked Nether biome weights 2017-05-13 17:17:33 -04:00
Al05 e5f94ae1a6 Update bg_BG.lang (#1001)
Al_05: Finished bulgarian translation for 1.11.2
2017-05-10 19:14:07 +10:00
Adubbz d52ab2593c Incremented the Forge dependency number
Not that it will stop people from reporting that their Forge version. Is out of date...
2017-05-08 14:58:41 +10:00
Forstride eb1426660c Prevented the Frozen Ocean biome from generating in colder climates 2017-05-06 12:55:43 -04:00
Nazenn 51190a6acf Resumbit:Terrarium redo (#1007) 2017-05-04 14:40:32 +10:00
Forstride f17453b138 Updated Biome Dictionary tags 2017-05-04 00:30:07 -04:00
Adubbz a7c14693c3 Update README.md 2017-05-01 06:24:57 +10:00
Adubbz 87790220e8 Merge pull request #1000 from raspopov/patch-1
Updated Russian translation
2017-04-30 23:03:18 +10:00
Adubbz ab82624c03 Merge pull request #998 from Al05/patch-3
Update bg_BG.lang
2017-04-30 23:03:10 +10:00
Nikolay Raspopov be43563053 Updated Russian translation
Added devilweed.
Removed witherwart, cragrock.
Updated tooltips.
Re-arranged file like English one.
2017-04-30 16:01:02 +03:00
Forstride 5ebee30787 Fixed Hellbark saplings 2017-04-29 14:51:22 -04:00
Al05 7c8751781a Update bg_BG.lang
Al_05: Fixed the origin grass block translation.
2017-04-27 19:03:41 +03:00
Forstride 2859232dbb Fixed terrarium recipes and light values 2017-04-27 09:16:59 -04:00
Adubbz 45d9d9a59a Merge pull request #995 from Al05/patch-2
Update bg_BG.lang
2017-04-27 08:04:43 +10:00
Al05 8ae13abd3d Update bg_BG.lang
Some translation problems has appeared so I fixed this.
2017-04-26 21:23:06 +03:00
Adubbz 4cc31d5088 Merge pull request #994 from Al05/patch-1
Create bg_BG.lang
2017-04-26 18:12:17 +10:00
Al05 e8deac5d4c Create bg_BG.lang 2017-04-25 21:22:39 +03:00
Adubbz f1e5fac333 Removed birds from the background of the wasp sounds. Courtesy of GridMonkey 2017-04-25 11:27:21 +10:00
Adubbz fad06e3289 Let's finish sentences... 2017-04-25 10:07:54 +10:00
Adubbz 24ff101a03 Overrode getBaseHeight and getHeightVariation for better compatibility with Pioneer 2017-04-25 10:05:56 +10:00
Forstride 95810b636b Reduced the number of trees in the Redwood Forest 2017-04-23 15:49:09 -04:00
Forstride a902dd3a39 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-04-22 11:27:33 -04:00
Forstride 8f6d19f853 Fixed overgrown stone, toned down the frequency of wasp hives 2017-04-22 11:27:29 -04:00
Adubbz 765811f989 Added a workaround for Forge log spam. Closes #989 2017-04-22 15:37:25 +10:00
Adubbz e227dde68e Incremented version number to 6.1.0 2017-04-22 10:20:50 +10:00
Forstride 984e4e395c Additional textures for the Lost Soul 2017-04-21 20:14:13 -04:00
Forstride 806e6b5d35 Improvements to flesh blocks 2017-04-21 15:41:43 -04:00
Forstride bb0f2eb27d Finished up Nether biomes 2017-04-21 11:46:26 -04:00
Forstride 0cf39d0b33 Removed the Boneyard. Fixed overgrown stone/netherrack and spectral moss blocks. More improvements to Nether biomes 2017-04-21 10:45:01 -04:00
Adubbz 50643ec899 Added fossils to the Boneyard 2017-04-21 23:11:01 +10:00
Forstride fe5df48f1f Removed Witherwart, added Devilweed, improved various Nether biomes 2017-04-21 08:40:48 -04:00
Adubbz 6b886e1ef2 Added bone segment blocks 2017-04-21 21:26:33 +10:00
Adubbz bf5424becc Vines now generate correctly in the Undergarden 2017-04-21 18:39:02 +10:00
Adubbz a71c5ec545 Improved hive placement code 2017-04-21 13:42:04 +10:00
Forstride 8266e14b35 Nether biome tweaks 2017-04-20 21:54:38 -04:00
Adubbz 1fda3b3b2e Added hive generation 2017-04-21 11:27:41 +10:00
Forstride c35964f8b4 Something something nether biomes 2017-04-20 13:06:51 -04:00
Forstride a2d4ac5541 You guessed it, more Nether biome stuff 2017-04-20 12:06:15 -04:00
Forstride 6fe11a828b More work on Nether biomes 2017-04-20 09:56:56 -04:00
Adubbz d961e3ece1 Added custom scatter y support for big mushrooms 2017-04-20 23:21:20 +10:00
Adubbz bed2b97b1f Wasps can now breathe under water (in honey), added the code for hive generation (not enabled) 2017-04-20 22:30:38 +10:00
Adubbz ed934fb8a3 Added scatterY support for trees and lakes. Fixed twigs in the Undergarden 2017-04-20 14:55:48 +10:00
Adubbz 31c61e42d5 Adjusted the Nether biome decoration order to be more in line with the Overworld
This may cause issues, we'll have to see
2017-04-20 13:45:43 +10:00
Adubbz 79a0a4aa00 Added a new ScatterYMethod for the Nether 2017-04-20 13:44:53 +10:00
Adubbz bb4be1aeec No longer double up on top and filler block fields for nether biomes 2017-04-20 13:43:30 +10:00
Forstride d3d93cf5bf Redesigned the Crag biome and removed Crag Rock 2017-04-19 16:51:21 -04:00
Forstride 6ac5963e9e More Nether biome stuff 2017-04-19 14:18:24 -04:00
Forstride 6e69b3ca29 More work on Nether biomes 2017-04-19 12:49:14 -04:00
Adubbz 73cc849186 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-04-19 20:51:11 +10:00
Adubbz 177de1610e Moved block replacing code to BOPHellBiome, fixed a bug with inverted z and x args for chunkprimer, added the Polar Chasm 2017-04-19 20:47:49 +10:00
Adubbz 99f9ae7a2c Reorganising BOPBiome into BOPOverworldBiome 2017-04-19 17:36:34 +10:00
Adubbz 154a96a413 Nether biomes can now be added 2017-04-19 16:11:09 +10:00
Adubbz d5f4c73459 Merge pull request #981 from GirafiStudios/forge_config
Changed GUI config category strings, Closes #960
2017-04-18 18:18:02 +10:00
Adubbz 714f727b2d Disabling replacement dimension until nether biomes have been added properly 2017-04-18 18:01:25 +10:00
Adubbz 84003cf959 Preliminary work towards Nether biomes 2017-04-18 17:56:55 +10:00
GirafiStudios d673d9a78d Changed GUI config category strings, Closes #960
Updated to latest Forge, to start using the new GUI Factory stuff. Greatly simplifies the class.
2017-04-09 23:43:21 +02:00
Adubbz d7779e6290 Merge pull request #971 from Lasagnoa/1.11.x-6.0.x-JPLang
1.11.2-6.0.2.2168-universal JP Lang file
2017-03-20 18:52:08 +11:00
Lasagnoa 90d88e0d46 1.11.2-6.0.2.2168-universal JP Lang file
1.11.2-6.0.2.2168-universal  add Japanese language file
2017-03-20 12:51:47 +09:00
Forstride efcefe1c69 Added BOP dirt to OreDictionary 2017-03-14 14:07:39 -04:00
Forstride 08de2f7c6a Merge pull request #969 from NatsuArashi/patch-6
Update zh_TW.lang
2017-03-14 02:20:20 -04:00
NatsuArashi 7dd3610be8 Update zh_TW.lang 2017-03-14 11:35:13 +08:00
Adubbz 28370f7092 Merge pull request #967 from GirafiStudios/BOP-1.11.x-6.0.x
Fixed Botania horn of the wild support
2017-03-11 09:14:53 +11:00
Adubbz 6b3344a511 Merge pull request #966 from Xandoria/BOP-1.11.x-6.0.x
fr_FR.lang file update
2017-03-11 09:13:55 +11:00
GirafiStudios 38bc788229 Fixed Botania horn of the wild support 2017-03-10 23:12:01 +01:00
Xandoria cbe5d42fcb fr_FR.lang file update
I have translated BiomesO'Plenty into French. There was already a fr_FR.lang file but with very few translations. Here I have translated everything.
2017-03-10 20:14:37 +01:00
Adubbz 880b49a025 Merge pull request #962 from raspopov/patch-2
Completed Russian translation
2017-03-09 18:37:00 +11:00
Nikolay Raspopov b592a98bb5 Completed Russian translation 2017-03-05 18:50:13 +03:00
Adubbz 7f7c12fce7 Fixed a typo with the flowering grass block 2017-03-05 11:31:39 +11:00
Adubbz 35183a893c Merge pull request #957 from raspopov/patch-1
Updated Russian translation
2017-03-05 11:29:22 +11:00
Nikolay Raspopov d5306d6d23 Updated Russian translation
More than 50 of new translated lines.
2017-03-04 15:57:02 +03:00
Adubbz 5317332418 Merge branch 'BOP-1.11.x-6.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.11.x-6.0.x 2017-03-04 12:54:27 +11:00
Adubbz 7d2845a36e Updated terrain configuration options for our current setup 2017-03-04 12:52:38 +11:00
Forstride 0e5bbc753f Stopped thorns from damaging the player if broken with bare hands 2017-03-01 11:38:40 -05:00
Adubbz 961e57a304 Moved gem distribution info to the wiki 2017-02-24 20:47:01 +11:00
Adubbz 486603da72 Merge pull request #952 from marcoasfonseca/patch-4
Update pt_PT.lang
2017-02-18 20:56:56 +11:00
marcoasfonseca 8aaba4e6b1 Update pt_PT.lang 2017-02-18 09:51:25 +00:00
Adubbz 358a40d76a Poking Jenkins 2017-02-17 09:45:32 +11:00
Adubbz dc656422d0 Incremented the version number 2017-02-15 13:26:42 +11:00
Adubbz 46febb809a Added generator configuration support for Vanilla biomes. Closes #948 2017-02-15 13:16:32 +11:00
Adubbz 24d8856598 Fixed Woodland Mansion generation, along with the /locate command. Closes #910 2017-02-15 12:53:27 +11:00
Adubbz b494aeeaea Fixed mud brick stairs lighting. Closes #942 2017-02-15 11:42:22 +11:00
Adubbz 2877fc84df Enabled neighbour updates for bop saplings. Closes #931 2017-02-15 11:22:59 +11:00
Adubbz d26340e109 Added Robijnvogel's gem list to the README 2017-02-08 11:06:16 +11:00
Adubbz 4057201f49 Updated the README 2017-01-29 11:36:36 +11:00
Adubbz db76194689 Commas are a thing 2017-01-29 11:31:08 +11:00
Adubbz 8a8632b04f Updated the issue template for 1.11 2017-01-29 11:30:38 +11:00
Adubbz 4977b0100c Merge pull request #944 from srs-bsns/BOP-1.11.2-6.0.x
Update to 1.11.2
2017-01-29 09:58:33 +11:00
srs-bsns 39c272cf7c
Update to 1.11.2
Signed-off-by: srs-bsns <forfrdm@gmail.com>
2017-01-27 22:32:17 -05:00
Adubbz c5f4469a21 Merge pull request #939 from HenryLoenwind/crash924-1.11
Fix #924
2017-01-22 21:13:49 +11:00
Henry Loenwind 5ac38b686a Fix #924
Don't bypass the blockstate and don't bypass it with wrong parameters
2017-01-22 11:09:10 +01:00
Adubbz 25cb2ee6f4 Merge pull request #937 from Mazdallier/patch-1
Create fr_FR.lang
2017-01-21 08:48:28 +11:00
Mazdallier d7f634051d Create fr_FR.lang 2017-01-20 22:12:51 +01:00
Adubbz c8ab581422 Removed unnecessary Result.ALLOW for all generators
This should no longer be needed
2017-01-03 23:37:35 +11:00
Adubbz 6c6a71aae5 Merge pull request #930 from nornagon/extraconfig-1.11
Make some noise params from vanilla configurable
2017-01-01 11:09:19 +11:00
Jeremy Apthorp eb1d359bf4 Make some noise params from vanilla configurable
Specifically:
- Main Noise X/Y/Z
- Coordinate Scale
- Height Scale
- Lower/Upper Limit Scale
2016-12-31 12:43:37 -08:00
Adubbz 589046124f Incremented version number
Last release didn't contain the fix for the piston pickup crash
2016-12-05 21:34:49 +11:00
Adubbz 18c3c5c125 Merge pull request #922 from GirafiStudios/pickup_fix
Fixed picking up certain blocks, closes #921
2016-12-04 20:12:21 +11:00
GirafiStudios 6258ede756 Fixed picking up certain blocks, closes #921 2016-12-04 09:51:21 +01:00
Adubbz 1f0140167f Fixed model loading errors on startup 2016-12-04 10:55:44 +11:00
Forstride 8a7c42d024 Tweaks to fog colors and density (+8 squashed commit)
Squashed commit:

[b746d29] Update BiomeGenTropicalRainforest.java

[b8d5104] Update BiomeGenTemperateRainforest.java

[149b1ee] Update BiomeGenQuagmire.java

[5885d56] Update BiomeGenLandOfLakes.java

[52a53a7] Update BiomeGenDeadSwamp.java

[97007b5] Update BiomeGenBayou.java

[f7a5fed] Update BiomeGenSnowyForest.java

[17bedb2] Update BiomeGenMarsh.java (+6 squashed commit)

Squashed commit:

[149b1ee] Update BiomeGenQuagmire.java

[5885d56] Update BiomeGenLandOfLakes.java

[52a53a7] Update BiomeGenDeadSwamp.java

[97007b5] Update BiomeGenBayou.java

[f7a5fed] Update BiomeGenSnowyForest.java

[17bedb2] Update BiomeGenMarsh.java (+4 squashed commit)

Squashed commit:

[52a53a7] Update BiomeGenDeadSwamp.java

[97007b5] Update BiomeGenBayou.java

[f7a5fed] Update BiomeGenSnowyForest.java

[17bedb2] Update BiomeGenMarsh.java (+2 squashed commit)

Squashed commit:

[f7a5fed] Update BiomeGenSnowyForest.java

[17bedb2] Update BiomeGenMarsh.java
2016-12-03 19:28:53 +11:00
Forstride 8ecf901112 Update BiomeGenEucalyptusForest.java 2016-12-03 03:15:04 -05:00
Adubbz 02b48b2e8b Re-added biome fog colours and fog density. Closes#251 2016-12-03 18:55:27 +11:00
Adubbz 5791c6dcf2 Leaf piles may now be placed on anything solid. Closes #853 2016-12-03 15:09:27 +11:00
Adubbz 4ad4a82c94 Merge pull request #919 from GirafiStudios/recipes
Added some vanilla convenience recipes, closes #632
2016-12-03 14:07:15 +11:00
GirafiStudios 4ecfc29aa0 Added some vanilla convenience recipes, closes #632
Made recipes using mud use the oredict entry "ballMud"
Minor cleanup in ModCrafting
2016-12-03 04:00:40 +01:00
Adubbz c05ba789f5 Flowering leaves no longer render as white boxes. Closes #696 2016-12-03 13:06:21 +11:00
Adubbz 0be9d68225 Added mud and mudballs to the Ore Dictionary. Closes #877 2016-12-03 09:38:04 +11:00
Adubbz 6e7c6ef76b Added llamas to the Steppe, Mountain and Shrubland. Closes #918 2016-12-03 09:30:47 +11:00
Adubbz a28a7123af Fixed superflat world customization with 'default to bop worldtype' config option enabled. Closes #686 2016-12-03 09:03:43 +11:00
Adubbz 7eb131681d Merge pull request #917 from GirafiStudios/achievement_fix
Fixed some achievements not working
2016-12-02 15:20:36 +11:00
GirafiStudios 62fd7bf613 Fixed some achievements not working
Re-implemented some achievements that have been commented out for a while
Slight cleanup of AchievementEventHandler
2016-12-02 03:53:47 +01:00
Adubbz abfeb8c09c Updated to Forge 2176 (Sigh) 2016-12-02 10:58:38 +11:00
Adubbz 2ae4127f3c Updated to Forge 2173 2016-12-01 11:51:36 +11:00
Adubbz 1218bfe35a Merge pull request #907 from GirafiStudios/flower_basket
Fixed Flower Basket
2016-11-22 10:21:59 +11:00
GirafiStudios 6d9cd6e9a7 Fixed Flower Basket 2016-11-21 17:14:21 +01:00
Adubbz 112018950c Added foliageHeight and foliageDensity options for GeneratorBigTree 2016-11-21 12:50:35 +11:00
Adubbz 016ed8241c Detected biome config files are now logged 2016-11-21 12:50:08 +11:00
Adubbz ebedc1806d Added placeOn option for big trees 2016-11-20 11:24:53 +11:00
Adubbz 519c1b844b Updated to the latest MCP mappings and Forge. Entities now work. 2016-11-19 13:34:43 +11:00
Adubbz 522406c2f5 Merge pull request #901 from GirafiStudios/textures
Fixed flower stem rotation
2016-11-17 23:40:50 +11:00
GirafiStudios 5ed194ae20 Fixed flower stem rotation 2016-11-17 13:39:12 +01:00
Adubbz 6f5e025e61 Merge pull request #900 from GirafiStudios/textures
Fixed log models, Closes #899
2016-11-17 23:31:48 +11:00
GirafiStudios 0641329740 Fixed log models 2016-11-17 13:19:38 +01:00
Adubbz 6756e4b388 Moved IPagedVariants for API independence 2016-11-17 21:21:51 +11:00
Adubbz 44e2f5ef7c The api distribution now includes class files (Gradle sucks, let it be known by the entire world) 2016-11-17 21:19:12 +11:00
Adubbz 59cf504d44 Removed incorrect version support from build.gradle 2016-11-17 12:38:17 +11:00
Adubbz 3515aa1fa7 Updated required forge version 2016-11-17 12:35:12 +11:00
Adubbz 798e18708b Switched to a lowercase mod id, fixed bucket textures 2016-11-17 12:28:49 +11:00
Adubbz 4f802ca60c Some men want to watch the world burn (#897) 2016-11-17 00:07:52 +11:00
Adubbz 4956eb5071 Fixed a crash on world loading 2016-11-16 19:39:37 +11:00
Adubbz b42cd57cc9 Updated Forge and fixed localizations 2016-11-16 19:17:26 +11:00
Adubbz 7f19449317 Initial update to 1.11 2016-11-16 18:50:10 +11:00
Adubbz fcc7c37195 Switched to using getMetadata() rather than getItemDamage(). Closes #897 (If it doesn't, I blame Gregtech) 2016-11-16 16:10:53 +11:00
Adubbz 711c696b87 Merge pull request #896 from GirafiStudios/subblock_fix
Fixed wrong BoP log & leave subblocks showing up in JEI, Closes #892
2016-11-14 21:07:11 +11:00
GirafiStudios 82341155b0 Fixed wrong BoP log & leave subblocks showing up in JEI 2016-11-14 11:05:37 +01:00
Adubbz 423303329b Merge pull request #886 from Mickeyxiami/BOP-1.10.2-5.0.x
Use forge universal bucket
2016-11-09 12:03:56 +11:00
Mickeyxiami 0dc4ebeba5 Update BOPItems.java 2016-11-09 08:05:52 +08:00
Mickeyxiami 9b05786710 Add support for switching bucket model 2016-11-09 07:48:32 +08:00
Adubbz eaa95d0b43 Merge pull request #891 from HenryLoenwind/switchPlant
Remove switch(EnumPlantType), see #807
2016-11-09 07:50:26 +11:00
Henry Loenwind dace236373 Remove switch(EnumPlantType), see #807 2016-11-08 12:03:14 +01:00
Mickeyxiami 0065c6da75 Update BOPItems.java 2016-11-08 17:15:36 +08:00
Mickeyxiami 85b4efdbfa Update BOPItems.java 2016-11-07 18:14:48 +08:00
Mickeyxiami 8daf47a394 Use forge universal bucket 2016-11-07 16:56:39 +08:00
Forstride 04276171a6 Merge pull request #884 from GirafiStudios/wasp
Added entity localization, Fixes #883
2016-11-03 12:42:57 -04:00
GirafiStudios d10ec0909b Added entity localization 2016-11-03 16:38:51 +01:00
Adubbz 3d0673dfe0 Merge pull request #882 from GirafiStudios/double_plant_pick
Fixed pick block for flax and eyebulb upper half
2016-11-03 21:17:09 +11:00
GirafiStudios cf39e12de8 Fixed pick block for flax and eyebulb upper half 2016-11-02 21:21:11 +01:00
Adubbz 5324cf499d Merge pull request #875 from GirafiStudios/path_lighting
Made BoP grass paths use neighbor brightness, Closes #873
2016-10-15 22:42:14 +11:00
GirafiStudios 61d05ece31 Made BoP grass paths use neighbor brightness 2016-10-14 21:10:03 +02:00
Forstride 178661a900 Added Spanish translation thanks to DeadPigman17 2016-10-13 14:23:32 -04:00
Forstride a2d15ca34b Merge pull request #871 from GirafiStudios/hoe_damage
Changed the way hoes get damaged when hoeing BoP Farmland for better mod support
2016-10-11 00:12:58 -04:00
GirafiStudios e053ffde53 Removed redundant creative check 2016-10-10 21:58:28 +02:00
GirafiStudios b9dad9c4ff Changed the way hoes get damaged when hoeing BoP Farmland for better mod support
Fixed sound when hoeing BoP farmland as well
2016-10-10 21:44:14 +02:00
Forstride c2a48b1683 Merge pull request #866 from mankra/patch-1
Update de_DE.lang
2016-09-28 16:14:21 -04:00
Manuel Kracht cdbe8bc336 Update de_DE.lang 2016-09-28 15:53:10 +02:00
Forstride 0a8c1600a7 Merge pull request #863 from GirafiStudios/leaves_drop_fix
Fixed that shearing of BoP leaves still dropped fruits & saplings, Closes #859
2016-09-09 22:39:17 -04:00
GirafiStudios 526f80d6e2 Fixed that shearing of BoP leaves still dropped fruits & saplings 2016-09-10 02:33:40 +02:00
Forstride 4ff8185573 Merge pull request #862 from GirafiStudios/silk_touch_test
Fixed getPickBlock for a couple of blocks, Closes #861
2016-09-08 20:34:57 -04:00
GirafiStudios 561bb27d4f Fixed getPickBlock for a couple of blocks 2016-09-09 02:21:45 +02:00
PeakXing be8b008cba Update zh_CN.lang (#860) 2016-09-08 12:11:41 -04:00
Forstride fbc1d6b82e Possibly fixed Quagmire soil disabling issue? 2016-09-06 11:18:52 -04:00
PeakXing 35c08b622a Update zh_CN.lang (#856) 2016-09-05 11:58:44 -04:00
The-Fireplace f774e0754a Fixed setting axe speed (#852) 2016-08-28 00:18:25 -04:00
Girafi 8b67b8c196 Fixed biome finder on servers (#851) 2016-08-26 11:45:58 -04:00
Girafi 8c092b52ec Made shovels effective on mud (#849) 2016-08-24 14:51:01 -04:00
Girafi 57ca9427f2 Added support for Botanias horn of the wild to BoP flowers & plants, Closes #804 (#848)
* Added support for Botanias horn of the wild to BoP flowers & plants

* Made IHornHarvestable optional inferface
2016-08-24 14:50:55 -04:00
NatsuArashi 6c6ab5188a Update zh_TW.lang (#846) 2016-08-24 14:50:47 -04:00
Adubbz d98ec78ccd Merge pull request #840 from GirafiStudios/BOP-1.10.2-5.0.x
Fixed silk touching on BoP blocks
2016-08-24 18:20:59 +10:00
Adubbz d7ed3a742b Merge pull request #844 from GirafiStudios/sheep_eat_grass_ai
Fixed that sheep won't eat BoP grass Fixes #823
2016-08-24 18:20:53 +10:00
Adubbz 42199e5ab4 Merge pull request #845 from williewillus/fixtrim
Skip original position when trimming, closes #816
2016-08-24 18:19:52 +10:00
Adubbz 1e2191a455 Fixed a problem with biome configs not working 2016-08-24 18:18:39 +10:00
Vincent Lee aa8ce11031
Skip original position when trimming, closes #816 2016-08-23 15:25:13 -05:00
GirafiStudios cfcb62fbad Fixed that sheep won't eat BoP grass
- Sheep now also eat BoP variants for tall grass
2016-08-23 21:22:15 +02:00
GirafiStudios 8f95dcc9c3 Fixed that sheep won't eat BoP grass
- Sheep now also eat BoPs variant of tall grass
2016-08-23 21:12:50 +02:00
Forstride e3141b45e6 Update ISSUE_TEMPLATE.md 2016-08-23 13:10:22 -04:00
GirafiStudios eee1a0358a Fixed silk touching on BoP blocks 2016-08-19 00:57:29 +02:00
GirafiStudios 4c680f70a3 Merge remote-tracking branch 'upstream/BOP-1.10.2-5.0.x' into BOP-1.10.2-5.0.x 2016-08-19 00:56:46 +02:00
Girafi 1289bc6552 Fixed jar issues. (#838) 2016-08-18 17:18:44 -04:00
GirafiStudios fdc68ca5bb Fixed jar issues. 2016-08-18 22:54:33 +02:00
Forstride 796dfad992 Merge branch 'BOP-1.10.2-5.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.10.2-5.0.x 2016-08-18 16:42:08 -04:00
Forstride 95d6cc19de Moved enums to API 2016-08-18 16:41:51 -04:00
Girafi d8d9d3a222 Implemented IPlantable in BlockBOPSapling, for better mod support. (#836) 2016-08-18 14:39:23 -04:00
Forstride beefbf5fe9 Delete RenderDart.class 2016-08-18 13:11:05 -04:00
Forstride f66b63a827 Fixed blockstate JSON for staircases 2016-08-16 14:16:21 -04:00
Forstride 2290dcf812 Updated required Forge version 2016-08-14 14:38:17 -04:00
Forstride 149f6992d9 Tweaked flax texture 2016-08-13 20:55:13 -04:00
Forstride fd1180d5dd Fixed stalactite generation, adding more reeds to the Quagmire biome 2016-08-11 22:03:04 -04:00
Forstride 63adef41bf Improved quagmire biome 2016-08-11 17:45:24 -04:00
Forstride 36506a0499 Added thin redwood trees to the Redwood Forest 2016-08-11 15:16:58 -04:00
Forstride 37fffaf09c Fixed mudball throwing 2016-08-11 13:48:01 -04:00
Forstride 91dec0647c Fixed big tree generation when no alt leaf is set 2016-08-11 12:12:06 -04:00
Forstride e882c526bb Improved handler for using shovels to make paths with BOP grass blocks 2016-08-10 23:31:43 -04:00
Forstride b9393fb666 Tweaked Orchard biome. Made alt leaves for big trees less uniform 2016-08-10 22:56:11 -04:00
Forstride 7f55c97c7b Fixed a thing with palm tree generation 2016-08-10 20:48:48 -04:00
Forstride 08dc4392b5 Changed the amount of trees in the Orchard biome, made flowers actually use the flower generator stage, fixed shrubs not replacing grass/other replaceable foliage 2016-08-10 19:23:01 -04:00
Forstride 48ddc0e8c4 Tweaked gems for some biomes 2016-08-10 15:34:17 -04:00
Forstride ace253c59b Fixed rock formation option (As well as glowshrooms and miner's delight for the mushroom/flower options) 2016-08-10 07:49:04 -04:00
Forstride edf48390e1 Replaced poison jars with butterfly jars (Although using empty jars seems to be broken) 2016-08-09 23:50:43 -04:00
Forstride 878055bf15 Fix gem block -> 9 gem crafting recipe 2016-08-09 23:02:39 -04:00
Forstride d68fe0dfb6 Replaced Smoldering Grass with Overgrown Stone, fixed flowering grass spread 2016-08-09 22:55:13 -04:00
Forstride 845c317937 Fixed beaches generating around coral reefs 2016-08-09 18:58:50 -04:00
Forstride e1361e720e Fixed flowering lilies generating in Meadows if BOP water plants option is disabled 2016-08-09 15:01:44 -04:00
Forstride 3faad69fd3 Tweaked the damp grass, wheat grass, short grass, and medium grass textures 2016-08-09 14:20:44 -04:00
Forstride 2b44e08389 Tweaked the Cherry Blossom Grove 2016-08-09 11:52:11 -04:00
Forstride 2ab535981b Added big mushrooms to the Mystic Grove 2016-08-09 04:59:52 -04:00
Forstride a7230f7032 Changed max kelp height in Kelp Forests, removed leaf piles from Bayous, fixed using hoes on our grasstypes if there's a block above 2016-08-09 04:48:31 -04:00
Forstride 6daa914cad Allowed villages to generate in Coniferous Forests, Season Forests, and Woodlands. Added loot table modifier, started working on village material replacement 2016-08-08 21:39:48 -04:00
Forstride d5a5954958 Added polar bears to the Cold Desert and Glacier biomes. Future-proofed generator stages 2016-08-08 16:48:02 -04:00
Forstride d9aa7530f0 Updated mod to 1.10.2 2016-08-08 16:34:06 -04:00
Alex-the-666 20266e08dc ignore idea 2016-08-08 12:48:54 -07:00
Alex-the-666 e578b2ccd4 sheep eat mod grass I hope 2016-08-08 12:48:54 -07:00
Forstride 57387f8248 Tweaked the Bog biome 2016-08-08 15:05:28 -04:00
Forstride 70908a2566 Tweaked Dead Forest biome 2016-08-08 14:03:19 -04:00
Forstride ab6e0ca3fd Fixed melons/pumpkins for dirt 2016-08-08 13:16:43 -04:00
Forstride 14105a4645 Fixed melons/pumpkins growing on BOP soils, changed density of trees in Ominous Woods, added large oak trees to Mystic Grove 2016-08-08 13:14:31 -04:00
Forstride df0bb97252 [Hopefully] allowed modded shovels to turn BOP grass blocks into grass paths 2016-08-05 08:01:27 -04:00
Forstride c8a1229ad3 Added silty grass/dirt to the Cherry Blossom Grove, Lavender Fields, Mystic Grove, Snowy Forest, and Tundra biomes 2016-08-03 18:37:05 -04:00
Forstride b476b45793 Changed the Enderporter recipe to use Amethyst instead of Souls, changed the Shrub texture 2016-08-03 16:38:16 -04:00
Forstride b82dbfbc85 Removed amethyst tools and armor. Tweaked Bayou grass/foliage color 2016-08-03 13:35:08 -04:00
Forstride 767ba3a69f Fixed shroom powder potion effect chance 2016-08-03 10:28:24 -04:00
Forstride 118bdae86c Fixed some stuff with liquids 2016-08-03 09:44:16 -04:00
Adubbz 3fe575214b Merge pull request #811 from lazerzes/BOP-1.9.4-4.1.x
Fix for Turkish Locale bug in 1.10+
2016-07-23 12:43:45 +10:00
Rei Armenia 2b0366860f Update BiomesOPlenty.java 2016-07-21 01:02:54 -04:00
Rei Armenia dcbe813f24 Fix for Turkish Locale bug! 2016-07-21 01:01:29 -04:00
Forstride 5dcc78908b Added jelled poison, and mixing effects for liquids 2016-07-18 07:21:01 -04:00
Forstride a198d003da Made quicksand a fluid (Compatible with existing worlds) 2016-07-18 06:19:17 -04:00
Forstride 292e7d2683 Fixed boulder and cacti generation 2016-07-18 05:21:49 -04:00
Forstride 9184a1b39c Removed wheat grass/damp grass from some biomes 2016-07-15 21:49:08 -04:00
Forstride ef9ffaf7f5 More work on nether override stuff 2016-07-14 23:56:39 -04:00
Forstride 3f781076ef Fixed building 2016-07-14 15:50:59 -04:00
Forstride fc52431265 Allowed rivers to go through gravel beaches 2016-07-14 14:39:54 -04:00
Forstride 2f734496c7 Added 1.10.2 version support for CurseForge 2016-07-14 14:36:33 -04:00
Forstride 20935a3fbd Started on the foundation to re-add Nether biomes 2016-07-14 05:12:31 -04:00
Forstride 8d44e0aac3 Changed the frequency of hot springs appearing in the Alps, Mystic Grove, and Sacred Springs 2016-07-13 19:39:06 -04:00
Forstride f3a0aad4a4 Fixed door sound type 2016-07-13 17:08:52 -04:00
Forstride 27bc50ca78 Updated mcmod.info 2016-07-12 14:35:09 -04:00
Forstride cdeffc1dfa Removed bone segment blocks 2016-07-11 18:26:07 -04:00
Forstride 9ca79082e2 Updated creative tab icon 2016-07-11 02:41:57 -04:00
Forstride e4e429e547 Removed dart blowers 2016-07-11 01:20:46 -04:00
Forstride 7060677e50 Disabled rain in arid desert biomes 2016-07-10 21:18:34 -04:00
Forstride 921f60b271 Updated mcmod.info 2016-07-10 19:15:45 -04:00
Forstride d7457a34bf Tweaked a few item textures 2016-07-10 13:11:19 -04:00
Forstride 07397a6147 Fixed Tall Cattail localizezd name 2016-07-06 20:02:03 -04:00
Adubbz 5549defff0 Attempted to mark 1.9.4 builds as supporting 1.10 on Curse 2016-06-26 22:28:27 +10:00
Adubbz 52b0c0afe7 Only 1.9.4 and 1.10 are currently supported 2016-06-26 21:28:10 +10:00
Adubbz c300cf8b26 Merge pull request #795 from TartaricAcid/BOP-1.9.4-4.1.x
update zh_CN file
2016-06-23 16:58:21 +10:00
tartaric_acid 800636f7b0 Merge pull request #1 from TartaricAcid/TartaricAcid-patch-1
update zh_CN file.
2016-06-23 14:54:33 +08:00
tartaric_acid 3d802552da update zh_CN file. 2016-06-22 17:56:33 +08:00
Adubbz dd3adbb48c Merge pull request #794 from GirafiStudios/BOP-1.9.4-4.1.x
Added path blocks for BoP grasses Closes #737
2016-06-22 17:51:10 +10:00
GirafiStudios 949708d80b Added path blocks for BoP grasses 2016-06-21 17:36:47 +02:00
Forstride 547cc1b885 Changed bamboo textures (More of a green color now instead of yellow) 2016-06-19 06:03:22 -04:00
Forstride c91ba4ea3c Prevent snow from generating in the Cold Desert, reduced amount of mud in the Bayou 2016-06-19 05:35:29 -04:00
Adubbz a85778bdd2 Merge pull request #790 from TartaricAcid/BOP-1.9.4-4.1.x-zh_CN-update
A zh_CN update
2016-06-14 20:35:10 +10:00
TartaricAcid 5116af2c52 Update zh_CN.lang 2016-06-14 13:34:22 +08:00
TartaricAcid 803a9be001 Update zh_CN.lang 2016-06-13 18:42:12 +08:00
Adubbz 07534f0428 Merge pull request #784 from GirafiStudios/BOP-1.9.4-4.1.x
Fixed startup crash with Forge 1948+ Closes #783
2016-06-04 19:28:04 +10:00
GirafiStudios abb8649077 Fixed startup crash with Forge 1948+ 2016-06-04 10:58:10 +02:00
Adubbz 79867ffcb3 Merge pull request #782 from GirafiStudios/BOP-1.9.4-4.1.x
Added client side only annotation to all IItemColors and IBlockColor Closes #781
2016-06-04 10:09:09 +10:00
GirafiStudios 6bddc9c462 Added client side only annotation to all IItemColors and IBlockColor 2016-06-03 17:04:19 +02:00
Adubbz 271377ad79 Merge pull request #774 from GirafiStudios/BOP-1.9.4-4.1.x
Fixed BoP crashing on newer version of Forge Closes #773
2016-05-27 06:00:50 +10:00
GirafiStudios 3f91da14ae Fixed BoP crashing on newer version of Forge 2016-05-26 21:26:29 +02:00
Adubbz e53c2f1adc Merge pull request #767 from NatsuArashi/patch-4
Update zh_TW.lang
2016-05-23 06:22:10 +10:00
NatsuArashi 68266ab529 Update zh_TW.lang 2016-05-22 00:56:19 +08:00
Adubbz 5bf92af507 Corrected the version number 2016-05-21 10:37:58 +10:00
Adubbz 27b8dfb7d8 Updated to 1.9.4 2016-05-21 09:23:08 +10:00
Adubbz 9a57f08ca3 Fixed a crash when the game is obfuscated 2016-04-24 09:09:59 +10:00
Adubbz 1ddfc8a36e Our genlayer stack is now accessible 2016-04-23 11:54:47 +10:00
Adubbz 57ccd700b2 Added an api task 2016-04-23 11:22:04 +10:00
Adubbz e6fedda008 Massive rework of the API 2016-04-23 10:58:56 +10:00
Adubbz 41592ac920 Fixed a random crash with grass_splatter 2016-04-23 08:37:46 +10:00
Adubbz 41b073d3aa Some initial rearranging before fixing the API 2016-04-17 20:24:08 +10:00
Adubbz ae7f534ef9 Fixed fluid effects 2016-04-13 19:57:18 +10:00
Adubbz 739416dea4 Merge pull request #741 from topisani/BOP-1.9-4.0.x
Updated forge and mappings
2016-04-13 16:33:02 +10:00
topisani 9dba4b3bdb Updated forge and mappings 2016-04-12 20:40:19 +02:00
Forstride 8747322d82 Improved eucalyptus plank texture 2016-04-10 20:35:29 -04:00
Forstride 6098e96d2e Improved eucalyptus log texture 2016-04-10 13:18:03 -04:00
Adubbz 04bcdbfd1c Future builds show be 4.0.2 2016-04-10 11:05:35 +10:00
Adubbz 47c8c813dd Updated the version number 2016-04-10 11:02:10 +10:00
Adubbz cff4a80b88 Fixed a crash with BlockBOPGrass 2016-04-10 10:55:59 +10:00
Forstride 02efee5e77 Fixed a few more things for generator settings 2016-04-09 00:08:48 -04:00
Forstride 870d3eef1d Fixed generator settings 2016-04-08 22:28:24 -04:00
Forstride fda0a8db85 Added cocoa beans to more trees 2016-04-07 02:49:47 -04:00
Adubbz 3802fa2248 Fixed the biome finder 2016-04-07 16:32:43 +10:00
Forstride ba6d47938d Added proper Mangrove trees 2016-04-06 23:27:37 -04:00
Forstride 8427e01748 Made our big trees look like vanilla's 2016-04-06 22:36:19 -04:00
Forstride 09e6276fee Added lily pads to the Meadow biome 2016-04-06 22:09:48 -04:00
Forstride 2266314959 Fixed underground decoration placement 2016-04-06 21:32:48 -04:00
Forstride cf01d10c27 Added Glowshroom and Miner's Delight generation 2016-04-06 20:51:22 -04:00
Adubbz 24a41aefa9 Cleaned up stone formation code 2016-04-07 09:49:57 +10:00
Forstride 48935837e1 Fixed stone formations 2016-04-06 19:34:08 -04:00
Forstride bc6010c9fe Added stone formation generation, but broke stone formation block states 2016-04-06 19:13:03 -04:00
Forstride 32d1d72424 Changed storm formation bounding box 2016-04-06 03:57:23 -04:00
Forstride ef1a45a969 Added stone formation blocks (No generation yet) 2016-04-06 02:56:50 -04:00
Forstride f1d1bfd523 Fixed palm tree generation 2016-04-06 02:01:51 -04:00
Forstride f29442e8f1 Improved Chaparral biome 2016-04-05 23:23:51 -04:00
Forstride 8f06f0d8e2 Improved Redwood Forests 2016-04-05 22:58:12 -04:00
Adubbz 285a747073 Updated to the latest Forge 2016-04-05 17:02:49 +10:00
Forstride 3b27a8be73 Removed XZ offset for mushrooms 2016-04-04 21:20:25 -04:00
Adubbz 2c08dc3c5b Fixed a potential crash with trails 2016-04-05 11:19:15 +10:00
Adubbz ff45984c2d Prevent saplings from dropping if their item is null. Closes #731 2016-04-04 09:41:26 +10:00
Adubbz a6e24ab4d4 Fixed fluid collision boxes. Closes #732 2016-04-04 09:17:44 +10:00
Adubbz effbbdf807 And again (Turns out the version I wanted was still being built >_>) 2016-04-03 18:10:08 +10:00
Adubbz 33f466d360 Updated Forge again 2016-04-03 18:08:10 +10:00
Adubbz f00b3e9c60 Updated to the latest Forge. Closes #730 2016-04-03 16:35:24 +10:00
Forstride d874078dc3 Fixed block placement for reeds 2016-04-03 01:57:44 -04:00
Adubbz 82d219530e Fixed right clicking berry bushes with a block in hand 2016-03-31 23:25:48 +11:00
Adubbz 334b746713 Merge pull request #727 from srs-bsns/BOP-1.9-4.0.x
Sets a full version number with appended build number for mod registr…
2016-03-29 11:11:45 +11:00
srs-bsns e90fd8b686 Sets a full version number with appended build number for mod registration.
This is very useful for mods that wish to use strict soft dependencies.
2016-03-28 19:52:57 -04:00
Forstride d602c1d0fc Added biome dictionary tags for Orchard 2016-03-28 08:46:11 -04:00
Adubbz 0e2803e2fd Revert "Swapped leaf piles/dead leaf piles and dune grass/spectral ferns so shaders can be supported better."
This reverts commit 639d8079a3.
2016-03-28 10:01:24 +11:00
Forstride 639d8079a3 Swapped leaf piles/dead leaf piles and dune grass/spectral ferns so shaders can be supported better. 2016-03-27 14:48:37 -04:00
Forstride edc7bcbd21 Tweaked Mangrove biomes, added temporary trees 2016-03-26 04:41:06 -04:00
Forstride 12fd5f7d8e Tweaked the Tropical Island 2016-03-26 02:28:02 -04:00
Forstride f1328f9279 Added palm trees to the Tropical Island and Oasis 2016-03-25 23:47:52 -04:00
Adubbz c2a54d21f9 Implemented palm trees 2016-03-26 14:08:41 +11:00
Forstride be161dbba3 Split up biome finder textures 2016-03-25 20:28:18 -04:00
Adubbz b7a3079626 Create ISSUE_TEMPLATE.md 2016-03-26 00:59:13 +11:00
Adubbz 44d88ca265 Fixed the perspectives of offhand tools 2016-03-25 19:42:27 +11:00
Adubbz d8ecc2d352 Copied over changes from 1.8.9 version 2016-03-25 19:34:58 +11:00
Adubbz 2d0653c64c Fixed custom tool materials 2016-03-25 19:22:18 +11:00
Adubbz 07a057a6e6 Fixed the flower basket model 2016-03-25 18:40:18 +11:00
Adubbz 5c4ce2f70f Fixed opening the flower basket 2016-03-25 18:08:38 +11:00
Adubbz 31a451d80d Fixed flowering lily colouring 2016-03-25 17:53:11 +11:00
Adubbz 86479b6bbc Fixed entity sounds and records 2016-03-25 17:37:38 +11:00
Adubbz ab944b9b3f Updated MCP names, fixed entity movement 2016-03-25 12:19:17 +11:00
Adubbz d739eb966e Fixed spawn eggs 2016-03-25 11:45:05 +11:00
Adubbz c3f6f0e011 Darts now spawn correctly 2016-03-25 10:56:07 +11:00
Adubbz 13ef3f8e0a Updated to the latest Forge 2016-03-25 10:46:17 +11:00
Forstride c2d642f87b Merge pull request #724 from marcoasfonseca/patch-2
Update pt_PT.lang
2016-03-21 21:51:53 -04:00
marcoasfonseca bbccaa35b0 Update pt_PT.lang 2016-03-22 01:37:11 +00:00
Forstride b5c419413b Update README.md 2016-03-21 21:20:53 -04:00
Forstride d2e485be19 Merge pull request #723 from marcoasfonseca/patch-1
Create pt_PT.lang
2016-03-21 21:19:44 -04:00
marcoasfonseca bc78a67ada Create pt_PT.lang 2016-03-22 01:17:37 +00:00
Forstride 5ce6696bda Tweaked Bayou biome 2016-03-21 20:59:36 -04:00
Forstride c64b77cc92 Fixed Mountain biome/sub-biome names 2016-03-21 18:16:00 -04:00
Forstride ba4fedd159 Tweaked the Marsh, Wetland, and Woodland biomes. Fixed mud collision. Made it so wearing pants and boots will prevent the player from getting poisoned by poison ivy, and getting damaged by thorns/tiny cacti 2016-03-21 16:31:24 -04:00
Forstride 25b423cd1d Added Mangrove biome base 2016-03-19 22:29:47 -04:00
Forstride bfcd3056f5 Reduced the amount of poison ivy and grass in certain biomes 2016-03-19 21:20:14 -04:00
Adubbz 3841eb8008 Fixed gravel beach generation 2016-03-20 10:27:48 +11:00
Forstride efb62315a5 Fixed more bounding boxes 2016-03-19 13:13:22 -04:00
Adubbz 95699a0fcd Fixed server crashing. Closes #714 2016-03-19 22:42:25 +11:00
Adubbz 6c3c3cc129 Drastically improved the usefulness of scythes. Previously they weren't breaking as many blocks as they should 2016-03-19 22:03:23 +11:00
Adubbz 1add1ebd34 Fixed armour materials and rendering 2016-03-19 21:34:10 +11:00
Adubbz d2203a780a Fixed a crash with buckets. Closes #713 2016-03-19 20:34:49 +11:00
Adubbz 8cf988e9aa Fixed mudball throwing 2016-03-19 20:34:49 +11:00
Forstride e059a7d94d Fixed bounding boxes for plants 2016-03-18 22:55:28 -04:00
Adubbz a18394bf07 Fixed flowering leaves inventory rendering 2016-03-19 13:19:15 +11:00
Adubbz ae8b26f082 Fixed a crash with quicksand 2016-03-19 13:11:46 +11:00
Adubbz f34543fe99 Fixed leaves colouring once and for all 2016-03-19 13:07:56 +11:00
Adubbz ca62f87f5d Fixed leaves inventory colouring 2016-03-19 00:01:57 +11:00
Adubbz 32a814b7e2 Fixed a crash with biome config files, fixed inventory colouring 2016-03-18 23:52:38 +11:00
Adubbz 711f8d94d7 Lets try and get building working 2016-03-18 21:02:27 +11:00
Adubbz 25c357fbbe Fixed a slight mistake in plant colouring 2016-03-18 06:10:33 +11:00
Adubbz e1bd50ecc0 Updated to the latest MCP mappings, began work on fixing collision/selection boxes 2016-03-17 20:41:51 +11:00
Adubbz 985f635d68 Fixed fence models 2016-03-17 12:13:06 +11:00
Adubbz 32dfd94a4e Fixed sacred oak fence models (for reference in updating the others) 2016-03-17 11:29:41 +11:00
Adubbz d9f7241a4e Fixed bone and fence models 2016-03-17 10:42:35 +11:00
Adubbz 60f2ee807b Fixed block colouring in the world 2016-03-17 10:22:02 +11:00
Adubbz 367fa2cefa Fixed some model stuff, began work on fixing block colouring dependent on https://github.com/MinecraftForge/MinecraftForge/pull/2546 2016-03-16 23:15:05 +11:00
Adubbz b684273256 Fixed item model perspectives 2016-03-16 19:58:32 +11:00
Adubbz 41bbf12ad4 0 errors. Everything seems to run at least 2016-03-15 17:53:54 +11:00
Adubbz f2998d6182 Finished initial updates for biomes. Yay! 2016-03-14 22:41:57 +11:00
Adubbz 435c614893 Blocks are now in a workable state. To fix: Collisions and colouring (and anything else that's broken) 2016-03-14 17:44:18 +11:00
Adubbz cfb443dd4b Fixed some more stuff. Down to 338 errors 2016-03-14 16:39:25 +11:00
Adubbz db0c2e8472 Lots more fixes. Down to 466 errors 2016-03-14 15:48:03 +11:00
Adubbz b04f5ad884 Lots more fixes 2016-03-04 19:33:18 +11:00
Adubbz ebbf1cd592 Work on updating blocks... Down to 737 2016-03-03 22:36:24 +11:00
Adubbz f7e8d3a293 Updated vanilla biome extensions. 801 errors remaining 2016-03-03 22:26:53 +11:00
Adubbz b76b38a28c More updates, mostly finished with biome configs 2016-03-03 22:03:31 +11:00
Adubbz 603b089a4f Updated guis, dispenser behaviours and tree generators 2016-03-03 21:12:41 +11:00
Adubbz c1dd0cdf7a Updated a bunch of stuff, began work on switching over the biome config setup to the new 'BiomeProperties' 2016-03-03 20:51:19 +11:00
Adubbz 46cf8ba098 Fixed a few more things, down to 984 errors 2016-03-03 06:23:44 +11:00
Adubbz ea38d3ed15 Begin updating to 1.9 2016-03-02 22:42:38 +11:00
4672 changed files with 60334 additions and 68151 deletions

View File

@ -0,0 +1,27 @@
---
name: 1.16.3 Standalone Bug
about: For bugs that occur with Biomes O' Plenty for 1.16.3. We do not support older versions!
title: ''
labels: bug-minor
assignees: ''
---
## Bug Report
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
### What's the issue you encountered?
[ Describe the issue in detail and what you were doing beforehand. ]</br>
### How can the issue be reproduced?
[ Include a detailed step by step process for recreating your issue with only Biomes O' Plenty installed. ]</br>
### Logs
[ Please include any relevant logs here. This can be done by dragging and dropping your log files into the issue. ]</br>
### Mod Version
[ Please put the version of the mod you were using here. ]</br>

View File

@ -0,0 +1,23 @@
---
name: 1.16.3 Standalone Crash
about: For crashes that occur with Biomes O' Plenty for 1.16.3. We do not support older versions!
title: ''
labels: crash
assignees: ''
---
## Bug Report
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
### How can the crash be reproduced?
[ Include a detailed step by step process for recreating your crash with only Biomes O' Plenty installed. ]</br>
### Crash Report and Logs
[ Please include your crash report and logs here. This can be done by dragging and dropping your log files and crash report files into the issue. ]</br>
### Mod Version
[ Please put the version of the mod you were using here. ]</br>

View File

@ -0,0 +1,20 @@
---
name: 1.16.3 Feature Request
about: Feature requests for Biomes O' Plenty for 1.16.3. We do not support older versions!
title: ''
labels: feature
assignees: ''
---
## Feature Request
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
### What feature are you suggesting?
[ Provide an overview of the feature being suggested. ]</br>
### Why should it be added?
[ Describe the benefits of implementing this feature. ]</br>

5
.github/ISSUE_TEMPLATE/config.yml vendored Normal file
View File

@ -0,0 +1,5 @@
blank_issues_enabled: false
contact_links:
- name: Glitchfiend Discord
url: https://discord.gg/GyyzU6T
about: Please ask general questions here instead of opening issues for them.

17
.gitignore vendored
View File

@ -1,11 +1,28 @@
/build/
/bin/
/out/
/Mixin/
/repo/
/run/
/logs/
.idea/*
/.gradle/
/.settings/
/.classpath
/.project
# OS generated files
*.DS_Store
# IntelliJ project files
*.iml
*.ipr
*.iws
*.launch
mappings/.gradle/
#mappings/mcp/
mappings/build/
mappings/*.csv
mappings/.project
mappings/last_updated.json

60
Jenkinsfile vendored Normal file
View File

@ -0,0 +1,60 @@
@Library('forge-shared-library')_
pipeline {
options {
disableConcurrentBuilds()
}
agent {
docker {
image 'gradle:jdk8'
args '-v forgegc:/home/gradle/.gradle/'
}
}
environment {
GRADLE_ARGS = '--no-daemon --console=plain' // No daemon for now as FG3 kinda derps. //'-Dorg.gradle.daemon.idletimeout=5000'
JENKINS_HEAD = 'https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png'
}
stages {
stage('fetch') {
steps {
checkout scm
}
}
stage('setup') {
steps {
withGradle {
sh './gradlew ${GRADLE_ARGS} --refresh-dependencies'
}
script {
env.MYVERSION = sh(returnStdout: true, script: './gradlew :properties -q | grep "^version:" | awk \'{print $2}\'').trim()
}
}
}
stage('changelog') {
when {
not {
changeRequest()
}
}
steps {
writeChangelog(currentBuild, "build/BiomesOPlenty-${env.MYVERSION}-changelog.txt")
}
}
stage('publish') {
when {
not {
changeRequest()
}
}
environment {
CURSE_API_KEY = credentials('curse-api-key')
}
steps {
withGradle {
sh './gradlew ${GRADLE_ARGS} :uploadArchives curseforge -PcurseApiKey=${CURSE_API_KEY}'
}
}
}
}
}

View File

@ -1,19 +1,17 @@
<p align="center"><img src="http://i.imgur.com/wdIIbNr.png"></p>
<p align="center"><img src="https://i.imgur.com/HQ2opH6.png"></p>
**Biomes O' Plenty** is a **Minecraft mod** that adds **over 50 new biomes** to the overworld and Nether. From coral reefs to bamboo forests, all of our biomes are decorated with a slew of **new plants, trees, flowers, and more!**
<p align="center"><img src="https://i.imgur.com/CYxKg5M.png"></p>
<p align="center">https://discord.gg/GyyzU6T</p>
**Biomes O' Plenty** is a **Minecraft mod** that adds **over 50 new biomes** to the Overworld, Nether, and End. From Lavender Fields to Redwood Forests and many more, all of our biomes are decorated with a variety of **new trees, flowers, and plants!**
-----------------
**Note:** To use the mod on a **server**, you must set the **level-type** setting in your server's config file to **BIOMESOP**
Also, if you want to **disable or add certain world generation features** in certain biomes, check out our guide for creating **biome configuration files**: https://github.com/Glitchfiend/BiomesOPlenty/wiki/Configuring-Biomes
**Note:** To use the mod on a **server**, you must set the **level-type** setting in your server's config file to **biomesoplenty**
-----------------
**Please note that the 1.8.9 version is still in development. Whilst it may have many bugs fixed compared to 1.7, there will still be some missing features.**
-----------------
[<img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png">](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US).
Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US).

View File

@ -1,90 +1,71 @@
buildscript {
repositories {
mavenLocal()
maven { url = 'https://files.minecraftforge.net/maven' }
jcenter()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
mavenCentral()
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:2.1-SNAPSHOT'
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
}
}
plugins {
id "com.matthewprenger.cursegradle" version "1.0.5"
id "com.matthewprenger.cursegradle" version "1.4.0"
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'net.minecraftforge.gradle'
apply plugin: 'eclipse'
apply plugin: 'idea'
apply plugin: 'maven'
// define the properties file
ext.configFile = file "build.properties"
configFile.withReader {
// read config. it shall from now on be referenced as simply config or as project.config
def prop = new Properties()
prop.load(it)
project.ext.config = new ConfigSlurper().parse prop
}
repositories { mavenLocal() }
group = "com.github.glitchfiend.biomesoplenty"
version = config.mod_version
archivesBaseName = "BiomesOPlenty"
def getGitHash = {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-parse', '--short', 'HEAD'
standardOutput = stdout
}
return stdout.toString().trim()
}
version = "${minecraft_version}-${mod_version}.${System.getenv().BUILD_NUMBER}"
minecraft {
version = config.minecraft_version + "-" + config.forge_version // grab latest forge
useDepAts = true
mappings = project.config.mappings_version
}
mappings channel: 'official', version: minecraft_version
// add some stuff to the version
version = "${config.minecraft_version}-${config.mod_version}.${System.getenv().BUILD_NUMBER}"
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
def commonManifest = {
attributes 'FMLAT': 'biomesoplenty_at.cfg'
}
jar {
manifest commonManifest
classifier = 'universal'
runs {
client = {
workingDirectory = project.file("run").canonicalPath
source sourceSets.main
}
server = {
workingDirectory = project.file("run").canonicalPath
source sourceSets.main
}
}
}
processResources {
from(sourceSets.main.resources.srcDirs) {
include '**/*.info'
include '**/*.properties'
// replaces
expand ([
'modid': project.archivesBaseName,
'mod_version': project.config.mod_version,
'minecraft_version': project.config.minecraft_version,
'build_number': project.config.build_number
])
}
from(sourceSets.main.resources.srcDirs) {
exclude '**/*.info'
exclude '**/*.properties'
from (sourceSets.main.resources.srcDirs) {
include 'META-INF/mods.toml'
expand 'version': project.version
}
}
import net.minecraftforge.gradle.tasks.JenkinsChangelog
import net.minecraftforge.gradle.common.Constants
task changelog(type: JenkinsChangelog) {
def buildNumber = "${System.getenv().BUILD_NUMBER}"
serverRoot = 'http://ci.jenkins.minecraftforge.net/'
jobName = 'BiomesOPlenty'
authName = 'console_script';
authPassword = 'dc6d48ca20a474beeac280a9a16a926e';
targetBuild = buildNumber.toString();
output = 'build/libs/' + project.getName() + '-' + project.version + '-changelog.txt';
jar {
classifier = 'universal'
}
tasks.build.dependsOn('changelog')
dependencies {
minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version
}
task sourcesJar(type: Jar) {
from sourceSets.main.allJava
@ -97,63 +78,64 @@ task sourcesJar(type: Jar) {
task deobfJar(type: Jar) {
from sourceSets.main.output
manifest commonManifest
classifier = 'deobf'
}
task listOutputs << {
//This is needed by the Groovy Postbuild to append labels for each build used in the changelog.
println "Output files:"
println "--------------------"
def list = []
def dir = new File("build/libs/")
if (dir.exists()) {
dir.eachFileRecurse (FileType.FILES) { file ->
//Add each file to the list
list << file
}
//Print the names of all of the output files
list.each {
println it.getName()
}
task apiJar(type: Jar) {
from(sourceSets.main.allJava) {
include 'biomesoplenty/api/**'
}
println "--------------------"
from (sourceSets.main.output) {
include 'LICENSE.txt'
include 'biomesoplenty/api/**'
}
classifier = 'api'
}
tasks.build.finalizedBy('listOutputs')
artifacts {
archives changelog.output
archives sourcesJar
archives deobfJar
}
def changelog_file = rootProject.file("build/BiomesOPlenty-${version}-changelog.txt")
curseforge {
apiKey = "$System.env.curse_api_key"
project {
id = '220318'
changelog = file('build/libs/' + project.getName() + '-' + project.version + '-changelog.txt');
releaseType = 'beta'
if (project.hasProperty('curseApiKey')) {
apiKey = project.getProperty('curseApiKey')
project {
id = '220318'
if (changelog_file.exists()) {
changelog = changelog_file
}
releaseType = 'beta'
mainArtifact(jar) {
displayName = "Biomes O' Plenty ${version}"
}
addArtifact sourcesJar
addArtifact deobfJar
addArtifact apiJar
}
}
}
import groovy.io.FileType
artifacts {
if (changelog_file.exists()) {
archives changelog_file
}
archives jar
archives sourcesJar
archives deobfJar
archives apiJar
}
uploadArchives {
repositories {
mavenDeployer {
if (project.hasProperty('forgeMavenPassword'))
{
repository(url: "http://files.minecraftforge.net/maven/manage/upload") {
if (project.hasProperty('forgeMavenPassword')) {
repository(url: "https://files.minecraftforge.net/maven/manage/upload") {
authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword'))
}
}
else
{
else {
// local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
}
@ -193,21 +175,11 @@ uploadArchives {
name 'Adubbz'
roles { role 'developer' }
}
developer {
id 'Amnet'
name 'Amnet'
roles { role 'developer' }
}
developer {
id 'Forstride'
name 'Forstride'
roles { role 'developer' }
}
developer {
id 'ted80'
name 'ted80'
roles { role 'developer' }
}
}
}
}

View File

@ -1,4 +0,0 @@
minecraft_version=1.8.9
forge_version=11.15.1.1726
mod_version=3.0.0
mappings_version=snapshot_nodoc_20160104

12
gradle.properties Normal file
View File

@ -0,0 +1,12 @@
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
# This is required to provide enough memory for the Minecraft decompilation process.
org.gradle.jvmargs=-Xmx3G
org.gradle.daemon=false
mod_version=13.1.0
minecraft_version=1.16.5
minecraft_version_toml=16
forge_version=36.1.0
forge_version_toml=36
forge_group=net.minecraftforge

Binary file not shown.

View File

@ -1,6 +1,5 @@
#Tue Dec 15 20:33:12 AEDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.9-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip

108
gradlew vendored
View File

@ -6,47 +6,6 @@
##
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn ( ) {
echo "$*"
}
die ( ) {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
@ -61,9 +20,49 @@ while [ -h "$PRG" ] ; do
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
cd "`dirname \"$PRG\"`/" >/dev/null
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
cd "$SAVED" >/dev/null
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
warn () {
echo "$*"
}
die () {
echo
echo "$*"
echo
exit 1
}
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
nonstop=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
NONSTOP* )
nonstop=true
;;
esac
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
@ -90,7 +89,7 @@ location of your Java installation."
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
@ -114,6 +113,7 @@ fi
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
JAVACMD=`cygpath --unix "$JAVACMD"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
@ -154,11 +154,19 @@ if $cygwin ; then
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
# Escape application args
save () {
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
echo " "
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
APP_ARGS=$(save "$@")
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
# Collect all arguments for the java command, following the shell quoting and substitution rules
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
cd "$(dirname "$0")"
fi
exec "$JAVACMD" "$@"

180
gradlew.bat vendored
View File

@ -1,90 +1,90 @@
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega
@if "%DEBUG%" == "" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@rem
@rem ##########################################################################
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:findJavaFromJavaHome
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
:mainEnd
if "%OS%"=="Windows_NT" endlocal
:omega

View File

@ -1,76 +0,0 @@
package thaumcraft.api;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.blocks.BlocksTC;
import thaumcraft.api.items.ItemsTC;
public class OreDictionaryEntries {
/**
* I included this in the API to make it simpler to see what items and blocks are ore dictionaried
*/
public static void initializeOreDictionary() {
OreDictionary.registerOre("oreAmber", new ItemStack(BlocksTC.oreAmber));
OreDictionary.registerOre("oreCinnabar", new ItemStack(BlocksTC.oreCinnabar));
OreDictionary.registerOre("logWood", new ItemStack(BlocksTC.log,1,0));
OreDictionary.registerOre("logWood", new ItemStack(BlocksTC.log,1,3));
OreDictionary.registerOre("plankWood", new ItemStack(BlocksTC.plank,1,0));
OreDictionary.registerOre("plankWood", new ItemStack(BlocksTC.plank,1,1));
OreDictionary.registerOre("slabWood", new ItemStack(BlocksTC.slabWood,1,0));
OreDictionary.registerOre("slabWood", new ItemStack(BlocksTC.slabWood,1,1));
OreDictionary.registerOre("treeSapling", new ItemStack(BlocksTC.sapling,1,0));
OreDictionary.registerOre("treeSapling", new ItemStack(BlocksTC.sapling,1,1));
OreDictionary.registerOre("shardAir", new ItemStack(ItemsTC.shard,1,0));
OreDictionary.registerOre("shardFire", new ItemStack(ItemsTC.shard,1,1));
OreDictionary.registerOre("shardWater", new ItemStack(ItemsTC.shard,1,2));
OreDictionary.registerOre("shardEarth", new ItemStack(ItemsTC.shard,1,3));
OreDictionary.registerOre("shardOrder", new ItemStack(ItemsTC.shard,1,4));
OreDictionary.registerOre("shardEntropy", new ItemStack(ItemsTC.shard,1,5));
OreDictionary.registerOre("shardTainted", new ItemStack(ItemsTC.shard,1,6));
OreDictionary.registerOre("shardBalanced", new ItemStack(ItemsTC.shard,1,7));
OreDictionary.registerOre("nitor", new ItemStack(BlocksTC.nitor,1,OreDictionary.WILDCARD_VALUE));
OreDictionary.registerOre("gemAmber", new ItemStack(ItemsTC.amber));
OreDictionary.registerOre("quicksilver", new ItemStack(ItemsTC.quicksilver));
OreDictionary.registerOre("nuggetGold", new ItemStack(ItemsTC.coin));
OreDictionary.registerOre("nuggetIron", new ItemStack(ItemsTC.nuggets,1,0));
OreDictionary.registerOre("nuggetCopper", new ItemStack(ItemsTC.nuggets,1,1));
OreDictionary.registerOre("nuggetTin", new ItemStack(ItemsTC.nuggets,1,2));
OreDictionary.registerOre("nuggetSilver", new ItemStack(ItemsTC.nuggets,1,3));
OreDictionary.registerOre("nuggetLead", new ItemStack(ItemsTC.nuggets,1,4));
OreDictionary.registerOre("nuggetQuicksilver", new ItemStack(ItemsTC.nuggets,1,5));
OreDictionary.registerOre("nuggetThaumium", new ItemStack(ItemsTC.nuggets,1,6));
OreDictionary.registerOre("nuggetVoid", new ItemStack(ItemsTC.nuggets,1,7));
OreDictionary.registerOre("nuggetBrass", new ItemStack(ItemsTC.nuggets,1,8));
OreDictionary.registerOre("ingotThaumium", new ItemStack(ItemsTC.ingots,1,0));
OreDictionary.registerOre("ingotVoid", new ItemStack(ItemsTC.ingots,1,1));
OreDictionary.registerOre("ingotBrass", new ItemStack(ItemsTC.ingots,1,2));
OreDictionary.registerOre("blockThaumium", new ItemStack(BlocksTC.metal,1,0));
OreDictionary.registerOre("blockVoid", new ItemStack(BlocksTC.metal,1,1));
OreDictionary.registerOre("blockBrass", new ItemStack(BlocksTC.metal,1,4));
OreDictionary.registerOre("plateIron", new ItemStack(ItemsTC.plate,1,1));
OreDictionary.registerOre("gearBrass", new ItemStack(ItemsTC.gear,1,0));
OreDictionary.registerOre("plateBrass", new ItemStack(ItemsTC.plate,1,0));
OreDictionary.registerOre("gearThaumium", new ItemStack(ItemsTC.gear,1,1));
OreDictionary.registerOre("plateThaumium", new ItemStack(ItemsTC.plate,1,2));
OreDictionary.registerOre("gearVoid", new ItemStack(ItemsTC.gear,1,2));
OreDictionary.registerOre("plateVoid", new ItemStack(ItemsTC.plate,1,3));
OreDictionary.registerOre("clusterIron", new ItemStack(ItemsTC.clusters,1,0));
OreDictionary.registerOre("clusterGold", new ItemStack(ItemsTC.clusters,1,1));
OreDictionary.registerOre("clusterCopper", new ItemStack(ItemsTC.clusters,1,2));
OreDictionary.registerOre("clusterTin", new ItemStack(ItemsTC.clusters,1,3));
OreDictionary.registerOre("clusterSilver", new ItemStack(ItemsTC.clusters,1,4));
OreDictionary.registerOre("clusterLead", new ItemStack(ItemsTC.clusters,1,5));
OreDictionary.registerOre("clusterCinnabar", new ItemStack(ItemsTC.clusters,1,6));
}
}

View File

@ -1,674 +0,0 @@
package thaumcraft.api;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.concurrent.ConcurrentHashMap;
import net.minecraft.block.Block;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.CraftingManager;
import net.minecraft.item.crafting.IRecipe;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectHelper;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.crafting.CrucibleRecipe;
import thaumcraft.api.crafting.InfusionEnchantmentRecipe;
import thaumcraft.api.crafting.InfusionRecipe;
import thaumcraft.api.crafting.ShapedArcaneRecipe;
import thaumcraft.api.crafting.ShapelessArcaneRecipe;
import thaumcraft.api.internal.DummyInternalMethodHandler;
import thaumcraft.api.internal.IInternalMethodHandler;
import thaumcraft.api.internal.WeightedRandomLoot;
import thaumcraft.api.research.ResearchCategories;
import thaumcraft.api.research.ResearchCategoryList;
import thaumcraft.api.research.ResearchHelper;
import thaumcraft.api.research.ResearchItem;
import thaumcraft.api.research.ResearchPage;
/**
* @author Azanor
*
*
* IMPORTANT: If you are adding your own aspects to items it is a good idea to do it AFTER Thaumcraft adds its aspects, otherwise odd things may happen.
*
*/
public class ThaumcraftApi {
//Internal (Do not alter this unless you like pretty explosions)
//Calling methods from this will only work properly once Thaumcraft is past the FMLPreInitializationEvent phase.
public static IInternalMethodHandler internalMethods = new DummyInternalMethodHandler();
//RESEARCH/////////////////////////////////////////
public static ArrayList<EntityTags> scanEntities = new ArrayList<EntityTags>();
public static class EntityTagsNBT {
public EntityTagsNBT(String name, Object value) {
this.name = name;
this.value = value;
}
public String name;
public Object value;
}
public static class EntityTags {
public EntityTags(String entityName, AspectList aspects, EntityTagsNBT... nbts) {
this.entityName = entityName;
this.nbts = nbts;
this.aspects = aspects;
}
public String entityName;
public EntityTagsNBT[] nbts;
public AspectList aspects;
}
/**
* This is used to add aspects to entities which you can then scan using a thaumometer.
* Also used to calculate vis drops from mobs.
* @param entityName
* @param aspects
* @param nbt you can specify certain nbt keys and their values
* to differentiate between mobs. <br>For example the normal and wither skeleton:
* <br>ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 5));
* <br>ThaumcraftApi.registerEntityTag("Skeleton", (new AspectList()).add(Aspect.DEATH, 8), new NBTTagByte("SkeletonType",(byte) 1));
*/
public static void registerEntityTag(String entityName, AspectList aspects, EntityTagsNBT... nbt ) {
scanEntities.add(new EntityTags(entityName,aspects,nbt));
}
//RECIPES/////////////////////////////////////////
private static ArrayList craftingRecipes = new ArrayList();
private static HashMap<Object,ItemStack> smeltingBonus = new HashMap<Object,ItemStack>();
/**
* This method is used to determine what bonus items are generated when the infernal furnace smelts items
* @param in The input of the smelting operation. e.g. new ItemStack(Block.oreGold)
* @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0).
* Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced.
*/
public static void addSmeltingBonus(ItemStack in, ItemStack out) {
smeltingBonus.put(
Arrays.asList(in.getItem(),in.getItemDamage()),
new ItemStack(out.getItem(),0,out.getItemDamage()));
}
/**
* This method is used to determine what bonus items are generated when the infernal furnace smelts items
* @param in The ore dictionary input of the smelting operation. e.g. "oreGold"
* @param out The bonus item that can be produced from the smelting operation e.g. new ItemStack(nuggetGold,0,0).
* Stacksize should be 0 unless you want to guarantee that at least 1 item is always produced.
*/
public static void addSmeltingBonus(String in, ItemStack out) {
smeltingBonus.put( in, new ItemStack(out.getItem(),0,out.getItemDamage()));
}
/**
* Returns the bonus item produced from a smelting operation in the infernal furnace
* @param in The input of the smelting operation. e.g. new ItemStack(oreGold)
* @return the The bonus item that can be produced
*/
public static ItemStack getSmeltingBonus(ItemStack in) {
ItemStack out = smeltingBonus.get(Arrays.asList(in.getItem(),in.getItemDamage()));
if (out==null) {
out = smeltingBonus.get(Arrays.asList(in.getItem(),OreDictionary.WILDCARD_VALUE));
}
if (out==null) {
for (int id:OreDictionary.getOreIDs(in)) {
String od = OreDictionary.getOreName( id);
out = smeltingBonus.get(od);
if (out!=null) break;
}
}
return out;
}
public static List getCraftingRecipes() {
return craftingRecipes;
}
/**
* @param research the research key required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output
* @param aspects the vis cost per aspect.
* @param recipe The recipe. Format is exactly the same as vanilla recipes. Input itemstacks are NBT sensitive.
*/
public static ShapedArcaneRecipe addArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe)
{
ShapedArcaneRecipe r= new ShapedArcaneRecipe(research, result, aspects, recipe);
craftingRecipes.add(r);
CraftingManager.getInstance().addRecipe(r);
return r;
}
/**
* @param research the research keys required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output
* @param aspects the vis cost per aspect.
* @param recipe The recipe. Format is exactly the same as vanilla recipes. Input itemstacks are NBT sensitive.
*/
public static ShapedArcaneRecipe addArcaneCraftingRecipe(String[] research, ItemStack result, AspectList aspects, Object ... recipe)
{
ShapedArcaneRecipe r= new ShapedArcaneRecipe(research, result, aspects, recipe);
craftingRecipes.add(r);
CraftingManager.getInstance().addRecipe(r);
return r;
}
/**
* @param research the research key required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output
* @param aspects the vis cost per aspect
* @param recipe The recipe. Format is exactly the same as vanilla shapeless recipes. Input itemstacks are NBT sensitive.
*/
public static ShapelessArcaneRecipe addShapelessArcaneCraftingRecipe(String research, ItemStack result, AspectList aspects, Object ... recipe)
{
ShapelessArcaneRecipe r = new ShapelessArcaneRecipe(research, result, aspects, recipe);
craftingRecipes.add(r);
CraftingManager.getInstance().addRecipe(r);
return r;
}
/**
* @param research the research keys required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output
* @param aspects the vis cost per aspect
* @param recipe The recipe. Format is exactly the same as vanilla shapeless recipes. Input itemstacks are NBT sensitive.
*/
public static ShapelessArcaneRecipe addShapelessArcaneCraftingRecipe(String[] research, ItemStack result, AspectList aspects, Object ... recipe)
{
ShapelessArcaneRecipe r = new ShapelessArcaneRecipe(research, result, aspects, recipe);
craftingRecipes.add(r);
CraftingManager.getInstance().addRecipe(r);
return r;
}
/**
* @param research the research key required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output. It can either be an itemstack or an nbt compound tag that will be added to the central item
* @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an
* instability effect each second while the crafting is in progress
* @param aspects the essentia cost per aspect.
* @param aspects input the central item to be infused. If string is passed it will look up oredictionary entries
* @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive.
* If string is passed it will look up oredictionary entries.
*/
public static InfusionRecipe addInfusionCraftingRecipe(String research,
Object result, int instability, AspectList aspects, Object input, Object[] recipe)
{
if (!(result instanceof ItemStack || result instanceof Object[])) return null;
InfusionRecipe r= new InfusionRecipe(research, result, instability, aspects, input, recipe);
craftingRecipes.add(r);
return r;
}
/**
* @param research the research keys required for this recipe to work. Leave blank if it will work without research
* @param result the recipe output. It can either be an itemstack or an nbt compound tag that will be added to the central item
* @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an
* instability effect each second while the crafting is in progress
* @param aspects the essentia cost per aspect.
* @param aspects input the central item to be infused. If string is passed it will look up oredictionary entries
* @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive.
* If string is passed it will look up oredictionary entries.
*/
public static InfusionRecipe addInfusionCraftingRecipe(String[] research,
Object result, int instability, AspectList aspects, Object input, Object[] recipe)
{
if (!(result instanceof ItemStack || result instanceof Object[])) return null;
InfusionRecipe r= new InfusionRecipe(research, result, instability, aspects, input, recipe);
craftingRecipes.add(r);
return r;
}
/**
* @param research the research key required for this recipe to work. Leave blank if it will work without research
* @param enchantment the enchantment that will be applied to the item
* @param instability a number that represents the N in 1000 chance for the infusion altar to spawn an
* instability effect each second while the crafting is in progress
* @param aspects the essentia cost per aspect.
* @param recipe An array of items required to craft this. Input itemstacks are NBT sensitive.
* If string is passed it will look up oredictionary entries.
*/
@Deprecated
public static InfusionEnchantmentRecipe addInfusionEnchantmentRecipe(String research, Enchantment enchantment, int instability, AspectList aspects, Object[] recipe)
{
InfusionEnchantmentRecipe r= new InfusionEnchantmentRecipe(research, enchantment, instability, aspects, recipe);
craftingRecipes.add(r);
return r;
}
/**
* @param stack the recipe result
* @return the recipe
*/
public static InfusionRecipe getInfusionRecipe(ItemStack res) {
for (Object r:getCraftingRecipes()) {
if (r instanceof InfusionRecipe) {
if (((InfusionRecipe)r).getRecipeOutput() instanceof ItemStack) {
if (((ItemStack) ((InfusionRecipe)r).getRecipeOutput()).isItemEqual(res))
return (InfusionRecipe)r;
}
}
}
return null;
}
/**
* @param key the research key required for this recipe to work.
* @param result the output result
* @param catalyst an itemstack of the catalyst or a string if it is an ore dictionary item
* @param cost the vis cost
* @param tags the aspects required to craft this
*/
public static CrucibleRecipe addCrucibleRecipe(String key, ItemStack result, Object catalyst, AspectList tags) {
return addCrucibleRecipe(new String[] {key},result,catalyst,tags);
}
public static CrucibleRecipe addCrucibleRecipe(String[] keys, ItemStack result, Object catalyst, AspectList tags) {
CrucibleRecipe rc = new CrucibleRecipe(keys, result, catalyst, tags);
getCraftingRecipes().add(rc);
return rc;
}
/**
* @param stack the recipe result
* @return the recipe
*/
public static CrucibleRecipe getCrucibleRecipe(ItemStack stack) {
for (Object r:getCraftingRecipes()) {
if (r instanceof CrucibleRecipe) {
if (((CrucibleRecipe)r).getRecipeOutput().isItemEqual(stack))
return (CrucibleRecipe)r;
}
}
return null;
}
/**
* @param hash the unique recipe code
* @return the recipe
*/
public static CrucibleRecipe getCrucibleRecipeFromHash(int hash) {
for (Object r:getCraftingRecipes()) {
if (r instanceof CrucibleRecipe) {
if (((CrucibleRecipe)r).hash==hash)
return (CrucibleRecipe)r;
}
}
return null;
}
/**
* Used by the thaumonomicon drilldown feature.
* @param stack the item
* @return the thaumcraft recipe key that produces that item.
*/
private static HashMap<int[],Object[]> keyCache = new HashMap<int[],Object[]>();
public static Object[] getCraftingRecipeKey(EntityPlayer player, ItemStack stack) {
int[] key = new int[] {Item.getIdFromItem(stack.getItem()),stack.getItemDamage()};
if (keyCache.containsKey(key)) {
if (keyCache.get(key)==null) return null;
if (ResearchHelper.isResearchComplete(player.getName(), (String)(keyCache.get(key))[0]))
return keyCache.get(key);
else
return null;
}
for (ResearchCategoryList rcl:ResearchCategories.researchCategories.values()) {
for (ResearchItem ri:rcl.research.values()) {
if (ri.getPages()==null) continue;
for (int a=0;a<ri.getPages().length;a++) {
ResearchPage page = ri.getPages()[a];
if (page.recipe!=null && page.recipe instanceof CrucibleRecipe[]) {
CrucibleRecipe[] crs = (CrucibleRecipe[]) page.recipe;
for (CrucibleRecipe cr:crs) {
if (cr.getRecipeOutput().isItemEqual(stack)) {
keyCache.put(key,new Object[] {ri.key,a});
if (ResearchHelper.isResearchComplete(player.getName(), ri.key))
return new Object[] {ri.key,a};
}
}
} else
if (page.recipe!=null && page.recipe instanceof InfusionRecipe[]) {
InfusionRecipe[] crs = (InfusionRecipe[]) page.recipe;
for (InfusionRecipe cr:crs) {
if (cr.getRecipeOutput() instanceof ItemStack && ((ItemStack) cr.getRecipeOutput()).isItemEqual(stack)) {
keyCache.put(key,new Object[] {ri.key,a});
if (ResearchHelper.isResearchComplete(player.getName(), ri.key))
return new Object[] {ri.key,a};
}
}
} else
if (page.recipe!=null && page.recipe instanceof IRecipe[]) {
IRecipe[] crs = (IRecipe[]) page.recipe;
for (IRecipe cr:crs) {
if ( cr.getRecipeOutput().isItemEqual(stack)) {
keyCache.put(key,new Object[] {ri.key,a});
if (ResearchHelper.isResearchComplete(player.getName(), ri.key))
return new Object[] {ri.key,a};
}
}
} else
if (page.recipeOutput!=null && stack !=null &&
(page.recipeOutput instanceof ItemStack &&
((ItemStack)page.recipeOutput).isItemEqual(stack)) ||
(page.recipeOutput instanceof String &&
ThaumcraftApiHelper.containsMatch(true,
new ItemStack[]{stack}, OreDictionary.getOres((String)page.recipeOutput))
)) {
keyCache.put(key,new Object[] {ri.key,a});
if (ResearchHelper.isResearchComplete(player.getName(), ri.key))
return new Object[] {ri.key,a};
else
return null;
}
}
}
}
keyCache.put(key,null);
return null;
}
//ASPECTS////////////////////////////////////////
public static ConcurrentHashMap<List,AspectList> objectTags = new ConcurrentHashMap<List,AspectList>();
public static ConcurrentHashMap<List,int[]> groupedObjectTags = new ConcurrentHashMap<List,int[]>();
/**
* Checks to see if the passed item/block already has aspects associated with it.
* @param id
* @param meta
* @return
*/
public static boolean exists(Item item, int meta) {
AspectList tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,meta));
if (tmp==null) {
tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,OreDictionary.WILDCARD_VALUE));
if (meta==OreDictionary.WILDCARD_VALUE && tmp==null) {
int index=0;
do {
tmp = ThaumcraftApi.objectTags.get(Arrays.asList(item,index));
index++;
} while (index<16 && tmp==null);
}
if (tmp==null) return false;
}
return true;
}
/**
* Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:<p>
* <i>ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1));</i>
* @param item the item passed. Pass OreDictionary.WILDCARD_VALUE if all damage values of this item/block should have the same aspects
* @param aspects A ObjectTags object of the associated aspects
*/
public static void registerObjectTag(ItemStack item, AspectList aspects) {
if (aspects==null) aspects=new AspectList();
try {
objectTags.put(Arrays.asList(item.getItem(),item.getItemDamage()), aspects);
} catch (Exception e) {}
}
/**
* Used to assign apsects to the given item/block. Here is an example of the declaration for cobblestone:<p>
* <i>ThaumcraftApi.registerObjectTag(new ItemStack(Blocks.cobblestone), new int[]{0,1}, (new AspectList()).add(Aspect.ENTROPY, 1).add(Aspect.EARTH, 1));</i>
* @param item
* @param meta A range of meta values if you wish to lump several item meta's together as being the "same" item (i.e. stair orientations)
* @param aspects A ObjectTags object of the associated aspects
*/
public static void registerObjectTag(ItemStack item, int[] meta, AspectList aspects) {
if (aspects==null) aspects=new AspectList();
try {
objectTags.put(Arrays.asList(item.getItem(),meta[0]), aspects);
for (int m:meta) {
groupedObjectTags.put(Arrays.asList(item.getItem(),m), meta);
}
} catch (Exception e) {}
}
/**
* Used to assign apsects to the given ore dictionary item.
* @param oreDict the ore dictionary name
* @param aspects A ObjectTags object of the associated aspects
*/
public static void registerObjectTag(String oreDict, AspectList aspects) {
if (aspects==null) aspects=new AspectList();
List<ItemStack> ores = OreDictionary.getOres(oreDict);
if (ores!=null && ores.size()>0) {
for (ItemStack ore:ores) {
try {
objectTags.put(Arrays.asList(ore.getItem(), ore.getItemDamage()), aspects);
} catch (Exception e) {}
}
}
}
/**
* Used to assign aspects to the given item/block.
* Attempts to automatically generate aspect tags by checking registered recipes.
* Here is an example of the declaration for pistons:<p>
* <i>ThaumcraftApi.registerComplexObjectTag(new ItemStack(Blocks.piston), (new AspectList()).add(Aspect.MECHANISM, 2).add(Aspect.MOTION, 4));</i>
* IMPORTANT - this should only be used if you are not happy with the default aspects the object would be assigned.
* @param item, pass OreDictionary.WILDCARD_VALUE to meta if all damage values of this item/block should have the same aspects
* @param aspects A ObjectTags object of the associated aspects
*/
public static void registerComplexObjectTag(ItemStack item, AspectList aspects ) {
if (!exists(item.getItem(),item.getItemDamage())) {
AspectList tmp = AspectHelper.generateTags(item.getItem(), item.getItemDamage());
if (tmp != null && tmp.size()>0) {
for(Aspect tag:tmp.getAspects()) {
aspects.add(tag, tmp.getAmount(tag));
}
}
registerObjectTag(item,aspects);
} else {
AspectList tmp = AspectHelper.getObjectAspects(item);
for(Aspect tag:aspects.getAspects()) {
tmp.merge(tag, tmp.getAmount(tag));
}
registerObjectTag(item,tmp);
}
}
// WARP
private static HashMap<Object,Integer> warpMap = new HashMap<Object,Integer>();
/**
* This method is used to determine how much warp is gained if the item is crafted. The warp
* added is "sticky" warp
* @param craftresult The item crafted
* @param amount how much warp is gained
*/
public static void addWarpToItem(ItemStack craftresult, int amount) {
warpMap.put(Arrays.asList(craftresult.getItem(),craftresult.getItemDamage()),amount);
}
/**
* This method is used to determine how much permanent warp is gained if the research is completed
* @param in The item crafted
* @param amount how much warp is gained
*/
public static void addWarpToResearch(String research, int amount) {
warpMap.put(research, amount);
}
/**
* Returns how much warp is gained from the item or research passed in
* @param in itemstack or string
* @return how much warp it will give
*/
public static int getWarp(Object in) {
if (in==null) return 0;
if (in instanceof ItemStack && warpMap.containsKey(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()))) {
return warpMap.get(Arrays.asList(((ItemStack)in).getItem(),((ItemStack)in).getItemDamage()));
} else
if (in instanceof String && warpMap.containsKey((String)in)) {
return warpMap.get((String)in);
}
return 0;
}
// LOOT BAGS
/**
* Used to add possible loot to treasure bags. As a reference, the weight of gold coins are 2000
* and a diamond is 50.
* The weights are the same for all loot bag types - the only difference is how many items the bag
* contains.
* @param item
* @param weight
* @param bagTypes array of which type of bag to add this loot to. Multiple types can be specified
* 0 = common, 1 = uncommon, 2 = rare
*/
public static void addLootBagItem(ItemStack item, int weight, int... bagTypes) {
if (bagTypes==null || bagTypes.length==0)
WeightedRandomLoot.lootBagCommon.add(new WeightedRandomLoot(item,weight));
else {
for (int rarity:bagTypes) {
switch(rarity) {
case 0: WeightedRandomLoot.lootBagCommon.add(new WeightedRandomLoot(item,weight)); break;
case 1: WeightedRandomLoot.lootBagUncommon.add(new WeightedRandomLoot(item,weight)); break;
case 2: WeightedRandomLoot.lootBagRare.add(new WeightedRandomLoot(item,weight)); break;
}
}
}
}
// PORTABLE HOLE BLACKLIST
/**
* You can blacklist blocks that may not be portable holed through using the "portableHoleBlacklist"
* string message using FMLInterModComms in your @Mod.Init method.
*
* Simply add the mod and block name you don't want the portable hole to go through with a
* 'modid:blockname' designation. For example: "thaumcraft:log" or "minecraft:plank"
*
* You can also specify blockstates by adding ';' delimited 'name=value' pairs.
* For example: "thaumcraft:log;variant=greatwood;variant=silverwood"
*
* You can also give an ore dictionary entry instead: For example: "logWood"
*/
// CROPS
public static HashMap<String,ItemStack> seedList = new HashMap<String,ItemStack>();
/**
* This method is used to register an item that will act as a seed for the specified block.
* If your seed items use IPlantable it might not be necessary to do this as I
* attempt to automatically detect such links.
* @param block
* @param seed
*/
public static void registerSeed(Block block, ItemStack seed) {
seedList.put(block.getUnlocalizedName(), seed);
}
public static ItemStack getSeed(Block block) {
return seedList.get(block.getUnlocalizedName());
}
/**
* To define mod crops you need to use FMLInterModComms in your @Mod.Init method.
* There are two 'types' of crops you can add. Standard crops and clickable crops.
*
* Standard crops work like normal vanilla crops - they grow until a certain metadata
* value is reached and you harvest them by destroying the block and collecting the blocks.
* You need to create and ItemStack that tells the golem what block id and metadata represents
* the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get
* checked.
* Example for vanilla wheat:
* FMLInterModComms.sendMessage("Thaumcraft", "harvestStandardCrop", new ItemStack(Block.crops,1,7));
*
* Clickable crops are crops that you right click to gather their bounty instead of destroying them.
* As for standard crops, you need to create and ItemStack that tells the golem what block id
* and metadata represents the crop when fully grown. The golem will trigger the blocks onBlockActivated method.
* Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked.
* Example (this will technically do nothing since clicking wheat does nothing, but you get the idea):
* FMLInterModComms.sendMessage("Thaumcraft", "harvestClickableCrop", new ItemStack(Block.crops,1,7));
*
* Stacked crops (like reeds) are crops that you wish the bottom block should remain after harvesting.
* As for standard crops, you need to create and ItemStack that tells the golem what block id
* and metadata represents the crop when fully grown. Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the actualy md won't get
* checked. If it has the order upgrade it will only harvest if the crop is more than one block high.
* Example:
* FMLInterModComms.sendMessage("Thaumcraft", "harvestStackedCrop", new ItemStack(Block.reed,1,7));
*/
// NATIVE CLUSTERS
/**
* You can define certain ores that will have a chance to produce native clusters via FMLInterModComms
* in your @Mod.Init method using the "nativeCluster" string message.
* The format should be:
* "[ore item/block id],[ore item/block metadata],[cluster item/block id],[cluster item/block metadata],[chance modifier float]"
*
* NOTE: The chance modifier is a multiplier applied to the default chance for that cluster to be produced (default 27.5% for a pickaxe of the core)
*
* Example for vanilla iron ore to produce one of my own native iron clusters (assuming default id's) at double the default chance:
* FMLInterModComms.sendMessage("Thaumcraft", "nativeCluster","15,0,25016,16,2.0");
*/
// LAMP OF GROWTH BLACKLIST
/**
* You can blacklist crops that should not be effected by the Lamp of Growth via FMLInterModComms
* in your @Mod.Init method using the "lampBlacklist" itemstack message.
* Sending a metadata of [OreDictionary.WILDCARD_VALUE] will mean the metadata won't get checked.
* Example for vanilla wheat:
* FMLInterModComms.sendMessage("Thaumcraft", "lampBlacklist", new ItemStack(Block.crops,1,OreDictionary.WILDCARD_VALUE));
*/
// DIMENSION BLACKLIST
/**
* You can blacklist a dimension to not spawn certain thaumcraft features
* in your @Mod.Init method using the "dimensionBlacklist" string message in the format "[dimension]:[level]"
* The level values are as follows:
* [0] stop all tc spawning and generation
* [1] allow ore and node generation (and node special features)
* [2] allow mob spawning
* [3] allow ore and node gen + mob spawning (and node special features)
* Example:
* FMLInterModComms.sendMessage("Thaumcraft", "dimensionBlacklist", "15:1");
*/
// BIOME BLACKLIST
/**
* You can blacklist a biome to not spawn certain thaumcraft features
* in your @Mod.Init method using the "biomeBlacklist" string message in the format "[biome id]:[level]"
* The level values are as follows:
* [0] stop all tc spawning and generation
* [1] allow ore and node generation (and node special features)
* [2] allow mob spawning
* [3] allow ore and node gen + mob spawning (and node special features)
* Example:
* FMLInterModComms.sendMessage("Thaumcraft", "biomeBlacklist", "180:2");
*/
// CHAMPION MOB WHITELIST
/**
* You can whitelist an entity class so it can rarely spawn champion versions in your @Mod.Init method using
* the "championWhiteList" string message in the format "[Entity]:[level]"
* The entity must extend EntityMob.
* [Entity] is in a similar format to what is used for mob spawners and such (see EntityList.class for vanilla examples).
* The [level] value indicate how rare the champion version will be - the higher the number the more common.
* The number roughly equals the [n] in 100 chance of a mob being a champion version.
* You can give 0 or negative numbers to allow champions to spawn with a very low chance only in particularly dangerous places.
* However anything less than about -2 will probably result in no spawns at all.
* Example:
* FMLInterModComms.sendMessage("Thaumcraft", "championWhiteList", "Thaumcraft.Wisp:1");
*/
}

View File

@ -1,367 +0,0 @@
package thaumcraft.api;
import java.nio.ByteBuffer;
import java.util.Iterator;
import java.util.List;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.Entity;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.MathHelper;
import net.minecraft.util.MovingObjectPosition;
import net.minecraft.util.Vec3;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.aspects.IEssentiaTransport;
public class ThaumcraftApiHelper {
public static boolean areItemsEqual(ItemStack s1,ItemStack s2)
{
if (s1.isItemStackDamageable() && s2.isItemStackDamageable())
{
return s1.getItem() == s2.getItem();
} else
return s1.getItem() == s2.getItem() && s1.getItemDamage() == s2.getItemDamage();
}
/**
* Notifies thaumcraft that something with regards to runic shielding has changed and that it should
* rescan worn items to determine what the max shielding value is.
* It automatically rescans once every 5 seconds, but this makes it happen sooner.
* @param entity
*/
public static void markRunicDirty(Entity entity) {
ThaumcraftApi.internalMethods.markRunicDirty(entity);
}
public static boolean containsMatch(boolean strict, ItemStack[] inputs, List<ItemStack> targets)
{
for (ItemStack input : inputs)
{
for (ItemStack target : targets)
{
if (OreDictionary.itemMatches(target, input, strict))
{
return true;
}
}
}
return false;
}
public static boolean areItemStacksEqualForCrafting(ItemStack stack0, Object in)
{
if (stack0==null && in!=null) return false;
if (stack0!=null && in==null) return false;
if (stack0==null && in==null) return true;
if (in instanceof String) {
List<ItemStack> l = OreDictionary.getOres((String) in);
return containsMatch(false, new ItemStack[]{stack0}, l);
}
if (in instanceof ItemStack) {
//nbt
boolean t1=areItemStackTagsEqualForCrafting(stack0, (ItemStack) in);
if (!t1) return false;
return OreDictionary.itemMatches((ItemStack) in, stack0, false);
}
return false;
}
public static boolean areItemStackTagsEqualForCrafting(ItemStack slotItem,ItemStack recipeItem)
{
if (recipeItem == null || slotItem == null) return false;
if (recipeItem.getTagCompound()!=null && slotItem.getTagCompound()==null ) return false;
if (recipeItem.getTagCompound()==null ) return true;
Iterator iterator = recipeItem.getTagCompound().getKeySet().iterator();
while (iterator.hasNext())
{
String s = (String)iterator.next();
if (slotItem.getTagCompound().hasKey(s)) {
if (!slotItem.getTagCompound().getTag(s).toString().equals(
recipeItem.getTagCompound().getTag(s).toString())) {
return false;
}
} else {
return false;
}
}
return true;
}
public static TileEntity getConnectableTile(World world, BlockPos pos, EnumFacing face) {
TileEntity te = world.getTileEntity(pos.offset(face));
if (te instanceof IEssentiaTransport && ((IEssentiaTransport)te).isConnectable(face.getOpposite()))
return te;
else
return null;
}
public static TileEntity getConnectableTile(IBlockAccess world, BlockPos pos, EnumFacing face) {
TileEntity te = world.getTileEntity(pos.offset(face));
if (te instanceof IEssentiaTransport && ((IEssentiaTransport)te).isConnectable(face.getOpposite()))
return te;
else
return null;
}
// private static HashMap<Integer, AspectList> allAspects= new HashMap<Integer, AspectList>();
// private static HashMap<Integer, AspectList> allCompoundAspects= new HashMap<Integer, AspectList>();
//
// public static AspectList getAllAspects(int amount) {
// if (allAspects.get(amount)==null) {
// AspectList al = new AspectList();
// for (Aspect aspect:Aspect.aspects.values()) {
// al.add(aspect, amount);
// }
// allAspects.put(amount, al);
// }
// return allAspects.get(amount);
// }
//
// public static AspectList getAllCompoundAspects(int amount) {
// if (allCompoundAspects.get(amount)==null) {
// AspectList al = new AspectList();
// for (Aspect aspect:Aspect.getCompoundAspects()) {
// al.add(aspect, amount);
// }
// allCompoundAspects.put(amount, al);
// }
// return allCompoundAspects.get(amount);
// }
public static MovingObjectPosition rayTraceIgnoringSource(World world, Vec3 v1, Vec3 v2,
boolean bool1, boolean bool2, boolean bool3)
{
if (!Double.isNaN(v1.xCoord) && !Double.isNaN(v1.yCoord) && !Double.isNaN(v1.zCoord))
{
if (!Double.isNaN(v2.xCoord) && !Double.isNaN(v2.yCoord) && !Double.isNaN(v2.zCoord))
{
int i = MathHelper.floor_double(v2.xCoord);
int j = MathHelper.floor_double(v2.yCoord);
int k = MathHelper.floor_double(v2.zCoord);
int l = MathHelper.floor_double(v1.xCoord);
int i1 = MathHelper.floor_double(v1.yCoord);
int j1 = MathHelper.floor_double(v1.zCoord);
IBlockState block = world.getBlockState(new BlockPos(l, i1, j1));
MovingObjectPosition movingobjectposition2 = null;
int k1 = 200;
while (k1-- >= 0)
{
if (Double.isNaN(v1.xCoord) || Double.isNaN(v1.yCoord) || Double.isNaN(v1.zCoord))
{
return null;
}
if (l == i && i1 == j && j1 == k)
{
continue;
}
boolean flag6 = true;
boolean flag3 = true;
boolean flag4 = true;
double d0 = 999.0D;
double d1 = 999.0D;
double d2 = 999.0D;
if (i > l)
{
d0 = (double)l + 1.0D;
}
else if (i < l)
{
d0 = (double)l + 0.0D;
}
else
{
flag6 = false;
}
if (j > i1)
{
d1 = (double)i1 + 1.0D;
}
else if (j < i1)
{
d1 = (double)i1 + 0.0D;
}
else
{
flag3 = false;
}
if (k > j1)
{
d2 = (double)j1 + 1.0D;
}
else if (k < j1)
{
d2 = (double)j1 + 0.0D;
}
else
{
flag4 = false;
}
double d3 = 999.0D;
double d4 = 999.0D;
double d5 = 999.0D;
double d6 = v2.xCoord - v1.xCoord;
double d7 = v2.yCoord - v1.yCoord;
double d8 = v2.zCoord - v1.zCoord;
if (flag6)
{
d3 = (d0 - v1.xCoord) / d6;
}
if (flag3)
{
d4 = (d1 - v1.yCoord) / d7;
}
if (flag4)
{
d5 = (d2 - v1.zCoord) / d8;
}
if (d3 == -0.0D)
{
d3 = -1.0E-4D;
}
if (d4 == -0.0D)
{
d4 = -1.0E-4D;
}
if (d5 == -0.0D)
{
d5 = -1.0E-4D;
}
EnumFacing enumfacing;
if (d3 < d4 && d3 < d5)
{
enumfacing = i > l ? EnumFacing.WEST : EnumFacing.EAST;
v1 = new Vec3(d0, v1.yCoord + d7 * d3, v1.zCoord + d8 * d3);
}
else if (d4 < d5)
{
enumfacing = j > i1 ? EnumFacing.DOWN : EnumFacing.UP;
v1 = new Vec3(v1.xCoord + d6 * d4, d1, v1.zCoord + d8 * d4);
}
else
{
enumfacing = k > j1 ? EnumFacing.NORTH : EnumFacing.SOUTH;
v1 = new Vec3(v1.xCoord + d6 * d5, v1.yCoord + d7 * d5, d2);
}
l = MathHelper.floor_double(v1.xCoord) - (enumfacing == EnumFacing.EAST ? 1 : 0);
i1 = MathHelper.floor_double(v1.yCoord) - (enumfacing == EnumFacing.UP ? 1 : 0);
j1 = MathHelper.floor_double(v1.zCoord) - (enumfacing == EnumFacing.SOUTH ? 1 : 0);
IBlockState block1 = world.getBlockState(new BlockPos(l, i1, j1));
if (!bool2 || block1.getBlock().getCollisionBoundingBox(world, new BlockPos(l, i1, j1), block1) != null)
{
if (block1.getBlock().canCollideCheck(block1, bool1))
{
MovingObjectPosition movingobjectposition1 = block1.getBlock().collisionRayTrace(world, new BlockPos(l, i1, j1), v1, v2);
if (movingobjectposition1 != null)
{
return movingobjectposition1;
}
}
else
{
movingobjectposition2 = new MovingObjectPosition(MovingObjectPosition.MovingObjectType.MISS, v1, enumfacing, new BlockPos(l, i1, j1));
}
}
}
return bool3 ? movingobjectposition2 : null;
}
else
{
return null;
}
}
else
{
return null;
}
}
public static Object getNBTDataFromId(NBTTagCompound nbt, byte id, String key) {
switch (id) {
case 1: return nbt.getByte(key);
case 2: return nbt.getShort(key);
case 3: return nbt.getInteger(key);
case 4: return nbt.getLong(key);
case 5: return nbt.getFloat(key);
case 6: return nbt.getDouble(key);
case 7: return nbt.getByteArray(key);
case 8: return nbt.getString(key);
case 9: return nbt.getTagList(key, (byte) 10);
case 10: return nbt.getTag(key);
case 11: return nbt.getIntArray(key);
default: return null;
}
}
public static int setByteInInt(int data, byte b, int index)
{
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(0,data);
bb.put(index, b);
return bb.getInt(0);
}
public static byte getByteInInt(int data, int index) {
ByteBuffer bb = ByteBuffer.allocate(4);
bb.putInt(0,data);
return bb.get(index);
}
public static long setByteInLong(long data, byte b, int index)
{
ByteBuffer bb = ByteBuffer.allocate(8);
bb.putLong(0,data);
bb.put(index, b);
return bb.getLong(0);
}
public static byte getByteInLong(long data, int index) {
ByteBuffer bb = ByteBuffer.allocate(8);
bb.putLong(0,data);
return bb.get(index);
}
public static int setNibbleInInt(int data, int nibble, int nibbleIndex)
{
int shift = nibbleIndex * 4;
return (data & ~(0xf << shift)) | (nibble << shift);
}
public static int getNibbleInInt(int data, int nibbleIndex) {
return (data >> (nibbleIndex << 2)) & 0xF;
}
}

View File

@ -1,9 +0,0 @@
package thaumcraft.api;
public class ThaumcraftEnchantments {
//Enchantment references
public static int HASTE;
public static int REPAIR;
}

View File

@ -1,52 +0,0 @@
package thaumcraft.api;
import net.minecraft.block.material.MapColor;
import net.minecraft.block.material.Material;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
import net.minecraftforge.common.util.EnumHelper;
public class ThaumcraftMaterials {
public static ToolMaterial TOOLMAT_THAUMIUM = EnumHelper.addToolMaterial("THAUMIUM", 3, 500, 7F, 2.5f, 22);
public static ToolMaterial TOOLMAT_VOID = EnumHelper.addToolMaterial("VOID", 4, 150, 8F, 3, 10);
public static ToolMaterial TOOLMAT_ELEMENTAL = EnumHelper.addToolMaterial("THAUMIUM_ELEMENTAL", 3, 1500, 9F, 3, 18);
public static ArmorMaterial ARMORMAT_THAUMIUM = EnumHelper.addArmorMaterial("THAUMIUM","THAUMIUM", 25, new int[] { 2, 6, 5, 2 }, 25);
public static ArmorMaterial ARMORMAT_SPECIAL = EnumHelper.addArmorMaterial("SPECIAL","SPECIAL", 25, new int[] { 1, 3, 2, 1 }, 25);
public static ArmorMaterial ARMORMAT_VOID = EnumHelper.addArmorMaterial("VOID","VOID", 10, new int[] { 3, 7, 6, 3 }, 10);
public static final Material MATERIAL_TAINT = new MaterialTaint();
public static class MaterialTaint extends Material
{
public MaterialTaint()
{
super(MapColor.purpleColor);
setNoPushMobility();
}
@Override
public boolean blocksMovement()
{
return true;
}
@Override
protected Material setNoPushMobility()
{
this.mobilityFlag = 1;
return this;
}
private int mobilityFlag;
@Override
public int getMaterialMobility()
{
return this.mobilityFlag;
}
}
}

View File

@ -1,206 +0,0 @@
package thaumcraft.api.aspects;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.LinkedHashMap;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import org.apache.commons.lang3.text.WordUtils;
import thaumcraft.api.research.ScanAspect;
import thaumcraft.api.research.ScanningManager;
public class Aspect {
String tag;
Aspect[] components;
int color;
private String chatcolor;
ResourceLocation image;
int blend;
/**
* For easy reference of what compounds are made up of
*/
public static HashMap<Integer,Aspect> mixList = new HashMap<Integer,Aspect>();
/**
* Use this constructor to register your own aspects.
* @param tag the key that will be used to reference this aspect, as well as its latin display name
* @param color color to display the tag in
* @param components the aspects this one is formed from
* @param image ResourceLocation pointing to a 32x32 icon of the aspect
* @param blend GL11 blendmode (1 or 771). Used for rendering nodes. Default is 1
*/
public Aspect(String tag, int color, Aspect[] components, ResourceLocation image, int blend) {
if (aspects.containsKey(tag)) throw new IllegalArgumentException(tag+" already registered!");
this.tag = tag;
this.components = components;
this.color = color;
this.image = image;
this.blend = blend;
aspects.put(tag, this);
ScanningManager.addScannableThing(new ScanAspect("!"+tag,this));
if (components!=null) {
int h = (components[0].getTag()+components[1].getTag()).hashCode();
mixList.put(h, this);
}
}
/**
* Shortcut constructor I use for the default aspects - you shouldn't be using this.
*/
public Aspect(String tag, int color, Aspect[] components) {
this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),1);
}
/**
* Shortcut constructor I use for the default aspects - you shouldn't be using this.
*/
public Aspect(String tag, int color, Aspect[] components, int blend) {
this(tag,color,components,new ResourceLocation("thaumcraft","textures/aspects/"+tag.toLowerCase()+".png"),blend);
}
/**
* Shortcut constructor I use for the primal aspects -
* you shouldn't use this as making your own primal aspects will break all the things.
*/
public Aspect(String tag, int color, String chatcolor, int blend) {
this(tag,color,(Aspect[])null, blend);
this.setChatcolor(chatcolor);
}
public int getColor() {
return color;
}
public String getName() {
return WordUtils.capitalizeFully(tag);
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("tc.aspect."+tag);
}
public String getTag() {
return tag;
}
public void setTag(String tag) {
this.tag = tag;
}
public Aspect[] getComponents() {
return components;
}
public void setComponents(Aspect[] components) {
this.components = components;
}
public ResourceLocation getImage() {
return image;
}
public static Aspect getAspect(String tag) {
return aspects.get(tag);
}
public int getBlend() {
return blend;
}
public void setBlend(int blend) {
this.blend = blend;
}
public boolean isPrimal() {
return getComponents()==null || getComponents().length!=2;
}
///////////////////////////////
public static ArrayList<Aspect> getPrimalAspects() {
ArrayList<Aspect> primals = new ArrayList<Aspect>();
Collection<Aspect> pa = aspects.values();
for (Aspect aspect:pa) {
if (aspect.isPrimal()) primals.add(aspect);
}
return primals;
}
public static ArrayList<Aspect> getCompoundAspects() {
ArrayList<Aspect> compounds = new ArrayList<Aspect>();
Collection<Aspect> pa = aspects.values();
for (Aspect aspect:pa) {
if (!aspect.isPrimal()) compounds.add(aspect);
}
return compounds;
}
public String getChatcolor() {
return chatcolor;
}
public void setChatcolor(String chatcolor) {
this.chatcolor = chatcolor;
}
///////////////////////////////
public static LinkedHashMap<String,Aspect> aspects = new LinkedHashMap<String,Aspect>();
//PRIMAL
public static final Aspect AIR = new Aspect("aer",0xffff7e,"e",1);
public static final Aspect EARTH = new Aspect("terra",0x56c000,"2",1);
public static final Aspect FIRE = new Aspect("ignis",0xff5a01,"c",1);
public static final Aspect WATER = new Aspect("aqua",0x3cd4fc,"3",1);
public static final Aspect ORDER = new Aspect("ordo",0xd5d4ec,"7",1);
public static final Aspect ENTROPY = new Aspect("perditio",0x404040,"8",771);
//SECONDARY (PRIMAL + PRIMAL)
public static final Aspect VOID = new Aspect("vacuos",0x888888, new Aspect[] {AIR, ENTROPY},771);
public static final Aspect LIGHT = new Aspect("lux",0xffd585, new Aspect[] {AIR, FIRE});
public static final Aspect MOTION = new Aspect("motus",0xcdccf4, new Aspect[] {AIR, ORDER});
public static final Aspect COLD = new Aspect("gelum",0xe1ffff, new Aspect[] {FIRE, ENTROPY});
public static final Aspect CRYSTAL = new Aspect("vitreus",0x80ffff, new Aspect[] {EARTH, AIR});
public static final Aspect METAL = new Aspect("metallum",0xb5b5cd, new Aspect[] {EARTH, ORDER});
public static final Aspect LIFE = new Aspect("victus",0xde0005, new Aspect[] {EARTH, WATER});
public static final Aspect DEATH = new Aspect("mortuus",0x887788, new Aspect[] {WATER, ENTROPY});
public static final Aspect ENERGY = new Aspect("potentia",0xc0ffff, new Aspect[] {ORDER, FIRE});
public static final Aspect EXCHANGE = new Aspect("permutatio",0x578357, new Aspect[] {ENTROPY, ORDER});
// public static final Aspect WEATHER = new Aspect("tempestas",0xFFFFFF, new Aspect[] {AIR, WATER});
// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, EARTH});
// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {FIRE, WATER});
// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {ORDER, WATER});
// public static final Aspect ?? = new Aspect("??",0xcdccf4, new Aspect[] {EARTH, ENTROPY});
//TERTIARY
public static final Aspect AURA = new Aspect("auram",0xffc0ff, new Aspect[] {ENERGY, AIR});
public static final Aspect FLUX = new Aspect("vitium",0x800080, new Aspect[] {ENTROPY, ENERGY});
public static final Aspect DARKNESS = new Aspect("tenebrae",0x222222, new Aspect[] {VOID, LIGHT});
public static final Aspect ELDRITCH = new Aspect("alienis",0x805080, new Aspect[] {VOID, DARKNESS});
public static final Aspect FLIGHT = new Aspect("volatus",0xe7e7d7, new Aspect[] {AIR, MOTION});
public static final Aspect PLANT = new Aspect("herba",0x01ac00, new Aspect[] {LIFE, EARTH});
public static final Aspect TOOL = new Aspect("instrumentum",0x4040ee, new Aspect[] {METAL, ENERGY});
public static final Aspect CRAFT = new Aspect("fabrico",0x809d80, new Aspect[] {EXCHANGE, TOOL});
public static final Aspect MECHANISM = new Aspect("machina",0x8080a0, new Aspect[] {MOTION, TOOL});
public static final Aspect TRAP = new Aspect("vinculum",0x9a8080, new Aspect[] {MOTION, ENTROPY});
public static final Aspect SOUL = new Aspect("spiritus",0xebebfb, new Aspect[] {LIFE, DEATH});
public static final Aspect MIND = new Aspect("cognitio",0xffc2b3, new Aspect[] {FIRE, SOUL});
public static final Aspect SENSES = new Aspect("sensus",0x0fd9ff, new Aspect[] {AIR, SOUL});
public static final Aspect AVERSION = new Aspect("aversio",0xc05050, new Aspect[] {SOUL, ENTROPY});
public static final Aspect PROTECT = new Aspect("praemunio",0x00c0c0, new Aspect[] {SOUL, EARTH});
public static final Aspect DESIRE = new Aspect("desiderium",0xe6be44, new Aspect[] {SOUL, VOID});
public static final Aspect UNDEAD = new Aspect("exanimis",0x3a4000, new Aspect[] {MOTION, DEATH});
public static final Aspect BEAST = new Aspect("bestia",0x9f6409, new Aspect[] {MOTION, LIFE});
public static final Aspect MAN = new Aspect("humanus",0xffd7c0, new Aspect[] {SOUL, LIFE});
}

View File

@ -1,178 +0,0 @@
package thaumcraft.api.aspects;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Random;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.ThaumcraftApi.EntityTagsNBT;
import thaumcraft.api.ThaumcraftApiHelper;
public class AspectHelper {
public static AspectList cullTags(AspectList temp) {
AspectList temp2 = new AspectList();
for (Aspect tag:temp.getAspects()) {
if (tag!=null)
temp2.add(tag, temp.getAmount(tag));
}
while (temp2!=null && temp2.size()>6) {
Aspect lowest = null;
float low = Short.MAX_VALUE;
for (Aspect tag:temp2.getAspects()) {
if (tag==null) continue;
float ta=temp2.getAmount(tag);
if (tag.isPrimal()) {
ta *= .9f;
} else {
if (!tag.getComponents()[0].isPrimal()) {
ta *= 1.1f;
if (!tag.getComponents()[0].getComponents()[0].isPrimal()) {
ta *= 1.05f;
}
if (!tag.getComponents()[0].getComponents()[1].isPrimal()) {
ta *= 1.05f;
}
}
if (!tag.getComponents()[1].isPrimal()) {
ta *= 1.1f;
if (!tag.getComponents()[1].getComponents()[0].isPrimal()) {
ta *= 1.05f;
}
if (!tag.getComponents()[1].getComponents()[1].isPrimal()) {
ta *= 1.05f;
}
}
}
if (ta<low) {
low = ta;
lowest = tag;
}
}
temp2.aspects.remove(lowest);
}
return temp2;
}
public static AspectList getObjectAspects(ItemStack is) {
return ThaumcraftApi.internalMethods.getObjectAspects(is);
}
public static AspectList generateTags(Item item, int meta) {
return ThaumcraftApi.internalMethods.generateTags(item, meta);
}
public static AspectList getEntityAspects(Entity entity) {
AspectList tags = null;
if (entity instanceof EntityPlayer) {
tags = new AspectList();
tags.add(Aspect.MAN, 4);
Random rand = new Random(((EntityPlayer)entity).getName().hashCode());
Aspect[] posa = Aspect.aspects.values().toArray(new Aspect[]{});
tags.add(posa[rand.nextInt(posa.length)], 4);
tags.add(posa[rand.nextInt(posa.length)], 4);
tags.add(posa[rand.nextInt(posa.length)], 4);
} else {
f1:
for (ThaumcraftApi.EntityTags et:ThaumcraftApi.scanEntities) {
if (!et.entityName.equals(EntityList.getEntityString(entity))) continue;
if (et.nbts==null || et.nbts.length==0) {
tags = et.aspects;
} else {
NBTTagCompound tc = new NBTTagCompound();
entity.writeToNBT(tc);
for (EntityTagsNBT nbt:et.nbts) {
if (tc.hasKey(nbt.name)) {
if (!ThaumcraftApiHelper.getNBTDataFromId(tc, tc.getTagId(nbt.name), nbt.name).equals(nbt.value)) continue f1;
} else {
continue f1;
}
}
tags = et.aspects;
}
}
}
return tags;
}
public static Aspect getCombinationResult(Aspect aspect1, Aspect aspect2) {
Collection<Aspect> aspects = Aspect.aspects.values();
for (Aspect aspect:aspects) {
if (aspect.getComponents()!=null && (
(aspect.getComponents()[0]==aspect1 && aspect.getComponents()[1]==aspect2) ||
(aspect.getComponents()[0]==aspect2 && aspect.getComponents()[1]==aspect1))) {
return aspect;
}
}
return null;
}
public static Aspect getRandomPrimal(Random rand, Aspect aspect) {
ArrayList<Aspect> list = new ArrayList<Aspect>();
if (aspect!=null) {
AspectList temp = new AspectList();
temp.add(aspect, 1);
AspectList temp2 = AspectHelper.reduceToPrimals(temp);
for (Aspect a:temp2.getAspects()) {
for (int b=0;b<temp2.getAmount(a);b++) {
list.add(a);
}
}
}
return list.size()>0?list.get(rand.nextInt(list.size())):null;
}
public static AspectList reduceToPrimals(AspectList in) {
AspectList out = new AspectList();
for (Aspect aspect:in.getAspects()) {
if (aspect!=null) {
if (aspect.isPrimal()) {
out.add(aspect, in.getAmount(aspect));
} else {
AspectList temp = new AspectList();
temp.add(aspect.getComponents()[0],in.getAmount(aspect));
temp.add(aspect.getComponents()[1],in.getAmount(aspect));
AspectList temp2 = reduceToPrimals(temp);
for (Aspect a:temp2.getAspects()) {
out.add(a, temp2.getAmount(a));
}
}
}
}
return out;
}
public static AspectList getPrimalAspects(AspectList in) {
AspectList t = new AspectList();
t.add(Aspect.AIR, in.getAmount(Aspect.AIR));
t.add(Aspect.FIRE, in.getAmount(Aspect.FIRE));
t.add(Aspect.WATER, in.getAmount(Aspect.WATER));
t.add(Aspect.EARTH, in.getAmount(Aspect.EARTH));
t.add(Aspect.ORDER, in.getAmount(Aspect.ORDER));
t.add(Aspect.ENTROPY, in.getAmount(Aspect.ENTROPY));
return t;
}
public static AspectList getAuraAspects(AspectList in) {
AspectList t = new AspectList();
t.add(Aspect.AIR, in.getAmount(Aspect.AIR));
t.add(Aspect.FIRE, in.getAmount(Aspect.FIRE));
t.add(Aspect.WATER, in.getAmount(Aspect.WATER));
t.add(Aspect.EARTH, in.getAmount(Aspect.EARTH));
t.add(Aspect.ORDER, in.getAmount(Aspect.ORDER));
t.add(Aspect.ENTROPY, in.getAmount(Aspect.ENTROPY));
t.add(Aspect.FLUX, in.getAmount(Aspect.FLUX));
return t;
}
}

View File

@ -1,278 +0,0 @@
package thaumcraft.api.aspects;
import java.io.Serializable;
import java.util.LinkedHashMap;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
public class AspectList implements Serializable {
public LinkedHashMap<Aspect,Integer> aspects = new LinkedHashMap<Aspect,Integer>();//aspects associated with this object
/**
* this creates a new aspect list with preloaded values based off the aspects of the given item.
* @param the itemstack of the given item
*/
public AspectList(ItemStack stack) {
try {
AspectList temp = AspectHelper.getObjectAspects(stack);
if (temp!=null)
for (Aspect tag:temp.getAspects()) {
add(tag,temp.getAmount(tag));
}
} catch (Exception e) {}
}
public AspectList() {
}
public AspectList copy() {
AspectList out = new AspectList();
for (Aspect a:this.getAspects())
out.add(a, this.getAmount(a));
return out;
}
/**
* @return the amount of different aspects in this collection
*/
public int size() {
return aspects.size();
}
/**
* @return the amount of total vis in this collection
*/
public int visSize() {
int q = 0;
for (Aspect as:aspects.keySet()) {
q+=this.getAmount(as);
}
return q;
}
/**
* @return an array of all the aspects in this collection
*/
public Aspect[] getAspects() {
Aspect[] q = new Aspect[1];
return aspects.keySet().toArray(q);
}
/**
* @return an array of all the aspects in this collection sorted by name
*/
public Aspect[] getAspectsSortedByName() {
try {
Aspect[] out = aspects.keySet().toArray(new Aspect[]{});
boolean change=false;
do {
change=false;
for(int a=0;a<out.length-1;a++) {
Aspect e1 = out[a];
Aspect e2 = out[a+1];
if (e1!=null && e2!=null && e1.getTag().compareTo(e2.getTag())>0) {
out[a] = e2;
out[a+1] = e1;
change = true;
break;
}
}
} while (change==true);
return out;
} catch (Exception e) {
return this.getAspects();
}
}
/**
* @return an array of all the aspects in this collection sorted by amount
*/
public Aspect[] getAspectsSortedByAmount() {
try {
Aspect[] out = aspects.keySet().toArray(new Aspect[1]);
boolean change=false;
do {
change=false;
for(int a=0;a<out.length-1;a++) {
int e1 = getAmount(out[a]);
int e2 = getAmount(out[a+1]);
if (e1>0 && e2>0 && e2>e1) {
Aspect ea = out[a];
Aspect eb = out[a+1];
out[a] = eb;
out[a+1] = ea;
change = true;
break;
}
}
} while (change==true);
return out;
} catch (Exception e) {
return this.getAspects();
}
}
/**
* @param key
* @return the amount associated with the given aspect in this collection
*/
public int getAmount(Aspect key) {
return aspects.get(key)==null?0:aspects.get(key);
}
/**
* Reduces the amount of an aspect in this collection by the given amount.
* @param key
* @param amount
* @return
*/
public boolean reduce(Aspect key, int amount) {
if (getAmount(key)>=amount) {
int am = getAmount(key)-amount;
aspects.put(key, am);
return true;
}
return false;
}
/**
* Reduces the amount of an aspect in this collection by the given amount.
* If reduced to 0 or less the aspect will be removed completely.
* @param key
* @param amount
* @return
*/
public AspectList remove(Aspect key, int amount) {
int am = getAmount(key)-amount;
if (am<=0) aspects.remove(key); else
this.aspects.put(key, am);
return this;
}
/**
* Simply removes the aspect from the list
* @param key
* @param amount
* @return
*/
public AspectList remove(Aspect key) {
aspects.remove(key);
return this;
}
/**
* Adds this aspect and amount to the collection.
* If the aspect exists then its value will be increased by the given amount.
* @param aspect
* @param amount
* @return
*/
public AspectList add(Aspect aspect, int amount) {
if (this.aspects.containsKey(aspect)) {
int oldamount = this.aspects.get(aspect);
amount+=oldamount;
}
this.aspects.put( aspect, amount );
return this;
}
/**
* Adds this aspect and amount to the collection.
* If the aspect exists then only the highest of the old or new amount will be used.
* @param aspect
* @param amount
* @return
*/
public AspectList merge(Aspect aspect, int amount) {
if (this.aspects.containsKey(aspect)) {
int oldamount = this.aspects.get(aspect);
if (amount<oldamount) amount=oldamount;
}
this.aspects.put( aspect, amount );
return this;
}
public AspectList add(AspectList in) {
for (Aspect a:in.getAspects())
this.add(a, in.getAmount(a));
return this;
}
public AspectList merge(AspectList in) {
for (Aspect a:in.getAspects())
this.merge(a, in.getAmount(a));
return this;
}
/**
* Reads the list of aspects from nbt
* @param nbttagcompound
* @return
*/
public void readFromNBT(NBTTagCompound nbttagcompound)
{
aspects.clear();
NBTTagList tlist = nbttagcompound.getTagList("Aspects",(byte)10);
for (int j = 0; j < tlist.tagCount(); j++) {
NBTTagCompound rs = (NBTTagCompound) tlist.getCompoundTagAt(j);
if (rs.hasKey("key")) {
add( Aspect.getAspect(rs.getString("key")),
rs.getInteger("amount"));
}
}
}
public void readFromNBT(NBTTagCompound nbttagcompound, String label)
{
aspects.clear();
NBTTagList tlist = nbttagcompound.getTagList(label,(byte)10);
for (int j = 0; j < tlist.tagCount(); j++) {
NBTTagCompound rs = (NBTTagCompound) tlist.getCompoundTagAt(j);
if (rs.hasKey("key")) {
add( Aspect.getAspect(rs.getString("key")),
rs.getInteger("amount"));
}
}
}
/**
* Writes the list of aspects to nbt
* @param nbttagcompound
* @return
*/
public void writeToNBT(NBTTagCompound nbttagcompound)
{
NBTTagList tlist = new NBTTagList();
nbttagcompound.setTag("Aspects", tlist);
for (Aspect aspect : getAspects())
if (aspect != null) {
NBTTagCompound f = new NBTTagCompound();
f.setString("key", aspect.getTag());
f.setInteger("amount", getAmount(aspect));
tlist.appendTag(f);
}
}
public void writeToNBT(NBTTagCompound nbttagcompound, String label)
{
NBTTagList tlist = new NBTTagList();
nbttagcompound.setTag(label, tlist);
for (Aspect aspect : getAspects())
if (aspect != null) {
NBTTagCompound f = new NBTTagCompound();
f.setString("key", aspect.getTag());
f.setInteger("amount", getAmount(aspect));
tlist.appendTag(f);
}
}
}

View File

@ -1,58 +0,0 @@
package thaumcraft.api.aspects;
import java.lang.reflect.Method;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.EnumFacing;
import net.minecraftforge.fml.common.FMLLog;
public class AspectSourceHelper {
static Method drainEssentia;
static Method findEssentia;
/**
* This method is what is used to drain essentia from jars and other sources for things like
* infusion crafting or powering the arcane furnace. A record of possible sources are kept track of
* and refreshed as needed around the calling tile entity. This also renders the essentia trail particles.
* Only 1 essentia is drained at a time
* @param tile the tile entity that is draining the essentia
* @param aspect the aspect that you are looking for
* @param direction the direction from which you wish to drain. EnumFacing.Unknown simply seeks in all directions.
* @param range how many blocks you wish to search for essentia sources.
* @return boolean returns true if essentia was found and removed from a source.
*/
public static boolean drainEssentia(TileEntity tile, Aspect aspect, EnumFacing direction, int range) {
try {
if(drainEssentia == null) {
Class fake = Class.forName("thaumcraft.common.lib.events.EssentiaHandler");
drainEssentia = fake.getMethod("drainEssentia", TileEntity.class, Aspect.class, EnumFacing.class, int.class);
}
return (Boolean) drainEssentia.invoke(null, tile, aspect, direction, range);
} catch(Exception ex) {
FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.events.EssentiaHandler method drainEssentia");
}
return false;
}
/**
* This method returns if there is any essentia of the passed type that can be drained. It in no way checks how
* much there is, only if an essentia container nearby contains at least 1 point worth.
* @param tile the tile entity that is checking the essentia
* @param aspect the aspect that you are looking for
* @param direction the direction from which you wish to drain. EnumFacing.Unknown simply seeks in all directions.
* @param range how many blocks you wish to search for essentia sources.
* @return boolean returns true if essentia was found and removed from a source.
*/
public static boolean findEssentia(TileEntity tile, Aspect aspect, EnumFacing direction, int range) {
try {
if(findEssentia == null) {
Class fake = Class.forName("thaumcraft.common.lib.events.EssentiaHandler");
findEssentia = fake.getMethod("findEssentia", TileEntity.class, Aspect.class, EnumFacing.class, int.class);
}
return (Boolean) findEssentia.invoke(null, tile, aspect, direction, range);
} catch(Exception ex) {
FMLLog.warning("[Thaumcraft API] Could not invoke thaumcraft.common.lib.events.EssentiaHandler method findEssentia");
}
return false;
}
}

View File

@ -1,80 +0,0 @@
package thaumcraft.api.aspects;
/**
*
* @author azanor
*
* Used by blocks like the crucible and alembic to hold their aspects.
* Tiles extending this interface will have their aspects show up when viewed by goggles of revealing
*
*/
public interface IAspectContainer {
public AspectList getAspects();
public void setAspects(AspectList aspects);
/**
* This method is used to determine of a specific aspect can be added to this container.
* @param tag
* @return true or false
*/
public boolean doesContainerAccept(Aspect tag);
/**
* This method is used to add a certain amount of an aspect to the tile entity.
* @param tag
* @param amount
* @return the amount of aspect left over that could not be added.
*/
public int addToContainer(Aspect tag, int amount);
/**
* Removes a certain amount of a specific aspect from the tile entity
* @param tag
* @param amount
* @return true if that amount of aspect was available and was removed
*/
public boolean takeFromContainer(Aspect tag, int amount);
/**
* removes a bunch of different aspects and amounts from the tile entity.
* @param ot the ObjectTags object that contains the aspects and their amounts.
* @return true if all the aspects and their amounts were available and successfully removed
*
* Going away in the next major patch
*/
@Deprecated
public boolean takeFromContainer(AspectList ot);
/**
* Checks if the tile entity contains the listed amount (or more) of the aspect
* @param tag
* @param amount
* @return
*/
public boolean doesContainerContainAmount(Aspect tag,int amount);
/**
* Checks if the tile entity contains all the listed aspects and their amounts
* @param ot the ObjectTags object that contains the aspects and their amounts.
* @return
*
* Going away in the next major patch
*/
@Deprecated
public boolean doesContainerContain(AspectList ot);
/**
* Returns how much of the aspect this tile entity contains
* @param tag
* @return the amount of that aspect found
*/
public int containerContains(Aspect tag);
}

View File

@ -1,16 +0,0 @@
package thaumcraft.api.aspects;
/**
* @author Azanor
*
* This interface is implemented by tile entites (or possibly anything else) like jars
* so that they can act as an essentia source for blocks like the infusion altar.
*
*/
public interface IAspectSource extends IAspectContainer {
}

View File

@ -1,45 +0,0 @@
package thaumcraft.api.aspects;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
/**
*
* @author azanor
*
* Used by wispy essences and essentia phials to hold their aspects.
* Useful for similar item containers that store their aspect information in nbt form so TC
* automatically picks up the aspects they contain.
*
*/
public interface IEssentiaContainerItem {
public AspectList getAspects(ItemStack itemstack);
public void setAspects(ItemStack itemstack, AspectList aspects);
/**
* Return true if the contained aspect should not be used to calculate the actual item aspects. For example: jar labels.
*/
public boolean ignoreContainedAspects();
}
//Example implementation
/*
@Override
public AspectList getAspects(ItemStack itemstack) {
if (itemstack.hasTagCompound()) {
AspectList aspects = new AspectList();
aspects.readFromNBT(itemstack.getTagCompound());
return aspects.size()>0?aspects:null;
}
return null;
}
@Override
public void setAspects(ItemStack itemstack, AspectList aspects) {
if (!itemstack.hasTagCompound()) itemstack.setTagCompound(new NBTTagCompound());
aspects.writeToNBT(itemstack.getTagCompound());
}
@Override
public boolean ignoreContainedAspects() {return false;}
*/

View File

@ -1,92 +0,0 @@
package thaumcraft.api.aspects;
import net.minecraft.util.EnumFacing;
/**
* @author Azanor
* This interface is used by tiles that use or transport vis.
* Only tiles that implement this interface will be able to connect to vis conduits or other thaumic devices
*/
public interface IEssentiaTransport {
/**
* Is this tile able to connect to other vis users/sources on the specified side?
* @param face
* @return
*/
public boolean isConnectable(EnumFacing face);
/**
* Is this side used to input essentia?
* @param face
* @return
*/
boolean canInputFrom(EnumFacing face);
/**
* Is this side used to output essentia?
* @param face
* @return
*/
boolean canOutputTo(EnumFacing face);
/**
* Sets the amount of suction this block will apply
* @param suction
*/
public void setSuction(Aspect aspect, int amount);
/**
* Returns the type of suction this block is applying.
* @param loc
* the location from where the suction is being checked
* @return
* a return type of null indicates the suction is untyped and the first thing available will be drawn
*/
public Aspect getSuctionType(EnumFacing face);
/**
* Returns the strength of suction this block is applying.
* @param loc
* the location from where the suction is being checked
* @return
*/
public int getSuctionAmount(EnumFacing face);
/**
* remove the specified amount of essentia from this transport tile
* @return how much was actually taken
*/
public int takeEssentia(Aspect aspect, int amount, EnumFacing face);
/**
* add the specified amount of essentia to this transport tile
* @return how much was actually added
*/
public int addEssentia(Aspect aspect, int amount, EnumFacing face);
/**
* What type of essentia this contains
* @param face
* @return
*/
public Aspect getEssentiaType(EnumFacing face);
/**
* How much essentia this block contains
* @param face
* @return
*/
public int getEssentiaAmount(EnumFacing face);
/**
* Essentia will not be drawn from this container unless the suction exceeds this amount.
* @return the amount
*/
public int getMinimumSuction();
}

View File

@ -1,95 +0,0 @@
package thaumcraft.api.aura;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.aspects.Aspect;
public class AuraHelper {
/**
* Consume vis from the aura at the given location
* @param world
* @param pos
* @param aspect
* @param amount
* @return has anything been consumed
*/
public static boolean drainAura(World world, BlockPos pos, Aspect aspect, int amount) {
return ThaumcraftApi.internalMethods.drainAura(world,pos, aspect, amount);
}
/**
* Consume vis from the aura at the given location
* @param world
* @param pos
* @param aspect
* @param amount
* @return how much was actually drained
*/
public static int drainAuraAvailable(World world, BlockPos pos, Aspect aspect, int amount) {
return ThaumcraftApi.internalMethods.drainAuraAvailable(world,pos, aspect, amount);
}
/**
* Adds vis to the aura at the given location. This does not actually increase the aura instantly -
* it merely adds a recharge ticked to the chunk that will add to the aura there the next time it is processed.
*
* @param world
* @param pos
* @param aspect
* @param amount
*/
public static void addAura(World world, BlockPos pos, Aspect aspect, int amount) {
ThaumcraftApi.internalMethods.addAura(world,pos, aspect, amount);
}
/**
* Get how much of a given aspect is in the aura at the given location.
* @param world
* @param pos
* @param aspect
* @return
*/
public static int getAura(World world, BlockPos pos, Aspect aspect) {
return ThaumcraftApi.internalMethods.getAura(world,pos, aspect);
}
/**
* Gets the general aura baseline at the given location
* @param world
* @param pos
* @return
*/
public static int getAuraBase(World world, BlockPos pos) {
return ThaumcraftApi.internalMethods.getAuraBase(world,pos);
}
/**
* Gets if the local aura for the given aspect is below 10% and that the player has the node preserver research.
* If the passed in player is null it will ignore the need for the research to be completed and just assume it is.
* @param world
* @param player
* @param pos
* @param aspect
* @return
*/
public static boolean shouldPreserveAura(World world, EntityPlayer player, BlockPos pos, Aspect aspect) {
return ThaumcraftApi.internalMethods.shouldPreserveAura(world,player,pos,aspect);
}
/**
* Adds flux to the aura at the specified block position.
* @param world
* @param pos
* @param amount how much flux to add
* @param showEffect if set to true, a flux goo splash effect and sound will also be displayed. Use in moderation.
*/
public static void pollute(World world, BlockPos pos, int amount, boolean showEffect) {
ThaumcraftApi.internalMethods.pollute(world,pos,amount,showEffect);
}
}

View File

@ -1,139 +0,0 @@
package thaumcraft.api.blocks;
import net.minecraft.block.Block;
public class BlocksTC {
// World
public static Block oreAmber;
public static Block oreCinnabar;
public static Block log;
public static Block leaf;
public static Block sapling;
public static Block shimmerleaf;
public static Block cinderpearl;
public static Block vishroom;
public static Block plank;
public static Block stone;
public static Block translucent;
public static Block stairsArcane;
public static Block stairsArcaneBrick;
public static Block stairsAncient;
public static Block stairsSilverwood;
public static Block stairsGreatwood;
public static Block stairsEldritch;
public static Block slabWood;
public static Block slabStone;
public static Block doubleSlabWood;
public static Block doubleSlabStone;
public static Block taintBlock;
public static Block taintFibre;
public static Block taintDust;
public static Block taintLog;
public static Block taintFeature;
public static Block lootCrate;
public static Block lootUrn;
public static Block eldritch;
public static Block crystalAir;
public static Block crystalFire;
public static Block crystalWater;
public static Block crystalEarth;
public static Block crystalOrder;
public static Block crystalEntropy;
public static Block crystalTaint;
// Doodads
public static Block tableWood;
public static Block tableStone;
/** THAUMIUM, VOID, ALCHEMICAL, ADVANCED_ALCHEMICAL, BRASS */
public static Block metal;
public static Block candle;
public static Block nitor;
public static Block bloom;
public static Block pedestal;
public static Block itemGrate;
public static Block fleshBlock;
public static Block banner;
public static Block pavingStone;
public static Block pillar;
public static Block redstoneRelay;
// Machines
public static Block arcaneEar;
public static Block levitator;
public static Block dioptra;
public static Block crucible;
public static Block arcaneWorkbench;
public static Block arcaneWorkbenchCharger;
public static Block wandWorkbench;
public static Block rechargePedestal;
public static Block researchTable;
public static Block tube;
public static Block centrifuge;
public static Block crystallizer;
public static Block hungryChest;
public static Block jar;
public static Block bellows;
public static Block smelterBasic;
public static Block smelterThaumium;
public static Block smelterVoid;
public static Block smelterAux;
public static Block smelterVent;
public static Block alembic;
public static Block infusionMatrix;
public static Block infernalFurnace;
public static Block arcaneBore;
public static Block arcaneBoreBase;
public static Block thaumatorium;
public static Block brainBox;
public static Block mirror;
public static Block mirrorEssentia;
public static Block auraTotem;
public static Block spa;
public static Block waterJug;
public static Block lampArcane;
public static Block lampFertility;
public static Block lampGrowth;
public static Block golemBuilder;
public static Block nodeStabilizer;
public static Block essentiaTransportInput;
public static Block essentiaTransportOutput;
// Fluids
public static Block fluxGoo;
public static Block purifyingFluid;
public static Block liquidDeath;
// Misc
public static Block hole;
public static Block vacuum;
public static Block effect;
public static Block barrier;
public static Block placeholder;
}

View File

@ -1,23 +0,0 @@
package thaumcraft.api.blocks;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
/**
*
* @author Azanor
*
* Tile entities or blocks that extend this interface can have jar labels applied to them
*
*/
public interface ILabelable {
/**
* This method is used by the block or tileentity to do whatever needs doing.
* @return if true then label will be subtracted from player inventory
*/
public boolean applyLabel(EntityPlayer player, BlockPos pos, EnumFacing side, ItemStack labelstack);
}

View File

@ -1,81 +0,0 @@
package thaumcraft.api.blocks;
import net.minecraft.block.state.IBlockState;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.NetworkManager;
import net.minecraft.network.Packet;
import net.minecraft.network.play.server.S35PacketUpdateTileEntity;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
/**
*
* @author azanor
*
* Custom tile entity class I use for most of my tile entities. Setup in such a way that only
* the nbt data within readCustomNBT / writeCustomNBT will be sent to the client when the tile
* updates. Apart from all the normal TE data that gets sent that is.
*
*/
public class TileThaumcraft extends TileEntity {
//NBT stuff
@Override
public void readFromNBT(NBTTagCompound nbt)
{
super.readFromNBT(nbt);
readCustomNBT(nbt);
}
public void readCustomNBT(NBTTagCompound nbt)
{
//TODO
}
@Override
public void writeToNBT(NBTTagCompound nbt)
{
super.writeToNBT(nbt);
writeCustomNBT(nbt);
}
public void writeCustomNBT(NBTTagCompound nbt)
{
//TODO
}
//Client Packet stuff
@Override
public Packet getDescriptionPacket() {
NBTTagCompound nbt = new NBTTagCompound();
this.writeCustomNBT(nbt);
return new S35PacketUpdateTileEntity(this.getPos(), -999, nbt);
}
@Override
public void onDataPacket(NetworkManager net, S35PacketUpdateTileEntity pkt) {
super.onDataPacket(net, pkt);
this.readCustomNBT(pkt.getNbtCompound());
}
@Override
public boolean shouldRefresh(World world, BlockPos pos, IBlockState oldState, IBlockState newState) {
return oldState.getBlock() != newState.getBlock();
}
public EnumFacing getFacing() {
try {
return EnumFacing.getFront(getBlockMetadata() & 7);
} catch (Exception e) { }
return EnumFacing.UP;
}
public boolean gettingPower() {
return worldObj.isBlockPowered(getPos());
}
}

View File

@ -1,91 +0,0 @@
package thaumcraft.api.crafting;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
public class CrucibleRecipe {
private ItemStack recipeOutput;
public Object catalyst;
public AspectList aspects;
public String[] research;
public int hash;
public CrucibleRecipe(String[] researchKey, ItemStack result, Object cat, AspectList tags) {
recipeOutput = result;
this.aspects = tags;
this.research = researchKey;
this.catalyst = cat;
if (cat instanceof String) {
this.catalyst = OreDictionary.getOres((String) cat);
}
String hc = "";
for (String ss:research) hc+=ss;
hc += result.toString();
for (Aspect tag:tags.getAspects()) {
hc += tag.getTag()+tags.getAmount(tag);
}
if (cat instanceof ItemStack) {
hc += ((ItemStack)cat).toString();
} else
if (cat instanceof List && ((List<ItemStack>)catalyst).size()>0) {
for (ItemStack is :(List<ItemStack>)catalyst) {
hc += is.toString();
}
}
hash = hc.hashCode();
}
public boolean matches(AspectList itags, ItemStack cat) {
if (catalyst instanceof ItemStack && !OreDictionary.itemMatches((ItemStack) catalyst,cat,false)) {
return false;
} else
if (catalyst instanceof List && ((List<ItemStack>)catalyst).size()>0) {
if (!ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat},
(List<ItemStack>)catalyst)) return false;
}
if (itags==null) return false;
for (Aspect tag:aspects.getAspects()) {
if (itags.getAmount(tag)<aspects.getAmount(tag)) return false;
}
return true;
}
public boolean catalystMatches(ItemStack cat) {
if (catalyst instanceof ItemStack && OreDictionary.itemMatches((ItemStack) catalyst,cat,false)) {
return true;
} else
if (catalyst instanceof List && ((List<ItemStack>)catalyst).size()>0) {
if (ThaumcraftApiHelper.containsMatch(false, new ItemStack[]{cat}, (List<ItemStack>)catalyst)) return true;
}
return false;
}
public AspectList removeMatching(AspectList itags) {
AspectList temptags = new AspectList();
temptags.aspects.putAll(itags.aspects);
for (Aspect tag:aspects.getAspects()) {
temptags.remove(tag, aspects.getAmount(tag));
}
itags = temptags;
return itags;
}
public ItemStack getRecipeOutput() {
return recipeOutput;
}
}

View File

@ -1,28 +0,0 @@
package thaumcraft.api.crafting;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.world.World;
import thaumcraft.api.aspects.AspectList;
public interface IArcaneRecipe extends IRecipe
{
boolean matches(InventoryCrafting inv, World worldIn);
boolean matches(InventoryCrafting inv, World world, EntityPlayer player);
ItemStack getCraftingResult(InventoryCrafting inv);
int getRecipeSize();
ItemStack getRecipeOutput();
ItemStack[] getRemainingItems(InventoryCrafting inv);
AspectList getAspects();
AspectList getAspects(InventoryCrafting inv);
String[] getResearch();
}

View File

@ -1,11 +0,0 @@
package thaumcraft.api.crafting;
/**
*
* @author Azanor
* This needs to be implemented by any inventory that wishes to act as an arcane workbench.
*
*/
public interface IArcaneWorkbench {
}

View File

@ -1,20 +0,0 @@
package thaumcraft.api.crafting;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
/**
*
* @author Azanor
*
* Blocks that implement this interface act as infusion crafting stabilisers like candles and skulls
*
*/
public interface IInfusionStabiliser {
/**
* returns true if the block can stabilise things
*/
public boolean canStabaliseInfusion(World world, BlockPos pos);
}

View File

@ -1,136 +0,0 @@
package thaumcraft.api.crafting;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Map;
import net.minecraft.enchantment.Enchantment;
import net.minecraft.enchantment.EnchantmentHelper;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchHelper;
@Deprecated
public class InfusionEnchantmentRecipe
{
public AspectList aspects;
public String[] research;
public Object[] components;
public Enchantment enchantment;
public int recipeXP;
public int instability;
public InfusionEnchantmentRecipe(String research, Enchantment input, int inst, AspectList aspects2, Object[] recipe) {
this(new String[]{research},input,inst,aspects2,recipe);
}
public InfusionEnchantmentRecipe(String[] research, Enchantment input, int inst, AspectList aspects2, Object[] recipe) {
this.research = research;
this.enchantment = input;
this.aspects = aspects2;
this.components = recipe;
this.instability = inst;
this.recipeXP = Math.max(1, input.getMinEnchantability(1)/3);
}
/**
* Used to check if a recipe matches current crafting inventory
* @param player
*/
public boolean matches(ArrayList<ItemStack> input, ItemStack central, World world, EntityPlayer player) {
if (research!=null && research[0].length()>0 && !ResearchHelper.isResearchComplete(player.getName(), research)) {
return false;
}
if (!enchantment.canApply(central) || !central.getItem().isItemTool(central)) {
return false;
}
Map map1 = EnchantmentHelper.getEnchantments(central);
Iterator iterator = map1.keySet().iterator();
while (iterator.hasNext())
{
int j1 = ((Integer)iterator.next()).intValue();
Enchantment ench = Enchantment.enchantmentsBookList[j1];
if (j1 == enchantment.effectId &&
EnchantmentHelper.getEnchantmentLevel(j1, central)>=ench.getMaxLevel())
return false;
if (enchantment.effectId != ench.effectId &&
(!enchantment.canApplyTogether(ench) ||
!ench.canApplyTogether(enchantment))) {
return false;
}
}
ItemStack i2 = null;
ArrayList<ItemStack> ii = new ArrayList<ItemStack>();
for (ItemStack is:input) {
ii.add(is.copy());
}
for (Object comp:components) {
boolean b=false;
for (int a=0;a<ii.size();a++) {
i2 = ii.get(a).copy();
if (ThaumcraftApiHelper.areItemStacksEqualForCrafting(i2, comp)) {
ii.remove(a);
b=true;
break;
}
}
if (!b) return false;
}
// System.out.println(ii.size());
return ii.size()==0?true:false;
}
public Enchantment getEnchantment() {
return enchantment;
}
public AspectList getAspects() {
return aspects;
}
public String[] getResearch() {
return research;
}
public int calcInstability(ItemStack recipeInput) {
int i = 0;
Map map1 = EnchantmentHelper.getEnchantments(recipeInput);
Iterator iterator = map1.keySet().iterator();
while (iterator.hasNext())
{ int j1 = ((Integer)iterator.next()).intValue();
i += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput);
}
return (i/2) + instability;
}
public int calcXP(ItemStack recipeInput) {
return recipeXP * (1+EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput));
}
public float getEssentiaMod(ItemStack recipeInput) {
float mod = EnchantmentHelper.getEnchantmentLevel(enchantment.effectId, recipeInput);
Map map1 = EnchantmentHelper.getEnchantments(recipeInput);
Iterator iterator = map1.keySet().iterator();
while (iterator.hasNext())
{
int j1 = ((Integer)iterator.next()).intValue();
if (j1 != enchantment.effectId)
mod += EnchantmentHelper.getEnchantmentLevel(j1, recipeInput) * .1f;
}
return mod;
}
}

View File

@ -1,106 +0,0 @@
package thaumcraft.api.crafting;
import java.util.ArrayList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchHelper;
public class InfusionRecipe
{
protected AspectList aspects;
protected String[] research;
private Object[] components;
private Object recipeInput;
protected Object recipeOutput;
protected int instability;
public InfusionRecipe(String research, Object output, int inst, AspectList aspects2, Object input, Object[] recipe) {
this(new String[]{research},output,inst,aspects2,input,recipe);
}
public InfusionRecipe(String[] research, Object output, int inst, AspectList aspects2, Object input, Object[] recipe) {
this.research = research;
this.recipeOutput = output;
this.recipeInput = input;
this.aspects = aspects2;
this.components = recipe;
this.instability = inst;
}
/**
* Used to check if a recipe matches current crafting inventory
* @param player
*/
public boolean matches(ArrayList<ItemStack> input, ItemStack central, World world, EntityPlayer player) {
if (getRecipeInput()==null) return false;
if (research!=null && research[0].length()>0 && !ResearchHelper.isResearchComplete(player.getName(), research)) {
return false;
}
ItemStack i2 = central.copy();
if (getRecipeInput() instanceof ItemStack &&
((ItemStack)getRecipeInput()).getItemDamage()==OreDictionary.WILDCARD_VALUE) {
i2.setItemDamage(OreDictionary.WILDCARD_VALUE);
}
if (!ThaumcraftApiHelper.areItemStacksEqualForCrafting(i2, getRecipeInput())) return false;
ArrayList<ItemStack> ii = new ArrayList<ItemStack>();
for (ItemStack is:input) {
ii.add(is.copy());
}
for (Object comp:getComponents()) {
boolean b=false;
for (int a=0;a<ii.size();a++) {
i2 = ii.get(a).copy();
if (ThaumcraftApiHelper.areItemStacksEqualForCrafting(i2, comp)) {
ii.remove(a);
b=true;
break;
}
}
if (!b) return false;
}
return ii.size()==0?true:false;
}
public String[] getResearch() {
return research;
}
public Object getRecipeInput() {
return recipeInput;
}
public Object[] getComponents() {
return components;
}
public Object getRecipeOutput() {
return recipeOutput;
}
public AspectList getAspects() {
return aspects;
}
public Object getRecipeOutput(EntityPlayer player, ItemStack input, ArrayList<ItemStack> comps ) {
return recipeOutput;
}
public AspectList getAspects(EntityPlayer player, ItemStack input, ArrayList<ItemStack> comps) {
return aspects;
}
public int getInstability(EntityPlayer player, ItemStack input, ArrayList<ItemStack> comps) {
return instability;
}
}

View File

@ -1,284 +0,0 @@
package thaumcraft.api.crafting;
import java.util.HashMap;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchHelper;
public class ShapedArcaneRecipe implements IArcaneRecipe
{
//Added in for future ease of change, but hard coded for now.
private static final int MAX_CRAFT_GRID_WIDTH = 3;
private static final int MAX_CRAFT_GRID_HEIGHT = 3;
public ItemStack output = null;
public Object[] input = null;
public AspectList aspects = null;
public String[] research;
public int width = 0;
public int height = 0;
private boolean mirrored = true;
public ShapedArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe){ this(new String[]{research}, result, aspects, recipe); }
public ShapedArcaneRecipe(String[] research, ItemStack result, AspectList aspects, Object... recipe)
{
output = result.copy();
this.research = research;
this.aspects = aspects;
String shape = "";
int idx = 0;
if (recipe[idx] instanceof Boolean)
{
mirrored = (Boolean)recipe[idx];
if (recipe[idx+1] instanceof Object[])
{
recipe = (Object[])recipe[idx+1];
}
else
{
idx = 1;
}
}
if (recipe[idx] instanceof String[])
{
String[] parts = ((String[])recipe[idx++]);
for (String s : parts)
{
width = s.length();
shape += s;
}
height = parts.length;
}
else
{
while (recipe[idx] instanceof String)
{
String s = (String)recipe[idx++];
shape += s;
width = s.length();
height++;
}
}
if (width * height != shape.length())
{
String ret = "Invalid shaped ore recipe: ";
for (Object tmp : recipe)
{
ret += tmp + ", ";
}
ret += output;
throw new RuntimeException(ret);
}
HashMap<Character, Object> itemMap = new HashMap<Character, Object>();
for (; idx < recipe.length; idx += 2)
{
Character chr = (Character)recipe[idx];
Object in = recipe[idx + 1];
if (in instanceof ItemStack)
{
itemMap.put(chr, ((ItemStack)in).copy());
}
else if (in instanceof Item)
{
itemMap.put(chr, new ItemStack((Item)in));
}
else if (in instanceof Block)
{
itemMap.put(chr, new ItemStack((Block)in, 1, OreDictionary.WILDCARD_VALUE));
}
else if (in instanceof String)
{
itemMap.put(chr, OreDictionary.getOres((String)in));
}
else
{
String ret = "Invalid shaped ore recipe: ";
for (Object tmp : recipe)
{
ret += tmp + ", ";
}
ret += output;
throw new RuntimeException(ret);
}
}
input = new Object[width * height];
int x = 0;
for (char chr : shape.toCharArray())
{
input[x++] = itemMap.get(chr);
}
}
@Override
public ItemStack getCraftingResult(InventoryCrafting var1){ return output.copy(); }
@Override
public int getRecipeSize(){ return input.length; }
@Override
public ItemStack getRecipeOutput(){ return output; }
@Override
public boolean matches(InventoryCrafting inv, World world)
{
return inv instanceof IArcaneWorkbench && matches(inv,world,null);
}
@Override
public boolean matches(InventoryCrafting inv, World world, EntityPlayer player)
{
if (player!=null && ( research!=null && research[0].length()>0 && !ResearchHelper.isResearchComplete(player.getName(), research))) {
return false;
}
for (int x = 0; x <= MAX_CRAFT_GRID_WIDTH - width; x++)
{
for (int y = 0; y <= MAX_CRAFT_GRID_HEIGHT - height; ++y)
{
if (checkMatch(inv, x, y, false))
{
return true;
}
if (mirrored && checkMatch(inv, x, y, true))
{
return true;
}
}
}
return false;
}
private boolean checkMatch(InventoryCrafting inv, int startX, int startY, boolean mirror)
{
for (int x = 0; x < MAX_CRAFT_GRID_WIDTH; x++)
{
for (int y = 0; y < MAX_CRAFT_GRID_HEIGHT; y++)
{
int subX = x - startX;
int subY = y - startY;
Object target = null;
if (subX >= 0 && subY >= 0 && subX < width && subY < height)
{
if (mirror)
{
target = input[width - subX - 1 + subY * width];
}
else
{
target = input[subX + subY * width];
}
}
ItemStack slot = inv.getStackInRowAndColumn(x, y);
if (target instanceof ItemStack)
{
if (!checkItemEquals((ItemStack)target, slot))
{
return false;
}
}
else if (target instanceof List)
{
boolean matched = false;
for (ItemStack item : (List<ItemStack>)target)
{
matched = matched || checkItemEquals(item, slot);
}
if (!matched)
{
return false;
}
}
else if (target == null && slot != null)
{
return false;
}
}
}
return true;
}
private boolean checkItemEquals(ItemStack target, ItemStack input)
{
if (input == null && target != null || input != null && target == null)
{
return false;
}
return (target.getItem() == input.getItem() &&
(!target.hasTagCompound() || ThaumcraftApiHelper.areItemStackTagsEqualForCrafting(input,target)) &&
(target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage()));
}
public ShapedArcaneRecipe setMirrored(boolean mirror)
{
mirrored = mirror;
return this;
}
/**
* Returns the input for this recipe, any mod accessing this value should never
* manipulate the values in this array as it will effect the recipe itself.
* @return The recipes input vales.
*/
public Object[] getInput()
{
return this.input;
}
@Override
public AspectList getAspects() {
return aspects;
}
@Override
public AspectList getAspects(InventoryCrafting inv) {
return aspects;
}
@Override
public String[] getResearch() {
return research;
}
@Override
public ItemStack[] getRemainingItems(InventoryCrafting p_179532_1_)
{
ItemStack[] aitemstack = new ItemStack[p_179532_1_.getSizeInventory()];
for (int i = 0; i < Math.min(9, aitemstack.length); ++i)
{
ItemStack itemstack = p_179532_1_.getStackInSlot(i);
aitemstack[i] = net.minecraftforge.common.ForgeHooks.getContainerItem(itemstack);
}
return aitemstack;
}
}

View File

@ -1,182 +0,0 @@
package thaumcraft.api.crafting;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.InventoryCrafting;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import net.minecraftforge.oredict.OreDictionary;
import thaumcraft.api.ThaumcraftApiHelper;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.research.ResearchHelper;
public class ShapelessArcaneRecipe implements IArcaneRecipe
{
private ItemStack output = null;
private ArrayList input = new ArrayList();
public AspectList aspects = null;
public String[] research;
public ShapelessArcaneRecipe(String research, ItemStack result, AspectList aspects, Object... recipe){ this(new String[] {research}, result,aspects, recipe); }
public ShapelessArcaneRecipe(String[] research, ItemStack result, AspectList aspects, Object... recipe)
{
output = result.copy();
this.research = research;
this.aspects = aspects;
for (Object in : recipe)
{
if (in instanceof ItemStack)
{
input.add(((ItemStack)in).copy());
}
else if (in instanceof Item)
{
input.add(new ItemStack((Item)in));
}
else if (in instanceof Block)
{
input.add(new ItemStack((Block)in));
}
else if (in instanceof String)
{
input.add(OreDictionary.getOres((String)in));
}
else
{
String ret = "Invalid shapeless ore recipe: ";
for (Object tmp : recipe)
{
ret += tmp + ", ";
}
ret += output;
throw new RuntimeException(ret);
}
}
}
@Override
public int getRecipeSize(){ return input.size(); }
@Override
public ItemStack getRecipeOutput(){ return output; }
@Override
public ItemStack getCraftingResult(InventoryCrafting var1){ return output.copy(); }
@Override
public boolean matches(InventoryCrafting inv, World world)
{
return inv instanceof IArcaneWorkbench && matches(inv,world,null);
}
@Override
public boolean matches(InventoryCrafting var1, World world, EntityPlayer player)
{
if (player!=null && ( research != null && research[0].length()>0 && !ResearchHelper.isResearchComplete(player.getName(), research))) {
return false;
}
ArrayList required = new ArrayList(input);
for (int x = 0; x < 9; x++)
{
ItemStack slot = var1.getStackInSlot(x);
if (slot != null)
{
boolean inRecipe = false;
Iterator req = required.iterator();
while (req.hasNext())
{
boolean match = false;
Object next = req.next();
if (next instanceof ItemStack)
{
match = checkItemEquals((ItemStack)next, slot);
}
else if (next instanceof List)
{
for (ItemStack item : (List<ItemStack>)next)
{
match = match || checkItemEquals(item, slot);
}
}
if (match)
{
inRecipe = true;
required.remove(next);
break;
}
}
if (!inRecipe)
{
return false;
}
}
}
return required.isEmpty();
}
private boolean checkItemEquals(ItemStack target, ItemStack input)
{
if (input == null && target != null || input != null && target == null)
{
return false;
}
return (target.getItem() == input.getItem() &&
(!target.hasTagCompound() || ThaumcraftApiHelper.areItemStackTagsEqualForCrafting(input,target)) &&
(target.getItemDamage() == OreDictionary.WILDCARD_VALUE|| target.getItemDamage() == input.getItemDamage()));
}
/**
* Returns the input for this recipe, any mod accessing this value should never
* manipulate the values in this array as it will effect the recipe itself.
* @return The recipes input vales.
*/
public ArrayList getInput()
{
return this.input;
}
@Override
public AspectList getAspects() {
return aspects;
}
@Override
public AspectList getAspects(InventoryCrafting inv) {
return aspects;
}
@Override
public String[] getResearch() {
return research;
}
@Override
public ItemStack[] getRemainingItems(InventoryCrafting p_179532_1_)
{
ItemStack[] aitemstack = new ItemStack[p_179532_1_.getSizeInventory()];
for (int i = 0; i < Math.min(9, aitemstack.length); ++i)
{
ItemStack itemstack = p_179532_1_.getStackInSlot(i);
aitemstack[i] = net.minecraftforge.common.ForgeHooks.getContainerItem(itemstack);
}
return aitemstack;
}
}

View File

@ -1,32 +0,0 @@
package thaumcraft.api.damagesource;
import net.minecraft.entity.Entity;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSourceIndirect;
public class DamageSourceIndirectThaumcraftEntity extends EntityDamageSourceIndirect {
private boolean fireDamage;
private float hungerDamage;
private boolean isUnblockable;
public DamageSourceIndirectThaumcraftEntity(String par1Str,
Entity par2Entity, Entity par3Entity) {
super(par1Str, par2Entity, par3Entity);
}
public DamageSource setFireDamage()
{
this.fireDamage = true;
return this;
}
public DamageSource setDamageBypassesArmor()
{
this.isUnblockable = true;
this.hungerDamage = 0.0F;
return this;
}
}

View File

@ -1,47 +0,0 @@
package thaumcraft.api.damagesource;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.DamageSource;
import net.minecraft.util.EntityDamageSource;
public class DamageSourceThaumcraft extends DamageSource
{
public static DamageSource taint = new DamageSourceThaumcraft("taint").setDamageBypassesArmor().setMagicDamage();
public static DamageSource tentacle = new DamageSourceThaumcraft("tentacle");
public static DamageSource swarm = new DamageSourceThaumcraft("swarm");
public static DamageSource dissolve = new DamageSourceThaumcraft("dissolve").setDamageBypassesArmor();
protected DamageSourceThaumcraft(String par1Str) {
super(par1Str);
}
/** This kind of damage can be blocked or not. */
private boolean isUnblockable = false;
private boolean isDamageAllowedInCreativeMode = false;
private float hungerDamage = 0.3F;
/** This kind of damage is based on fire or not. */
private boolean fireDamage;
/** This kind of damage is based on a projectile or not. */
private boolean projectile;
/**
* Whether this damage source will have its damage amount scaled based on the current difficulty.
*/
private boolean difficultyScaled;
private boolean magicDamage = false;
private boolean explosion = false;
public static DamageSource causeSwarmDamage(EntityLivingBase par0EntityLiving)
{
return new EntityDamageSource("swarm", par0EntityLiving);
}
public static DamageSource causeTentacleDamage(EntityLivingBase par0EntityLiving)
{
return new EntityDamageSource("tentacle", par0EntityLiving);
}
}

View File

@ -1,5 +0,0 @@
package thaumcraft.api.entities;
public interface IEldritchMob {
}

View File

@ -1,5 +0,0 @@
package thaumcraft.api.entities;
public interface ITaintedMob {
}

View File

@ -1,51 +0,0 @@
package thaumcraft.api.golems;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
public enum EnumGolemTrait {
SMART(new ResourceLocation("thaumcraft","textures/misc/golem/tag_smart.png")),
DEFT(new ResourceLocation("thaumcraft","textures/misc/golem/tag_deft.png")),
CLUMSY(new ResourceLocation("thaumcraft","textures/misc/golem/tag_clumsy.png")),
FIGHTER(new ResourceLocation("thaumcraft","textures/misc/golem/tag_fighter.png")),
WHEELED(new ResourceLocation("thaumcraft","textures/misc/golem/tag_wheeled.png")),
FLYER(new ResourceLocation("thaumcraft","textures/misc/golem/tag_flyer.png")),
CLIMBER(new ResourceLocation("thaumcraft","textures/misc/golem/tag_climber.png")),
HEAVY(new ResourceLocation("thaumcraft","textures/misc/golem/tag_heavy.png")),
LIGHT(new ResourceLocation("thaumcraft","textures/misc/golem/tag_light.png")),
FRAGILE(new ResourceLocation("thaumcraft","textures/misc/golem/tag_fragile.png")),
REPAIR(new ResourceLocation("thaumcraft","textures/misc/golem/tag_repair.png")),
SCOUT(new ResourceLocation("thaumcraft","textures/misc/golem/tag_scout.png")),
ARMORED(new ResourceLocation("thaumcraft","textures/misc/golem/tag_armored.png")),
BRUTAL(new ResourceLocation("thaumcraft","textures/misc/golem/tag_brutal.png")),
FIREPROOF(new ResourceLocation("thaumcraft","textures/misc/golem/tag_fireproof.png")),
BREAKER(new ResourceLocation("thaumcraft","textures/misc/golem/tag_breaker.png")),
HAULER(new ResourceLocation("thaumcraft","textures/misc/golem/tag_hauler.png")),
RANGED(new ResourceLocation("thaumcraft","textures/misc/golem/tag_ranged.png"));
static {
CLUMSY.opposite = DEFT;
DEFT.opposite = CLUMSY;
HEAVY.opposite = LIGHT;
LIGHT.opposite = HEAVY;
FRAGILE.opposite = ARMORED;
ARMORED.opposite = FRAGILE;
}
public ResourceLocation icon;
public EnumGolemTrait opposite;
private EnumGolemTrait(ResourceLocation icon) {
this.icon = icon;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.trait."+this.name().toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.trait.text."+this.name().toLowerCase());
}
}

View File

@ -1,107 +0,0 @@
package thaumcraft.api.golems;
import java.util.ArrayList;
import java.util.HashMap;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.golems.seals.ISeal;
import thaumcraft.api.golems.seals.ISealEntity;
import thaumcraft.api.golems.seals.SealPos;
import thaumcraft.api.golems.tasks.Task;
public class GolemHelper {
/**
* Make sure to register your seals during the preInit phase.
* @param seal
*/
public static void registerSeal(ISeal seal) {
ThaumcraftApi.internalMethods.registerSeal(seal);
}
public static ISeal getSeal(String key) {
return ThaumcraftApi.internalMethods.getSeal(key);
}
public static ItemStack getSealStack(String key) {
return ThaumcraftApi.internalMethods.getSealStack(key);
}
public static ISealEntity getSealEntity(int dim, SealPos pos) {
return ThaumcraftApi.internalMethods.getSealEntity(dim, pos);
}
public static void addGolemTask(int dim, Task task) {
ThaumcraftApi.internalMethods.addGolemTask(dim, task);
}
public static HashMap<Integer,ArrayList<ProvisionRequest>> provisionRequests = new HashMap<Integer,ArrayList<ProvisionRequest>>();
public static void requestProvisioning(World world, ISealEntity seal, ItemStack stack) {
if (!provisionRequests.containsKey(world.provider.getDimensionId()))
provisionRequests.put(world.provider.getDimensionId(), new ArrayList<ProvisionRequest>());
ArrayList<ProvisionRequest> list = provisionRequests.get(world.provider.getDimensionId());
ProvisionRequest pr = new ProvisionRequest(seal,stack);
if (!list.contains(pr))
list.add(pr);
}
/**
* This method is used to get a single blockpos from within a designated seal area.
* This method is best used if you want to increment through the blocks in the area.
* @param seal
* @param count a value used to derive a specific pos
* @return
*/
public static BlockPos getPosInArea(ISealEntity seal, int count) {
int xx = 1 + (seal.getArea().getX()-1) * (seal.getSealPos().face.getFrontOffsetX()==0?2:1);
int yy = 1 + (seal.getArea().getY()-1) * (seal.getSealPos().face.getFrontOffsetY()==0?2:1);
int zz = 1 + (seal.getArea().getZ()-1) * (seal.getSealPos().face.getFrontOffsetZ()==0?2:1);
int qx = seal.getSealPos().face.getFrontOffsetX()!=0?seal.getSealPos().face.getFrontOffsetX():1;
int qy = seal.getSealPos().face.getFrontOffsetY()!=0?seal.getSealPos().face.getFrontOffsetY():1;
int qz = seal.getSealPos().face.getFrontOffsetZ()!=0?seal.getSealPos().face.getFrontOffsetZ():1;
int y = qy*((count/zz)/xx)%yy + seal.getSealPos().face.getFrontOffsetY();
int x = qx*(count/zz)%xx + seal.getSealPos().face.getFrontOffsetX();
int z = qz*count%zz + seal.getSealPos().face.getFrontOffsetZ();
BlockPos p = seal.getSealPos().pos.add(
x - (seal.getSealPos().face.getFrontOffsetX()==0?xx/2:0),
y - (seal.getSealPos().face.getFrontOffsetY()==0?yy/2:0),
z - (seal.getSealPos().face.getFrontOffsetZ()==0?zz/2:0));
return p;
}
/**
* Returns the designated seal area as a AxisAlignedBB
* @param seal
* @return
*/
public static AxisAlignedBB getBoundsForArea(ISealEntity seal) {
return AxisAlignedBB.fromBounds(
seal.getSealPos().pos.getX(), seal.getSealPos().pos.getY(), seal.getSealPos().pos.getZ(),
seal.getSealPos().pos.getX()+1, seal.getSealPos().pos.getY()+1, seal.getSealPos().pos.getZ()+1)
.offset(
seal.getSealPos().face.getFrontOffsetX(),
seal.getSealPos().face.getFrontOffsetY(),
seal.getSealPos().face.getFrontOffsetZ())
.addCoord(
seal.getSealPos().face.getFrontOffsetX()!=0?(seal.getArea().getX()-1) * seal.getSealPos().face.getFrontOffsetX():0,
seal.getSealPos().face.getFrontOffsetY()!=0?(seal.getArea().getY()-1) * seal.getSealPos().face.getFrontOffsetY():0,
seal.getSealPos().face.getFrontOffsetZ()!=0?(seal.getArea().getZ()-1) * seal.getSealPos().face.getFrontOffsetZ():0)
.expand(
seal.getSealPos().face.getFrontOffsetX()==0?seal.getArea().getX()-1:0,
seal.getSealPos().face.getFrontOffsetY()==0?seal.getArea().getY()-1:0,
seal.getSealPos().face.getFrontOffsetZ()==0?seal.getArea().getZ()-1:0 );
}
}

View File

@ -1,63 +0,0 @@
package thaumcraft.api.golems;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
/**
* Contains functions to allow addon devs to access golem internals
*/
public interface IGolemAPI {
public EntityLivingBase getGolemEntity();
public IGolemProperties getProperties();
public void setProperties(IGolemProperties prop);
public World getGolemWorld();
/**
* Causes the golem to hold the itemstack supplied.
* @param stack
* @return anything left over that the golem could not hold. If the golem picked up the entire stack this will be a null.
*/
public ItemStack holdItem(ItemStack stack);
/**
* Causes the golem to remove an itemstack it is holding. It does not actually drop the item in the
* world or place it anywhere - that is up to whatever is calling this method.
* @param stack the itemstack that the golem will drop. If null is supplied the golem will drop whatever it is holding
* @return the stack it 'dropped'
*/
public ItemStack dropItem(ItemStack stack);
/**
* Checks if the golem has carrying capacity for the given stack
* @param stack the stack the golem has room for - can be null
* @param partial does the golem only need to have room for part of the stack?
* @return
*/
public boolean canCarry(ItemStack stack, boolean partial);
public boolean isCarrying(ItemStack stack);
public ItemStack[] getCarrying();
/**
* Gives the golem xp towards increasing its rank rating. Default is usually 1 for completing a task.
* @param xp
*/
public void addRankXp(int xp);
/**
* Plays arm swinging animated for attacks and such
*/
public void swingArm();
}

View File

@ -1,57 +0,0 @@
package thaumcraft.api.golems;
import java.util.Set;
import net.minecraft.item.ItemStack;
import thaumcraft.api.golems.parts.GolemAddon;
import thaumcraft.api.golems.parts.GolemArm;
import thaumcraft.api.golems.parts.GolemHead;
import thaumcraft.api.golems.parts.GolemLeg;
import thaumcraft.api.golems.parts.GolemMaterial;
public interface IGolemProperties {
public abstract Set<EnumGolemTrait> getTraits();
public abstract boolean hasTrait(EnumGolemTrait tag);
public abstract long toLong();
public abstract ItemStack[] generateComponents();
//material
public abstract void setMaterial(GolemMaterial mat);
public abstract GolemMaterial getMaterial();
//head
public abstract void setHead(GolemHead mat);
public abstract GolemHead getHead();
//arms
public abstract void setArms(GolemArm mat);
public abstract GolemArm getArms();
//legs
public abstract void setLegs(GolemLeg mat);
public abstract GolemLeg getLegs();
//addon
public abstract void setAddon(GolemAddon mat);
public abstract GolemAddon getAddon();
//rank
public abstract void setRank(int r);
public abstract int getRank();
}

View File

@ -1,11 +0,0 @@
package thaumcraft.api.golems;
/**
* Items using this interface will make golem seals visible in the world while held
*
* @author azanor
*
*/
public interface ISealDisplayer {
}

View File

@ -1,41 +0,0 @@
package thaumcraft.api.golems;
import net.minecraft.item.ItemStack;
import thaumcraft.api.golems.seals.ISealEntity;
public class ProvisionRequest {
private ISealEntity seal;
private ItemStack stack;
ProvisionRequest(ISealEntity seal, ItemStack stack) {
this.seal = seal;
this.stack = stack.copy();
this.stack.stackSize=this.stack.getMaxStackSize();
}
public ISealEntity getSeal() {
return seal;
}
public ItemStack getStack() {
return stack;
}
@Override
public boolean equals(Object p_equals_1_)
{
if (this == p_equals_1_)
{
return true;
}
else if (!(p_equals_1_ instanceof ProvisionRequest))
{
return false;
}
else
{
ProvisionRequest pr = (ProvisionRequest)p_equals_1_;
return !this.seal.getSealPos().equals(pr.getSeal().getSealPos()) ? false : this.stack.getIsItemStackEqual(pr.getStack());
}
}
}

View File

@ -1,68 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.golems.EnumGolemTrait;
public class GolemAddon {
protected static GolemAddon[] addons = new GolemAddon[1];
public byte id;
public String key;
public String[] research;
/**
* The icon used in the golem builder
*/
public ResourceLocation icon;
public Object[] components;
public EnumGolemTrait[] traits;
public IAddonFunction function;
public PartModel model;
public GolemAddon(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, EnumGolemTrait[] tags) {
this.key = key;
this.research=research;
this.icon=icon;
this.components = comp;
this.traits = tags;
this.model = model;
this.function = null;
}
public GolemAddon(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, IAddonFunction function, EnumGolemTrait[] tags) {
this(key,research,icon,model,comp,tags);
this.function=function;
}
private static byte lastID = 0;
public static void register(GolemAddon thing) {
thing.id = lastID;
lastID++;
// allocate space
if (thing.id>=addons.length) {
GolemAddon[] temp = new GolemAddon[thing.id+1];
System.arraycopy(addons, 0, temp, 0, addons.length);
addons = temp;
}
addons[thing.id] = thing;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.addon."+this.key.toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.addon.text."+this.key.toLowerCase());
}
public static GolemAddon[] getAddons() {
return addons;
}
/**
* This optional interface allows you to create a class that will add functionality for a specific part.
*/
public interface IAddonFunction extends IGenericFunction {
}
}

View File

@ -1,79 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.IRangedAttackMob;
import net.minecraft.entity.ai.EntityAIArrowAttack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.golems.EnumGolemTrait;
import thaumcraft.api.golems.IGolemAPI;
public class GolemArm {
protected static GolemArm[] arms = new GolemArm[1];
public byte id;
public String key;
public String[] research;
/**
* The icon used in the golem builder
*/
public ResourceLocation icon;
public Object[] components;
public EnumGolemTrait[] traits;
public IArmFunction function;
public PartModel model;
public GolemArm(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, EnumGolemTrait[] tags) {
this.key = key;
this.research=research;
this.icon=icon;
this.components = comp;
this.traits = tags;
this.model = model;
this.function = null;
}
public GolemArm(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, IArmFunction function, EnumGolemTrait[] tags) {
this(key,research,icon,model,comp,tags);
this.function = function;
}
private static byte lastID = 0;
public static void register(GolemArm thing) {
thing.id = lastID;
lastID++;
// allocate space
if (thing.id>=arms.length) {
GolemArm[] temp = new GolemArm[thing.id+1];
System.arraycopy(arms, 0, temp, 0, arms.length);
arms = temp;
}
arms[thing.id] = thing;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.arm."+this.key.toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.arm.text."+this.key.toLowerCase());
}
public static GolemArm[] getArms() {
return arms;
}
/**
* This optional interface allows you to create a class that will be called whenever
* the golem makes a ranged (using IRangedAttackMob) or melee attack.
* This will allow you to create your own projectiles
*/
public interface IArmFunction extends IGenericFunction {
public void onMeleeAttack(IGolemAPI golem, Entity ent);
public void onRangedAttack(IGolemAPI golem, EntityLivingBase target, float range);
public EntityAIArrowAttack getRangedAttackAI(IRangedAttackMob golem);
}
}

View File

@ -1,70 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.golems.EnumGolemTrait;
public class GolemHead {
protected static GolemHead[] heads = new GolemHead[1];
public byte id;
public String key;
public String[] research;
/**
* The icon used in the golem builder
*/
public ResourceLocation icon;
public Object[] components;
public EnumGolemTrait[] traits;
public IHeadFunction function;
public PartModel model;
public GolemHead(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, EnumGolemTrait[] tags) {
this.key = key;
this.research=research;
this.icon=icon;
this.components = comp;
this.traits = tags;
this.model = model;
this.function = null;
}
public GolemHead(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, IHeadFunction function, EnumGolemTrait[] tags) {
this(key,research,icon,model,comp,tags);
this.function=function;
}
private static byte lastID = 0;
public static void register(GolemHead thing) {
thing.id = lastID;
lastID++;
// allocate space
if (thing.id>=heads.length) {
GolemHead[] temp = new GolemHead[thing.id+1];
System.arraycopy(heads, 0, temp, 0, heads.length);
heads = temp;
}
heads[thing.id] = thing;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.head."+this.key.toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.head.text."+this.key.toLowerCase());
}
public static GolemHead[] getHeads() {
return heads;
}
/**
* This optional interface allows you to create a class that will add functionality for a specific part.
*/
public interface IHeadFunction extends IGenericFunction {
}
}

View File

@ -1,68 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.golems.EnumGolemTrait;
public class GolemLeg {
protected static GolemLeg[] legs = new GolemLeg[1];
public byte id;
public String key;
public String[] research;
/**
* The icon used in the golem builder
*/
public ResourceLocation icon;
public Object[] components;
public EnumGolemTrait[] traits;
public ILegFunction function;
public PartModel model;
public GolemLeg(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, EnumGolemTrait[] tags) {
this.key = key;
this.research=research;
this.icon=icon;
this.components = comp;
this.traits = tags;
this.model = model;
this.function = null;
}
public GolemLeg(String key,String[] research,ResourceLocation icon, PartModel model, Object[] comp, ILegFunction function, EnumGolemTrait[] tags) {
this(key,research,icon,model,comp,tags);
this.function=function;
}
private static byte lastID = 0;
public static void register(GolemLeg thing) {
thing.id = lastID;
lastID++;
// allocate space
if (thing.id>=legs.length) {
GolemLeg[] temp = new GolemLeg[thing.id+1];
System.arraycopy(legs, 0, temp, 0, legs.length);
legs = temp;
}
legs[thing.id] = thing;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.leg."+this.key.toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.leg.text."+this.key.toLowerCase());
}
public static GolemLeg[] getLegs() {
return legs;
}
/**
* This optional interface allows you to create a class that will add functionality for a specific part.
*/
public interface ILegFunction extends IGenericFunction {
}
}

View File

@ -1,71 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.golems.EnumGolemTrait;
public class GolemMaterial {
protected static GolemMaterial[] materials = new GolemMaterial[1];
public byte id;
public String key;
public String[] research;
/**
* The actual base model texture file that will be used for this material.
*/
public ResourceLocation texture;
/**
* The color applied to the item model used by the golem placer and builder.
*/
public int itemColor;
public int healthMod;
public int armor;
public int damage;
public ItemStack componentBase;
public ItemStack componentMechanism;
public EnumGolemTrait[] traits;
public GolemMaterial(String key,String[] research,ResourceLocation texture, int itemColor,
int hp, int armor, int damage, ItemStack compb, ItemStack compm, EnumGolemTrait[] tags) {
this.key = key;
this.research=research;
this.texture=texture;
this.itemColor=itemColor;
this.componentBase = compb;
this.componentMechanism = compm;
this.healthMod = hp;
this.armor = armor;
this.traits = tags;
this.damage = damage;
}
private static byte lastID = 0;
public static void register(GolemMaterial thing) {
thing.id = lastID;
lastID++;
// allocate space
if (thing.id>=materials.length) {
GolemMaterial[] temp = new GolemMaterial[thing.id+1];
System.arraycopy(materials, 0, temp, 0, materials.length);
materials = temp;
}
materials[thing.id] = thing;
}
public String getLocalizedName() {
return StatCollector.translateToLocal("golem.material."+this.key.toLowerCase());
}
public String getLocalizedDescription() {
return StatCollector.translateToLocal("golem.material.text."+this.key.toLowerCase());
}
public static GolemMaterial[] getMaterials() {
return materials;
}
}

View File

@ -1,7 +0,0 @@
package thaumcraft.api.golems.parts;
import thaumcraft.api.golems.IGolemAPI;
public interface IGenericFunction {
public void onUpdateTick(IGolemAPI golem);
}

View File

@ -1,73 +0,0 @@
package thaumcraft.api.golems.parts;
import net.minecraft.util.ResourceLocation;
import thaumcraft.api.golems.IGolemAPI;
/**
*
* This class is used to define a model used by a part. The model needs to be in the .obj format and you may have to provide a texture.
* You can specify which model parts use your texture and which should use the material texture.
*
* You can also specify an attachment point for the entire model.
* HANDS will render the model twice - one at the end of each arm.
* LEGS will render the model twice (once for each leg) and will apply the normal walking animation tranforms to them
* BODY and HEAD should be fairly obvious
*
*/
public class PartModel {
private ResourceLocation objModel;
private ResourceLocation texture;
private EnumAttachPoint attachPoint;
public enum EnumAttachPoint { ARMS, LEGS, BODY, HEAD; }
public PartModel(ResourceLocation objModel, ResourceLocation objTexture, EnumAttachPoint attachPoint) {
this.objModel = objModel;
this.texture = objTexture;
this.attachPoint = attachPoint;
}
public ResourceLocation getObjModel() {
return objModel;
}
public ResourceLocation getTexture() {
return texture;
}
public EnumAttachPoint getAttachPoint() {
return attachPoint;
}
/**
* Returns true if you want this named part of your model to use the golem material texture instead you the part texture. You
* will obviously need to make sure your model fits the material texture template.
* By default it simply checks if the object name starts with "bm", but obviously you can do your own thing if you override this.
* @param partName the obj model part name
* @return
*/
public boolean useMaterialTextureForObjectPart(String partName) {
return partName.startsWith("bm");
}
/**
* This method will be called just before a specific part is rendered allowing you to apply custom transforms to it if you wish.
* @param partName the obj model part name
*/
public void preRenderObjectPart(String partName, IGolemAPI golem, float partialTicks, EnumLimbSide side) {
}
/**
* This method will be called just after a specific part is rendered. Used for cleanup mostly.
* @param partName the obj model part name
*/
public void postRenderObjectPart(String partName, IGolemAPI golem, float partialTicks, EnumLimbSide side) {
}
public enum EnumLimbSide {
LEFT,RIGHT,MIDDLE;
}
}

View File

@ -1,60 +0,0 @@
package thaumcraft.api.golems.seals;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import thaumcraft.api.golems.EnumGolemTrait;
import thaumcraft.api.golems.IGolemAPI;
import thaumcraft.api.golems.tasks.Task;
public interface ISeal {
/**
* @return
* A unique string identifier for this seal. A good idea would be to append your modid before the identifier.
* For example: "thaumcraft:fetch"
* This will also be used to create the item model for the seal placer so you will have to define a json using
* the key with "seal_" added to the front of the key.
* For example: models/item/seal_fetch.json
*/
public String getKey();
public boolean canPlaceAt(World world, BlockPos pos, EnumFacing side);
public void tickSeal(World world, ISealEntity seal);
public void onTaskStarted(World world, IGolemAPI golem, Task task);
public boolean onTaskCompletion(World world, IGolemAPI golem, Task task);
public void onTaskSuspension(World world, Task task);
public boolean canGolemPerformTask(IGolemAPI golem, Task task);
public void readCustomNBT(NBTTagCompound nbt);
public void writeCustomNBT(NBTTagCompound nbt);
/**
* @return icon used to render the seal in world. Usually the same as your seal placer item icon.
* If it is not the same you will have to manually stitch it into the texture atlas.
*/
public ResourceLocation getSealIcon();
public void onRemoval(World world, BlockPos pos, EnumFacing side);
public Object returnContainer(World world, EntityPlayer player, BlockPos pos, EnumFacing side, ISealEntity seal);
@SideOnly(Side.CLIENT)
public Object returnGui(World world, EntityPlayer player, BlockPos pos, EnumFacing side, ISealEntity seal);
public EnumGolemTrait[] getRequiredTags();
public EnumGolemTrait[] getForbiddenTags();
}

View File

@ -1,8 +0,0 @@
package thaumcraft.api.golems.seals;
/**
* This class identifies this seal as using the default area configuration options.
*/
public interface ISealConfigArea {
}

View File

@ -1,18 +0,0 @@
package thaumcraft.api.golems.seals;
import net.minecraft.item.ItemStack;
public interface ISealConfigFilter {
public ItemStack[] getInv();
public int getFilterSize();
public ItemStack getFilterSlot(int i);
public void setFilterSlot(int i, ItemStack stack);
public boolean isBlacklist();
public void setBlacklist(boolean black);
}

View File

@ -1,40 +0,0 @@
package thaumcraft.api.golems.seals;
public interface ISealConfigToggles {
public SealToggle[] getToggles();
public void setToggle(int indx, boolean value);
public class SealToggle {
public boolean value;
public String key;
public String name;
public SealToggle(boolean value, String key, String name) {
this.value = value;
this.key = key;
this.name=name;
}
public boolean getValue() {
return value;
}
public void setValue(boolean value) {
this.value = value;
}
public String getKey() {
return key;
}
public String getName() {
return name;
}
}
}

View File

@ -1,37 +0,0 @@
package thaumcraft.api.golems.seals;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public interface ISealEntity {
public void tickSealEntity(World world);
public ISeal getSeal();
public SealPos getSealPos();
public byte getPriority();
public void setPriority(byte priority);
public void readNBT(NBTTagCompound nbt);
public NBTTagCompound writeNBT();
public void syncToClient(World world);
public BlockPos getArea();
public void setArea(BlockPos v);
boolean isLocked();
void setLocked(boolean locked);
String getOwner();
void setOwner(String owner);
}

View File

@ -1,12 +0,0 @@
package thaumcraft.api.golems.seals;
public interface ISealGui {
final int CAT_PRIORITY = 0;
final int CAT_FILTER = 1;
final int CAT_AREA = 2;
final int CAT_TOGGLES = 3;
final int CAT_TAGS = 4;
public int[] getGuiCategories();
}

View File

@ -1,43 +0,0 @@
package thaumcraft.api.golems.seals;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
public class SealPos {
public BlockPos pos;
public EnumFacing face;
public SealPos(BlockPos pos, EnumFacing face) {
super();
this.pos = pos;
this.face = face;
}
@Override
public int hashCode()
{
byte b0 = (byte) (face.ordinal()+1);
int i = 31 * b0 + this.pos.getX();
i = 31 * i + this.pos.getY();
i = 31 * i + this.pos.getZ();
return i;
}
@Override
public boolean equals(Object p_equals_1_)
{
if (this == p_equals_1_)
{
return true;
}
else if (!(p_equals_1_ instanceof SealPos))
{
return false;
}
else
{
SealPos sp = (SealPos)p_equals_1_;
return !this.pos.equals(sp.pos) ? false : this.face.equals(sp.face);
}
}
}

View File

@ -1,212 +0,0 @@
package thaumcraft.api.golems.tasks;
import java.util.UUID;
import net.minecraft.entity.Entity;
import net.minecraft.util.BlockPos;
import thaumcraft.api.golems.GolemHelper;
import thaumcraft.api.golems.IGolemAPI;
import thaumcraft.api.golems.seals.ISealEntity;
import thaumcraft.api.golems.seals.SealPos;
public class Task {
private UUID golemUUID;
private int id;
private byte type;
private SealPos sealPos;
private BlockPos pos;
private Entity entity;
private boolean reserved;
private boolean suspended;
private boolean completed;
private int data;
/**
* Lifespan in seconds. Default 120 seconds
*/
private short lifespan;
private byte priority=0;
private Task() {}
public Task(SealPos sealPos, BlockPos pos) {
this.sealPos = sealPos;
this.pos = pos;
if (sealPos==null) {
this.id = (System.currentTimeMillis()+"/BNPOS/"+pos.toString()).hashCode();
} else
this.id = (System.currentTimeMillis()+"/B/"+sealPos.face.toString()+"/"+sealPos.pos.toString()+"/"+pos.toString()).hashCode();
this.type = 0;
this.lifespan = 300;
}
public Task(SealPos sealPos, Entity entity) {
this.sealPos = sealPos;
this.entity = entity;
if (sealPos==null) {
this.id = (System.currentTimeMillis()+"/ENPOS/"+pos.toString()).hashCode();
} else
this.id = (System.currentTimeMillis()+"/E/"+sealPos.face.toString()+"/"+sealPos.pos.toString()+"/"+entity.getEntityId()).hashCode();
this.type = 1;
this.lifespan = 300;
}
public byte getPriority() {
return priority;
}
public void setPriority(byte priority) {
this.priority = priority;
}
public boolean isCompleted() {
return completed;
}
public void setCompletion(boolean fulfilled) {
this.completed = fulfilled;
this.lifespan += 60;
}
public UUID getGolemUUID() {
return golemUUID;
}
public void setGolemUUID(UUID golemUUID) {
this.golemUUID = golemUUID;
}
public BlockPos getPos() {
return type==1?entity.getPosition():pos;
}
public byte getType() {
return type;
}
public Entity getEntity() {
return entity;
}
public int getId() {
return id;
}
public boolean isReserved() {
return reserved;
}
public void setReserved(boolean res) {
this.reserved = res;
this.lifespan += 60;
}
public boolean isSuspended() {
return suspended;
}
public void setSuspended(boolean suspended) {
this.suspended = suspended;
}
public SealPos getSealPos() {
return sealPos;
}
public boolean equals(Object o)
{
if (!(o instanceof Task))
{
return false;
}
else
{
Task t = (Task)o;
return t.id == this.id;
}
}
public long getLifespan() {
return lifespan;
}
public void setLifespan(short ls) {
this.lifespan = ls;
}
public boolean canGolemPerformTask(IGolemAPI golem) {
ISealEntity se = GolemHelper.getSealEntity(golem.getGolemWorld().provider.getDimensionId(), this.sealPos);
if (se!=null) {
return se.getSeal().canGolemPerformTask(golem,this);
} else {
return true;
}
}
public int getData() {
return data;
}
public void setData(int data) {
this.data = data;
}
// public static Task readNBT(NBTTagCompound nbt)
// {
// Task task = new Task();
// task.id = nbt.getInteger("id");
// task.type = nbt.getByte("type");
// if (nbt.hasKey("pos", 4)) task.pos = BlockPos.fromLong(nbt.getLong("pos"));
//
// if (nbt.hasKey("GUUIDMost", 4) && nbt.hasKey("GUUIDLeast", 4))
// task.golemUUID = new UUID(nbt.getLong("GUUIDMost"), nbt.getLong("GUUIDLeast"));
//
// if (nbt.hasKey("EUUIDMost", 4) && nbt.hasKey("EUUIDLeast", 4))
// task.entityUUID = new UUID(nbt.getLong("EUUIDMost"), nbt.getLong("EUUIDLeast"));
//
// if (task.pos==null && task.entityUUID==null) return null;
//
// task.reserved = nbt.getBoolean("reserved");
// task.waitOnSuspension = nbt.getBoolean("wos");
// task.suspended = false;
// task.completed = nbt.getBoolean("completed");
// task.expireTime = System.currentTimeMillis() + 300000;
// if (nbt.hasKey("sealpos", 10)) {
// NBTTagCompound sealpos = nbt.getCompoundTag("sealpos");
// SealPos sp = new SealPos(BlockPos.fromLong(nbt.getLong("pos")), EnumFacing.VALUES[nbt.getByte("face")]);
// TaskHandler.sealTaskCrossRef.put(task.id, sp);
// }
// return task;
// }
//
// public static NBTTagCompound writeNBT(Task task)
// {
// NBTTagCompound nbt = new NBTTagCompound();
// nbt.setInteger("id", task.id);
// nbt.setByte("type", task.type);
// if (task.pos!=null) nbt.setLong("pos", task.pos.toLong());
// if (task.entity!=null) {
// nbt.setLong("EUUIDMost", task.entity.getUniqueID().getMostSignificantBits());
// nbt.setLong("EUUIDLeast", task.entity.getUniqueID().getLeastSignificantBits());
// }
// if (task.golemUUID!=null) {
// nbt.setLong("GUUIDMost", task.golemUUID.getMostSignificantBits());
// nbt.setLong("GUUIDLeast", task.golemUUID.getLeastSignificantBits());
// }
// nbt.setBoolean("reserved", task.reserved);
// nbt.setBoolean("wos", task.waitOnSuspension);
// nbt.setBoolean("completed", task.completed);
//
// SealPos sp = TaskHandler.sealTaskCrossRef.get(task.getId());
// if (sp!=null) {
// NBTTagCompound sealpos = new NBTTagCompound();
// sealpos.setLong("pos", sp.pos.toLong());
// sealpos.setByte("face", (byte) sp.face.ordinal());
// nbt.setTag("sealpos", sealpos);
// }
// return nbt;
// }
}

View File

@ -1,134 +0,0 @@
package thaumcraft.api.internal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.golems.seals.ISeal;
import thaumcraft.api.golems.seals.ISealEntity;
import thaumcraft.api.golems.seals.SealPos;
import thaumcraft.api.golems.tasks.Task;
public class DummyInternalMethodHandler implements IInternalMethodHandler {
@Override
public boolean isResearchComplete(String username, String researchkey) {
return false;
}
@Override
public AspectList getObjectAspects(ItemStack is) {
return null;
}
@Override
public AspectList generateTags(Item item, int meta) {
return null;
}
@Override
public boolean consumeVisFromWand(ItemStack wand, EntityPlayer player,
AspectList cost, boolean doit, boolean crafting) {
return false;
}
@Override
public boolean consumeVisFromInventory(EntityPlayer player, AspectList cost) {
return false;
}
@Override
public void addWarpToPlayer(EntityPlayer player, int amount, EnumWarpType type) {
}
@Override
public int getPlayerWarp(EntityPlayer player, EnumWarpType type) {
return 0;
}
@Override
public void markRunicDirty(Entity entity) {
}
@Override
public boolean completeResearch(EntityPlayer player, String researchkey) {
return false;
}
@Override
public boolean drainAura(World world, BlockPos pos, Aspect aspect, int amount) {
return false;
}
@Override
public void addAura(World world, BlockPos pos, Aspect aspect, int amount) {
}
@Override
public void pollute(World world, BlockPos pos, int amount, boolean showEffect) { }
@Override
public int getAura(World world, BlockPos pos, Aspect aspect) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int getAuraBase(World world, BlockPos pos) {
// TODO Auto-generated method stub
return 0;
}
@Override
public int drainAuraAvailable(World world, BlockPos pos, Aspect aspect,
int amount) {
// TODO Auto-generated method stub
return 0;
}
@Override
public void registerSeal(ISeal seal) {
// TODO Auto-generated method stub
}
@Override
public ISeal getSeal(String key) {
// TODO Auto-generated method stub
return null;
}
@Override
public ISealEntity getSealEntity(int dim, SealPos pos) {
// TODO Auto-generated method stub
return null;
}
@Override
public void addGolemTask(int dim, Task task) {
// TODO Auto-generated method stub
}
@Override
public boolean shouldPreserveAura(World world, EntityPlayer player,
BlockPos pos, Aspect aspect) {
// TODO Auto-generated method stub
return false;
}
@Override
public ItemStack getSealStack(String key) {
// TODO Auto-generated method stub
return null;
}
}

View File

@ -1,5 +0,0 @@
package thaumcraft.api.internal;
public enum EnumWarpType {
PERMANENT, NORMAL, TEMPORARY;
}

View File

@ -1,40 +0,0 @@
package thaumcraft.api.internal;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.golems.seals.ISeal;
import thaumcraft.api.golems.seals.ISealEntity;
import thaumcraft.api.golems.seals.SealPos;
import thaumcraft.api.golems.tasks.Task;
public interface IInternalMethodHandler {
public boolean isResearchComplete(String username, String researchkey);
public AspectList getObjectAspects(ItemStack is);
public AspectList generateTags(Item item, int meta);
public boolean consumeVisFromWand(ItemStack wand, EntityPlayer player, AspectList cost, boolean doit, boolean crafting);
public boolean consumeVisFromInventory(EntityPlayer player, AspectList cost);
public void addWarpToPlayer(EntityPlayer player, int amount, EnumWarpType type);
public int getPlayerWarp(EntityPlayer player, EnumWarpType type);
public void markRunicDirty(Entity entity);
public boolean completeResearch(EntityPlayer player, String researchkey);
public boolean drainAura(World world, BlockPos pos, Aspect aspect,int amount);
public int drainAuraAvailable(World world, BlockPos pos, Aspect aspect, int amount);
public void addAura(World world, BlockPos pos, Aspect aspect, int amount);
public void pollute(World world, BlockPos pos, int amount, boolean showEffect);
public int getAura(World world, BlockPos pos, Aspect aspect);
public int getAuraBase(World world, BlockPos pos);
public void registerSeal(ISeal seal);
public ISeal getSeal(String key);
public ISealEntity getSealEntity(int dim, SealPos pos);
public void addGolemTask(int dim, Task task);
public boolean shouldPreserveAura(World world, EntityPlayer player, BlockPos pos, Aspect aspect);
public ItemStack getSealStack(String key);
}

View File

@ -1,24 +0,0 @@
package thaumcraft.api.internal;
import java.util.ArrayList;
import net.minecraft.item.ItemStack;
import net.minecraft.util.WeightedRandom;
public class WeightedRandomLoot extends WeightedRandom.Item {
/** The Item/Block ID to generate in the bag. */
public ItemStack item;
public WeightedRandomLoot(ItemStack stack, int weight)
{
super(weight);
this.item = stack;
}
public static ArrayList<WeightedRandomLoot> lootBagCommon = new ArrayList<WeightedRandomLoot>();
public static ArrayList<WeightedRandomLoot> lootBagUncommon = new ArrayList<WeightedRandomLoot>();
public static ArrayList<WeightedRandomLoot> lootBagRare = new ArrayList<WeightedRandomLoot>();
}

View File

@ -1,101 +0,0 @@
package thaumcraft.api.internal;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.BlockPos;
public class WorldCoordinates implements Comparable
{
public BlockPos pos;
public int dim;
public WorldCoordinates() {}
public WorldCoordinates(BlockPos pos, int d)
{
this.pos = pos;
this.dim = d;
}
public WorldCoordinates(TileEntity tile)
{
this.pos = tile.getPos();
this.dim = tile.getWorld().provider.getDimensionId();
}
public WorldCoordinates(WorldCoordinates par1ChunkCoordinates)
{
this.pos = par1ChunkCoordinates.pos;
this.dim = par1ChunkCoordinates.dim;
}
public boolean equals(Object par1Obj)
{
if (!(par1Obj instanceof WorldCoordinates))
{
return false;
}
else
{
WorldCoordinates coordinates = (WorldCoordinates)par1Obj;
return this.pos.equals(coordinates.pos) && this.dim == coordinates.dim ;
}
}
public int hashCode()
{
return this.pos.getX() + this.pos.getY() << 8 + this.pos.getZ() << 16 + this.dim << 24;
}
/**
* Compare the coordinate with another coordinate
*/
public int compareWorldCoordinate(WorldCoordinates par1)
{
return this.dim == par1.dim ? this.pos.compareTo(par1.pos) : -1;
}
public void set(BlockPos pos, int d)
{
this.pos = pos;
this.dim = d;
}
/**
* Returns the squared distance between this coordinates and the coordinates given as argument.
*/
public double getDistanceSquared(BlockPos pos)
{
return this.pos.distanceSq(pos);
}
/**
* Return the squared distance between this coordinates and the ChunkCoordinates given as argument.
*/
public double getDistanceSquaredToWorldCoordinates(WorldCoordinates par1ChunkCoordinates)
{
return this.getDistanceSquared(par1ChunkCoordinates.pos);
}
public int compareTo(Object par1Obj)
{
return this.compareWorldCoordinate((WorldCoordinates)par1Obj);
}
public void readNBT(NBTTagCompound nbt) {
int x = nbt.getInteger("w_x");
int y = nbt.getInteger("w_y");
int z = nbt.getInteger("w_z");
this.pos = new BlockPos(x,y,z);
this.dim = nbt.getInteger("w_d");
}
public void writeNBT(NBTTagCompound nbt) {
nbt.setInteger("w_x",pos.getX());
nbt.setInteger("w_y",pos.getY());
nbt.setInteger("w_z",pos.getZ());
nbt.setInteger("w_d",dim);
}
}

View File

@ -1,30 +0,0 @@
package thaumcraft.api.items;
import java.util.ArrayList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.util.EnumFacing;
import net.minecraft.world.World;
public interface IArchitect {
/**
* Returns a list of blocks that should be highlighted in world.
*/
public ArrayList<BlockPos> getArchitectBlocks(ItemStack stack, World world,
BlockPos pos, EnumFacing side, EntityPlayer player);
/**
* which axis should be displayed.
*/
public boolean showAxis(ItemStack stack, World world, EntityPlayer player, EnumFacing side,
EnumAxis axis);
public enum EnumAxis {
X, // east / west
Y, // up / down
Z; // north / south
}
}

View File

@ -1,22 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
/**
*
* @author Azanor
*
* Equipped or held items that extend this class will be able to perform most functions that
* goggles of revealing can apart from view nodes which is handled by IRevealer.
*
*/
public interface IGoggles {
/*
* If this method returns true things like block essentia contents will be shown.
*/
public boolean showIngamePopups(ItemStack itemstack, EntityLivingBase player);
}

View File

@ -1,35 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
/**
*
* @author Azanor
*
* Items with this interface can be recharged in wand pedestals and similar devices.
* The recharging needs to occur in handleRecharge and the passed in pos will be the
* player pos or the pos of the device doing the charging.
* The recharge pedestal will simply call handleRecharge and let the item do whatever
* it would normally to recharge.
* HandleRecharge should under normal conditions always be called every 5 ticks.
*
*/
public interface IRechargable {
/**
* @param world
* @param is
* @param pos
* @param player The passed in player can be null
* @param amount how much vis to recharge - modified by things like the node tapper research
* @return the last aspect that was recharged
*/
public Aspect handleRecharge(World world, ItemStack is, BlockPos pos, EntityPlayer player, int amount);
public AspectList getAspectsInChargable(ItemStack is);
}

View File

@ -1,13 +0,0 @@
package thaumcraft.api.items;
/**
* @author Azanor
* Items, armor and tools with this interface can receive the Repair enchantment.
* Repairs 1 point of durability every 10 seconds (2 for repair II)
*/
public interface IRepairable {
}

View File

@ -1,17 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
* @author Azanor
* Items, armor and tools with this interface can receive the Repair enchantment.
* Repairs 1 point of durability every 10 seconds (2 for repair II)
*/
public interface IRepairableExtended extends IRepairable {
public boolean doRepair(ItemStack stack, EntityPlayer player, int enchantlevel);
}

View File

@ -1,22 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
/**
*
* @author Azanor
*
* Equipped or held items that extend this class will make nodes or related objects visible in world.
*
*/
public interface IRevealer {
/*
* If this method returns true the nodes will be visible.
*/
public boolean showNodes(ItemStack itemstack, EntityLivingBase player);
}

View File

@ -1,22 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.item.ItemStack;
/**
*
* @author Azanor
*
* Armor or bauble slot items that implement this interface can provide runic shielding.
* Recharging, hardening, etc. is handled internally by thaumcraft.
*
*/
public interface IRunicArmor {
/**
* returns how much charge this item can provide. This is the base shielding value - any hardening is stored and calculated internally.
*/
public int getRunicCharge(ItemStack itemstack);
}

View File

@ -1,14 +0,0 @@
package thaumcraft.api.items;
/**
*
* @author Azanor
*
* Interface used to identify scribing tool items used in research table
*
*/
public interface IScribeTools {
}

View File

@ -1,20 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import thaumcraft.api.aspects.Aspect;
/**
* @author Azanor
* ItemArmor with this interface will grant a discount to the vis cost of actions the wearer performs with casting wands.
* The amount returned is the percentage by which the cost is discounted. There is a built-int max discount of 50%, but
* individual items really shouldn't have a discount more than 5%
*/
public interface IVisDiscountGear {
int getVisDiscount(ItemStack stack, EntityPlayer player, Aspect aspect);
}

View File

@ -1,22 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
*
* @author Azanor
*
* Armor, held items or bauble slot items that implement this interface add warp when equipped or held.
*
*/
public interface IWarpingGear {
/**
* returns how much warp this item adds while worn or held.
*/
public int getWarp(ItemStack itemstack, EntityPlayer player);
}

View File

@ -1,88 +0,0 @@
package thaumcraft.api.items;
import java.util.List;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.aspects.IEssentiaContainerItem;
public class ItemGenericEssentiaContainer extends Item implements IEssentiaContainerItem
{
public ItemGenericEssentiaContainer(int base)
{
super();
this.base = base;
this.setMaxStackSize(64);
this.setHasSubtypes(true);
this.setMaxDamage(0);
}
int base = 1;
@SideOnly(Side.CLIENT)
@Override
public void getSubItems(Item par1, CreativeTabs par2CreativeTabs,List par3List) {
for (Aspect tag:Aspect.aspects.values()) {
ItemStack i = new ItemStack(this);
this.setAspects(i, new AspectList().add(tag, base));
par3List.add(i);
}
}
@SideOnly(Side.CLIENT)
@Override
public int getColorFromItemStack(ItemStack stack, int par2)
{
if (getAspects(stack)!=null) {
return getAspects(stack).getAspects()[0].getColor();
} else {
return 16777215;
}
}
@Override
public AspectList getAspects(ItemStack itemstack) {
if (itemstack.hasTagCompound()) {
AspectList aspects = new AspectList();
aspects.readFromNBT(itemstack.getTagCompound());
return aspects.size()>0?aspects:null;
}
return null;
}
@Override
public void setAspects(ItemStack itemstack, AspectList aspects) {
if (!itemstack.hasTagCompound())
itemstack.setTagCompound(new NBTTagCompound());
aspects.writeToNBT(itemstack.getTagCompound());
}
@Override
public boolean ignoreContainedAspects() {return false;}
@Override
public void onUpdate(ItemStack stack, World world, Entity entity, int par4, boolean par5) {
if (!world.isRemote && !stack.hasTagCompound()) {
Aspect[] displayAspects = Aspect.aspects.values().toArray(new Aspect[]{});
this.setAspects(stack, new AspectList().add(displayAspects[world.rand.nextInt(displayAspects.length)], base));
}
super.onUpdate(stack, world, entity, par4, par5);
}
@Override
public void onCreated(ItemStack stack, World world, EntityPlayer player) {
if (!world.isRemote && !stack.hasTagCompound()) {
Aspect[] displayAspects = Aspect.aspects.values().toArray(new Aspect[]{});
this.setAspects(stack, new AspectList().add(displayAspects[world.rand.nextInt(displayAspects.length)], base));
}
}
}

View File

@ -1,21 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
public class ItemRunic extends Item implements IRunicArmor {
int charge;
public ItemRunic (int charge)
{
super();
this.charge = charge;
}
@Override
public int getRunicCharge(ItemStack itemstack) {
return charge;
}
}

View File

@ -1,193 +0,0 @@
package thaumcraft.api.items;
import net.minecraft.item.Item;
public class ItemsTC {
//raw materials
public static Item amber;
public static Item quicksilver;
/** air, fire, water, earth, order, entropy, tainted, balanced*/
public static Item shard;
/** "thaumium","void","brass"*/
public static Item ingots;
/**"iron","copper","tin","silver","lead","quicksilver","thaumium","void","brass"*/
public static Item nuggets;
/**"iron","gold","copper","tin","silver","lead","cinnabar"*/
public static Item clusters;
//resources
public static Item tallow;
public static Item fabric;
/** "brass","thaumium","void"*/
public static Item gear;
/** "brass","iron","thaumium","void"*/
public static Item plate;
public static Item voidSeed;
public static Item salisMundus;
public static Item mirroredGlass;
public static Item primalCharm;
public static Item phial;
public static Item label;
public static Item filter;
/** "clockwork","biothaumic" */
public static Item mind;
public static Item morphicResonator;
/** "vision", "aggression" */
public static Item modules;
//consumables
public static Item alumentum;
public static Item brain;
/** "beef","chicken","pork","fish","rabbit","mutton"*/
public static Item chunks;
public static Item tripleMeatTreat;
public static Item bucketDeath;
public static Item bucketPure;
public static Item bottleTaint;
public static Item bathSalts;
public static Item sanitySoap;
/** "basic","focus","magnet","advanced"*/
public static Item turretPlacer;
//armor
public static Item goggles;
public static Item travellerBoots;
public static Item thaumiumHelm;
public static Item thaumiumChest;
public static Item thaumiumLegs;
public static Item thaumiumBoots;
public static Item clothChest;
public static Item clothLegs;
public static Item clothBoots;
public static Item fortressHelm;
public static Item fortressChest;
public static Item fortressLegs;
public static Item voidHelm;
public static Item voidChest;
public static Item voidLegs;
public static Item voidBoots;
public static Item voidRobeHelm;
public static Item voidRobeChest;
public static Item voidRobeLegs;
public static Item crimsonBoots;
public static Item crimsonPlateHelm;
public static Item crimsonPlateChest;
public static Item crimsonPlateLegs;
public static Item crimsonRobeHelm;
public static Item crimsonRobeChest;
public static Item crimsonRobeLegs;
public static Item crimsonPraetorHelm;
public static Item crimsonPraetorChest;
public static Item crimsonPraetorLegs;
public static Item thaumostaticHarness;
//tools
public static Item thaumometer;
public static Item thaumonomicon;
public static Item resonator;
public static Item sinisterStone;
public static Item sanityChecker;
public static Item thaumiumAxe;
public static Item thaumiumSword;
public static Item thaumiumShovel;
public static Item thaumiumPick;
public static Item thaumiumHoe;
public static Item elementalAxe;
public static Item elementalSword;
public static Item elementalShovel;
public static Item elementalPick;
public static Item elementalHoe;
public static Item voidAxe;
public static Item voidSword;
public static Item voidShovel;
public static Item voidPick;
public static Item voidHoe;
public static Item crimsonBlade;
public static Item primalCrusher;
public static Item boneBow;
public static Item primalArrows;
public static Item handMirror;
//wand
public static Item wand;
/** iron, gold, brass, thaumium_inert, thaumium_charged, void_inert, void_charged*/
public static Item wandCaps;
/** greatwood, silverwood, obsidian, blaze, ice, quartz, bone, reed,
* greatwood_staff, silverwood_staff, obsidian_staff, blaze_staff, ice_staff,
* quartz_staff, bone_staff, reed_staff, primal_staff */
public static Item wandRods;
public static Item focusEqualTrade;
public static Item focusFire;
public static Item focusFrost;
public static Item focusPech;
public static Item focusExcavation;
public static Item focusHellbat;
public static Item focusPrimal;
public static Item focusShock;
public static Item focusWarding;
public static Item focusHole;
public static Item focusShard;
public static Item focusGrapple;
public static Item focusPouch;
//baubles
/** "amulet_mundane","ring_mundane","girdle_mundane","ring_apprentice"*/
public static Item baubles;
public static Item amuletRunic;
public static Item ringRunic;
public static Item girdleRunic;
public static Item amuletVis;
public static Item girdleHover;
//misc
/** "slime","tendril"*/
public static Item tainted;
public static Item knowledgeFragment;
public static Item coin;
public static Item wispyEssence;
public static Item crystalEssence;
public static Item primordialPearl;
public static Item researchNotes;
public static Item scribingTools;
public static Item lootBag;
public static Item eldritchEye;
public static Item crimsonRites;
public static Item runedTablet;
public static Item creativePlacer;
//golems
public static Item golemBell;
public static Item golemPlacer;
/**
* damage 0 = blank seal
* use GolemHelper.getSealStack to return an itemstack of a specific seal
* **/
public static Item seals;
}

View File

@ -1,5 +0,0 @@
@API(owner = "Thaumcraft", apiVersion = "5.1.0.0", provides = "Thaumcraft|API")
package thaumcraft.api;
import net.minecraftforge.fml.common.API;

View File

@ -1,67 +0,0 @@
package thaumcraft.api.potions;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.Potion;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import thaumcraft.api.damagesource.DamageSourceThaumcraft;
import thaumcraft.api.entities.ITaintedMob;
public class PotionFluxTaint extends Potion
{
public static PotionFluxTaint instance = null; // will be instantiated at runtime
private int statusIconIndex = -1;
public PotionFluxTaint(boolean par2, int par3)
{
super(new ResourceLocation("flux_taint"),par2,par3);
setIconIndex(0, 0);
}
public static void init()
{
instance.setPotionName("potion.fluxtaint");
instance.setIconIndex(3, 1);
instance.setEffectiveness(0.25D);
}
@Override
public boolean isBadEffect() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public int getStatusIconIndex() {
Minecraft.getMinecraft().renderEngine.bindTexture(rl);
return super.getStatusIconIndex();
}
static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png");
@Override
public void performEffect(EntityLivingBase target, int par2) {
if (target instanceof ITaintedMob) {
target.heal(1);
} else
if (!target.isEntityUndead() && !(target instanceof EntityPlayer))
{
target.attackEntityFrom(DamageSourceThaumcraft.taint, 1);
}
else
if (!target.isEntityUndead() && (target.getMaxHealth() > 1 || (target instanceof EntityPlayer)))
{
target.attackEntityFrom(DamageSourceThaumcraft.taint, 1);
}
}
public boolean isReady(int par1, int par2)
{
int k = 40 >> par2;
return k > 0 ? par1 % k == 0 : true;
}
}

View File

@ -1,48 +0,0 @@
package thaumcraft.api.potions;
import net.minecraft.client.Minecraft;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.potion.Potion;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class PotionVisExhaust extends Potion
{
public static PotionVisExhaust instance = null; // will be instantiated at runtime
private int statusIconIndex = -1;
public PotionVisExhaust(boolean par2, int par3)
{
super(new ResourceLocation("vis_exhaust"),par2,par3);
setIconIndex(0, 0);
}
public static void init()
{
instance.setPotionName("potion.visexhaust");
instance.setIconIndex(5, 1);
instance.setEffectiveness(0.25D);
}
@Override
public boolean isBadEffect() {
return true;
}
@Override
@SideOnly(Side.CLIENT)
public int getStatusIconIndex() {
Minecraft.getMinecraft().renderEngine.bindTexture(rl);
return super.getStatusIconIndex();
}
static final ResourceLocation rl = new ResourceLocation("thaumcraft","textures/misc/potions.png");
@Override
public void performEffect(EntityLivingBase target, int par2) {
}
}

View File

@ -1,23 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.entity.player.EntityPlayer;
public interface IScanThing {
/**
* The passed in obj can either be an Entity, a BlockPos, an Itemstack, or a null if nothing was actually clicked on.
* You could then probably use the players lookvec to do whatever you want.
* @param player
* @param obj
* @return the research key that will be unlocked if the object is scanned.
* This need not be an actual defined research item - any text string will do.
* You can then use this research key (fake or otherwise) as a parent for research or for whatever.
*/
public boolean checkThing(EntityPlayer player, Object obj);
/**
* @return the research linked to this 'thing'
*/
public String getResearchKey();
}

View File

@ -1,117 +0,0 @@
package thaumcraft.api.research;
import java.util.Collection;
import java.util.LinkedHashMap;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import net.minecraftforge.fml.common.FMLLog;
import org.apache.logging.log4j.Level;
public class ResearchCategories {
//Research
public static LinkedHashMap <String, ResearchCategoryList> researchCategories = new LinkedHashMap <String,ResearchCategoryList>();
/**
* @param key
* @return the research item linked to this key
*/
public static ResearchCategoryList getResearchList(String key) {
return researchCategories.get(key);
}
/**
* @param key
* @return the name of the research category linked to this key.
* Must be stored as localization information in the LanguageRegistry.
*/
public static String getCategoryName(String key) {
return StatCollector.translateToLocal("tc.research_category."+key);
}
/**
* @param key the research key
* @return the ResearchItem object.
*/
public static ResearchItem getResearch(String key) {
Collection rc = researchCategories.values();
for (Object cat:rc) {
Collection rl = ((ResearchCategoryList)cat).research.values();
for (Object ri:rl) {
if ((((ResearchItem)ri).key).equals(key)) return (ResearchItem)ri;
}
}
return null;
}
/**
* This should only be done at the PostInit stage
* @param key the key used for this category
* @param researchkey the research that the player needs to have completed before this category becomes visible. Set as null to always show.
* @param icon the icon to be used for the research category tab
* @param background the resource location of the background image to use for this category
* @return the name of the research linked to this key
*/
public static void registerCategory(String key, String researchkey, ResourceLocation icon, ResourceLocation background) {
if (getResearchList(key)==null) {
ResearchCategoryList rl = new ResearchCategoryList(researchkey, icon, background);
researchCategories.put(key, rl);
}
}
/**
* This should only be done at the PostInit stage
* @param key the key used for this category
* @param researchkey the research that the player needs to have completed before this category becomes visible. Set as null to always show.
* @param icon the icon to be used for the research category tab
* @param background the resource location of the background image to use for this category
* @param background2 the resource location of the foreground image that lies between the background and icons
* @return the name of the research linked to this key
*/
public static void registerCategory(String key, String researchkey, ResourceLocation icon, ResourceLocation background, ResourceLocation background2) {
if (getResearchList(key)==null) {
ResearchCategoryList rl = new ResearchCategoryList(researchkey, icon, background, background2);
researchCategories.put(key, rl);
}
}
public static void addResearch(ResearchItem ri) {
ResearchCategoryList rl = getResearchList(ri.category);
if (rl!=null && !rl.research.containsKey(ri.key)) {
if (!ri.isVirtual()) {
for (ResearchItem rr:rl.research.values()) {
if (rr.displayColumn == ri.displayColumn && rr.displayRow == ri.displayRow) {
FMLLog.log(Level.FATAL, "[Thaumcraft] Research ["+ri.getName()+"] not added as it overlaps with existing research ["+rr.getName()+"]");
return;
}
}
}
rl.research.put(ri.key, ri);
if (ri.displayColumn < rl.minDisplayColumn)
{
rl.minDisplayColumn = ri.displayColumn;
}
if (ri.displayRow < rl.minDisplayRow)
{
rl.minDisplayRow = ri.displayRow;
}
if (ri.displayColumn > rl.maxDisplayColumn)
{
rl.maxDisplayColumn = ri.displayColumn;
}
if (ri.displayRow > rl.maxDisplayRow)
{
rl.maxDisplayRow = ri.displayRow;
}
}
}
}

View File

@ -1,50 +0,0 @@
package thaumcraft.api.research;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.util.ResourceLocation;
public class ResearchCategoryList {
/** Is the smallest column used on the GUI. */
public int minDisplayColumn;
/** Is the smallest row used on the GUI. */
public int minDisplayRow;
/** Is the biggest column used on the GUI. */
public int maxDisplayColumn;
/** Is the biggest row used on the GUI. */
public int maxDisplayRow;
/** display variables **/
public ResourceLocation icon;
public ResourceLocation background;
public ResourceLocation background2;
public String researchKey;
public ResearchCategoryList(String researchKey, ResourceLocation icon, ResourceLocation background) {
this.researchKey = researchKey;
this.icon = icon;
this.background = background;
this.background2 = null;
}
public ResearchCategoryList(String researchKey, ResourceLocation icon, ResourceLocation background, ResourceLocation background2) {
this.researchKey = researchKey;
this.icon = icon;
this.background = background;
this.background2 = background2;
}
//Research
public Map<String, ResearchItem> research = new HashMap<String,ResearchItem>();
}

View File

@ -1,42 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.entity.player.EntityPlayer;
import thaumcraft.api.ThaumcraftApi;
import thaumcraft.api.internal.EnumWarpType;
public class ResearchHelper {
public static boolean completeResearch(EntityPlayer player, String researchkey) {
return ThaumcraftApi.internalMethods.completeResearch(player, researchkey);
}
public static boolean isResearchComplete(String username, String[] researchkeys) {
for (String key:researchkeys) if (!ResearchHelper.isResearchComplete(username, key)) return false;
return true;
}
public static boolean isResearchComplete(String username, String researchkey) {
return ThaumcraftApi.internalMethods.isResearchComplete(username, researchkey);
}
/**
* This adds warp to a player. It will automatically be synced clientside
* @param player the player using the wand
* @param amount how much warp to add. Negative amounts are only valid for temporary warp
* @param type the type of warp to be added
*/
public static void addWarpToPlayer(EntityPlayer player, int amount, EnumWarpType type) {
ThaumcraftApi.internalMethods.addWarpToPlayer(player, amount, type);
}
/**
* This retrieves how much warp the player has
* @param player the player using the wand
* @param type the type of warp to retrieve
* @return how much warp the player has
*/
public static int getPlayerWarp(EntityPlayer player, EnumWarpType type) {
return ThaumcraftApi.internalMethods.getPlayerWarp(player, type);
}
}

View File

@ -1,303 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
public class ResearchItem
{
/**
* A short string used as a key for this research. Must be unique
*/
public final String key;
/**
* A short string used as a reference to the research category to which this must be added.
*/
public final String category;
/**
* The aspect tags and their values required to complete this research *
*/
public final AspectList tags;
/**
* This links to any research that needs to be completed before this research can be discovered or learnt.
*/
public String[] parents = null;
/**
* Like parent above, but a line will not be displayed in the thaumonomicon linking them. Just used to prevent clutter.
*/
public String[] parentsHidden = null;
/**
* any research linked to this that will be unlocked automatically when this research is complete
*/
public String[] siblings = null;
/**
* the horizontal position of the research icon
*/
public final int displayColumn;
/**
* the vertical position of the research icon
*/
public final int displayRow;
/**
* the icon to be used for this research
*/
public final ItemStack[] icon_item;
/**
* the icon to be used for this research
*/
public final ResourceLocation[] icon_resource;
/**
* How large the research grid is. Valid values are 1 to 3.
*/
private int complexity;
/**
* Special research has a spiky border. Used for important research milestones.
*/
private boolean isSpecial;
/**
* Research that can be directly purchased with knowledge fragments
*/
private boolean isSecondary;
/**
* This indicates if the research should use a circular icon border. Usually used for "passive" research
* that doesn't have recipes and grants passive effects, or that unlock automatically.
*/
private boolean isRound;
/**
* Stub research cannot be discovered by normal means, but can be unlocked via the sibling system.
*/
private boolean isStub;
/**
* This indicated that the research is completely hidden and cannot be discovered by any
* player-controlled means. The recipes will never show up in the thaumonomicon.
* Usually used to unlock "hidden" recipes via sibling unlocking, like
* the various cap and rod combos for wands.
*/
private boolean isVirtual;
/**
* Concealed research does not display in the thaumonomicon until parent researches are discovered.
* Often times some of the parent researches is linked to scanned objects.
*/
private boolean isHidden;
/**
* These research items will automatically unlock for all players on game start
*/
private boolean isAutoUnlock;
/**
* Flip the way the connecting lines are drawn in the research browser.
*/
private boolean isFlipped;
private ResearchPage[] pages = null;
public ResearchItem(String key, String category)
{
this.key = key;
this.category = category;
this.tags = new AspectList();
this.icon_resource = null;
this.icon_item = null;
this.displayColumn = 0;
this.displayRow = 0;
this.isVirtual = true;
}
public ResearchItem(String key, String category, AspectList tags, int col, int row, int complex, Object ... icon)
{
this.key = key;
this.category = category;
this.tags = tags;
if (icon[0] instanceof ResourceLocation) {
ResourceLocation[] t = new ResourceLocation[icon.length];
System.arraycopy(icon, 0, t, 0, icon.length);
this.icon_resource = t;
} else this.icon_resource = null;
if (icon[0] instanceof ItemStack) {
ItemStack[] t = new ItemStack[icon.length];
System.arraycopy(icon, 0, t, 0, icon.length);
this.icon_item = t;
} else this.icon_item = null;
this.displayColumn = col;
this.displayRow = row;
this.complexity = complex;
if (complexity < 1) this.complexity = 1;
if (complexity > 3) this.complexity = 3;
}
public ResearchItem setSpecial()
{
this.isSpecial = true;
return this;
}
public ResearchItem setStub()
{
this.isStub = true;
return this;
}
public ResearchItem setHidden()
{
this.isHidden = true;
return this;
}
public ResearchItem setParents(String... par)
{
this.parents = par;
return this;
}
public ResearchItem setParentsHidden(String... par)
{
this.parentsHidden = par;
return this;
}
public ResearchItem setSiblings(String... sib)
{
this.siblings = sib;
return this;
}
public ResearchItem setPages(ResearchPage... par)
{
this.pages = par;
return this;
}
public ResearchPage[] getPages() {
return pages;
}
public ResearchItem registerResearchItem()
{
ResearchCategories.addResearch(this);
return this;
}
public String getName()
{
return StatCollector.translateToLocal("tc.research_name."+key);
}
public String getText()
{
return StatCollector.translateToLocal("tc.research_text."+key);
}
public boolean isSpecial()
{
return this.isSpecial;
}
public boolean isStub()
{
return this.isStub;
}
public boolean isHidden()
{
return this.isHidden;
}
public boolean isVirtual()
{
return this.isVirtual;
}
public boolean isAutoUnlock() {
return isAutoUnlock;
}
public ResearchItem setAutoUnlock()
{
this.isAutoUnlock = true;
return this;
}
public boolean isRound() {
return isRound;
}
public ResearchItem setRound() {
this.isRound = true;
return this;
}
public ResearchItem setSecondary()
{
this.isSecondary = true;
return this;
}
public boolean isSecondary() {
return isSecondary;
}
public int getComplexity() {
return complexity;
}
public ResearchItem setFlipped() {
this.isFlipped = true;
return this;
}
public boolean isFlipped() {
return this.isFlipped;
}
public ResearchItem setComplexity(int complexity) {
this.complexity = complexity;
return this;
}
public int getExperience() {
if (this.tags!=null && this.tags.visSize()>0) {
return Math.max(1, (int) Math.sqrt(this.tags.visSize()));
} else
return 0;
}
/**
* @return the aspect aspects ordinal with the highest value. Used to determine scroll color and similar things
*/
public Aspect getResearchPrimaryTag() {
Aspect aspect=null;
int highest=0;
if (tags!=null)
for (Aspect tag:tags.getAspects()) {
if (tags.getAmount(tag)>highest) {
aspect=tag;
highest=tags.getAmount(tag);
};
}
return aspect;
}
}

View File

@ -1,183 +0,0 @@
package thaumcraft.api.research;
import java.util.List;
import net.minecraft.item.ItemStack;
import net.minecraft.item.crafting.FurnaceRecipes;
import net.minecraft.item.crafting.IRecipe;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.aspects.AspectList;
import thaumcraft.api.crafting.CrucibleRecipe;
import thaumcraft.api.crafting.IArcaneRecipe;
import thaumcraft.api.crafting.InfusionEnchantmentRecipe;
import thaumcraft.api.crafting.InfusionRecipe;
public class ResearchPage {
public static enum PageType
{
TEXT,
IMAGE,
CRUCIBLE_CRAFTING,
ARCANE_CRAFTING,
ASPECTS,
NORMAL_CRAFTING,
INFUSION_CRAFTING,
COMPOUND_CRAFTING,
INFUSION_ENCHANTMENT,
SMELTING
}
public PageType type = PageType.TEXT;
public String text=null;
public String research=null;
public ResourceLocation image=null;
public AspectList aspects=null;
public Object recipe=null;
public Object recipeOutput=null;
/**
* @param text this can (but does not have to) be a reference to a localization variable, not the actual text.
*/
public ResearchPage(String text) {
this.type = PageType.TEXT;
this.text = text;
}
/**
* @param recipe a vanilla crafting recipe.
*/
public ResearchPage(IRecipe recipe) {
this.type = PageType.NORMAL_CRAFTING;
this.recipe = recipe;
this.recipeOutput = recipe.getRecipeOutput();
}
/**
* @param recipe a collection of vanilla crafting recipes.
*/
public ResearchPage(IRecipe[] recipe) {
this.type = PageType.NORMAL_CRAFTING;
this.recipe = recipe;
}
/**
* @param recipe a collection of arcane crafting recipes.
*/
public ResearchPage(IArcaneRecipe[] recipe) {
this.type = PageType.ARCANE_CRAFTING;
this.recipe = recipe;
}
/**
* @param recipe a collection of arcane crafting recipes.
*/
public ResearchPage(CrucibleRecipe[] recipe) {
this.type = PageType.CRUCIBLE_CRAFTING;
this.recipe = recipe;
}
/**
* @param recipe a collection of infusion crafting recipes.
*/
public ResearchPage(InfusionRecipe[] recipe) {
this.type = PageType.INFUSION_CRAFTING;
this.recipe = recipe;
}
/**
* @param recipe a compound crafting recipe.
*/
public ResearchPage(List recipe) {
this.type = PageType.COMPOUND_CRAFTING;
this.recipe = recipe;
}
/**
* @param recipe an arcane worktable crafting recipe.
*/
public ResearchPage(IArcaneRecipe recipe) {
this.type = PageType.ARCANE_CRAFTING;
this.recipe = recipe;
this.recipeOutput = recipe.getRecipeOutput();
}
/**
* @param recipe an alchemy crafting recipe.
*/
public ResearchPage(CrucibleRecipe recipe) {
this.type = PageType.CRUCIBLE_CRAFTING;
this.recipe = recipe;
this.recipeOutput = recipe.getRecipeOutput();
}
/**
* @param recipe a furnace smelting crafting recipe.
*/
public ResearchPage(ItemStack input) {
this.type = PageType.SMELTING;
this.recipe = input;
this.recipeOutput = FurnaceRecipes.instance().getSmeltingResult(input);
}
/**
* @param recipe an infusion crafting recipe.
*/
public ResearchPage(InfusionRecipe recipe) {
this.type = PageType.INFUSION_CRAFTING;
this.recipe = recipe;
if (recipe.getRecipeOutput() instanceof ItemStack) {
this.recipeOutput = (ItemStack) recipe.getRecipeOutput();
} else {
this.recipeOutput = recipe.getRecipeInput();
}
}
/**
* @param recipe an infusion crafting recipe.
*/
public ResearchPage(InfusionEnchantmentRecipe recipe) {
this.type = PageType.INFUSION_ENCHANTMENT;
this.recipe = recipe;
}
/**
* @param image
* @param caption this can (but does not have to) be a reference to a localization variable, not the actual text.
*/
public ResearchPage(ResourceLocation image, String caption) {
this.type = PageType.IMAGE;
this.image = image;
this.text = caption;
}
/**
* This function should really not be called directly - used internally
*/
public ResearchPage(AspectList as) {
this.type = PageType.ASPECTS;
this.aspects = as;
}
/**
* returns a localized text of the text field (if one exists). Returns the text field itself otherwise.
* @return
*/
public String getTranslatedText() {
String ret="";
if (text != null) {
ret = StatCollector.translateToLocal(text);
if (ret.isEmpty()) ret = text;
}
return ret;
}
/**
* This page will only be shown if this research is unlocked
*/
public ResearchPage setRequisite(String research) {
this.research = research;
return this;
}
}

View File

@ -1,61 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.block.Block;
import net.minecraft.entity.Entity;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectHelper;
import thaumcraft.api.aspects.AspectList;
public class ScanAspect implements IScanThing {
String research;
Aspect aspect;
/**
* NOTE: You should not have to add your own entry for aspects since a trigger research is added automatically for each aspect in the format "![tagname]"
* for example: "!vitium"
*/
public ScanAspect(String research, Aspect aspect) {
this.research = research;
this.aspect = aspect;
}
@Override
public boolean checkThing(EntityPlayer player, Object obj) {
if (obj == null) return false;
AspectList al = null;
if (obj instanceof Entity && !(obj instanceof EntityItem)) {
al = AspectHelper.getEntityAspects((Entity) obj);
} else {
ItemStack is = null;
if (obj instanceof ItemStack)
is = (ItemStack) obj;
if (obj instanceof EntityItem && ((EntityItem)obj).getEntityItem()!=null)
is = ((EntityItem)obj).getEntityItem();
if (obj instanceof BlockPos) {
Block b = player.worldObj.getBlockState((BlockPos) obj).getBlock();
is = new ItemStack(b,1,b.getMetaFromState(player.worldObj.getBlockState((BlockPos) obj)));
}
if (is!=null) {
al = AspectHelper.getObjectAspects(is);
}
}
return al!=null && al.getAmount(aspect)>0;
}
@Override
public String getResearchKey() {
return research;
}
}

View File

@ -1,30 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.BlockPos;
public class ScanBlock implements IScanThing {
String research;
Block block;
public ScanBlock(String research, Block block) {
this.research = research;
this.block = block;
}
@Override
public boolean checkThing(EntityPlayer player, Object obj) {
if (obj!=null && obj instanceof BlockPos && player.worldObj.getBlockState((BlockPos) obj).getBlock()==block) {
return true;
}
return false;
}
@Override
public String getResearchKey() {
return research;
}
}

View File

@ -1,38 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.BlockPos;
public class ScanBlockState implements IScanThing {
String research;
IBlockState blockState;
public ScanBlockState(String research, IBlockState blockState) {
this.research = research;
this.blockState = blockState;
}
public ScanBlockState(String research, IBlockState blockState, boolean item) {
this.research = research;
this.blockState = blockState;
if (item)
ScanningManager.addScannableThing(new ScanItem(research,
new ItemStack(blockState.getBlock(),1,blockState.getBlock().getMetaFromState(blockState))));
}
@Override
public boolean checkThing(EntityPlayer player, Object obj) {
if (obj!=null && obj instanceof BlockPos && player.worldObj.getBlockState((BlockPos) obj)==blockState) {
return true;
}
return false;
}
@Override
public String getResearchKey() {
return research;
}
}

View File

@ -1,57 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import thaumcraft.api.ThaumcraftApi.EntityTagsNBT;
import thaumcraft.api.ThaumcraftApiHelper;
public class ScanEntity implements IScanThing {
String research;
Class entityClass;
EntityTagsNBT[] NBTData;
/**
* false if the specific entity class should be used, or true if anything the inherits from that class is also allowed.
*/
boolean inheritedClasses=false;
public ScanEntity(String research, Class entityClass, boolean inheritedClasses) {
this.research = research;
this.entityClass = entityClass;
this.inheritedClasses = inheritedClasses;
}
public ScanEntity(String research, Class entityClass, boolean inheritedClasses, EntityTagsNBT... nbt) {
this.research = research;
this.entityClass = entityClass;
this.inheritedClasses = inheritedClasses;
this.NBTData = nbt;
}
@Override
public boolean checkThing(EntityPlayer player, Object obj) {
if (obj!=null && ((!inheritedClasses && entityClass==obj.getClass()) ||
(inheritedClasses && entityClass.isInstance(obj)))) {
if (NBTData!=null && NBTData.length>0) {
boolean b = true;
NBTTagCompound tc = new NBTTagCompound();
((Entity)obj).writeToNBT(tc);
for (EntityTagsNBT nbt:NBTData) {
if (!tc.hasKey(nbt.name) || !ThaumcraftApiHelper.getNBTDataFromId(tc, tc.getTagId(nbt.name), nbt.name).equals(nbt.value)) {
return false;
}
}
}
return true;
}
return false;
}
@Override
public String getResearchKey() {
return research;
}
}

View File

@ -1,37 +0,0 @@
package thaumcraft.api.research;
import net.minecraft.entity.item.EntityItem;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import thaumcraft.api.ThaumcraftApiHelper;
public class ScanItem implements IScanThing {
String research;
ItemStack stack;
public ScanItem(String research, ItemStack stack) {
this.research = research;
this.stack = stack;
}
@Override
public boolean checkThing(EntityPlayer player, Object obj) {
if (obj == null) return false;
ItemStack is = null;
if (obj instanceof ItemStack)
is = (ItemStack) obj;
if (obj instanceof EntityItem && ((EntityItem)obj).getEntityItem()!=null)
is = ((EntityItem)obj).getEntityItem();
return is!=null && ThaumcraftApiHelper.areItemStacksEqualForCrafting(is, stack);
}
@Override
public String getResearchKey() {
return research;
}
}

View File

@ -1,58 +0,0 @@
package thaumcraft.api.research;
import java.util.ArrayList;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChatComponentText;
import net.minecraft.util.StatCollector;
public class ScanningManager {
static ArrayList<IScanThing> things = new ArrayList<IScanThing>();
/**
* Add things to scan
* @example
* <i>ScanManager.addScannableThing(new ScanItem("HIPSTER",new ItemStack(Items.apple,1,OreDictionary.WILDCARD_VALUE)));</i><br>
* This will unlock the <b>HIPSTER</b> research if you scan any kind of apple.
*/
public static void addScannableThing(IScanThing obj) {
things.add(obj);
}
/**
*
* @param player
* @param object this could in theory be anything, but vanilla tc scanning tools only pass in Entity, BlockPos, Itemstack or null
*/
public static void scanTheThing(EntityPlayer player, Object object) {
boolean found = false;
for (IScanThing thing:things) {
if (thing.checkThing(player, object)) {
if (ResearchHelper.completeResearch(player, thing.getResearchKey())) {
found=true;
}
}
}
if (!found) {
player.addChatMessage(new ChatComponentText("\u00a75\u00a7o"+StatCollector.translateToLocal("tc.unknownobject")));
}
}
/**
* @param player
* @param object
* @return true if the object can be scanned for research the player has not yet discovered
*/
public static boolean isThingStillScannable(EntityPlayer player, Object object) {
for (IScanThing thing:things) {
if (thing.checkThing(player, object)) {
if (!ResearchHelper.isResearchComplete(player.getName(), thing.getResearchKey())) {
return true;
}
}
}
return false;
}
}

View File

@ -1,107 +0,0 @@
package thaumcraft.api.wands;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.StatCollector;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
public class FocusUpgradeType {
public static FocusUpgradeType[] types = new FocusUpgradeType[20];
public short id;
public ResourceLocation icon;
public String name;
public String text;
/**
* What aspects are used to calculate the cost of this upgrade. The amounts given is ignored, just the type is used for the calculation.
*/
public AspectList aspects;
private static int lastID = 0;
public FocusUpgradeType(ResourceLocation icon, String name, String text, AspectList aspects) {
this.id = (short) lastID;
lastID++;
this.icon = icon;
this.name = name;
this.text = text;
this.aspects = aspects;
// allocate space
if (id>=types.length) {
FocusUpgradeType[] temp = new FocusUpgradeType[id+1];
System.arraycopy(types, 0, temp, 0, types.length);
types = temp;
}
types[id] = this;
}
public String getLocalizedName() {
return StatCollector.translateToLocal(name);
}
public String getLocalizedText() {
return StatCollector.translateToLocal(text);
}
@Override
public boolean equals(Object obj) {
if (obj instanceof FocusUpgradeType) {
return this.id == ((FocusUpgradeType)obj).id;
} else return false;
}
// basic upgrade types
public static FocusUpgradeType potency = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/potency.png"),
"focus.upgrade.potency.name","focus.upgrade.potency.text",
new AspectList().add(Aspect.AVERSION,1));
public static FocusUpgradeType frugal = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/frugal.png"),
"focus.upgrade.frugal.name","focus.upgrade.frugal.text",
new AspectList().add(Aspect.DESIRE,1));
public static FocusUpgradeType treasure = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/treasure.png"),
"focus.upgrade.treasure.name","focus.upgrade.treasure.text",
new AspectList().add(Aspect.DESIRE,1));
public static FocusUpgradeType enlarge = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/enlarge.png"),
"focus.upgrade.enlarge.name","focus.upgrade.enlarge.text",
new AspectList().add(Aspect.MOTION,1));
public static FocusUpgradeType alchemistsfire = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/alchemistsfire.png"),
"focus.upgrade.alchemistsfire.name","focus.upgrade.alchemistsfire.text",
new AspectList().add(Aspect.ENERGY,1).add(Aspect.WATER,1));
public static FocusUpgradeType alchemistsfrost = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/alchemistsfrost.png"),
"focus.upgrade.alchemistsfrost.name","focus.upgrade.alchemistsfrost.text",
new AspectList().add(Aspect.COLD,1).add(Aspect.TRAP,1));
public static FocusUpgradeType architect = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/architect.png"),
"focus.upgrade.architect.name","focus.upgrade.architect.text",
new AspectList().add(Aspect.CRAFT,1));
public static FocusUpgradeType extend = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/extend.png"),
"focus.upgrade.extend.name","focus.upgrade.extend.text",
new AspectList().add(Aspect.EXCHANGE,1));
public static FocusUpgradeType silktouch = new FocusUpgradeType(
new ResourceLocation("thaumcraft", "textures/foci/silktouch.png"),
"focus.upgrade.silktouch.name","focus.upgrade.silktouch.text",
new AspectList().add(Aspect.DESIRE,1));
}

View File

@ -1,54 +0,0 @@
package thaumcraft.api.wands;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import thaumcraft.api.aspects.Aspect;
import thaumcraft.api.aspects.AspectList;
public interface IWand {
public abstract int getMaxVis(ItemStack stack);
public abstract int getVis(ItemStack is, Aspect aspect);
public abstract AspectList getAllVis(ItemStack is);
public abstract AspectList getAspectsWithRoom(ItemStack wandstack);
public abstract float getConsumptionModifier(ItemStack is, EntityPlayer player, Aspect aspect, boolean crafting);
public abstract boolean consumeVis(ItemStack is, EntityPlayer player, Aspect aspect, int amount, boolean crafting);
public abstract boolean consumeAllVis(ItemStack is, EntityPlayer player, AspectList aspects, boolean doit, boolean crafting);
public abstract int addVis(ItemStack is, Aspect aspect, int amount, boolean doit);
public abstract ItemFocusBasic getFocus(ItemStack stack);
public abstract ItemStack getFocusStack(ItemStack stack);
public abstract void setFocus(ItemStack stack, ItemStack focus);
public abstract WandRod getRod(ItemStack stack);
public abstract boolean isStaff(ItemStack stack);
public abstract boolean isSceptre(ItemStack stack);
public abstract void setRod(ItemStack stack, WandRod rod);
public abstract WandCap getCap(ItemStack stack);
public abstract void setCap(ItemStack stack, WandCap cap);
public abstract int getFocusPotency(ItemStack itemstack);
public abstract int getFocusTreasure(ItemStack itemstack);
public abstract int getFocusFrugal(ItemStack itemstack);
public abstract int getFocusEnlarge(ItemStack itemstack);
public abstract int getFocusExtend(ItemStack itemstack);
}

View File

@ -1,16 +0,0 @@
package thaumcraft.api.wands;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
*
* @author azanor
*
* Implemented by a class that you wish to be called whenever a wand with this rod performs its
* update tick.
*
*/
public interface IWandRodOnUpdate {
void onUpdate(ItemStack itemstack, EntityPlayer player);
}

Some files were not shown because too many files have changed in this diff Show More