Compare commits

...

1680 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
Adubbz e4654425cf Fixed biome decoration in non-BoP worldtypes, added an exclusions list to disable decoration if desired 2016-02-27 22:42:23 +11:00
Forstride db3c06dcff Added new door textures, courtesy of Vojife 2016-02-24 05:31:18 -05:00
Adubbz 0687fb456a Removed unnecessary clientside only annotation 2016-02-20 15:23:54 +11:00
Adubbz acd0309dc0 Fixed #691 2016-02-20 14:41:23 +11:00
Adubbz c9c5762206 Fixed lilypad drops. Closes #688 2016-02-20 12:48:37 +11:00
Adubbz 07d219bec0 Fixed vine and lilypad sounds. Closes #687 2016-02-20 12:44:40 +11:00
Adubbz 1984639634 Fixed grass growing on BoP dirt. Closes #689 2016-02-20 12:34:15 +11:00
Forstride 5e043a4ee7 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-02-19 05:24:39 -05:00
Forstride e949c22c0b Removed moss, replaced moss terrarium with flax terrarium, added more chest loot 2016-02-19 05:24:16 -05:00
Adubbz 34cab0d8ad Fixed deletion of flowers if a basket is full. Closes #685 2016-02-19 18:32:48 +11:00
Forstride db34dfce77 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-02-19 01:54:15 -05:00
Forstride 7927e32348 Added dispenser behavior for mudballs and darts, added chest loot compatibility 2016-02-19 01:54:00 -05:00
Adubbz ced7a8945e Merge pull request #684 from NatsuArashi/patch-3
Update zh_TW.lang
2016-02-19 06:06:42 +11:00
NatsuArashi f244540cf3 Update zh_TW.lang 2016-02-18 22:45:11 +08:00
Forstride 53332d2807 Merge pull request #683 from eleazzaar/patch-2
Patch 2
2016-02-17 23:48:14 -05:00
Forstride 819fa18fb9 Added crafting recipes for the records, changed Enderporter recipe, tweaked various textures 2016-02-17 23:45:40 -05:00
Forstride a147db9af3 Tweaked Origin Island biome 2016-02-17 21:18:05 -05:00
Forstride eea8248490 Added world gen setting for using BOP logs/leaves (Doesn't apply to bamboo or cherry trees) 2016-02-17 20:43:39 -05:00
Forstride f9240b35d2 Update README.md 2016-02-17 11:34:55 -05:00
Forstride cbdc3002e1 Update README.md 2016-02-17 11:33:30 -05:00
Forstride 062f042492 Update README.md 2016-02-17 11:33:17 -05:00
Forstride 364dd603e4 Update README.md 2016-02-17 11:33:02 -05:00
Forstride b7a2001f25 Improved Flower Island biome, added extension for Mushroom Island biome 2016-02-17 02:56:45 -05:00
Forstride aae38dabae Tweaked Heathland biome 2016-02-16 21:58:26 -05:00
Forstride e329a65893 Sort of fixed pumpkin gen (Doesn't generate on our grass blocks), and fixed water/lava spring gen 2016-02-16 20:35:46 -05:00
Forstride 86ce73ef4e Tweaked Maple Woods biome 2016-02-16 13:58:58 -05:00
J. W. Bjerk 4b27073a10 Update flower_0.json
Random Rotation for Clover
2016-02-16 08:55:43 -06:00
J. W. Bjerk 02f1ff08c7 Update plant_0.json
Random Rotation for clover patch and leaf piles
2016-02-16 08:53:10 -06:00
Forstride 91c1cb4479 Tweaked Origin Island biome 2016-02-16 03:26:58 -05:00
Forstride 7d36e50e66 Removed Canyon biome, moved Garden to island biome (Renamed to Flower Island), moved Origin Valley to island biome (Renamed to Origin Island) 2016-02-16 03:04:39 -05:00
Forstride 76e4e34117 Improved the Mountain biome 2016-02-16 01:38:01 -05:00
Forstride bfbf82e05d Removed Frozen Desert biome (Too similar to the Cold Desert) 2016-02-16 01:11:50 -05:00
Forstride 77077385f0 Added random texture rotation for some terrain blocks 2016-02-16 00:50:54 -05:00
Forstride 37d48deaf5 Merge pull request #678 from eleazzaar/patch-1
Update grass.json
2016-02-16 00:35:05 -05:00
J. W. Bjerk 6aaaa83904 Update grass.json
This change provides random rotation to the top of grass blocks and thus creates a more natural pattern instead of the rigidly repeating pattern of the same image in the same orientation.

Tested and works.
2016-02-15 22:28:41 -06:00
Forstride 18fe4191f8 gee i wonder what this commit is for 2016-02-15 21:07:27 -05:00
Forstride 0bc832734f YACTT (Yet Another Cattail Texture Tweak) 2016-02-15 12:59:12 -05:00
Forstride 6772eae013 Tweaked cattail textures, fixed some stuff with tall cattail blocks 2016-02-15 12:24:47 -05:00
Forstride dd5eab7502 Removed wisteria 2016-02-14 01:47:31 -05:00
Forstride 1a85b43159 Merge pull request #676 from GirafiStudios/BOP-1.8.9-3.0.x
Made Flax require shears to drop.
2016-02-14 01:19:21 -05:00
GirafiStudios bd6c4c1fc5 Made Flax require shears to drop. 2016-02-14 07:17:36 +01:00
Forstride 510c7fde6e Merge pull request #674 from GirafiStudios/BOP-1.8.9-3.0.x
Made Tall Cattails drop 2 regular cattails.
2016-02-14 01:04:00 -05:00
GirafiStudios b45053b70b Made Tall Cattails drop 2 regular cattails.
Removed seed drop from flax.
2016-02-14 07:01:57 +01:00
Forstride f4bfac2106 Removed duckweed and caveweed (Worlds will break!) 2016-02-14 00:56:00 -05:00
GirafiStudios 59c705776f Merge remote-tracking branch 'upstream/BOP-1.8.9-3.0.x' into BOP-1.8.9-3.0.x 2016-02-14 05:49:04 +01:00
Forstride 37aafee256 Fixed flowered lily break particle 2016-02-13 22:55:26 -05:00
Forstride ed38516355 Merge pull request #672 from GirafiStudios/BOP-1.8.9-3.0.x
Added trail settings to the in-game config
2016-02-13 15:57:40 -05:00
GirafiStudios 19a503712e Added trail settings to the in-game config 2016-02-13 21:54:26 +01:00
Forstride ea7fa33267 Removed Fungi Forest (Will be re-imagined as a Nether biome once we get those re-added) 2016-02-13 15:06:25 -05:00
Forstride 029a670d95 Added cattails to some other biomes 2016-02-13 11:45:15 -05:00
Forstride ad726ed339 Tweaked cattail textures again, fixed swamp/willow tree leaf decay 2016-02-13 11:17:44 -05:00
Forstride 0da1f821d2 Tweaked Sacred Oak leaf/log/plank textures 2016-02-13 02:48:58 -05:00
Forstride 6d0b4ac9eb Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-02-13 02:28:12 -05:00
Forstride 50791f20e4 Removed redundant vanilla textures 2016-02-13 02:27:49 -05:00
Adubbz 04c5933243 Merge pull request #670 from NatsuArashi/patch-2
Update zh_TW.lang
2016-02-13 18:15:05 +11:00
Forstride 51b6ec4005 Tweaked biome climate mapping 2016-02-13 01:31:38 -05:00
NatsuArashi 543c053012 Update zh_TW.lang 2016-02-13 14:00:00 +08:00
Forstride fe1c4b023d Tweaked cattail textures and models 2016-02-13 00:19:59 -05:00
Forstride 7e01f2914a Added flowered lily pads 2016-02-12 21:51:38 -05:00
Forstride c482d36227 Made BOP lilypads non-collidable 2016-02-12 20:22:25 -05:00
Forstride 67f02abc15 Re-added Glacier as a sub-biome of the Ice Plains 2016-02-12 19:58:55 -05:00
Forstride 068b1f7b84 Added vanilla extensions for sub biomes and ocean 2016-02-12 19:32:59 -05:00
Forstride 6a5d870376 Added option for trees to have alternate leaf blocks, and added flowering leaves to trees in some biomes 2016-02-12 19:04:56 -05:00
Forstride a784039759 Fixed dye recipes, tweaked creative tab icon 2016-02-12 08:03:27 -05:00
Forstride faac12b955 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-02-12 05:44:24 -05:00
Forstride 0743ad9889 Tweaked Overgrown Cliffs temperature/rainfall 2016-02-12 05:44:07 -05:00
Adubbz c73f73e1dd Fixed a bug with configuring weighted generators 2016-02-12 20:53:26 +11:00
Forstride ee8dbb44f1 Removed gravel beaches from the Roofed Forest 2016-02-11 23:59:34 -05:00
Forstride 934e0ebd03 Tweaked Steppe temperature/biome dictionary tags 2016-02-11 23:55:26 -05:00
Forstride b56afab734 Renamed Frost Forest to Snowy Forest and improved biome design 2016-02-11 23:39:20 -05:00
Forstride 5287129609 Improved biome dictionary tags 2016-02-11 21:56:04 -05:00
Forstride 60c2673829 Merge pull request #668 from GirafiStudios/BOP-1.8.9-3.0.x
Fixes #664
2016-02-10 23:31:58 -05:00
GirafiStudios d1a6463b47 Fixed BOP Farmland lighting when smooth lighting is off 2016-02-11 05:24:15 +01:00
GirafiStudios 9090d1713f Merge remote-tracking branch 'upstream/BOP-1.8.9-3.0.x' into BOP-1.8.9-3.0.x 2016-02-11 04:49:00 +01:00
Adubbz 3d995bef9f Merge pull request #666 from NatsuArashi/patch-1
Update zh_TW.lang
2016-02-11 06:03:47 +11:00
NatsuArashi 7f2a466665 Update zh_TW.lang 2016-02-10 20:10:31 +08:00
Forstride 4f7d68d53e Changed ordering of blocks/items in the creative inventory 2016-02-10 07:03:39 -05:00
Forstride 693c9c4081 Fixed dead logs and giant flower stems 2016-02-10 05:38:06 -05:00
Forstride d721f36300 Added Ebony and Eucalyptus trees 2016-02-10 05:30:43 -05:00
Forstride a257dec59a Allowed villages to spawn in the orchard, removed villages from the tundra 2016-02-10 02:59:31 -05:00
Forstride 7487a71b48 Re-added Orchard and Oasis 2016-02-10 02:45:22 -05:00
Forstride 4ca8819534 Added Volcanic Islands, tweaked beaches more 2016-02-09 03:09:48 -05:00
Adubbz 9c0fe4a41f Fixed frozen ocean generation 2016-02-09 14:05:37 +11:00
Adubbz 896e059938 Fixed removing beaches from certain biomes 2016-02-09 13:22:24 +11:00
Forstride c0c6062ded Gravel beach tweaks 2016-02-08 21:13:01 -05:00
Adubbz dabe175d04 Moved extended biome registration to after normal biomes 2016-02-09 12:55:36 +11:00
Adubbz c6ce7dc016 Fixed beach biome generation 2016-02-09 12:40:33 +11:00
Adubbz ffc04154db Added support for custom beaches for vanilla biomes 2016-02-09 12:27:06 +11:00
Forstride cda6c12bba Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-02-08 20:26:39 -05:00
Forstride 50497c6c98 Changed beach types for certain biomes 2016-02-08 20:26:33 -05:00
Adubbz 46e0f812c5 Remove unused code from GenLayerShoreBOP 2016-02-09 12:09:17 +11:00
Adubbz 41fe22e5aa Added an option for different beach biome ids for our biomes 2016-02-09 12:06:21 +11:00
Adubbz c15fd49ca3 Adjusted the checks for jungle edges 2016-02-09 11:48:53 +11:00
Adubbz c295ff484f Massive cleanup of GenLayerShore 2016-02-09 11:36:22 +11:00
GirafiStudios 8368745b6b Merge remote-tracking branch 'upstream/BOP-1.8.9-3.0.x' into BOP-1.8.9-3.0.x 2016-02-08 19:44:20 +01:00
Forstride 978a11af1e Merge pull request #661 from NatsuArashi/patch-5
Update zh_TW.lang
2016-02-08 02:48:53 -05:00
NatsuArashi 599fad8df0 Update zh_TW.lang 2016-02-08 15:34:42 +08:00
Forstride 6d22237979 Tweaked biome temperatures/rainfall yet again 2016-02-07 23:55:36 -05:00
Forstride fee6bbf9b2 Tweaked more biome temperatures 2016-02-07 23:37:36 -05:00
Forstride 3167c31e53 Made some biome temperatures/rainfall more appropriate 2016-02-07 20:13:53 -05:00
Adubbz d583bfa00b Merge pull request #660 from GirafiStudios/in-game-config
Added support for Forge in-game gui config. Closes #637
2016-02-08 11:29:41 +11:00
GirafiStudios 56a3edba05 GUI Config Button titles and desc. localization 2016-02-08 01:23:31 +01:00
Forstride 3fd93d83db Fixed turnips not acting as a crop, and allowed normal plants to be placed on our farmland blocks 2016-02-07 18:42:04 -05:00
Forstride a40a83ecd5 Removed farmland blocks from creative tab 2016-02-07 18:02:09 -05:00
GirafiStudios bcd50892d9 Added support for Forge in-game gui config. 2016-02-07 19:09:23 +01:00
Adubbz f131d97f89 Merge pull request #659 from GirafiStudios/BOP-1.8.9-3.0.x
Added Loamy, Sandy & Silty Farmland + UseHoeEventHandler. Closes #589
2016-02-07 16:31:56 +11:00
GirafiStudios ad5d266950 Finished work on BOP Farmland & UseHoeEventHandler 2016-02-07 06:24:54 +01:00
Forstride 3ec8ca3454 Tweaked the Flower Field biome, and biome weights/climates. 2016-02-06 23:54:23 -05:00
GirafiStudios f9dd8bd523 Merge remote-tracking branch 'upstream/BOP-1.8.9-3.0.x' into BOP-1.8.9-3.0.x 2016-02-07 00:23:02 +01:00
Forstride 4164618937 Added boat and farmland textures for future use 2016-02-06 17:46:30 -05:00
GirafiStudios 666a6d742b Intial work on BoP Farmland 2016-02-06 23:25:26 +01:00
Forstride c707ddc279 Tweaked kelp height, added base for gravel beach 2016-02-06 07:30:51 -05:00
Forstride cf2cbc8c8b Tweaked Tropcal Island (Just needs palm trees now!) 2016-02-06 07:13:46 -05:00
Adubbz 48dd51d89e Tweaked how large islands are placed 2016-02-06 23:11:30 +11:00
Adubbz e35847726a Fixing bugs with island gen 2016-02-06 22:48:12 +11:00
Adubbz 75f50a80a4 Added support for island biomes 2016-02-06 21:54:55 +11:00
Forstride 0c370f4f98 Re-added Kelp Forest. Added base for Tropical Islands 2016-02-06 02:49:22 -05:00
Adubbz 89cdcb6ce8 Added kelp generation 2016-02-06 18:27:04 +11:00
Forstride 74b4f79676 Improved clover patch model 2016-02-06 02:16:48 -05:00
Forstride d377fcf631 Increased snow depth for Alps mountains, tweaked biome weights 2016-02-06 00:22:52 -05:00
Forstride b94f4c0ed8 Removed old rock formation blocks
(Is this proof enough for you?)
2016-02-05 22:44:25 -05:00
Forstride b1b21dbd57 Changed trees in the Lush Swamp to use vines instead of ivy 2016-02-05 22:06:22 -05:00
Forstride b2657ce344 Tweaked Xeric Shrubland biome 2016-02-05 21:32:31 -05:00
Forstride 57ad7e28d8 Improved the Brushland and Heathland biomes 2016-02-05 21:11:35 -05:00
Forstride 4a4c96b4b4 Removed the Deciduous Forest and Thicket biomes 2016-02-05 20:03:09 -05:00
Forstride 1d62a282fd Tweaked the Steppe biome 2016-02-05 19:59:22 -05:00
Forstride 58c496605c Removed Wisteria Meadow biome 2016-02-05 19:40:19 -05:00
Adubbz b14433e583 Accounted for the coral reef potentially being disabled 2016-02-06 10:56:00 +11:00
Forstride d6fc2d8f26 Removed Ash Stone, Hardened Sand, Hardened Dirt, Limestone/Siltstone/Shale/Crag Rock Slabs, renamed Dried Dirt to Dried Sand 2016-02-05 18:46:04 -05:00
Forstride e694be1276 Tweaked the Wisteria Meadow biome 2016-02-05 16:59:03 -05:00
Adubbz 0dc11c85da Let's stop leaving debug code in... 2016-02-05 22:25:57 +11:00
Adubbz aa163aa6f1 Added wisteria generation 2016-02-05 22:25:17 +11:00
Forstride 58600d70e1 Added deserts to the edges of the Wasteland biome 2016-02-05 05:58:06 -05:00
Forstride 36369fc9e0 Tweaked which biomes villages can spawn in 2016-02-04 22:36:01 -05:00
Forstride ca83293303 Added Overgrown Cliffs and Wisteria Meadow biomes. (Wisteria Meadow is still heavily WIP) 2016-02-04 21:02:33 -05:00
Forstride 165aabd569 New title screen panorama yet again 2016-02-04 16:55:57 -05:00
Adubbz 2f6b133caf Fixed mud step sound 2016-02-04 20:45:40 +11:00
Forstride f736e05fd1 Disabled rivers in some biomes 2016-02-04 04:40:07 -05:00
Adubbz 80647163db Fixed disabling river gen 2016-02-04 20:27:25 +11:00
Forstride f8bea4da5a New title screen panorama 2016-02-04 00:27:52 -05:00
Forstride d52f980b3d More climate changes...Also new temporary title screen panorama 2016-02-04 00:02:33 -05:00
Forstride c56aaebddc Added separate climate for the Wasteland 2016-02-03 23:42:05 -05:00
Forstride 35f89a760a Climate Tweaks O' Plenty... 2016-02-03 23:11:09 -05:00
Forstride 95c691adc5 More climate tweaks 2016-02-03 22:18:33 -05:00
Forstride d0bea49d75 Minor tweaks to climates 2016-02-03 22:00:54 -05:00
Forstride 688b8852a4 Overhauled biome climates (Merged cold desert/frozen desert with ice cap, redid climate mapping, etc.) 2016-02-03 21:45:02 -05:00
Forstride 414b8d4db1 Tweaked the Seasonal Forest, Shield, and Woodland biomes 2016-02-03 20:05:12 -05:00
Forstride a60d9875e0 Changed fruit/veggie salad recipes/textures 2016-02-03 18:49:23 -05:00
Forstride b133775e8f Removed wild carrots, added caveweed 2016-02-03 18:43:09 -05:00
Forstride 8f6cda25cd Re-added Coral Reef, tweaked Crag biome 2016-02-03 17:03:30 -05:00
Forstride eabba1264d Tweaked Ominous Woods biome 2016-02-03 16:25:52 -05:00
Forstride 6f20d6e061 Tweaked Marsh biome 2016-02-03 16:16:25 -05:00
Forstride 61804d7a8e Added Mega Taiga to boreal climate 2016-02-03 16:01:15 -05:00
Adubbz aed121a960 Fixed mega taiga generation 2016-02-03 19:24:41 +11:00
Forstride 5f92c16841 Changed Crag climate/rarity 2016-02-03 01:31:53 -05:00
Forstride 09cf459e40 Tweaked Mountain and Steppe biomes 2016-02-03 01:16:17 -05:00
Forstride 30c1760b8d Tweaked the Bamboo Forest and Dead Forest, added tall grass to the Outback and Quagmire 2016-02-03 00:35:38 -05:00
Forstride d972b46935 Tweaked Temperate Rainforest biome 2016-02-02 20:24:20 -05:00
Forstride 6bea3a1123 Removed sky color from Frost Forest, fixed wild rice not counting for BOP plant gen option 2016-02-02 17:05:33 -05:00
Forstride 6fcaefe050 Removed sky colors from some biomes. Improved the Dead Swamp and Fen biomes. Tweaked mahogany trees 2016-02-02 15:53:30 -05:00
Adubbz 34cf51c75a Fixed reeds generation placement 2016-02-03 06:20:41 +11:00
Adubbz 6bda7d5285 Merge pull request #650 from NatsuArashi/patch-2
Update zh_TW.lang
2016-02-02 23:04:34 +11:00
Adubbz 9d43d1bb9a Removing debug code 2016-02-02 23:04:08 +11:00
Adubbz b8b11a0e3e Fixed Mahogany saplings, added inner branches to reduce decay 2016-02-02 23:01:32 +11:00
NatsuArashi 23761576b1 Update zh_TW.lang 2016-02-02 19:29:58 +08:00
Forstride bddc74db5c Fixed world gen customization options for vanilla biomes 2016-02-02 00:48:38 -05:00
Forstride 4d5ed22a51 Added amethyst and biome essence ore to the End. Fixed celestial crystal generation 2016-02-01 23:31:39 -05:00
Forstride da077d5d3d Changed Biome Finder recipe/texture, renamed Ornamental Artifact to Terrestrial Artifact 2016-02-01 21:51:28 -05:00
Forstride 29b6d4a992 Tweaked the Ominous Woods biome, changed names for customization menu options 2016-02-01 20:56:45 -05:00
Forstride 05b8c2f641 Added hot springs to the Mystic Grove 2016-02-01 19:45:30 -05:00
Forstride b0584f8f80 Tweaked Wasteland biome, added hot spring pools to the Sacred Springs 2016-02-01 19:29:15 -05:00
Forstride 58f966939e Tweaked Mystic Grove and Ominous Woods 2016-02-01 17:56:39 -05:00
Forstride 82696fdd03 Added customization options for rock formations, nether plants, and end features (for when they're added). Tweaked berrry bush generation in some biomes. Tweaked lily pad textures 2016-02-01 17:27:59 -05:00
Forstride 6e8e2c83f3 Tweaked foliage in some biomes 2016-02-01 14:39:30 -05:00
Forstride ebbfc36e99 Added customization option for hot springs and nether hives (for when they're re-added), and fixed some of the other options 2016-02-01 13:42:25 -05:00
Forstride 2389a1e0ff Added customization options for soils, flowers, mushrooms, and liquid poison 2016-02-01 13:05:32 -05:00
Adubbz 7ce0f6eafd Added mahogany trees 2016-02-01 22:39:10 +11:00
Adubbz 2c85a16a6f World type configuration now supports biome extensions 2016-02-01 19:56:28 +11:00
Forstride 9156ab8997 Added a customization option for water plants 2016-02-01 02:03:28 -05:00
Forstride 8b3ec016b4 Added customization options for foliage and plants (Flowers, mushrooms, and water plants coming soon!) 2016-02-01 01:45:30 -05:00
Forstride 1130e30911 Added customization option for BOP grasses 2016-02-01 00:58:13 -05:00
Forstride 8e2908a9aa Added world creation customization menu options for poison ivy, flax, berry bushes, wild carrots, thorns, and quicksand 2016-02-01 00:16:39 -05:00
Forstride 3bb4f642c3 Tweaked Wasteland, Xeric Shrubland, and some textures 2016-01-31 22:32:39 -05:00
Forstride 4b1dab0e04 Tweaked various textures 2016-01-31 19:42:05 -05:00
Forstride 62803d800f Fixed "earth" item (Used for creative tab icon) 2016-01-31 16:07:54 -05:00
Forstride 583c059a5d Removed Dense Forest biome, tweaked Deciduous Forest 2016-01-31 15:11:02 -05:00
Adubbz a10eb9f4ae Fixed flammability for a bunch of stuff 2016-01-31 21:34:23 +11:00
Forstride 2e39cea6c0 Removed fruit blocks in favor of having them drop from leaves (Like vanilla apples) 2016-01-31 00:45:26 -05:00
Forstride 3b2df4f5fe Tweaked gem block textures, removed vines from bamboo trees 2016-01-30 21:58:29 -05:00
Forstride 6e45433c9e Fixed flammabilty/fire spread for slabs, planks, logs, foliage/plants, and flowers 2016-01-30 20:33:50 -05:00
Forstride 7bf7f66129 Updated Forge version (Update for fixed spruce trees in Taiga biome!) 2016-01-30 19:52:30 -05:00
Adubbz f663aecb87 Orange autumn saplings now produce dark wood trees 2016-01-30 00:14:30 +11:00
Forstride 4637c01a3a Re-added overpowered magic healing water that obviously no one liked at all 2016-01-29 05:28:02 -05:00
Forstride 87cbc0ae6e Removed large stalagmite/stalactite textures 2016-01-28 20:25:48 -05:00
Matt Caughey 941656f023 Tweaked biome climates 2016-01-28 20:19:37 -05:00
Matt Caughey df59c70cca Removed Arctic and Glacier biomes, improved Cold/Frozen Desert biomes. (Be sure to fix biome IDs in your configs!) 2016-01-28 20:01:07 -05:00
Matt Caughey 9e045fbfe5 Changed how quicksand generates 2016-01-28 18:27:56 -05:00
Matt Caughey b14fe60711 Fixed pine saplings, tweaked wisteria more 2016-01-28 15:20:45 -05:00
Matt Caughey 51ef64c316 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-28 00:31:24 -05:00
Matt Caughey 623fceecd8 Changed wisteria. Now a plant rather than a vine-like block. 2016-01-28 00:30:57 -05:00
Adubbz 6592ad4537 Merge pull request #642 from NatsuArashi/patch-1
Create zh_TW.lang
2016-01-28 10:14:10 +11:00
NatsuArashi 071917ad09 Create zh_TW.lang 2016-01-27 21:26:27 +08:00
Matt Caughey b7452cfc4b Added new rock formation textures (Not used yet) 2016-01-26 19:45:54 -05:00
Matt Caughey 98a03b29e5 Removed pumpkins from our biomes temporarily 2016-01-26 17:39:39 -05:00
Matt Caughey 30eb53688e Added pumpkins to our biomes 2016-01-26 16:17:56 -05:00
Adubbz b3a5b46361 Added a temporary fix for the ugly taiga tree bases in the side of hills 2016-01-26 22:04:06 +11:00
Adubbz 2bb960ed24 Big trees no longer generate on water, vines no longer generate on tree trunks 2016-01-26 21:33:02 +11:00
Matt Caughey 3bf71a70e2 Tweaked butterfly textures 2016-01-26 03:28:07 -05:00
Matt Caughey dd00ab1513 Added butterfly color variants 2016-01-26 00:21:35 -05:00
Matt Caughey 7bbc511006 Removed big mushrooms from Woodland biome, updated title screen panorama again 2016-01-25 23:56:36 -05:00
Matt Caughey 51272ed89d Still trying to fix entity spawning... 2016-01-25 20:04:50 -05:00
Matt Caughey de351378db Mob tweaks (Still having spawning issues) 2016-01-25 18:53:21 -05:00
Matt Caughey a44fb993ba Added butterflies (That don't spawn for some reason...) 2016-01-25 17:55:12 -05:00
Matt Caughey 894360c63c Tweaked snail texture 2016-01-25 03:37:20 -05:00
Matt Caughey 3c4ec83d1d Added snail spawns to swamp/forest biomes (They still don't move yet though) 2016-01-25 03:11:40 -05:00
Matt Caughey 0c5c2da80f Added snail entity (Currently doesn't move) 2016-01-24 22:01:31 -05:00
Matt Caughey 648b6c7cb9 Added snail model and texture 2016-01-24 21:11:09 -05:00
Matt Caughey b0fb923de6 Finished terrariums 2016-01-24 17:48:14 -05:00
Matt Caughey e6d22526b7 Tweaked which biomes players can spawn in 2016-01-24 01:55:41 -05:00
Matt Caughey ea431da8df More crafting recipe stuff 2016-01-23 22:20:44 -05:00
Matt Caughey 90ec0be5f7 Added more dye recipes 2016-01-23 21:10:47 -05:00
Matt Caughey dc4cc6c7f9 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-23 18:58:08 -05:00
Matt Caughey 36e0dbbc2e Added roots and waterside sand generation to biomes 2016-01-23 18:57:46 -05:00
Adubbz d7d3c1656b Fixed an NPE with Buildcraft (and likely other things) 2016-01-24 10:56:15 +11:00
Matt Caughey fda6e74f63 Added dandelions and poppies to biomes 2016-01-23 04:35:57 -05:00
Adubbz 077a4164c4 Fixed building 2016-01-23 18:17:44 +11:00
Adubbz 4310c66603 Attempting to fix building on Jenkins 2016-01-23 18:14:01 +11:00
Matt Caughey 481b4a0bc9 Changed Lush Desert trees to acacia logs/leaves 2016-01-22 21:04:25 -05:00
Matt Caughey 805565d91b New title screen panorama 2016-01-22 20:45:22 -05:00
Matt Caughey 63671521a6 Tweaked bayou trees, added willow trees to temperate rainforest and vanilla swampland. Fixed jacaranda trees in extreme hills 2016-01-22 20:18:41 -05:00
Matt Caughey 83348587ce Tweaked the wetland biome, made dead forests and dead swamps less common 2016-01-22 19:58:21 -05:00
Adubbz cb0fa1a114 Removed silty dirt from the Shrubland 2016-01-23 11:04:27 +11:00
Matt Caughey 4a879af3fd Added cactus terrarium, fixed particles for blocks that have "fancy" models 2016-01-22 18:50:41 -05:00
Matt Caughey ef22f37cab "Finished" terrarium jars (More variants coming soon!) 2016-01-22 18:10:43 -05:00
Adubbz 0544f7edb3 The leaves offset for basic trees can now be customized 2016-01-23 10:00:22 +11:00
Adubbz e935710e8e Allowed vines to not be instances of BlockVine 2016-01-22 23:37:27 +11:00
Matt Caughey ebf9f31d9d Added jar block (Still needs work) 2016-01-22 03:41:57 -05:00
Matt Caughey 97ad030a85 Added rafflesia plants to jungle biomes, fixed ocelot spawns, tweaked Eucalyptus Forest 2016-01-22 01:26:57 -05:00
Matt Caughey e79e939e01 Added a proper model for clover patches 2016-01-21 22:10:47 -05:00
Matt Caughey 459d5ad0d2 Added Terrarium Jars (Not placeable yet) 2016-01-21 21:30:34 -05:00
Matt Caughey 0733efee7a Added proper snow texture for long grass 2016-01-21 18:42:00 -05:00
Matt Caughey c9788073d9 Fixed lily pad and duckweed rendering 2016-01-21 16:26:30 -05:00
Matt Caughey 41c972182d Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-21 15:55:51 -05:00
Matt Caughey 135940ce9a Tweaked foliage/flowers for a lot of biomes. Tweaked reed texture (Again) 2016-01-21 15:55:27 -05:00
Forstride 2355730a06 Update README.md 2016-01-21 13:48:03 -05:00
Matt Caughey fd4f543baf Added generators for some saplings 2016-01-21 13:39:50 -05:00
Matt Caughey 7d6feaba55 Re-added Tropical Rainforest biome, tweaked mob spawns in certain biomes 2016-01-21 13:27:42 -05:00
Matt Caughey f2d8c0ca97 Tweaked Redwood Forest 2016-01-21 12:30:08 -05:00
Adubbz 273ceb9411 Fixed some generation issues with redwood trees 2016-01-21 20:11:17 +11:00
Matt Caughey 0253add36a Re-added Redwood Forest (Trees don't generate properly yet) 2016-01-21 03:46:09 -05:00
Adubbz 3b415460e0 Added redwood trees 2016-01-21 18:08:24 +11:00
Matt Caughey 86d2159549 Added new logo 2016-01-20 21:14:28 -05:00
Matt Caughey 51a9f21f6c Fixed Umbran Wood slabs 2016-01-20 20:09:58 -05:00
Adubbz abe54ad1ca Fixed an error with the achievement handler 2016-01-21 11:26:38 +11:00
Matt Caughey 9253be0700 Changed the default temperature setting for BOP world type to medium zones 2016-01-20 18:48:48 -05:00
Adubbz 3e517b93c9 Prevented a crash on right clicking with an empty hand 2016-01-21 10:32:51 +11:00
Matt Caughey 82cc16cf3c Renamed Dark Wood to Umbran Wood, renamed Ghastly Souls to Souls 2016-01-20 16:57:25 -05:00
Matt Caughey 481e0686e8 Tweaked biome climates more 2016-01-20 16:23:17 -05:00
Matt Caughey 2f64b3f883 Tweaked which biomes villages can spawn in 2016-01-20 15:36:43 -05:00
Adubbz 54a4b92531 Fixed double slab drops. Closes #615 2016-01-20 20:51:20 +11:00
Adubbz 97d283950c Fixed the remaining achievements. Closes #612 2016-01-20 20:12:11 +11:00
Matt Caughey de433ba878 Added trigger for wilted lily achievement 2016-01-20 02:09:49 -05:00
Matt Caughey 81d8edb9af Replaced Dandelion Puff's with Wilted Lilies. Changed Miner's Delight texture 2016-01-20 01:57:42 -05:00
Matt Caughey ece60b0c8c Removed the Jade Cliffs biome. Goodbye old friend... 2016-01-19 23:51:41 -05:00
Matt Caughey cd0ec7dee4 Added Lost Soul texture 2016-01-19 23:49:40 -05:00
Matt Caughey 68f4208d88 Added pixies to the Mystic Grove, and ocelots to more tropical biomes 2016-01-19 23:14:30 -05:00
Adubbz d769214ce1 Dark leaves are no longer tinted 2016-01-20 15:04:26 +11:00
Matt Caughey 7d566fe241 Re-added Lush Swamp, Mystic Grove, and Ominous Woods biomes 2016-01-19 23:01:15 -05:00
Adubbz b799ffa725 Fixed incorrect awarding of achievements. Closes #613 2016-01-20 14:36:38 +11:00
Adubbz ced045d35d Fixed reed bottom block rendering. Closes #620 2016-01-20 14:25:26 +11:00
Adubbz 64d1310e68 Fixed soil pick block. Closes #618 2016-01-20 14:24:57 +11:00
Adubbz fbbdf44a4d Changed how customizable leaves radius works 2016-01-20 13:24:28 +11:00
Adubbz cf089c78d8 Allowed the leaf radius of basic trees to be customized 2016-01-20 13:02:52 +11:00
Adubbz 687d87a2f2 Fixed vine generation on Basic trees 2016-01-20 12:59:48 +11:00
Matt Caughey 32457bed32 Re-added Land of Lakes biome 2016-01-19 20:47:40 -05:00
Matt Caughey aea5fa5918 Re-added Temperate Rainforest biome 2016-01-19 20:06:13 -05:00
Adubbz bc1279744a Fixed tree gen in the lush desert 2016-01-20 11:35:33 +11:00
Matt Caughey cdce3694a1 Re-added Lush Desert biome (Trees not generating) 2016-01-19 19:29:22 -05:00
Matt Caughey 9053e29641 Re-added Shield biome, fixed pine trees 2016-01-19 19:04:30 -05:00
Matt Caughey 2d5c41a84b Fixed generator crash (Oops :P) 2016-01-19 18:02:49 -05:00
Matt Caughey 89486cd315 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-19 17:57:46 -05:00
Matt Caughey 62877eb0bb Re-added Meadow biome (Missing Meadow Forest sub-biome) 2016-01-19 17:57:19 -05:00
Adubbz d36cde3ef8 Removed unnecessary new Object[0] 2016-01-20 09:31:02 +11:00
Matt Caughey 46ca1b6fac Fixed plants from growing on mud blocks, tweaked Marsh biome 2016-01-19 17:21:58 -05:00
Matt Caughey 9a4f4724ac Minor climate changes 2016-01-19 16:07:15 -05:00
Matt Caughey 34aaa3da19 Tweaked biome climates 2016-01-19 14:15:30 -05:00
Adubbz 7bee1e173f Fixed hardness and sounds for fences and fence gates 2016-01-19 18:56:48 +11:00
Adubbz ab98fad052 Fixed up trees and spikes in the Wasteland 2016-01-19 18:24:37 +11:00
Adubbz bb2f5b99b1 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-19 16:13:46 +11:00
Adubbz 51e3ea319e Fixed a crash with BlockBOPGrass. Closes #611 2016-01-19 16:13:24 +11:00
Matt Caughey 250ac7c66f Re-added Wasteland biome (Missing trees and spikes) 2016-01-18 23:11:03 -05:00
Adubbz b62004dd85 Working around Vanilla bugs... 2016-01-19 13:05:21 +11:00
Adubbz 771b596db8 Merge branch 'BOP-1.8.9-3.0.x' of https://github.com/Glitchfiend/BiomesOPlenty into BOP-1.8.9-3.0.x 2016-01-19 12:57:12 +11:00
Adubbz 384abcec96 Fixed a crash with disabling river gen 2016-01-19 12:56:55 +11:00
Matt Caughey 102fb04a51 Removed villages and rivers from certain biomes 2016-01-18 20:53:48 -05:00
Adubbz 601c509a68 Added an option to disable river generation in biomes 2016-01-19 12:20:06 +11:00
Matt Caughey c49e6537cb Re-added Wetland biome (Willow trees are broken currently) 2016-01-18 20:13:24 -05:00
Matt Caughey 85626a0d80 More achievement stuff 2016-01-18 16:36:59 -05:00
Matt Caughey f87a79e0f1 More achievements, added flax string and ornamental artifact 2016-01-18 15:03:29 -05:00
Matt Caughey 43bd569c3e Added more achievements 2016-01-18 13:02:11 -05:00
Adubbz f14e46151b Implemented the crafting event for Forstride 2016-01-18 21:56:40 +11:00
Adubbz ea575db71c Fixed achievement saving and a crash due to positioning 2016-01-18 21:01:37 +11:00
Matt Caughey 7a4043a4aa Added more achievements 2016-01-18 03:41:22 -05:00
Adubbz c82041dfc4 Added The Wanderer achievement 2016-01-18 17:00:26 +11:00
Adubbz 449664a0c4 Added the flower child achievement 2016-01-18 14:46:03 +11:00
Matt Caughey 91e57c1591 Re-added Maple Woods biome 2016-01-17 21:11:20 -05:00
Matt Caughey 27ec60634f Re-added Rainforest biome (Still needs work with the terrain) 2016-01-17 20:56:05 -05:00
Matt Caughey f748002641 Changed natural soil types for various biomes 2016-01-17 19:30:36 -05:00
Matt Caughey 3f7e4d026c Re-added Snowy Coniferous Forest biome (Be sure to clear config files blahblahblah) 2016-01-17 19:02:32 -05:00
Matt Caughey a4e22a5232 Re-added Seasonal Forest biome (Be sure to clear config files so it updates biome IDs!) 2016-01-17 18:36:20 -05:00
Matt Caughey fab8853b18 Re-added Quagmire biome (Be sure to clear config files so it updates biome IDs!) 2016-01-17 17:47:26 -05:00
Matt Caughey 54f8dc9f38 Fixed Xeric Shrubland climate setting 2016-01-17 16:07:58 -05:00
Matt Caughey 55fe94ea87 Tweaked vanilla biome extensions, fixed gems for certain biomes 2016-01-17 15:45:44 -05:00
Matt Caughey 6ccd512fef Added extensions for vanilla overworld biomes 2016-01-17 14:44:19 -05:00
Matt Caughey f7dc65cc2f Tweaked wild rice item texture 2016-01-17 00:22:12 -05:00
Matt Caughey 6b9f28a0ca Added gelled poison texture 2016-01-17 00:20:05 -05:00
Matt Caughey 74b8a7031d Tweaked reed item texture 2016-01-16 23:56:24 -05:00
Matt Caughey 29a67cccc6 Fixed shrub height 2016-01-16 22:33:32 -05:00
Matt Caughey 43a107da56 Tweaked reed textures, readded block "item" textures 2016-01-16 20:55:35 -05:00
Matt Caughey 551820b1eb Fixed localized names for Veggie Salad and Shroom Salad 2016-01-16 17:46:09 -05:00
Matt Caughey 18e6c4f482 Tweaked various biomes to match past versions more 2016-01-16 17:42:59 -05:00
Matt Caughey 78ad8773ab Tweaked flower basket texture and various grass textures 2016-01-16 17:08:37 -05:00
Adubbz 0208fe6fc0 Fixed the Biome Radar model, added the Flower Basket 2016-01-16 19:02:34 +11:00
Adubbz 1223f8e753 Tweaked Sacred Oak tree gen 2016-01-15 10:41:38 +11:00
Adubbz f90cb54708 Mod biomes are once again copied to our world type 2016-01-14 16:36:12 +11:00
Adubbz acc3117eda Fixed slight mistake in GenLayerClimate clamping 2016-01-14 13:43:07 +11:00
Adubbz 47e5633058 Updated the Thaumcraft API 2016-01-14 13:36:35 +11:00
Adubbz 8d66e077b2 Updated license headers - For once Regex actually worker 2016-01-14 13:30:55 +11:00
Adubbz d5e2c506cf Fixed a crash when setting biome ids to -1 2016-01-14 11:20:16 +11:00
Adubbz 9bd7512cd4 Fixed an issue with replacing resource packs 2016-01-13 17:16:38 +11:00
Adubbz 41a40a5370 Fixed a crash with Thaumcraft. Closes #597 2016-01-13 09:26:51 +11:00
Adubbz c25dcedc13 Added an option to require shears for flower drops 2016-01-13 00:37:28 +11:00
Adubbz dd38421d45 Fixed rare out of bounds crash due to rounding errors 2016-01-12 20:41:20 +11:00
Adubbz b3ade98445 Added debug code to hopefully determine the cause of an outofbounds crash 2016-01-12 19:36:18 +11:00
Adubbz c996b9cced Added the Sacred Springs and its corresponding sapling 2016-01-12 12:52:02 +11:00
Adubbz 38cd1655e1 Fixed handling for Vanilla biome extensions, added crystals to the end and prevented our generation from spawning in the default world type 2016-01-11 22:57:04 +11:00
Adubbz d51c6d1305 Fixed a crash with Tech Reborn. Closes #594 2016-01-10 21:00:07 +11:00
Adubbz c647fee66e Ported beginnings of Thaumcraft compatibility to 1.8.9 2016-01-09 20:53:06 +11:00
Adubbz a4b78504e6 Fixed grass break particles 2016-01-09 19:21:58 +11:00
Adubbz 9266fae15a Fixed an NPE with getWeightedTerrainSettings 2016-01-09 12:56:55 +11:00
Adubbz 0bf145cfd5 Tweaked the Arctic biome and added debug code for a GenLayer crash 2016-01-08 18:33:31 +11:00
Adubbz 108ab3c796 Fixed block names on non-default states 2016-01-07 22:19:07 +11:00
Adubbz 3b5c6124f1 Removed test poion name 2016-01-07 22:10:41 +11:00
Adubbz 7f0fb34c2b Addressed issues with block names 2016-01-07 22:00:39 +11:00
Adubbz 8a0b97f907 Fixed bamboo drops for blocks with metadata 2016-01-06 17:29:57 +11:00
Adubbz 840e9631d5 Fixed a crash bug with sapling drops 2016-01-06 01:49:36 +11:00
Adubbz 5090c759bc Merge pull request #584 from Adaptivity/patch-1
Update ru_RU.lang
2016-01-05 11:31:26 +11:00
Adubbz 92949d1e9b Fixed Golden Scythe localisation 2016-01-05 11:26:03 +11:00
Adubbz c9b5ed1526 Merge pull request #582 from gxy17886/patch-2
update zh_CN.lang
2016-01-05 09:54:14 +11:00
Anton 824f4da227 Update ru_RU.lang 2016-01-04 21:14:33 +03:00
gxy17886 29c59ad029 update zh_CN.lang
update zh_CN.lang
2016-01-05 00:33:56 +08:00
Adubbz f80c5a1a5d Added the Prairie 2016-01-04 22:37:57 +11:00
Adubbz 8c2e89f270 Fixed the Dense Forest and tweaked the Eucalyptus Forest 2016-01-04 20:49:47 +11:00
Adubbz 3bdf3bfd46 Fixed missing grass in the Steppe 2016-01-04 20:11:35 +11:00
Adubbz a2c0a16f92 Fixed sapling drops from breaking 2016-01-04 13:50:01 +11:00
Adubbz 040da80612 Began preliminary work towards adopting Forge's new bucket models/setup 2016-01-04 13:17:40 +11:00
Adubbz 3570fc70ff Fixed gem generation 2016-01-04 11:36:17 +11:00
Adubbz 8d2976992a Prevented villages from spawning in the Jade Cliffs and Highland 2016-01-03 21:53:43 +11:00
Adubbz ac6107b148 Remove custom village placement code 2016-01-03 21:36:23 +11:00
Adubbz 5f62d32b12 Enabled spawning and generation of villages in BoP biomes 2016-01-03 21:34:36 +11:00
Adubbz f94e9b1eb3 Added biome dictionary tags for all current biomes 2016-01-03 14:52:53 +11:00
Adubbz 94c45b4a9a Fixed a typo 2016-01-03 11:16:08 +11:00
Adubbz 7eed85f66b Added a config option to disable trail visibility for the local player if they themselves have a trail 2016-01-03 11:15:19 +11:00
Adubbz f188396c99 Fixed replacement of plant blocks 2016-01-02 16:33:23 +11:00
Adubbz 3cb854eea2 Fixed cherry saplings incorrectly growing oak trees 2016-01-01 19:26:00 +11:00
Adubbz e31f9a160a Updated Forge 2016-01-01 17:04:12 +11:00
Adubbz fe7e1a282f Get rid of these dreaded tabs 2016-01-01 16:50:03 +11:00
Adubbz 6ba6b65271 Fixed rendering in Forge 1668, slight cleanup of entity rendering 2016-01-01 16:44:48 +11:00
Adubbz d50e9d9cb8 Fixed authentication 2016-01-01 13:39:38 +11:00
Adubbz b3d8c23075 More build.gradle fixes 2016-01-01 13:19:16 +11:00
Adubbz 02e46a66d8 Fixing build syntax 2016-01-01 12:48:43 +11:00
Adubbz 4774e8e3d8 Fixing mistakes 2016-01-01 12:45:34 +11:00
Adubbz 5fd444c260 Updated build.gradle in preparation for maven changes 2016-01-01 11:49:15 +11:00
Adubbz 475abae786 Auto-generate the biomes config file folder 2015-12-31 20:53:27 +11:00
Adubbz bf25777886 Added checks to prevent biome id conflicts with BoP 2015-12-31 19:47:00 +11:00
Adubbz d4f31617f6 Added saplings for trees that have been implemented 2015-12-31 16:49:07 +11:00
Adubbz 5bc01e7b8e Remove unused coremod 2015-12-31 10:45:27 +11:00
Adubbz ebaa16f4b5 Remove unused vars 2015-12-30 16:29:25 +11:00
Adubbz d96940d22b This should work (or so i'm told) 2015-12-30 16:25:41 +11:00
Adubbz 80372ad8d5 Updated to 1.8.9 2015-12-30 15:37:08 +11:00
4330 changed files with 60499 additions and 46671 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,7 +1,17 @@
**Please note that the 1.8.8 version is still in development. Whilst it may have many bugs fixed compared to 1.7, there will still be some missing features.
The configuration system for biomes is implemented, however it remains undocumented at this time. Most world-breaking changes should be complete at this point, however do
be aware that they are still possible.**
<p align="center"><img src="https://i.imgur.com/HQ2opH6.png"></p>
<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 **biomesoplenty**
-----------------
[<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,92 +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
mappings = "snapshot_nodoc_20151214"
}
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 'FMLCorePlugin': 'biomesoplenty.common.asm.BOPLoadingPlugin'
attributes 'FMLCorePluginContainsFMLMod': 'true'
attributes 'ForceLoadAsMod': true
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
@ -99,128 +78,111 @@ 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 {
dependsOn 'build'
repositories {
if (project.hasProperty("filesmaven")) {
logger.info('Publishing to files server')
mavenDeployer {
configuration = configurations.deployJars
mavenDeployer {
if (project.hasProperty('forgeMavenPassword')) {
repository(url: "https://files.minecraftforge.net/maven/manage/upload") {
authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword'))
}
}
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())
}
repository(url: project.filesmaven.url) {
authentication(userName: project.filesmaven.username, privateKey: project.filesmaven.key)
}
// This is just the pom data for the maven repo
pom {
groupId = project.group
version = project.version
artifactId = project.archivesBaseName
project {
name project.archivesBaseName
packaging 'jar'
description 'Biomes O Plenty'
pom {
groupId = project.group
version = project.version
artifactId = project.archivesBaseName
project {
name project.archivesBaseName
packaging 'jar'
description 'Biomes O Plenty'
url 'https://github.com/Glitchfiend/BiomesOPlenty'
scm {
url 'https://github.com/Glitchfiend/BiomesOPlenty'
scm {
url 'https://github.com/Glitchfiend/BiomesOPlenty'
connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git'
developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git'
connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git'
developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git'
}
issueManagement {
system 'github'
url 'https://github.com/Glitchfiend/BiomesOPlenty/issues'
}
licenses {
license {
name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License'
url 'http://creativecommons.org/licenses/by-nc-nd/4.0/'
distribution 'repo'
}
issueManagement {
system 'github'
url 'https://github.com/Glitchfiend/BiomesOPlenty/issues'
}
developers {
developer {
id 'Adubbz'
name 'Adubbz'
roles { role 'developer' }
}
licenses {
license {
name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License'
url 'http://creativecommons.org/licenses/by-nc-nd/4.0/'
distribution 'repo'
}
}
developers {
developer {
id 'Adubbz'
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' }
}
developer {
id 'Forstride'
name 'Forstride'
roles { role 'developer' }
}
}
}
}
} else {
logger.info('Publishing to repo folder')
mavenDeployer {
pom.version = "${project.minecraft.version}-${project.version}"
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
}
}
}
}

View File

@ -1,5 +0,0 @@
minecraft_version=1.8.8
forge_version=11.15.0.1650-1.8.8
mod_version=3.0.0
curse_project_id=220318
curse_release_type=alpha

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,345 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Random;
import biomesoplenty.api.biome.generation.GenerationManager;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.IGenerator;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.TerrainSettings;
import net.minecraft.block.BlockSand;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.EntityList;
import net.minecraft.entity.EntityLiving;
import net.minecraft.entity.EnumCreatureType;
import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraft.world.chunk.ChunkPrimer;
public class BOPBiome extends BiomeGenBase implements IExtendedBiome
{
private GenerationManager generationManager = new GenerationManager();
private Map<BOPClimates, Integer> weightMap = new HashMap<BOPClimates, Integer>();
// defaults
public int skyColor = -1; // -1 indicates the default skyColor by temperature will be used
public boolean hasBiomeEssence = true;
public IBlockState seaFloorBlock = Blocks.dirt.getDefaultState();
public TerrainSettings terrainSettings = new TerrainSettings();
public boolean noNeighborTerrainInfuence = false;
public int avgDirtDepth = 3;
public BOPBiome()
{
super(-1, false);
this.terrainSettings.setDefaults();
this.theBiomeDecorator.treesPerChunk = -999;
this.theBiomeDecorator.flowersPerChunk = -999;
this.theBiomeDecorator.grassPerChunk = -999;
this.theBiomeDecorator.sandPerChunk = -999;
this.theBiomeDecorator.sandPerChunk2 = -999;
this.theBiomeDecorator.clayPerChunk = -999;
this.theBiomeDecorator.generateLakes = false;
}
public void applySettings(BOPWorldSettings settings)
{
}
public void configure(IConfigObj conf)
{
// Allow name to be overridden
this.biomeName = conf.getString("biomeName",this.biomeName);
// Allow basic properties to be overridden
this.topBlock = conf.getBlockState("topBlock", this.topBlock);
this.fillerBlock = conf.getBlockState("fillerBlock", this.fillerBlock);
this.seaFloorBlock = conf.getBlockState("seaFloorBlock", this.seaFloorBlock);
this.minHeight = conf.getFloat("rootHeight", this.minHeight);
this.maxHeight = conf.getFloat("variation", this.maxHeight);
this.temperature = conf.getFloat("temperature", this.temperature);
this.rainfall = conf.getFloat("rainfall", this.rainfall);
this.color = conf.getInt("color",this.color);
this.waterColorMultiplier = conf.getInt("waterColorMultiplier", this.waterColorMultiplier);
this.enableRain = conf.getBool("enableRain", this.enableRain);
this.enableSnow = conf.getBool("enableSnow", this.enableSnow);
this.skyColor = conf.getInt("skyColor", this.skyColor);
this.hasBiomeEssence = conf.getBool("hasBiomeEssence", this.hasBiomeEssence);
// Allow weights to be overridden
IConfigObj confWeights = conf.getObject("weights");
if (confWeights != null)
{
for (BOPClimates climate : BOPClimates.values())
{
Integer weight = confWeights.getInt(climate.name().toLowerCase(), null);
if (weight == null) {continue;}
if (weight.intValue() < 1)
{
this.weightMap.remove(climate);
}
else
{
this.weightMap.put(climate, weight);
}
}
}
// Allow generators to be configured
IConfigObj confGenerators = conf.getObject("generators");
if (confGenerators != null)
{
for (String name : confGenerators.getKeys())
{
this.generationManager.configureWith(name, confGenerators.getObject(name));
}
}
// Allow spawnable entites to be configured
ArrayList<IConfigObj> confEntities = conf.getObjectArray("entities");
if (confEntities != null)
{
for (IConfigObj confEntity : confEntities)
{
String entityName = confEntity.getString("name");
EnumCreatureType creatureType = confEntity.getEnum("creatureType", EnumCreatureType.class);
if (entityName == null || creatureType == null) {continue;}
// Look for an entity class matching this name
// case insensitive, dot used as mod delimiter, no spaces or underscores
// eg 'villager', 'Zombie', 'SQUID', 'enderdragon', 'biomesoplenty.wasp' all ok
Class <? extends EntityLiving> entityClazz = null;
for (Object entry : EntityList.stringToClassMapping.entrySet())
{
String entryEntityName = (String)((Entry)entry).getKey();
if (entryEntityName.equalsIgnoreCase(entityName))
{
entityClazz = (Class <? extends EntityLiving>)((Entry)entry).getValue();
}
}
if (entityClazz == null)
{
confEntity.addMessage("No entity registered called " + entityName);
continue;
}
if (!creatureType.getCreatureClass().isAssignableFrom(entityClazz))
{
confEntity.addMessage("Entity " + entityName + " is not of type " + creatureType);
continue;
}
List<SpawnListEntry> spawns = this.getSpawnableList(creatureType);
Integer weight = confEntity.getInt("weight");
if (weight != null && weight < 1)
{
// weight was set to zero (or negative) so find and remove this spawn
Iterator<SpawnListEntry> spawnIterator = spawns.iterator();
while (spawnIterator.hasNext())
{
SpawnListEntry entry = spawnIterator.next();
if (entry.entityClass == entityClazz)
{
spawnIterator.remove();
}
}
}
else
{
// weight was positive, or omitted, so update an existing spawn or add a new spawn
boolean foundIt = false;
for (SpawnListEntry entry : spawns)
{
if (entry.entityClass == entityClazz)
{
// the entry already exists - adjust the params
entry.itemWeight = confEntity.getInt("weight", entry.itemWeight);
entry.minGroupCount = confEntity.getInt("minGroupCount", entry.minGroupCount);
entry.maxGroupCount = confEntity.getInt("maxGroupCount", entry.maxGroupCount);
foundIt = true;
}
}
if (!foundIt)
{
// the entry does not exist - add it
SpawnListEntry entry = new SpawnListEntry(entityClazz, confEntity.getInt("weight", 10), confEntity.getInt("minGroupCount", 4), confEntity.getInt("maxGroupCount", 4));
spawns.add(entry);
}
}
}
}
}
@Override
public BiomeOwner getBiomeOwner()
{
return BiomeOwner.BIOMESOPLENTY;
}
@Override
public void addGenerator(String name, GeneratorStage stage, IGenerator generator)
{
this.generationManager.addGenerator(name, stage, generator);
}
public void removeGenerator(String name)
{
this.generationManager.removeGenerator(name);
}
@Override
public GenerationManager getGenerationManager()
{
return this.generationManager;
}
@Override
public Map<BOPClimates, Integer> getWeightMap()
{
return this.weightMap;
}
@Override
public void addWeight(BOPClimates climate, int weight)
{
this.weightMap.put(climate, weight);
}
@Override
public void clearWeights()
{
this.weightMap.clear();
}
// whether or not a biome essence item corresponding to this biome should be able to drop from biome blocks
public boolean hasBiomeEssence()
{
return this.hasBiomeEssence;
}
@Override
public int getSkyColorByTemp(float temperature)
{
return (this.skyColor == -1) ? super.getSkyColorByTemp(temperature) : this.skyColor;
}
@Override
public BiomeGenBase setTemperatureRainfall(float temp, float rain)
{
this.temperature = temp;
this.rainfall = rain;
return this;
}
@Override
public void genTerrainBlocks(World world, Random rand, ChunkPrimer primer, int x, int z, double stoneNoiseVal)
{
IBlockState topBlock = this.topBlock;
IBlockState fillerBlock = this.fillerBlock;
IBlockState seaFloorBlock = this.seaFloorBlock;
boolean hitFloorYet = false;
int topBlocksToFill = 0;
int dirtBlocksToFill = 0;
int seaFloorBlocksToFill = 0;
int dirtDepth = Math.max(0, (int)(stoneNoiseVal / 3.0D + this.avgDirtDepth + rand.nextDouble() * 0.25D));
int seaFloorDepth = 1 + rand.nextInt(2);
int localX = x & 15;
int localZ = z & 15;
// start at the top and move downwards
for (int y = 255; y >= 0; --y)
{
IBlockState state = primer.getBlockState(localZ, y, localX);
// bedrock at the bottom
if (y <= rand.nextInt(5))
{
primer.setBlockState(localZ, y, localX, Blocks.bedrock.getDefaultState());
continue;
}
if (state.getBlock().getMaterial() == Material.air)
{
// topBlocks and dirtBlocks can occur after any pocket of air
topBlocksToFill = (topBlock == null ? 0 : 1);
dirtBlocksToFill = dirtDepth;
continue;
}
else if (!hitFloorYet && state.getBlock().getMaterial() == Material.water)
{
// seaFloorBlocks can occur after surface water
seaFloorBlocksToFill = seaFloorDepth;
}
if (state.getBlock() == Blocks.stone)
{
hitFloorYet = true;
if (topBlocksToFill > 0)
{
if (y >= 62)
{
primer.setBlockState(localZ, y, localX, topBlock);
}
else if (y >= 56 - dirtDepth)
{
primer.setBlockState(localZ, y, localX, fillerBlock);
}
else
{
primer.setBlockState(localZ, y, localX, Blocks.gravel.getDefaultState());
dirtBlocksToFill = 0;
}
topBlocksToFill--;
}
else if (seaFloorBlocksToFill > 0)
{
primer.setBlockState(localZ, y, localX, seaFloorBlock);
--seaFloorBlocksToFill;
}
else if (dirtBlocksToFill > 0)
{
primer.setBlockState(localZ, y, localX, fillerBlock);
--dirtBlocksToFill;
// add sandstone after a patch of sand
if (dirtBlocksToFill == 0 && fillerBlock.getBlock() == Blocks.sand)
{
dirtBlocksToFill = rand.nextInt(4) + Math.max(0, y - 63);
fillerBlock = fillerBlock.getValue(BlockSand.VARIANT) == BlockSand.EnumType.RED_SAND ? Blocks.red_sandstone.getDefaultState() : Blocks.sandstone.getDefaultState();
}
}
}
}
}
}

View File

@ -1,65 +1,104 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome;
import com.google.common.base.Optional;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.core.BiomesOPlenty;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.registry.Registry;
import net.minecraft.world.biome.Biome;
public class BOPBiomes
{
// normal biomes which have weights
public static Optional<BiomeGenBase> alps = Optional.absent();
public static Optional<BiomeGenBase> arctic = Optional.absent();
public static Optional<BiomeGenBase> bamboo_forest = Optional.absent();
public static Optional<BiomeGenBase> bayou = Optional.absent();
public static Optional<BiomeGenBase> bog = Optional.absent();
public static Optional<BiomeGenBase> boreal_forest = Optional.absent();
public static Optional<BiomeGenBase> brushland = Optional.absent();
public static Optional<BiomeGenBase> canyon = Optional.absent();
public static Optional<BiomeGenBase> chaparral = Optional.absent();
public static Optional<BiomeGenBase> cherry_blossom_grove = Optional.absent();
public static Optional<BiomeGenBase> cold_desert = Optional.absent();
public static Optional<BiomeGenBase> coniferous_forest = Optional.absent();
public static Optional<BiomeGenBase> crag = Optional.absent();
public static Optional<BiomeGenBase> dead_forest = Optional.absent();
public static Optional<BiomeGenBase> dead_swamp = Optional.absent();
public static Optional<BiomeGenBase> deciduous_forest = Optional.absent();
public static Optional<BiomeGenBase> eucalyptus_forest = Optional.absent();
public static Optional<BiomeGenBase> fen = Optional.absent();
public static Optional<BiomeGenBase> dense_forest = Optional.absent();
public static Optional<BiomeGenBase> flower_field = Optional.absent();
public static Optional<BiomeGenBase> frost_forest = Optional.absent();
public static Optional<BiomeGenBase> frozen_desert = Optional.absent();
public static Optional<BiomeGenBase> fungi_forest = Optional.absent();
public static Optional<BiomeGenBase> garden = Optional.absent();
public static Optional<BiomeGenBase> grassland = Optional.absent();
public static Optional<BiomeGenBase> grove = Optional.absent();
public static Optional<BiomeGenBase> heathland = Optional.absent();
public static Optional<BiomeGenBase> highland = Optional.absent();
public static Optional<BiomeGenBase> jade_cliffs = Optional.absent();
public static Optional<BiomeGenBase> lavender_fields = Optional.absent();
public static Optional<BiomeGenBase> marsh = Optional.absent();
public static Optional<BiomeGenBase> moor = Optional.absent();
public static Optional<BiomeGenBase> mountain = Optional.absent();
public static Optional<BiomeGenBase> origin_valley = Optional.absent();
public static Optional<BiomeGenBase> outback = Optional.absent();
public static Optional<BiomeGenBase> shrubland = Optional.absent();
public static Optional<BiomeGenBase> steppe = Optional.absent();
public static Optional<BiomeGenBase> thicket = Optional.absent();
public static Optional<BiomeGenBase> tundra = Optional.absent();
public static Optional<BiomeGenBase> woodland = Optional.absent();
public static Optional<BiomeGenBase> xeric_shrubland = Optional.absent();
// edge-biomes, sub-biomes and mutated-biomes
public static Optional<BiomeGenBase> glacier = Optional.absent();
public static Optional<BiomeGenBase> mountain_foothills = Optional.absent();
public static Optional<BiomeGenBase> canyon_ravine = Optional.absent();
public static RegistryKey<Biome> alps = register("alps");
public static RegistryKey<Biome> alps_foothills = register("alps_foothills");
public static RegistryKey<Biome> bamboo_blossom_grove = register("bamboo_blossom_grove");
public static RegistryKey<Biome> bayou = register("bayou");
public static RegistryKey<Biome> bayou_mangrove = register("bayou_mangrove");
public static RegistryKey<Biome> burnt_forest = register("burnt_forest");
public static RegistryKey<Biome> cherry_blossom_grove = register("cherry_blossom_grove");
public static RegistryKey<Biome> cold_desert = register("cold_desert");
public static RegistryKey<Biome> coniferous_forest = register("coniferous_forest");
public static RegistryKey<Biome> coniferous_lakes = register("coniferous_lakes");
public static RegistryKey<Biome> dead_forest = register("dead_forest");
public static RegistryKey<Biome> deep_bayou = register("deep_bayou");
public static RegistryKey<Biome> dense_marsh = register("dense_marsh");
public static RegistryKey<Biome> dense_woodland = register("dense_woodland");
public static RegistryKey<Biome> dryland = register("dryland");
public static RegistryKey<Biome> dry_boneyard = register("dry_boneyard");
public static RegistryKey<Biome> fir_clearing = register("fir_clearing");
public static RegistryKey<Biome> flower_meadow = register("flower_meadow");
public static RegistryKey<Biome> fungal_field = register("fungal_field");
public static RegistryKey<Biome> fungal_jungle = register("fungal_jungle");
public static RegistryKey<Biome> golden_prairie = register("golden_prairie");
public static RegistryKey<Biome> grassland = register("grassland");
public static RegistryKey<Biome> grassland_clover_patch = register("grassland_clover_patch");
public static RegistryKey<Biome> gravel_beach = register("gravel_beach");
public static RegistryKey<Biome> grove = register("grove");
public static RegistryKey<Biome> grove_clearing = register("grove_clearing");
public static RegistryKey<Biome> grove_lakes = register("grove_lakes");
public static RegistryKey<Biome> highland = register("highland");
public static RegistryKey<Biome> highland_crag = register("highland_crag");
public static RegistryKey<Biome> highland_moor = register("highland_moor");
public static RegistryKey<Biome> jade_cliffs = register("jade_cliffs");
public static RegistryKey<Biome> lavender_field = register("lavender_field");
public static RegistryKey<Biome> lavender_forest = register("lavender_forest");
public static RegistryKey<Biome> lush_desert = register("lush_desert");
public static RegistryKey<Biome> lush_savanna = register("lush_savanna");
public static RegistryKey<Biome> marsh = register("marsh");
public static RegistryKey<Biome> meadow = register("meadow");
public static RegistryKey<Biome> meadow_forest = register("meadow_forest");
public static RegistryKey<Biome> muskeg = register("muskeg");
public static RegistryKey<Biome> mystic_grove = register("mystic_grove");
public static RegistryKey<Biome> mystic_plains = register("mystic_plains");
public static RegistryKey<Biome> ominous_woods = register("ominous_woods");
public static RegistryKey<Biome> ominous_mire = register("ominous_mire");
public static RegistryKey<Biome> orchard = register("orchard");
public static RegistryKey<Biome> origin_valley = register("origin_valley");
public static RegistryKey<Biome> prairie = register("prairie");
public static RegistryKey<Biome> rainbow_hills = register("rainbow_hills");
public static RegistryKey<Biome> rainforest = register("rainforest");
public static RegistryKey<Biome> rainforest_cliffs = register("rainforest_cliffs");
public static RegistryKey<Biome> rainforest_floodplain = register("rainforest_floodplain");
public static RegistryKey<Biome> redwood_forest = register("redwood_forest");
public static RegistryKey<Biome> redwood_forest_edge = register("redwood_forest_edge");
public static RegistryKey<Biome> redwood_hills = register("redwood_hills");
public static RegistryKey<Biome> scrubland = register("scrubland");
public static RegistryKey<Biome> seasonal_forest = register("seasonal_forest");
public static RegistryKey<Biome> seasonal_orchard = register("seasonal_orchard");
public static RegistryKey<Biome> seasonal_pumpkin_patch = register("seasonal_pumpkin_patch");
public static RegistryKey<Biome> shroomy_wetland = register("shroomy_wetland");
public static RegistryKey<Biome> shrubland = register("shrubland");
public static RegistryKey<Biome> shrubland_hills = register("shrubland_hills");
public static RegistryKey<Biome> snowy_coniferous_forest = register("snowy_coniferous_forest");
public static RegistryKey<Biome> snowy_fir_clearing = register("snowy_fir_clearing");
public static RegistryKey<Biome> snowy_maple_forest = register("snowy_maple_forest");
public static RegistryKey<Biome> tall_dead_forest = register("tall_dead_forest");
public static RegistryKey<Biome> tropic_beach = register("tropic_beach");
public static RegistryKey<Biome> tropics = register("tropics");
public static RegistryKey<Biome> tundra = register("tundra");
public static RegistryKey<Biome> tundra_basin = register("tundra_basin");
public static RegistryKey<Biome> tundra_bog = register("tundra_bog");
public static RegistryKey<Biome> volcanic_plains = register("volcanic_plains");
public static RegistryKey<Biome> volcano = register("volcano");
public static RegistryKey<Biome> wasteland = register("wasteland");
public static RegistryKey<Biome> wetland = register("wetland");
public static RegistryKey<Biome> wetland_forest = register("wetland_forest");
public static RegistryKey<Biome> wooded_scrubland = register("wooded_scrubland");
public static RegistryKey<Biome> woodland = register("woodland");
public static RegistryKey<Biome> crystalline_chasm = register("crystalline_chasm");
public static RegistryKey<Biome> undergrowth = register("undergrowth");
public static RegistryKey<Biome> visceral_heap = register("visceral_heap");
public static RegistryKey<Biome> withered_abyss = register("withered_abyss");
private static RegistryKey<Biome> register(String name)
{
return RegistryKey.create(Registry.BIOME_REGISTRY, new ResourceLocation(BiomesOPlenty.MOD_ID, name));
}
}

View File

@ -1,14 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome;
public enum BiomeOwner
{
BIOMESOPLENTY, OTHER;
}

View File

@ -1,26 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome;
import java.util.Map;
import biomesoplenty.api.biome.generation.GenerationManager;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.IGenerator;
import biomesoplenty.common.enums.BOPClimates;
public interface IExtendedBiome
{
public BiomeOwner getBiomeOwner();
public void addGenerator(String name, GeneratorStage stage, IGenerator generator);
public GenerationManager getGenerationManager();
public Map<BOPClimates, Integer> getWeightMap();
public void clearWeights();
public void addWeight(BOPClimates climate, int weight);
}

View File

@ -1,100 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import java.util.Random;
import net.minecraft.util.BlockPos;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
public abstract class BOPGeneratorBase extends WorldGenerator implements IGenerator
{
private final String identifier;
private String name;
private GeneratorStage stage;
protected float amountPerChunk;
protected BOPGeneratorBase(float amountPerChunk)
{
this.identifier = GeneratorRegistry.getIdentifier((Class<? extends IGenerator>)this.getClass());
if (this.identifier == null)
{
throw new RuntimeException("The identifier for " + this.getClass().getCanonicalName() + " cannot be null!");
}
this.amountPerChunk = amountPerChunk;
}
protected static abstract class InnerBuilder<T extends InnerBuilder<T, G>, G extends BOPGeneratorBase>
{
protected T self() {return (T)this;}
protected float amountPerChunk;
public T amountPerChunk(float amountPerChunk) {this.amountPerChunk = amountPerChunk; return this.self();}
public abstract G create();
}
@Override
public void setName(String name)
{
this.name = name;
}
@Override
public void setStage(GeneratorStage stage)
{
this.stage = stage;
}
@Override
public String getName()
{
return this.name;
}
@Override
public GeneratorStage getStage()
{
return this.stage;
}
@Override
public final String getIdentifier()
{
return this.identifier;
}
public abstract BlockPos getScatterY(World world, Random random, int x, int z);
public int getAmountToScatter(Random random)
{
int amount = MathHelper.floor_float(this.amountPerChunk);
float remainder = this.amountPerChunk - amount;
if (random.nextFloat() < remainder) {amount++;}
return amount;
}
@Override
public void scatter(World world, Random random, BlockPos pos)
{
int amount = this.getAmountToScatter(random);
for (int i = 0; i < amount; i++)
{
int x = pos.getX() + random.nextInt(16) + 8;
int z = pos.getZ() + random.nextInt(16) + 8;
generate(world, random, this.getScatterY(world, random, x, z));
}
}
}

View File

@ -1,84 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import com.google.common.collect.ImmutableCollection;
import com.google.common.collect.ImmutableList;
public class GenerationManager
{
private Map<String, IGenerator> generators = new HashMap<String, IGenerator>();
public void addGenerator(String name, GeneratorStage stage, IGenerator generator)
{
if (this.generators.containsKey(name))
{
throw new RuntimeException("A generator with name " + name + " already exists!");
}
generator.setName(name);
generator.setStage(stage);
this.generators.put(name, generator);
}
public ImmutableCollection<IGenerator> getGeneratorsForStage(GeneratorStage stage)
{
ArrayList<IGenerator> out = new ArrayList<IGenerator>();
for (IGenerator generator : this.generators.values())
{
if (generator.getStage() == stage)
{
out.add(generator);
}
}
return ImmutableList.<IGenerator>copyOf(out);
}
public void removeGenerator(String name)
{
this.generators.remove(name);
}
public IGenerator getGenerator(String name)
{
return this.generators.get(name);
}
public void configureWith(String name, IConfigObj conf)
{
if (this.generators.containsKey(name))
{
if (conf.getBool("enable", true))
{
// configure the existing generator
this.generators.get(name).configure(conf);
}
else
{
// remove this generator
this.generators.remove(name);
}
}
else
{
// there was previously no generator of this name - attempt to add it
IGenerator generator = GeneratorRegistry.createGenerator(conf);
if (generator != null)
{
this.generators.put(name, generator);
}
}
}
}

View File

@ -1,67 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import java.util.HashMap;
import java.util.Map;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import com.google.common.collect.BiMap;
import com.google.common.collect.HashBiMap;
public class GeneratorRegistry
{
private static BiMap<String, Class<? extends IGenerator>> generatorClasses = HashBiMap.create();
private static Map<String, IGenerator.IGeneratorBuilder> generatorBuilders = new HashMap<String, IGenerator.IGeneratorBuilder>();
public static <T extends IGenerator> void registerGenerator(String identifier, Class<T> generatorClass, IGenerator.IGeneratorBuilder<T> builder)
{
generatorClasses.put(identifier, generatorClass);
generatorBuilders.put(identifier, builder);
}
public static String getIdentifier(Class<? extends IGenerator> generatorClass)
{
return generatorClasses.inverse().get(generatorClass);
}
public static Class<? extends IGenerator> getGeneratorClass(String identifier)
{
return generatorClasses.get(identifier);
}
public static IGenerator.IGeneratorBuilder getGeneratorBuilder(String identifier)
{
return generatorBuilders.get(identifier);
}
public static boolean generatorExists(String identifier)
{
return generatorClasses.containsValue(identifier);
}
public static IGenerator createGenerator(IConfigObj conf)
{
GeneratorStage stage = conf.getEnum("stage", GeneratorStage.class);
String identifier = conf.getString("type");
if (stage == null || identifier == null) {return null;}
IGenerator.IGeneratorBuilder builder = getGeneratorBuilder(identifier);
if (builder == null)
{
conf.addMessage("No generator is registered with type name " + identifier);
return null;
}
IGenerator generator = builder.create();
generator.setStage(stage);
generator.configure(conf);
return generator;
}
}

View File

@ -1,71 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import net.minecraftforge.event.terraingen.DecorateBiomeEvent.Decorate;
import com.google.gson.annotations.SerializedName;
public enum GeneratorStage
{
@SerializedName("pre")
PRE(null),
@SerializedName("big_shroom")
BIG_SHROOM(Decorate.EventType.BIG_SHROOM),
@SerializedName("cactus")
CACTUS(Decorate.EventType.CACTUS),
@SerializedName("clay")
CLAY(Decorate.EventType.CLAY),
@SerializedName("dead_bush")
DEAD_BUSH(Decorate.EventType.DEAD_BUSH),
@SerializedName("lilypad")
LILYPAD(Decorate.EventType.LILYPAD),
@SerializedName("flowers")
FLOWERS(Decorate.EventType.FLOWERS),
@SerializedName("grass")
GRASS(Decorate.EventType.GRASS),
@SerializedName("lake_water")
LAKE_WATER(Decorate.EventType.LAKE_WATER),
@SerializedName("lake_lava")
LAKE_LAVA(Decorate.EventType.LAKE_LAVA),
@SerializedName("pumpkin")
PUMPKIN(Decorate.EventType.PUMPKIN),
@SerializedName("reed")
REED(Decorate.EventType.REED),
@SerializedName("sand")
SAND(Decorate.EventType.SAND),
@SerializedName("sand_pass_2")
SAND_PASS2(Decorate.EventType.SAND_PASS2),
@SerializedName("shroom")
SHROOM(Decorate.EventType.SHROOM),
@SerializedName("tree")
TREE(Decorate.EventType.TREE),
@SerializedName("post")
POST(null),
@SerializedName("parent")
PARENT(null);
private Decorate.EventType decorateType;
private GeneratorStage(Decorate.EventType decorateType)
{
this.decorateType = decorateType;
}
public Decorate.EventType getDecorateType()
{
return this.decorateType;
}
public static GeneratorStage mapDecorateType(Decorate.EventType decorateType)
{
//Somewhat of a hack, requires the ordering of our enum to be the s
return decorateType != Decorate.EventType.CUSTOM ? GeneratorStage.values()[decorateType.ordinal() + 1] : null;
}
}

View File

@ -1,163 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import java.util.HashMap;
import java.util.Map.Entry;
import java.util.Random;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
public class GeneratorWeighted extends BOPGeneratorBase
{
public static class Builder implements IGeneratorBuilder<GeneratorWeighted>
{
protected float amountPerChunk = 1.0F;
public Builder amountPerChunk(float a) {this.amountPerChunk = a; return this;}
@Override
public GeneratorWeighted create()
{
return new GeneratorWeighted(this.amountPerChunk);
}
}
private HashMap<String, IGenerator> generators = new HashMap<String, IGenerator>();
private HashMap<IGenerator, Integer> weights = new HashMap<IGenerator, Integer>();
public GeneratorWeighted()
{
// default
this(1);
}
public GeneratorWeighted(float amountPerChunk)
{
super(amountPerChunk);
}
public void add(String name, int weight, IGenerator entry)
{
if (this.generators.containsKey(name))
{
throw new RuntimeException("A generator with name " + name + " already exists!");
}
if (weight < 1)
{
throw new IllegalArgumentException("Generator weight must be positive");
}
entry.setStage(GeneratorStage.PARENT);
this.generators.put(name, entry);
this.weights.put(entry, weight);
}
public void clear()
{
this.generators.clear();
this.weights.clear();
}
public IGenerator getGenerator(String name)
{
return this.generators.get(name);
}
public void removeGenerator(String name)
{
IGenerator generator = this.generators.get(name);
if (generator != null)
{
this.generators.remove(name);
this.weights.remove(generator);
}
}
public IGenerator getRandomGenerator(Random random)
{
if (this.weights.isEmpty())
{
throw new RuntimeException("GeneratorWeighted has no child generators");
}
int totalWeight = 0;
for (int weight : this.weights.values()) {totalWeight += weight;}
int j = random.nextInt(totalWeight);
for (Entry<IGenerator, Integer> entry : this.weights.entrySet())
{
j -= entry.getValue();
if (j < 0) {return entry.getKey();}
}
throw new RuntimeException("Shouldn't ever get here");
}
// never used - the scatter method is overriden
@Override
public BlockPos getScatterY(World world, Random random, int x, int z) {return null;}
@Override
public void scatter(World world, Random random, BlockPos pos)
{
int amount = this.getAmountToScatter(random);
for (int i = 0; i < amount; i++)
{
this.getRandomGenerator(random).scatter(world, random, pos);
}
}
@Override
public boolean generate(World world, Random random, BlockPos pos)
{
return this.getRandomGenerator(random).generate(world, random, pos);
}
@Override
public void configure(IConfigObj conf)
{
this.amountPerChunk = conf.getFloat("amountPerChunk", this.amountPerChunk);
IConfigObj confGenerators = conf.getObject("generators");
if (confGenerators != null)
{
for (String name : confGenerators.getKeys())
{
if (this.generators.containsKey(name))
{
IGenerator generator = this.getGenerator(name);
Integer weight = conf.getInt("weight", this.weights.get(generator));
if (weight.intValue() < 1)
{
// remove this generator if the weight is zero (or negative)
this.removeGenerator(name);
}
else
{
// adjust weight
this.weights.put(generator, weight);
// configure the existing generator
generator.configure(conf);
}
}
else
{
// there was previously no generator of this name - attempt to add it
Integer weight = conf.getInt("weight", null);
IGenerator generator = GeneratorRegistry.createGenerator(conf);
if (weight != null && generator != null)
{
this.add(name, weight, generator);
}
}
}
}
}
}

View File

@ -1,39 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.biome.generation;
import java.util.Random;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
public interface IGenerator
{
public void scatter(World world, Random random, BlockPos pos);
public boolean generate(World world, Random random, BlockPos pos);
public void setStage(GeneratorStage stage);
public void setName(String name);
/**A unique name use to classify the purpose of a generator. For example, emeralds and ruby use the
* same generator (and thus, have the same identifier) but have differing names.
*/
public String getName();
/**The identifier for this generator should be consistent across all instances of the same type*/
public String getIdentifier();
public GeneratorStage getStage();
public static interface IGeneratorBuilder<T extends IGenerator>
{
public T create();
}
public void configure(IConfigObj conf);
}

View File

@ -1,148 +1,346 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.block;
import net.minecraft.block.Block;
import net.minecraftforge.fluids.Fluid;
public class BOPBlocks
{
public static Block bamboo_thatching;
public static Block ash_block;
public static Block bamboo;
public static Block bone_segment;
public static Block coral;
public static Block seaweed;
public static Block gem_block;
public static Block gem_ore;
public static Block hive;
public static Block mushroom;
public static Block stone;
public static Block biome_block;
public static Block flower_0;
public static Block flower_1;
public static Block log_0;
public static Block log_1;
public static Block log_2;
public static Block log_3;
public static Block leaves_0;
public static Block leaves_1;
public static Block leaves_2;
public static Block leaves_3;
public static Block leaves_4;
public static Block leaves_5;
public static Block sapling_0;
public static Block sapling_1;
public static Block sapling_2;
// TODO fruit tree leaves and saplings
public static Block planks_0;
public static Block wood_slab_0;
public static Block wood_slab_1;
public static Block double_wood_slab_0;
public static Block double_wood_slab_1;
public static Block sacred_oak_stairs;
public static Block cherry_stairs;
public static Block dark_stairs;
public static Block fir_stairs;
public static Block ethereal_stairs;
public static Block magic_stairs;
public static Block mangrove_stairs;
public static Block palm_stairs;
public static Block redwood_stairs;
public static Block willow_stairs;
public static Block pine_stairs;
public static Block hellbark_stairs;
public static Block jacaranda_stairs;
public static Block mahogany_stairs;
public static Block sacred_oak_fence;
public static Block cherry_fence;
public static Block dark_fence;
public static Block fir_fence;
public static Block ethereal_fence;
public static Block magic_fence;
public static Block mangrove_fence;
public static Block palm_fence;
public static Block redwood_fence;
public static Block willow_fence;
public static Block pine_fence;
public static Block hellbark_fence;
public static Block jacaranda_fence;
public static Block mahogany_fence;
public static Block sacred_oak_fence_gate;
public static Block cherry_fence_gate;
public static Block dark_fence_gate;
public static Block fir_fence_gate;
public static Block ethereal_fence_gate;
public static Block magic_fence_gate;
public static Block mangrove_fence_gate;
public static Block palm_fence_gate;
public static Block redwood_fence_gate;
public static Block willow_fence_gate;
public static Block pine_fence_gate;
public static Block hellbark_fence_gate;
public static Block jacaranda_fence_gate;
public static Block mahogany_fence_gate;
public static Block sacred_oak_door;
public static Block cherry_door;
public static Block dark_door;
public static Block fir_door;
public static Block ethereal_door;
public static Block magic_door;
public static Block mangrove_door;
public static Block palm_door;
public static Block redwood_door;
public static Block willow_door;
public static Block pine_door;
public static Block hellbark_door;
public static Block jacaranda_door;
public static Block mahogany_door;
public static Block white_sand;
public static Block white_sandstone;
public static Block cut_white_sandstone;
public static Block cut_white_sandstone_slab;
public static Block chiseled_white_sandstone;
public static Block smooth_white_sandstone;
public static Block smooth_white_sandstone_slab;
public static Block smooth_white_sandstone_stairs;
public static Block white_sandstone_slab;
public static Block white_sandstone_stairs;
public static Block white_sandstone_wall;
public static Block orange_sand;
public static Block orange_sandstone;
public static Block cut_orange_sandstone;
public static Block cut_orange_sandstone_slab;
public static Block chiseled_orange_sandstone;
public static Block smooth_orange_sandstone;
public static Block smooth_orange_sandstone_slab;
public static Block smooth_orange_sandstone_stairs;
public static Block orange_sandstone_slab;
public static Block orange_sandstone_stairs;
public static Block orange_sandstone_wall;
public static Block black_sand;
public static Block black_sandstone;
public static Block cut_black_sandstone;
public static Block cut_black_sandstone_slab;
public static Block chiseled_black_sandstone;
public static Block smooth_black_sandstone;
public static Block smooth_black_sandstone_slab;
public static Block smooth_black_sandstone_stairs;
public static Block black_sandstone_slab;
public static Block black_sandstone_stairs;
public static Block black_sandstone_wall;
public static Block mud;
public static Block sand;
public static Block turnip_block;
public static Block flesh;
public static Block grass;
public static Block waterlily;
public static Block dirt;
public static Block stone_formations;
public static Block fruit_block;
public static Block ash_stone;
public static Block hard_sand;
public static Block hard_dirt;
public static Block hard_ice;
public static Block dried_dirt;
public static Block crag_rock;
public static Block mud_brick_block;
public static Block crystal;
public static Block other_slab;
public static Block double_other_slab;
public static Block mud_bricks;
public static Block mud_brick_slab;
public static Block mud_brick_stairs;
public static Block mud_brick_wall;
public static Block origin_grass_block;
public static Block dried_salt;
public static Block flesh;
public static Block nether_crystal_block;
public static Block nether_crystal;
public static Block toadstool_block;
public static Block glowshroom_block;
public static Block flower_vine;
public static Block ivy;
public static Block moss;
public static Block tree_moss;
public static Block wisteria;
public static Block origin_sapling;
public static Block origin_leaves;
public static Block flowering_oak_sapling;
public static Block flowering_oak_leaves;
public static Block rainbow_birch_sapling;
public static Block rainbow_birch_leaves;
public static Block yellow_autumn_sapling;
public static Block yellow_autumn_leaves;
public static Block orange_autumn_sapling;
public static Block orange_autumn_leaves;
public static Block maple_sapling;
public static Block maple_leaves;
public static Block plant_0;
public static Block plant_1;
public static Block double_plant;
public static Block fir_sapling;
public static Block fir_leaves;
public static Block fir_log;
public static Block stripped_fir_log;
public static Block fir_wood;
public static Block stripped_fir_wood;
public static Block fir_planks;
public static Block fir_slab;
public static Block fir_stairs;
public static Block fir_fence;
public static Block fir_fence_gate;
public static Block fir_door;
public static Block fir_trapdoor;
public static Block fir_pressure_plate;
public static Block fir_button;
public static Block fir_sign;
public static Block fir_wall_sign;
public static Block honey_block;
public static Block redwood_sapling;
public static Block redwood_leaves;
public static Block redwood_log;
public static Block stripped_redwood_log;
public static Block redwood_wood;
public static Block stripped_redwood_wood;
public static Block redwood_planks;
public static Block redwood_slab;
public static Block redwood_stairs;
public static Block redwood_fence;
public static Block redwood_fence_gate;
public static Block redwood_door;
public static Block redwood_trapdoor;
public static Block redwood_pressure_plate;
public static Block redwood_button;
public static Block redwood_sign;
public static Block redwood_wall_sign;
public static Block honey;
public static Fluid honey_fluid;
public static Block blood;
public static Fluid blood_fluid;
public static Block poison;
public static Fluid poison_fluid;
public static Block white_cherry_sapling;
public static Block white_cherry_leaves;
public static Block pink_cherry_sapling;
public static Block pink_cherry_leaves;
public static Block cherry_log;
public static Block stripped_cherry_log;
public static Block cherry_wood;
public static Block stripped_cherry_wood;
public static Block cherry_planks;
public static Block cherry_slab;
public static Block cherry_stairs;
public static Block cherry_fence;
public static Block cherry_fence_gate;
public static Block cherry_door;
public static Block cherry_trapdoor;
public static Block cherry_pressure_plate;
public static Block cherry_button;
public static Block cherry_sign;
public static Block cherry_wall_sign;
public static Block mahogany_sapling;
public static Block mahogany_leaves;
public static Block mahogany_log;
public static Block stripped_mahogany_log;
public static Block mahogany_wood;
public static Block stripped_mahogany_wood;
public static Block mahogany_planks;
public static Block mahogany_slab;
public static Block mahogany_stairs;
public static Block mahogany_fence;
public static Block mahogany_fence_gate;
public static Block mahogany_door;
public static Block mahogany_trapdoor;
public static Block mahogany_pressure_plate;
public static Block mahogany_button;
public static Block mahogany_sign;
public static Block mahogany_wall_sign;
public static Block jacaranda_sapling;
public static Block jacaranda_leaves;
public static Block jacaranda_log;
public static Block stripped_jacaranda_log;
public static Block jacaranda_wood;
public static Block stripped_jacaranda_wood;
public static Block jacaranda_planks;
public static Block jacaranda_slab;
public static Block jacaranda_stairs;
public static Block jacaranda_fence;
public static Block jacaranda_fence_gate;
public static Block jacaranda_door;
public static Block jacaranda_trapdoor;
public static Block jacaranda_pressure_plate;
public static Block jacaranda_button;
public static Block jacaranda_sign;
public static Block jacaranda_wall_sign;
public static Block palm_sapling;
public static Block palm_leaves;
public static Block palm_log;
public static Block stripped_palm_log;
public static Block palm_wood;
public static Block stripped_palm_wood;
public static Block palm_planks;
public static Block palm_slab;
public static Block palm_stairs;
public static Block palm_fence;
public static Block palm_fence_gate;
public static Block palm_door;
public static Block palm_trapdoor;
public static Block palm_pressure_plate;
public static Block palm_button;
public static Block palm_sign;
public static Block palm_wall_sign;
public static Block willow_sapling;
public static Block willow_leaves;
public static Block willow_log;
public static Block stripped_willow_log;
public static Block willow_wood;
public static Block stripped_willow_wood;
public static Block willow_planks;
public static Block willow_slab;
public static Block willow_stairs;
public static Block willow_fence;
public static Block willow_fence_gate;
public static Block willow_door;
public static Block willow_trapdoor;
public static Block willow_pressure_plate;
public static Block willow_button;
public static Block willow_sign;
public static Block willow_wall_sign;
public static Block dead_sapling;
public static Block dead_leaves;
public static Block dead_log;
public static Block stripped_dead_log;
public static Block dead_wood;
public static Block stripped_dead_wood;
public static Block dead_planks;
public static Block dead_slab;
public static Block dead_stairs;
public static Block dead_fence;
public static Block dead_fence_gate;
public static Block dead_door;
public static Block dead_trapdoor;
public static Block dead_pressure_plate;
public static Block dead_button;
public static Block dead_sign;
public static Block dead_wall_sign;
public static Block magic_sapling;
public static Block magic_leaves;
public static Block magic_log;
public static Block stripped_magic_log;
public static Block magic_wood;
public static Block stripped_magic_wood;
public static Block magic_planks;
public static Block magic_slab;
public static Block magic_stairs;
public static Block magic_fence;
public static Block magic_fence_gate;
public static Block magic_door;
public static Block magic_trapdoor;
public static Block magic_pressure_plate;
public static Block magic_button;
public static Block magic_sign;
public static Block magic_wall_sign;
public static Block umbran_sapling;
public static Block umbran_leaves;
public static Block umbran_log;
public static Block stripped_umbran_log;
public static Block umbran_wood;
public static Block stripped_umbran_wood;
public static Block umbran_planks;
public static Block umbran_slab;
public static Block umbran_stairs;
public static Block umbran_fence;
public static Block umbran_fence_gate;
public static Block umbran_door;
public static Block umbran_trapdoor;
public static Block umbran_pressure_plate;
public static Block umbran_button;
public static Block umbran_sign;
public static Block umbran_wall_sign;
public static Block hellbark_sapling;
public static Block hellbark_leaves;
public static Block hellbark_log;
public static Block stripped_hellbark_log;
public static Block hellbark_wood;
public static Block stripped_hellbark_wood;
public static Block hellbark_planks;
public static Block hellbark_slab;
public static Block hellbark_stairs;
public static Block hellbark_fence;
public static Block hellbark_fence_gate;
public static Block hellbark_door;
public static Block hellbark_trapdoor;
public static Block hellbark_pressure_plate;
public static Block hellbark_button;
public static Block hellbark_sign;
public static Block hellbark_wall_sign;
public static Block rose;
public static Block violet;
public static Block lavender;
public static Block wildflower;
public static Block orange_cosmos;
public static Block pink_daffodil;
public static Block pink_hibiscus;
public static Block glowflower;
public static Block wilted_lily;
public static Block burning_blossom;
public static Block blue_hydrangea;
public static Block goldenrod;
public static Block willow_vine;
public static Block spanish_moss;
public static Block spanish_moss_plant;
public static Block sprout;
public static Block bush;
public static Block clover;
public static Block huge_clover_petal;
public static Block dune_grass;
public static Block desert_grass;
public static Block dead_grass;
public static Block cattail;
public static Block barley;
public static Block reed;
public static Block watergrass;
public static Block mangrove_root;
public static Block dead_branch;
public static Block bramble;
public static Block toadstool;
public static Block glowshroom;
public static Block potted_origin_sapling;
public static Block potted_flowering_oak_sapling;
public static Block potted_rainbow_birch_sapling;
public static Block potted_yellow_autumn_sapling;
public static Block potted_orange_autumn_sapling;
public static Block potted_maple_sapling;
public static Block potted_fir_sapling;
public static Block potted_redwood_sapling;
public static Block potted_white_cherry_sapling;
public static Block potted_pink_cherry_sapling;
public static Block potted_mahogany_sapling;
public static Block potted_jacaranda_sapling;
public static Block potted_palm_sapling;
public static Block potted_willow_sapling;
public static Block potted_dead_sapling;
public static Block potted_magic_sapling;
public static Block potted_umbran_sapling;
public static Block potted_hellbark_sapling;
public static Block potted_rose;
public static Block potted_violet;
public static Block potted_lavender;
public static Block potted_wildflower;
public static Block potted_orange_cosmos;
public static Block potted_pink_daffodil;
public static Block potted_pink_hibiscus;
public static Block potted_glowflower;
public static Block potted_wilted_lily;
public static Block potted_burning_blossom;
public static Block potted_sprout;
public static Block potted_clover;
public static Block potted_toadstool;
public static Block potted_glowshroom;
}

View File

@ -1,43 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.block;
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
public class BlockQueries
{
public static IBlockPosQuery anything;
public static IBlockPosQuery nothing;
public static IBlockPosQuery hasWater;
public static IBlockPosQuery airAbove;
public static IBlockPosQuery breakable;
public static IBlockPosQuery airOrLeaves;
public static IBlockPosQuery surfaceBlocks;
public static IBlockPosQuery groundBlocks;
public static IBlockPosQuery fertile;
public static IBlockPosQuery fertileOrNetherrack;
public static IBlockPosQuery sustainsCave;
public static IBlockPosQuery sustainsNether;
public static IBlockPosQuery endish;
public static IBlockPosQuery hellish;
public static IBlockPosQuery litFertile;
public static IBlockPosQuery litBeach;
public static IBlockPosQuery litFertileWaterside;
public static IBlockPosQuery litSand;
public static IBlockPosQuery litDry;
public static IBlockPosQuery litFertileOrDry;
public static IBlockPosQuery spectralMoss;
public static IBlockPosQuery fertileSeaBed;
public static IBlockPosQuery underwater;
public static IBlockPosQuery suitableForReed;
public static IBlockPosQuery rootsCanDigThrough;
}

View File

@ -1,23 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.block;
import net.minecraft.block.properties.IProperty;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemBlock;
public interface IBOPBlock {
public Class<? extends ItemBlock> getItemClass();
public int getItemRenderColor(IBlockState state, int tintIndex);
public IProperty[] getPresetProperties();
public IProperty[] getNonRenderingProperties();
public String getStateName(IBlockState state);
}

View File

@ -1,18 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.block;
import net.minecraft.util.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraftforge.common.EnumPlantType;
public interface ISustainsPlantType
{
public boolean canSustainPlantType(IBlockAccess world, BlockPos pos, EnumPlantType plantType);
}

View File

@ -0,0 +1,16 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.entity;
import net.minecraft.entity.EntityType;
import net.minecraft.entity.item.BoatEntity;
public class BOPEntities
{
public static EntityType<? extends BoatEntity> boat_bop;
}

View File

@ -0,0 +1,211 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.enums;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.common.util.biome.BiomeUtil;
import biomesoplenty.init.ModBiomes;
import com.google.common.collect.ImmutableList;
import com.google.common.collect.ImmutableSet;
import com.google.common.collect.Lists;
import com.google.common.collect.Sets;
import net.minecraft.util.RegistryKey;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biomes;
import net.minecraft.world.gen.INoiseRandom;
import net.minecraftforge.common.BiomeManager;
import net.minecraftforge.common.BiomeManager.BiomeType;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.Set;
import java.util.stream.Collectors;
public enum BOPClimates
{
ICE_CAP (BiomeType.ICY),
TUNDRA (BiomeType.ICY),
WET_BOREAL (BiomeType.COOL),
DRY_BOREAL (BiomeType.COOL),
WET_TEMPERATE (BiomeType.COOL),
DRY_TEMPERATE (BiomeType.WARM),
COOL_TEMPERATE (BiomeType.COOL),
WARM_TEMPERATE (BiomeType.WARM),
SUBTROPICAL (BiomeType.WARM),
TROPICAL (BiomeType.DESERT),
MEDITERRANEAN (BiomeType.WARM),
SAVANNA (BiomeType.DESERT),
HOT_DESERT (BiomeType.DESERT),
WASTELAND (null),
NETHER (null);
public final BiomeType biomeType;
private int totalBiomesWeight;
private int totalIslandBiomesWeight;
private ArrayList<WeightedBiomeEntry> landBiomes = Lists.newArrayList();
private ArrayList<WeightedBiomeEntry> islandBiomes = Lists.newArrayList();
BOPClimates(BiomeType biomeType)
{
this.biomeType = biomeType;
}
public BOPClimates addBiome(int weight, RegistryKey<Biome> biome)
{
return this.addBiome(new WeightedBiomeEntry(weight, biome));
}
public BOPClimates addBiome(WeightedBiomeEntry biomeEntry)
{
this.totalBiomesWeight += biomeEntry.weight;
this.landBiomes.add(biomeEntry);
return this;
}
public BOPClimates addIslandBiome(int weight, RegistryKey<Biome> biome)
{
return this.addIslandBiome(new WeightedBiomeEntry(weight, biome));
}
public BOPClimates addIslandBiome(WeightedBiomeEntry biomeEntry)
{
this.totalIslandBiomesWeight += biomeEntry.weight;
this.islandBiomes.add(biomeEntry);
return this;
}
public RegistryKey<Biome> getRandomBiome(INoiseRandom context, RegistryKey<Biome> fallback)
{
if (this.totalBiomesWeight == 0)
return fallback;
int weight = context.nextRandom(this.totalBiomesWeight);
Iterator<WeightedBiomeEntry> iterator = this.landBiomes.iterator();
WeightedBiomeEntry item;
do
{
item = iterator.next();
weight -= item.weight;
}
while (weight >= 0);
return item.biome;
}
public RegistryKey<Biome> getRandomIslandBiome(INoiseRandom context, RegistryKey<Biome> fallback)
{
if (this.totalIslandBiomesWeight == 0)
return fallback;
int weight = context.nextRandom(this.totalIslandBiomesWeight);
Iterator<WeightedBiomeEntry> iterator = this.islandBiomes.iterator();
WeightedBiomeEntry item;
do
{
item = iterator.next();
weight -= item.weight;
}
while (weight >= 0);
return item.biome;
}
public RegistryKey<Biome> getRandomOceanBiome(INoiseRandom context, boolean deep)
{
return (deep ? Biomes.DEEP_OCEAN : Biomes.OCEAN);
}
public ImmutableList<WeightedBiomeEntry> getLandBiomes()
{
return this.landBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.landBiomes);
}
public ImmutableList<WeightedBiomeEntry> getIslandBiomes()
{
return this.islandBiomes.isEmpty() ? ImmutableList.of(this.getDefaultWeightedBiomeEntry()) : ImmutableList.copyOf(this.islandBiomes);
}
private WeightedBiomeEntry getDefaultWeightedBiomeEntry()
{
return new WeightedBiomeEntry(100, Biomes.OCEAN);
}
private static BOPClimates[] values = BOPClimates.values();
public static BOPClimates lookup(int i) {return values[i];}
// map temperature and rainfall to climates
// temperature values from 0 (cold) to 8 (hot) and rainfall values from 0 (wet) to 11 (dry), index is (temperatureValue * 12) + rainfallValue
// we will contrive to make any combination equally likely, so the overall rarity of each climate is in proportion to the number of times it appears in the array
private static final BOPClimates[] climateMapping = new BOPClimates[]
{
TUNDRA, TUNDRA, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, ICE_CAP, TUNDRA, TUNDRA,
WET_BOREAL, WET_BOREAL, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, TUNDRA, DRY_BOREAL, DRY_BOREAL,
WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, WET_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL, DRY_BOREAL,
WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE,
WET_TEMPERATE, WET_TEMPERATE, WET_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, COOL_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE, DRY_TEMPERATE,
SUBTROPICAL, SUBTROPICAL, WET_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, DRY_TEMPERATE, SAVANNA, SAVANNA,
SUBTROPICAL, SUBTROPICAL, SUBTROPICAL, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, WARM_TEMPERATE, SAVANNA, SAVANNA, SAVANNA,
TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT,
TROPICAL, TROPICAL, SUBTROPICAL, SUBTROPICAL, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, MEDITERRANEAN, SAVANNA, SAVANNA, HOT_DESERT, HOT_DESERT
};
public static int[] getClimateMappingInts()
{
// 9 temperature values, 12 rainfall values, 12 * 9 = 108
int[] out = new int[108];
for (int i = 0; i < 108; i++)
{
out[i] = climateMapping[i].ordinal();
}
return out;
}
public static ImmutableSet<RegistryKey<Biome>> getOverworldBiomes()
{
Set<RegistryKey<Biome>> set = Sets.newHashSet();
for (BOPClimates climate : BOPClimates.values())
{
if (climate == BOPClimates.NETHER)
{
continue;
}
set.addAll(climate.getLandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet()));
set.addAll(climate.getIslandBiomes().stream().map(weightedBiomeEntry -> weightedBiomeEntry.biome).collect(Collectors.toSet()));
}
ModBiomes.subBiomes.values().forEach(weightedSubBiome -> set.add(weightedSubBiome.biome));
return ImmutableSet.copyOf(set);
}
public static class WeightedBiomeEntry
{
public final int weight;
public final RegistryKey<Biome> biome;
public WeightedBiomeEntry(int weight, RegistryKey<Biome> biome)
{
this.weight = weight;
this.biome = biome;
}
}
// for debugging purposes
public static void printWeights()
{
for (BOPClimates climate : BOPClimates.values())
{
for (WeightedBiomeEntry entry : climate.landBiomes)
{
System.out.println(climate.name()+" "+entry.biome.location()+" "+entry.weight);
}
}
}
}

View File

@ -1,27 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.item;
import net.minecraft.item.Item.ToolMaterial;
import net.minecraft.item.ItemArmor.ArmorMaterial;
public class BOPItemHelper
{
public static ArmorMaterial wading_boots_material;
public static ArmorMaterial flippers_material;
public static ArmorMaterial plain_flower_band_material;
public static ArmorMaterial lush_flower_band_material;
public static ArmorMaterial exotic_flower_band_material;
public static ArmorMaterial dull_flower_band_material;
public static ArmorMaterial mud_armor_material;
public static ArmorMaterial amethyst_armor_material;
public static ToolMaterial mud_tool_material;
public static ToolMaterial amethyst_tool_material;
}

View File

@ -1,124 +1,32 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.item;
import net.minecraft.item.Item;
public class BOPItems
public class BOPItems
{
public static Item berries;
public static Item shroompowder;
public static Item wildcarrots;
public static Item peach;
public static Item saladfruit;
public static Item saladveggie;
public static Item saladshroom;
public static Item earth;
public static Item persimmon;
public static Item filled_honeycomb;
public static Item ambrosia;
public static Item turnip;
public static Item pear;
public static Item ricebowl;
public static Item fleshchunk;
public static Item mudball;
public static Item turnip_seeds;
public static Item crystal_shard;
public static Item honeycomb;
public static Item gem;
public static Item ash;
public static Item bop_icon;
public static Item mud_ball;
public static Item mud_brick;
public static Item blue_dye;
public static Item brown_dye;
public static Item green_dye;
public static Item white_dye;
public static Item black_dye;
public static Item ghastly_soul;
public static Item pixie_dust;
public static Item ichor;
public static Item pinecone;
public static Item other_slab;
public static Item dart;
public static Item dart_blower;
public static Item sacred_oak_door;
public static Item cherry_door;
public static Item dark_door;
public static Item fir_door;
public static Item ethereal_door;
public static Item magic_door;
public static Item mangrove_door;
public static Item palm_door;
public static Item redwood_door;
public static Item willow_door;
public static Item pine_door;
public static Item hellbark_door;
public static Item jacaranda_door;
public static Item mahogany_door;
public static Item wood_slab_0;
public static Item wood_slab_1;
public static Item wading_boots;
public static Item flippers;
public static Item plain_flower_band;
public static Item lush_flower_band;
public static Item exotic_flower_band;
public static Item dull_flower_band;
public static Item mud_helmet;
public static Item mud_chestplate;
public static Item mud_leggings;
public static Item mud_boots;
public static Item amethyst_helmet;
public static Item amethyst_chestplate;
public static Item amethyst_leggings;
public static Item amethyst_boots;
public static Item mud_axe;
public static Item mud_hoe;
public static Item mud_pickaxe;
public static Item mud_shovel;
public static Item mud_sword;
public static Item amethyst_axe;
public static Item amethyst_hoe;
public static Item amethyst_pickaxe;
public static Item amethyst_shovel;
public static Item amethyst_sword;
public static Item mud_scythe;
public static Item wood_scythe;
public static Item stone_scythe;
public static Item iron_scythe;
public static Item gold_scythe;
public static Item diamond_scythe;
public static Item amethyst_scythe;
public static Item biome_finder;
public static Item biome_essence;
public static Item enderporter;
public static Item jar_empty;
public static Item jar_filled;
public static Item honey_bucket;
public static Item blood_bucket;
public static Item poison_bucket;
public static Item record_wanderer;
public static Item record_corruption;
public static Item spawn_egg;
// TODO: public static Item ancientStaff;
// TODO: public static Item bop_bucket;
}
public static Item fir_boat;
public static Item redwood_boat;
public static Item cherry_boat;
public static Item mahogany_boat;
public static Item jacaranda_boat;
public static Item palm_boat;
public static Item willow_boat;
public static Item dead_boat;
public static Item magic_boat;
public static Item umbran_boat;
public static Item hellbark_boat;
public static Item music_disc_wanderer;
}

View File

@ -1,6 +1,13 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.particle;
public enum BOPParticleTypes
{
PIXIETRAIL, DANDELION, MUD, PLAYER_TRAIL;
}
MUD
}

View File

@ -1,19 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.potion;
import net.minecraft.potion.Potion;
public class BOPPotions
{
public static Potion paralysis;
public static Potion possession;
}

View File

@ -0,0 +1,15 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.api.sound;
import net.minecraft.util.SoundEvent;
public class BOPSounds
{
public static SoundEvent music_disc_wanderer;
}

View File

@ -0,0 +1,141 @@
/**Copied from Twilight Forest and modified with permission**/
package biomesoplenty.client;
import biomesoplenty.core.BiomesOPlenty;
import com.google.common.base.Joiner;
import net.minecraft.resources.ResourcePack;
import net.minecraft.resources.ResourcePackFileNotFoundException;
import net.minecraft.resources.ResourcePackType;
import net.minecraft.resources.data.IMetadataSectionSerializer;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.fml.loading.moddiscovery.ModFile;
import javax.annotation.Nullable;
import java.io.IOException;
import java.io.InputStream;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.StandardOpenOption;
import java.util.Collection;
import java.util.Collections;
import java.util.Set;
import java.util.function.Predicate;
import java.util.stream.Collectors;
@OnlyIn(Dist.CLIENT)
public class BOPClassicPack extends ResourcePack
{
private final ModFile modFile;
private static final String subDir = "classic/";
public BOPClassicPack(ModFile modFile)
{
super(modFile.getFilePath().toFile());
this.modFile = modFile;
}
@Override
public Set<String> getNamespaces(ResourcePackType type)
{
try
{
Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath();
return Files.walk(root,1).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 0).map(p->p.toString().replaceAll("/$","")).filter(s -> !s.isEmpty()).collect(Collectors.toSet());
}
catch (Throwable t)
{
BiomesOPlenty.logger.error("BOPClassicPack failed to collect resource namespaces!", t);
return Collections.emptySet();
}
}
@Override
protected InputStream getResource(String location) throws IOException
{
final Path path = modFile.getLocator().findPath(modFile, subDir + location);
if (!Files.exists(path))
{
BiomesOPlenty.logger.error("File does not exist!");
throw new ResourcePackFileNotFoundException(path.toFile(), location);
}
return Files.newInputStream(path, StandardOpenOption.READ);
}
@Override
protected boolean hasResource(String resourcePath)
{
return Files.exists(modFile.getLocator().findPath(modFile, subDir + resourcePath));
}
@Override
public Collection<ResourceLocation> getResources(ResourcePackType type, String namespaceIn, String pathIn, int maxDepthIn, Predicate<String> filterIn)
{
try
{
Path root = modFile.getLocator().findPath(modFile, subDir + type.getDirectory()).toAbsolutePath();
Path inputPath = root.getFileSystem().getPath(pathIn);
return Files.walk(root).map(path -> root.relativize(path.toAbsolutePath())).filter(path -> path.getNameCount() > 1 && path.getNameCount() - 1 <= maxDepthIn).filter(path -> !path.toString().endsWith(".mcmeta")).filter(path -> path.subpath(1, path.getNameCount()).startsWith(inputPath)).filter(path -> filterIn.test(path.getFileName().toString())).map(path -> new ResourceLocation(path.getName(0).toString(), Joiner.on('/').join(path.subpath(1, Math.min(maxDepthIn, path.getNameCount()))))).collect(Collectors.toList());
}
catch (IOException e)
{
return Collections.emptyList();
}
}
@Override
public void close() { }
@Override
public String getName()
{
return "BOP Programmer Art";
}
@Nullable
@Override
public <T> T getMetadataSection(IMetadataSectionSerializer<T> serializer) throws IOException
{
InputStream inputStream = getResource("pack.mcmeta");
Throwable throwable = null;
T resourceMetaData;
try
{
resourceMetaData = getMetadataFromStream(serializer, inputStream);
}
catch (Throwable t)
{
throwable = t;
throw t;
}
finally
{
if (inputStream != null)
{
if (throwable != null)
{
try
{
inputStream.close();
}
catch (Throwable t)
{
throwable.addSuppressed(t);
}
}
else
{
inputStream.close();
}
}
}
return resourceMetaData;
}
}

View File

@ -1,561 +0,0 @@
package biomesoplenty.client.gui;
import java.io.IOException;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiCreateWorld;
import net.minecraft.client.gui.GuiListButton;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiSlider;
import net.minecraft.client.gui.GuiTextField;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.Tessellator;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.BOPWorldSettings.BiomeSize;
import biomesoplenty.common.world.BOPWorldSettings.LandMassScheme;
import biomesoplenty.common.world.BOPWorldSettings.RainfallVariationScheme;
import biomesoplenty.common.world.BOPWorldSettings.TemperatureVariationScheme;
import com.google.common.base.Predicate;
import com.google.common.primitives.Floats;
@SideOnly(Side.CLIENT)
public class GuiBOPConfigureWorld extends GuiScreen implements GuiSlider.FormatHelper, GuiBOPPageList.GuiResponder
{
private GuiCreateWorld parentScreen;
protected String screenTitle = "Customize World Settings";
protected String pageInfo = "Page 1 of 3";
protected String page0Title = "Basic Settings";
protected String[] pageNames;
private GuiBOPPageManager pageManager;
//Navigation buttons, required on all pages
private GuiButton doneButton;
private GuiButton defaultsButton;
private GuiButton prevButton;
private GuiButton nextButton;
private GuiButton yesButton;
private GuiButton noButton;
private int modalAction = 0;
private boolean field_175340_C = false;
private Predicate validFloatPredicate = new Predicate()
{
public boolean tryParseValidFloat(String p_178956_1_)
{
Float f = Floats.tryParse(p_178956_1_);
return p_178956_1_.length() == 0 || f != null && Floats.isFinite(f.floatValue()) && f.floatValue() >= 0.0F;
}
@Override
public boolean apply(Object p_apply_1_)
{
return this.tryParseValidFloat((String)p_apply_1_);
}
};
private BOPWorldSettings settings;
public GuiBOPConfigureWorld(GuiScreen parentScreen, String settingsStringIn)
{
this.parentScreen = (GuiCreateWorld)parentScreen;
if (settingsStringIn.isEmpty())
{
this.settings = new BOPWorldSettings();
} else {
this.settings = new BOPWorldSettings(settingsStringIn);
}
}
private static enum Actions
{
PREVIOUS (301),
NEXT (302),
DEFAULTS (303),
DONE (304),
YES (305),
NO (306);
private int id;
private Actions(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public static Actions fromId(int id)
{
for (Actions action : Actions.values())
{
if (action.id == id)
{
return action;
}
}
return null;
}
}
@Override
public void initGui()
{
this.screenTitle = I18n.format("options.customizeTitle", new Object[0]);
this.buttonList.clear();
this.buttonList.add(this.prevButton = new GuiButton(Actions.PREVIOUS.getId(), 20, 5, 80, 20, I18n.format("createWorld.customize.custom.prev", new Object[0])));
this.buttonList.add(this.nextButton = new GuiButton(Actions.NEXT.getId(), this.width - 100, 5, 80, 20, I18n.format("createWorld.customize.custom.next", new Object[0])));
this.buttonList.add(this.defaultsButton = new GuiButton(Actions.DEFAULTS.getId(), this.width / 2 - 187, this.height - 27, 90, 20, I18n.format("createWorld.customize.custom.defaults", new Object[0])));
this.buttonList.add(this.doneButton = new GuiButton(Actions.DONE.getId(), this.width / 2 + 98, this.height - 27, 90, 20, I18n.format("gui.done", new Object[0])));
this.yesButton = new GuiButton(Actions.YES.getId(), this.width / 2 - 55, 160, 50, 20, I18n.format("gui.yes", new Object[0]));
this.yesButton.visible = false;
this.buttonList.add(this.yesButton);
this.noButton = new GuiButton(Actions.NO.getId(), this.width / 2 + 5, 160, 50, 20, I18n.format("gui.no", new Object[0]));
this.noButton.visible = false;
this.buttonList.add(this.noButton);
this.setupPages();
}
@Override
public void handleMouseInput() throws IOException
{
super.handleMouseInput();
this.pageManager.getActivePage().handleMouseInput();
}
@Override
protected void mouseClicked(int mouseX, int mouseY, int mouseButton) throws IOException
{
super.mouseClicked(mouseX, mouseY, mouseButton);
if (this.modalAction == 0 && !this.field_175340_C)
{
this.pageManager.getActivePage().mouseClicked(mouseX, mouseY, mouseButton);
}
}
@Override
protected void mouseReleased(int mouseX, int mouseY, int state)
{
super.mouseReleased(mouseX, mouseY, state);
if (this.field_175340_C)
{
this.field_175340_C = false;
}
else if (this.modalAction == 0)
{
this.pageManager.getActivePage().mouseReleased(mouseX, mouseY, state);
}
}
private static enum GuiEntries
{
TEMP_SCHEME (101),
GENERATE_BOP_GEMS (102),
AMPLITUDE (104),
BIOME_SIZE (105),
LAND_SCHEME (106),
RAIN_SCHEME (107);
private int id;
private GuiEntries(int id)
{
this.id = id;
}
public int getId()
{
return this.id;
}
public static GuiEntries fromId(int id)
{
for (GuiEntries entry : GuiEntries.values())
{
if (entry.id == id)
{
return entry;
}
}
return null;
}
}
private void setupPages()
{
this.pageNames = new String[3];
this.pageNames[0] = "World";
GuiBOPPageList.GuiFieldEntry[] page0Fields = new GuiBOPPageList.GuiFieldEntry[] {
new GuiBOPPageList.GuiEnumButtonEntry<BiomeSize>(GuiEntries.BIOME_SIZE.getId(), "Biome Size: %s", true, this.settings.biomeSize),
new GuiBOPPageList.GuiEnumButtonEntry<LandMassScheme>(GuiEntries.LAND_SCHEME.getId(), "Land Mass: %s", true, this.settings.landScheme),
new GuiBOPPageList.GuiEnumButtonEntry<TemperatureVariationScheme>(GuiEntries.TEMP_SCHEME.getId(), "Temperature: %s", true, this.settings.tempScheme),
new GuiBOPPageList.GuiEnumButtonEntry<RainfallVariationScheme>(GuiEntries.RAIN_SCHEME.getId(), "Rainfall: %s", true, this.settings.rainScheme),
new GuiBOPPageList.GuiSlideEntry(GuiEntries.AMPLITUDE.getId(), "Amplitude", true, this, 0.2F, 3.0F, this.settings.amplitude)
};
this.pageNames[1] = "Biomes";
GuiBOPPageList.GuiFieldEntry[] page1Fields = new GuiBOPPageList.GuiFieldEntry[] {
};
this.pageNames[2] = "Features";
GuiBOPPageList.GuiFieldEntry[] page2Fields = new GuiBOPPageList.GuiFieldEntry[] {
new GuiBOPPageList.GuiButtonEntry(GuiEntries.GENERATE_BOP_GEMS.getId(), "Generate BOP gems", true, this.settings.generateBopGems)
};
this.pageManager = new GuiBOPPageManager(createTableForFields(page0Fields, page1Fields, page2Fields));
this.pageManager.setup();
this.showNewPage();
}
private GuiBOPPageTable[] createTableForFields(GuiBOPPageList.GuiFieldEntry[]... fieldGroup)
{
GuiBOPPageTable[] output = new GuiBOPPageTable[fieldGroup.length];
for (int i = 0; i < fieldGroup.length; i++)
{
GuiBOPPageList.GuiFieldEntry[] fields = fieldGroup[i];
output[i] = new GuiBOPPageTable(this.width, this.height, 32, this.height - 32, 25, i, this, fields);
}
return output;
}
public String serialize()
{
return this.settings.toString().replace("\n", "");
}
@Override
public String getText(int id, String name, float value)
{
return name + ": " + this.stringFormatFloat(id, value);
}
private String stringFormatFloat(int fieldId, float value)
{
GuiEntries entry = GuiEntries.fromId(fieldId);
if (entry == null) {return "";}
switch (entry)
{
case AMPLITUDE:
return String.format("%5.3f", new Object[] {Float.valueOf(value)});
default:
return "";
}
}
@Override
public void handleEnumSelection(int fieldId, int ordinal)
{
GuiEntries entry = GuiEntries.fromId(fieldId);
if (entry == null) {return;}
switch (entry)
{
case LAND_SCHEME:
LandMassScheme[] land_values = LandMassScheme.values();
this.settings.landScheme = land_values[ordinal % land_values.length];
break;
case TEMP_SCHEME:
TemperatureVariationScheme[] temp_values = TemperatureVariationScheme.values();
this.settings.tempScheme = temp_values[ordinal % temp_values.length];
break;
case RAIN_SCHEME:
RainfallVariationScheme[] rain_values = RainfallVariationScheme.values();
this.settings.rainScheme = rain_values[ordinal % rain_values.length];
break;
case BIOME_SIZE:
BiomeSize[] size_values = BiomeSize.values();
this.settings.biomeSize = size_values[ordinal % size_values.length];
break;
default:
break;
}
System.out.println("settings currently: "+this.settings.toJson());
}
@Override
public void handleBooleanSelection(int fieldId, boolean value)
{
GuiEntries entry = GuiEntries.fromId(fieldId);
if (entry == null) {return;}
switch (entry)
{
case GENERATE_BOP_GEMS:
this.settings.generateBopGems = value;
break;
default:
break;
}
System.out.println("settings currently: "+this.settings.toJson());
}
@Override
public void handleFloatSelection(int fieldId, float value)
{
GuiEntries entry = GuiEntries.fromId(fieldId);
if (entry == null) {return;}
switch (entry)
{
case AMPLITUDE:
this.settings.amplitude = value;
break;
default:
break;
}
System.out.println("settings currently: "+this.settings.toJson());
}
@Override
public void handleStringSelection(int fieldId, String value)
{
;
}
@Override
public void handleIntSelection(int fieldId, int value)
{
;
}
// These 3 are the original functions required by GuiPageButtonList.GuiResponder - just pass off to the better named functions
@Override
public void func_175319_a(int fieldId, String value) {this.handleStringSelection(fieldId, value);}
@Override
public void onTick(int fieldId, float value) {this.handleFloatSelection(fieldId, value);}
@Override
public void func_175321_a(int fieldId, boolean value) {this.handleBooleanSelection(fieldId, value);}
@Override
protected void actionPerformed(GuiButton button) throws IOException
{
if (button.enabled)
{
Actions action = Actions.fromId(button.id);
if (action == null) {return;}
switch (action)
{
case DONE:
this.parentScreen.chunkProviderSettingsJson = this.settings.toJson();
System.out.println("settings sent to world screen "+this.parentScreen.chunkProviderSettingsJson);
this.mc.displayGuiScreen(this.parentScreen);
break;
case PREVIOUS:
this.pageManager.gotToPrevPage(); // prev page
this.showNewPage();
break;
case NEXT:
this.pageManager.goToNextPage(); // next page
this.showNewPage();
break;
case DEFAULTS:
this.confirmSetDefaults(button.id);
break;
case YES:
this.handleModalClose();
break;
case NO:
this.modalAction = 0;
this.handleModalClose();
}
}
}
private void doSetDefaults()
{
this.settings.setDefault();
this.setupPages();
}
private void confirmSetDefaults(int actionId)
{
this.modalAction = actionId;
this.showModal(true);
}
private void handleModalClose() throws IOException
{
Actions action = Actions.fromId(this.modalAction);
if (action != null) {
switch (action)
{
case DONE:
this.actionPerformed((GuiListButton)this.pageManager.getActivePage().getGui(300));
break;
case DEFAULTS:
this.doSetDefaults();
break;
default:
break;
}
}
this.modalAction = 0;
this.field_175340_C = true;
this.showModal(false);
}
private void showModal(boolean flag)
{
this.yesButton.visible = flag;
this.noButton.visible = flag;
this.doneButton.enabled = !flag;
this.prevButton.enabled = !flag;
this.nextButton.enabled = !flag;
this.defaultsButton.enabled = !flag;
}
private void showNewPage()
{
this.prevButton.enabled = this.pageManager.getActivePage().pageNumber != 0;
this.nextButton.enabled = this.pageManager.getActivePage().pageNumber != this.pageManager.getNumPages() - 1;
this.pageInfo = I18n.format("book.pageIndicator", new Object[] {Integer.valueOf(this.pageManager.getActivePage().pageNumber + 1), Integer.valueOf(this.pageManager.getNumPages())});
this.page0Title = this.pageNames[this.pageManager.getActivePage().pageNumber];
}
@Override
protected void keyTyped(char typedChar, int keyCode) throws IOException
{
super.keyTyped(typedChar, keyCode);
if (this.modalAction == 0)
{
switch (keyCode)
{
case 200:
this.func_175327_a(1.0F);
break;
case 208:
this.func_175327_a(-1.0F);
break;
default:
this.pageManager.getActivePage().keyTyped(typedChar, keyCode);
}
}
}
private void func_175327_a(float p_175327_1_)
{
Gui gui = this.pageManager.getActivePage().getFocusedGuiElement();
if (gui instanceof GuiTextField)
{
float f1 = p_175327_1_;
if (GuiScreen.isShiftKeyDown())
{
f1 = p_175327_1_ * 0.1F;
if (GuiScreen.isCtrlKeyDown())
{
f1 *= 0.1F;
}
}
else if (GuiScreen.isCtrlKeyDown())
{
f1 = p_175327_1_ * 10.0F;
if (GuiScreen.isAltKeyDown())
{
f1 *= 10.0F;
}
}
GuiTextField guitextfield = (GuiTextField)gui;
Float f2 = Floats.tryParse(guitextfield.getText());
if (f2 != null)
{
f2 = Float.valueOf(f2.floatValue() + f1);
int i = guitextfield.getId();
String s = this.stringFormatFloat(guitextfield.getId(), f2.floatValue());
guitextfield.setText(s);
this.func_175319_a(i, s);
}
}
}
@Override
public void drawScreen(int mouseX, int mouseY, float partialTicks)
{
this.drawDefaultBackground();
this.pageManager.getActivePage().drawScreen(mouseX, mouseY, partialTicks);
this.drawCenteredString(this.fontRendererObj, this.screenTitle, this.width / 2, 2, 16777215);
this.drawCenteredString(this.fontRendererObj, this.pageInfo, this.width / 2, 12, 16777215);
this.drawCenteredString(this.fontRendererObj, this.page0Title, this.width / 2, 22, 16777215);
super.drawScreen(mouseX, mouseY, partialTicks);
if (this.modalAction != 0)
{
drawRect(0, 0, this.width, this.height, Integer.MIN_VALUE);
this.drawHorizontalLine(this.width / 2 - 91, this.width / 2 + 90, 99, -2039584);
this.drawHorizontalLine(this.width / 2 - 91, this.width / 2 + 90, 185, -6250336);
this.drawVerticalLine(this.width / 2 - 91, 99, 185, -2039584);
this.drawVerticalLine(this.width / 2 + 90, 99, 185, -6250336);
GlStateManager.disableLighting();
GlStateManager.disableFog();
Tessellator tessellator = Tessellator.getInstance();
WorldRenderer worldrenderer = tessellator.getWorldRenderer();
this.mc.getTextureManager().bindTexture(optionsBackground);
GlStateManager.color(1.0F, 1.0F, 1.0F, 1.0F);
worldrenderer.begin(7, DefaultVertexFormats.POSITION_TEX_COLOR);
worldrenderer.pos((double)(this.width / 2 - 90), 185.0D, 0.0D).tex(0.0D, 2.65625D).color(64, 64, 64, 64).endVertex();
worldrenderer.pos((double)(this.width / 2 + 90), 185.0D, 0.0D).tex(5.625D, 2.65625D).color(64, 64, 64, 64).endVertex();
worldrenderer.pos((double)(this.width / 2 + 90), 100.0D, 0.0D).tex(5.625D, 0.0D).color(64, 64, 64, 64).endVertex();
worldrenderer.pos((double)(this.width / 2 - 90), 100.0D, 0.0D).tex(0.0D, 0.0D).color(64, 64, 64, 64).endVertex();
tessellator.draw();
this.drawCenteredString(this.fontRendererObj, I18n.format("createWorld.customize.custom.confirmTitle", new Object[0]), this.width / 2, 105, 16777215);
this.drawCenteredString(this.fontRendererObj, I18n.format("createWorld.customize.custom.confirm1", new Object[0]), this.width / 2, 125, 16777215);
this.drawCenteredString(this.fontRendererObj, I18n.format("createWorld.customize.custom.confirm2", new Object[0]), this.width / 2, 135, 16777215);
this.yesButton.drawButton(this.mc, mouseX, mouseY);
this.noButton.drawButton(this.mc, mouseX, mouseY);
}
}
}

View File

@ -1,15 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.gui;
public class GuiBOPPageBiomes //extends GuiBOPPageDelegate
{
//Subclass implementing GuiListExtended.IGuiListEntry
//Icon, label
}

View File

@ -1,36 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiSlot;
public abstract class GuiBOPPageDelegate extends GuiSlot
{
public final int pageNumber;
public GuiBOPPageDelegate(int width, int height, int top, int bottom, int slotHeight, int pageNumber)
{
super(Minecraft.getMinecraft(), width, height, top, bottom, slotHeight);
this.pageNumber = pageNumber;
}
public abstract void setup();
public abstract void setVisible(boolean isVisible);
public void mouseClicked(int mouseX, int mouseY, int mouseEvent) {}
public void mouseReleased(int mouseX, int mouseY, int state) {}
public void keyTyped(char typedChar, int keyCode) {}
public Gui getFocusedGuiElement() { return null; }
public Gui getGui(int fieldId) { return null; }
}

View File

@ -1,381 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiLabel;
import net.minecraft.client.gui.GuiListExtended;
import net.minecraft.client.gui.GuiPageButtonList;
import net.minecraft.client.gui.GuiSlider;
import net.minecraft.client.gui.GuiTextField;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
import com.google.common.base.Objects;
import com.google.common.base.Predicate;
import com.google.common.base.Predicates;
public abstract class GuiBOPPageList extends GuiBOPPageDelegate
{
public GuiBOPPageList(int width, int height, int top, int bottom, int slotHeight, int pageNumber)
{
super(width, height, top, bottom, slotHeight, pageNumber);
}
@Override
protected void elementClicked(int slotIndex, boolean isDoubleClick, int mouseX, int mouseY) {}
@Override
protected boolean isSelected(int slotIndex)
{
return false;
}
@Override
protected void drawBackground() {}
@Override
protected void drawSlot(int entryID, int p_180791_2_, int p_180791_3_, int p_180791_4_, int mouseXIn, int mouseYIn)
{
this.getListEntry(entryID).drawEntry(entryID, p_180791_2_, p_180791_3_, this.getListWidth(), p_180791_4_, mouseXIn, mouseYIn, this.getSlotIndexFromScreenCoords(mouseXIn, mouseYIn) == entryID);
}
@Override
protected void func_178040_a(int p_178040_1_, int p_178040_2_, int p_178040_3_)
{
this.getListEntry(p_178040_1_).setSelected(p_178040_1_, p_178040_2_, p_178040_3_);
}
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseEvent)
{
if (this.isMouseYWithinSlotBounds(mouseY))
{
int l = this.getSlotIndexFromScreenCoords(mouseX, mouseY);
if (l >= 0)
{
int i1 = this.left + this.width / 2 - this.getListWidth() / 2 + 2;
int j1 = this.top + 4 - this.getAmountScrolled() + l * this.slotHeight + this.headerPadding;
int k1 = mouseX - i1;
int l1 = mouseY - j1;
if (this.getListEntry(l).mousePressed(l, mouseX, mouseY, mouseEvent, k1, l1))
{
this.setEnabled(false);
}
}
}
}
@Override
public void mouseReleased(int mouseX, int mouseY, int state)
{
for (int l = 0; l < this.getSize(); ++l)
{
int i1 = this.left + this.width / 2 - this.getListWidth() / 2 + 2;
int j1 = this.top + 4 - this.getAmountScrolled() + l * this.slotHeight + this.headerPadding;
int k1 = mouseX - i1;
int l1 = mouseY - j1;
this.getListEntry(l).mouseReleased(l, mouseX, mouseY, state, k1, l1);
}
this.setEnabled(true);
}
public abstract GuiListExtended.IGuiListEntry getListEntry(int rowNum);
@SideOnly(Side.CLIENT)
public static class GuiSlideEntry extends GuiBOPPageList.GuiFieldEntry
{
private final GuiSlider.FormatHelper formatHelper;
private final float min;
private final float max;
private final float value;
public GuiSlideEntry(int fieldId, String labelText, boolean isVisible, GuiSlider.FormatHelper formatHelper, float min, float max, float value)
{
super(fieldId, labelText, isVisible);
this.formatHelper = formatHelper;
this.min = min;
this.max = max;
this.value = value;
}
public GuiSlider.FormatHelper getFormatHelper()
{
return this.formatHelper;
}
public float getMin()
{
return this.min;
}
public float getMax()
{
return this.max;
}
public float getValue()
{
return this.value;
}
}
@SideOnly(Side.CLIENT)
public interface GuiResponder extends GuiPageButtonList.GuiResponder
{
void handleEnumSelection(int fieldId, int ordinal);
void handleBooleanSelection(int fieldId, boolean value);
void handleFloatSelection(int fieldId, float value);
void handleStringSelection(int fieldId, String value);
void handleIntSelection(int fieldId, int value);
}
@SideOnly(Side.CLIENT)
public static class GuiFieldEntry
{
private final int fieldID;
private final String labelText;
private final boolean isVisible;
public GuiFieldEntry(int fieldId, String labelText, boolean isVisible)
{
this.fieldID = fieldId;
this.labelText = labelText;
this.isVisible = isVisible;
}
public int getFieldId()
{
return this.fieldID;
}
public String getLabelText()
{
return this.labelText;
}
public boolean isVisible()
{
return this.isVisible;
}
}
@SideOnly(Side.CLIENT)
public static class GuiLabelEntry extends GuiFieldEntry
{
public GuiLabelEntry(int fieldId, String labelText, boolean isVisible)
{
super(fieldId, labelText, isVisible);
}
}
@SideOnly(Side.CLIENT)
public static class GuiRowEntry implements GuiListExtended.IGuiListEntry
{
private final Minecraft minecraft = Minecraft.getMinecraft();
private final Gui guiLeft;
private final Gui guiRight;
Gui focusedGui;
public GuiRowEntry(Gui guiLeft, Gui guiRight)
{
this.guiLeft = guiLeft;
this.guiRight = guiRight;
}
public Gui getGuiLeft()
{
return this.guiLeft;
}
public Gui getGuiRight()
{
return this.guiRight;
}
@Override
public void drawEntry(int slotIndex, int x, int y, int listWidth, int slotHeight, int mouseX, int mouseY, boolean isVisible)
{
this.drawGui(this.guiLeft, y, mouseX, mouseY, false);
this.drawGui(this.guiRight, y, mouseX, mouseY, false);
}
private void drawGui(Gui gui, int y, int mouseX, int mouseY, boolean isVisible)
{
if (gui != null)
{
if (gui instanceof GuiButton)
{
this.drawGuiButton((GuiButton)gui, y, mouseX, mouseY, isVisible);
}
else if (gui instanceof GuiTextField)
{
this.drawGuiTextField((GuiTextField)gui, y, isVisible);
}
else if (gui instanceof GuiLabel)
{
this.drawGuiLabel((GuiLabel)gui, y, mouseX, mouseY, isVisible);
}
}
}
private void drawGuiButton(GuiButton guiButton, int y, int mouseX, int mouseY, boolean isVisible)
{
guiButton.yPosition = y;
if (!isVisible)
{
guiButton.drawButton(this.minecraft, mouseX, mouseY);
}
}
private void drawGuiTextField(GuiTextField guiTextField, int y, boolean isVisible)
{
guiTextField.yPosition = y;
if (!isVisible)
{
guiTextField.drawTextBox();
}
}
private void drawGuiLabel(GuiLabel guiLabel, int y, int mouseX, int mouseY, boolean isVisible)
{
guiLabel.field_146174_h = y;
if (!isVisible)
{
guiLabel.drawLabel(this.minecraft, mouseX, mouseY);
}
}
@Override
public void setSelected(int p_178011_1_, int p_178011_2_, int p_178011_3_)
{
this.drawGui(this.guiLeft, p_178011_3_, 0, 0, true);
this.drawGui(this.guiRight, p_178011_3_, 0, 0, true);
}
@Override
public boolean mousePressed(int slotIndex, int x, int y, int mouseEvent, int relativeX, int relativeY)
{
return this.doMousePressed(this.guiLeft, x, y, mouseEvent) || this.doMousePressed(this.guiRight, x, y, mouseEvent);
}
private boolean doMousePressed(Gui gui, int x, int y, int mouseEvent)
{
if (gui == null)
{
return false;
}
else if (gui instanceof GuiButton)
{
if (((GuiButton)gui).mousePressed(this.minecraft, x, y))
{
this.focusedGui = gui;
return true;
}
else
{
return false;
}
}
else if (gui instanceof GuiTextField)
{
((GuiTextField)gui).mouseClicked(x, y, mouseEvent);
if (((GuiTextField)gui).isFocused())
{
this.focusedGui = gui;
}
return false;
}
return false;
}
@Override
public void mouseReleased(int slotIndex, int x, int y, int mouseEvent, int relativeX, int relativeY)
{
this.doMouseReleased(this.guiLeft, x, y);
this.doMouseReleased(this.guiRight, x, y);
}
public void doMouseReleased(Gui gui, int x, int y)
{
if (gui != null && (gui instanceof GuiButton))
{
((GuiButton)gui).mouseReleased(x, y);
}
}
}
@SideOnly(Side.CLIENT)
public static class GuiEnumButtonEntry<T extends Enum> extends GuiFieldEntry
{
private final T value;
public GuiEnumButtonEntry(int fieldId, String textLabel, boolean isVisible, T value)
{
super(fieldId, textLabel, isVisible);
this.value = value;
}
public T getValue()
{
return this.value;
}
}
@SideOnly(Side.CLIENT)
public static class GuiButtonEntry extends GuiFieldEntry
{
private final boolean value;
public GuiButtonEntry(int fieldId, String textLabel, boolean isVisible, boolean value)
{
super(fieldId, textLabel, isVisible);
this.value = value;
}
public boolean getValue()
{
return this.value;
}
}
@SideOnly(Side.CLIENT)
public static class EditBoxEntry extends GuiFieldEntry
{
private final Predicate validator;
public EditBoxEntry(int fieldId, String labelText, boolean isVisible, Predicate validator)
{
super(fieldId, labelText, isVisible);
this.validator = (Predicate)Objects.firstNonNull(validator, Predicates.alwaysTrue());
}
public Predicate getValidator()
{
return this.validator;
}
}
}

View File

@ -1,61 +0,0 @@
package biomesoplenty.client.gui;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiBOPPageManager
{
private GuiBOPPageDelegate[] pages;
private GuiBOPPageDelegate activePage;
public GuiBOPPageManager(GuiBOPPageDelegate ... pages)
{
this.pages = pages;
this.activePage = pages[0];
}
public void setup()
{
for (GuiBOPPageDelegate page : pages)
{
page.setup();
}
}
public GuiBOPPageDelegate getActivePage()
{
return this.activePage;
}
public int getNumPages()
{
return this.pages.length;
}
public void gotToPrevPage()
{
if (this.activePage.pageNumber > 0)
{
int newPageNumber = this.activePage.pageNumber - 1;
GuiBOPPageDelegate newPage = this.pages[newPageNumber];
this.activePage.setVisible(false);
newPage.setVisible(true);
this.activePage = newPage;
}
}
public void goToNextPage()
{
if (this.activePage.pageNumber < this.pages.length - 1)
{
int newPageNumber = this.activePage.pageNumber + 1;
GuiBOPPageDelegate newPage = this.pages[newPageNumber];
this.activePage.setVisible(false);
newPage.setVisible(true);
this.activePage = newPage;
}
}
}

View File

@ -1,370 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.gui;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.lwjgl.input.Mouse;
import net.minecraft.client.gui.Gui;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.gui.GuiLabel;
import net.minecraft.client.gui.GuiListButton;
import net.minecraft.client.gui.GuiListExtended;
import net.minecraft.client.gui.GuiScreen;
import net.minecraft.client.gui.GuiSlider;
import net.minecraft.client.gui.GuiTextField;
public class GuiBOPPageTable extends GuiBOPPageList
{
private final List<GuiBOPPageList.GuiRowEntry> allRows = new ArrayList<GuiBOPPageList.GuiRowEntry>();
private final Map<Integer, Gui> fieldIdToGuiMap = new HashMap<Integer, Gui>();
private final List<GuiTextField> allTextFieldGuis = new ArrayList<GuiTextField>();
private final GuiBOPPageList.GuiFieldEntry[] fields;
private GuiBOPPageList.GuiResponder responder;
private Gui focusedGui;
public GuiBOPPageTable(int width, int height, int top, int bottom, int slotHeight, int pageNumber, GuiBOPPageList.GuiResponder responder, GuiBOPPageList.GuiFieldEntry... fields)
{
super(width, height, top, bottom, slotHeight, pageNumber);
this.responder = responder;
this.fields = fields;
}
@Override
public void setVisible(boolean isVisible)
{
if (isVisible)
{
for (GuiBOPPageList.GuiFieldEntry field : this.fields)
{
if (field != null)
{
Gui gui = this.fieldIdToGuiMap.get(field.getFieldId());
this.setVisible(gui, true);
}
}
}
else
{
for (GuiBOPPageList.GuiFieldEntry field : this.fields)
{
if (field != null)
{
Gui gui = this.fieldIdToGuiMap.get(field.getFieldId());
this.setVisible(gui, false);
}
}
}
}
private void setVisible(Gui gui, boolean isVisible)
{
if (gui instanceof GuiButton)
{
((GuiButton)gui).visible = isVisible;
}
else if (gui instanceof GuiTextField)
{
((GuiTextField)gui).setVisible(isVisible);
}
else if (gui instanceof GuiLabel)
{
((GuiLabel)gui).visible = isVisible;
}
}
@Override
public void setup()
{
// go through the fields in twos (so they go in 2 columns)
for (int k = 0; k < fields.length; k += 2)
{
GuiBOPPageList.GuiFieldEntry fieldLeft = fields[k];
GuiBOPPageList.GuiFieldEntry fieldRight = k < fields.length - 1 ? fields[k + 1] : null;
Gui guiLeft = this.createGui(fieldLeft, 0, fieldRight == null);
Gui guiRight = this.createGui(fieldRight, 160, fieldLeft == null);
GuiBOPPageList.GuiRowEntry row = new GuiBOPPageList.GuiRowEntry(guiLeft, guiRight);
this.allRows.add(row);
if (fieldLeft != null && guiLeft != null)
{
this.fieldIdToGuiMap.put(fieldLeft.getFieldId(), guiLeft);
if (guiLeft instanceof GuiTextField)
{
this.allTextFieldGuis.add((GuiTextField)guiLeft);
}
}
if (fieldRight != null && guiRight != null)
{
this.fieldIdToGuiMap.put(fieldRight.getFieldId(), guiRight);
if (guiRight instanceof GuiTextField)
{
this.allTextFieldGuis.add((GuiTextField)guiRight);
}
}
}
this.resetRows();
}
private void resetRows()
{
this.allRows.clear();
for (int i = 0; i < this.fields.length; i += 2)
{
GuiBOPPageList.GuiFieldEntry guilistentryLeft = this.fields[i];
GuiBOPPageList.GuiFieldEntry guilistentryRight = i < this.fields.length - 1 ? this.fields[i + 1] : null;
Gui guiLeft = (Gui)this.fieldIdToGuiMap.get(guilistentryLeft.getFieldId());
Gui guiRight = guilistentryRight != null ? (Gui)this.fieldIdToGuiMap.get(guilistentryRight.getFieldId()) : null;
GuiBOPPageList.GuiRowEntry guientry = new GuiBOPPageList.GuiRowEntry(guiLeft, guiRight);
this.allRows.add(guientry);
}
}
@Override
public Gui getFocusedGuiElement()
{
return this.focusedGui;
}
@Override
public Gui getGui(int fieldId)
{
return (Gui)this.fieldIdToGuiMap.get(fieldId);
}
private Gui createGui(GuiBOPPageList.GuiFieldEntry field, int xOffset, boolean hasNoNeighbor)
{
if (field instanceof GuiBOPPageList.GuiSlideEntry)
{
return (Gui)this.createSlider(this.width / 2 - 155 + xOffset, 0, (GuiBOPPageList.GuiSlideEntry)field);
}
else if (field instanceof GuiBOPPageList.GuiButtonEntry)
{
return (Gui)this.createListButton(this.width / 2 - 155 + xOffset, 0, (GuiBOPPageList.GuiButtonEntry)field);
}
else if (field instanceof GuiBOPPageList.EditBoxEntry)
{
return (Gui)this.createTextField(this.width / 2 - 155 + xOffset, 0, (GuiBOPPageList.EditBoxEntry)field);
}
else if (field instanceof GuiBOPPageList.GuiLabelEntry)
{
return (Gui)this.createLabel(this.width / 2 - 155 + xOffset, 0, (GuiBOPPageList.GuiLabelEntry)field, hasNoNeighbor);
}
else if (field instanceof GuiBOPPageList.GuiEnumButtonEntry)
{
return (Gui)this.createEnumButton(this.width / 2 - 155 + xOffset, 0, (GuiBOPPageList.GuiEnumButtonEntry)field);
}
else
{
return null;
}
}
//Mouse clicked
private GuiSlider createSlider(int xPosition, int yPosition, GuiBOPPageList.GuiSlideEntry field)
{
GuiSlider guislider = new GuiSlider(this.responder, field.getFieldId(), xPosition, yPosition, field.getLabelText(), field.getMin(), field.getMax(), field.getValue(), field.getFormatHelper());
guislider.visible = field.isVisible();
return guislider;
}
private GuiListButton createListButton(int xPosition, int yPosition, GuiBOPPageList.GuiButtonEntry field)
{
GuiListButton guilistbutton = new GuiListButton(this.responder, field.getFieldId(), xPosition, yPosition, field.getLabelText(), field.getValue());
guilistbutton.visible = field.isVisible();
return guilistbutton;
}
private GuiEnumButton createEnumButton(int xPosition, int yPosition, GuiBOPPageList.GuiEnumButtonEntry field)
{
GuiEnumButton guienumbutton = new GuiEnumButton(this.responder, field.getFieldId(), xPosition, yPosition, field.getLabelText(), field.getValue());
guienumbutton.visible = field.isVisible();
return guienumbutton;
}
private GuiTextField createTextField(int xPosition, int yPosition, GuiBOPPageList.EditBoxEntry field)
{
GuiTextField guitextfield = new GuiTextField(field.getFieldId(), this.mc.fontRendererObj, xPosition, yPosition, 150, 20);
guitextfield.setText(field.getLabelText());
guitextfield.func_175207_a(this.responder); // setResponder
guitextfield.setVisible(field.isVisible());
guitextfield.func_175205_a(field.getValidator()); // setValidator
return guitextfield;
}
private GuiLabel createLabel(int xPosition, int yPosition, GuiBOPPageList.GuiLabelEntry field, boolean hasNoNeighbor)
{
GuiLabel guilabel;
if (hasNoNeighbor)
{
guilabel = new GuiLabel(this.mc.fontRendererObj, field.getFieldId(), xPosition, yPosition, this.width - xPosition * 2, 20, -1);
}
else
{
guilabel = new GuiLabel(this.mc.fontRendererObj, field.getFieldId(), xPosition, yPosition, 150, 20, -1);
}
guilabel.visible = field.isVisible();
guilabel.func_175202_a(field.getLabelText()); // setText
guilabel.setCentered();
return guilabel;
}
@Override
public void keyTyped(char typedChar, int keyCode)
{
if (this.focusedGui instanceof GuiTextField)
{
GuiTextField guitextfield = (GuiTextField)this.focusedGui;
int j;
//Check if aren't we are pasting text
if (!GuiScreen.isKeyComboCtrlV(keyCode))
{
if (keyCode == 15) //Tab is pressed
{
guitextfield.setFocused(false);
int focusedGuiIndex = this.allTextFieldGuis.indexOf(this.focusedGui);
if (GuiScreen.isShiftKeyDown())
{
if (focusedGuiIndex == 0) //Jump back to the end of the list when at the start
{
focusedGuiIndex = this.allTextFieldGuis.size() - 1;
}
else
{
--focusedGuiIndex; //Cycle backwards through the text fields
}
}
else if (focusedGuiIndex == this.allTextFieldGuis.size() - 1) //Jump back to the start of the list when at the end
{
focusedGuiIndex = 0;
}
else
{
++focusedGuiIndex; //Cycle forwards through the text fields
}
this.focusedGui = (Gui)this.allTextFieldGuis.get(focusedGuiIndex);
guitextfield = (GuiTextField)this.focusedGui;
guitextfield.setFocused(true);
int k1 = guitextfield.yPosition + this.slotHeight;
j = guitextfield.yPosition;
if (k1 > this.bottom)
{
this.amountScrolled += (float)(k1 - this.bottom);
}
else if (j < this.top)
{
this.amountScrolled = (float)j;
}
}
else
{
guitextfield.textboxKeyTyped(typedChar, keyCode);
}
}
else
{
String s = GuiScreen.getClipboardString();
String[] astring = s.split(";");
j = this.allTextFieldGuis.indexOf(this.focusedGui);
int k = j;
String[] astring1 = astring;
int l = astring.length;
for (int i1 = 0; i1 < l; ++i1)
{
String s1 = astring1[i1];
((GuiTextField)this.allTextFieldGuis.get(k)).setText(s1);
if (k == this.allTextFieldGuis.size() - 1)
{
k = 0;
}
else
{
++k;
}
if (k == j)
{
break;
}
}
}
}
}
public GuiBOPPageList.GuiRowEntry getRow(int rowNum)
{
return (GuiBOPPageList.GuiRowEntry)this.allRows.get(rowNum);
}
@Override
public int getSize()
{
return this.allRows.size();
}
@Override
public int getListWidth()
{
return 400;
}
@Override
protected int getScrollBarX()
{
return super.getScrollBarX() + 32;
}
@Override
public GuiListExtended.IGuiListEntry getListEntry(int rowNum)
{
return this.getRow(rowNum);
}
@Override
public void mouseClicked(int mouseX, int mouseY, int mouseButton)
{
super.mouseClicked(mouseX, mouseY, Mouse.getEventButton());
int l = this.getSlotIndexFromScreenCoords(mouseX, mouseY);
if (l >= 0)
{
GuiBOPPageTable.GuiRowEntry row = this.getRow(l);
if (this.focusedGui != row.focusedGui && this.focusedGui != null && this.focusedGui instanceof GuiTextField)
{
((GuiTextField)this.focusedGui).setFocused(false);
}
this.focusedGui = row.focusedGui;
}
}
}

View File

@ -1,54 +0,0 @@
package biomesoplenty.client.gui;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.GuiButton;
import net.minecraft.client.resources.I18n;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public class GuiEnumButton<T extends Enum> extends GuiButton
{
private T value;
private String localizationStr;
private final GuiBOPPageList.GuiResponder guiResponder;
public GuiEnumButton(GuiBOPPageList.GuiResponder responder, int fieldId, int x, int y, String localizationStr, T initialValue)
{
super(fieldId, x, y, 150, 20, "");
this.localizationStr = localizationStr;
this.value = initialValue;
this.displayString = this.buildDisplayString();
this.guiResponder = responder;
}
private String buildDisplayString()
{
return I18n.format(this.localizationStr, new Object[] {this.value.toString()});
}
public void setValue(T value)
{
this.value = value;
this.displayString = this.buildDisplayString();
this.guiResponder.handleEnumSelection(this.id, value.ordinal());
}
@Override
public boolean mousePressed(Minecraft mc, int mouseX, int mouseY)
{
if (super.mousePressed(mc, mouseX, mouseY))
{
Object[] values = this.value.getClass().getEnumConstants();
int len = values.length;
this.value = (T)(values[(this.value.ordinal() + 1) % len]);
this.displayString = this.buildDisplayString();
this.guiResponder.handleEnumSelection(this.id, this.value.ordinal());
return true;
}
else
{
return false;
}
}
}

View File

@ -0,0 +1,54 @@
package biomesoplenty.client.handler;
import biomesoplenty.init.ModBiomes;
import biomesoplenty.init.ModConfig;
import net.minecraft.client.Minecraft;
import net.minecraft.client.gui.screen.*;
import net.minecraft.util.text.TranslationTextComponent;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import net.minecraftforge.client.event.GuiOpenEvent;
import net.minecraftforge.eventbus.api.SubscribeEvent;
import net.minecraftforge.fml.common.Mod;
import java.util.Optional;
@Mod.EventBusSubscriber(bus = Mod.EventBusSubscriber.Bus.FORGE)
public class GuiEventHandler
{
@OnlyIn(Dist.CLIENT)
@SubscribeEvent
public static void onGuiOpened(GuiOpenEvent event)
{
Screen gui = event.getGui();
Minecraft mc = Minecraft.getInstance();
Screen prevScreen = mc.screen;
// Default to the bop worldtype
if (ModConfig.ClientConfig.useWorldType.get() && gui instanceof CreateWorldScreen && prevScreen instanceof WorldSelectionScreen)
{
WorldOptionsScreen optionsScreen = ((CreateWorldScreen)gui).worldGenSettingsComponent;
optionsScreen.preset = Optional.of(findBopBiomeGeneratorTypeScreen());
optionsScreen.settings = optionsScreen.preset.get().create(optionsScreen.registryHolder, optionsScreen.settings.seed(), optionsScreen.settings.generateFeatures(), optionsScreen.settings.generateBonusChest());
}
}
private static BiomeGeneratorTypeScreens findBopBiomeGeneratorTypeScreen()
{
for (BiomeGeneratorTypeScreens screen : BiomeGeneratorTypeScreens.PRESETS)
{
// Skip screens that don't use a TranslationTextComponent because definitely they're not ours
if (!(screen.description instanceof TranslationTextComponent))
continue;
TranslationTextComponent desc = (TranslationTextComponent)screen.description;
if (desc.getKey().equals("generator.minecraft.biomesoplenty"))
{
return screen;
}
}
throw new RuntimeException("Failed to locate biomesoplenty biome generator type screen!");
}
}

View File

@ -1,63 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.handler;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import biomesoplenty.client.model.ModelBiomeFinder;
import biomesoplenty.client.texture.TextureAnimationFrame;
import biomesoplenty.client.util.TextureUtils;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.client.resources.model.ModelResourceLocation;
import net.minecraft.util.IRegistry;
import net.minecraftforge.client.event.ModelBakeEvent;
import net.minecraftforge.client.event.TextureStitchEvent;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ModelLoader;
import net.minecraftforge.fml.common.eventhandler.SubscribeEvent;
public class ModelBakeHandler
{
public static final ModelResourceLocation BIOME_FINDER_LOC = new ModelResourceLocation("biomesoplenty:item/biome_finder", "inventory");
public static final ModelResourceLocation BIOME_FINDER_REG_LOC = new ModelResourceLocation("biomesoplenty:biome_finder", "inventory");
public static List<String> fluidsToTextureStitch = new ArrayList<String>();
private TextureAnimationFrame[] biomeFinderFrames;
@SubscribeEvent
public void onTextureStitch(TextureStitchEvent.Pre event)
{
TextureMap map = event.map;
biomeFinderFrames = TextureUtils.splitAnimatedTexture(map, "biomesoplenty:items/biome_finder", 12);
}
@SubscribeEvent
public void onTextureStitch(TextureStitchEvent.Post event)
{
TextureMap map = event.map;
}
@SubscribeEvent
public void onModelBake(ModelBakeEvent event) throws IOException
{
IRegistry<ModelResourceLocation, IBakedModel> modelRegistry = event.modelRegistry;
ModelLoader modelLoader = event.modelLoader;
//NOTE: If there are issues with this in the future, it may be useful to investigate ItemLayerModel
//Get the existing model defined by the json file
IModel biomeFinderModel = modelLoader.getModel(BIOME_FINDER_LOC);
//Replace the existing model with our new flexible one
modelRegistry.putObject(BIOME_FINDER_REG_LOC, new ModelBiomeFinder(biomeFinderModel, biomeFinderFrames));
}
}

View File

@ -1,84 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.model;
import biomesoplenty.client.util.ModelUtils;
import net.minecraft.client.Minecraft;
import net.minecraft.client.entity.EntityPlayerSP;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraftforge.client.model.IFlexibleBakedModel;
import net.minecraftforge.client.model.IModel;
import net.minecraftforge.client.model.ISmartItemModel;
public class ModelBiomeFinder extends IFlexibleBakedModel.Wrapper implements ISmartItemModel
{
private IBakedModel[] frames;
public ModelBiomeFinder(IModel defaultModel, TextureAtlasSprite[] frameTextures)
{
super(null, DefaultVertexFormats.ITEM);
this.frames = ModelUtils.generateModelsForTextures(defaultModel, frameTextures);
}
@Override
public IBakedModel handleItemState(ItemStack stack)
{
EntityPlayerSP player = Minecraft.getMinecraft().thePlayer;
if (player == null) {return this.frames[0];}
NBTTagCompound nbt = stack.getTagCompound();
if (nbt != null && nbt.hasKey("biomeIDToFind"))
{
if (nbt.hasKey("searchStarted"))
{
// searching for biome, but not yet found indicate searching by flashing
return this.getFlashingFrame(player);
}
else if (nbt.getBoolean("found"))
{
// if the biome has been found, point at it
int posX = nbt.getInteger("posX");
int posZ = nbt.getInteger("posZ");
return getFrameForPositionRelativeToPlayer(player, posX, posZ);
}
else
{
// the search has not yet been started, show all sectors lit
return this.frames[9];
}
}
else
{
// if we've got here, the biome finder has not been bound to a biome yet - show no sectors lit
return this.frames[8];
}
}
public IBakedModel getFlashingFrame(EntityPlayerSP player)
{
return (player.getRNG().nextInt(2) == 0 ? this.frames[10] : this.frames[11]);
}
public IBakedModel getFrameForPositionRelativeToPlayer(EntityPlayer player, int biomePosX, int biomePosZ)
{
double xDiff = (double)biomePosX - player.posX;
double zDiff = (double)biomePosZ - player.posZ;
// angle (in degrees) of direction from player to biome (relative to player rotation)
double angleDiff = (Math.atan2(zDiff, xDiff) * 180.0D / Math.PI) + 270.0D - player.rotationYaw;
// there are 8 sectors on the biome finder, so 45 degrees each (offset by 22.5 to center the angle in the middle of the sector)
int sector = (int)Math.floor((angleDiff + 22.5D) / 45.0D);
return this.frames[((sector % 8) + 8) % 8];
}
}

View File

@ -1,109 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.particle;
import org.lwjgl.opengl.GL11;
import biomesoplenty.core.ClientProxy;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.world.World;
import net.minecraftforge.fml.client.FMLClientHandler;
public class EntityDandelionFX extends EntityFX
{
public EntityDandelionFX(World world, double xCoordIn, double yCoordIn, double zCoordIn, float par14)
{
this(world, xCoordIn, yCoordIn, zCoordIn, 0.0D, 0.0D, 0.0D, par14);
}
public EntityDandelionFX(World world, double xCoordIn, double yCoordIn, double zCoordIn, double xSpeedIn, double ySpeedIn, double zSpeedIn, float par14)
{
super(world, xCoordIn, yCoordIn, zCoordIn, xSpeedIn, ySpeedIn, zSpeedIn);
// dandelion texture is at position 0,0
this.particleTextureIndexX = 0;
this.particleTextureIndexY = 0;
this.motionX *= 0.20000000149011612D;
this.motionY *= 0.10000000149011612D;
this.motionZ *= 0.20000000149011612D;
this.particleScale *= 0.25F;
this.particleScale *= par14;
this.particleMaxAge = (int)(8.0D / (Math.random() * 0.8D + 0.2D));
this.particleMaxAge = (int)((float)this.particleMaxAge * par14);
this.setAlphaF(1.0F);
this.noClip = false;
this.setSize(0.01F, 0.01F);
}
@Override
public int getFXLayer()
{
return 2;
}
@Override
public void renderParticle(WorldRenderer renderer, Entity entity, float partialTicks, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY)
{
// EffectRenderer will by default bind the vanilla particles texture, override with our own
FMLClientHandler.instance().getClient().renderEngine.bindTexture(ClientProxy.particleTexturesLocation);
GlStateManager.depthMask(false);
// TODO what's this?
GL11.glEnable(3042);
GlStateManager.enableBlend();
GlStateManager.blendFunc(770, 1);
super.renderParticle(renderer, entity, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
GL11.glDisable(3042);
GlStateManager.disableBlend();
GlStateManager.depthMask(true);
}
@Override
public void onUpdate()
{
prevPosX = posX;
prevPosY = posY;
prevPosZ = posZ;
if (particleAge++ >= particleMaxAge)
{
this.setDead();
}
motionY += 0.004D;
this.moveEntity(motionX, motionY, motionZ);
if (posY == prevPosY)
{
motionX *= 1.1D;
motionZ *= 1.1D;
}
motionX *= 0.9599999785423279D;
motionY *= 0.9599999785423279D;
motionZ *= 0.9599999785423279D;
if (onGround)
{
motionX *= 0.699999988079071D;
motionZ *= 0.699999988079071D;
}
}
}

View File

@ -1,112 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.particle;
import biomesoplenty.core.ClientProxy;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.GlStateManager;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.MathHelper;
import net.minecraft.world.World;
import net.minecraftforge.fml.client.FMLClientHandler;
public class EntityPixieTrailFX extends EntityFX
{
public EntityPixieTrailFX(World world, double xCoordIn, double yCoordIn, double zCoordIn, double xSpeedIn, double ySpeedIn, double zSpeedIn)
{
this(world, xCoordIn, yCoordIn, zCoordIn, xSpeedIn, ySpeedIn, zSpeedIn, 1.0F);
}
public EntityPixieTrailFX(World world, double xCoordIn, double yCoordIn, double zCoordIn, double xSpeedIn, double ySpeedIn, double zSpeedIn, float par14)
{
super(world, xCoordIn, yCoordIn, zCoordIn, 0.0D, 0.0D, 0.0D);
// pixie trail texture is row from position 0,1 to position 8,1
this.particleTextureIndexX = 7;
this.particleTextureIndexY = 1;
this.motionX *= 0.10000000149011612D;
this.motionY *= 0.10000000149011612D;
this.motionZ *= 0.10000000149011612D;
this.motionX += xSpeedIn;
this.motionY += ySpeedIn;
this.motionZ += zSpeedIn;
this.particleScale *= 0.75F;
this.particleScale *= par14;
this.particleMaxAge = (int)((8.0D / (Math.random() * 0.8D + 0.2D)) * 8);
this.particleMaxAge = (int)((float)this.particleMaxAge * par14);
this.particleAge = (particleMaxAge / 2) + (int)((particleMaxAge / 2) * world.rand.nextInt(7));
this.particleAlpha = 1.0F;
this.noClip = false;
}
@Override
public int getFXLayer()
{
return 2;
}
@Override
public void renderParticle(WorldRenderer renderer, Entity entity, float partialTicks, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY)
{
// EffectRenderer will by default bind the vanilla particles texture, override with our own
FMLClientHandler.instance().getClient().renderEngine.bindTexture(ClientProxy.particleTexturesLocation);
float scaleMultiplier = ((float)this.particleAge + partialTicks) / (float)this.particleMaxAge * 32.0F;
scaleMultiplier = MathHelper.clamp_float(scaleMultiplier, 0.0F, 1.0F);
this.particleScale = this.particleScale * scaleMultiplier;
GlStateManager.depthMask(false);
GlStateManager.enableBlend();
GlStateManager.blendFunc(770, 1);
super.renderParticle(renderer, entity, partialTicks, rotX, rotXZ, rotZ, rotYZ, rotXY);
GlStateManager.disableBlend();
GlStateManager.depthMask(true);
}
@Override
public void onUpdate()
{
prevPosX = posX;
prevPosY = posY;
prevPosZ = posZ;
if (particleAge++ >= particleMaxAge)
{
this.setDead();
}
this.particleTextureIndexX = 7 - particleAge * 8 / particleMaxAge;
this.moveEntity(motionX, motionY, motionZ);
if (posY == prevPosY)
{
motionX *= 1.1D;
motionZ *= 1.1D;
}
motionX *= 0.9599999785423279D;
motionY *= 0.9599999785423279D;
motionZ *= 0.9599999785423279D;
if (onGround)
{
motionX *= 0.699999988079071D;
motionZ *= 0.699999988079071D;
}
}
}

View File

@ -1,80 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.particle;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.client.renderer.WorldRenderer;
import net.minecraft.entity.Entity;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.World;
import net.minecraftforge.fml.client.FMLClientHandler;
public class EntityTrailFX extends EntityFX
{
private ResourceLocation trailResource;
/**The index of the flower to be spawned, values are 0-3*/
private int particleIndex;
private double startY;
public EntityTrailFX(World world, double x, double y, double z, String trailName)
{
super(world, x, y, z);
this.trailResource = new ResourceLocation("biomesoplenty:textures/particles/" + trailName + ".png");
this.motionX = this.motionY = this.motionZ = 0.0D; //Trail particles should not move
this.particleMaxAge = 550;
this.particleIndex = this.rand.nextInt(4); //Choose a random index on creation
this.startY = y; //Where y coordinate where this particle has started (before it moves downwards with time)
}
@Override
public void renderParticle(WorldRenderer renderer, Entity entity, float partialTicks, float rotX, float rotXZ, float rotZ, float rotYZ, float rotXY)
{
// EffectRenderer will by default bind the vanilla particles texture, override with our own
FMLClientHandler.instance().getClient().renderEngine.bindTexture(this.trailResource);
//The overall maxU and maxV of the particle sheet is 1.0 (representing 16px)
float minU = (particleIndex % 2) * 0.5F; //Particles on the left side are 0, right are 0.5
float maxU = minU + 0.5F; //Each flower is 8px wide (half of the overall sheet)
float minV = (particleIndex / 2) * 0.5F; //Uses integer rounding errors (0 and 1 = 0, 2 and 3 = 1)
float maxV = minV + 0.5F; //Each flower is 8px high (half of the overall sheet)
//Vanilla particle rendering
float alpha = 1.0F - Math.min(1.0F, 2.0F * this.particleAge / this.particleMaxAge);
float width = 0.15F;
float x = (float)(prevPosX + (posX - prevPosX) - interpPosX);
float y = (float)(prevPosY + (posY - prevPosY) - interpPosY);
float z = (float)(prevPosZ + (posZ - prevPosZ) - interpPosZ);
int i = this.getBrightnessForRender(partialTicks);
int j = i >> 16 & 65535;
int k = i & 65535;
renderer.pos(x - width, y, z + width).tex(minU, maxV).color(this.particleRed, this.particleGreen, this.particleBlue, alpha).lightmap(j, k).endVertex();
renderer.pos(x + width, y, z + width).tex(minU, minV).color(this.particleRed, this.particleGreen, this.particleBlue, alpha).lightmap(j, k).endVertex();
renderer.pos(x + width, y, z - width).tex(maxU, minV).color(this.particleRed, this.particleGreen, this.particleBlue, alpha).lightmap(j, k).endVertex();
renderer.pos(x - width, y, z - width).tex(maxU, maxV).color(this.particleRed, this.particleGreen, this.particleBlue, alpha).lightmap(j, k).endVertex();
}
@Override
public int getFXLayer()
{
return 2;
}
@Override
public void onUpdate()
{
super.onUpdate();
this.posY = this.startY - 0.01 * ((float)this.particleAge / (float)this.particleMaxAge);
this.prevPosY = this.posY;
}
}

View File

@ -0,0 +1,78 @@
package biomesoplenty.client.renderer;
import biomesoplenty.common.entity.item.BoatEntityBOP;
import com.mojang.blaze3d.matrix.MatrixStack;
import com.mojang.blaze3d.vertex.IVertexBuilder;
import net.minecraft.client.renderer.IRenderTypeBuffer;
import net.minecraft.client.renderer.RenderType;
import net.minecraft.client.renderer.entity.EntityRenderer;
import net.minecraft.client.renderer.entity.EntityRendererManager;
import net.minecraft.client.renderer.entity.model.BoatModel;
import net.minecraft.client.renderer.texture.OverlayTexture;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.MathHelper;
import net.minecraft.util.math.vector.Quaternion;
import net.minecraft.util.math.vector.Vector3f;
import net.minecraftforge.api.distmarker.Dist;
import net.minecraftforge.api.distmarker.OnlyIn;
import static biomesoplenty.core.BiomesOPlenty.MOD_ID;
@OnlyIn(Dist.CLIENT)
public class BoatRendererBOP extends EntityRenderer<BoatEntityBOP> {
protected final BoatModel model = new BoatModel();
public BoatRendererBOP(EntityRendererManager renderer) {
super(renderer);
this.shadowRadius = 0.8f;
}
@Override
public void render(BoatEntityBOP entity, float entityYaw, float partialTicks, MatrixStack matrixStack, IRenderTypeBuffer renderTypeBuffer, int light) {
matrixStack.pushPose();
matrixStack.translate(0d, 0.375d, 0d);
matrixStack.mulPose(Vector3f.YP.rotationDegrees(180f - entityYaw));
float f = (float) entity.getHurtTime() - partialTicks;
float f1 = entity.getDamage() - partialTicks;
if (f1 < 0f) {
f1 = 0f;
}
if (f > 0f) {
matrixStack.mulPose(Vector3f.XP.rotationDegrees(MathHelper.sin(f) * f * f1 / 10f * (float) entity.getHurtDir()));
}
float f2 = entity.getBubbleAngle(partialTicks);
if (!MathHelper.equal(f2, 0f)) {
matrixStack.mulPose(new Quaternion(new Vector3f(1f, 0f, 1f), entity.getBubbleAngle(partialTicks), true));
}
matrixStack.scale(-1f, -1f, 1f);
matrixStack.mulPose(Vector3f.YP.rotationDegrees(90.0F));
this.model.setupAnim(entity, partialTicks, 0f, -0.1f, 0f, 0f);
IVertexBuilder ivertexbuilder = renderTypeBuffer.getBuffer(this.model.renderType(this.getTextureLocation(entity)));
this.model.renderToBuffer(matrixStack, ivertexbuilder, light, OverlayTexture.NO_OVERLAY, 1f, 1f, 1f, 1f);
if (!entity.isUnderWater()) {
IVertexBuilder ivertexbuilder1 = renderTypeBuffer.getBuffer(RenderType.waterMask());
this.model.waterPatch().render(matrixStack, ivertexbuilder1, light, OverlayTexture.NO_OVERLAY);
}
matrixStack.popPose();
super.render(entity, entityYaw, partialTicks, matrixStack, renderTypeBuffer, light);
}
@Override
public ResourceLocation getTextureLocation(BoatEntityBOP entity) {
return BOAT_TEXTURE_LOCATIONS[entity.getModel().ordinal()];
}
private static final ResourceLocation[] BOAT_TEXTURE_LOCATIONS = new ResourceLocation[] {
new ResourceLocation(MOD_ID, "textures/entity/boat/fir.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/redwood.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/cherry.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/mahogany.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/jacaranda.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/palm.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/willow.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/dead.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/magic.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/umbran.png"),
new ResourceLocation(MOD_ID, "textures/entity/boat/hellbark.png")
};
}

View File

@ -1,88 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.texture;
import java.awt.image.BufferedImage;
import java.io.IOException;
import biomesoplenty.client.util.TextureUtils;
import biomesoplenty.core.BiomesOPlenty;
import net.minecraft.client.Minecraft;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureUtil;
import net.minecraft.client.resources.IResource;
import net.minecraft.client.resources.IResourceManager;
import net.minecraft.client.resources.data.AnimationMetadataSection;
import net.minecraft.util.ResourceLocation;
public class TextureAnimationFrame extends TextureAtlasSprite
{
private String animationName;
private int frame;
public TextureAnimationFrame(String iconName, String animationName, int frame)
{
super(iconName);
this.animationName = animationName;
this.frame = frame;
}
//TODO: This still currently classifies as an animation, it should be turned into a proper static texture
@Override
public void updateAnimation() {}
@Override
public int[][] getFrameTextureData(int index)
{
return super.getFrameTextureData(this.frame);
}
@Override
public boolean hasCustomLoader(IResourceManager manager, net.minecraft.util.ResourceLocation location)
{
return true;
}
@Override
public boolean load(IResourceManager manager, ResourceLocation location)
{
location = new ResourceLocation(animationName);
ResourceLocation fullLocation = TextureUtils.completeResourceLocation(location, 0);
int mipmapLevels = Minecraft.getMinecraft().gameSettings.mipmapLevels;
try
{
IResource iresource = manager.getResource(fullLocation);
BufferedImage[] image = new BufferedImage[1 + mipmapLevels];
AnimationMetadataSection animation = (AnimationMetadataSection) iresource.getMetadata("animation");
if (animation != null)
{
image[0] = TextureUtil.readBufferedImage(iresource.getInputStream());
int cachedFrameCount = this.frameCounter;
this.loadSprite(image, animation);
this.frameCounter = cachedFrameCount;
}
else
{
BiomesOPlenty.logger.error("Resource " + location + " isn't animated");
return true;
}
}
catch (IOException e)
{
e.printStackTrace();
return true;
}
return false;
}
}

View File

@ -1,43 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.util;
import com.google.common.base.Function;
import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.vertex.DefaultVertexFormats;
import net.minecraft.client.resources.model.IBakedModel;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.client.model.IModel;
public class ModelUtils
{
public static IBakedModel[] generateModelsForTextures(IModel model, TextureAtlasSprite[] textures)
{
IBakedModel[] output = new IBakedModel[textures.length];
for (int i = 0; i < output.length; i++)
{
final TextureAtlasSprite texture = textures[i];
//Defines how TextureAtlasSprites are obtained whilst baking
Function<ResourceLocation, TextureAtlasSprite> textureGetter = new Function<ResourceLocation, TextureAtlasSprite>()
{
public TextureAtlasSprite apply(ResourceLocation location)
{
return texture;
}
};
output[i] = model.bake(model.getDefaultState(), DefaultVertexFormats.ITEM, textureGetter);
}
return output;
}
}

View File

@ -1,44 +0,0 @@
/*******************************************************************************
* Copyright 2014-2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.client.util;
import biomesoplenty.client.texture.TextureAnimationFrame;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public class TextureUtils
{
public static final String TEXTURES_BASE_PATH = "textures";
//TODO: Remove frameCount argument
@SideOnly(Side.CLIENT)
public static TextureAnimationFrame[] splitAnimatedTexture(TextureMap textureMap, String iconName, int frameCount)
{
TextureAnimationFrame[] output = new TextureAnimationFrame[frameCount];
for (int i = 0; i < frameCount; i++)
{
String textureLocation = iconName + "_static_" + i;
TextureAnimationFrame frameTexture = new TextureAnimationFrame(textureLocation, iconName, i);
output[i] = frameTexture;
textureMap.setTextureEntry(textureLocation, frameTexture);
}
return output;
}
public static ResourceLocation completeResourceLocation(ResourceLocation location, int mode)
{
return mode == 0 ? new ResourceLocation(location.getResourceDomain(), String.format("%s/%s%s", new Object[] {TEXTURES_BASE_PATH, location.getResourcePath(), ".png"})) : new ResourceLocation(location.getResourceDomain(), String.format("%s/mipmaps/%s.%d%s", new Object[] {TEXTURES_BASE_PATH, location.getResourcePath(), Integer.valueOf(mode), ".png"}));
}
}

View File

@ -1,49 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.asm;
import java.util.Map;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin;
import net.minecraftforge.fml.relauncher.IFMLLoadingPlugin.TransformerExclusions;
import biomesoplenty.common.asm.transformers.BOPAccessTransformer;
@TransformerExclusions("biomesoplenty.common.asm")
public class BOPLoadingPlugin implements IFMLLoadingPlugin
{
@Override
public String[] getASMTransformerClass()
{
return null;
}
@Override
public String getModContainerClass()
{
return null;
}
@Override
public String getSetupClass()
{
return null;
}
@Override
public void injectData(Map<String, Object> data)
{
}
@Override
public String getAccessTransformerClass()
{
return BOPAccessTransformer.class.getName();
}
}

View File

@ -1,21 +0,0 @@
/*******************************************************************************
* Copyright 2014, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.asm.transformers;
import java.io.IOException;
import net.minecraftforge.fml.common.asm.transformers.AccessTransformer;
public class BOPAccessTransformer extends AccessTransformer
{
public BOPAccessTransformer() throws IOException
{
super("biomesoplenty_at.cfg");
}
}

View File

@ -0,0 +1,64 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import com.google.common.collect.Maps;
import com.google.gson.annotations.SerializedName;
import java.util.Map;
import java.util.TreeMap;
public class BiomeConfigData
{
@SerializedName("standard_weights")
public TreeMap<String, WeightedBiomeEntry> standardBiomeWeights = Maps.newTreeMap();
@SerializedName("technical_biome_toggles")
public TreeMap<String, ToggleableBiomeEntry> technicalBiomeEntries = Maps.newTreeMap();
@SerializedName("sub_biome_weights")
public TreeMap<String, SubBiomeEntry> subBiomeEntries = Maps.newTreeMap();
@SerializedName("island_biome_toggles")
public TreeMap<String, ToggleableBiomeEntry> islandBiomeEntries = Maps.newTreeMap();
@SerializedName("vanilla_biome_weights")
public TreeMap<String, WeightedBiomeEntry> vanillaBiomeEntries = Maps.newTreeMap();
public static class WeightedBiomeEntry
{
public int weight;
public WeightedBiomeEntry(int weight)
{
this.weight = weight;
}
}
public static class ToggleableBiomeEntry
{
public boolean enabled;
public ToggleableBiomeEntry(boolean enabled)
{
this.enabled = enabled;
}
}
public static class SubBiomeEntry
{
public int weight;
public float rarity;
public SubBiomeEntry(int weight, float rarity)
{
this.weight = weight;
this.rarity = rarity;
}
}
}

View File

@ -0,0 +1,90 @@
/*******************************************************************************
* Copyright 2020, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.util.biome.BiomeUtil;
import com.google.common.collect.ImmutableMap;
import net.minecraft.util.RegistryKey;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.Biomes;
import javax.annotation.Nullable;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
public class BiomeMetadata
{
private final ImmutableMap<BOPClimates, Integer> weightMap;
@Nullable
private final RegistryKey<Biome> beachBiome;
@Nullable
private final RegistryKey<Biome> riverBiome;
@Nullable
private final BiFunction<Double, Double, Integer> foliageColorFunction;
@Nullable
private final BiFunction<Double, Double, Integer> grassColorFunction;
@Nullable
private final BiFunction<Double, Double, Integer> waterColorFunction;
protected BiomeMetadata(Map<BOPClimates, Integer> weights, @Nullable RegistryKey<Biome> beachBiome, @Nullable RegistryKey<Biome> riverBiome, BiFunction<Double, Double, Integer> foliageColorFunction, BiFunction<Double, Double, Integer> grassColorFunction, BiFunction<Double, Double, Integer> waterColorFunction)
{
this.weightMap = ImmutableMap.copyOf(weights);
this.beachBiome = beachBiome;
this.riverBiome = riverBiome;
this.foliageColorFunction = foliageColorFunction;
this.grassColorFunction = grassColorFunction;
this.waterColorFunction = waterColorFunction;
}
public Map<BOPClimates, Integer> getWeightMap()
{
return this.weightMap;
}
@Nullable
public RegistryKey<Biome> getBeachBiome()
{
return this.beachBiome;
}
@Nullable
public RegistryKey<Biome> getRiverBiome()
{
return this.riverBiome;
}
@Nullable
public BiFunction<Double, Double, Integer> getFoliageColorFunction()
{
return this.foliageColorFunction;
}
@Nullable
public BiFunction<Double, Double, Integer> getGrassColorFunction()
{
return this.grassColorFunction;
}
@Nullable
public BiFunction<Double, Double, Integer> getWaterColorFunction()
{
return this.waterColorFunction;
}
public boolean hasWeights()
{
return !this.weightMap.isEmpty() && !this.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0));
}
}

View File

@ -0,0 +1,680 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.util.biome.BiomeUtil;
import biomesoplenty.common.util.config.JsonUtil;
import biomesoplenty.core.BiomesOPlenty;
import biomesoplenty.init.ModBiomes;
import com.google.common.collect.ImmutableMap;
import com.google.common.collect.Lists;
import com.google.common.collect.Maps;
import com.google.common.collect.Sets;
import com.google.gson.reflect.TypeToken;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.ResourceLocation;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.fml.loading.FMLPaths;
import net.minecraftforge.registries.ForgeRegistries;
import org.apache.commons.lang3.tuple.Pair;
import javax.annotation.Nullable;
import java.io.File;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.*;
import java.util.function.Consumer;
public class BiomeRegistry
{
private static final String CONFIG_FILE_NAME = "biomes.json";
private static Map<RegistrationType, List<DeferredRegistration>> deferrances = Maps.newHashMap();
public static void deferStandardRegistration(BiomeTemplate biome, String name)
{
defer(RegistrationType.STANDARD_BIOME, new StandardBiomeRegistrationData(biome, name));
}
public static void deferTechnicalBiomeRegistration(BiomeTemplate biome, String name)
{
defer(RegistrationType.TECHNICAL_BIOME, new ToggleableStandardBiomeRegistrationData(biome, name, true));
}
public static void deferSubBiomeRegistration(RegistryKey<Biome> parent, RegistryKey<Biome> child, int weight, float rarity)
{
// Don't register sub biome if the parent or child don't exist
if (!BiomeUtil.exists(parent) || !BiomeUtil.exists(child)) {
return;
}
defer(RegistrationType.SUB_BIOME, new SubBiomeRegistrationData(parent, child, weight, rarity));
}
public static void deferIslandBiomeRegistration(RegistryKey<Biome> key, BOPClimates climate, int weight)
{
if (!BiomeUtil.exists(key))
return;
defer(RegistrationType.ISLAND_BIOME, new SingleClimateRegistrationData(key, climate, weight));
}
public static void deferVanillaBiomeRegistration(RegistryKey<Biome> key, BOPClimates climate, int weight)
{
if (!BiomeUtil.exists(key))
return;
defer(RegistrationType.VANILLA_BIOME, new SingleClimateRegistrationData(key, climate, weight));
}
public static void configureStandardBiomes()
{
List<DeferredRegistration> standardRegistrations = deferrances.get(RegistrationType.STANDARD_BIOME);
TreeMap<String, BiomeConfigData.WeightedBiomeEntry> defaultEntries = Maps.newTreeMap();
Map<String, StandardBiomeRegistrationData> regDataMap = Maps.newHashMap();
for (DeferredRegistration<StandardBiomeRegistrationData> registration : standardRegistrations)
{
StandardBiomeRegistrationData regData = registration.regData;
// Ignore biomes which don't have any weights set by default
if (regData.getMetadata().hasWeights())
{
String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString();
Pair<BOPClimates, Integer> primaryWeight = regData.getPrimaryWeight();
defaultEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(primaryWeight.getValue()));
regDataMap.put(biomeName, registration.regData);
}
}
BiomeConfigData defaultConfigData = new BiomeConfigData();
defaultConfigData.standardBiomeWeights = defaultEntries;
BiomeConfigData configData = getConfigData(defaultConfigData);
TreeMap<String, BiomeConfigData.WeightedBiomeEntry> revisedStandardBiomeWeights = Maps.newTreeMap(defaultEntries);
// Merge the config file with the default values
for (Map.Entry<String, BiomeConfigData.WeightedBiomeEntry> biomeEntry : configData.standardBiomeWeights.entrySet())
{
if (revisedStandardBiomeWeights.containsKey(biomeEntry.getKey()))
{
revisedStandardBiomeWeights.put(biomeEntry.getKey(), biomeEntry.getValue());
}
}
// Write back to the config file
configData.standardBiomeWeights = revisedStandardBiomeWeights;
JsonUtil.writeFile(getConfigFile(), configData);
for (Map.Entry<String, BiomeConfigData.WeightedBiomeEntry> biomeEntry : configData.standardBiomeWeights.entrySet())
{
String name = biomeEntry.getKey();
BiomeConfigData.WeightedBiomeEntry weight = biomeEntry.getValue();
// Replace the default weight map for this biome with those from the config file
if (regDataMap.containsKey(name))
{
StandardBiomeRegistrationData registrationData = regDataMap.get(name);
registrationData.setPrimaryWeight(weight.weight);
}
}
}
public static void configureTechnicalBiomes()
{
List<DeferredRegistration> biomeRegistrations = deferrances.get(RegistrationType.TECHNICAL_BIOME);
TreeMap<String, BiomeConfigData.ToggleableBiomeEntry> defaultBiomeEntries = Maps.newTreeMap();
for (DeferredRegistration<ToggleableStandardBiomeRegistrationData> registration : biomeRegistrations)
{
ToggleableStandardBiomeRegistrationData regData = registration.regData;
String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString();
defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true));
}
BiomeConfigData defaultConfigData = new BiomeConfigData();
defaultConfigData.technicalBiomeEntries = defaultBiomeEntries;
BiomeConfigData configData = getConfigData(defaultConfigData);
TreeMap<String, BiomeConfigData.ToggleableBiomeEntry> revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries);
// Merge the config file with the default values
for (Map.Entry<String, BiomeConfigData.ToggleableBiomeEntry> biomeEntry : configData.technicalBiomeEntries.entrySet())
{
if (revisedBiomeEntries.containsKey(biomeEntry.getKey()))
{
revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue());
}
}
// Write back to the config file
configData.technicalBiomeEntries = revisedBiomeEntries;
JsonUtil.writeFile(getConfigFile(), configData);
for (DeferredRegistration<ToggleableStandardBiomeRegistrationData> registration : biomeRegistrations)
{
ToggleableStandardBiomeRegistrationData regData = registration.regData;
String biomeName = new ResourceLocation(BiomesOPlenty.MOD_ID, regData.getName()).toString();
if (revisedBiomeEntries.containsKey(biomeName))
{
BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName);
if (!entry.enabled)
{
registration.regData.setEnabled(false);
}
}
}
}
public static void configureSubBiomes()
{
List<DeferredRegistration> subBiomeRegistrations = deferrances.get(RegistrationType.SUB_BIOME);
TreeMap<String, BiomeConfigData.SubBiomeEntry> defaultSubBiomeEntries = Maps.newTreeMap();
Map<String, SubBiomeRegistrationData> regDataMap = Maps.newHashMap();
for (DeferredRegistration<SubBiomeRegistrationData> registration : subBiomeRegistrations)
{
SubBiomeRegistrationData regData = registration.regData;
String biomeName = registration.regData.getChild().location().toString();
defaultSubBiomeEntries.put(biomeName, new BiomeConfigData.SubBiomeEntry(regData.getWeight(), regData.getRarity()));
regDataMap.put(biomeName, registration.regData);
}
BiomeConfigData defaultConfigData = new BiomeConfigData();
defaultConfigData.subBiomeEntries = defaultSubBiomeEntries;
BiomeConfigData configData = getConfigData(defaultConfigData);
TreeMap<String, BiomeConfigData.SubBiomeEntry> revisedSubBiomeEntries = Maps.newTreeMap(defaultSubBiomeEntries);
// Merge the config file with the default values
for (Map.Entry<String, BiomeConfigData.SubBiomeEntry> biomeEntry : configData.subBiomeEntries.entrySet())
{
if (revisedSubBiomeEntries.containsKey(biomeEntry.getKey()))
{
revisedSubBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue());
}
}
// Write back to the config file
configData.subBiomeEntries = revisedSubBiomeEntries;
JsonUtil.writeFile(getConfigFile(), configData);
for (Map.Entry<String, BiomeConfigData.SubBiomeEntry> biomeEntry : configData.subBiomeEntries.entrySet())
{
String name = biomeEntry.getKey();
BiomeConfigData.SubBiomeEntry subBiomeEntry = biomeEntry.getValue();
// Replace the default values for this biome with those from the config file
if (regDataMap.containsKey(name))
{
SubBiomeRegistrationData registrationData = regDataMap.get(name);
registrationData.setWeight(subBiomeEntry.weight);
registrationData.setRarity(subBiomeEntry.rarity);
}
}
}
public static void configureIslandBiomes()
{
List<DeferredRegistration> biomeRegistrations = deferrances.get(RegistrationType.ISLAND_BIOME);
TreeMap<String, BiomeConfigData.ToggleableBiomeEntry> defaultBiomeEntries = Maps.newTreeMap();
for (DeferredRegistration<SingleClimateRegistrationData> registration : biomeRegistrations)
{
SingleClimateRegistrationData regData = registration.regData;
String biomeName = regData.getBiome().location().toString();
defaultBiomeEntries.put(biomeName, new BiomeConfigData.ToggleableBiomeEntry(true));
}
BiomeConfigData defaultConfigData = new BiomeConfigData();
defaultConfigData.islandBiomeEntries = defaultBiomeEntries;
BiomeConfigData configData = getConfigData(defaultConfigData);
TreeMap<String, BiomeConfigData.ToggleableBiomeEntry> revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries);
// Merge the config file with the default values
for (Map.Entry<String, BiomeConfigData.ToggleableBiomeEntry> biomeEntry : configData.islandBiomeEntries.entrySet())
{
if (revisedBiomeEntries.containsKey(biomeEntry.getKey()))
{
revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue());
}
}
// Write back to the config file
configData.islandBiomeEntries = revisedBiomeEntries;
JsonUtil.writeFile(getConfigFile(), configData);
for (DeferredRegistration<SingleClimateRegistrationData> registration : biomeRegistrations)
{
SingleClimateRegistrationData regData = registration.regData;
String biomeName = regData.getBiome().location().toString();
if (revisedBiomeEntries.containsKey(biomeName))
{
BiomeConfigData.ToggleableBiomeEntry entry = revisedBiomeEntries.get(biomeName);
if (!entry.enabled)
{
registration.regData.setWeight(0);
}
}
}
}
public static void configureVanillaBiomes()
{
List<DeferredRegistration> biomeRegistrations = deferrances.get(RegistrationType.VANILLA_BIOME);
TreeMap<String, BiomeConfigData.WeightedBiomeEntry> defaultBiomeEntries = Maps.newTreeMap();
Map<String, SingleClimateRegistrationData> regDataMap = Maps.newHashMap();
for (DeferredRegistration<SingleClimateRegistrationData> registration : biomeRegistrations)
{
SingleClimateRegistrationData regData = registration.regData;
String biomeName = registration.regData.getBiome().location().toString();
defaultBiomeEntries.put(biomeName, new BiomeConfigData.WeightedBiomeEntry(regData.getWeight()));
regDataMap.put(biomeName, registration.regData);
}
BiomeConfigData defaultConfigData = new BiomeConfigData();
defaultConfigData.vanillaBiomeEntries = defaultBiomeEntries;
BiomeConfigData configData = getConfigData(defaultConfigData);
TreeMap<String, BiomeConfigData.WeightedBiomeEntry> revisedBiomeEntries = Maps.newTreeMap(defaultBiomeEntries);
// Merge the config file with the default values
for (Map.Entry<String, BiomeConfigData.WeightedBiomeEntry> biomeEntry : configData.vanillaBiomeEntries.entrySet())
{
if (revisedBiomeEntries.containsKey(biomeEntry.getKey()))
{
revisedBiomeEntries.put(biomeEntry.getKey(), biomeEntry.getValue());
}
}
// Write back to the config file
configData.vanillaBiomeEntries = revisedBiomeEntries;
JsonUtil.writeFile(getConfigFile(), configData);
for (Map.Entry<String, BiomeConfigData.WeightedBiomeEntry> biomeEntry : configData.vanillaBiomeEntries.entrySet())
{
String name = biomeEntry.getKey();
BiomeConfigData.WeightedBiomeEntry islandBiomeEntry = biomeEntry.getValue();
// Replace the default values for this biome with those from the config file
if (regDataMap.containsKey(name))
{
SingleClimateRegistrationData registrationData = regDataMap.get(name);
registrationData.setWeight(islandBiomeEntry.weight);
}
}
}
private static File getConfigDirFile()
{
Path configPath = FMLPaths.CONFIGDIR.get();
Path bopConfigPath = Paths.get(configPath.toAbsolutePath().toString(), "biomesoplenty");
return bopConfigPath.toFile();
}
private static File getConfigFile()
{
return new File(getConfigDirFile(), CONFIG_FILE_NAME);
}
private static BiomeConfigData getConfigData(BiomeConfigData defaultConfigData)
{
BiomeConfigData configData = JsonUtil.getOrCreateConfigFile(getConfigDirFile(), CONFIG_FILE_NAME, defaultConfigData, new TypeToken<BiomeConfigData>(){}.getType());
return configData;
}
private static <T extends IRegistrationData> void defer(RegistrationType type, T data)
{
if (!deferrances.containsKey(type))
deferrances.put(type, Lists.newArrayList());
List<DeferredRegistration> list = deferrances.get(type);
list.add(new DeferredRegistration(type.regFunc, data));
}
public static void finalizeRegistrations(RegistrationType type)
{
if (!deferrances.containsKey(type))
return;
if (type == RegistrationType.SUB_BIOME)
{
Set<RegistryKey<Biome>> children = Sets.newHashSet();
deferrances.get(RegistrationType.SUB_BIOME).forEach((reg) -> {
RegistryKey<Biome> biome = ((SubBiomeRegistrationData)reg.regData).getChild();
if (children.contains(biome))
{
throw new RuntimeException(String.format("Sub biome %s cannot be added to multiple parents", biome.location().toString()));
}
children.add(biome);
});
}
for (DeferredRegistration reg : deferrances.get(type))
{
reg.register();
}
}
public enum RegistrationType
{
STANDARD_BIOME((StandardBiomeRegistrationData data) -> {
Biome biome = data.getBiome();
BiomeMetadata metadata = data.getMetadata();
String name = data.getName();
// Don't register biomes with their weight set to 0, that normally have weights that are non-zero
if (!metadata.getWeightMap().isEmpty() && (data.weightMap.isEmpty() || data.weightMap.entrySet().stream().allMatch((entry) -> entry.getValue().equals(0))))
{
BiomesOPlenty.logger.debug("Weights absent for " + data.getName() + ", disabling...");
return;
}
biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name));
ForgeRegistries.BIOMES.register(biome);
for (Map.Entry<BOPClimates, Integer> entry : data.getWeights().entrySet())
{
if (entry != null && entry.getValue() > 0)
{
BOPClimates climate = entry.getKey();
int weight = entry.getValue();
BiomesOPlenty.logger.debug(String.format("%s weight set to %d for climate %s", name, weight, climate.name()));
climate.addBiome(weight, BiomeUtil.createKey(data.getBiome()));
}
}
if (data.getMetadata() != null)
{
ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata());
}
}),
TECHNICAL_BIOME((ToggleableStandardBiomeRegistrationData data) -> {
Biome biome = data.getBiome();
String name = data.getName();
if (!data.getEnabled())
{
BiomesOPlenty.logger.debug("Technical biome " + data.getName() + " is disabled.");
return;
}
biome.setRegistryName(new ResourceLocation(BiomesOPlenty.MOD_ID, name));
ForgeRegistries.BIOMES.register(biome);
if (data.getMetadata() != null)
{
ModBiomes.biomeMetadata.put(BiomeUtil.createKey(data.getBiome()), data.getMetadata());
}
}),
SUB_BIOME((SubBiomeRegistrationData data) -> {
if (data.getWeight() == 0)
{
BiomesOPlenty.logger.debug("Weights absent for sub biome" + data.getChild().location().toString() + ", disabling...");
return;
}
String childName = data.getChild().location().toString();
BiomesOPlenty.logger.debug(String.format("Sub biome %s weight set to %d", childName, data.getWeight()));
ModBiomes.subBiomes.put(BiomeUtil.getBiomeId(data.getParent()), new ModBiomes.WeightedSubBiome(data.getChild(), data.getRarity(), data.getWeight()));
}),
ISLAND_BIOME((SingleClimateRegistrationData data) -> {
if (data.getWeight() == 0)
{
BiomesOPlenty.logger.debug("Weights absent for island biome" + data.getBiome().location().toString() + ", disabling...");
return;
}
String biomeName = data.getBiome().location().toString();
BiomesOPlenty.logger.debug(String.format("Island biome %s weight set to %d for climate %s", biomeName, data.getWeight(), data.getClimate().name()));
ModBiomes.islandBiomeIds.add(BiomeUtil.getBiomeId(data.getBiome()));
data.getClimate().addIslandBiome(data.getWeight(), data.getBiome());
}),
VANILLA_BIOME((SingleClimateRegistrationData data) -> {
if (data.getWeight() == 0)
{
BiomesOPlenty.logger.debug("Weights absent for vanilla biome" + data.getBiome().location().toString() + ", disabling...");
return;
}
data.getClimate().addBiome(data.getWeight(), data.getBiome());
});
public final Consumer<? extends IRegistrationData> regFunc;
RegistrationType(Consumer<? extends IRegistrationData> regFunc)
{
this.regFunc = regFunc;
}
}
private interface IRegistrationData
{
}
private static abstract class TemplateRegistrationData implements IRegistrationData
{
private final Biome biome;
private final BiomeMetadata metadata;
public TemplateRegistrationData(BiomeTemplate template)
{
this.biome = template.build();
this.metadata = template.buildMetadata();
}
public TemplateRegistrationData(Biome biome)
{
this.biome = biome;
this.metadata = null;
}
public Biome getBiome()
{
return this.biome;
}
@Nullable
public BiomeMetadata getMetadata()
{
return this.metadata;
}
}
private static class StandardBiomeRegistrationData extends TemplateRegistrationData
{
private final String name;
private Map<BOPClimates, Integer> weightMap;
public StandardBiomeRegistrationData(BiomeTemplate biome, String name)
{
super(biome);
this.name = name;
this.weightMap = Maps.newHashMap(this.getMetadata().getWeightMap());
this.ensureSingleWeight();
}
public String getName()
{
return this.name;
}
public ImmutableMap<BOPClimates, Integer> getWeights()
{
return ImmutableMap.copyOf(this.weightMap);
}
public int getWeight(BOPClimates climate)
{
return this.weightMap.get(climate);
}
public void setWeight(BOPClimates climate, int weight)
{
this.weightMap.put(climate, weight);
this.ensureSingleWeight();
}
public Pair<BOPClimates, Integer> getPrimaryWeight()
{
List<Pair<BOPClimates, Integer>> pairs = Lists.newArrayList();
this.weightMap.entrySet().forEach((entry) -> pairs.add(Pair.of(entry.getKey(), entry.getValue())));
return pairs.get(0);
}
public void setPrimaryWeight(int value)
{
BOPClimates climate = this.getPrimaryWeight().getKey();
this.setWeight(climate, value);
}
// This limitation is enforced for config file simplicity, and because we don't need it at this time
private void ensureSingleWeight()
{
if (this.weightMap.size() > 1)
{
throw new RuntimeException(String.format("%s cannot be assigned to multiple climates!\n%s", new ResourceLocation(BiomesOPlenty.MOD_ID, name).toString(), this.weightMap));
}
}
}
private static class SubBiomeRegistrationData implements IRegistrationData
{
private final RegistryKey<Biome> parent;
private final RegistryKey<Biome> child;
private int weight;
private float rarity;
public SubBiomeRegistrationData(RegistryKey<Biome> parent, RegistryKey<Biome> child, int weight, float rarity)
{
this.parent = parent;
this.child = child;
this.weight = weight;
this.rarity = rarity;
}
public RegistryKey<Biome> getParent()
{
return this.parent;
}
public RegistryKey<Biome> getChild()
{
return this.child;
}
public int getWeight()
{
return this.weight;
}
public void setWeight(int weight)
{
this.weight = weight;
}
public float getRarity()
{
return this.rarity;
}
public void setRarity(float rarity)
{
this.rarity = rarity;
}
}
private static class SingleClimateRegistrationData implements IRegistrationData
{
private final BOPClimates climate;
private final RegistryKey<Biome> biome;
private int weight;
public SingleClimateRegistrationData(RegistryKey<Biome> biome, BOPClimates climate, int weight)
{
this.biome = biome;
this.climate = climate;
this.weight = weight;
}
public RegistryKey<Biome> getBiome()
{
return this.biome;
}
public BOPClimates getClimate()
{
return this.climate;
}
public int getWeight()
{
return this.weight;
}
public void setWeight(int weight)
{
this.weight = weight;
}
}
private static class ToggleableStandardBiomeRegistrationData extends TemplateRegistrationData
{
private final String name;
private boolean enabled;
public ToggleableStandardBiomeRegistrationData(BiomeTemplate biome, String name, boolean enabled)
{
super(biome);
this.name = name;
this.enabled = enabled;
}
public String getName()
{
return this.name;
}
public boolean getEnabled()
{
return this.enabled;
}
public void setEnabled(boolean enabled)
{
this.enabled = enabled;
}
}
private static class DeferredRegistration<T extends IRegistrationData>
{
private final Consumer<T> regFunc;
private final T regData;
public DeferredRegistration(Consumer<T> regFunc, T regData)
{
this.regFunc = regFunc;
this.regData = regData;
}
public void register()
{
this.regFunc.accept(this.regData);
}
}
}

View File

@ -0,0 +1,101 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import biomesoplenty.api.enums.BOPClimates;
import net.minecraft.util.RegistryKey;
import net.minecraft.util.math.MathHelper;
import net.minecraft.world.biome.Biome;
import net.minecraft.world.biome.BiomeGenerationSettings;
import net.minecraft.world.biome.Biomes;
import net.minecraft.world.biome.MobSpawnInfo;
import java.util.HashMap;
import java.util.Map;
import java.util.function.BiFunction;
public class BiomeTemplate
{
private Map<BOPClimates, Integer> weightMap = new HashMap<BOPClimates, Integer>();
private RegistryKey<Biome> beachBiome = Biomes.BEACH;
private RegistryKey<Biome> riverBiome = Biomes.RIVER;
private BiFunction<Double, Double, Integer> foliageColorFunction;
private BiFunction<Double, Double, Integer> grassColorFunction;
private BiFunction<Double, Double, Integer> waterColorFunction;
protected void configureBiome(Biome.Builder builder) {}
protected void configureGeneration(BiomeGenerationSettings.Builder builder) {}
protected void configureMobSpawns(MobSpawnInfo.Builder builder) {}
protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder)
{
builder.setPlayerCanSpawn();
}
public final Biome build()
{
Biome.Builder biomeBuilder = new Biome.Builder();
// Configure the biome generation
BiomeGenerationSettings.Builder biomeGenBuilder = new BiomeGenerationSettings.Builder();
this.configureGeneration(biomeGenBuilder);
biomeBuilder.generationSettings(biomeGenBuilder.build());
// Configure mob spawning
MobSpawnInfo.Builder mobSpawnBuilder = new MobSpawnInfo.Builder();
this.configureDefaultMobSpawns(mobSpawnBuilder);
this.configureMobSpawns(mobSpawnBuilder);
biomeBuilder.mobSpawnSettings(mobSpawnBuilder.build());
// Configure and build the biome
this.configureBiome(biomeBuilder);
return biomeBuilder.build();
}
public final BiomeMetadata buildMetadata()
{
return new BiomeMetadata(this.weightMap, this.beachBiome, this.riverBiome, this.foliageColorFunction, this.grassColorFunction, this.waterColorFunction);
}
public void addWeight(BOPClimates climate, int weight)
{
this.weightMap.put(climate, weight);
}
public void setBeachBiome(RegistryKey<Biome> biome)
{
this.beachBiome = biome;
}
public void setRiverBiome(RegistryKey<Biome> biome)
{
this.riverBiome = biome;
}
public void setFoliageColorFunction(BiFunction<Double, Double, Integer> func)
{
this.foliageColorFunction = func;
}
public void setGrassColorFunction(BiFunction<Double, Double, Integer> func)
{
this.grassColorFunction = func;
}
public void setWaterColorFunction(BiFunction<Double, Double, Integer> func)
{
this.waterColorFunction = func;
}
public static int calculateSkyColor(float temperature)
{
float lvt_1_1_ = temperature / 3.0F;
lvt_1_1_ = MathHelper.clamp(lvt_1_1_, -1.0F, 1.0F);
return MathHelper.hsvToRgb(0.62222224F - lvt_1_1_ * 0.05F, 0.5F + lvt_1_1_ * 0.1F, 1.0F);
}
}

View File

@ -1,97 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.world.biome.BiomeGenBase;
import biomesoplenty.api.biome.BiomeOwner;
import biomesoplenty.api.biome.IExtendedBiome;
import biomesoplenty.api.biome.generation.GenerationManager;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.IGenerator;
import biomesoplenty.common.enums.BOPClimates;
public class ExtendedBiomeRegistry
{
private static Map<BiomeGenBase, BiomeExtension> externalExtensions = new HashMap();
public static boolean isRegistered(BiomeGenBase biome)
{
return biome.biomeID != -1;
}
public static BiomeExtension createExtension(BiomeGenBase biome)
{
return externalExtensions.put(biome, new BiomeExtension(biome));
}
public static IExtendedBiome getExtension(BiomeGenBase biome)
{
if (biome instanceof IExtendedBiome)
{
return (IExtendedBiome)biome;
}
else if (externalExtensions.containsKey(biome))
{
return externalExtensions.get(biome);
}
return null;
}
public static class BiomeExtension implements IExtendedBiome
{
public final BiomeGenBase biome;
private GenerationManager generationManager = new GenerationManager();
private Map<BOPClimates, Integer> weightMap = new HashMap<BOPClimates, Integer>();
private BiomeExtension(BiomeGenBase biome)
{
this.biome = biome;
}
@Override
public BiomeOwner getBiomeOwner()
{
return BiomeOwner.OTHER;
}
@Override
public void addGenerator(String name, GeneratorStage stage, IGenerator generator)
{
this.generationManager.addGenerator(name, stage, generator);
}
@Override
public GenerationManager getGenerationManager()
{
return this.generationManager;
}
@Override
public Map<BOPClimates, Integer> getWeightMap()
{
return this.weightMap;
}
@Override
public void addWeight(BOPClimates climate, int weight)
{
this.weightMap.put(climate, weight);
}
@Override
public void clearWeights()
{
this.weightMap.clear();
}
}
}

View File

@ -0,0 +1,18 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome;
import net.minecraft.world.biome.MobSpawnInfo;
public class NetherBiomeTemplate extends BiomeTemplate
{
protected void configureDefaultMobSpawns(MobSpawnInfo.Builder builder)
{
// Do nothing
}
}

View File

@ -0,0 +1,69 @@
package biomesoplenty.common.biome.nether;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.NetherBiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.client.audio.BackgroundMusicTracks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.carver.ConfiguredCarvers;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class CrystallineChasmBiome extends NetherBiomeTemplate
{
public CrystallineChasmBiome()
{
this.addWeight(BOPClimates.NETHER, 5);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x59002C).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.INSTANT_EFFECT, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_CRIMSON_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_BASALT_DELTAS_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER);
//Terrain
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER);
builder.addStructureStart(StructureFeatures.NETHER_BRIDGE);
builder.addStructureStart(StructureFeatures.BASTION_REMNANT);
builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED);
//Decoration
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.LARGE_CRYSTAL);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SMALL_CRYSTAL);
DefaultBiomeFeatures.addNetherDefaultOres(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
//Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2));
}
}

View File

@ -0,0 +1,77 @@
package biomesoplenty.common.biome.nether;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.NetherBiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.client.audio.BackgroundMusicTracks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.carver.ConfiguredCarvers;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class UndergrowthBiome extends NetherBiomeTemplate
{
public UndergrowthBiome()
{
this.addWeight(BOPClimates.NETHER, 10);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x1C2109).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.MYCELIUM, 0.00714F)).ambientLoopSound(SoundEvents.AMBIENT_WARPED_FOREST_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_NETHER_WASTES_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_NETHER_WASTES)).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(ConfiguredSurfaceBuilders.NETHER);
//Terrain
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER);
builder.addStructureStart(StructureFeatures.NETHER_BRIDGE);
builder.addStructureStart(StructureFeatures.BASTION_REMNANT);
builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_FIRE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.PATCH_SOUL_FIRE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE_EXTRA);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.GLOWSTONE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.BROWN_MUSHROOM_NETHER);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.RED_MUSHROOM_NETHER);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED);
//Vegetation
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_TREES);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_BRAMBLE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.UNDERGROWTH_FLOWERS);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.SPROUTS_UNDERGROWTH);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.DEAD_GRASS_45);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.NETHER_VINES);
DefaultBiomeFeatures.addNetherDefaultOres(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
//Entities
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.MAGMA_CUBE, 2, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.HOGLIN, 9, 3, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2));
}
}

View File

@ -0,0 +1,65 @@
package biomesoplenty.common.biome.nether;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.NetherBiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import net.minecraft.client.audio.BackgroundMusicTracks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.carver.ConfiguredCarvers;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class VisceralHeapBiome extends NetherBiomeTemplate
{
public VisceralHeapBiome()
{
this.addWeight(BOPClimates.NETHER, 7);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x601F18).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.FALLING_LAVA, 0.001785F)).ambientLoopSound(SoundEvents.AMBIENT_NETHER_WASTES_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).ambientAdditionsSound(new SoundAdditionsAmbience(SoundEvents.AMBIENT_CRIMSON_FOREST_ADDITIONS, 0.0111D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_CRIMSON_FOREST)).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.VISCERAL_HEAP);
//Terrain
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_NETHER);
builder.addStructureStart(StructureFeatures.NETHER_BRIDGE);
builder.addStructureStart(StructureFeatures.BASTION_REMNANT);
builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_OPEN);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.ORE_MAGMA);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, Features.SPRING_CLOSED);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.FLESH_TENDON);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.BONE_SPINE);
DefaultBiomeFeatures.addNetherDefaultOres(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
//Entities
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.GHAST, 50, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIFIED_PIGLIN, 100, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.STRIDER, 60, 1, 2));
}
}

View File

@ -0,0 +1,57 @@
package biomesoplenty.common.biome.nether;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.NetherBiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import net.minecraft.client.audio.BackgroundMusicTracks;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.particles.ParticleTypes;
import net.minecraft.util.SoundEvents;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.carver.ConfiguredCarvers;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
public class WitheredAbyssBiome extends NetherBiomeTemplate
{
public WitheredAbyssBiome()
{
this.addWeight(BOPClimates.NETHER, 3);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.NONE).biomeCategory(Biome.Category.NETHER).depth(0.1F).scale(0.2F).temperature(2.0F).downfall(0.0F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(0x09060F).skyColor(calculateSkyColor(2.0F)).ambientParticle(new ParticleEffectAmbience(ParticleTypes.SMOKE, 0.00357F)).ambientLoopSound(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_LOOP).ambientMoodSound(new MoodSoundAmbience(SoundEvents.AMBIENT_SOUL_SAND_VALLEY_MOOD, 6000, 8, 2.0D)).backgroundMusic(BackgroundMusicTracks.createGameMusic(SoundEvents.MUSIC_BIOME_BASALT_DELTAS)).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.WITHERED_ABYSS);
//Terrain
builder.addStructureStart(StructureFeatures.NETHER_BRIDGE);
builder.addStructureStart(StructureFeatures.BASTION_REMNANT);
builder.addCarver(GenerationStage.Carving.AIR, ConfiguredCarvers.NETHER_CAVE);
//Decoration
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_DECORATION, BOPConfiguredFeatures.OBSIDIAN_SPLATTER);
DefaultBiomeFeatures.addNetherDefaultOres(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
//Entities
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 1, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITHER_SKELETON, 1, 1, 1));
}
}

View File

@ -0,0 +1,71 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
import biomesoplenty.common.world.gen.surfacebuilders.BOPSurfaceBuilders;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
public class AlpsBiome extends BiomeTemplate
{
public AlpsBiome()
{
this.addWeight(BOPClimates.ICE_CAP, 5);
this.setBeachBiome(null);
this.setRiverBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(7.5F).scale(0.2F).temperature(-0.25F).downfall(0.3F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.DEEP_SNOW);
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4));
}
}

View File

@ -0,0 +1,83 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class AlpsFoothillsBiome extends BiomeTemplate
{
public AlpsFoothillsBiome()
{
this.setBeachBiome(null);
this.setRiverBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.SNOW).biomeCategory(Biome.Category.ICY).depth(3.0F).scale(0.3F).temperature(-0.25F).downfall(0.3F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(-0.25F)).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.ALPS_FOOTHILLS);
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_MOUNTAIN);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addDefaultSoftDisks(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.ALPS_FOOTHILLS_TREES);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addExtraEmeralds(builder);
DefaultBiomeFeatures.addInfestedStone(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.LLAMA, 5, 4, 6));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.STRAY, 80, 4, 4));
}
}

View File

@ -0,0 +1,95 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class BambooBlossomGroveBiome extends BiomeTemplate
{
public BambooBlossomGroveBiome()
{
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.FOREST).depth(0.05F).scale(0.05F).temperature(0.6F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(4159204).waterFogColor(329011).fogColor(12638463).skyColor(calculateSkyColor(0.6F)).grassColorOverride(0x85CE71).foliageColorOverride(0x63BF66).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_STANDARD);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAMBOO_BLOSSOM_GROVE_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CHERRY_BLOSSOM_GROVE_FLOWERS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CLOVER_3);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILAC_2);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SHORT_BAMBOO_5);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_COLD);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.SHEEP, 12, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PIG, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.CHICKEN, 10, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.COW, 8, 4, 4));
builder.addSpawn(EntityClassification.CREATURE, new MobSpawnInfo.Spawners(EntityType.PANDA, 80, 1, 2));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View File

@ -0,0 +1,96 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.biome.BOPBiomes;
import biomesoplenty.api.enums.BOPClimates;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.*;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilder;
import net.minecraft.world.gen.surfacebuilders.ConfiguredSurfaceBuilders;
import net.minecraft.world.gen.surfacebuilders.SurfaceBuilder;
public class BayouBiome extends BiomeTemplate
{
public BayouBiome()
{
this.addWeight(BOPClimates.SUBTROPICAL, 10);
this.setBeachBiome(BOPBiomes.bayou_mangrove);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.3F).scale(0.0F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(ConfiguredSurfaceBuilders.GRASS);
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
DefaultBiomeFeatures.addSwampClayDisk(builder);
builder.addFeature(GenerationStage.Decoration.UNDERGROUND_ORES, BOPConfiguredFeatures.MUD_DISK);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.BAYOU_TREES);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.CATTAIL_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.FERN_GRASS_8);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LARGE_FERN_7);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.LILY_PAD_10);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.TALL_GRASS_6);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.BROWN_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.PATCH_SUGAR_CANE);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.RED_MUSHROOM_NORMAL);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_SWAMP);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 1, 1, 1));
}
}

View File

@ -0,0 +1,86 @@
/*******************************************************************************
* Copyright 2014-2019, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.common.biome.BiomeTemplate;
import biomesoplenty.common.world.gen.feature.BOPConfiguredFeatures;
import biomesoplenty.common.world.gen.surfacebuilders.BOPConfiguredSurfaceBuilders;
import net.minecraft.entity.EntityClassification;
import net.minecraft.entity.EntityType;
import net.minecraft.world.biome.*;
import net.minecraft.world.gen.GenerationStage;
import net.minecraft.world.gen.feature.Features;
import net.minecraft.world.gen.feature.structure.StructureFeatures;
public class BayouMangroveBiome extends BiomeTemplate
{
public BayouMangroveBiome()
{
this.setBeachBiome(null);
}
@Override
protected void configureBiome(Biome.Builder builder)
{
builder.precipitation(Biome.RainType.RAIN).biomeCategory(Biome.Category.SWAMP).depth(-0.175F).scale(-0.075F).temperature(0.95F).downfall(0.9F);
builder.specialEffects((new BiomeAmbience.Builder()).waterColor(0x62AF84).waterFogColor(0x0C211C).fogColor(12638463).skyColor(calculateSkyColor(0.95F)).grassColorOverride(0x6FAA50).foliageColorOverride(0x8BDB67).ambientMoodSound(MoodSoundAmbience.LEGACY_CAVE_SETTINGS).build());
}
@Override
protected void configureGeneration(BiomeGenerationSettings.Builder builder)
{
builder.surfaceBuilder(BOPConfiguredSurfaceBuilders.MANGROVE);
// Structures
DefaultBiomeFeatures.addDefaultOverworldLandStructures(builder);
builder.addStructureStart(StructureFeatures.RUINED_PORTAL_SWAMP);
// Underground
DefaultBiomeFeatures.addDefaultCarvers(builder);
DefaultBiomeFeatures.addDefaultLakes(builder);
builder.addFeature(GenerationStage.Decoration.LAKES, BOPConfiguredFeatures.WATER_LAKE_COMMON);
DefaultBiomeFeatures.addDefaultMonsterRoom(builder);
DefaultBiomeFeatures.addDefaultUndergroundVariety(builder);
DefaultBiomeFeatures.addDefaultOres(builder);
////////////////////////////////////////////////////////////
// Vegetation
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.MANGROVE_ROOTS);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.SPROUTS_75);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, BOPConfiguredFeatures.STANDARD_GRASS_12);
builder.addFeature(GenerationStage.Decoration.VEGETAL_DECORATION, Features.SEAGRASS_RIVER);
////////////////////////////////////////////////////////////
// Other Features
DefaultBiomeFeatures.addDefaultSprings(builder);
DefaultBiomeFeatures.addSurfaceFreezing(builder);
}
@Override
protected void configureMobSpawns(MobSpawnInfo.Builder builder)
{
// Entities
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.COD, 10, 3, 6));
builder.addSpawn(EntityClassification.WATER_AMBIENT, new MobSpawnInfo.Spawners(EntityType.TROPICAL_FISH, 5, 8, 8));
builder.addSpawn(EntityClassification.WATER_CREATURE, new MobSpawnInfo.Spawners(EntityType.SQUID, 5, 4, 4));
builder.addSpawn(EntityClassification.AMBIENT, new MobSpawnInfo.Spawners(EntityType.BAT, 10, 8, 8));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SPIDER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE, 95, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ZOMBIE_VILLAGER, 5, 1, 1));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SKELETON, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.CREEPER, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.SLIME, 100, 4, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.ENDERMAN, 10, 1, 4));
builder.addSpawn(EntityClassification.MONSTER, new MobSpawnInfo.Spawners(EntityType.WITCH, 5, 1, 1));
}
}

View File

@ -1,48 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
public class BiomeGenAlps extends BOPBiome
{
private static final Height biomeHeight = new Height(8.0F, 0.025F);
public BiomeGenAlps()
{
// terrain
this.terrainSettings.avgHeight(198).heightVariation(12, 12).octaves(1, 1, 2, 2, 3, 3);
this.setHeight(biomeHeight);
this.setColor(13421772);
this.setEnableSnow();
this.setTemperatureRainfall(0.0F, 0.5F);
this.addWeight(BOPClimates.BOREAL, 5);
this.addWeight(BOPClimates.COLD_DESERT, 5);
this.topBlock = Blocks.snow.getDefaultState();
this.fillerBlock = Blocks.snow.getDefaultState();
// gem
this.addGenerator("emeralds", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(Blocks.emerald_ore.getDefaultState()).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("emeralds");}
}
}

View File

@ -1,55 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
public class BiomeGenArctic extends BOPBiome
{
public BiomeGenArctic()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(10, 6);
this.setColor(14540253);
this.setEnableSnow();
this.setTemperatureRainfall(0.05F, 0.5F);
this.addWeight(BOPClimates.ICE_CAP, 30);
this.spawnableCreatureList.clear();
// gem
this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("tanzanite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 11176526;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 11903827;
}
}

View File

@ -1,141 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import java.util.Random;
import net.minecraft.block.BlockDirt;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.ChunkPrimer;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBulbTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import biomesoplenty.common.world.feature.tree.GeneratorTwigletTree;
public class BiomeGenBambooForest extends BOPBiome
{
public IBlockState usualTopBlock;
public IBlockState alternateTopBlock;
public BiomeGenBambooForest()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(10, 30);
this.setColor(0xA3E053);
this.setTemperatureRainfall(1.2F, 0.9F);
this.waterColorMultiplier = 0x00ff66;
this.addWeight(BOPClimates.TROPICAL, 5);
this.topBlock = Blocks.dirt.getDefaultState().withProperty(BlockDirt.VARIANT, BlockDirt.DirtType.PODZOL);
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = Blocks.grass.getDefaultState();
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(30);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("bamboo", 2, (new GeneratorBulbTree.Builder()).minHeight(6).maxHeight(18).log(BOPBlocks.bamboo.getDefaultState()).leaves(BOPTrees.BAMBOO).create());
treeGenerator.add("bamboo_thin", 1, (new GeneratorTwigletTree.Builder()).minHeight(2).maxHeight(8).leafChance(0.3F).log(BOPBlocks.bamboo.getDefaultState()).leaves(BOPTrees.BAMBOO).create());
treeGenerator.add("oak_bush", 1, (new GeneratorBush.Builder()).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("doublegrass", 2, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// other plants
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("ferns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(4.0F).with(BlockTallGrass.EnumType.FERN).create());
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(5.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(4.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).scatterYMethod(ScatterYMethod.AT_GROUND).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.BUSH).create());
// gem
this.addGenerator("topaz", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TOPAZ).create());
}
@Override
public void configure(IConfigObj conf)
{
super.configure(conf);
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = conf.getBlockState("alternateTopBlock", this.alternateTopBlock);
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("topaz");}
}
@Override
public void genTerrainBlocks(World world, Random rand, ChunkPrimer primer, int x, int z, double noise)
{
this.topBlock = (noise + rand.nextDouble() * 3.0D > 1.8D) ? this.alternateTopBlock : this.usualTopBlock;
super.genTerrainBlocks(world, rand, primer, x, z, noise);
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.7D ? 0xD4DB55 : (noise < -0.3D ? 0xBBDD54 : 0xA3E053);
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.7D ? 0xD4DB55 : (noise < -0.3D ? 0xBBDD54 : 0xA3E053);
}
// TODO: These 2 are copied from 1.7 - but are they used ever?
public int getFogColour(BlockPos pos)
{
return 0xCCE874;
}
public float getFogDensity(BlockPos pos)
{
return 0.99F;
}
}

View File

@ -1,136 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.util.block.BlockQuery;
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorLogs;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplatter;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBayouTree;
public class BiomeGenBayou extends BOPBiome
{
public BiomeGenBayou()
{
// terrain
this.terrainSettings.avgHeight(63).heightVariation(5, 10).octaves(1, 1, 1, 1, 0, 0).sidewaysNoise(0.0F);
this.setColor(0x8BAF6B);
this.setTemperatureRainfall(0.8F, 0.9F);
this.waterColorMultiplier = 0xFFD932;
this.skyColor = 0xACC4BC;
this.seaFloorBlock = BOPBlocks.mud.getDefaultState();
this.addWeight(BOPClimates.HOT_SWAMP, 10);
this.spawnableWaterCreatureList.clear();
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10, 1, 3));
// mud
IBlockPosQuery emptyGrassOrDirt = BlockQuery.buildAnd().withAirAbove().states(this.topBlock, this.fillerBlock).create();
this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(8).maxRadius(7).with(BOPBlocks.mud.getDefaultState()).create());
this.addGenerator("mud_splatter", GeneratorStage.SAND, (new GeneratorSplatter.Builder()).amountPerChunk(4.0F).replace(emptyGrassOrDirt).with(BOPBlocks.mud.getDefaultState()).create());
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(8);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("willow", 3, (new GeneratorBayouTree.Builder()).log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(6).maxHeight(12).minLeavesRadius(1).leavesGradient(2).create());
treeGenerator.add("willow_large", 1, (new GeneratorBayouTree.Builder()).log(BOPWoods.WILLOW).leaves(BOPTrees.WILLOW).minHeight(10).maxHeight(18).minLeavesRadius(2).leavesGradient(3).create());
this.addGenerator("dead_logs", GeneratorStage.TREE, (new GeneratorLogs.Builder()).amountPerChunk(1.5F).with(BOPWoods.DEAD).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("doublegrass", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// other plants
this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.KORU).create());
this.addGenerator("cattail", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.CATTAIL).create());
this.addGenerator("double_cattail", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(3.0F).with(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("sugar_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(3.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(Blocks.reeds.getDefaultState()).minHeight(1).maxHeight(3).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).create());
this.addGenerator("lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(2.5F).with(Blocks.waterlily.getDefaultState()).create());
this.addGenerator("medium_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BlockBOPLilypad.LilypadType.MEDIUM).create());
this.addGenerator("small_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.SMALL).create());
this.addGenerator("tiny_lily", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.TINY).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(4.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).scatterYMethod(ScatterYMethod.AT_GROUND).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(4.0F).with(BOPPlants.REED).generationAttempts(32).create());
// shrooms
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(Blocks.red_mushroom.getDefaultState()).create());
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(Blocks.brown_mushroom.getDefaultState()).create());
// gem
this.addGenerator("malachite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.MALACHITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("malachite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x8BAF6B;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xB0E088;
}
// TODO: These 2 are copied from 1.7 - but are they used ever?
public int getFogColour(BlockPos pos)
{
return 0x90AF95;
}
public float getFogDensity(BlockPos pos)
{
return 0.99F;
}
}

View File

@ -1,128 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.material.Material;
import net.minecraft.block.state.IBlockState;
import net.minecraft.entity.monster.EntitySlime;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorLakes;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorTwigletTree;
public class BiomeGenBog extends BOPBiome
{
public BiomeGenBog()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(6, 20);
this.setColor(0xD8935F);
this.setTemperatureRainfall(0.5F, 0.9F);
this.topBlock = BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY);
this.fillerBlock = BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY);
this.addWeight(BOPClimates.COLD_SWAMP, 7);
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
this.spawnableMonsterList.add(new SpawnListEntry(EntitySlime.class, 10, 1, 3));
// lakes
this.addGenerator("lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(2.5F).waterLakeForBiome(this).create());
this.addGenerator("poison_lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(0.5F).waterLakeForBiome(this).liquid(BOPBlocks.poison).frozenLiquid((IBlockState)null).create());
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// mud
this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(3).maxRadius(7).with(BOPBlocks.mud.getDefaultState()).create());
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(12);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("dark_oak_twiglet", 3, (new GeneratorTwigletTree.Builder()).log(BlockPlanks.EnumType.DARK_OAK).leaves(BlockPlanks.EnumType.DARK_OAK).minHeight(5).maxHeight(10).leafChance(0.3F, 0.9F).create());
treeGenerator.add("birch_twiglet", 1, (new GeneratorTwigletTree.Builder()).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).minHeight(5).maxHeight(10).leafChance(0.3F, 0.9F).create());
treeGenerator.add("bog_bush", 3, (new GeneratorFlora.Builder()).placeOn(this.topBlock).replace(Material.air).withNonDecayingLeaf(BlockPlanks.EnumType.OAK).generationAttempts(8).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(9.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("mediumgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// other plants
this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.KORU).create());
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.6F).with(BOPPlants.BUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.8F).with(BOPPlants.DEADLEAFPILE).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(8.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).generationAttempts(32).scatterYMethod(ScatterYMethod.AT_GROUND).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.REED).generationAttempts(32).create());
// shrooms
this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create());
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(Blocks.brown_mushroom.getDefaultState()).create());
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(Blocks.red_mushroom.getDefaultState()).create());
// gem
this.addGenerator("malachite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.MALACHITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("malachite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xD8935F;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xDAE579;
}
}

View File

@ -1,99 +0,0 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
public class BiomeGenBorealForest extends BOPBiome
{
// TODO: this is very poorly named, boreal forests are cold, this is a mixed forest
public BiomeGenBorealForest()
{
// terrain
this.terrainSettings.avgHeight(70).heightVariation(15, 30);
this.setColor(0x9FB771);
this.setTemperatureRainfall(0.5F, 0.6F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 10);
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 5, 4, 4));
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(6).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(20);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("small_oak", 2, (new GeneratorBasicTree.Builder()).create());
treeGenerator.add("oak", 3, (new GeneratorBasicTree.Builder()).minHeight(8).maxHeight(12).create());
treeGenerator.add("oak_bush", 3, (new GeneratorBush.Builder()).amountPerChunk(3).create());
treeGenerator.add("yellow_autumn", 4, (new GeneratorBasicTree.Builder()).log(BlockPlanks.EnumType.BIRCH).leaves(BOPTrees.YELLOW_AUTUMN).minHeight(5).maxHeight(8).create());
treeGenerator.add("spruce", 4, (new GeneratorTaigaTree.Builder()).minHeight(10).maxHeight(19).create()); // TODO: implement pine cones
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("rose", 2, (new GeneratorDoubleFlora.Builder().with(BlockDoublePlant.EnumPlantType.ROSE).create()));
// other plants
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.DEADLEAFPILE).create());
this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.REED).generationAttempts(32).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x9FB771;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xC9CE65;
}
}

View File

@ -1,86 +0,0 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.material.Material;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPSand;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorTwigletTree;
public class BiomeGenBrushland extends BOPBiome
{
public BiomeGenBrushland()
{
// terrain
this.terrainSettings.avgHeight(66).heightVariation(3, 20);
this.setColor(0xC9C17F);
this.setTemperatureRainfall(1.2F, 0.1F);
this.addWeight(BOPClimates.MEDITERANEAN, 10);
// quicksand
this.addGenerator("quicksand_patches", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).amountPerChunk(0.6F).splotchSize(16).with(BOPBlocks.sand.getDefaultState().withProperty(BlockBOPSand.VARIANT, BlockBOPSand.SandType.QUICKSAND)).splotchSize(20).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(2.4F);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("brush", 1, (new GeneratorBasicTree.Builder()).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.OAK).minHeight(3).maxHeight(5).leafLayers(2).create());
treeGenerator.add("brush_twiglet", 2, (new GeneratorTwigletTree.Builder()).minHeight(2).maxHeight(2).log(BlockPlanks.EnumType.JUNGLE).leaves(BlockPlanks.EnumType.OAK).create());
treeGenerator.add("brush_bush", 1, (new GeneratorFlora.Builder()).placeOn(this.topBlock).replace(Material.air).withNonDecayingLeaf(BlockPlanks.EnumType.OAK).generationAttempts(8).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.6F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("allium", 2, (new GeneratorFlora.Builder().with(BlockFlower.EnumFlowerType.ALLIUM).create()));
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.4F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// other plants
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.SHRUB).create());
this.addGenerator("thorns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.THORN).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.REED).generationAttempts(32).create());
// gem
this.addGenerator("ruby", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.RUBY).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("ruby");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xC9C17F;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xB2C67F;
}
}

View File

@ -1,99 +0,0 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.block.BlockQuery;
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplatter;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import biomesoplenty.common.world.feature.tree.GeneratorPineTree;
public class BiomeGenCanyon extends BOPBiome
{
public static enum CanyonType {PLATEAU, RAVINE}
// TODO: placement of ravine is not ideal - out to be tied to the rivers layer somehow, instead of being a subbiome
public BiomeGenCanyon(CanyonType type)
{
// terrain
if (type == CanyonType.PLATEAU)
{
this.terrainSettings.avgHeight(140).heightVariation(10, 10);
this.addWeight(BOPClimates.MEDITERANEAN, 5);
}
else
{
this.terrainSettings.avgHeight(63).heightVariation(9, 40);
}
this.setColor(0xB49C70);
this.setTemperatureRainfall(1.0F, 0.3F);
this.spawnableCreatureList.clear();
this.topBlock = BOPBlocks.hard_dirt.getDefaultState();
this.fillerBlock = BOPBlocks.hard_dirt.getDefaultState();
// splatter top blocks
IBlockPosQuery emptyHardDirt = BlockQuery.buildAnd().withAirAbove().states(this.topBlock).create();
this.addGenerator("grass_splatter", GeneratorStage.SAND, (new GeneratorSplatter.Builder()).amountPerChunk(4.0F).generationAttempts(128).replace(emptyHardDirt).with(Blocks.grass.getDefaultState()).create());
// trees and logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(5);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("pine", 1, (new GeneratorPineTree.Builder()).minHeight(6).maxHeight(18).placeOn(emptyHardDirt).create());
treeGenerator.add("brush", 2, (new GeneratorBush.Builder()).log(BlockPlanks.EnumType.ACACIA).leaves(BlockPlanks.EnumType.ACACIA).placeOn(emptyHardDirt).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("bromeliad", 2, (new GeneratorFlora.Builder().with(BOPFlowers.BROMELIAD).create()));
// water plants
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.REED).generationAttempts(32).create());
// grasses (note weighting must be quite high as the grasses will only grow on the splattered grass blocks)
GeneratorWeighted grassGenerator = new GeneratorWeighted(12.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// gem
this.addGenerator("ruby", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.RUBY).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("ruby");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xA9BA64;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xA9BA64;
}
}

View File

@ -1,96 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
public class BiomeGenChaparral extends BOPBiome
{
public BiomeGenChaparral()
{
// terrain
this.terrainSettings.avgHeight(70).heightVariation(10, 30).sidewaysNoise(0.1D).octaves(1, 4, 3, 1, 1, 0);
this.setColor(0xC0D85D);
this.setTemperatureRainfall(0.8F, 0.6F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 10);
this.spawnableCreatureList.clear(); // none of your regular farmyard critters here
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 1, 2, 6));
// stone patches
this.addGenerator("stone_patches", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).amountPerChunk(2).splotchSize(15).replace(this.topBlock).with(Blocks.stone.getDefaultState()).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("rose", 8, (new GeneratorDoubleFlora.Builder()).amountPerChunk(1).with(BlockDoublePlant.EnumPlantType.ROSE).create());
flowerGenerator.add("syringa", 4, (new GeneratorDoubleFlora.Builder()).amountPerChunk(1).with(BlockDoublePlant.EnumPlantType.SYRINGA).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
// trees
this.addGenerator("trees", GeneratorStage.TREE, (new GeneratorBush.Builder()).amountPerChunk(8).create());
// other plants
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.BUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SHRUB).create());
this.addGenerator("wild_carrots", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.WILDCARROT).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.DEADLEAFPILE).create());
// water plants
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.REED).generationAttempts(32).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xC0D85D;
}
}

View File

@ -1,104 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBlobs;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
public class BiomeGenCherryBlossomGrove extends BOPBiome
{
public BiomeGenCherryBlossomGrove()
{
// terrain
this.terrainSettings.avgHeight(63).heightVariation(5, 25).sidewaysNoise(0.8F);
this.setColor(0xF88F8F);
this.setTemperatureRainfall(0.6F, 0.8F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 3);
// boulders
this.addGenerator("boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.5F).placeOn(Blocks.grass).with(Blocks.stone.getDefaultState()).minRadius(0.3F).maxRadius(1.2F).numBalls(1).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
this.addGenerator("big_boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.1F).placeOn(Blocks.grass).with(Blocks.stone.getDefaultState()).minRadius(0.3F).maxRadius(4.0F).numBalls(3).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(6.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("pink_daffodil", 4, (new GeneratorFlora.Builder().with(BOPFlowers.PINK_DAFFODIL).create()));
flowerGenerator.add("white_anemone", 3, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create()));
flowerGenerator.add("clover", 2, (new GeneratorFlora.Builder().with(BOPFlowers.CLOVER).create()));
flowerGenerator.add("syringa", 2, (new GeneratorDoubleFlora.Builder().with(BlockDoublePlant.EnumPlantType.SYRINGA).create()));
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(3.0F);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("pink_cherry", 3, (new GeneratorBasicTree.Builder()).log(BOPWoods.CHERRY).leaves(BOPTrees.PINK_CHERRY).create());
treeGenerator.add("white_cherry", 3, (new GeneratorBasicTree.Builder()).log(BOPWoods.CHERRY).leaves(BOPTrees.WHITE_CHERRY).create());
treeGenerator.add("large_pink_cherry", 1, (new GeneratorBigTree.Builder()).log(BOPWoods.CHERRY).leaves(BOPTrees.PINK_CHERRY).create());
treeGenerator.add("large_white_cherry", 1, (new GeneratorBigTree.Builder()).log(BOPWoods.CHERRY).leaves(BOPTrees.WHITE_CHERRY).create());
// other plants
this.addGenerator("flax", GeneratorStage.FLOWERS,(new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).generationAttempts(6).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.5F).with(BOPPlants.CLOVERPATCH).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// gem
this.addGenerator("topaz", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TOPAZ).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("topaz");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xA3FFAA;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xA3FFAA;
}
}

View File

@ -1,79 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.util.block.BlockQuery.BlockQueryBlock;
import biomesoplenty.common.util.block.BlockQuery.IBlockPosQuery;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBlobs;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
public class BiomeGenColdDesert extends BOPBiome
{
public static enum ColdDesertType {FROZEN, COLD;}
public BiomeGenColdDesert(ColdDesertType type)
{
// terrain
this.terrainSettings.avgHeight(70).heightVariation(10, 25).sidewaysNoise(0.7D);
this.topBlock = Blocks.gravel.getDefaultState();
this.fillerBlock = Blocks.stone.getDefaultState();
this.enableRain = false;
this.enableSnow = false;
if (type == ColdDesertType.FROZEN)
{
this.setTemperatureRainfall(0.0F, 0.0F);
this.addWeight(BOPClimates.FROZEN_DESERT, 20);
this.setColor(0xB3D7E3);
}
else
{
this.setTemperatureRainfall(0.2F, 0.0F);
this.addWeight(BOPClimates.COLD_DESERT, 20);
this.setColor(0xB3AF9B);
}
this.spawnableCreatureList.clear();
// gravel, stone and boulders
IBlockPosQuery surface = new BlockQueryBlock(Blocks.stone, Blocks.gravel, BOPBlocks.hard_ice);
if (type == ColdDesertType.FROZEN)
{
this.addGenerator("hard_ice_patches", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).amountPerChunk(6).splotchSize(24).placeOn(surface).replace(surface).with(BOPBlocks.hard_ice.getDefaultState()).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
this.addGenerator("stone_patches", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).amountPerChunk(3).splotchSize(16).placeOn(surface).replace(surface).with(Blocks.stone.getDefaultState()).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
}
else
{
this.addGenerator("stone_patches", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).amountPerChunk(6).splotchSize(24).placeOn(surface).replace(surface).with(Blocks.stone.getDefaultState()).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
}
this.addGenerator("boulders", GeneratorStage.SAND_PASS2, (new GeneratorBlobs.Builder()).amountPerChunk(0.5F).placeOn(surface).with(Blocks.stone.getDefaultState()).minRadius(0.3F).maxRadius(3.2F).numBalls(4).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// gem
this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("tanzanite");}
}
}

View File

@ -1,102 +0,0 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityWolf;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
public class BiomeGenConiferousForest extends BOPBiome
{
public BiomeGenConiferousForest()
{
// terrain
this.terrainSettings.avgHeight(68).heightVariation(10, 20);
this.setColor(0x528F60);
this.setTemperatureRainfall(0.5F, 0.5F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 10);
this.topBlock = BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY);
this.fillerBlock = BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY);
this.spawnableCreatureList.add(new SpawnListEntry(EntityWolf.class, 8, 4, 4));
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// trees
//
GeneratorWeighted treeGenerator = new GeneratorWeighted(8.0F);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("fir", 5, (new GeneratorTaigaTree.Builder()).log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(5).maxHeight(28).create());
treeGenerator.add("mega_fir", 3, (new GeneratorTaigaTree.Builder()).log(BOPWoods.FIR).leaves(BOPTrees.FIR).minHeight(20).maxHeight(40).trunkWidth(2).create());
// other plants
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.DEADLEAFPILE).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.LEAFPILE).generationAttempts(64).create());
this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create());
this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.CLOVERPATCH).create());
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.POISONIVY).create());
// shrooms
this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create());
this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create());
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(Blocks.brown_mushroom.getDefaultState()).create());
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(Blocks.red_mushroom.getDefaultState()).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.REED).generationAttempts(32).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.6F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("bluebells", 1, (new GeneratorFlora.Builder().with(BOPFlowers.BLUEBELLS)).generationAttempts(128).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).generationAttempts(128).create());
grassGenerator.add("mediumgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).generationAttempts(128).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).generationAttempts(128).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).generationAttempts(128).create());
grassGenerator.add("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
}

View File

@ -1,50 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
public class BiomeGenCrag extends BOPBiome
{
public BiomeGenCrag()
{
// terrain
this.terrainSettings.avgHeight(80).heightVariation(80, 200).minHeight(40).sidewaysNoise(0.7F);
this.setColor(5209457);
this.setTemperatureRainfall(1.0F, 0.0F);
this.addWeight(BOPClimates.WET_TEMPERATE, 3);
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
this.topBlock = BOPBlocks.crag_rock.getDefaultState();
this.fillerBlock = BOPBlocks.crag_rock.getDefaultState();
this.waterColorMultiplier = 944693;
this.skyColor = 4944498;
// gem
this.addGenerator("emeralds", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(Blocks.emerald_ore.getDefaultState()).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("emeralds");}
}
}

View File

@ -1,91 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
public class BiomeGenDeadForest extends BOPBiome
{
public BiomeGenDeadForest()
{
// terrain
this.terrainSettings.avgHeight(68).heightVariation(8, 25);
this.setColor(0xBCA165);
this.setTemperatureRainfall(0.4F, 0.3F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 5);
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(3);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("spruce", 3, (new GeneratorTaigaTree.Builder()).minHeight(6).maxHeight(16).create()); // TODO: implement pine cones
treeGenerator.add("dying_tree", 5, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).minHeight(5).maxHeight(12).foliageHeight(2).leaves(BOPTrees.DEAD).create());
treeGenerator.add("dead_tree", 5, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).minHeight(5).maxHeight(12).foliageHeight(0).foliageDensity(0.5D).log(BOPWoods.DEAD).leaves(Blocks.air.getDefaultState()).create());
treeGenerator.add("persimmon_tree", 1, (new GeneratorBasicTree.Builder()).create()); // TODO: implement persimmon fruit
// other plants
this.addGenerator("thorns", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.THORN).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.8F).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.DEADLEAFPILE).generationAttempts(64).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("dead_bushes", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.DEAD_BUSH).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
// gem
this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("tanzanite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xBCA165;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xBCA165;
}
}

View File

@ -1,126 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDirt;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
public class BiomeGenDeadSwamp extends BOPBiome
{
public BiomeGenDeadSwamp()
{
// terrain
this.terrainSettings.avgHeight(63).heightVariation(4, 4).octaves(2, 2, 1, 0, 1, 1).sidewaysNoise(0.5D);
this.setTemperatureRainfall(0.7F, 0.9F);
this.setColor(0x8BAF48);
this.waterColorMultiplier = 0xA2AD51;
this.skyColor = 0x627268;
this.topBlock = BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.LOAMY);
this.fillerBlock = BOPBlocks.dirt.getDefaultState().withProperty(BlockBOPDirt.VARIANT, BlockBOPDirt.BOPDirtType.LOAMY);
this.addWeight(BOPClimates.COLD_SWAMP, 5);
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
// mud
this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(8).maxRadius(7).with(BOPBlocks.mud.getDefaultState()).create());
this.addGenerator("mud_patches", GeneratorStage.SAND_PASS2, (new GeneratorSplotches.Builder()).amountPerChunk(1).splotchSize(12).replace(this.topBlock).with(BOPBlocks.mud.getDefaultState()).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(1.0F);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("dead_tree", 1, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).minHeight(5).maxHeight(16).log(BOPWoods.DEAD).leaves(Blocks.air.getDefaultState()).create());
// other plants
this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.KORU).create());
// water plants
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.3F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).generationAttempts(32).scatterYMethod(ScatterYMethod.AT_GROUND).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("mediumgrass", 4, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("doublegrass", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// gem
this.addGenerator("malachite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.MALACHITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("malachite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x66704C;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0x66704C;
}
/* TODO
@Override
public int getFogColour(int x, int y, int z)
{
return 9219993;
}
@Override
public float getFogDensity(int x, int y, int z)
{
// TODO Auto-generated method stub
return 0.6F;
}
*/
}

View File

@ -1,89 +0,0 @@
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBulbTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
public class BiomeGenDeciduousForest extends BOPBiome
{
public BiomeGenDeciduousForest()
{
// terrain
this.terrainSettings.avgHeight(64);
this.setColor(0xC1B749);
this.setTemperatureRainfall(0.6F, 0.8F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 10);
// trees & logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(18);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("birch_bush", 2, (new GeneratorBush.Builder()).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).create());
treeGenerator.add("oak_bush", 3, (new GeneratorBush.Builder()).create());
treeGenerator.add("tall_oak", 6, (new GeneratorBulbTree.Builder()).minHeight(10).maxHeight(15).vine(null).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
// shrooms
this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create());
this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create());
// other plants
this.addGenerator("bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.8F).with(BOPPlants.BUSH).create());
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.SHRUB).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.LEAFPILE).generationAttempts(64).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.DEADLEAFPILE).create());
this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create());
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).generationAttempts(32).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.REED).generationAttempts(32).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.1D ? 0xC1B749 : 0xAD8E41;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.1D ? 0xC4C93A : 0xAFA248;
}
}

View File

@ -1,109 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import java.util.Random;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.config.BOPConfig.IConfigObj;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import net.minecraft.block.BlockDirt;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.state.IBlockState;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.chunk.ChunkPrimer;
public class BiomeGenDenseForest extends BOPBiome
{
public IBlockState usualTopBlock;
public IBlockState alternateTopBlock;
public BiomeGenDenseForest()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(4, 12);
this.setColor(8246897);
this.setTemperatureRainfall(0.7F, 0.7F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 7);
this.topBlock = Blocks.grass.getDefaultState();
this.fillerBlock = Blocks.dirt.getDefaultState();
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = Blocks.dirt.getDefaultState().withProperty(BlockDirt.VARIANT, BlockDirt.DirtType.COARSE_DIRT);
// other plants
this.addGenerator("bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BUSH).create());
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(1.5F).with(BOPPlants.LEAFPILE).generationAttempts(64).create());
this.addGenerator("huge_trees", GeneratorStage.TREE, (new GeneratorBigTree.Builder()).amountPerChunk(1.0F).minHeight(15).maxHeight(25).create());
this.addGenerator("leaves_clusters", GeneratorStage.POST, (new GeneratorBush.Builder()).amountPerChunk(0.7F).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("fern", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public void configure(IConfigObj conf)
{
super.configure(conf);
this.usualTopBlock = this.topBlock;
this.alternateTopBlock = conf.getBlockState("alternateTopBlock", this.alternateTopBlock);
}
@Override
public void genTerrainBlocks(World world, Random rand, ChunkPrimer primer, int x, int z, double noise)
{
this.topBlock = (noise > 1.75D) ? this.alternateTopBlock : this.usualTopBlock;
super.genTerrainBlocks(world, rand, primer, x, z, noise);
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 8246897;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 10022742;
}
}

View File

@ -1,198 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPLilypad;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBigMushroom;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorMixedLily;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
// This class is not intended to be used in the game
// It just contains one of every common generator, so it can be used as a template when creating new biomes - just delete lines you don't want and adjust weightings
public class BiomeGenDummyTemplate extends BOPBiome
{
public BiomeGenDummyTemplate()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(6, 21).octaves(1, 1, 1, 1, 1, 1);
this.setColor(0xFFFFFF);
this.skyColor = 0xFFFFFF;
this.setEnableSnow();
this.setTemperatureRainfall(0.5F, 0.5F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 10);
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// mud
this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(3).maxRadius(7).with(BOPBlocks.mud.getDefaultState()).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(9);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
// TODO: standard trees here? Is there such a thing as standard trees?
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("deadgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DEADGRASS).create());
grassGenerator.add("desertgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DESERTGRASS).create());
grassGenerator.add("dunegrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DUNEGRASS).create());
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("ferns", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("doublegrass", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// other plants
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.BUSH).create());
this.addGenerator("cattails", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.CATTAIL).create());
this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.CLOVERPATCH).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.DEADLEAFPILE).create());
this.addGenerator("desert_sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.DESERTSPROUTS).create());
this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.KORU).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("poison_ivy", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.POISONIVY).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create());
this.addGenerator("spectral_ferns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SPECTRALFERN).create());
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SPROUT).create());
this.addGenerator("thorns", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.THORN).create());
this.addGenerator("tiny_cacti", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.TINYCACTUS).create());
this.addGenerator("wild_carrots", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.WILDCARROT).create());
this.addGenerator("wild_rice", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.WILDRICE).create());
this.addGenerator("witherwart", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.WITHERWART).create());
this.addGenerator("dead_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BlockTallGrass.EnumType.DEAD_BUSH).create());
this.addGenerator("eyebulbs", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPDoublePlant.DoublePlantType.EYEBULB).create());
this.addGenerator("flax", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).create());
this.addGenerator("tall_cattails", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL).create());
this.addGenerator("tall_ferns", GeneratorStage.FLOWERS, (new GeneratorDoubleFlora.Builder()).amountPerChunk(0.5F).with(BlockDoublePlant.EnumPlantType.FERN).create());
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.5F).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("sugar_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.5F).placeOn(BlockQueries.litFertileWaterside).with(Blocks.reeds.getDefaultState()).minHeight(1).maxHeight(3).create());
// TODO root
// water plants
this.addGenerator("duckweed", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BlockBOPLilypad.LilypadType.DUCKWEED).create());
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("mixed_lily", GeneratorStage.LILYPAD, (new GeneratorMixedLily.Builder()).amountPerChunk(0.5F).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).scatterYMethod(ScatterYMethod.AT_GROUND).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("alliums", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.ALLIUM).create()));
flowerGenerator.add("blue_orchids", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.BLUE_ORCHID).create()));
flowerGenerator.add("dandelions", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.DANDELION).create()));
flowerGenerator.add("houstonias", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.HOUSTONIA).create()));
flowerGenerator.add("orange_tulips", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.ORANGE_TULIP).create()));
flowerGenerator.add("oxeye_daisies", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.OXEYE_DAISY).create()));
flowerGenerator.add("pink_tulips", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.PINK_TULIP).create()));
flowerGenerator.add("poppies", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.POPPY).create()));
flowerGenerator.add("red_tulips", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.RED_TULIP).create()));
flowerGenerator.add("white_tulips", 1, (new GeneratorFlora.Builder().with(EnumFlowerType.WHITE_TULIP).create()));
flowerGenerator.add("blue_hydrangeas", 1, (new GeneratorFlora.Builder().with(BOPFlowers.BLUE_HYDRANGEA).create()));
flowerGenerator.add("bluebells", 1, (new GeneratorFlora.Builder().with(BOPFlowers.BLUEBELLS).create()));
flowerGenerator.add("bromeliads", 1, (new GeneratorFlora.Builder().with(BOPFlowers.BROMELIAD).create()));
flowerGenerator.add("burning_blossoms", 1, (new GeneratorFlora.Builder().with(BOPFlowers.BURNING_BLOSSOM).create()));
flowerGenerator.add("clover", 1, (new GeneratorFlora.Builder().with(BOPFlowers.CLOVER).create()));
flowerGenerator.add("dandelions", 1, (new GeneratorFlora.Builder().with(BOPFlowers.DANDELION).create()));
flowerGenerator.add("deathblooms", 1, (new GeneratorFlora.Builder().with(BOPFlowers.DEATHBLOOM).create()));
flowerGenerator.add("enterlotuses", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ENDERLOTUS).create()));
flowerGenerator.add("glowflowers", 1, (new GeneratorFlora.Builder().with(BOPFlowers.GLOWFLOWER).create()));
flowerGenerator.add("goldenrods", 1, (new GeneratorFlora.Builder().with(BOPFlowers.GOLDENROD).create()));
flowerGenerator.add("icy_irises", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ICY_IRIS).create()));
flowerGenerator.add("lavender", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LAVENDER).create()));
flowerGenerator.add("lilies_of_the_valley", 1, (new GeneratorFlora.Builder().with(BOPFlowers.LILY_OF_THE_VALLEY).create()));
flowerGenerator.add("miners_delights", 1, (new GeneratorFlora.Builder().with(BOPFlowers.MINERS_DELIGHT).create()));
flowerGenerator.add("orange_cosmoses", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ORANGE_COSMOS).create()));
flowerGenerator.add("pink_daffodils", 1, (new GeneratorFlora.Builder().with(BOPFlowers.PINK_DAFFODIL).create()));
flowerGenerator.add("pink_hibiscuses", 1, (new GeneratorFlora.Builder().with(BOPFlowers.PINK_HIBISCUS).create()));
flowerGenerator.add("roses", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ROSE).create()));
flowerGenerator.add("swampflowers", 1, (new GeneratorFlora.Builder().with(BOPFlowers.SWAMPFLOWER).create()));
flowerGenerator.add("violets", 1, (new GeneratorFlora.Builder().with(BOPFlowers.VIOLET).create()));
flowerGenerator.add("white_anemones", 1, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create()));
flowerGenerator.add("wildflowers", 1, (new GeneratorFlora.Builder().with(BOPFlowers.WILDFLOWER).create()));
flowerGenerator.add("paeonias", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.PAEONIA).create());
flowerGenerator.add("tall_roses", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.ROSE).create());
flowerGenerator.add("sunflowers", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.SUNFLOWER).create());
flowerGenerator.add("syringas", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.SYRINGA).create());
// shrooms
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(Blocks.brown_mushroom.getDefaultState()).create());
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(Blocks.red_mushroom.getDefaultState()).create());
this.addGenerator("blue_milk_caps", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create());
this.addGenerator("flat_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.FLAT_MUSHROOM).create());
this.addGenerator("glowshrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.GLOWSHROOM).create());
this.addGenerator("portobellos", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
this.addGenerator("shadow_shrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.SHADOW_SHROOM).create());
this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create());
// big mushrooms
GeneratorWeighted mushroomGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("big_mushrooms", GeneratorStage.BIG_SHROOM, mushroomGenerator);
mushroomGenerator.add("brown_mushroom", 1, (new GeneratorBigMushroom.Builder()).mushroomType(GeneratorBigMushroom.BigMushroomType.BROWN).create());
mushroomGenerator.add("red_mushroom", 1, (new GeneratorBigMushroom.Builder()).mushroomType(GeneratorBigMushroom.BigMushroomType.RED).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xFFFFFF;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xFFFFFF;
}
}

View File

@ -1,95 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorMixedLily;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBulbTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
public class BiomeGenEucalyptusForest extends BOPBiome
{
public BiomeGenEucalyptusForest()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(10, 20);
this.setColor(0x9DCC70);
this.setTemperatureRainfall(0.9F, 0.1F);
this.addWeight(BOPClimates.SAVANNA, 7);
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(5);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("eucalyptus_bush", 1, (new GeneratorBush.Builder()).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).create());
treeGenerator.add("tall_eucalyptus", 4, (new GeneratorBulbTree.Builder()).minHeight(10).maxHeight(25).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).vine(null).create());
// TODO: Add Eucalyptus wood as a new wood type - the bark is quite special
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(1.4F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("fern", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
// other plants
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.SPROUT).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create());
// water plants
this.addGenerator("mixed_lily", GeneratorStage.LILYPAD, (new GeneratorMixedLily.Builder()).amountPerChunk(0.8F).create());
// gem
this.addGenerator("topaz", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TOPAZ).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("topaz");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x9DCC70;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0x71CE52;
}
/*
public int getFogColour(int x, int y, int z)
{
return 14805212;
}
*/
}

