Compare commits

...
845 Commits
Author SHA1 Message Date
mezz 438883bb8e Change IAllele.getName to IAllele.getAlleleName to fix obfuscation bugs 2017-05-10 00:06:30 -07:00
mezz 828dd63acd Fix #1681 Worldgen leaves are not decaying 2017-05-07 17:40:31 -07:00
mezz f7cc35d949 Add new default leaf block without tile entity for worldgen trees #1661 2017-05-03 17:15:58 -07:00
AlexIIL ec9004b50b Fix names in BC|Transport compat
As with the update to 1.11 BC|Transport now has a modid of "buildcrafttransport", and the pipeWaterproof has been renamed to "waterproof".

You *might* want to rename this plugin from "BuildCraft 6 Transport" to "BuildCraft 8 Transport" - but that's minor.

The api for getting BC items is [here](https://github.com/BuildCraft/BuildCraftAPI/blob/8.0.x/api/buildcraft/api/BCItems.java#L123), so thet's where the registry names came from (and they won't be changed in 8.0.x or 7.99.x) in case I've made a mistake.
2017-04-29 13:19:25 -07:00
Nedelosk 8b4c1a5dab Fix #1667 Unable to open Electrical Engine GUI 2017-04-22 00:18:02 +02:00
Nedelosk 853355062e Fix #1666 Crash 1.11.2 2017-04-21 22:34:00 +02:00
Nedelosk 834e3ed55a Readd Ic2 Integration 2017-04-21 22:30:37 +02:00
Nedelosk 5b2b0bfc95 Fix #1657 Charcoal Pit - Silk Touch 2017-04-11 21:35:02 +02:00
Nedelosk 4fae8c26d9 Allow other mods to register fruit blocks 2017-04-10 01:19:49 +02:00
Nedelosk 0aa4a0f794 Add AlleleRegisterEvent 2017-04-10 00:23:39 +02:00
Nedelosk ac0864303c Clean Up Climate Region 2017-04-08 20:46:57 +02:00
Nedelosk 8811b24811 Merge branch 'mc-1.11' of https://github.com/ForestryMC/ForestryMC into mc-1.11 2017-04-08 19:37:15 +02:00
Nedelosk 904293f407 Move go home to get getBlockPathWeight 2017-04-08 19:37:07 +02:00
mezz 3e175aa8e6 Use improved Forge LootTableLoadEvent, remove hacky LootTableLoader 2017-04-07 22:09:44 -07:00
Nedelosk c4ecdde110 Fix #1426 A way to change how much sand an tree multifarm gives when a tree grows 2017-04-07 21:44:20 +02:00
Nedelosk 4aa978023d Fix #1539 Immersive engineering Ethanol doesn’t work with Bio Generator 2017-04-07 19:46:46 +02:00
Nedelosk 50009786d8 Fix #1546 Electric Engine via MFSU 2017-04-07 19:10:19 +02:00
Nedelosk 032d706fc4 Fix #1594 EnderLillySeeds not accept for farm 2017-04-07 18:37:52 +02:00
Nedelosk dcd9e90898 Fix butterfly pollen 2017-04-07 18:29:03 +02:00
Nedelosk bab3479cde Add Cache to greenhouse nursery and clean up 2017-04-07 17:45:45 +02:00
Nedelosk a5b79c97d2 Improve greenhouse recipes 2017-04-07 14:12:42 +02:00
Nedelosk 05d6dc3d4a Fix greenhouse door model 2017-04-07 13:29:25 +02:00
Nedelosk 6e2ed37e80 Fix #1652 A way to make Cobwebs out of Silk Wisps and fix greenhouse item models 2017-04-07 13:21:39 +02:00
Nedelosk c840945706 Add missing changes 2017-04-07 13:10:28 +02:00
Nedelosk ca7d6dbc66 Add honey comb blocks and improve greenhouse nursery 2017-04-07 12:55:34 +02:00
Nedelosk 81ef5d536f Add missing changes 2017-04-06 01:11:27 +02:00
Nedelosk f911100c3d Clean Up and update version 2017-04-06 00:17:41 +02:00
Nedelosk 386f0645a5 Fix #627 Make a simpler API interface for IFarmLogic and improve the farm api 2017-04-06 00:13:15 +02:00
Nedelosk 91d46d1331 Fix #1440 Chisel Blocks do not render when used as Camo for Forestry Greenhouse blocks 2017-04-05 20:57:19 +02:00
Nedelosk e1eb4d25fb Fix Biogas Engine not noticing its generated power is being used 2017-04-05 15:54:57 +02:00
Nedelosk 72234d9b5d Fix #1537 Peat Engine not noticing its generated power is being used 2017-04-05 15:52:39 +02:00
Nedelosk 97f21bfda8 Fix #1643 gave wrong comb and now world wont load 2017-04-05 13:58:41 +02:00
Nedelosk c8c30073a2 Fix #1647 Method canDrain always returns true 2017-04-05 13:48:49 +02:00
mezz dc27154c1f Update JEI integration 2017-04-03 17:20:38 -07:00
SirSengir 5b15e6f405 Allow short mead cans/capsules to be drunk. 2017-03-26 20:51:20 +02:00
SirSengir 2530a7fb15 Remove mead as well. 2017-03-26 16:18:48 +02:00
SirSengir 4ec1381fbe Merge branch 'mc-1.11' of https://github.com/ForestryMC/ForestryMC into mc-1.11 2017-03-26 16:10:26 +02:00
SirSengir d97f6f69b0 Remove the infuser and associated gui. Port recipes to potions. 2017-03-26 16:10:12 +02:00
mezz c8fcb292d4 Fix sided config options 2017-03-26 06:20:21 -07:00
Nedelosk e075fe8fbf Fix #1640 Clientside crash when trying to access Statistics "Items" screen 2017-03-26 14:26:23 +02:00
Nedelosk 5ce9b9f65b Fix #1639 Thermionic Fabricator & Glass Pane 2017-03-26 14:22:54 +02:00
Nedelosk 2c9a30db73 Fix #1639 Thermionic Fabricator & Glass Pane 2017-03-26 14:21:31 +02:00
Nedelosk 4a31215ce1 Fix #1624 Crashing 2017-03-17 21:15:52 +01:00
Nedelosk 4da5e86813 Remove butterfly hatch and add butterfly nursery 2017-03-17 20:26:43 +01:00
Nedelosk 66bdedd65b Fix #1621 Some Butterflies have missing textures 2017-03-10 23:37:08 +01:00
mezz 0149013579 Use TileUtil for getting tiles from the world 2017-03-10 00:16:44 -08:00
mezz bebf5b3aec Fix canNurse because butterflies cannot convert vanilla leaves 2017-03-09 23:26:37 -08:00
mezz 0356a3f479 Prevent butterflies from converting vanilla leaves to Forestry leaves 2017-03-09 22:32:43 -08:00
Nedelosk d29aa13377 Fix #1616 Smarter tree generation 2017-03-07 22:25:18 +01:00
Nedelosk c2313c7569 Fix cocoon 2017-03-07 21:19:37 +01:00
Nedelosk bb28a6db48 Fix #1592 Carpenter recipe for Portable Analyzer asks for Magenta Stained Glass Pane 2017-03-06 19:55:12 +01:00
Nedelosk f61f7a0aff Remove walnut and chestnut from the tree generation list 2017-03-06 17:53:36 +01:00
Nedelosk 84f01de7f9 Improve cocoon positions 2017-03-06 16:45:08 +01:00
Nedelosk ced6f3cbf2 Fix #872 Clean Up and add tree generaton 2017-03-06 15:49:12 +01:00
Nedelosk bbec31fc6e Fix #1573 Butterfly shift stats don't match analyzer stats 2017-03-05 16:37:11 +01:00
Nedelosk 67024ffb2b Fix #1394 Add podzol as an alternative to mycelium 2017-03-05 16:27:28 +01:00
Nedelosk 1945c4ff70 Fix #1484 Add podzol recipe to the moistener 2017-03-05 15:57:15 +01:00
Nedelosk 7a1e35e05f Fix #1569 Can't See Capsule/Can Recipes 2017-03-05 14:55:35 +01:00
Nedelosk 06adb53944 Fix #1610 1.11.2 - Multiblocks not assembling? 2017-03-03 22:14:43 +01:00
Nedelosk 919ce8238b Fix #1590 [1.11.2] Tin tubes creating in the carpenter without tin. 2017-02-26 20:54:48 +01:00
Nedelosk 6f285d1c88 Fix #1608 Thermionic Fabricator crash 2017-02-26 20:26:51 +01:00
Nedelosk af9ddb4928 Fix server packets on singeplayer 2017-02-26 20:17:52 +01:00
Nedelosk 1d2f3f16ab Fix #1582 Error in log related to forestry 2017-02-25 20:53:31 +01:00
Nedelosk 7f63ae8450 Fix #1600 backpackt2.png not found 2017-02-25 20:33:01 +01:00
Nedelosk 77ecd03416 Fix #1607 Wrong calculation for stamps in letters 2017-02-25 19:48:37 +01:00
Nedelosk 56a907dbec Fix Cocoon 2017-02-19 21:59:28 +01:00
mezz e93633d999 Add proper @SideOnly(Side.CLIENT) annotations
with help from Minecraft Dev Plugin
https://plugins.jetbrains.com/idea/plugin/8327-minecraft-development
2017-02-14 21:12:09 -08:00
mezz fc0d144508 Fix #1595 DataParameter ID issue caused by Forestry carts 2017-02-12 17:05:22 -08:00
mezz 252dd8ab22 Add IAlleleRegistry#addValidAlleleTypes 2017-02-08 22:51:46 -08:00
mezz 6ef41d4cd8 Allow IWoodTypes besides EnumForestryWoodType to use Forestry models 2017-02-08 22:31:40 -08:00
mezz 0b08780964 Fix pipetting small amounts of liquid 2017-02-08 22:31:40 -08:00
Nedelosk 1cf24982fd Merge pull request #1588 from Ellpeck/mc-1.11
fix Actually Additions integration
2017-02-04 17:03:17 +01:00
Ellpeck 9555005ac0 fix actually additions integration 2017-02-04 16:59:56 +01:00
Nedelosk 00b4b6552c Fix #1568 Oredict carpenter problem 2017-01-31 14:23:22 +01:00
Nedelosk 23a9af3020 Fix TreeFactory 2017-01-24 11:13:34 +01:00
Nedelosk 84a14811d8 Merge branch 'mc-1.11' of https://github.com/ForestryMC/ForestryMC into mc-1.11 2017-01-24 11:11:32 +01:00
Nedelosk 7b340fdb49 Add ILeafProvider 2017-01-24 11:11:24 +01:00
mezz 9044a72aee Fix #1572 All trees have apple oak leaves 2017-01-21 19:35:17 -08:00
mezz cc40bd1cc3 Expose WoodAccess registration to the API 2017-01-20 23:00:33 -08:00
mezz a13e63cb2d Fix #1566 Incompatibility with Schematica 2017-01-14 11:08:47 -08:00
Nedelosk 6cb3b73200 Add minecraft curseforge link 2017-01-12 16:34:25 +01:00
Nedelosk 7c8d81470d Add issue template and clean up .gitignore 2017-01-12 16:01:26 +01:00
Nedelosk ef3f64fdd9 Upadate README.md to 1.11 2017-01-12 15:51:07 +01:00
Nedelosk fdd6d75d0e Improve cocoons 2017-01-12 15:44:30 +01:00
Nedelosk 46bb2cdccd Add missing code 2017-01-12 15:37:41 +01:00
Nedelosk aa21b31392 Clean Up Wood Textures 2017-01-12 15:19:21 +01:00
Nedelosk 6a12e19798 Clean Up Wood Model Loader 2017-01-12 13:29:31 +01:00
mezz 81dd20b41c Prevent exception from accessing tile entities from ChunkCache 2017-01-09 12:25:33 -08:00
mezz 0b491f26fc Fix #1561 Crash when using the carpenter 2017-01-08 03:36:43 -08:00
mezz bb0a0343c1 Fix #1563 Crash when viewing bee trades with a villager 2017-01-08 03:20:40 -08:00
mezz 17e38e7c5e Fix #1565 Farm crash when farmland on at least one side is missing 2017-01-08 03:01:06 -08:00
Nedelosk 0ad3baecda Fix #1564 Gamecrash while trying to craft golden electron tube 2017-01-08 01:06:26 +01:00
mezz a72971e042 Fix #1562 Carpenter recipes not showing properly in JEI 2017-01-07 01:10:16 -08:00
mezz b5e24e84cb Fix #1560 network sync issue for genome tracker when player logs in 2017-01-06 23:53:24 -08:00
Nedelosk c210886400 Fix #1559 2017-01-05 16:16:10 +01:00
Nedelosk 1bdbb7e9f8 Clean Up Models, Jei and IInduvidual translators 2017-01-04 23:26:47 +01:00
Nedelosk f91c0574ad Clean Up 2017-01-03 17:01:30 +01:00
Nedelosk 50f0efb7a0 Update Module 2017-01-03 02:35:57 +01:00
Nedelosk 3d932700cd Fix carpenter and thermionic fabricator recipes 2017-01-03 02:32:45 +01:00
Nedelosk 6a00a65aac Update lang Module 2017-01-02 23:22:06 +01:00
Nedelosk 1b781684a0 Improve charcoal pile 2017-01-02 23:21:48 +01:00
mezz f2d280a861 Clean up backpack resupply handler 2017-01-02 12:08:11 -08:00
Nedelosk 87ce642235 Make that the multiblocks error renderers are only work with naturalist eyes 2017-01-01 20:19:15 +01:00
Nedelosk b297bbb2c4 Fix #1556 Log Piles Missing Models 2017-01-01 20:15:13 +01:00
Nedelosk 931e518ca2 Add multiblock tooltips and error game overlay renderer 2017-01-01 04:09:29 +01:00
Nedelosk 7ff4944281 Clean Up greenhouse 2017-01-01 03:06:36 +01:00
mezz 9d8c616b67 Add block and item migration from 1.10 to 1.11 names 2016-12-31 01:14:13 -08:00
mezz 17afceab6a Fix fruit allele registration 2016-12-31 00:51:16 -08:00
mezz 306bae490c Move away from deprecated methods 2016-12-31 00:08:02 -08:00
mezz d8e735ef3b API javadoc cleanup, use NonNullList for ItemStack lists 2016-12-30 23:39:42 -08:00
Nedelosk 55919a135e Add GreenhouseLogicTerrain and adding multiblock error renderer 2016-12-30 03:44:41 +01:00
Nedelosk 02f5c7121d Merge branch 'mc-1.11' of https://github.com/ForestryMC/ForestryMC into mc-1.11 2016-12-30 00:21:18 +01:00
mezz ed1907ddea Update to 1.11.2 2016-12-29 10:44:26 -08:00
mezz 0a0bdfa978 Fix networking for worktable and escritoire 2016-12-29 00:15:25 -08:00
mezz 4abbc92472 Clean up more null issues 2016-12-28 23:55:10 -08:00
Nedelosk 1fa461430e Fix #1554 1.10.2 Game Crash and Ticking Block Exception when using Reanimation effect on Skeleton and Zombie Drops 2016-12-28 18:35:40 -08:00
Nedelosk d60bdd5f93 Merge branch 'mc-1.11' of https://github.com/ForestryMC/ForestryMC into mc-1.11 2016-12-29 00:01:04 +01:00
Nedelosk f39ff51ca8 Fix #1554 1.10.2 Game Crash and Ticking Block Exception when using Reanimation effect on Skeleton and Zombie Drops 2016-12-28 23:57:57 +01:00
mezz 35f9b95f37 Clean up more null/nonnull, refactor gui ledgers 2016-12-26 08:08:08 -08:00
Nedelosk b2d4e6eaba Fix greenhouse lang 2016-12-26 04:10:29 +01:00
Nedelosk 5bd4ba3cd5 Add an climate pillar on the left side of the greenhouse gui 2016-12-25 15:54:41 +01:00
Nedelosk d4f9c69538 Improve greenhouse and add new greenhouse gui texture 2016-12-25 02:20:44 +01:00
Nedelosk ea976ebb2f Remove unloaded climate regions 2016-12-24 03:14:14 +01:00
Nedelosk c5798af241 Clean Up 2016-12-24 02:57:15 +01:00
Nedelosk e0bff8ec64 Clean Up and improve greenhouse climate system 2016-12-24 02:54:12 +01:00
mezz 8bf6b19a63 Remove redundant Nonnull annotations (everything is Nonnull by default) 2016-12-22 19:45:08 -08:00
mezz abf6ccb3ed Fix slot backgrounds 2016-12-22 19:26:19 -08:00
mezz d55b91df48 Fix error Ledger texture 2016-12-22 19:26:09 -08:00
mezz 1b865a0589 Update lang keys 2016-12-22 19:25:57 -08:00
mezz a2c12f3841 Fix missing resources 2016-12-22 19:18:00 -08:00
Nedelosk 08c99cb0ca Clean Up ModelBaker and start to clean up greenhouse 2016-12-23 03:44:30 +01:00
mezz 8cfafec6f9 Automatic code reformatting 2016-12-22 16:53:55 -08:00
mezz 9611ae08ae Update for 1.11. Missing assets, unstable. 2016-12-22 16:47:56 -08:00
Nedelosk 30d7365518 Fix #1508 Bee buildup during pause 2016-12-22 13:24:12 +01:00
Nedelosk 56800af94d Fix #1477 Electrical Engine places backwards 2016-12-22 03:17:35 +01:00
Nedelosk 043571b659 Improve farm control 2016-12-22 02:56:55 +01:00
Nedelosk 7fd2776147 Fix gamemode commit 2016-12-22 02:50:44 +01:00
Nedelosk d4c2d7220d Fix #580, Fix #1479 Add a way to register items to work as fertilizer in farms in a config 2016-12-22 02:47:00 +01:00
Nedelosk d392666dc4 Add missing methods 2016-12-20 06:48:35 +01:00
mezz 07b88d36fc Check that fluids are not null when auto-dumping from bottler 2016-12-19 16:33:33 -08:00
Nedelosk 408d1dc7c3 Fix #1521 IC2 + Foresty crash 2016-12-19 19:20:47 +01:00
Nedelosk 7b1aead339 Fix #1509 Alveary ignores rain 2016-12-19 19:15:28 +01:00
Nedelosk 21969649a2 Fix #1542 SidedInvWrapper used when facing is null 2016-12-19 17:12:06 +01:00
Nedelosk f9b8b89340 Adding a debug message 2016-12-12 14:21:12 +01:00
Nedelosk 65712adcb3 Delete 9864a84a13 2016-12-10 10:26:42 +01:00
Nedelosk 9864a84a13 Make that the climate event handler only work on the server thread 2016-12-10 10:24:46 +01:00
Nedelosk 8f9ae45147 Fix greenhouse climate info 2016-12-10 10:20:45 +01:00
mezz 2965f28403 Fix #1522 log spam with Reliquary void tear 2016-12-01 21:28:37 -08:00
Nirek-K cb93c217e0 Fix #1520 Add Chorus flower/plant to End flower. 2016-11-30 11:53:04 -06:00
mezz 219e9bf355 Fix EntityItemPickupEvent when there are multiple modded handlers 2016-11-29 12:44:13 -08:00
mezz 43a2f0ae76 Fix farm picking up items off Immersive Engineering conveyors 2016-11-25 12:24:15 -08:00
mezz 098b739dca Fix crash with TOP looking at new papaya fruit pods 2016-11-16 21:57:17 -08:00
mezz 4dfa29b1ad Add more null annotations 2016-11-16 21:56:31 -08:00
mezz 60d2820ed6 Update Forge and MCP 2016-11-12 19:12:57 -08:00
Nedelosk 91ec6cff9b Fix #1504 [1.10.2] [5.2.15.296] Butterflies gravitating towards 0,0 where huge swarms are found 2016-11-13 00:30:11 +01:00
mezz 1775e59880 Fix #1507 Crash with Energy Transfer to Mekanism 2016-11-11 20:38:59 -08:00
mezz f62745b233 Clean up bottler updateServerSide 2016-11-11 20:38:59 -08:00
mezz 1d6293c788 Clean up bottler canDump 2016-11-11 20:38:58 -08:00
mezz 3fd07f2a7a Clean up bottler JEI recipes 2016-11-11 20:38:58 -08:00
marcin212 856e800e0e Add Immersive Engineering compat (#1506) 2016-11-11 13:11:58 -08:00
Nirek-K d9561fd7af Re-Add Harvestcraft plugin, covers everything it did in 1.7 (new things will have to be suggested/added later) 2016-11-11 03:07:27 -06:00
Nirek-K e0623f7d57 Minor logic fixes for orchard, to get it to see crops again. 2016-11-07 18:31:12 -06:00
Nirek-K d48b979ac3 Add Actuallly Additions crops also to orchard.
Add Actuallly Additions crops also to orchard.
2016-11-07 10:25:27 -06:00
mezz 63494c40a7 Fix #1497 Chisel integration with digging backpack 2016-11-06 17:15:18 -08:00
mezz 2c57aef3b3 Fix backpack IMC handling 2016-11-06 17:14:06 -08:00
mezz 1392823fae Fix #1498 Crash when Arboriculture plugin is disabled 2016-11-06 16:55:12 -08:00
mezz 67693961ac Change address texture back to 32x32 to avoid breaking texture packs 2016-11-06 16:42:25 -08:00
mezz 8ad8597ff0 Fix #1499 Server Error when trying to access a GUI 2016-11-06 13:59:42 -08:00
mezz 4c8d5e2f43 Move Forestry GUI icons to a new TextureMap 2016-11-06 01:51:43 -08:00
mezz d04713339c Fix the build 2016-11-04 18:40:58 -07:00
Nedelosk 844aea7431 Improve butterfly item texture atlas and model, Fix #1312 2016-11-05 02:26:59 +01:00
mezz 53a9bf458e Update JEI version 2016-11-03 22:44:45 -07:00
mezz 2ae52451b2 Implement JEI lookups on fluid tanks 2016-11-03 21:24:42 -07:00
Speiger d3054c33e7 Improve Crate Renderer (#1493) 2016-11-01 15:43:03 -07:00
mezz bf61462a2a Rename centrifuge gui texture for compat with older texture packs 2016-10-31 20:59:42 -07:00
marcin212 41f3ae4b1f Allow multipass rendering for sapling 2016-10-30 17:21:13 -07:00
mezz b1d7c1721d Add strict null checking for ActuallyAdditions plugin 2016-10-30 15:01:33 -07:00
Ellpeck 2944165741 Added Actually Additions compatibility 2016-10-30 15:01:33 -07:00
Nedelosk e316526675 Fix Charcoal Pile 2016-10-30 13:35:09 +01:00
Nedelosk 411cbd913c Fix #1473 New Bottler issues 2016-10-30 13:32:55 +01:00
Nedelosk 2191d00f3d Fix #1487 Random crash in WeightedRandomModel 2016-10-30 12:54:25 +01:00
Nedelosk a02af0ddf2 Fix #1490 Crash in 1.10.2 when trying to render a Hill Cherry sapling 2016-10-30 12:51:58 +01:00
Nedelosk a8e4f5dde7 Fix #1476 Wood Pile processes instantly 2016-10-30 12:40:22 +01:00
mezz 85718b1df8 Fix and improve Bottler JEI integration 2016-10-29 18:22:40 -07:00
mezz 781b4d883b Fix #1486 Crash from candle block 2016-10-26 13:55:55 -07:00
Nedelosk c5c056750a Fix butterfly 2016-10-25 00:50:58 +02:00
Nedelosk 3b8af4e4c9 Fix IPollinatable and New Version 2016-10-25 00:47:49 +02:00
Nedelosk f58938ff32 Improve IPollinatable 2016-10-25 00:27:26 +02:00
Nedelosk a05bc13852 Fix Climate Handler and add climate test mod for devs 2016-10-22 17:37:49 +02:00
Nedelosk 1cd3e15ef9 Make climate update to a Runnable 2016-10-20 02:44:57 +02:00
Nedelosk 1ac7a7de42 Add Fluid Container Output and processing Slots to the Bottler 2016-10-19 18:58:55 +02:00
Nedelosk 90ed57c742 Merge branch 'mc-1.10' of https://github.com/ForestryMC/ForestryMC into mc-1.10 2016-10-19 13:01:26 +02:00
Nedelosk 94b0b44f51 Fix inverted climate infos 2016-10-19 13:00:56 +02:00
mezz c0fafc20da Improve bee hive performance (#1470) 2016-10-18 17:35:03 -07:00
mezz 4f85236475 Fix #1470 Prevent bees from loading new chunks 2016-10-18 16:15:44 -07:00
Nedelosk 41ab1ea374 Update Version 2016-10-19 00:34:11 +02:00
Nedelosk 52b8d56ff0 Make that the ash drop of the kiln is never 0 2016-10-19 00:04:17 +02:00
Nedelosk a61879daff Fix Alveary 2016-10-18 23:25:20 +02:00
Nedelosk e71edd5855 Fix #1469 Wrong climate info when apiary is placed in greenhouse. 2016-10-18 23:18:15 +02:00
Nedelosk 321e316665 Fix #1456 Breaking a Swarm Hive with Botania's Bore Lens crashes the game 2016-10-18 22:05:44 +02:00
Nedelosk aca6ed1fd8 Add CircuitBoard to colour.properties and Fix #1468 [1.10.2-5.2.14.283] Server side crash 2016-10-18 21:00:16 +02:00
Nedelosk b135593733 Fix #1466 Add Malisis Doors to camouflage Blacklist 2016-10-18 20:31:14 +02:00
Nedelosk ac7fe4b2d2 Fix #1467 Green House Camouflage Glitch 2016-10-18 19:58:01 +02:00
Nedelosk 5e0e045053 Fix #1465 1.10.2-5.2.14.276 - Electrical Engines no longer allow levers to attach to the back 2016-10-18 17:53:23 +02:00
Nedelosk f01dab6f58 Fix #1420 Tweak the effects of three placed fluids 2016-10-18 17:47:07 +02:00
Nedelosk 9385a4caca Fix and Add model caches and Fix #1102Invisible butterflies in itemframes 2016-10-18 17:27:24 +02:00
Nedelosk 582c8d64df Fix greenhouse tiles 2016-10-18 16:20:30 +02:00
Nedelosk 26c40b2006 Fix #1447 Flickering Greenhouse 2016-10-18 16:15:49 +02:00
Nedelosk b7eaaf6804 Fix #1460 Empty bucket can't be pulled out of (i.e.) Biogas engine 2016-10-18 15:56:09 +02:00
Nedelosk 3f07e68952 Fix #1071 Butterflies spread out of control 2016-10-18 15:42:12 +02:00
Nedelosk 2b40762934 Fix #1459 Greenhouse Door Crash w/ Malisis' Doors Mod Doors 2016-10-18 15:28:36 +02:00
Nedelosk dcaf6e144f Fix #1294 JEI Integration for Thermionic Fab and Carpenter 2016-10-18 15:12:59 +02:00
Nedelosk 413e1b9a0d Fix #1439 Cocoons config bug in 1.10.2 2016-10-18 14:13:28 +02:00
Nedelosk 64f64f2b5c Fix #1441 Centrifuge preview slot should show item being centrifuged, not its result 2016-10-18 14:10:30 +02:00
Nedelosk 2d25754731 Fix 1444 Apiarist's Chest collision box is acting weird., Fix # 1422 Cacoons cause suffocation if you walk into them 2016-10-18 13:58:47 +02:00
Nedelosk 2df6cfb7f7 Fix #1455 Igniting a Wood Pile built by a fake player crashes the game 2016-10-18 13:40:11 +02:00
Nedelosk 2d0ca49359 Fix 1408 Floating desert acacia "trees" appear in the middle of nowere 2016-10-18 13:04:54 +02:00
Nedelosk d567138365 Fix #1463, Fix #1457 Make charcoal drop with % chance, remove custom charcoals. 2016-10-18 11:57:27 +02:00
Nedelosk 72380251f3 Fix #1432 multiblock.error.small.x when right-clicking Wood Piles 2016-10-10 10:17:55 +02:00
Nedelosk 05a263826e Fix #1438 Crash after Breaking Chest 2016-10-10 10:13:17 +02:00
Nedelosk 61aa8bdcf0 Fix #1437 Drone in the analyzer 2016-10-10 10:06:53 +02:00
Nedelosk e0694842b6 Improve Camouflage Packet 2016-10-10 10:00:58 +02:00
mezz ff9942d0bc Fix "upper half" wood slabs having the wrong wood type 2016-10-08 20:05:43 -07:00
mezz dcf7776cc1 Fix #1451 Crash when placing decorative leaf blocks 2016-10-08 19:55:20 -07:00
mezz a0d355d0aa Fix some nullable annotation errors 2016-10-07 21:49:54 -07:00
mezz 649a061b6e Fix ModelBlockCached not resetting after a texture remap 2016-10-07 21:28:57 -07:00
mezz 2ca743a931 Clean up ModelBlockCached slightly 2016-10-07 21:28:25 -07:00
mezz 76a34a603b Update ApicultureJeiPlugin to stop using deprecated methods 2016-10-07 17:22:19 -07:00
mezz 68651939e7 Fix crash when getting wood blocks with invalid variants 2016-10-07 15:42:20 -07:00
Adrian Siekierka 9dcc818a17 Add model caching (#1449) 2016-10-07 15:10:09 -07:00
mezz 5e3c23e4eb Bump version 2016-10-02 17:52:43 -07:00
mezz d8ffc5c4b8 Fix #1403 worktable bug with items it can't craft 2016-10-02 17:52:35 -07:00
mezz 737f64eeab Fix uppercase variable name 2016-10-02 15:18:11 -07:00
mezz 0db27d83b0 Add worktable to JEI's Crafting Table items 2016-10-02 15:17:59 -07:00
mezz f57de19b06 Fix #1442 Let BeeHousings detect biome changes 2016-10-02 15:17:32 -07:00
mezz 1fed58fae5 Bump version 2016-09-30 23:29:41 -07:00
mezz 1d8d61daf1 Fix missing Squeezer recipes in JEI 2016-09-30 23:29:15 -07:00
mezz 65bd93749c Fix missing itemHandler capability for Farm hatch 2016-09-28 21:49:58 -07:00
mezz ac48b4b5c6 Update JEI integration 2016-09-27 02:53:06 -07:00
Nedelosk 3be3ecfc8a Fix #1436 Placing lit candles does not cause a lighting update, Fix #1435 Freshly crafted candle items are not the same as just-broken candle items. 2016-09-24 15:48:56 +02:00
mezz 10aae6b6bc Clean up IBeeHousing slightly 2016-09-19 21:12:58 -07:00
mezz d84560926c Make IArmorNaturalist into a capability 2016-09-19 21:12:58 -07:00
mezz ab3de49198 Make IArmorApiarist into a capability 2016-09-19 21:12:57 -07:00
Nedelosk b2b743398c Adding a preview slot to the centrifuge 2016-09-19 20:28:52 +02:00
Nedelosk 52f233e84a Fix the clockwork engine 2016-09-18 01:30:58 +02:00
Nedelosk 2f2ec91670 Fix #1253 2016-09-18 00:20:11 +02:00
Nedelosk 2e2fa8e6df Removed a comment because it is not true anymore 2016-09-17 23:41:02 +02:00
Nedelosk 3de6e0c5b7 Bump version 2016-09-17 23:27:51 +02:00
Nedelosk 0f4ba8d8fa Clean Up 2016-09-17 23:26:58 +02:00
Nedelosk 9570d26c83 Fix #1429 [API-TreeManager] TreeManager doesn't work properly 2016-09-17 23:19:39 +02:00
Nedelosk 01dc4f2bfe Fix the alyzer plugin api 2016-09-17 23:18:53 +02:00
Nedelosk 80de4d6490 Fix #1427 Engines do not show RF/t output properly 2016-09-17 22:50:46 +02:00
Nedelosk 253e9f18ed Fix #1078 Adding a work Cycle for every pending product 2016-09-17 22:23:11 +02:00
Nedelosk bbda5c8ba9 Fix #1419 Disabled greenhouse in plugins (as they're buggy) and having crash with 'cocoon's 2016-09-17 22:00:53 +02:00
mezz c289590740 Bump version 2016-09-15 14:53:26 -07:00
mezz 714858be99 Fix cable connections with Engines 2016-09-15 14:53:19 -07:00
mezz 5bb60cad8a Bump version 2016-09-14 14:24:24 -07:00
mezz b8cf4ef1cf Update zh_CN.lang 2016-09-14 14:24:23 -07:00
mezz d35075d681 Prevent farms on a chunk edge from loading unloaded chunks 2016-09-14 14:23:06 -07:00
mezz 79c56311c2 Refactor Energy systems and make RF optional 2016-09-13 00:37:39 -07:00
mezz 77cea8a645 Add support for new Forge energy capability 2016-09-12 16:07:47 -07:00
Nedelosk ed00ca3158 Merge pull request #1407 from ForestryMC/Greenhouse
Adding Greenhouse Window, Climate Control,  Camouflage Spray Can and Improve Recipes
2016-09-12 18:00:45 +02:00
Nedelosk 418f00abf2 Merge branch 'mc-1.10' of https://github.com/ForestryMC/ForestryMC into mc-1.10 2016-09-12 14:47:01 +02:00
mezz 0fa8fdad39 Remove access-related hints and the power-required hint 2016-09-11 22:23:38 -07:00
Aroma1997 0a110eb761 Fix #1414 greenhouse climate blocks crash (#1418) 2016-09-11 13:27:27 -07:00
Nedelosk 9feb5cb114 Merge branch 'mc-1.10' of https://github.com/ForestryMC/ForestryMC into mc-1.10 2016-09-11 10:51:16 +02:00
Nirek-K 7aa44fb1fa Fix #1413 phospor should give lava 2016-09-03 22:36:33 -05:00
Nedelosk 84fa956ce4 Improve greenhouse glass 2016-08-24 14:38:54 +02:00
Nedelosk 0c14a85c31 Adding new recipes and improve other recipes 2016-08-24 14:03:09 +02:00
Nedelosk a20fbbe60f Adding Greenhouse windows and climate control and improve recipes 2016-08-24 00:33:53 +02:00
mezz 27d932ee34 Do not allow rain tanks to be filled from the bottom 2016-08-18 18:47:32 -07:00
mezz 52b1784f25 Close #1400 Reduce frequency of End Hives 2016-08-17 21:11:24 -07:00
mezz 154f4f2712 Close #1398 Make wild bees friendlier to endermen 2016-08-17 21:03:35 -07:00
mezz 806ca2cf7b Bump version 2016-08-16 16:50:19 -07:00
mezz 9f171977bb Add some more tooltips and JEI description pages 2016-08-16 16:50:00 -07:00
mezz 2031f7fe02 Unify the way item and itemBlock tooltips are added 2016-08-16 16:49:28 -07:00
mezz 4259a55e7a Close #955 Automatically output water from the bottom of the Rain Tank 2016-08-15 00:12:47 -07:00
mezz 065344ba5e Clean up Rain Tank implementation 2016-08-14 22:52:53 -07:00
mezz d0c9a77528 Update dependencies 2016-08-14 21:40:39 -07:00
Nedelosk 604429f267 Fix #1388 Rendering Crash in Inventory and a climate crash 2016-08-14 13:27:12 +02:00
Nedelosk f5a9dcccb8 Fix #1387 Crash when creating a new world 2016-08-14 00:42:20 +02:00
Nedelosk b056cce707 Fix the woodTextures 2016-08-13 17:47:23 +02:00
Nedelosk 1497aada57 Improve the woodtextures class. 2016-08-13 17:24:26 +02:00
Nedelosk fb8ddf54b7 Adding a way to add costum wood models 2016-08-13 17:16:38 +02:00
Nedelosk 9a05322d45 Fix a mistake 2016-08-12 21:57:47 +02:00
Nedelosk 8c2008b06c Bump version 2016-08-12 21:54:08 +02:00
Nedelosk e3cc08a624 Fix #1382 Crash on load wood models and clean up 2016-08-12 21:46:41 +02:00
Nedelosk 36cd4663d9 Fix a cocoon bug and add a default cocoon loot 2016-08-12 13:59:05 +02:00
Nedelosk a014ef6d14 Fix #1381 Greenhouse climate switches between normal and very high levels and fix a cocoon bug 2016-08-12 13:48:19 +02:00
Nedelosk 34fa218c38 Try to fix the greengouse climate ledget and fix the greenhouse sprinklers 2016-08-12 13:18:08 +02:00
Nedelosk f422b577fe Fix model baker models 2016-08-12 12:42:52 +02:00
Nedelosk e379465227 Fix #1380 Forestry camoflaged blocks do not render the same as regular blocks 2016-08-12 12:36:10 +02:00
Nedelosk eb63e75200 Add new Wood Model Loader (#1367) 2016-08-11 21:22:02 -07:00
Nedelosk b5faab51c3 Update greenhouse climate system and improve camouflage system (#1334) 2016-08-11 20:53:04 -07:00
mezz ddffe5d4ce Bump version 2016-08-11 02:45:57 -07:00
mezz f59e57aa6a Fix loot table for storage plugin 2016-08-11 02:44:47 -07:00
mezz ae8cbf2ff2 Update Forge 2016-08-11 02:44:34 -07:00
mezz 305f3f78ec Update JEI 2016-08-11 02:44:25 -07:00
mezz 98e506cc4a Close #1269 Buff Peat balance vs Charcoal 2016-08-03 03:15:48 -07:00
mezz ecfb11c096 Encapsulate fields of fuels in the API 2016-08-03 02:52:18 -07:00
mezz 6b59736ffe Fix #1369 Add button click noise to various buttons 2016-08-03 02:36:28 -07:00
mezz a3a1f7720e Fix #1371 IC2 Rubber farm does not harvest rubber properly 2016-08-03 02:21:27 -07:00
bdew 89cfbfca9c Allow overriding climate when checking for mutations (#1373)
* Allow overriding climate when checking for mutations
2016-08-02 14:22:05 -07:00
mezz e0676030d6 Update Forge 2016-08-01 18:17:28 -07:00
mezz 0c76e22b8a Fix #1368 Update Tesla API 2016-08-01 18:16:51 -07:00
mezz 1a8f1751d9 Fix #1366 Alveary in the Nether does not have Hellish temperature 2016-07-31 17:24:18 -07:00
Nedelosk b95bb8315f Fix #1363 [MC 1.10.2] Crash on camouflaging greenhouse bricks 2016-07-24 12:49:17 +02:00
mezz 2cc2540bdc Fix #1362 Crash on Startup when disabling Lepidopterology module 2016-07-23 03:43:42 -07:00
Nedelosk 84af238d82 Fix #1298 Bio Generator has incorrect hitbox 2016-07-23 01:50:11 +02:00
Nedelosk 89960db2bd Fix #1251 Sprinkler's and cocoons's bounding box is not visable 2016-07-23 01:32:16 +02:00
Nedelosk c5f53bda3e Fix #1288 Broken Cocoon texture when colliding with player 2016-07-23 01:08:42 +02:00
Nedelosk 2e1b62e58d Fix #1223 Suvirvalist's Pickaxe 2016-07-23 00:50:49 +02:00
Nedelosk 982aefa165 Add a way to add custom crate content models 2016-07-22 23:14:14 +02:00
Nedelosk 2cccf95775 Fix #1360 1.10 Some items crash rendering when NBT data is missing 2016-07-22 22:34:09 +02:00
mezz 1969ed8b09 Close #1358 Change "Portable Alyzer" to "Portable Analyzer" 2016-07-21 23:44:03 -07:00
mezz c3fc490fac Fix #1355 Crash from Boggy bees 2016-07-21 22:53:58 -07:00
mezz 59687329fb Replace IBackpackFilter with Predicate<ItemStack> 2016-07-20 15:24:05 -07:00
mezz 94f751d78a Improve backpack API and add backpack config blacklists 2016-07-20 02:25:32 -07:00
mezz f6feca096f Remove unused icons from TextureManager 2016-07-19 17:41:50 -07:00
mezz 649f38efb8 Fix Escritoire renderer leaking the world object by keeping a reference 2016-07-19 16:03:30 -07:00
mezz e4e221b9fd Fix butterfly items rendering too low 2016-07-19 16:03:08 -07:00
Nedelosk d7f063eec8 Update EntityButterfly.java 2016-07-17 12:40:47 +02:00
mezz aa988a3be7 Make honeyed slice more appetizing looking 2016-07-15 17:10:40 -07:00
mezz 18f2a027bc Remove unused bucket icons 2016-07-13 22:24:33 -07:00
mezz 7ca34e52d6 Update icons that use cans or capsules 2016-07-13 22:23:26 -07:00
mezz 7f83b5b909 Change portable alyzer icon to 16x 2016-07-13 22:09:44 -07:00
mezz 641f763d05 Add tooltips and JEI descriptions for CircuitBoard, SolderingIron, Tubes 2016-07-13 21:35:27 -07:00
mezz 0df85063a1 Remove "requires discovery" and limits from electron tubes 2016-07-13 21:34:37 -07:00
mezz 550b0dc3f5 Add zombie villager textures 2016-07-13 21:34:37 -07:00
Nedelosk 96a7b688c0 Fix the jar 2016-07-13 19:34:56 +02:00
Nedelosk 8f6c2baba6 Update README.md 2016-07-13 19:20:30 +02:00
mezz 523a8da908 Fix #1348 support for IC2 in 1.10.2 2016-07-10 18:43:58 -07:00
mezz cd10500a17 Fix crash when there is snow in the way of the farm 2016-07-10 18:34:31 -07:00
mezz 6d9211ada1 Remove block access restrictions 2016-07-06 02:00:02 -07:00
mezz 003ca9273d Fix beekeeper vaillager's collar color 2016-07-05 22:13:58 -07:00
mezz 28f65f13a5 Fix worktable bug that could delete container items 2016-07-05 21:57:23 -07:00
mezz 21ee0947d7 Fix isOp permissions check 2016-07-05 21:01:54 -07:00
mezz 1e11992de2 Fix #1333 Stop wild hive bees from attacking passive animals 2016-07-03 23:05:46 -07:00
mezz d690a38fa2 Fix #1340 Rare NPE from BeekeepingLogic.queenWorkTick 2016-07-03 22:16:12 -07:00
mezz 46eb29cf28 Fix #1342 Crash when giving multifarm control a redstone signal 2016-07-03 20:59:26 -07:00
mezz fb01d3ffaa Update IC2 2016-07-03 12:38:47 -07:00
mezz e676a73a7c Fix doors not showing correctly in TheOneProbe 2016-07-01 22:41:29 -07:00
mezz 6e348dbc5d Add support for Tesla power 2016-06-30 16:54:57 -07:00
mezz 39114ec429 Tidy up capabilities 2016-06-30 16:26:36 -07:00
mezz 3b82fe3bd0 Update to Minecraft 1.10.2 2016-06-30 16:22:15 -07:00
mezz 2667334252 Increase chances of getting a research note on the escritoire 2016-06-28 13:56:28 -07:00
mezz be39e2c3c3 Only list mutations for the primary species in the handheld Alyzer 2016-06-28 13:51:15 -07:00
mezz 40eece7d77 Fix bee carts dropping invalid item when broken 2016-06-28 13:01:39 -07:00
mezz 4fcc785e85 Make Escritoire give unlearned mutation notes first 2016-06-28 02:24:00 -07:00
mezz 11e4097bd8 Use List in the API where appropriate 2016-06-28 02:10:03 -07:00
mezz f8c37da06d Improve escritoire responsiveness on slow networks or laggy servers 2016-06-28 01:54:32 -07:00
mezz 09756f21fd Fix grafter break sounds and animation on Forestry leaves
(no fix for vanilla leaves, the harvest event is fired server-side only)
2016-06-25 01:37:44 -07:00
mezz a06c4bd1dc Make grafter work on vanilla leaves 2016-06-25 01:36:33 -07:00
mezz bb477f0dfb Add tooltip for grafter use count on a new grafter 2016-06-25 00:34:51 -07:00
mezz 0b86b3df8f Buff the grafter slightly from 5 uses to 10 uses 2016-06-25 00:34:31 -07:00
mezz edd5357008 Make princess bee crown silver to stand out better 2016-06-25 00:23:24 -07:00
mezz dfb4e04f4a Update Forge 2016-06-25 00:04:26 -07:00
mezz 45c0375387 Fix bee particles becoming active at night when hive is opened 2016-06-25 00:04:11 -07:00
mezz 5e4cfa5112 Add oredict for charcoal 2016-06-25 00:03:16 -07:00
mezz 086b53e4a3 Add beetroot seeds to the squeezer for seed oil 2016-06-24 19:29:02 -07:00
mezz fbb5612b8c Slightly improve the look of larch bark 2016-06-24 19:21:54 -07:00
mezz c3c471ab33 Fix localization for backpack modes 2016-06-24 18:32:48 -07:00
mezz 67ddc252aa Stop Balsa leaves from generating infinitely downwards 2016-06-24 16:50:01 -07:00
mezz 59945a8961 Change name of "managed" farm to "automatic" 2016-06-24 16:40:57 -07:00
mezz bbabb967b1 Fix localization of latticed heath butterfly and ash pile 2016-06-24 16:34:52 -07:00
mezz 4cb1ee4cb1 Simply tree genomes, move charcoal properties to Species 2016-06-24 16:00:11 -07:00
mezz 95135544e2 Fix #1330 Fix resource checks for resources below an Alveary 2016-06-23 15:31:36 -07:00
mezz e34b71c13e Update dependencies 2016-06-23 14:51:32 -07:00
mezz cc8bcf384a Fix rare crash when getting rewards from escritoire 2016-06-23 14:51:12 -07:00
mezz 1f21952beb Fix #1328 Crash when trying to pick up wheat from Moistener process slot 2016-06-23 14:50:35 -07:00
mezz 1ed4ced65f Remove "useDepAts = true" in gradle, it's no longer needed for JEI's API 2016-06-23 02:54:25 -07:00
mezz beb74e635d Use JEI API jar at compile time 2016-06-23 02:34:50 -07:00
mezz 40c4fc5d1f Update for Minecraft 1.10 2016-06-23 02:19:36 -07:00
mezz 645dba903d Improve the look of cherry tree leaf generation 2016-06-22 21:14:38 -07:00
mezz 1ac4acdb47 Fix ebony trees growing offcenter from their saplings 2016-06-22 21:13:52 -07:00
mezz 74aa33e80c Remove all the saplings when a large tree grows 2016-06-22 21:13:35 -07:00
mezz 6f6b45abcf Add EnderIO compat for ice coolant and ethanol fuel 2016-06-22 19:00:05 -07:00
mezz 7297a6a5d3 Add ExtraUtils2 EnderLily compat for the farm 2016-06-22 18:40:07 -07:00
mezz 5ef76cffca Fix invalid recipes warning when BoP plugin is enabled 2016-06-22 16:19:40 -07:00
mezz 9284f84645 Fix pipette filling bug 2016-06-22 16:18:55 -07:00
mezz 85ba33e1ff Add trapdoorWood oredict name 2016-06-20 23:11:44 -07:00
mezz 9f5f5e7812 Fix network sync of item floating over Escritoire 2016-06-19 23:03:02 -07:00
mezz 8617c4a79f Properly center the item floating over the escritoire 2016-06-19 22:18:31 -07:00
mezz e9809238de Fix #1325 Null Pointer Exception from broken mailbox 2016-06-18 16:14:13 -07:00
mezz c0a22f4a28 Split mutationCustom into mutationBuilder and Mutation
Remove EntityBee
Update MutationConditionRequiresResource to use blockState
2016-06-17 15:20:19 -07:00
mezz 41c6fb15b3 Make escritoire convert vanilla saplings for analysis 2016-06-17 15:17:43 -07:00
mezz b5d65e83f0 Render floating sapling over Escritoire when in use 2016-06-17 15:17:43 -07:00
mezz 1a7c148a7e Update JEI 2016-06-16 18:55:53 -07:00
mezz ead630aa51 Clean up fluids a bit 2016-06-16 14:50:57 -07:00
mezz 85b71c785a Fix colored fluid drip particles 2016-06-16 14:43:18 -07:00
mezz 04cb58dfa2 Use FluidRegistry Water and Lava 2016-06-16 14:38:12 -07:00
mezz 3822e90ada Fix #1299 use dynamic textures for fluid containers 2016-06-16 14:03:30 -07:00
mezz af5cb93689 Use ModelBakery directly, less layers of abstraction 2016-06-16 13:58:03 -07:00
mezz 6a62024dd4 Fix wrench rotation handling 2016-06-15 16:26:57 -07:00
mezz bedb7ffe85 Fix the save bee stats command 2016-06-15 16:04:53 -07:00
mezz 4a21641bcd Fix backpacks trying to interact with inventories in a sided way 2016-06-15 16:04:38 -07:00
mezz 21d0b832b9 Fix crash when mods ask for the inventory without a specific side 2016-06-15 00:03:20 -07:00
mezz ce9081249f Fix compatibility with Chisels & Bits 2016-06-14 16:17:12 -07:00
mezz f6786cd44a Fix #1289 Trade station price can show a negative stack in catalog 2016-06-13 23:08:34 -07:00
mezz a045c18a89 Fix #1300 Crash in CharcoalPileRenderer with WAILA 2016-06-13 21:43:54 -07:00
mezz d6af85ad77 Fix #1314 Crash with WAILA when looking at broken leaves 2016-06-13 21:39:28 -07:00
mezz af55bd86a2 Fix #1322 JEI missing most squeezer recipes 2016-06-13 21:33:32 -07:00
mezz 7aa840282f Fix #1229 Squeezer Recipes in JEI do not show chance % 2016-06-13 21:32:19 -07:00
mezz a5d57c4788 Add villager name localization 2016-06-13 21:30:54 -07:00
mezz 4d0c2d1ea2 Fix all hives spawning with the same flower pattern around them 2016-06-13 20:46:23 -07:00
mezz 840331b7d5 Refresh bee errors when queen is replaced or gui is opened 2016-06-13 19:21:42 -07:00
mezz df91b47b35 Fix missing import for SoundEvent on chest 2016-06-13 15:28:01 -07:00
mezz f400241ff4 Revert greenhouse climate changes. Close #1319 2016-06-13 15:27:19 -07:00
Nedelosk 8639148f20 Fix #1318 1.9.4 Crash with .153 version on world load 2016-06-13 22:56:29 +02:00
Nedelosk 28e7b561ea Fix a bug 2016-06-13 22:14:03 +02:00
Nedelosk ba7ef4228c Update PluginBiomesOPlenty.java 2016-06-13 21:54:53 +02:00
Nedelosk fcd3ee6feb Merge branch 'mc-1.9.4' of https://github.com/ForestryMC/ForestryMC into Greenhouse-Climate-Fix 2016-06-13 21:49:05 +02:00
The-Fireplace 6ddc9f3079 Fixed chests playing the open sound when they close (#1316) 2016-06-12 14:09:31 -07:00
Nedelosk cc53894473 Finish work 2016-06-12 20:42:09 +02:00
Nedelosk 2cd76bdad7 Rework sytem 2016-06-12 01:16:25 +02:00
mezz 92eab8d47a Fix #1308 Restore compatibility with old fluid pipes 2016-06-09 18:35:12 -07:00
mezz 12f5d7be6c Revert "Fix rare possible npe in random hive trade"
This reverts commit 4ba3370fc9.
2016-06-09 16:36:32 -07:00
mezz ab88e7d57c Fix #1311 Crash with WAILA and butterfly or using butterfly kill command 2016-06-09 16:35:33 -07:00
Nedelosk 725d85181d Update System 2016-06-09 21:50:43 +02:00
Nedelosk 23c9b2071b Clen Up and work on climate system 2016-06-09 20:19:13 +02:00
Nedelosk ae025a92fc Clean Up, Work on climate system 2016-06-08 21:58:10 +02:00
Nedelosk fbf30b1a73 Work on new climate system for the greenhouse 2016-06-08 19:25:18 +02:00
Nirek-K 4ba3370fc9 Fix rare possible npe in random hive trade 2016-06-08 11:07:16 -05:00
mezz c1a590961d Cleanup unused fields 2016-06-07 23:40:58 -07:00
mezz a1f7a678c1 Use ForgeRegistries instead of Item and Block registries 2016-06-07 23:40:33 -07:00
mezz 1117b820f1 Update to latest version of JEI 2016-06-07 23:34:01 -07:00
mezz 4681bf4cfb Update Chinese localization 2016-06-07 23:33:05 -07:00
Nirek-K b9dd19a556 Make hive bee trade a random one 2016-06-07 23:49:05 -05:00
Nirek-K f97a737185 Migrate new 1.7 villager trades, fix ic2 uid 2016-06-07 20:18:36 -05:00
mezz 68fb27410e #1295 Add Forestry recipes to the RecipeSorter 2016-06-06 19:00:44 -07:00
mezz b8be42548e Use IconItemStack for farm logic icon 2016-06-05 23:04:48 -07:00
mezz eb9ef642cd Reenable IC2 support 2016-06-05 22:53:12 -07:00
mezz ed658301fd Clean up warnings 2016-06-05 21:40:52 -07:00
mezz d55d86a3c5 Fix #1272 villager house generation is intersecting with the road 2016-06-04 23:31:42 -07:00
mezz b2d5706bbd Stop calculating bee particle collisions 2016-06-04 22:40:27 -07:00
mezz ba6bd8fd10 Fix #1274 Broken fence localization 2016-06-04 21:49:08 -07:00
mezz b998e2ac49 Fix #1286 Crash when trying to break cocoons 2016-06-04 21:46:53 -07:00
mezz 817540d996 Fix #1285 Crash when Biogas Engine starts to burn fuel 2016-06-04 21:33:47 -07:00
mezz 9d8866e4fd Fix missing icons in Genetic Analyzer 2016-06-04 21:28:23 -07:00
mezz 7575b9c6ce Fix #1287 Some genetic traits have broken localization 2016-06-04 18:13:45 -07:00
Nedelosk 6700c511a5 Merge branch 'mc-1.9.4' of https://github.com/ForestryMC/ForestryMC into mc-1.9.4 2016-06-04 23:49:01 +02:00
Nedelosk acc55d4f41 Fix #1277 Transparent sprinkler(item) 2016-06-04 23:47:52 +02:00
mezz 7bd5bb120d Update for new fluid capabilities 2016-06-04 04:25:51 -07:00
Nedelosk dbbb727576 Add Fluid capability to the greenhouse hatch 2016-06-04 11:02:25 +02:00
mezz dcf0fc83ad Fix #1282 NullPointerException from Cocoon with invalid caterpillar 2016-06-04 01:03:13 -07:00
mezz 6ef91590cf Update Forge 2016-06-04 00:59:53 -07:00
mezz 856322b208 Update Forge to fix the crash with cactus placement and BoP grass 2016-06-03 17:29:54 -07:00
mezz 42425e3500 Fix #1281 Crash when trying to place Forestry tiles above Y=255 2016-06-03 16:35:06 -07:00
mezz cde076e702 Fix #1280 Bees can find flowers at very different Y levels in some cases 2016-06-03 16:30:27 -07:00
mezz b5f60d73e3 Fix #1278 Wild bees don't hurt if you wear any 1 piece of Apiarist gear 2016-06-03 16:19:45 -07:00
mezz f82d123b7f Fix #1273 Villagers unable to open forestry doors 2016-06-03 16:07:34 -07:00
mezz ca17801c86 Speed up the check for if a block position is currently in a greenhouse 2016-06-03 15:54:44 -07:00
mezz 33d1685713 Fix #1275 block placement lag when constructing a massive greenhouse 2016-06-03 15:26:57 -07:00
mezz 69c024811f Do not bake leaves based on position 2016-06-03 14:45:00 -07:00
Nedelosk 4dd95625e1 Fix #1244 Opening Greenhouse GUI causes a drop in fps, from 90fps to 6fps(in my case) 2016-06-03 23:11:52 +02:00
mezz 6adcde4a75 Fix NoClassDefFoundError: TextureAtlasSprite 2016-06-03 07:34:38 -07:00
mezz 2f06c777b2 Fix #1246 Greenhouse control redstone logic is inverted 2016-06-03 06:25:29 -07:00
mezz 32f295b16c Fix #1254 Chest bounding boxes are too large 2016-06-03 06:22:14 -07:00
mezz ef4c65c6e6 Fix some bee particles showing up as very dark 2016-06-03 06:09:56 -07:00
mezz ba313a9dfe Fix desync causing hives to have no active bees 2016-06-03 06:09:07 -07:00
mezz 8f36c2a6fc Route more bees to flowers than to exploring 2016-06-03 06:08:24 -07:00
mezz 149a5b6128 Update Forge 2016-06-03 06:08:04 -07:00
mezz 56b871eca1 Improve bee particle performance: do not render when too far away 2016-06-03 04:30:42 -07:00
mezz c09cdcdb64 Add more varied bee particles 2016-06-03 04:30:12 -07:00
mezz 2f66d0ea82 Fix hives only spawning Forest bees 2016-06-03 04:24:53 -07:00
mezz ac224823be Reduce random bee damage if you haven't hit the hive 2016-06-03 04:24:33 -07:00
mezz 1eca6e41af Improve bee particle performance 2016-06-02 17:16:15 -07:00
mezz 94bd65ee8e Improve greenhouse error messages. 2016-06-02 16:24:00 -07:00
mezz 795b154eb5 Fix #1263 Crash when lighting TNT on top of wood pile block 2016-06-02 13:19:41 -07:00
mezz 358e7853c2 Fix #1268 NoSuchMethodError on Server Startup 2016-06-02 11:40:24 -07:00
mezz 4f7b77abb4 Have bees find closest flowers instead of any in range 2016-06-02 03:05:21 -07:00
mezz aff15b34d6 Fix #1255 Relogging makes apiaries stop spawning bee particles 2016-06-02 02:56:43 -07:00
mezz 55cf7b5c16 Fix flower registry, remove config for now 2016-06-02 02:55:17 -07:00
mezz d4cfbe9f29 Comment out broken BoP compatibility 2016-06-02 02:54:01 -07:00
mezz 4fc731c7c8 Fix dungeon loot spawning without genetics 2016-06-02 02:53:34 -07:00
mezz bd2af7fa13 Fix Forestry's name to be uppercase 2016-06-01 22:54:12 -07:00
mezz f3d88fea3c Fix Backpack item registration in the API 2016-06-01 22:29:21 -07:00
Girafi 1d642cf9c5 Added backpack support for a bunch of vanilla items/blocks (#1265)
Added backpack support for more vanilla items/blocks
2016-06-01 19:30:45 -07:00
mezz b187815415 Fix #1264 Fireproof birch and spruce log texture are switched 2016-06-01 19:04:17 -07:00
mezz 5c7150ad62 Tweak changelog formatting 2016-06-01 17:59:19 -07:00
mezz d84f708a98 Fix curse info and changelog formatting 2016-06-01 17:37:48 -07:00
mezz 2117be96cd Fix #1256 Use the same lowercase "forestry" for all MOD_ID and resources 2016-06-01 16:05:26 -07:00
mezz 96f941f6e6 Auto-generate changelogs and upload alphas to curse 2016-06-01 14:36:14 -07:00
mezz d3c7d7141d Fix #1262 NullPointerException from null name in the OreDictionary 2016-06-01 12:57:27 -07:00
mezz e23a406e6f Fix #1258 undo ore unification experiment 2016-06-01 12:43:00 -07:00
mezz 340b04fee0 Fix #1259 crash on butterfly cocoon creation 2016-05-31 00:56:21 -07:00
mezz 7437f4f364 Fix #1257 Internal server error when using Bee Smoker in Alternate hand 2016-05-29 12:52:47 -07:00
mezz bfac4500a4 Revert "Temporary fix for Forge ICrashCallable issue"
This reverts commit bd2aae4d60.
2016-05-29 12:50:26 -07:00
mezz bd2aae4d60 Temporary fix for Forge ICrashCallable issue 2016-05-29 01:45:29 -07:00
mezz 30286fd0ad Update to latest Forge 2016-05-29 01:42:24 -07:00
mezz db482a5820 Add icon for full tank error and improve error message 2016-05-28 12:54:51 -07:00
mezz ce2138393a Fix reference to private fields in FlutterlyzerPlugin 2016-05-28 12:32:19 -07:00
Nedelosk 4f8912dd66 Add Greenhouse butterfly hatch error message 2016-05-28 01:46:38 +02:00
Nedelosk 34f95c43c7 Clean Up multiblock error messages and Fix #1199. 2016-05-28 01:43:42 +02:00
Nedelosk 72cf00aa34 Fix #1237 All fireproof blocks work as fuel 2016-05-28 00:44:42 +02:00
mezz d5071b0da2 Improve wood textures. Make Zebrawood & Cocobolo planks normal rotation 2016-05-26 15:11:22 -07:00
mezz fc77a6ea71 Merge pull request #1252 from LexManos/patch-1
Fix broken gradle source path that is breaking S2S
2016-05-26 14:54:44 -07:00
LexManos c726a1973f Fix your broken source path that is breaking S2S
You're copying the package 'cofh.api' into the folder 'api' which is causing things to freak out because it sees code in the wrong package.
2016-05-26 14:49:00 -07:00
mezz ae5596491d Improve the design of villager houses slightly 2016-05-26 13:59:12 -07:00
mezz 40856a3748 Merge remote-tracking branch 'origin/mc-1.9' into mc-1.9.4 2016-05-26 12:13:32 -07:00
Nedelosk 8f836ef0d2 Fix #1241 Analysed charcoal uses 2016-05-26 11:20:51 +02:00
Nedelosk 555304d987 Fix humidity bug at the greenhouse 2016-05-26 10:45:11 +02:00
mezz b444994b81 Update for Minecraft 1.9.4 2016-05-26 01:42:46 -07:00
mezz da486ee941 Allow pipettes to fill a machine or tank in the world 2016-05-25 15:56:40 -07:00
mezz a2881fbe1c Fix pipette not able to drain from gui tanks 2016-05-25 15:56:15 -07:00
mezz 7db47391e8 Give fermenter a better display tank in JEI 2016-05-25 13:27:23 -07:00
mezz 8b078f16d9 Fix #1208 Incorrect Fermenter recipes in JEI 2016-05-25 03:00:45 -07:00
mezz febb74177a Fix bug in fermenter processing 2016-05-25 03:00:27 -07:00
mezz 61ca28d520 Fix #1216 Items partially dragged from Alyzer input are not analyzed 2016-05-25 02:02:03 -07:00
mezz fe8be57a80 Fix #1239 crash from a reference to IStateMapper on server-side 2016-05-25 01:39:06 -07:00
mezz 5cb03067ad Minor cleanup 2016-05-25 01:38:39 -07:00
mezz 23ffa00ca5 Close #1028 add Fireproof versions of Vanilla wood items 2016-05-25 01:31:49 -07:00
mezz cdb85cb042 Fix #1233 Decorative leaves drop leaves block when broken by hand 2016-05-24 14:40:11 -07:00
Nedelosk 33051d09b2 Fix #1202 Greenhouse doors, glass and sprinkler should use glass breaking sound 2016-05-24 21:44:26 +02:00
Nedelosk 69cf513e51 Fix #1237 All fireproof blocks work as fuel 2016-05-24 21:39:43 +02:00
Nedelosk 2c173766cb Fix #1236 Normal logs are not flammable(in world) and add flammability to the wood pile 2016-05-24 21:29:59 +02:00
Nedelosk 0405151a8e Fix #1235 Untextured particles when Loam block that is part of formed Charcoal Pile multiblock is broken, Fix #1234 Selecting Loam block broken, Fix #1232 Loam block drops 2 blocks when broken, Fix #1231 Charcoal Pile multiblock drops 2016-05-24 21:11:36 +02:00
Nedelosk fd6a1de27e Fix Pile Block Particles 2016-05-24 20:40:31 +02:00
Nedelosk 686f74e4f3 Add combustibility and the carbonization to the germling tooltip 2016-05-24 18:53:55 +02:00
Nedelosk 528bb6e051 Add carbonization and combustibility allele to the treealyzer 2016-05-24 18:31:21 +02:00
Nedelosk 078987808c Fix lang for the charcoal pile 2016-05-24 15:25:39 +02:00
Nedelosk c1e414b8f7 Add charcoal pile 2016-05-24 15:20:21 +02:00
mezz 939d35661b Fix #1228 incorrect upside down stair model 2016-05-24 03:12:01 -07:00
mezz 3c85f3a7be More messing with the OreDictionary and tidying things 2016-05-24 03:01:02 -07:00
mezz aa4b4a18d1 Update Forge 2016-05-24 02:15:03 -07:00
mezz 55c32a8280 Close #1212 Use OreDictionary to choose a type of Copper/Tin/Bronze 2016-05-24 02:14:55 -07:00
mezz 502160011b Fix #1214 Locked slots have no tooltip 2016-05-24 00:30:06 -07:00
mezz 790197d7bd Fix greenhouse door sounds 2016-05-23 23:52:59 -07:00
mezz 7d459bb30b Add liquid in icon for greenhouse liquid slot 2016-05-23 23:52:47 -07:00
mezz da005bc404 Remove unused world field from GreenhouseState 2016-05-23 23:38:59 -07:00
mezz 9d0975a0ff Make modelDecorativeLeaves.LeaveOverideList a static class 2016-05-23 23:38:34 -07:00
mezz a39f6e8e89 Fix greenhouse requiring height of 6 instead of 5 2016-05-23 23:37:57 -07:00
mezz 16c5284923 Fix #1215 Stack overflow when validating greenhouse structure 2016-05-23 23:37:32 -07:00
mezz a9bc982595 Fix broken greenhouse textures from earlier commit 2016-05-23 23:25:33 -07:00
mezz 45d29456af Fix #1168 Missing RF API from jar 2016-05-23 22:43:51 -07:00
mezz 3f2afa7bcb Fix #1213 decorative leaf hardness and shear drop issues 2016-05-23 21:55:08 -07:00
mezz 238d33d37a Show tooltips on tree products in the Alyzer 2016-05-23 20:05:13 -07:00
mezz a30ff61c9a Fix #1216 Portable Alyzer issues 2016-05-23 20:01:45 -07:00
mezz 2155f9eac9 Clean up sprite registration, remove all IDs 2016-05-23 17:37:20 -07:00
mezz 30aea48952 Fix #1189 mail carrier sprites limit texture map's mip level 2016-05-23 17:23:20 -07:00
mezz 0ae4d1a54d Fix fruit leaf rendering with Fast graphics 2016-05-23 16:23:09 -07:00
mezz f597834198 Fix #995 Pollinated leaves have render issues on Fast Graphics 2016-05-23 14:56:31 -07:00
mezz e3ccd06ddc Fix #1205 Leaf pollination does not sync properly 2016-05-23 03:10:57 -07:00
mezz bc2c80365c Harvest wood from top to bottom to help leaf decay 2016-05-23 02:02:34 -07:00
mezz 752a221fe8 Fix #1033 multifarms have issues with branches 2016-05-23 00:45:27 -07:00
mezz 2801e346c5 #1087 Stop multifarm from putting harvest into upper slots 2016-05-23 00:44:59 -07:00
mezz a278a488f6 Fix #1040 farm circuit changes do not sync properly on SMP 2016-05-23 00:35:52 -07:00
mezz bf3e00c9e9 Add icons for liquid input and output slots 2016-05-23 00:30:15 -07:00
mezz fd6958b637 Fix #1087 Stop multifarm from putting harvest into upper slots 2016-05-23 00:06:14 -07:00
mezz 75d747df70 Replace BlockPos.add(0, 1, 0) with up() 2016-05-22 23:58:42 -07:00
mezz d1969e1868 Fix #1211 Farm and Rain Tank are not detecting rain when biome changes 2016-05-22 23:55:05 -07:00
mezz 55d35c4cbe Fix #1203 Saplings don't make a sound when placed. Fix more of the farm. 2016-05-22 23:45:45 -07:00
mezz 4ae72d7550 Improve farm harvest logic 2016-05-22 19:10:51 -07:00
mezz 520c053cbc Fix #1209 Crash when opening farm gui 2016-05-22 15:12:17 -07:00
mezz afbde2d735 Fix #1186 Begin farm cleanup and testing 2016-05-22 03:31:02 -07:00
mezz 1707573f7d Fix crash when right clicking with a can or capsule on a regular block 2016-05-21 20:35:52 -07:00
mezz c4c3f493be Fix crash when placing an engine vertically 2016-05-21 20:31:20 -07:00
mezz 2dc7ae137e Fix fence gate orientation on villager houses 2016-05-21 20:06:57 -07:00
mezz 70bf28c1c4 Fix nullability warnings 2016-05-21 19:21:54 -07:00
mezz dd36746240 Fix #1207 Wooden planks aren't in the creative tabs 2016-05-21 19:06:30 -07:00
mezz 2cfd0dae0a Fix #1224 wood items have wrong metadata 2016-05-21 19:00:04 -07:00
mezz fdef1ba84a Remove chunkExist functions from BlockUtil 2016-05-21 17:52:28 -07:00
mezz 292a0f029e Fix branch end detection, it was adding every branch section 2016-05-21 17:51:59 -07:00
mezz 7bd7357684 Start generating leaves from the top branch position, not random order 2016-05-21 17:50:47 -07:00
mezz a84ad5c828 Clean up LeafDecayHelper 2016-05-21 17:49:12 -07:00
mezz 586ecec9fe Fix tree leaves doing decay calculations immediately after generating 2016-05-21 17:48:47 -07:00
mezz 9cb3e4897b Fix leaf decay info being lost on world save/load 2016-05-21 17:48:17 -07:00
mezz 3a941ead9f Fix Ebony tree leaf generation 2016-05-21 17:47:47 -07:00
mezz edacde02e7 Fix #1222 Fix #980 Refactor and improve tree generation 2016-05-21 16:41:22 -07:00
mezz 4fdbaff7ad Improve papaya bark 2016-05-21 00:44:51 -07:00
mezz 36c8adbc05 Improve sequoia and giant sequoia bark textures 2016-05-20 23:58:23 -07:00
mezz 8ac1485390 upload all jars to maven 2016-05-20 12:04:51 -07:00
mezz 29573ff502 spaces to tabs in build.gradle 2016-05-20 11:44:51 -07:00
mezz 0bfa254d7f Try to fix maven upload task on jenkins 2016-05-20 11:42:44 -07:00
mezz 6ae98d4428 Try to fix maven upload task on jenkins 2016-05-20 11:40:01 -07:00
mezz bc66802384 Fix #1217 blocks drop items with invalid meta 2016-05-19 21:43:35 -07:00
mezz c9f17452cf Fix leaves decaying immediately on large trees 2016-05-19 21:40:21 -07:00
mezz 4907993759 Fix #1219 Fix #1220 Crash when growing trees with pods 2016-05-19 21:28:14 -07:00
mezz ee63729525 Fix log orientation for trees 2016-05-19 18:14:28 -07:00
mezz 62368d4e40 Fix #1204 Leaves do not decay 2016-05-19 17:17:04 -07:00
mezz 78a955e3ea Fix #1198 Missing item textures for engines 2016-05-19 15:57:24 -07:00
mezz fb523c2064 Fix #1171 Bee life cycle indicator desync 2016-05-19 14:48:42 -07:00
Nedelosk ae7ec5c782 Fix #1196 Portable Alyzer still missing model and texture 2016-05-19 16:57:59 +02:00
Nedelosk 80eb842558 Remove Unused things 2016-05-19 16:57:11 +02:00
mezz 939e776668 #1171 Bee life cycle indicator desync 2016-05-19 02:17:25 -07:00
mezz ced605d006 Fix #1182 Sheared leaves drop the wrong number of leaves 2016-05-19 01:51:05 -07:00
mezz 215761b1b1 Fix #1184 Fireproof slabs burn 2016-05-19 01:45:33 -07:00
mezz 3a829c9990 Fix #1190 crash on pollination. Also rearrange IPollinatable classes 2016-05-19 01:41:51 -07:00
mezz 8981384385 Fix #1194 crash on item render without JEI 2016-05-19 01:20:10 -07:00
mezz 8eddbaf6c5 Fix #1162 Backpack persists upon item switching 2016-05-19 00:00:46 -07:00
mezz 9d563bc953 Use IBlockState instead of old IBlockType 2016-05-18 23:55:54 -07:00
mezz ff1ff5ae2c Put Facing on blockstate not Tile. Use one block per type for BlockBase 2016-05-18 23:44:03 -07:00
mezz fb7cd3ee09 Fix #1156 Fix #286 Fix #1155 Add villagers and villager houses 2016-05-18 21:57:02 -07:00
mezz 6b4d7ebcc4 Fix #1195 Problem loading loot tables on startup 2016-05-18 21:55:54 -07:00
Nedelosk afb3ee56dd Fix #1183 Portable alyzer, Fix #1185 Infuser GUI crash and Fix #1187 Crash when trying to break farm block 2016-05-17 16:16:39 +02:00
Nedelosk 828f91f894 Fix lang 2016-05-16 17:18:31 +02:00
Nedelosk 7ae7e62c0c Add universal portable alyzer and remove flutter-,tree- and beealyzer 2016-05-16 17:04:34 +02:00
Nedelosk 23b5126d51 Fix leaves and saplings, Fix #1157 Exception loading model for Saplings and Leaves, Fix #1167 Broken natural leaves, Fix #1164 Leaves breaking instantly 2016-05-16 01:09:51 +02:00
Nedelosk ba5a2529df Fix #1178 Duplicate recipes for carrot > fruit juice,. Fix #1169 Rendering of bronze tools, Fix #1177 Toolips for squeezer and centrifuge recipes 2016-05-16 00:10:45 +02:00
Nedelosk 5188b5a3f6 Fix #1180 Punching Greenhouse Glass crash 2016-05-15 23:55:14 +02:00
Nedelosk 2ec6601383 Merge branch 'mc-1.9' of https://github.com/ForestryMC/ForestryMC into mc-1.9 2016-05-15 21:09:14 +02:00
Nedelosk bb3d736cb5 Fix #1179 Crash on world load 2016-05-15 21:08:48 +02:00
mezz 7bb91e9165 Update Forge and MCP 2016-05-15 02:28:02 -07:00
Nedelosk ea6fd2e3c0 Fix #1159 Stairs and Fireproof Stairs Break Instantly, #1170 Treealyzer Shift Click, Convert Vanilla Sapling to Germling in the Treealyzer 2016-05-15 10:22:07 +02:00
Nedelosk 8299fe3a75 CleanUP, Fix #1175 Germling Texture swap, Fix #1166 Raintank not doing it's job, Fix #1165 Circuit board recipes missing from JEI 2016-05-15 09:57:59 +02:00
Nedelosk 4c83209eae Fix #1173 and Fix #1172 2016-05-15 09:25:33 +02:00
Nedelosk 92d8b020db Update README.md 2016-05-15 01:07:28 +02:00
Nedelosk 6a4ea30484 Fix #1163, Reloading Textures breaks Crate Textures 2016-05-14 14:12:34 +02:00
Nedelosk a15f110ca3 Fix #1161, Greenhouse Block rendering 2016-05-14 14:01:06 +02:00
mezz 9d9ea95ed1 Close #1154 add dungeon loot 2016-05-13 01:50:49 -07:00
mezz 4cf74e4aa1 Add API jar, remove html JavaDoc jar 2016-05-12 15:32:30 -07:00
mezz 0df025c2d5 Fix crashes on server from SideOnly 2016-05-12 02:49:14 -07:00
mezz 99646e8656 Fix crash with BoP integration 2016-05-12 01:56:40 -07:00
mezz 9af235cc3b Remove custom gradle stuff. Will need to add API jar back later 2016-05-12 01:56:28 -07:00
mezz 4268ceb11c Remove JavaChecker stuff 2016-05-12 01:23:58 -07:00
mezz 2c7d56f308 Make bees particles animate to pollinate nearby flowers 2016-05-12 01:09:12 -07:00
mezz 64ed04e09b Remove Forestry's custom particle renderer 2016-05-11 22:45:16 -07:00
mezz e432e17373 remove deprecated call to isFullyOpaque 2016-05-11 22:08:12 -07:00
mezz 1e1f65fc6c Update to latest Forge 2016-05-11 22:00:58 -07:00
mezz 5cc181d4c7 Fix #1153 crash from interface methods named getWorld 2016-05-11 22:00:49 -07:00
mezz 0ae2e36e90 Fix #1112 Improve IItemHandler Integration and Backpack 2016-05-08 00:16:34 -07:00
mezz a312afedd3 Fix up item json for 1.9 2016-05-07 16:29:48 -07:00
mezz 26b8f67885 Fix bee smoker to work in either hand 2016-05-07 16:19:10 -07:00
mezz 54c5ed7a1b Update Forge for hive gen fix. Reduce default hive gen rate to normal 2016-05-07 13:05:12 -07:00
Nedelosk ad42e7327a Fix collisions proplem with the machineproperties 2016-05-07 21:24:49 +02:00
Nedelosk db6d43e457 Fix leaves and particles 2016-05-07 10:35:26 +02:00
mezz fed1994838 Fix up Hive Generation 2016-05-06 22:03:26 -07:00
mezz 6d00d35ae5 Fix decorative leaf colors 2016-05-06 17:27:51 -07:00
mezz 7403a6cdcd Use new block and item registration 2016-05-06 17:27:16 -07:00
mezz 7601a60c5e Update Forge 2016-05-06 17:25:43 -07:00
Nedelosk 566efc7a96 Improve models 2016-05-06 19:13:36 +02:00
Nedelosk 898860975a CleanUp, improven Crate Model, and add IModelState parameter to the model baker 2016-05-06 19:00:58 +02:00
Nedelosk 03c1c26258 Fix crate renderin, fix sprinkler rendering and fix butterfly rendering. 2016-05-06 14:04:17 +02:00
mezz c30c3d7575 Use BlockPos and Vec3i, remove our Vect implementations 2016-05-06 02:18:03 -07:00
mezz 62ddd7bafc Fix some missing overlay colors and greenhouse color multiplier 2016-05-05 19:54:48 -07:00
mezz 686e2799ad rename ICamouflagedBlock to ICamouflagedTile 2016-05-05 19:54:25 -07:00
mezz b1d55811a9 Fix rendering of engine, core, and factory items 2016-05-05 19:40:07 -07:00
mezz c6bfdec1ea Fix chest item rendering 2016-05-05 19:17:02 -07:00
mezz 6b95bc0b50 Fix models and states changed by minecraft property requirement [a-z_]+ 2016-05-05 19:14:12 -07:00
mezz 31a186c0a5 Fix liquid container translation 2016-05-05 19:01:22 -07:00
mezz c8706ed1f8 Fix stair item rendering 2016-05-05 18:52:57 -07:00
mezz 07c3355489 Improve JEI integration : add click areas and recipe category items 2016-05-05 18:47:34 -07:00
mezz 17b1c792d0 Fix bee item rendering in hands 2016-05-05 17:37:33 -07:00
mezz db2d534d52 Fix fence rendering 2016-05-05 17:17:34 -07:00
Nedelosk 6b5750f252 Fix butterfly model 2016-05-06 00:32:52 +02:00
mezz 078290649c fix missing textures 2016-05-05 15:09:15 -07:00
mezz 65c63dcc63 Register models and colors more efficiently 2016-05-05 15:05:58 -07:00
mezz 6b912633b9 Fix item colors 2016-05-05 14:06:20 -07:00
Nedelosk 66d6a4d75e Work on ModelBaker 2016-05-05 12:48:10 +02:00
mezz 7bf554b024 Compiles for 1.9! Very buggy, some things are missing. 2016-05-05 01:11:21 -07:00
mezz 5d74c1254b More porting to 1.9 2016-05-04 21:15:23 -07:00
mezz a0cdaf1e1a More porting to 1.9 2016-05-04 01:02:43 -07:00
mezz 73c2608848 First steps porting to 1.9 2016-05-03 00:26:28 -07:00
mezz c47acd803c Register crates without specifying a UID 2016-05-01 17:31:37 -07:00
mezz 76bcc42c82 Crop JEI recipes more closely so more fit on a page and they're centered 2016-05-01 16:56:23 -07:00
mezz ab70788b66 Use ItemStackUtil.getItemNameFromRegistry 2016-05-01 16:55:23 -07:00
mezz 79b3d910ea Add butterfly type to the names (butterfly, serum, caterpillar, cocoon) 2016-05-01 16:01:31 -07:00
mezz a3363fb4bc Big code cleanup 2016-05-01 15:34:11 -07:00
mezz 1b58077904 Cleanup 2016-05-01 14:46:12 -07:00
mezz 92d62de486 Fix warning about missing cocoon texture, hide default cocoon in jei 2016-05-01 14:27:57 -07:00
mezz 3aef4aa2c1 Let cocoons work with pick block 2016-05-01 14:04:25 -07:00
mezz dc57e0826d Fix missing blockstate for bog earth 2016-05-01 14:03:31 -07:00
mezz 77b1d2a283 Fix lighting of the mail indicator 2016-05-01 13:15:57 -07:00
mezz 92460d1d4a Fix #1052 and #1097 bad error messages from Trade Station 2016-05-01 12:52:00 -07:00
mezz 1d1959b535 Close #832 add alternate recipe for silk wisp when bees are disabled 2016-05-01 09:54:27 -07:00
mezz 1222637e92 Fix #1077 Improve humus checks for logs and saplings 2016-05-01 09:41:19 -07:00
mezz b97151c56b Close #940 Improve backpack configs, allow regex oreDict names 2016-05-01 09:19:25 -07:00
Nedelosk 24979f18f6 Fix #1150 and add ISpriteRegistrer 2016-05-01 15:44:10 +02:00
Nedelosk efd4a33bbb Fix #1151 2016-05-01 13:23:11 +02:00
Nedelosk 5dc95864a6 Fix cocoon bounding boxs 2016-05-01 01:08:05 +02:00
Nedelosk 8f68f49759 Add new coccon models and improve IAlleleCoocon 2016-05-01 01:06:12 +02:00
mezz cc34078ab4 Clean up Greenhouse door properties 2016-04-30 02:33:06 -07:00
mezz 1d8f2dae66 Use Translator.java for all translation 2016-04-30 02:32:44 -07:00
mezz 798b17fa03 Fix bee minecart names in WAILA 2016-04-29 17:46:37 -07:00
mezz feda5834b0 Fix engine rendering causing OpenGL state issues 2016-04-29 17:32:34 -07:00
mezz 84877ab1cf Close #1101 allow setting the health of IIndividualLiving 2016-04-29 16:45:18 -07:00
Nedelosk 1d676bc3f1 Revert "Make the ledger open and close move more smoothly"
This reverts commit f4787efdad.
2016-04-29 21:47:41 +02:00
Nedelosk f4787efdad Make the ledger open and close move more smoothly 2016-04-29 21:45:16 +02:00
Nedelosk cf73635e92 Fix Buildcraft integration, Fix #1130 2016-04-29 21:22:39 +02:00
Nedelosk 5e75430526 Update Buildcraft API 2016-04-29 21:11:45 +02:00
Nedelosk eba8fb8c69 Clean Up 2016-04-29 21:02:43 +02:00
Nedelosk 3cfc158875 Move Icon sprites in to the gui folder and particles sprites in to the entity folder and Fix #1143 2016-04-29 21:02:13 +02:00
Nedelosk 43ac71b022 Fix #1147, Fix #1146 2016-04-29 20:02:24 +02:00
mezz 9e33648920 Fix crash from waila "harvesting" tree leaves before it syncs 2016-04-29 00:06:19 -07:00
mezz 641dea32ac Fix #1145 blocks missing localization 2016-04-28 23:46:27 -07:00
mezz 09aa0ecd1c Merge pull request #1149 from Vexatos/mc-1.8.9
Improved multiblock error messages.
2016-04-28 23:02:54 -07:00
Vexatos 01b1a9a33a Improved multiblock error messages.
For ForestryMC/Forestry-Localization#180.
2016-04-29 07:57:54 +02:00
mezz 6460eb5624 Delete TileBeehouse.java 2016-04-28 22:52:00 -07:00
mezz 8d20833b78 Delete IMachinePropertiesTESR.java 2016-04-28 22:51:36 -07:00
mezz c4e52f8670 Add tooltip information for engines 2016-04-28 22:46:19 -07:00
mezz c95f70a677 fix Forestry modid in mcmod.info 2016-04-28 19:52:24 -07:00
mezz 08d543b2ef Close #1144 add IC2 compatibility back 2016-04-28 19:52:12 -07:00
Nedelosk 04173d6bcf Merge branch 'mc-1.8.9' of https://github.com/ForestryMC/ForestryMC into mc-1.8.9 2016-04-28 10:23:24 +02:00
Nedelosk db20469cb7 Fix #1140, #1139, #1141 2016-04-28 10:23:06 +02:00
mezz 6820d31b31 Fix #1142 JEI [+] button integration with worktable 2016-04-27 23:20:33 -07:00
Nedelosk 04bcdfd8b0 Add Item Mesh Definition for cocoon item 2016-04-27 12:21:58 +02:00
Nedelosk 2d4a98b138 Merge branch 'mc-1.8.9' of https://github.com/ForestryMC/ForestryMC into mc-1.8.9 2016-04-27 12:07:09 +02:00
Nedelosk 4f239590fb Clean Up and Add Cocoon Item 2016-04-27 12:06:50 +02:00
mezz 1b24ba1e5c Use GlStateManager, fix up OpenGL issues 2016-04-26 18:32:31 -07:00
mezz f49cea199e Fix Forestry allele keys 2016-04-26 17:10:41 -07:00
mezz fe61f40179 Fix blend function of particles to match Minecraft's implementation 2016-04-26 17:01:36 -07:00
mezz 2fe2d9f895 Remove escritoire note count localization requirement 2016-04-26 16:44:14 -07:00
mezz 64cf622ccf Use names for Electron Tube UIDs instead of meta values 2016-04-26 16:31:26 -07:00
mezz 47a4bb70e0 Update lang 2016-04-26 16:16:05 -07:00
mezz 9bc61a891d Fix comment in TileHive 2016-04-26 16:15:27 -07:00
Nedelosk 39dc7dbe5e Merge branch 'mc-1.8.9' of https://github.com/ForestryMC/ForestryMC into mc-1.8.9 2016-04-26 16:03:50 +02:00
mezz 2f65545c6b Fix HiveBeeHousingInventory not voiding bee products 2016-04-25 21:17:04 -07:00
Nedelosk 7ca28d4d10 Improve the greenhouse controller 2016-04-25 20:40:55 +02:00
Nedelosk 080dd93dc2 Add cocoon material 2016-04-25 17:32:52 +02:00
mezz f9eeb8a1d8 Fix scoop orientation in first-person 2016-04-24 23:44:40 -07:00
mezz c7b94cc8af Make hive bees aggressive, add Bee Smoker item to calm them 2016-04-24 23:22:16 -07:00
mezz 801d8f2752 Make bee particles venture out and return home 2016-04-24 23:22:15 -07:00
Nedelosk 5be265374b Fix greenhouse 2016-04-24 20:59:27 +02:00
mezz 74c9fb57e9 Add JEI recipe integration for the Rainmaker 2016-04-23 23:15:24 -07:00
mezz 1ea86eb343 Add item descriptions for the Apiarist Suit, Habitat Locator, and Scoop 2016-04-23 22:25:56 -07:00
mezz f7ad61a2f3 Add better documentation for Frames 2016-04-23 22:10:59 -07:00
mezz 9f66b811c9 Fix tooltip rendering 2016-04-23 19:03:30 -07:00
mezz e775b5ec5a Pack fences into fewer block IDs 2016-04-23 18:17:15 -07:00
mezz af30ecd03b Add better debugging for WoodItemAccess 2016-04-23 18:17:03 -07:00
mezz f4f022c250 Close #1114 add palm doors 2016-04-18 14:56:28 -07:00
mezz b0cc323b87 #1114 slightly improve some of the door item icons 2016-04-15 22:23:28 -07:00
mezz 23826adafd #1114 Add wood doors 2016-04-15 19:20:53 -07:00
mezz b4d2b4ec7e Update to latest Forge 2016-04-12 17:35:29 -07:00
mezz 187a37643b Fix mis-capitalized file names 2016-04-12 17:34:48 -07:00
Nedelosk 4dfa1cec85 Add buildcraft api and move the apis in the api folder 2016-04-03 01:35:04 +02:00
Nedelosk 17d2105aff Add buildcraft api and move the apis in the api folder 2016-04-03 01:34:27 +02:00
Nedelosk f6daefe255 Fix a server bug 2016-04-01 01:05:01 +02:00
Nedelosk a401995e7e Fix a alvery bug 2016-04-01 00:28:31 +02:00
Nedelosk d794207dae Fix a butterfly mate bug 2016-03-31 21:40:45 +02:00
Nedelosk c5fc804bfa CleanUp 2016-03-31 02:04:29 +02:00
Nedelosk cf23644f45 Add cocoon world genartion with config entry(default false) and add cocoon loot and a greenhouse butterfly hatch 2016-03-30 00:48:19 +02:00
Nedelosk bc0d105730 Add a butterfly spawn rarity config entry 2016-03-28 03:15:48 +02:00
Nedelosk 0349890ddd Make the cocoonprovider to a allele 2016-03-26 17:38:50 +01:00
Nedelosk 31bd519eaf Fix hive gen 2016-03-26 13:31:36 +01:00
Nedelosk 6fbbb508cb Clean Up 2016-03-26 13:29:00 +01:00
Nedelosk 8a40dd6d27 Integrate the terrain in the tree gen helper 2016-03-26 13:28:13 +01:00
Nedelosk 1c1dd4918a Clean Up 2016-03-26 11:34:32 +01:00
Nedelosk b0b501a0ff Fix cocoons and add silk butterfly 2016-03-26 11:27:52 +01:00
Nedelosk 39c6e52d73 Update the butterfly mutations 2016-03-26 09:10:52 +01:00
Nedelosk 5b42b5fbae Add cocoons and fix bugs 2016-03-26 00:50:51 +01:00
mezz c4f447aa67 Fix #1117 Radioactive bee effect can bypass apiarist suit
(cherry picked from commit 4a2af4743f)

Conflicts:
	gradle.properties
2016-03-22 12:36:28 -07:00
Nedelosk 65d9c1dee6 Fix a greenhouse bug 2016-03-20 15:29:14 +01:00
Nedelosk cbcadfbba7 Add greenhouse recipes 2016-03-20 15:15:58 +01:00
Nedelosk b3a2d6cf84 Add recipes to fance gates and add fance gates to the wooditemaccess 2016-03-20 12:58:19 +01:00
Nedelosk 2442a2534a Fix add fence gates 2016-03-20 11:02:30 +01:00
Nedelosk 9f62f1f853 Add fence gates 2016-03-20 09:17:09 +01:00
Nedelosk 806b5121a8 Change the biome temperature and rainfall to ForestryAPI.climateManager.getTemperature and ForestryAPI.climateManager.getHumidity 2016-03-19 21:45:11 +01:00
Nedelosk 336d388b4b Improve greenhouse api and add events 2016-03-19 19:49:45 +01:00
Nedelosk 7924e9fa83 Fix hive item names 2016-03-19 17:20:30 +01:00
Nedelosk 8fea137a8b Fix #1106 Add IItemHandler Capability to TileForestry 2016-03-19 16:56:09 +01:00
Nedelosk fa30244c5e Fix #1103 The papaya and the date palm sapling item place not sapling block 2016-03-19 16:53:20 +01:00
Nedelosk cd4061b1fe Add clima manager and add greenhouse controller to multiblock logic factory 2016-03-19 16:11:22 +01:00
Nedelosk a828c6a006 Fix 2016-03-19 15:24:27 +01:00
Nedelosk 19421f7f22 Fix #1104 2016-03-19 15:20:21 +01:00
mezz 007c036f54 Fix some sided issues for running on server 2016-03-18 19:26:00 -07:00
mezz ddbc5e96f1 Use ISpeciesType instead of a raw int 2016-03-18 19:25:53 -07:00
mezz 9c81817baa Fix spelling of Sequoia assets 2016-03-18 19:25:52 -07:00
mezz f1f87d638d Try to fix capitalization issue in git 2016-03-18 19:03:33 -07:00
Nedelosk 27d6cf1219 Fix greenhouse door logic 2016-03-19 01:47:38 +01:00
Nedelosk 0f3e63ed20 Clean up and greenhouse door logic 2016-03-19 01:40:52 +01:00
Nedelosk 252a08f416 Add missing files 2016-03-18 23:56:20 +01:00
Nedelosk a0fb568144 Add Greenhous Helper and State 2016-03-18 23:54:36 +01:00
Nedelosk eebd9c6ecf Add greenhouse logics 2016-03-18 19:29:08 +01:00
Nedelosk ad69242a40 Fix farm tiles 2016-03-17 22:08:39 +01:00
Nedelosk 4d2135aae8 Add default camouflage block and clean up 2016-03-17 20:59:24 +01:00
Nedelosk 7518722ac8 Merge pull request #1108 from ForestryMC/Greenhouse
Add greenhouse multiblock and add IItemHandler integration from CovertJaguar
2016-03-17 19:57:34 +01:00
Nedelosk 248466bd91 Fix lang module 2016-03-17 19:54:20 +01:00
Nedelosk 927295ad40 Add language for greenhouse 2016-03-17 19:46:42 +01:00
Nedelosk 45e18af1d3 Merge branch 'Greenhouse' of https://github.com/ForestryMC/ForestryMC into Greenhouse 2016-03-17 19:37:07 +01:00
Nedelosk 3eaf9d4d30 Fix camouflage and add agriculture tab 2016-03-17 19:36:21 +01:00
CovertJaguar 8d549e14e6 decreaseStackInSlot() should not simulate 2016-03-17 10:31:58 -07:00
CovertJaguar 927a13883c Make StackFilter static methods public 2016-03-17 10:30:53 -07:00
Nedelosk 86a93b29c0 Add greenhouse hatch and add IItemHandler integreation, thanks to CovertJaguar 2016-03-16 23:20:33 +01:00
Nedelosk 3d25bd8626 Add sprinkler model 2016-03-14 23:30:43 +01:00
Nedelosk bde92c4afc Add camouflage system, add greenhouse door and clean up 2016-03-13 21:00:45 +01:00
Nedelosk 7238886d00 Improve greenhouse multiblock 2016-03-13 01:30:47 +01:00
Nedelosk 9a0e5dc3e3 Add Basic Greenhouse 2016-03-12 21:43:13 +01:00
Nedelosk c28c1c4298 Fix Alveary 2016-03-12 17:49:56 +01:00
mezz dd65d083cc #1091 begin clean up for Alveary
Still needs to visually update when slabs are added or removed to the top
2016-03-12 01:07:01 -08:00
mezz e703536d57 Fix #1082 Leaf items have the wrong colors 2016-03-11 22:43:44 -08:00
mezz 886591f710 Fix concurrency issues in ModelBaker 2016-03-11 22:12:05 -08:00
mezz e8d0e92b5c Fix case-sensitive file names 2016-03-11 21:20:08 -08:00
mezz a192c1ce49 Fix fruit pods 2016-03-11 20:21:52 -08:00
mezz d5a45a39eb Revert "Register render models and states directly instead of scanning GameData"
This reverts commit 72c0093856.
2016-03-10 21:02:36 -08:00
mezz 72c0093856 Register render models and states directly instead of scanning GameData 2016-03-10 19:13:25 -08:00
Nedelosk 4068fc9e99 Fix Nullable Import 2016-03-10 16:56:26 +01:00
mezz 43cf636096 Fix #1094 Leaves crash. Split decorative leaves into their own block 2016-03-10 03:34:57 -08:00
mezz ea64436f28 Fix network threading and world access 2016-03-10 01:09:08 -08:00
mezz 9b82c46517 Fix issues with double slab pickBlock 2016-03-10 00:41:45 -08:00
mezz eae8f719a7 Fix broken block registration 2016-03-09 23:56:15 -08:00
mezz 0049d1e20d Convert woods to normal blocks, no tile entities 2016-03-09 23:47:58 -08:00
Nedelosk ff038cc468 Fix WidgetFluidTank 2016-03-07 08:06:30 +01:00
mezz 70c5e851c2 Clean up liquids and liquid containers. Use Forge's universal bucket 2016-03-06 14:53:19 -08:00
Nedelosk 83e01c71a2 Clean Up 2016-03-06 23:20:03 +01:00
mezz 0b31054a58 Clean up uses of Blocks.air 2016-03-06 10:32:29 -08:00
mezz 4677ae7d54 Fix logs, load order and GameMode loading 2016-03-04 03:54:32 -08:00
mezz 92b1f85d84 Clean up bee nocturnal and rain tolerance 2016-03-04 03:53:44 -08:00
mezz 6e3c28e07e Clean up hive drops API 2016-03-04 03:09:57 -08:00
mezz 2d4c180389 Clean up backpack API 2016-03-04 02:38:23 -08:00
mezz 039af049aa Tidy villager bee registration 2016-03-04 01:50:01 -08:00
mezz ec53b6d882 Clean up exception catching 2016-03-04 01:42:17 -08:00
mezz 5a78f97fcb Remove optifine/gregtech/bukkit warning from crash log reports 2016-03-04 01:02:53 -08:00
mezz ff076090e3 Move plugins to their respective folders 2016-03-04 00:44:50 -08:00
mezz 626d0d8fb5 Use the generic types now available in 1.8+. remove warning suppressions 2016-03-04 00:36:47 -08:00
mezz 2ddad6ec37 Hide some items from JEI 2016-03-04 00:08:40 -08:00
mezz 8b9c48bf5c Remove unused genetic types 2016-03-03 23:23:43 -08:00
mezz 6d2313b251 Rename species helpers to species roots 2016-03-03 22:11:39 -08:00
mezz 545b051dd4 Use ITree for pollen 2016-03-03 22:07:27 -08:00
mezz 86e3ae87fd Save the owner NBT without gameprofile properties 2016-03-03 22:01:33 -08:00
mezz 5a901ffa36 Make SpeciesCustom classes into SpeciesBuilder 2016-03-03 21:46:21 -08:00
mezz efcab41e04 Revert "Use generics for Chromosome type, begin unifying code"
This reverts commit 43e41034f6.

Conflicts:
	src/main/java/forestry/api/arboriculture/IAlleleTreeSpecies.java
	src/main/java/forestry/api/genetics/IAlleleSpeciesCustom.java
	src/main/java/forestry/core/proxy/ProxyRenderClient.java
2016-03-03 20:50:38 -08:00
Nedelosk 87f2dc0a0a Fix #1084 and Remove New Bee House Model 2016-03-02 21:59:45 +01:00
Nedelosk 4b2d7594cb Improve BlockBase and Add new Bee House and Apiary Model 2016-02-28 20:27:10 +01:00
Nedelosk e0ea0c1073 Fix ModelBlockOverlay 2016-02-27 14:24:07 +01:00
Nedelosk e6669b0c60 Rename IAlleleComparable to IAlleleProperty 2016-02-27 13:29:16 +01:00
Nedelosk 339bbbe0f7 Cleanup, Fix Allele Propertys 2016-02-27 13:27:23 +01:00
mezz 2f711b0493 Cleanup, move ILeafSpriteProvider around 2016-02-27 01:31:24 -08:00
mezz 315e5ba1cf Fix honeycomb colors 2016-02-27 01:02:34 -08:00
mezz 7d251d32dd Fix crashing from bee particle effects 2016-02-27 00:34:15 -08:00
mezz 43e41034f6 Use generics for Chromosome type, begin unifying code 2016-02-27 00:14:22 -08:00
mezz a8270ef365 Remove lots of legacy handling code 2016-02-26 21:49:04 -08:00
Nedelosk 75bbf7e6a7 Improve Model Baker and Clean Up 2016-02-26 18:08:25 +01:00
mezz 7b0259a343 Cleanup Log, loading from nbt, remove Version check 2016-02-25 19:18:50 -08:00
mezz 14c42afd29 Automatic code reformatting. Makes everything formatted the same way 2016-02-25 19:18:50 -08:00
mezz 406392e7f7 Begin code cleanup for generics, types, warnings, nulls, and spelling 2016-02-25 19:11:29 -08:00
Nedelosk c9b2f7bd3e Model System Clean Up 2016-02-25 21:44:36 +01:00
mezz 78d836bc1f Remove most deprecated things 2016-02-25 04:45:19 -08:00
mezz 65436a4e70 Use ForestryPlugin annotation to discover plugins 2016-02-25 04:17:33 -08:00
mezz c6ab58de22 Merge pull request #1080 from Nedelosk/mc-1.8.9
Fix Crate Models and other Models
2016-02-24 18:09:37 -08:00
Nedelosk 28502d23e0 Fix Crate Models and other Models 2016-02-24 21:57:20 +01:00
mezz f85b534389 Move JEI items out of the way of ledgers 2016-02-22 23:57:06 -08:00
mezz ab0d1cf7fc Split block type from properties, combine definition and properties 2016-02-22 23:39:10 -08:00
mezz 0672035596 Merge branch 'dev' into mc-1.8.9
# Conflicts:
#	gradle.properties
#	src/main/java/forestry/plugins/compat/PluginRotaryCraft.java
2016-02-22 16:52:30 -08:00
mezz fbae1b7622 Merge pull request #1074 from Nedelosk/mc-1.8.9
Fix Crate Models
2016-02-21 22:21:13 -08:00
mezz 372e17b488 Merge pull request #1072 from Nedelosk/patch-1
Remove unused Sub Modules
2016-02-21 22:18:37 -08:00
Nedelosk 96170b5f21 Fix Crate Models 2016-02-21 18:56:06 +01:00
Nedelosk f9a8a294b8 Remove unused Sub Modules 2016-02-21 11:22:09 +01:00
mezz 48c8c016b4 Tidy up JEI integration 2016-02-20 23:14:56 -08:00
mezz 8da0c0dc95 Get things compiling.
Move ForestryAPI into the Forestry project instead of as a submodule
Include the new RF API
Remove code for mods that have not yet ported to 1.8.9 (add it back later)
Bump version to 5.0.0
2016-02-20 19:51:49 -08:00
mezz 73812d8765 Merge branch 'dev' into mc-1.8.9
# Conflicts:
#	gradle.properties
#	src/main/java/forestry/arboriculture/render/IconProviderWood.java
#	src/main/java/forestry/core/access/AccessHandler.java
#	src/main/java/forestry/core/multiblock/MultiblockTileEntityForestry.java
#	src/main/java/forestry/farming/logic/FarmLogicOrchard.java
#	src/main/java/forestry/plugins/compat/PluginGrowthCraft.java
#	src/main/java/forestry/plugins/compat/PluginHarvestCraft.java
#	src/main/java/forestry/plugins/compat/PluginPlantMegaPack.java
#	src/main/java/forestry/plugins/compat/PluginWitchery.java
2016-02-19 19:14:59 -08:00
Nedelosk 801c6dff92 Clean Up and Add Comments
A clean up and I add crates with the new blocks from 1.8.
2016-01-24 12:41:47 +01:00
Nedelosk 02ec97b031 Clean Up and Bug Fixes 2016-01-23 17:17:20 +01:00
Nedelosk 6390a0cd11 Fix JEI and remove Forge test mods 2016-01-23 00:19:21 +01:00
Nedelosk 5a3850c264 First 1.8.9 Version 2016-01-22 19:33:35 +01:00
Nedelosk d35cc1df09 Update Gradle 2016-01-13 21:55:25 +01:00
2834 changed files with 76688 additions and 50155 deletions

No files matched your search

+5
View File
@@ -0,0 +1,5 @@
Thank you for reporting!
For issues:
* Try the latest version, it may have fixed the issue already.
* If you crashed, please paste the crash log to [gist](https://gist.github.com/) and link it here.
+3 -3
View File
@@ -2,11 +2,10 @@
/*
# folders
!/.github
!/forestry_techne
!/gradle/wrapper
!/src
!/api
!/test
# files
!/.gitignore
@@ -21,4 +20,5 @@
!/build.xml
!/gradlew
!/gradlew.bat
.DS_Store
!/cla-signatures.txt
!/formatting-settings.jar
-6
View File
@@ -1,9 +1,3 @@
[submodule "lang"]
path = lang
url = https://github.com/ForestryMC/Forestry-Localization.git
[submodule "api/redstoneflux"]
path = api/redstoneflux
url = https://github.com/CoFH/RedstoneFlux-API.git
[submodule "api/forestry"]
path = api/forestry
url = https://github.com/ForestryMC/ForestryAPI.git
+3 -3
View File
@@ -1,4 +1,4 @@
Forestry
[Forestry](https://minecraft.curseforge.com/projects/forestry/files)
====================================
### What is it?
@@ -9,7 +9,7 @@ Forestry is a modification for the game Minecraft and known primarily for its fa
[Wiki](http://forestry.sengir.net/)
[Latest Builds for 1.7.10](http://jenkins.ic2.player.to/job/Forestry_Dev/)
[Latest Builds for 1.11 / 1.11.2](http://jenkins.ic2.player.to/job/Forestry_1.11/)
[IRC #forestry on esper.net](http://webchat.esper.net/?nick=ForestryGithub...&channels=forestry&prompt=1)
@@ -17,7 +17,7 @@ For those interested in developement, you can also visit #forestry-dev.
### Building
The API and localization files reside in their own repository. It is pulled in automatically.
The localization files reside in their own repository. It is pulled in automatically.
You may want to adjust the "./gradle.properties" file to set your mc account as needed.
Submodule api/forestry deleted from 5e44fe9c6a.
+77 -156
View File
@@ -1,25 +1,19 @@
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
jcenter()
maven { url = "http://files.minecraftforge.net/maven" }
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
// https://github.com/ajoberstar/gradle-git
classpath 'org.ajoberstar:gradle-git:0.8.0'
classpath 'net.minecraftforge.gradle:ForgeGradle:2.2-SNAPSHOT'
}
}
apply plugin: 'forge'
plugins {
id "com.matthewprenger.cursegradle" version "1.0.7"
id "se.bjurr.gitchangelog.git-changelog-gradle-plugin" version "1.32"
}
apply plugin: 'net.minecraftforge.gradle.forge'
apply plugin: 'maven'
apply plugin: 'java'
version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
if (project.hasProperty('buildQualifier')) {
@@ -31,29 +25,21 @@ archivesBaseName = "forestry_" + mcversion
ext.dirDest = './build/dist'
ext.dirLang = "./lang"
ext.apiForestry = "./api/forestry"
ext.apiRedstoneFlux = "./api/redstoneflux"
// java version
sourceCompatibility = 1.7
targetCompatibility = 1.7
sourceCompatibility = 1.8
targetCompatibility = 1.8
minecraft {
version = mcversion + "-" + forgeversion
runDir = "run"
mappings = mcp_mappings
replace '@VERSION@', project.version
replace '@BUILD_NUMBER@', getBuildNumber()
srgExtra "PK: chylex/javacheck forestry/shade/javacheck"
}
sourceSets {
main {
java {
srcDir project.apiForestry
srcDir project.apiRedstoneFlux + "/src/main/java"
}
resources {
srcDir project.dirLang
}
@@ -61,47 +47,28 @@ sourceSets {
}
repositories {
maven {
url 'http://maven.epoxide.xyz'
}
maven {
url "http://dvs1.progwml6.com/files/maven"
}
maven {
name = "ic2"
url = "http://maven.ic2.player.to/"
}
ivy {
name "BuildCraft"
artifactPattern "http://www.mod-buildcraft.com/releases/BuildCraft/[revision]/[module]-[revision]-[classifier].[ext]"
}
maven {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
}
maven{
name "tterrag Repo"
url "http://maven.tterrag.com/"
}
}
dependencies {
deobfCompile "net.darkhax.tesla:Tesla:${tesla_version}"
deobfCompile "mezz.jei:jei_${mcversion}:${jei_version}:api"
runtime "mezz.jei:jei_${mcversion}:${jei_version}"
deobfCompile "net.industrial-craft:industrialcraft-2:${ic2_version}:api"
}
configurations {
api
compile.extendsFrom api
shade
compile.extendsFrom shade
}
dependencies {
api 'net.industrial-craft:industrialcraft-2:2.2.790-experimental:api'
api name: "buildcraft", version: "7.1.12", classifier: "api"
// http://files.minecraftforge.net/CodeChickenLib/
compile "codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev"
// http://chickenbones.net/maven
compile "codechicken:CodeChickenCore:1.7.10-1.0.7.47:dev"
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.111:dev"
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.111:src"
// http://maven.tterrag.com/
shade "chylex.javacheck:JavaChecker:v1.2-b1"
testCompile 'junit:junit:4.12'
}
processResources {
@@ -123,110 +90,42 @@ processResources {
exclude 'mcmod.info'
exclude '**/*.md'
}
// Move access transformers to META-INF
rename '(.+_at.cfg)', 'META-INF/$1'
}
runClient {
if (project.hasProperty('mcUsername')) {
args "--username=" + project.mcUsername
}
if (project.hasProperty('mcPassword')) {
args "--password=" + project.mcPassword
}
}
debugClient {
if (project.hasProperty('mcUsername')) {
args "--username=" + project.mcUsername
}
if (project.hasProperty('mcPassword')) {
args "--password=" + project.mcPassword
// prevent java 8's strict doclint for javadocs from failing builds
allprojects {
tasks.withType(Javadoc) {
options.addStringOption('Xdoclint:none', '-quiet')
}
}
jar {
destinationDir = file("build/tmp")
archiveName = "main.jar"
// Copy various READMEs and Licensing files into the jar
into ('forestry/api') {
from project.apiForestry + "/LICENSE.txt"
}
into ('cofh/api') {
from project.apiRedstoneFlux + "/LICENSE - LGPLv3.txt"
}
into ('invtweaks/api') {
from "./src/main/java/invtweaks/LICENSE.txt"
}
configurations.shade.each{ dep ->
from(project.zipTree(dep)){
exclude 'META-INF', 'META-INF/**', 'mcmod.info'
}
manifest {
attributes 'FMLAT': 'forestry_at.cfg'
}
}
task mainJar(type: Jar, dependsOn: 'reobf') {
from (zipTree(jar.getArchivePath())) {
include '**'
exclude '**/codechicken/**'
exclude '**/uristqwerty/**'
}
destinationDir = file(dirDest)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs = false
manifest{
attributes 'TweakClass': 'forestry.shade.javacheck.Java7Checker'
}
}
task devJar(type: Jar, dependsOn: 'classes') {
from (sourceSets.main.output) {
exclude '**/codechicken/**'
exclude '**/uristqwerty/**'
}
destinationDir = file(dirDest)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs = false
classifier = 'dev'
}
task apiJar(type: Jar, dependsOn: 'classes') {
from project.apiForestry
from(sourceSets.main.output) {
include 'forestry/api/**'
}
destinationDir = file(dirDest)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs = false
classifier = 'api'
}
task sourceJar(type: Jar, dependsOn: 'classes') {
from (sourceSets.main.allSource) {
exclude '**/codechicken/**'
exclude '**/uristqwerty/**'
}
destinationDir = file(dirDest)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs = false
task sourcesJar(type: Jar) {
from zipTree('build/retromapping/retromappedReplacedMain.jar') // Not sure if this is how Abrar designed it, but grab the remapped src
classifier = 'sources'
}
task release (dependsOn: [mainJar, apiJar, devJar, sourceJar]) {
task apiJar(type: Jar) {
// TODO: when FG bug is fixed, remove allSource from the api jar.
// https://github.com/MinecraftForge/ForgeGradle/issues/369
// Gradle should be able to pull them from the -sources jar.
from sourceSets.main.allSource
from sourceSets.main.output
include 'forestry/api/**'
classifier = 'api'
}
artifacts {
archives sourcesJar
archives apiJar
archives devJar
archives sourceJar
}
uploadArchives {
@@ -234,19 +133,9 @@ uploadArchives {
if (project.hasProperty('mavenDir')) {
mavenDeployer {
repository(url: "file://"+mavenDir)
addFilter('api') { artifact, file ->
file == apiJar.archivePath
}
addFilter('dev') { artifact, file ->
file == devJar.archivePath
}
addFilter('source') { artifact, file ->
file == sourceJar.archivePath
}
}
} else {
println 'Archives upload disabled, gradle.properties is missing.'
println 'Archives upload disabled, mavenDir in gradle.properties is missing.'
}
}
}
@@ -255,3 +144,35 @@ def getBuildNumber() {
return "$System.env.BUILD_NUMBER" != "null" ? "$System.env.BUILD_NUMBER" : "0"
}
task makeChangelog(type: se.bjurr.gitchangelog.plugin.gradle.GitChangelogTask) {
filePath = "changelog.html"
untaggedName = "Current release ${project.version}"
fromCommit = "5a3850c2642e535656d090d1473054d5fa8d3331"
toRef = "HEAD"
templateContent = """
Alpha version, still buggy. Do not create a world you care about with this version, it can and will break things severely.<br/>
Please help the project by trying it out and <a href="https://github.com/ForestryMC/ForestryMC/issues">reporting issues here.</a><br/>
{{#tags}}
<h3>{{name}}</h3>
<ul>
{{#commits}}
<li>{{{message}}} - {{authorName}}</li>
{{/commits}}
</ul>
{{/tags}}
"""
}
curseforge {
apiKey = project.hasProperty('curseforge_apikey') ? project.curseforge_apikey : '0'
project {
id = '59751'
changelog = file('changelog.html')
changelogType = 'html'
releaseType = 'alpha'
}
}
afterEvaluate {
tasks.curseforge59751.dependsOn.add(makeChangelog)
}
+1
View File
@@ -4,3 +4,4 @@ GenuineSounds;[email protected];2015-02-26
airbreather;[email protected];2015-04-10
ganymedes01;[email protected];2015-05-27
infinityraider;theoneandonlyraider@gmail;com;2015-10-03
girafistudios;[email protected];2016-06-02
+11 -5
View File
@@ -1,5 +1,11 @@
mcversion=1.7.10
forgeversion=10.13.4.1566-1.7.10
version_major=4
version_minor=2
version_patch=9
mcversion=1.11.2
forgeversion=13.20.0.2279
mcp_mappings=snapshot_20161220
tesla_version=1.11-1.3.0.51
jei_version=4.3.0.252
ic2_version=2.7.7-ex111
version_major=5
version_minor=3
version_patch=4
Binary file not shown.
+2 -2
View File
@@ -1,6 +1,6 @@
#Wed Jul 02 15:54:47 CDT 2014
#Mon Sep 14 12:28:28 PDT 2015
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-2.7-bin.zip
+1 -1
Submodule lang updated: cb5900228e...f5300f059b.
File renamed without changes.
+51 -56
View File
@@ -10,44 +10,39 @@
******************************************************************************/
package forestry;
import javax.annotation.Nullable;
import java.io.File;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.Type;
import com.google.common.base.Preconditions;
import forestry.api.core.ForestryAPI;
import forestry.core.EventHandlerCore;
import forestry.core.climate.ClimateEventHandler;
import forestry.core.config.Config;
import forestry.core.config.Constants;
import forestry.core.config.GameMode;
import forestry.core.config.Version;
import forestry.core.errors.EnumErrorCode;
import forestry.core.errors.ErrorStateRegistry;
import forestry.core.gui.GuiHandler;
import forestry.core.multiblock.MultiblockEventHandler;
import forestry.core.network.PacketHandler;
import forestry.core.proxy.Proxies;
import forestry.core.utils.Log;
import forestry.core.utils.StringUtil;
import forestry.core.utils.MigrationHelper;
import forestry.core.worldgen.WorldGenerator;
import forestry.plugins.PluginManager;
import forestry.plugins.compat.PluginIC2;
import net.minecraftforge.common.MinecraftForge;
import net.minecraftforge.fluids.FluidRegistry;
import net.minecraftforge.fml.common.Mod;
import net.minecraftforge.fml.common.Mod.EventHandler;
import net.minecraftforge.fml.common.event.FMLInitializationEvent;
import net.minecraftforge.fml.common.event.FMLInterModComms;
import net.minecraftforge.fml.common.event.FMLInterModComms.IMCEvent;
import net.minecraftforge.fml.common.event.FMLMissingMappingsEvent;
import net.minecraftforge.fml.common.event.FMLPostInitializationEvent;
import net.minecraftforge.fml.common.event.FMLPreInitializationEvent;
import net.minecraftforge.fml.common.event.FMLServerStartingEvent;
import net.minecraftforge.fml.common.network.NetworkRegistry;
import net.minecraftforge.fml.common.registry.GameRegistry;
/**
* Forestry Minecraft Mod
@@ -55,21 +50,20 @@ import forestry.plugins.PluginManager;
* @author SirSengir
*/
@Mod(
modid = Constants.MOD,
modid = Constants.MOD_ID,
name = "Forestry",
version = Version.VERSION,
version = Constants.VERSION,
guiFactory = "forestry.core.config.ForestryGuiConfigFactory",
dependencies = "required-after:Forge@[10.13.4.1566,);"
+ "after:Buildcraft|Core@[6.1.7,);"
+ "after:ExtrabiomesXL;"
+ "after:BiomesOPlenty;"
+ "after:IC2@[2.0.140,);"
+ "after:Natura@[2.2.0,);"
+ "after:HardcoreEnderExpansion;")
acceptedMinecraftVersions = "[1.11]",
dependencies = "required-after:forge@[13.20.0.2270,);"
+ "after:JEI@[4.3.0,);"
+ "after:" + PluginIC2.modId + ";")
public class Forestry {
@Mod.Instance(Constants.MOD)
@SuppressWarnings("NullableProblems")
@Mod.Instance(Constants.MOD_ID)
public static Forestry instance;
@Nullable
private File configFolder;
public Forestry() {
@@ -77,9 +71,16 @@ public class Forestry {
ForestryAPI.forestryConstants = new Constants();
ForestryAPI.errorStateRegistry = new ErrorStateRegistry();
EnumErrorCode.init();
FluidRegistry.enableUniversalBucket();
}
public static PacketHandler packetHandler;
@Nullable
private static PacketHandler packetHandler;
public static PacketHandler getPacketHandler() {
Preconditions.checkState(packetHandler != null);
return packetHandler;
}
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
@@ -88,17 +89,22 @@ public class Forestry {
// Register event handler
EventHandlerCore eventHandlerCore = new EventHandlerCore();
MinecraftForge.EVENT_BUS.register(eventHandlerCore);
FMLCommonHandler.instance().bus().register(eventHandlerCore);
MinecraftForge.EVENT_BUS.register(new MultiblockEventHandler());
MinecraftForge.EVENT_BUS.register(new ClimateEventHandler());
Proxies.common.registerEventHandlers();
configFolder = new File(event.getModConfigurationDirectory(), "forestry");
Config.load();
configFolder = new File(event.getModConfigurationDirectory(), Constants.MOD_ID);
Config.load(event.getSide());
PluginManager.runSetup();
PluginManager.runSetup(event);
ForestryAPI.activeMode = new GameMode(Config.gameMode);
String gameMode = Config.gameMode;
Preconditions.checkState(gameMode != null);
ForestryAPI.activeMode = new GameMode(gameMode);
PluginManager.runPreInit();
PluginManager.runPreInit(event.getSide());
Proxies.render.registerModels();
}
@EventHandler
@@ -107,6 +113,8 @@ public class Forestry {
NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
PluginManager.runInit();
Proxies.render.registerItemAndBlockColors();
}
@EventHandler
@@ -129,6 +137,7 @@ public class Forestry {
PluginManager.serverStarting(event.getServer());
}
@Nullable
public File getConfigFolder() {
return configFolder;
}
@@ -139,21 +148,7 @@ public class Forestry {
}
@EventHandler
public void missingMapping(FMLMissingMappingsEvent event) {
for (MissingMapping mapping : event.get()) {
if (mapping.type == Type.BLOCK) {
Block block = GameRegistry.findBlock(Constants.MOD, StringUtil.cleanTags(mapping.name));
if (block != null) {
mapping.remap(block);
Log.warning("Remapping block " + mapping.name + " to " + StringUtil.cleanBlockName(block));
}
} else {
Item item = GameRegistry.findItem(Constants.MOD, StringUtil.cleanTags(mapping.name));
if (item != null) {
mapping.remap(item);
Log.warning("Remapping item " + mapping.name + " to " + StringUtil.cleanItemName(item));
}
}
}
public void onMissingMappings(FMLMissingMappingsEvent event) {
MigrationHelper.onMissingMappings(event);
}
}
+11
View File
@@ -0,0 +1,11 @@
License („MIT“)
Forestry API
Copyright (c) 2011 - 2014 SirSengir.
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+26
View File
@@ -0,0 +1,26 @@
Forestry API
====================================
### What is it?
Forestry is a modification for the game Minecraft and known primarily for its farms and bees. This is the API for inter-mod operations.
### Homepage
[Wiki](http://forestry.sengir.net/)
[Forums](http://forestry.sengir.net/forum/)
[IRC #forestry on esper.net](http://webchat.esper.net/?nick=ForestryWiki...&channels=forestry&prompt=1)
### Notes
This is only the API. It is not intended to be used by itself, but rather for use either with Forestry itself or another mod which wants to use a functionality of Forestry.
Package versioning follows the rules laid out by http://semver.org/
Bugfixes are generally welcome. If you want to contribute something which changes game mechanics, please talk to someone with commit privileges first. Nothing is more frustrating than putting a lot of work and effort into a new game mechanic and then having the PR rejected because it doesn’t fit gameplay-wise.
### License & Copyright
Forestry API is (c) 2011 - 2014 SirSengir and licensed under MIT. See the LICENSE.txt for more information. Note that the core Forestry source is licensed differently! The Forestry API may also contain code contributed by CovertJaguar, Player, MysteriousAges, Binnie and others.
@@ -0,0 +1,13 @@
package forestry.api.apiculture;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
public class ApicultureCapabilities {
/**
* Capability for {@link IArmorApiarist}.
* The {@link Capability#getDefaultInstance()} will always protect the wearer with no side effects.
*/
@CapabilityInject(IArmorApiarist.class)
public static Capability<IArmorApiarist> ARMOR_APIARIST;
}
@@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.item.ItemStack;
/**
* Some miscellaneous lists and settings for bees.
*
* @author SirSengir
*/
public class BeeManager {
/**
* Common Village Bees
*/
public static List<IBeeGenome> commonVillageBees;
/**
* Uncommon Village Bees (20 % of spawns)
*/
public static List<IBeeGenome> uncommonVillageBees;
/**
* List of items that can induce swarming. Integer denotes x in 1000 chance.
*/
public static final Map<ItemStack, Integer> inducers = new HashMap<>();
/**
* Convenient access to AlleleManager.alleleRegistry.getSpeciesRoot("rootBees")
*/
public static IBeeRoot beeRoot;
/**
* Used to create new bees.
*/
public static IBeeFactory beeFactory;
/**
* Used to create new bee mutations.
*/
public static IBeeMutationFactory beeMutationFactory;
/**
* Used to get Forestry's jubilance implementations.
*/
public static IJubilanceFactory jubilanceFactory;
/**
* Used to check whether a player is wearing Apiarist Armor.
*/
public static IArmorApiaristHelper armorApiaristHelper;
}
@@ -0,0 +1,31 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IIndividual;
/**
* Easily extendable default IBeeListener.
* By itself, this IBeeListener does nothing.
* BeeListeners should inherit from this class unless they need to listen for everything.
*/
public class DefaultBeeListener implements IBeeListener {
@Override
public void wearOutEquipment(int amount) {
}
@Override
public void onQueenDeath() {
}
@Override
public boolean onPollenRetrieved(IIndividual pollen) {
return false;
}
}
@@ -0,0 +1,67 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
/**
* Easily extendable default IBeeModifier.
* By itself, this IBeeModifier does nothing.
* BeeModifiers should inherit from this class unless they modify everything.
*/
public class DefaultBeeModifier implements IBeeModifier {
@Override
public float getTerritoryModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
@Override
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
return 1.0f;
}
@Override
public float getLifespanModifier(IBeeGenome genome, @Nullable IBeeGenome mate, float currentModifier) {
return 1.0f;
}
@Override
public float getProductionModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
@Override
public float getFloweringModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
@Override
public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
@Override
public boolean isSealed() {
return false;
}
@Override
public boolean isSelfLighted() {
return false;
}
@Override
public boolean isSunlightSimulated() {
return false;
}
@Override
public boolean isHellish() {
return false;
}
}
@@ -0,0 +1,99 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.Locale;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleArea;
import forestry.api.genetics.IAlleleBoolean;
import forestry.api.genetics.IAlleleFloat;
import forestry.api.genetics.IAlleleFlowers;
import forestry.api.genetics.IAlleleInteger;
import forestry.api.genetics.IAlleleTolerance;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.ISpeciesRoot;
/**
* Enum representing the order of chromosomes in a bee's genome and what they control.
*
* @author SirSengir
*/
public enum EnumBeeChromosome implements IChromosomeType {
/**
* Species of the bee. Alleles here must implement {@link IAlleleBeeSpecies}.
*/
SPECIES(IAlleleBeeSpecies.class),
/**
* (Production) Speed of the bee.
*/
SPEED(IAlleleFloat.class),
/**
* Lifespan of the bee.
*/
LIFESPAN(IAlleleInteger.class),
/**
* Fertility of the bee. Determines number of offspring.
*/
FERTILITY(IAlleleInteger.class),
/**
* Temperature difference to its native supported one the bee can tolerate.
*/
TEMPERATURE_TOLERANCE(IAlleleTolerance.class),
/**
* If true, a naturally diurnal bee can work during the night. If true, a naturally nocturnal bee can work during the day.
*/
NEVER_SLEEPS(IAlleleBoolean.class),
/**
* Humidity difference to its native supported one the bee can tolerate.
*/
HUMIDITY_TOLERANCE(IAlleleTolerance.class),
/**
* If true the bee can work during rain.
*/
TOLERATES_RAIN(IAlleleBoolean.class),
/**
* If true, the bee can work without a clear view of the sky.
*/
CAVE_DWELLING(IAlleleBoolean.class),
/**
* Contains the supported flower provider.
*/
FLOWER_PROVIDER(IAlleleFlowers.class),
/**
* Determines pollination speed.
*/
FLOWERING(IAlleleInteger.class),
/**
* Determines the size of the bee's territory.
*/
TERRITORY(IAlleleArea.class),
/**
* Determines the bee's effect.
*/
EFFECT(IAlleleBeeEffect.class);
private final Class<? extends IAllele> alleleClass;
EnumBeeChromosome(Class<? extends IAllele> alleleClass) {
this.alleleClass = alleleClass;
}
@Override
public Class<? extends IAllele> getAlleleClass() {
return alleleClass;
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public ISpeciesRoot getSpeciesRoot() {
return BeeManager.beeRoot;
}
}
@@ -0,0 +1,26 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.Locale;
import forestry.api.genetics.ISpeciesType;
public enum EnumBeeType implements ISpeciesType {
DRONE, PRINCESS, QUEEN, LARVAE;
public static final EnumBeeType[] VALUES = values();
private final String name;
EnumBeeType() {
this.name = this.toString().toLowerCase(Locale.ENGLISH);
}
public String getName() {
return name;
}
}
@@ -0,0 +1,26 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IFlowerRegistry;
public class FlowerManager {
/**
* <blockquote><pre>e.g. FlowerManager.flowerRegister.registerPlantableFlower(new ItemStack(Blocks.RED_FLOWER), 1.0, FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow);</pre></blockquote>
*/
public static IFlowerRegistry flowerRegistry;
public static final String FlowerTypeVanilla = "flowersVanilla";
public static final String FlowerTypeNether = "flowersNether";
public static final String FlowerTypeCacti = "flowersCacti";
public static final String FlowerTypeMushrooms = "flowersMushrooms";
public static final String FlowerTypeEnd = "flowersEnd";
public static final String FlowerTypeJungle = "flowersJungle";
public static final String FlowerTypeSnow = "flowersSnow";
public static final String FlowerTypeWheat = "flowersWheat";
public static final String FlowerTypeGourd = "flowersGourd";
}
@@ -0,0 +1,36 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IAlleleEffect;
import forestry.api.genetics.IEffectData;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IAlleleBeeEffect extends IAlleleEffect {
/**
* Called by apiaries to cause an effect in the world. (server)
*
* @param genome Genome of the bee queen causing this effect
* @param storedData Object containing the stored effect data for the apiary/hive the bee is in.
* @param housing {@link IBeeHousing} the bee currently resides in.
* @return storedData, may have been manipulated.
*/
IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing);
/**
* Is called to produce visual bee effects. (client)
*
* @param genome Genome of the bee queen causing this effect
* @param storedData Object containing the stored effect data for the apiary/hive the bee is in.
* @param housing {@link IBeeHousing} the bee currently resides in.
* @return storedData, may have been manipulated.
*/
@SideOnly(Side.CLIENT)
IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing);
}
@@ -0,0 +1,53 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.Map;
import forestry.api.core.IModelManager;
import forestry.api.genetics.IAlleleSpecies;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IAlleleBeeSpecies extends IAlleleSpecies {
/**
* @return the IBeeRoot
*/
@Override
IBeeRoot getRoot();
/**
* @return true if this species is only active at night.
*/
boolean isNocturnal();
/**
* @return Map of possible products with the chance for drop each bee cycle. (0 - 1]
*/
Map<ItemStack, Float> getProductChances();
/**
* @return Map of possible specialities with the chance for drop each bee cycle. (0 - 1]
*/
Map<ItemStack, Float> getSpecialtyChances();
/**
* Only jubilant bees produce specialities.
*
* @return true if the bee is jubilant, false otherwise.
*/
boolean isJubilant(IBeeGenome genome, IBeeHousing housing);
@SideOnly(Side.CLIENT)
ModelResourceLocation getModel(EnumBeeType type);
@SideOnly(Side.CLIENT)
void registerModels(Item item, IModelManager manager);
}
@@ -0,0 +1,49 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IAlleleSpeciesBuilder;
import net.minecraft.item.ItemStack;
public interface IAlleleBeeSpeciesBuilder extends IAlleleSpeciesBuilder {
@Override
IAlleleBeeSpecies build();
/**
* Add a product for this bee species.
* Chance is between 0 and 1.
*/
IAlleleBeeSpeciesBuilder addProduct(ItemStack product, Float chance);
/**
* Add a specialty product for this bee species.
* Bees only produce their specialty when they are Jubilant (see IJubilanceProvider)
* Chance is between 0 and 1.
*/
IAlleleBeeSpeciesBuilder addSpecialty(ItemStack specialty, Float chance);
/**
* Set the Jubilance Provider for this bee species.
* Bees only produce their specialty when they are Jubilant (see IJubilanceProvider)
*/
IAlleleBeeSpeciesBuilder setJubilanceProvider(IJubilanceProvider provider);
/**
* Make this species only active at night.
*/
IAlleleBeeSpeciesBuilder setNocturnal();
/**
* Use this if you have custom icons for bees.
*/
IAlleleBeeSpeciesBuilder setCustomBeeModelProvider(IBeeModelProvider beeIconProvider);
/**
* Use this if you have custom icon colours for bees (other than the default static primary + secondary colours).
*/
IAlleleBeeSpeciesBuilder setCustomBeeSpriteColourProvider(IBeeSpriteColourProvider beeIconColourProvider);
}
@@ -0,0 +1,54 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IBreedingTracker;
import forestry.api.genetics.IIndividual;
/**
* Can be used to garner information on bee breeding. See {@link forestry.api.genetics.ISpeciesRoot} for retrieval functions.
*
* @author SirSengir
*/
public interface IApiaristTracker extends IBreedingTracker {
/**
* Register the birth of a queen. Will mark species as discovered.
*
* @param queen Created queen.
*/
void registerQueen(IIndividual queen);
/**
* @return Amount of queens bred with this tracker.
*/
int getQueenCount();
/**
* Register the birth of a princess. Will mark species as discovered.
*
* @param princess Created princess.
*/
void registerPrincess(IIndividual princess);
/**
* @return Amount of princesses bred with this tracker.
*/
int getPrincessCount();
/**
* Register the birth of a drone. Will mark species as discovered.
*
* @param drone Created drone.
*/
void registerDrone(IIndividual drone);
/**
* @return Amount of drones bred with this tracker.
*/
int getDroneCount();
}
@@ -0,0 +1,29 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
/**
* When implemented as a capability by armor items, protects the wearer from negative bee effects.
*
* @see ApicultureCapabilities#ARMOR_APIARIST
*/
public interface IArmorApiarist {
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param entity Entity being attacked
* @param armor Armor item
* @param cause Optional cause of attack, such as a bee effect identifier
* @param doProtect Whether or not to actually do the side effects of protection
* @return Whether or not the armor should protect the player from that attack
*/
boolean protectEntity(EntityLivingBase entity, ItemStack armor, @Nullable String cause, boolean doProtect);
}
@@ -0,0 +1,41 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
/**
* Helper class for checking whether an entity is wearing Apiarist Armor
*
* @author Vexatos
*/
public interface IArmorApiaristHelper {
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param stack ItemStack to check
* @param entity Entity being attacked
* @param cause Optional cause of attack, such as a bee effect identifier
* @param doProtect Whether or not to actually do the side effects of protection
* @return Whether or not the item is valid Apiarist Armor and should protect the player from that attack
* @since Forestry 4.2
*/
boolean isArmorApiarist(ItemStack stack, EntityLivingBase entity, String cause, boolean doProtect);
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param entity Entity being attacked
* @param cause Optional cause of attack, such as a bee effect identifier
* @param doProtect Whether or not to actually do the side effects of protection
* @return The number of valid Apiarist Armor pieces the player is wearing that are actually protecting.
* 4 means full protection, but it can go higher if they are holding items like the smoker.
* @since Forestry 4.2
*/
int wearsItems(EntityLivingBase entity, String cause, boolean doProtect);
}
@@ -0,0 +1,95 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Set;
import forestry.api.core.IErrorState;
import forestry.api.genetics.IEffectData;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.IIndividualLiving;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.world.biome.Biome;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* Other implementations than Forestry's default one are not supported.
*
* @author SirSengir
*/
public interface IBee extends IIndividualLiving {
/**
* @return Bee's genetic information.
*/
@Override
IBeeGenome getGenome();
/**
* @return Genetic information of the bee's mate, null if unmated.
*/
@Nullable
@Override
IBeeGenome getMate();
/**
* @return true if the individual is originally of natural origin.
*/
boolean isNatural();
/**
* @return generation this individual is removed from the original individual.
*/
int getGeneration();
/**
* Set the natural flag on this bee.
*/
void setIsNatural(boolean flag);
IEffectData[] doEffect(IEffectData[] storedData, IBeeHousing housing);
@SideOnly(Side.CLIENT)
IEffectData[] doFX(IEffectData[] storedData, IBeeHousing housing);
/**
* @return true if the bee may spawn offspring
*/
boolean canSpawn();
/**
* Determines whether the queen can work.
*
* @param housing the {@link IBeeHousing} the bee currently resides in.
* @return an empty set if the queen can work, a set of error states if the queen can not work
*/
Set<IErrorState> getCanWork(IBeeHousing housing);
List<Biome> getSuitableBiomes();
NonNullList<ItemStack> getProduceList();
NonNullList<ItemStack> getSpecialtyList();
NonNullList<ItemStack> produceStacks(IBeeHousing housing);
@Nullable
IBee spawnPrincess(IBeeHousing housing);
List<IBee> spawnDrones(IBeeHousing housing);
void plantFlowerRandom(IBeeHousing housing);
@Nullable
IIndividual retrievePollen(IBeeHousing housing);
boolean pollinateRandom(IBeeHousing housing, IIndividual pollen);
}
@@ -0,0 +1,39 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IClassification;
public interface IBeeFactory {
/**
* Creates a new bee species.
* Automatically registered with AlleleManager.alleleRegistry.registerAllele()
* See IAlleleBeeSpeciesBuilder and IAlleleSpeciesBuilder for adding additional properties to the returned species.
*
* @param uid Unique Identifier for this species
* @param dominant Whether this species is genetically dominant (false means it is recessive)
* @param authority Authority for the binomial name, e.g. "Sengir" on species of base Forestry.
* @param unlocalizedName Unlocalized name for this species
* @param unlocalizedDescription Unlocalized description for this species
* @param branch Classification of this species
* @param binomial Binomial name of the species sans genus ("Apis"). "humboldti" will have the bee species flavour name be "Apis humboldti". Feel free to use fun names or null.
* @param primaryColor The outline color of this species
* @param secondaryColor The body color of this species
* @return a new bee species allele.
*/
IAlleleBeeSpeciesBuilder createSpecies(String uid, boolean dominant, String authority, String unlocalizedName, String unlocalizedDescription, IClassification branch, String binomial, int primaryColor, int secondaryColor);
/**
* Creates a new bee branch.
* Must be registered with AlleleManager.alleleRegistry.getClassification("family.apidae").addMemberGroup();
*
* @param uid Unique Identifier for this branch
* @param scientific approximates a "genus" in real life. Real life examples: "Micrapis", "Megapis"
* @return a new bee branch
*/
IClassification createBranch(String uid, String scientific);
}
@@ -0,0 +1,50 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.EnumTolerance;
import forestry.api.genetics.IFlowerProvider;
import forestry.api.genetics.IGenome;
import net.minecraft.util.math.Vec3i;
/**
* Only the default implementation is supported.
*
* @author SirSengir
*/
public interface IBeeGenome extends IGenome {
@Override
IAlleleBeeSpecies getPrimary();
@Override
IAlleleBeeSpecies getSecondary();
float getSpeed();
int getLifespan();
int getFertility();
EnumTolerance getToleranceTemp();
EnumTolerance getToleranceHumid();
boolean getNeverSleeps();
boolean getToleratesRain();
boolean getCaveDwelling();
IFlowerProvider getFlowerProvider();
int getFlowering();
Vec3i getTerritory();
IAlleleBeeEffect getEffect();
}
@@ -0,0 +1,53 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
import com.mojang.authlib.GameProfile;
import forestry.api.climate.IClimateProvider;
import forestry.api.core.IErrorLogicSource;
import forestry.api.core.ILocatable;
import forestry.api.genetics.IHousing;
import net.minecraft.util.math.Vec3d;
public interface IBeeHousing extends IHousing, IErrorLogicSource, IClimateProvider, ILocatable {
/**
* Used by {@link IBeeRoot#createBeeHousingModifier(IBeeHousing)}
* to combine bee modifiers from several sources that can change over time.
*
* @return IBeeModifiers from the housing, frames, etc.
*/
Iterable<IBeeModifier> getBeeModifiers();
/**
* Used by {@link IBeeRoot#createBeeHousingListener(IBeeHousing)}
* to combine bee listeners from several sources that can change over time.
*
* @return IBeeListeners from the housing, multiblock parts, etc.
*/
Iterable<IBeeListener> getBeeListeners();
IBeeHousingInventory getBeeInventory();
IBeekeepingLogic getBeekeepingLogic();
int getBlockLightValue();
boolean canBlockSeeTheSky();
boolean isRaining();
@Nullable
GameProfile getOwner();
/**
* @return exact coordinates where bee particle FX should spawn from
* @since Forestry 4.2
*/
Vec3d getBeeFXCoordinates();
}
@@ -0,0 +1,28 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import net.minecraft.item.ItemStack;
public interface IBeeHousingInventory {
ItemStack getQueen();
ItemStack getDrone();
void setQueen(ItemStack itemstack);
void setDrone(ItemStack itemstack);
/**
* Adds products to the housing's inventory.
*
* @param product ItemStack with the product to add.
* @param all if true, success requires that all products are added
* @return boolean indicating success or failure.
*/
boolean addProduct(ItemStack product, boolean all);
}
@@ -0,0 +1,31 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IIndividual;
public interface IBeeListener {
/**
* Called when the bees wear out the housing's equipment.
*
* @param amount Integer indicating the amount worn out.
*/
void wearOutEquipment(int amount);
/**
* Called after the children have been spawned, and before the new princess is spawned.
*/
void onQueenDeath();
/**
* Called when the bees have retrieved some pollen.
*
* @return true if this bee listener handled the pollen.
*/
boolean onPollenRetrieved(IIndividual pollen);
}
@@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.core.IModelManager;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IBeeModelProvider {
@SideOnly(Side.CLIENT)
void registerModels(Item item, IModelManager manager);
@SideOnly(Side.CLIENT)
ModelResourceLocation getModel(EnumBeeType type);
}
@@ -0,0 +1,72 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
public interface IBeeModifier {
/**
* @param genome Genome of the bee this modifier is called for.
* @param currentModifier Current modifier.
* @return Float used to modify the base territory.
*/
float getTerritoryModifier(IBeeGenome genome, float currentModifier);
/**
* @param genome Genome of the bee this modifier is called for.
* @param mate Genome of the bee mate this modifier is called for.
* @param currentModifier Current modifier.
* @return Float used to modify the base mutation chance.
*/
float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier);
/**
* @param genome Genome of the bee this modifier is called for.
* @param currentModifier Current modifier.
* @return Float used to modify the life span of queens.
*/
float getLifespanModifier(IBeeGenome genome, @Nullable IBeeGenome mate, float currentModifier);
/**
* @param genome Genome of the bee this modifier is called for.
* @param currentModifier Current modifier.
* @return Float modifying the production speed of queens.
*/
float getProductionModifier(IBeeGenome genome, float currentModifier);
/**
* @param genome Genome of the bee this modifier is called for.
* @return Float modifying the flowering of queens.
*/
float getFloweringModifier(IBeeGenome genome, float currentModifier);
/**
* @param genome Genome of the bee this modifier is called for.
* @return Float modifying the chance for a swarmer queen to die off.
*/
float getGeneticDecay(IBeeGenome genome, float currentModifier);
/**
* @return Boolean indicating if housing can ignore rain
*/
boolean isSealed();
/**
* @return Boolean indicating if housing can ignore darkness/night
*/
boolean isSelfLighted();
/**
* @return Boolean indicating if housing can ignore not seeing the sky
*/
boolean isSunlightSimulated();
/**
* @return Boolean indicating whether this housing simulates the nether
*/
boolean isHellish();
}
@@ -0,0 +1,19 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IMutation;
public interface IBeeMutation extends IMutation {
@Override
IBeeRoot getRoot();
/**
* @return float representing the chance for mutation to occur. note that this is 0 - 100 based, since it was an integer previously!
*/
float getChance(IBeeHousing housing, IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IBeeGenome genome0, IBeeGenome genome1);
}
@@ -0,0 +1,13 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IMutationBuilder;
public interface IBeeMutationBuilder extends IMutationBuilder {
@Override
IBeeMutation build();
}
@@ -0,0 +1,23 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import forestry.api.genetics.IAllele;
public interface IBeeMutationFactory {
/**
* Creates a new bee mutation.
* Automatically registered with BeeManager.beeRoot.registerMutation()
* See IBeeMutationBuilder and IMutationBuilder for adding additional properties to the returned mutation.
*
* @param parentBee0 A parent bee for this mutation
* @param parentBee1 A parent bee for this mutation
* @param result The resulting alleles for this mutation
* @param chance The chance that breeding the two parent bees will result in this mutation
* @return a new bee mutation.
*/
IBeeMutationBuilder createMutation(IAlleleBeeSpecies parentBee0, IAlleleBeeSpecies parentBee1, IAllele[] result, int chance);
}
@@ -0,0 +1,134 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import javax.annotation.Nullable;
import java.util.List;
import com.mojang.authlib.GameProfile;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.ISpeciesRoot;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
public interface IBeeRoot extends ISpeciesRoot {
/**
* @return true if passed item is a Forestry bee. Equal to getType(ItemStack stack) != null
*/
@Override
boolean isMember(ItemStack stack);
/**
* @return {@link IBee} pattern parsed from the passed stack's nbt data. Null if the ItemStack is not a valid member.
*/
@Override
@Nullable
IBee getMember(ItemStack stack);
@Override
IBee getMember(NBTTagCompound compound);
/* GENOME CONVERSION */
@Override
IBee templateAsIndividual(IAllele[] template);
@Override
IBee templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive);
@Override
IBeeGenome templateAsGenome(IAllele[] template);
@Override
IBeeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive);
/* BREEDING TRACKER */
/**
* @return {@link IApiaristTracker} associated with the passed world.
*/
@Override
IApiaristTracker getBreedingTracker(World world, @Nullable GameProfile player);
/* BEE SPECIFIC */
/**
* @return type of bee encoded on the itemstack. null if it isn't a bee.
*/
@Nullable
@Override
EnumBeeType getType(ItemStack stack);
/**
* @return true if passed item is a drone. Equal to getType(ItemStack stack) == EnumBeeType.DRONE
*/
boolean isDrone(ItemStack stack);
/**
* @return true if passed item is mated (i.e. a queen)
*/
boolean isMated(ItemStack stack);
/**
* @param genome Valid {@link IBeeGenome}
* @return {@link IBee} from the passed genome
*/
IBee getBee(IBeeGenome genome);
/**
* Creates an IBee suitable for a queen containing the necessary second genome for the mate.
*
* @param genome Valid {@link IBeeGenome}
* @param mate Valid {@link IBee} representing the mate.
* @return Mated {@link IBee} from the passed genomes.
*/
IBee getBee(World world, IBeeGenome genome, IBee mate);
/* TEMPLATES */
@Override
List<IBee> getIndividualTemplates();
/* MUTATIONS */
@Override
List<IBeeMutation> getMutations(boolean shuffle);
/* GAME MODE */
void resetBeekeepingMode();
List<IBeekeepingMode> getBeekeepingModes();
IBeekeepingMode getBeekeepingMode(World world);
@Nullable
IBeekeepingMode getBeekeepingMode(String name);
void registerBeekeepingMode(IBeekeepingMode mode);
void setBeekeepingMode(World world, IBeekeepingMode mode);
/* MISC */
/**
* Creates beekeepingLogic for a housing.
* Should be used when the housing is created, see IBeekeepingLogic
*/
IBeekeepingLogic createBeekeepingLogic(IBeeHousing housing);
/**
* Combines multiple modifiers from an IBeeHousing into one.
* Stays up to date with changes to the housing's modifiers.
*/
IBeeModifier createBeeHousingModifier(IBeeHousing housing);
/**
* Combines multiple listeners from an IBeeHousing into one.
* Stays up to date with changes to the housing's listeners.
*/
IBeeListener createBeeHousingListener(IBeeHousing housing);
}
@@ -0,0 +1,13 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
/**
* Custom colour provider for bees with complicated colors.
*/
public interface IBeeSpriteColourProvider {
int getSpriteColour(int renderPass);
}
@@ -0,0 +1,82 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.List;
import forestry.api.core.INbtReadable;
import forestry.api.core.INbtWritable;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.math.BlockPos;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* Stores beekeeping logic for bee housings.
* Get one with BeeManager.beeRoot.createBeekeepingLogic(IBeeHousing housing)
* Save and load it to NBT using the INbtWritable methods.
*/
public interface IBeekeepingLogic extends INbtWritable, INbtReadable {
/* SERVER */
/**
* Checks that the bees can work, setting error conditions on the housing where needed
*
* @return true if no errors are present and doWork should be called
*/
boolean canWork();
/**
* Performs actual work, breeding, production, etc.
*/
void doWork();
/**
* Force the logic to refresh any cached values and error states.
* Call this when a player opens the gui so that all errors are up to date.
*/
void clearCachedValues();
/* CLIENT */
/**
* Sync to client by using {@link #writeToNBT(NBTTagCompound)} in your {@link TileEntity#getUpdateTag()}
*/
void syncToClient();
void syncToClient(EntityPlayerMP player);
/**
* Get the progress bar for breeding and production.
* To avoid network spam, this is only available server-side,
* and must be synced manually to the client when a GUI is open.
*/
int getBeeProgressPercent();
/**
* Whether bee fx should be active.
* Internally, this is automatically synced to the client.
*/
@SideOnly(Side.CLIENT)
boolean canDoBeeFX();
/**
* Display bee fx. Calls IBee.doFX(IEffectData[] storedData, IBeeHousing housing) on the queen.
* Internally, the queen is automatically synced to the client for the fx.
*/
@SideOnly(Side.CLIENT)
void doBeeFX();
/**
* Used by bee fx to direct bees to nearby flowers.
* These positions are synced to the client from the server.
*/
List<BlockPos> getFlowerPositions();
}
@@ -0,0 +1,64 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import java.util.List;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IBeekeepingMode {
/**
* @return Localized name of this beekeeping mode.
*/
String getName();
/**
* @return Localized list of strings outlining the behaviour of this beekeeping mode.
*/
List<String> getDescription();
/**
* @return Float used to modify the wear on comb frames.
*/
float getWearModifier();
/**
* @return fertility taking into account the birthing queen and surroundings.
*/
int getFinalFertility(IBee queen, World world, BlockPos pos);
/**
* @return true if the queen is genetically "fatigued" and should not be reproduced anymore.
*/
boolean isFatigued(IBee queen, IBeeHousing housing);
/**
* @return true if the queen is being overworked in the bee housing (with chance). will trigger a negative effect.
*/
boolean isOverworked(IBee queen, IBeeHousing housing);
/**
* @return true if the genetic structure of the queen is breaking down during spawning of the offspring (with chance). will trigger a negative effect.
*/
boolean isDegenerating(IBee queen, IBee offspring, IBeeHousing housing);
/**
* @return true if an offspring of this queen is considered a natural
*/
boolean isNaturalOffspring(IBee queen);
/**
* @return true if this mode allows the passed queen or princess to be multiplied
*/
boolean mayMultiplyPrincess(IBee queen);
/**
* @return the bee modifier for this mode
*/
IBeeModifier getBeeModifier();
}
@@ -0,0 +1,43 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
/**
* Bees can be seeded either as hive drops or as mutation results.
* <p>
* Add IHiveDrops with HiveManager.get___Hive.addDrop
*
* @author SirSengir
*/
public interface IHiveDrop {
IBee getBeeType(IBlockAccess world, BlockPos pos);
NonNullList<ItemStack> getExtraItems(IBlockAccess world, BlockPos pos, int fortune);
/**
* Chance to drop a bee or extra items. Default drops have 0.80 (= 80 %).
*
* @param world Minecraft world this is called for.
* @param pos Coordinates of the broken hive.
* @return Chance for drop as a float of 0.0 - 1.0.
*/
double getChance(IBlockAccess world, BlockPos pos, int fortune);
/**
* Chance for the princess to be ignoble. Default is around 0.4 to 0.7 (40% - 70%).
*
* @param world Minecraft world this is called for.
* @param pos Coordinates of the broken hive.
* @return Chance for ignoble as a float of 0.0 - 1.0.
*/
double getIgnobleChance(IBlockAccess world, BlockPos pos, int fortune);
}
@@ -0,0 +1,24 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import net.minecraft.item.ItemStack;
public interface IHiveFrame {
/**
* Wears out a frame.
*
* @param housing IBeeHousing the frame is contained in.
* @param frame ItemStack containing the actual frame.
* @param queen Current queen in the caller.
* @param wear Integer denoting the amount worn out. The wear modifier of the current beekeeping mode has already been taken into account.
* @return ItemStack containing the actual frame with adjusted damage, or Empty ItemStack if it has been broken.
*/
ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear);
IBeeModifier getBeeModifier();
}
@@ -0,0 +1,25 @@
package forestry.api.apiculture;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IHiveTile {
/**
* Call to calm agitated bees. Used by the smoker to stop wild bees from attacking as much.
* Bees will not stay calm for very long.
*/
void calmBees();
boolean isAngry();
/**
* Called when the hive is attacked.
*/
void onAttack(World world, BlockPos pos, EntityPlayer player);
/**
* Called when the hive is broken.
*/
void onBroken(World world, BlockPos pos, EntityPlayer player, boolean canHarvest);
}
@@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
import net.minecraft.block.state.IBlockState;
public interface IJubilanceFactory {
/**
* The default Jubilance Provider is satisfied when the humidity and temperature are ideal for the bee.
*/
IJubilanceProvider getDefault();
/**
* The Requires Resource Jubilance Provider is satisfied when a specific block is under the hive.
*/
IJubilanceProvider getRequiresResource(IBlockState... acceptedBlockStates);
}
@@ -0,0 +1,15 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
public interface IJubilanceProvider {
/**
* Returns true when conditions are right to make this species Jubilant.
* Jubilant bees can produce their Specialty products.
*/
boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing);
}
@@ -0,0 +1,13 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture.hives;
public class HiveManager {
public static IHiveRegistry hiveRegistry;
public static IHiveGenHelper genHelper;
}
@@ -0,0 +1,51 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture.hives;
import java.util.Random;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.biome.Biome;
public interface IHiveDescription {
/**
* The hive generator for this hive.
*/
IHiveGen getHiveGen();
/**
* The hive block to be placed in the world.
*/
IBlockState getBlockState();
/**
* returns true if the hive can be generated in these conditions.
* Used as a fast early-elimination check for hives that have no hope of spawning in the area.
*/
boolean isGoodBiome(Biome biome);
boolean isGoodHumidity(EnumHumidity humidity);
boolean isGoodTemperature(EnumTemperature temperature);
/**
* float representing the relative chance a hive will generate in a chunk.
* Default is 1.0, higher numbers result in more hives, smaller will result in fewer.
* Tree hives want around 3.0 to 4.0 since there are less locations to generate on.
*/
float getGenChance();
/**
* Called after successful hive generation.
* world, x, y, z give the location of the new hive.
**/
void postGen(World world, Random rand, BlockPos pos);
}
@@ -0,0 +1,34 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture.hives;
import javax.annotation.Nullable;
import net.minecraft.block.state.IBlockState;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IHiveGen {
/**
* return a position that the hive should try to generate at.
* returns null if the hive can't be placed anywhere.
*/
@Nullable
BlockPos getPosForHive(World world, int x, int z);
/**
* returns true if the hive can be generated at this location.
* Used for advanced conditions, like checking that the ground below the hive is a certain type.
*/
boolean isValidLocation(World world, BlockPos pos);
/**
* returns true if the hive can safely replace the block at this location.
*/
boolean canReplace(IBlockState blockState, World world, BlockPos pos);
}
@@ -0,0 +1,23 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture.hives;
import net.minecraft.block.Block;
public interface IHiveGenHelper {
/**
* Returns a hiveGen for a hive that spawns on the ground.
* validGroundBlocks specifies which block materials it can spawn on.
*/
IHiveGen ground(Block... validGroundBlocks);
/**
* Returns a hiveGen for a hive that spawns in trees.
*/
IHiveGen tree();
}
@@ -0,0 +1,68 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture.hives;
import java.util.List;
import java.util.Locale;
import forestry.api.apiculture.IHiveDrop;
import net.minecraft.util.IStringSerializable;
public interface IHiveRegistry {
/* Forestry Hive Names */
enum HiveType implements IStringSerializable {
FOREST("forestry:forest", "forestry.speciesForest"),
MEADOWS("forestry:meadows", "forestry.speciesMeadows"),
DESERT("forestry:desert", "forestry.speciesModest"),
JUNGLE("forestry:jungle", "forestry.speciesTropical"),
END("forestry:end", "forestry.speciesEnded"),
SNOW("forestry:snow", "forestry.speciesWintry"),
SWAMP("forestry:swamp", "forestry.speciesMarshy"),
SWARM("forestry:swarm", "forestry.speciesForest");
public static final HiveType[] VALUES = values();
private final String hiveUid;
private final String speciesUid;
HiveType(String hiveUid, String speciesUid) {
this.hiveUid = hiveUid;
this.speciesUid = speciesUid;
}
public String getHiveUid() {
return hiveUid;
}
public String getSpeciesUid() {
return speciesUid;
}
@Override
public String getName() {
return name().toLowerCase(Locale.ENGLISH);
}
public int getMeta() {
return ordinal();
}
}
/**
* Adds a new hive to be generated in the world.
*/
void registerHive(String hiveName, IHiveDescription hiveDescription);
/**
* Add drops to a registered hive.
*/
void addDrops(String hiveName, IHiveDrop... drops);
void addDrops(String hiveName, List<IHiveDrop> drop);
}
@@ -0,0 +1,14 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
@API(apiVersion = "4.1.0", owner = "ForestryAPI|apiculture", provides = "ForestryAPI|hives")
package forestry.api.apiculture.hives;
import javax.annotation.ParametersAreNonnullByDefault;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraftforge.fml.common.API;
@@ -0,0 +1,14 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
@ParametersAreNonnullByDefault
@MethodsReturnNonnullByDefault
@API(apiVersion = "5.0.0", owner = "ForestryAPI|core", provides = "ForestryAPI|apiculture")
package forestry.api.apiculture;
import javax.annotation.ParametersAreNonnullByDefault;
import mcp.MethodsReturnNonnullByDefault;
import net.minecraftforge.fml.common.API;
@@ -0,0 +1,14 @@
package forestry.api.arboriculture;
import forestry.api.core.IArmorNaturalist;
import net.minecraftforge.common.capabilities.Capability;
import net.minecraftforge.common.capabilities.CapabilityInject;
public class ArboricultureCapabilities {
/**
* Capability for {@link IArmorNaturalist}.
* The {@link Capability#getDefaultInstance()} will always show pollination with no side effects.
*/
@CapabilityInject(IArmorNaturalist.class)
public static Capability<IArmorNaturalist> ARMOR_NATURALIST;
}
@@ -0,0 +1,132 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.Locale;
import java.util.Random;
public enum EnumForestryWoodType implements IWoodType {
LARCH(4),
TEAK(4),
ACACIA(4),
LIME(4),
CHESTNUT(4),
WENGE(4),
BAOBAB(4),
SEQUOIA(3, 4.0f),
KAPOK(4),
EBONY(4),
MAHOGANY(4),
BALSA(4, 1.0f),
WILLOW(4),
WALNUT(4),
GREENHEART(4, 7.5f),
CHERRY(4),
MAHOE(4),
POPLAR(4),
PALM(4),
PAPAYA(4),
PINE(4, 3.0f),
PLUM(4),
MAPLE(4),
CITRUS(4),
GIGANTEUM(3, 4.0f),
IPE(4),
PADAUK(4),
COCOBOLO(4),
ZEBRAWOOD(4);
public static final float DEFAULT_HARDNESS = 2.0f;
public static final EnumForestryWoodType[] VALUES = values();
private final int carbonization;
private final float hardness;
EnumForestryWoodType(int carbonization) {
this(carbonization, DEFAULT_HARDNESS);
}
EnumForestryWoodType(int carbonization, float hardness) {
this.carbonization = carbonization;
this.hardness = hardness;
}
@Override
public float getHardness() {
return hardness;
}
public static EnumForestryWoodType getRandom(Random random) {
return VALUES[random.nextInt(VALUES.length)];
}
@Override
public String toString() {
return super.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public String getName() {
return toString();
}
@Override
public int getMetadata() {
return ordinal();
}
public static EnumForestryWoodType byMetadata(int meta) {
if (meta < 0 || meta >= VALUES.length) {
meta = 0;
}
return VALUES[meta];
}
@Override
public int getCarbonization() {
return carbonization;
}
@Override
public float getCharcoalChance(int numberOfCharcoal) {
if (numberOfCharcoal == 3) {
return 0.75F;
} else if (numberOfCharcoal == 4) {
return 0.5F;
} else if (numberOfCharcoal == 5) {
return 0.25F;
}
return 0.15F;
}
@Override
public String getPlankTexture() {
return "forestry:blocks/wood/planks." + getName();
}
@Override
public String getDoorLowerTexture() {
return "forestry:blocks/doors/" + getName() + "_lower";
}
@Override
public String getDoorUpperTexture() {
return "forestry:blocks/doors/" + getName() + "_upper";
}
@Override
public String getBarkTexture() {
return "forestry:blocks/wood/bark." + getName();
}
@Override
public String getHeartTexture() {
return "forestry:blocks/wood/heart." + getName();
}
}
@@ -0,0 +1,48 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IFruitFamily;
import forestry.core.utils.Translator;
public enum EnumFruitFamily implements IFruitFamily {
PRUNES("prunes", "Prunus domestica"),
POMES("pomes", "Pomum"),
JUNGLE("jungle", "Tropicus"),
NUX("nuts", "Nux"),
NONE("none", "None");
private final String uid;
private final String scientific;
EnumFruitFamily(String uid, String scientific) {
this.uid = uid;
this.scientific = scientific;
AlleleManager.alleleRegistry.registerFruitFamily(this);
}
@Override
public String getUID() {
return "forestry." + uid;
}
@Override
public String getScientific() {
return this.scientific;
}
@Override
public String getName() {
return Translator.translateToLocal("for.family." + uid);
}
@Override
public String getDescription() {
return Translator.translateToLocal("for.family." + uid + ".description");
}
}
@@ -0,0 +1,25 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.ISpeciesType;
public enum EnumGermlingType implements ISpeciesType {
SAPLING("sapling"), POLLEN("pollen");
public static final EnumGermlingType[] VALUES = values();
private final String name;
EnumGermlingType(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
@@ -0,0 +1,10 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
public enum EnumLeafType {
DECIDUOUS, CONIFERS, JUNGLE, WILLOW, MAPLE, PALM
}
@@ -0,0 +1,14 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
public enum EnumPileType {
WOOD,
DIRT,
ASH;
public static final EnumPileType[] VALUES = values();
}
@@ -0,0 +1,82 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.Locale;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleBoolean;
import forestry.api.genetics.IAlleleFloat;
import forestry.api.genetics.IAlleleInteger;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IFruitFamily;
import forestry.api.genetics.ISpeciesRoot;
import net.minecraftforge.common.EnumPlantType;
public enum EnumTreeChromosome implements IChromosomeType {
/**
* Determines the following: - WorldGen, including the used wood blocks - {@link IFruitFamily}s supported. Limits which {@link IFruitProvider}
* will actually yield fruit with this species. - Native {@link EnumPlantType} for this tree. Combines with the PLANT chromosome.
*/
SPECIES(IAlleleTreeSpecies.class),
/**
* A float modifying the height of the tree. Taken into account at worldgen.
*/
HEIGHT(IAlleleFloat.class),
/**
* Chance for saplings.
*/
FERTILITY(IAlleleFloat.class),
/**
* {@link IFruitProvider}, determines if and what fruits are grown on the tree. Limited by the {@link IFruitFamily}s the species supports.
*/
FRUITS(IAlleleFruit.class),
/**
* Chance for fruit leaves and/or drops.
*/
YIELD(IAlleleFloat.class),
/**
* Determines the speed at which fruit will ripen on this tree.
*/
SAPPINESS(IAlleleFloat.class),
/**
* Leaf effect. Unused.
*/
EFFECT(IAlleleLeafEffect.class),
/**
* Amount of random ticks which need to elapse before a sapling will grow into a tree.
*/
MATURATION(IAlleleInteger.class),
GIRTH(IAlleleInteger.class),
/**
* Determines if the tree can burn.
*/
FIREPROOF(IAlleleBoolean.class),;
private final Class<? extends IAllele> alleleClass;
EnumTreeChromosome(Class<? extends IAllele> alleleClass) {
this.alleleClass = alleleClass;
}
@Override
public Class<? extends IAllele> getAlleleClass() {
return alleleClass;
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public ISpeciesRoot getSpeciesRoot() {
return TreeManager.treeRoot;
}
}
@@ -0,0 +1,117 @@
package forestry.api.arboriculture;
import java.util.Locale;
import java.util.Random;
import net.minecraft.block.BlockPlanks;
public enum EnumVanillaWoodType implements IWoodType {
OAK(BlockPlanks.EnumType.OAK, 5),
SPRUCE(BlockPlanks.EnumType.SPRUCE, 4),
BIRCH(BlockPlanks.EnumType.BIRCH, 4),
JUNGLE(BlockPlanks.EnumType.JUNGLE, 5),
ACACIA(BlockPlanks.EnumType.ACACIA, 4),
DARK_OAK(BlockPlanks.EnumType.DARK_OAK, 5);
public static final EnumVanillaWoodType[] VALUES = values();
public static EnumVanillaWoodType getRandom(Random random) {
return VALUES[random.nextInt(VALUES.length)];
}
private final BlockPlanks.EnumType vanillaType;
private final int carbonization;
EnumVanillaWoodType(BlockPlanks.EnumType vanillaType, int carbonization) {
this.vanillaType = vanillaType;
this.carbonization = carbonization;
}
public BlockPlanks.EnumType getVanillaType() {
return vanillaType;
}
@Override
public String toString() {
return super.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public String getName() {
return toString();
}
@Override
public int getMetadata() {
return ordinal();
}
public static EnumVanillaWoodType byMetadata(int meta) {
if (meta < 0 || meta >= VALUES.length) {
meta = 0;
}
return VALUES[meta];
}
@Override
public float getHardness() {
return 2.0F;
}
@Override
public int getCarbonization() {
return carbonization;
}
@Override
public float getCharcoalChance(int numberOfCharcoal) {
if (numberOfCharcoal == 3) {
return 0.75F;
} else if (numberOfCharcoal == 4) {
return 0.5F;
} else if (numberOfCharcoal == 5) {
return 0.25F;
}
return 0.15F;
}
@Override
public String getPlankTexture() {
if (this == DARK_OAK) {
return "blocks/planks_big_oak";
}
return "blocks/planks_" + getName();
}
@Override
public String getDoorLowerTexture() {
if (this == OAK) {
return "blocks/door_wood_lower";
}
return "blocks/door_wood_lower";
}
@Override
public String getDoorUpperTexture() {
if (this == OAK) {
return "blocks/door_wood_upper";
}
return "blocks/door_" + getName() + "_upper";
}
@Override
public String getBarkTexture() {
if (this == DARK_OAK) {
return "blocks/log_big_oak";
}
return "blocks/log_" + getName();
}
@Override
public String getHeartTexture() {
if (this == DARK_OAK) {
return "blocks/log_big_oak_top";
}
return "blocks/log_" + getName() + "_top";
}
}
@@ -0,0 +1,24 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import javax.annotation.Nullable;
import forestry.api.genetics.IAlleleProperty;
/**
* Simple allele encapsulating an {@link IFruitProvider}.
*/
public interface IAlleleFruit extends IAlleleProperty<IAlleleFruit> {
IFruitProvider getProvider();
@Nullable
String getModelName();
String getModID();
}
@@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IAlleleEffect;
import forestry.api.genetics.IEffectData;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
/**
* Simple allele encapsulating a leaf effect. (Not implemented)
*/
public interface IAlleleLeafEffect extends IAlleleEffect {
IEffectData doEffect(ITreeGenome genome, IEffectData storedData, World world, BlockPos pos);
}
@@ -0,0 +1,69 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.Collection;
import forestry.api.core.IModelManager;
import forestry.api.genetics.IAlleleProperty;
import forestry.api.genetics.IAlleleSpecies;
import forestry.api.genetics.IFruitFamily;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.common.EnumPlantType;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IAlleleTreeSpecies extends IAlleleSpecies, IAlleleProperty<IAlleleTreeSpecies> {
@Override
ITreeRoot getRoot();
/**
* @return Native plant type of this species.
*/
EnumPlantType getPlantType();
/**
* @return List of all {@link IFruitFamily}s which can grow on leaves generated by this species.
*/
Collection<IFruitFamily> getSuitableFruit();
/**
* @return Tree generator for this species.
*/
ITreeGenerator getGenerator();
/**
* @return The modid from the mod of the species.
*/
String getModID();
/**
* @return Float between 0 and 1 representing the rarity of the species, will affect spawn rate. If it's 0, it will not spawn.
*/
float getRarity();
IWoodProvider getWoodProvider();
ILeafProvider getLeafProvider();
IGrowthProvider getGrowthProvider();
/* MODELS AND OVERRIDES */
@SideOnly(Side.CLIENT)
ILeafSpriteProvider getLeafSpriteProvider();
@SideOnly(Side.CLIENT)
int getGermlingColour(EnumGermlingType type, int renderPass);
@SideOnly(Side.CLIENT)
ModelResourceLocation getGermlingModel(EnumGermlingType type);
@SideOnly(Side.CLIENT)
void registerModels(Item item, IModelManager manager, EnumGermlingType type);
}
@@ -0,0 +1,37 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IAlleleSpeciesBuilder;
import forestry.api.genetics.IFruitFamily;
import net.minecraftforge.common.EnumPlantType;
public interface IAlleleTreeSpeciesBuilder extends IAlleleSpeciesBuilder {
@Override
IAlleleTreeSpecies build();
/**
* Add a fruit family for this tree. Trees can have multiple fruit families.
*/
IAlleleTreeSpeciesBuilder addFruitFamily(IFruitFamily family);
/**
* Set the minecraft plant type for this tree. Default is Plains.
*/
IAlleleTreeSpeciesBuilder setPlantType(EnumPlantType type);
/**
* Set rarity of the species, will affect spawn rate in the world. Must be a float between 0 and 1. If it's 0, it will not spawn.
*/
IAlleleTreeSpeciesBuilder setRarity(float rarity);
/**
* Set the growth provider.
*/
IAlleleTreeSpeciesBuilder setGrowthProvider(IGrowthProvider growthProvider);
}
@@ -0,0 +1,12 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IBreedingTracker;
public interface IArboristTracker extends IBreedingTracker {
}
@@ -0,0 +1,20 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
public interface ICharcoalPileWall {
int getCharcoalAmount();
boolean matches(IBlockState state);
NonNullList<ItemStack> getDisplyItems();
}
@@ -0,0 +1,84 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import javax.annotation.Nullable;
import java.util.Map;
import java.util.Random;
import forestry.api.genetics.IFruitFamily;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.ResourceLocation;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface IFruitProvider {
IFruitFamily getFamily();
int getColour(ITreeGenome genome, IBlockAccess world, BlockPos pos, int ripeningTime);
/**
* return the color to use for decorative leaves. Usually the ripe color.
*/
int getDecorativeColor();
boolean isFruitLeaf(ITreeGenome genome, World world, BlockPos pos);
int getRipeningPeriod();
// / Products, Chance
Map<ItemStack, Float> getProducts();
// / Specialty, Chance
Map<ItemStack, Float> getSpecialty();
NonNullList<ItemStack> getFruits(ITreeGenome genome, World world, BlockPos pos, int ripeningTime);
/**
* @return Short, human-readable identifier used in the treealyzer.
*/
String getDescription();
@Nullable
String getModelName();
String getModID();
/* TEXTURE OVERLAY */
/**
* @param ripeningTime Elapsed ripening time for the fruit.
* @return ResourceLocation of the texture to overlay on the leaf block.
*/
@Nullable
ResourceLocation getSprite(ITreeGenome genome, IBlockAccess world, BlockPos pos, int ripeningTime);
/**
* return the ResourceLocation to display on decorative leaves
*/
@Nullable
ResourceLocation getDecorativeSprite();
/**
* @return true if this fruit provider requires fruit blocks to spawn, false otherwise.
*/
boolean requiresFruitBlocks();
/**
* Tries to spawn a fruit block at the potential position when the tree generates.
* Spawning a fruit has a random chance of success based on {@link ITreeGenome#getSappiness()}
*
* @return true if a fruit block was spawned, false otherwise.
*/
boolean trySpawnFruitBlock(ITreeGenome genome, World world, Random rand, BlockPos pos);
@SideOnly(Side.CLIENT)
void registerSprites();
}
@@ -0,0 +1,34 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.core.IModelManager;
import net.minecraft.client.renderer.block.model.ModelResourceLocation;
import net.minecraft.item.Item;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
/**
* Provides icons for saplings, pollen, etc.
* You must implement this yourself to use TreeManager.treeFactory.createSpecies()
* There is no default implementation because every sapling has a unique icon.
*/
public interface IGermlingModelProvider {
@SideOnly(Side.CLIENT)
void registerModels(Item item, IModelManager manager, EnumGermlingType type);
@SideOnly(Side.CLIENT)
ModelResourceLocation getModel(EnumGermlingType type);
/**
* Provides color for sapling. See {@link ILeafSpriteProvider} for pollen color.
*
* @param type the germling type to render
* @param renderPass renderPass of rendering
* @return sapling color for renderPass
*/
int getSpriteColor(EnumGermlingType type, int renderPass);
}
@@ -0,0 +1,18 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.biome.Biome;
public interface IGrowthProvider {
boolean canSpawn(ITree tree, World world, BlockPos pos);
boolean isBiomeValid(ITree tree, Biome biome);
}
@@ -0,0 +1,16 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.item.ItemStack;
public interface ILeafProvider {
void init(IAlleleTreeSpecies treeSpecies);
ItemStack getDecorativeLeaves();
}
@@ -0,0 +1,21 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.util.ResourceLocation;
/**
* Provides icons for leaves. Used by TreeManager.treeFactory.createSpecies()
* Get a default Forestry implementation from TreeManager.treeFactory.getLeafIconProvider() or implement your own.
* <p>
* If you implement your own, be sure to register the icons.
* Icon registration is not done here because these icons are heavily reused.
*/
public interface ILeafSpriteProvider {
ResourceLocation getSprite(boolean pollinated, boolean fancy);
int getColor(boolean pollinated);
}
@@ -0,0 +1,15 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.Random;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface ILeafTickHandler {
boolean onRandomLeafTick(ITree tree, World world, Random rand, BlockPos pos, boolean isDestroyed);
}
@@ -0,0 +1,23 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface IToolGrafter {
/**
* Called by leaves to determine the increase in sapling droprate.
*
* @param stack ItemStack containing the grafter.
* @param world Minecraft world the player and the target block inhabit.
* @param pos Coordinate of the broken leaf block.
* @return Float representing the factor the usual drop chance is to be multiplied by.
*/
float getSaplingModifier(ItemStack stack, World world, EntityPlayer player, BlockPos pos);
}
@@ -0,0 +1,90 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import javax.annotation.Nullable;
import java.util.List;
import java.util.Map;
import com.mojang.authlib.GameProfile;
import forestry.api.genetics.IEffectData;
import forestry.api.genetics.IIndividual;
import forestry.api.world.ITreeGenData;
import net.minecraft.item.ItemStack;
import net.minecraft.util.NonNullList;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
public interface ITree extends IIndividual, ITreeGenData {
void mate(ITree other);
IEffectData[] doEffect(IEffectData[] storedData, World world, BlockPos pos);
@SideOnly(Side.CLIENT)
IEffectData[] doFX(IEffectData[] storedData, World world, BlockPos pos);
@Override
ITreeGenome getGenome();
@Nullable
ITreeGenome getMate();
/**
* @since Forestry 4.0
*/
List<ITree> getSaplings(World world, @Nullable GameProfile playerProfile, BlockPos pos, float modifier);
// Products, Chance
Map<ItemStack, Float> getProducts();
// Specialties, Chance
Map<ItemStack, Float> getSpecialties();
NonNullList<ItemStack> produceStacks(World world, BlockPos pos, int ripeningTime);
/**
* @return Boolean indicating whether a sapling can stay planted at the given position.
*/
boolean canStay(IBlockAccess world, BlockPos pos);
/**
* @return Position that this tree can grow. May be different from pos if there are multiple saplings.
* Returns null if a sapling at the given position can not grow into a tree.
*/
@Override
@Nullable
BlockPos canGrow(World world, BlockPos pos, int expectedGirth, int expectedHeight);
/**
* @return Integer denoting the maturity (block ticks) required for a sapling to attempt to grow into a tree.
*/
int getRequiredMaturity();
/**
* @return Integer denoting how resilient leaf blocks are against adverse influences (i.e. caterpillars).
*/
int getResilience();
/**
* @return Integer denoting the size of the tree trunk.
*/
@Override
int getGirth();
WorldGenerator getTreeGenerator(World world, BlockPos pos, boolean wasBonemealed);
@Override
ITree copy();
boolean isPureBred(EnumTreeChromosome chromosome);
boolean canBearFruit();
}
@@ -0,0 +1,59 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.awt.Color;
import forestry.api.genetics.IClassification;
public interface ITreeFactory {
/**
* Creates a new tree species.
* Automatically registered with AlleleManager.alleleRegistry.registerAllele()
* See IAlleleTreeSpeciesBuilder and IAlleleSpeciesBuilder for adding additional properties to the returned species.
*
* @param uid Unique Identifier for this species
* @param unlocalizedName Unlocalized name for this species
* @param authority Authority for the binomial name, e.g. "Sengir" on species of base Forestry.
* @param unlocalizedDescription Unlocalized description for this species
* @param dominant Whether this species is genetically dominant (false means it is recessive)
* @param branch Classification of this species
* @param binomial Binomial name of the species sans genus. "humboldti" will have the bee species flavour name be "Apis humboldti". Feel free to use fun names or null.
* @param modID The modID from the mod of the species
* @param leafSpriteProvider The leaf sprite provider for this species
* @param germlingModelProvider The germling model provider for this species
* @param woodProvider The wood texture provider. It is used to get wood textures for the charcoal pile.
* @param generator The tree generator
* @return a new tree species allele.
*/
IAlleleTreeSpeciesBuilder createSpecies(String uid, String unlocalizedName, String authority, String unlocalizedDescription, boolean dominant, IClassification branch, String binomial, String modID, ILeafSpriteProvider leafSpriteProvider, IGermlingModelProvider germlingModelProvider, IWoodProvider woodProvider, ITreeGenerator generator);
/**
* Creates a new tree species.
* Automatically registered with AlleleManager.alleleRegistry.registerAllele()
* See IAlleleTreeSpeciesBuilder and IAlleleSpeciesBuilder for adding additional properties to the returned species.
*
* @param uid Unique Identifier for this species
* @param unlocalizedName Unlocalized name for this species
* @param authority Authority for the binomial name, e.g. "Sengir" on species of base Forestry.
* @param unlocalizedDescription Unlocalized description for this species
* @param dominant Whether this species is genetically dominant (false means it is recessive)
* @param branch Classification of this species
* @param binomial Binomial name of the species sans genus. "humboldti" will have the bee species flavour name be "Apis humboldti". Feel free to use fun names or null.
* @param modID The modID from the mod of the species
* @param leafSpriteProvider The leaf sprite provider for this species
* @param germlingModelProvider The germling model provider for this species
* @param woodProvider The wood texture provider. It is used to get wood textures for the charcoal pile.
* @param generator The tree generator
* @return a new tree species allele.
*/
IAlleleTreeSpeciesBuilder createSpecies(String uid, String unlocalizedName, String authority, String unlocalizedDescription, boolean dominant, IClassification branch, String binomial, String modID, ILeafSpriteProvider leafSpriteProvider, IGermlingModelProvider germlingModelProvider, IWoodProvider woodProvider, ITreeGenerator generator, ILeafProvider leafProvider);
/**
* Get one of the built-in Forestry leaf types. Default type is deciduous.
*/
ILeafSpriteProvider getLeafIconProvider(EnumLeafType enumLeafType, Color color, Color colorPollinated);
}
@@ -0,0 +1,26 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import javax.annotation.Nullable;
import com.mojang.authlib.GameProfile;
import forestry.api.world.ITreeGenData;
import net.minecraft.util.EnumFacing;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenerator;
/**
* Implements the tree generation for a tree species.
*/
public interface ITreeGenerator {
WorldGenerator getWorldGenerator(ITreeGenData tree);
boolean setLogBlock(ITreeGenome genome, World world, BlockPos pos, EnumFacing facing);
boolean setLeaves(ITreeGenome genome, World world, @Nullable GameProfile owner, BlockPos pos);
}
@@ -0,0 +1,52 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IGenome;
import net.minecraft.item.ItemStack;
public interface ITreeGenome extends IGenome {
@Override
IAlleleTreeSpecies getPrimary();
@Override
IAlleleTreeSpecies getSecondary();
IFruitProvider getFruitProvider();
float getHeight();
float getFertility();
/**
* @return Determines either a) how many fruit leaves there are or b) the chance for any fruit leave to drop a sapling. Exact usage determined by the
* IFruitProvider
*/
float getYield();
float getSappiness();
/**
* @return Amount of random block ticks required for a sapling to mature into a fully grown tree.
*/
int getMaturationTime();
int getGirth();
IAlleleLeafEffect getEffect();
/**
*
* @return A ItemStack that is used in getPickBlock of the leave block.
*/
ItemStack getDecorativeLeaves();
/**
* @return true if this genome matches one of the default template genomes
*/
boolean matchesTemplateGenome();
}
@@ -0,0 +1,35 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
public interface ITreeModifier {
/**
* @return Float used to modify the height.
*/
float getHeightModifier(ITreeGenome genome, float currentModifier);
/**
* @return Float used to modify the yield.
*/
float getYieldModifier(ITreeGenome genome, float currentModifier);
/**
* @return Float used to modify the sappiness.
*/
float getSappinessModifier(ITreeGenome genome, float currentModifier);
/**
* @return Float used to modify the maturation.
*/
float getMaturationModifier(ITreeGenome genome, float currentModifier);
/**
* @return Float used to modify the base mutation chance.
*/
float getMutationModifier(ITreeGenome genome0, ITreeGenome genome1, float currentModifier);
}
@@ -0,0 +1,26 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IMutation;
import forestry.api.genetics.ISpeciesRoot;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface ITreeMutation extends IMutation {
/**
* @return {@link ISpeciesRoot} this mutation is associated with.
*/
@Override
ITreeRoot getRoot();
/**
* @return float representing the percent chance for mutation to occur, from 0.0 to 100.0.
* @since Forestry 4.0
*/
float getChance(World world, BlockPos pos, IAlleleTreeSpecies allele0, IAlleleTreeSpecies allele1, ITreeGenome genome0, ITreeGenome genome1);
}
@@ -0,0 +1,13 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IMutationBuilder;
public interface ITreeMutationBuilder extends IMutationBuilder {
@Override
ITreeMutation build();
}
@@ -0,0 +1,23 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import forestry.api.genetics.IAllele;
public interface ITreeMutationFactory {
/**
* Creates a new tree mutation.
* Automatically registered with TreeManager.treeRoot.registerMutation()
* See ITreeMutationBuilder and IMutationBuilder for adding additional properties to the returned mutation.
*
* @param parentTree0 A parent tree for this mutation
* @param parentTree1 A parent tree for this mutation
* @param result The resulting alleles for this mutation
* @param chance The chance that breeding the two parent trees will result in this mutation
* @return a new tree mutation.
*/
ITreeMutationBuilder createMutation(IAlleleTreeSpecies parentTree0, IAlleleTreeSpecies parentTree1, IAllele[] result, int chance);
}
@@ -0,0 +1,104 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import javax.annotation.Nullable;
import java.util.Collection;
import java.util.List;
import com.mojang.authlib.GameProfile;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosome;
import forestry.api.genetics.ISpeciesRootPollinatable;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.math.BlockPos;
import net.minecraft.world.World;
public interface ITreeRoot extends ISpeciesRootPollinatable {
@Override
boolean isMember(ItemStack itemstack);
@Override
@Nullable
ITree getMember(ItemStack itemstack);
@Override
ITree getMember(NBTTagCompound compound);
@Override
ITree templateAsIndividual(IAllele[] template);
@Override
ITree templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive);
@Override
ITreeGenome templateAsGenome(IAllele[] template);
@Override
ITreeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive);
/**
* @return {@link IArboristTracker} associated with the passed world.
*/
@Override
IArboristTracker getBreedingTracker(World world, @Nullable GameProfile player);
/* TREE SPECIFIC */
/**
* Register a leaf tick handler.
*
* @param handler the {@link ILeafTickHandler} to register.
*/
void registerLeafTickHandler(ILeafTickHandler handler);
Collection<ILeafTickHandler> getLeafTickHandlers();
/**
* @return type of tree encoded on the itemstack. EnumGermlingType.NONE if it isn't a tree.
*/
@Nullable
@Override
EnumGermlingType getType(ItemStack stack);
@Nullable
ITree getTree(World world, BlockPos pos);
ITree getTree(World world, ITreeGenome genome);
boolean plantSapling(World world, ITree tree, GameProfile owner, BlockPos pos);
@Override
IChromosome[] templateAsChromosomes(IAllele[] template);
@Override
IChromosome[] templateAsChromosomes(IAllele[] templateActive, IAllele[] templateInactive);
boolean setFruitBlock(World world, ITreeGenome genome, IAlleleFruit allele, float sappiness, BlockPos pos);
/* GAME MODE */
List<ITreekeepingMode> getTreekeepingModes();
ITreekeepingMode getTreekeepingMode(World world);
@Nullable
ITreekeepingMode getTreekeepingMode(String name);
void registerTreekeepingMode(ITreekeepingMode mode);
void setTreekeepingMode(World world, ITreekeepingMode mode);
/* TEMPLATES */
@Override
List<ITree> getIndividualTemplates();
/* MUTATIONS */
@Override
List<ITreeMutation> getMutations(boolean shuffle);
}
@@ -0,0 +1,22 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.List;
public interface ITreekeepingMode extends ITreeModifier {
/**
* @return Localized name of this treekeeping mode.
*/
String getName();
/**
* @return Localized list of strings outlining the behaviour of this treekeeping mode.
*/
List<String> getDescription();
}
@@ -0,0 +1,31 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import java.util.List;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.ItemStack;
/**
* Provides easy access to Forestry and Vanilla wood items.
* Forestry wood blocks have the same block state properties as vanilla ones.
* Note that all doors are fireproof (even vanilla).
*
* @see WoodBlockKind
* @see EnumForestryWoodType
* @see EnumVanillaWoodType
*/
public interface IWoodAccess {
ItemStack getStack(IWoodType woodType, WoodBlockKind kind, boolean fireproof);
IBlockState getBlock(IWoodType woodType, WoodBlockKind kind, boolean fireproof);
List<IWoodType> getRegisteredWoodTypes();
void register(IWoodType woodType, WoodBlockKind woodBlockKind, boolean fireproof, IBlockState blockState, ItemStack itemStack);
}
@@ -0,0 +1,19 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.arboriculture;
import net.minecraft.client.renderer.ItemMeshDefinition;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ResourceLocation;
import net.minecraftforge.fml.relauncher.Side;
import net.minecraftforge.fml.relauncher.SideOnly;
@SideOnly(Side.CLIENT)
public interface IWoodItemMeshDefinition extends ItemMeshDefinition {
ResourceLocation getDefaultModelLocation(ItemStack stack);
}
Loaded 100 of 2834 files, more files were not shown because too many files have changed in this diff. Show more