View File

@ -1,145 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPCoral;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorMixedLily;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBigTree;
import biomesoplenty.common.world.feature.tree.GeneratorTaigaTree;
public class BiomeGenFen extends BOPBiome
{
public BiomeGenFen()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(8, 15);
this.setColor(0xBAC481);
this.setTemperatureRainfall(0.4F, 0.4F);
this.addWeight(BOPClimates.WET_TEMPERATE, 10);
// TODO: this.theBiomeDecorator.bopFeatures.waterSpringsPerChunk = 99;
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// mud
this.addGenerator("mud", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(3).maxRadius(7).with(BOPBlocks.mud.getDefaultState()).create());
// trees and logs
GeneratorWeighted treeGenerator = new GeneratorWeighted(9);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("dark_oak_taiga", 5, (new GeneratorTaigaTree.Builder()).log(BlockPlanks.EnumType.DARK_OAK).maxHeight(14).leaves(BlockPlanks.EnumType.DARK_OAK).create());
treeGenerator.add("dying", 10, (new GeneratorTaigaTree.Builder()).log(BlockPlanks.EnumType.DARK_OAK).maxHeight(14).leaves(BOPTrees.DEAD).create());
treeGenerator.add("dead", 1, (new GeneratorBigTree.Builder()).log(BOPWoods.DEAD).leaves(Blocks.air.getDefaultState()).maxHeight(14).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.5F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("shortgrass", 4, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("doublegrass", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.5F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("poppy", 1, (new GeneratorFlora.Builder()).with(BlockFlower.EnumFlowerType.POPPY).create());
// other plants
this.addGenerator("cattails", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.CATTAIL).create());
this.addGenerator("double_cattails", GeneratorStage.FLOWERS,(new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.TALL_CATTAIL).create());
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("koru", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.KORU).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.7F).with(BOPPlants.SHRUB).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.DEADLEAFPILE).generationAttempts(64).create());
// water plants
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.REED).generationAttempts(32).create());
this.addGenerator("mixed_lily", GeneratorStage.LILYPAD, (new GeneratorMixedLily.Builder()).amountPerChunk(2.0F).generationAttempts(96).create());
this.addGenerator("algae", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(3.0F).replace(Blocks.water).with(BOPBlocks.coral.getDefaultState().withProperty(BlockBOPCoral.VARIANT, BlockBOPCoral.CoralType.ALGAE)).generationAttempts(32).scatterYMethod(ScatterYMethod.AT_GROUND).create());
// shrooms
this.addGenerator("toadstools", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create());
this.addGenerator("portobellos", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
this.addGenerator("brown_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(Blocks.brown_mushroom.getDefaultState()).create());
this.addGenerator("red_mushrooms", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(Blocks.red_mushroom.getDefaultState()).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xBAC481;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xCEB979;
}
/* TODO
@Override
public int getFogColour(int x, int y, int z)
{
return 12638463;
}
@Override
public float getFogDensity(int x, int y, int z)
{
// TODO Auto-generated method stub
return 0.8F;
}
*/
}

View File

@ -1,75 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
public class BiomeGenFlowerField extends BOPBiome
{
public BiomeGenFlowerField()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(4, 12);
this.setColor(4044093);
this.setTemperatureRainfall(0.6F, 0.7F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 3);
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(99);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("pink_tulip", 2, (new GeneratorFlora.Builder().with(EnumFlowerType.PINK_TULIP).create()));
flowerGenerator.add("white_tulip", 5, (new GeneratorFlora.Builder().with(EnumFlowerType.WHITE_TULIP).create()));
flowerGenerator.add("orange_tulip", 7, (new GeneratorFlora.Builder().with(EnumFlowerType.ORANGE_TULIP).create()));
flowerGenerator.add("red_tulip", 10, (new GeneratorFlora.Builder().with(EnumFlowerType.RED_TULIP).create()));
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(0.2F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 7390273;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 7390273;
}
}

View File

@ -1,103 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
public class BiomeGenFrostForest extends BOPBiome
{
public BiomeGenFrostForest()
{
// terrain
this.terrainSettings.avgHeight(66).heightVariation(6, 21);
this.setColor(0xABD6BC);
this.skyColor = 0xCEE0EA;
this.setEnableSnow();
this.setTemperatureRainfall(0.0F, 0.5F);
this.addWeight(BOPClimates.TUNDRA, 10);
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(3);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("oak", 1, (new GeneratorBasicTree.Builder()).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
// other plants
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.DEADLEAFPILE).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(0.3F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("icy_irises", 1, (new GeneratorFlora.Builder().with(BOPFlowers.ICY_IRIS).create()));
flowerGenerator.add("violets", 1, (new GeneratorFlora.Builder().with(BOPFlowers.VIOLET).create()));
// gem
this.addGenerator("tanzanite", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.TANZANITE).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("tanzanite");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xABD6BC;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xABD6BC;
}
/* TODO
@Override
public int getFogColour(int x, int y, int z)
{
return 12239814;
}
@Override
public float getFogDensity(int x, int y, int z)
{
// TODO Auto-generated method stub
return 0.6F;
}
*/
}

View File

@ -1,142 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityMooshroom;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBigMushroom;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorMixedLily;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplotches;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import biomesoplenty.common.world.feature.tree.GeneratorMegaJungleTree;
public class BiomeGenFungiForest extends BOPBiome
{
public BiomeGenFungiForest()
{
// terrain
this.terrainSettings.avgHeight(66).heightVariation(10, 28);
this.setColor(0xF0F970);
this.skyColor = 0x73C69E;
this.waterColorMultiplier = 0x00FF2E;
this.setTemperatureRainfall(0.5F, 0.5F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 3);
this.spawnableCreatureList.clear();
this.spawnableWaterCreatureList.clear();
this.spawnableCreatureList.add(new SpawnListEntry(EntityMooshroom.class, 3, 4, 8));
// mycelium
this.addGenerator("mycelium", GeneratorStage.SAND, (new GeneratorSplotches.Builder()).replace(Blocks.grass).with(Blocks.mycelium.getDefaultState()).scatterYMethod(ScatterYMethod.AT_GROUND).splotchSize(32).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(12);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("mega_oak", 1, (new GeneratorMegaJungleTree.Builder()).log(BlockPlanks.EnumType.OAK).leaves(BlockPlanks.EnumType.OAK).vine(BOPBlocks.ivy.getDefaultState()).create());
treeGenerator.add("oak_bush", 1, (new GeneratorBush.Builder()).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(5.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("ferns", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.FERN).create());
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
// other plants
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.4F).with(BOPPlants.SPROUT).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.7F).with(BOPPlants.BUSH).create());
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(0.4F).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SHRUB).create());
this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(2.0F).with(BOPPlants.CLOVERPATCH).create());
// water plants
this.addGenerator("mixed_lily", GeneratorStage.LILYPAD, (new GeneratorMixedLily.Builder()).amountPerChunk(1.2F).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(1.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("swampflowers", 1, (new GeneratorFlora.Builder().with(BOPFlowers.SWAMPFLOWER).create()));
// shrooms
GeneratorWeighted mushroomGenerator = new GeneratorWeighted(4.0F);
this.addGenerator("mushrooms", GeneratorStage.SHROOM, mushroomGenerator);
mushroomGenerator.add("brown_mushrooms", 4, (new GeneratorFlora.Builder()).with(Blocks.brown_mushroom.getDefaultState()).create());
mushroomGenerator.add("red_mushrooms", 4, (new GeneratorFlora.Builder()).with(Blocks.red_mushroom.getDefaultState()).create());
mushroomGenerator.add("blue_milk_caps", 2, (new GeneratorFlora.Builder()).with(BlockBOPMushroom.MushroomType.BLUE_MILK_CAP).create());
mushroomGenerator.add("flat_mushrooms", 2, (new GeneratorFlora.Builder()).with(BlockBOPMushroom.MushroomType.FLAT_MUSHROOM).create());
mushroomGenerator.add("glowshrooms", 1, (new GeneratorFlora.Builder()).with(BlockBOPMushroom.MushroomType.GLOWSHROOM).create());
mushroomGenerator.add("portobellos", 6, (new GeneratorFlora.Builder()).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
mushroomGenerator.add("toadstools", 4, (new GeneratorFlora.Builder()).with(BlockBOPMushroom.MushroomType.TOADSTOOL).create());
// big mushrooms
GeneratorWeighted bigMushroomGenerator = new GeneratorWeighted(6);
this.addGenerator("big_mushrooms", GeneratorStage.BIG_SHROOM, bigMushroomGenerator);
bigMushroomGenerator.add("brown_mushroom", 1, (new GeneratorBigMushroom.Builder()).mushroomType(GeneratorBigMushroom.BigMushroomType.BROWN).create());
bigMushroomGenerator.add("red_mushroom", 1, (new GeneratorBigMushroom.Builder()).mushroomType(GeneratorBigMushroom.BigMushroomType.RED).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x57ED64;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0x57ED64;
}
/*
@Override
public float getFogDensity(int x, int y, int z)
{
// TODO Auto-generated method stub
return 0.6F;
}
*/
}

View File

@ -1,106 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BOPBlocks;
import biomesoplenty.common.block.BlockBOPGrass;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBigFlower;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorSplatter;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
public class BiomeGenGarden extends BOPBiome
{
public BiomeGenGarden()
{
// terrain
this.terrainSettings.avgHeight(66).heightVariation(6, 14).octaves(0, 0, 1, 1, 2, 2);
this.setColor(0x74D374);
this.setTemperatureRainfall(0.7F, 0.8F);
this.topBlock = BOPBlocks.grass.getDefaultState().withProperty(BlockBOPGrass.VARIANT, BlockBOPGrass.BOPGrassType.DAISY);
this.addWeight(BOPClimates.COOL_TEMPERATE, 3);
this.spawnableCreatureList.clear();
// TODO: implement rosester? this.spawnableCreatureList.add(new SpawnListEntry(EntityRosester.class, 10, 4, 4));
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(2);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("red_big_flowers", 1, (new GeneratorBigFlower.Builder()).flowerType(GeneratorBigFlower.BigFlowerType.RED).create());
treeGenerator.add("yellow_big_flowers", 1, (new GeneratorBigFlower.Builder()).flowerType(GeneratorBigFlower.BigFlowerType.YELLOW).create());
treeGenerator.add("oak_bush", 3, (new GeneratorBush.Builder()).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(6.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("dampgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("doublegrass", 3, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// other plants
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SPROUT).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.2F).with(BOPPlants.SHRUB).create());
this.addGenerator("melons", GeneratorStage.FLOWERS, (new GeneratorSplatter.Builder()).amountPerChunk(0.05F).placeOn(this.topBlock).with(Blocks.melon_block.getDefaultState()).generationAttempts(8).create());
// water plants
this.addGenerator("water_reeds", GeneratorStage.LILYPAD, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.REED).generationAttempts(32).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(3.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("poppies", 5, (new GeneratorFlora.Builder().with(EnumFlowerType.POPPY).create()));
flowerGenerator.add("white_anemones", 6, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create()));
flowerGenerator.add("blue_hydrangeas", 3, (new GeneratorFlora.Builder().with(BOPFlowers.BLUE_HYDRANGEA).create()));
flowerGenerator.add("sunflowers", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.SUNFLOWER).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x74D374;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0x66E266;
}
}

View File

@ -1,32 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import biomesoplenty.api.block.BOPBlocks;
public class BiomeGenGlacier extends BiomeGenArctic
{
public BiomeGenGlacier()
{
super();
// clear weights - this biome shouldn't spawn except as arctic sub-biome
clearWeights();
// terrain - higher than arctic
this.terrainSettings.avgHeight(88).heightVariation(6, 6).octaves(1, 1, 3, 1, 1, 0);
this.avgDirtDepth = 16;
this.setColor(0xB0BBD9);
this.topBlock = BOPBlocks.hard_ice.getDefaultState();
this.fillerBlock = BOPBlocks.hard_ice.getDefaultState();
}
}

View File

@ -1,103 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.block.BlockFlower.EnumFlowerType;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.api.block.BlockQueries;
import biomesoplenty.common.block.BlockBOPDoublePlant;
import biomesoplenty.common.block.BlockBOPMushroom;
import biomesoplenty.common.block.BlockBOPPlant;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorColumns;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorLakes;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
public class BiomeGenGrassland extends BOPBiome {
public BiomeGenGrassland() {
// terrain
this.terrainSettings.avgHeight(64).heightVariation(6, 25).octaves(0, 1, 2, 2, 1, 0).sidewaysNoise(0.1D);
this.setColor(0x7FDB7D);
this.setTemperatureRainfall(0.6F, 0.7F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 7);
this.addWeight(BOPClimates.DRY_TEMPERATE, 7);
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 5, 2, 6));
// lakes
this.addGenerator("lakes", GeneratorStage.SAND, (new GeneratorLakes.Builder()).amountPerChunk(0.2F).waterLakeForBiome(this).create());
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// other plants
this.addGenerator("river_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(1.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(BlockBOPPlant.paging.getVariantState(BOPPlants.RIVERCANE)).minHeight(1).maxHeight(3).create());
this.addGenerator("sugar_cane", GeneratorStage.FLOWERS,(new GeneratorColumns.Builder()).amountPerChunk(4.0F).generationAttempts(24).placeOn(BlockQueries.litFertileWaterside).with(Blocks.reeds.getDefaultState()).minHeight(1).maxHeight(3).create());
this.addGenerator("flax", GeneratorStage.FLOWERS,(new GeneratorDoubleFlora.Builder()).amountPerChunk(0.1F).with(BlockBOPDoublePlant.DoublePlantType.FLAX).generationAttempts(6).create());
// water plants
this.addGenerator("water_reeds", GeneratorStage.LILYPAD,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.REED).generationAttempts(32).create());
// flowers
this.addGenerator("flowers", GeneratorStage.FLOWERS, (new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(EnumFlowerType.ALLIUM).create());
// shrooms
this.addGenerator("portobellos", GeneratorStage.SHROOM,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BlockBOPMushroom.MushroomType.PORTOBELLO).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(0.6F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("shortgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.SHORTGRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 4, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0x7FDB7D;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0x7FDB7D;
}
}

View File

@ -1,98 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockPlanks;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
import biomesoplenty.common.world.feature.tree.GeneratorProfileTree;
public class BiomeGenGrove extends BOPBiome
{
public BiomeGenGrove()
{
// terrain
this.terrainSettings.avgHeight(66).heightVariation(8, 20).octaves(0, 1, 2, 2, 1, 0).sidewaysNoise(0.1D);
this.setColor(0x517F51);
this.setTemperatureRainfall(0.7F, 0.8F);
this.addWeight(BOPClimates.WET_TEMPERATE, 10);
// other plants
this.addGenerator("sprouts", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.SPROUT).create());
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.3F).with(BOPPlants.SHRUB).create());
this.addGenerator("clover_patches", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(3.0F).with(BOPPlants.CLOVERPATCH).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.LEAFPILE).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(3);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("dark_poplar", 1, (new GeneratorProfileTree.Builder()).minHeight(6).maxHeight(14).log(BlockPlanks.EnumType.DARK_OAK).leaves(BlockPlanks.EnumType.DARK_OAK).profile(GeneratorProfileTree.TreeProfile.POPLAR).create());
treeGenerator.add("poplar", 1, (new GeneratorProfileTree.Builder()).minHeight(8).maxHeight(18).log(BlockPlanks.EnumType.BIRCH).leaves(BlockPlanks.EnumType.BIRCH).profile(GeneratorProfileTree.TreeProfile.POPLAR).create());
treeGenerator.add("bush", 1, (new GeneratorBush.Builder()).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(5.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("clover", 4, (new GeneratorFlora.Builder().with(BOPFlowers.CLOVER).create()));
flowerGenerator.add("white_anemones", 2, (new GeneratorFlora.Builder().with(BOPFlowers.WHITE_ANEMONE).create()));
flowerGenerator.add("paeonias", 1, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.PAEONIA).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("mediumgrass", 2, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
// gem
this.addGenerator("amber", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.AMBER).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("amber");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.1D ? 0x517F51 : 0x609E58;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
double noise = GRASS_COLOR_NOISE.func_151601_a((double)pos.getX() * 0.0225D, (double)pos.getZ() * 0.0225D);
return noise < -0.1D ? 0x619961 : 0x75B569;
}
}

View File

@ -1,108 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockFlower;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.entity.passive.EntityHorse;
import net.minecraft.init.Blocks;
import net.minecraft.util.BlockPos;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPFlowers;
import biomesoplenty.common.enums.BOPGems;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.enums.BOPTrees;
import biomesoplenty.common.enums.BOPWoods;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
import biomesoplenty.common.world.feature.GeneratorWaterside;
import biomesoplenty.common.world.feature.tree.GeneratorBasicTree;
import biomesoplenty.common.world.feature.tree.GeneratorBush;
public class BiomeGenHeathland extends BOPBiome
{
public BiomeGenHeathland()
{
// terrain
this.terrainSettings.avgHeight(64).heightVariation(6, 21);
this.setColor(0xCEC577);
this.setTemperatureRainfall(0.8F, 0.2F);
this.addWeight(BOPClimates.WARM_TEMPERATE, 10);
this.spawnableCreatureList.clear(); // none of your regular farmyard critters here
// TODO: why is there SO many horses?
this.spawnableCreatureList.add(new SpawnListEntry(EntityHorse.class, 1, 2, 6));
// gravel
this.addGenerator("gravel", GeneratorStage.SAND_PASS2, (new GeneratorWaterside.Builder()).amountPerChunk(4).maxRadius(7).with(Blocks.gravel.getDefaultState()).create());
// flowers
GeneratorWeighted flowerGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("flowers", GeneratorStage.GRASS, flowerGenerator);
flowerGenerator.add("wildflower", 4, (new GeneratorFlora.Builder()).with(BOPFlowers.WILDFLOWER).create());
flowerGenerator.add("poppy", 3, (new GeneratorFlora.Builder()).with(BlockFlower.EnumFlowerType.POPPY).create());
flowerGenerator.add("syringa", 2, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.SYRINGA).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(2.0F);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("tallgrass", 2, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("mediumgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.MEDIUMGRASS).create());
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
// trees
GeneratorWeighted treeGenerator = new GeneratorWeighted(3);
this.addGenerator("trees", GeneratorStage.TREE, treeGenerator);
treeGenerator.add("jacaranda_bush", 1, (new GeneratorBush.Builder()).log(BOPWoods.JACARANDA).leaves(BOPTrees.JACARANDA).create());
treeGenerator.add("oak_bush", 1, (new GeneratorBush.Builder()).create());
treeGenerator.add("oak", 1, (new GeneratorBasicTree.Builder()).create());
// other plants
this.addGenerator("berry_bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.BERRYBUSH).create());
this.addGenerator("bushes", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.2F).with(BOPPlants.BUSH).create());
this.addGenerator("shrubs", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.SHRUB).create());
this.addGenerator("leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(1.0F).with(BOPPlants.LEAFPILE).create());
this.addGenerator("dead_leaf_piles", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.5F).with(BOPPlants.DEADLEAFPILE).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(BOPGems.PERIDOT).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
@Override
public int getGrassColorAtPos(BlockPos pos)
{
return 0xCEC577;
}
@Override
public int getFoliageColorAtPos(BlockPos pos)
{
return 0xAEC681;
}
}

View File

@ -1,66 +0,0 @@
/*******************************************************************************
* Copyright 2015, the Biomes O' Plenty Team
*
* This work is licensed under a Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International Public License.
*
* To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-nd/4.0/.
******************************************************************************/
package biomesoplenty.common.biome.overworld;
import net.minecraft.block.BlockDoublePlant;
import net.minecraft.block.BlockTallGrass;
import net.minecraft.init.Blocks;
import biomesoplenty.api.biome.BOPBiome;
import biomesoplenty.api.biome.generation.GeneratorStage;
import biomesoplenty.api.biome.generation.GeneratorWeighted;
import biomesoplenty.common.enums.BOPClimates;
import biomesoplenty.common.enums.BOPPlants;
import biomesoplenty.common.util.biome.GeneratorUtils.ScatterYMethod;
import biomesoplenty.common.world.BOPWorldSettings;
import biomesoplenty.common.world.feature.GeneratorBlobs;
import biomesoplenty.common.world.feature.GeneratorDoubleFlora;
import biomesoplenty.common.world.feature.GeneratorFlora;
import biomesoplenty.common.world.feature.GeneratorGrass;
import biomesoplenty.common.world.feature.GeneratorOreSingle;
public class BiomeGenHighland extends BOPBiome
{
public BiomeGenHighland()
{
// terrain
this.terrainSettings.avgHeight(120).heightVariation(25, 25);
this.setColor(0x7CAD66);
this.setTemperatureRainfall(0.5F, 0.8F);
this.addWeight(BOPClimates.COOL_TEMPERATE, 7);
// other plants
this.addGenerator("wild_carrots", GeneratorStage.FLOWERS,(new GeneratorFlora.Builder()).amountPerChunk(0.1F).with(BOPPlants.WILDCARROT).create());
// boulders
this.addGenerator("boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.5F).placeOn(Blocks.grass).with(Blocks.cobblestone.getDefaultState()).minRadius(0.3F).maxRadius(1.2F).numBalls(1).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
this.addGenerator("big_boulders", GeneratorStage.SAND, (new GeneratorBlobs.Builder()).amountPerChunk(0.1F).placeOn(Blocks.grass).with(Blocks.cobblestone.getDefaultState()).minRadius(0.3F).maxRadius(4.0F).numBalls(3).scatterYMethod(ScatterYMethod.AT_SURFACE).create());
// grasses
GeneratorWeighted grassGenerator = new GeneratorWeighted(10);
this.addGenerator("grass", GeneratorStage.GRASS, grassGenerator);
grassGenerator.add("wheatgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.WHEATGRASS).create());
grassGenerator.add("dampgrass", 1, (new GeneratorGrass.Builder()).with(BOPPlants.DAMPGRASS).create());
grassGenerator.add("tallgrass", 1, (new GeneratorGrass.Builder()).with(BlockTallGrass.EnumType.GRASS).create());
grassGenerator.add("doublegrass", 4, (new GeneratorDoubleFlora.Builder()).with(BlockDoublePlant.EnumPlantType.GRASS).create());
// gem
this.addGenerator("peridot", GeneratorStage.SAND, (new GeneratorOreSingle.Builder()).amountPerChunk(12).with(Blocks.emerald_ore.getDefaultState()).create());
}
@Override
public void applySettings(BOPWorldSettings settings)
{
if (!settings.generateBopGems) {this.removeGenerator("peridot");}
}
}

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