Compare commits

..
1260 Commits
Author SHA1 Message Date
Léa Gris a17580e04d fix(render): glinting bee item (#141) 2026-11-11 00:17:45 +01:00
UltraProdigy 2031fdc37c ci: run build and test on release branches 2026-11-09 01:04:48 -05:00
Firewooddoge 4b310d407f Fix other-language block names showing as unlocalized .name keys (#132) 2026-10-25 10:55:33 +01:00
Worive f2e85073d3 Fix alveary inventory drops on chunk unload (#134) 2026-10-03 12:46:01 -05:00
ABKQPO 0bd9a7978a Expose mutation resource condition values (#135) 2026-09-15 21:06:15 +02:00
boubou19 e47fc90433 reduce allocations of arrays to once per call (#133) 2026-08-25 19:19:42 -04:00
boubou19 452064ef1d More enum .values() caching (#131) 2026-08-14 01:10:34 +02:00
boubou19 59c8c36520 Cache enum .values() (#130) 2026-08-10 20:56:48 +02:00
Ryan Nasers ea1c4edae4 Fixes the display of blocks in NEI for the double slab blocks (#129) 2026-08-10 08:22:57 +07:00
Firewooddoge 4c46626cdb Fix Japanese block names showing as unlocalized .name keys (#128) 2026-08-08 14:30:36 +07:00
Alex VermetteandAlex Vermette d6fa8d8b74 fix: implement stacked block slab (#127)
Co-authored-by: Alex Vermette <[email protected]>
2026-07-27 13:20:40 -04:00
UltraProdigy 704861b666 Delete Forestry CONTRIBUTING.md (#126) 2026-07-04 19:02:06 +00:00
Algent db25dcce48 Dupe Fix - Make bag logic more lag resistant (#121) 2026-07-04 18:57:41 +00:00
FourIsTheNumber 4b364a93db Use extended interface (#125) 2026-07-01 18:27:50 -04:00
Yannick Marcotte-Gourde a217884480 Fix Worktable NEI fill regression (#124) 2026-06-28 15:19:53 -04:00
tiffit 90f7c36a1e Add NEI overlays for the carpenter and fabricator (#123) 2026-06-19 21:58:09 +02:00
FourIsTheNumber 974e44f5cd Add API method for protection amount on IArmorApiarist (#122) 2026-06-15 01:19:34 -04:00
Ed Rakhmankulov bbb374cd5e added ability to open backpacks enabled by NoHotbarNeeded (#105) 2026-05-24 14:59:08 +02:00
Eldrinn-Elantey 3470c6c7d1 Add OreDictionary entry for fertile tree pollen (#120) 2026-05-09 14:26:25 +02:00
Alexdoru b1377d5642 return the correct butterfly when rendering (#119) 2026-05-01 17:36:27 +02:00
Yoshy b50910496e Fix crash when rendering creative tab (#118) 2026-05-01 00:39:25 -04:00
AlexdoruandUltraProdigy cc4b16e2a5 fix crash if block is null in TileWood#getPickBlock (#114)
Co-authored-by: UltraProdigy <[email protected]>
2026-04-28 22:19:46 +00:00
Faltsolph 3b63133790 change an integer to a float in a division to avoid possible rounding error in apiary comb production formula (#117) 2026-04-28 21:29:29 +00:00
Alexdoruandboubou19 6d8d7110e1 Fix world client leaks in butterfly and analyzer renderer (#116)
Co-authored-by: boubou19 <[email protected]>
2026-04-27 23:43:29 +02:00
Martin Robertz 98fa57844e update 2026-04-27 12:42:21 +02:00
Ranzu adbb300523 Added color localization for the missing items inside the worktable gui (#115) 2026-04-25 16:16:40 +02:00
Alexdoru 839882b783 Fix WorldClient memory leak in butterfly renderer (#113) 2026-04-09 21:49:41 +02:00
Martin Robertz 2635d036aa update+gradle+deps+bs 2026-04-03 16:23:52 +02:00
Guillaume Mercier cf8f2f54c5 Add fertilizer registry (#112) 2026-04-01 20:02:06 +02:00
4844bc937b Fix alveary climate change calculations (#109)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: UltraProdigy <[email protected]>
2026-03-14 08:12:51 +00:00
Alexdoru 88f50d91e1 BFS leaf decay (#111) 2026-03-13 16:50:52 +01:00
Alexdoru 3bc6720dec Prevent loading chunks while ticking blocks (#110) 2026-03-12 21:33:00 +01:00
UltraProdigy 1083f52a30 Optimize Image & Workflow (#108) 2026-03-07 10:30:44 +01:00
Alexdoru 3fb58ad6a5 Cache frequent Enum#values() calls (#107) 2026-03-03 21:22:36 +01:00
Martin Robertz 7e1398438d update 2026-02-21 23:38:35 +01:00
Ranzu a02df943ed Work on localization and color properties (#106) 2026-02-21 23:33:53 +01:00
CN_132DAS f88742e7ab Allow bees use EFR flowers (#104) 2025-12-14 19:54:18 +01:00
Martin Robertz fb2ff8aef3 update 2025-11-04 22:38:13 +01:00
3f41c5e8f8 Add null guards to BlockUtil reflections to prevent NullPointerExceptions (#103)
Co-authored-by: Teteros <[email protected]>
Co-authored-by: Martin Robertz <[email protected]>
2025-11-04 21:39:04 +01:00
Martin Robertz 81b1de6925 update 2025-10-25 15:59:10 +02:00
DarkShadow44andMartin Robertz 278d091b08 Drop contents of Alveary when it's broken (#102)
Co-authored-by: Martin Robertz <[email protected]>
2025-10-25 15:58:35 +02:00
querns 1552ad1b68 Adds configurable display of backpack fullness (#101) 2025-10-25 15:45:46 +02:00
Alexdoru bf94b22345 add public getters to use in gt5u (#100) 2025-08-08 17:15:06 +00:00
Alexdoru c89b61682a use EnumChatFormatting and not Realms enum to avoid crash (#99) 2025-07-21 11:00:21 +02:00
Dream Master 43fc136fe3 update 2025-07-18 10:15:39 +07:00
boubou19 ea52fa0d55 Speed up forge event registration (#98) 2025-07-17 18:49:32 +00:00
Martin Robertz 725d556718 update 2025-07-10 11:11:16 +02:00
Yoshy d88c007fbb Add missing = in Localisation (#97) 2025-07-09 22:28:25 +00:00
Martin Robertz 485333c6aa update 2025-06-20 23:40:15 +02:00
slprime 240802082e Change NEIHandler Tooltip Position (#96) 2025-06-16 07:46:05 +02:00
Martin Robertz 6f182e932d update 2025-06-03 20:22:19 +02:00
d08b42f18c Protect some calls that lead to loadChunk with blockExists (#91)
Co-authored-by: Martin Robertz <[email protected]>
Co-authored-by: boubou19 <[email protected]>
Co-authored-by: Maya <[email protected]>
2025-06-01 21:05:22 +00:00
Martin Robertz 57cc915a1e update 2025-05-25 15:29:38 +02:00
DrParadox7 d7c5940596 Disable flowers that cannot be planted (#94) 2025-05-25 15:28:01 +02:00
Martin Robertz 79a6af701b update 2025-05-17 12:17:12 +02:00
dibbydoda 4c0b503b8b Add thunder substrate for rainmaker (#95) 2025-05-17 11:39:34 +02:00
thedarkcolour 2a6f3771a3 Fix multiblock components to drop inventory contents when broken (#93) 2025-04-20 05:39:48 +00:00
Maya 04a7c96b4d update 2025-04-19 09:19:48 -05:00
dibbydoda 6d0a001b9e Habitat locator mouse hover shows Hellish temperature in the Nether (#92) 2025-04-19 09:19:35 -05:00
Maya e2c2ff8d30 update 2025-03-10 16:18:15 -05:00
Demiu 586f5bf093 Fix alveary climate logic (#90) 2025-03-10 16:16:16 -05:00
Maya 755301d313 update 2025-02-22 22:50:41 -06:00
Discreater 33f3389b84 Add missing localization (#89) 2025-02-22 22:50:30 -06:00
Maya c9167b8316 update 2025-02-14 00:22:07 -06:00
Yannick Marcotte-Gourde 1ed646b147 Don't crash if someone tries to color number values stored in lang files (#88) 2025-02-14 00:21:59 -06:00
Martin Robertz 7a7930d7eb update 2024-12-31 14:25:14 +01:00
glowredman 3dccc7e06d Add Localizations (#87) 2024-12-30 18:18:18 -06:00
Martin Robertz 18e26956ef update 2024-12-18 17:51:39 +01:00
combusterfandMarcel Sondaar 713b0f9d9e fix: Use GT ash instead of letting unification screw everything up. (#86)
Co-authored-by: Marcel Sondaar <[email protected]>
2024-12-18 07:23:38 +01:00
Martin Robertz c6f2e3c7b3 update 2024-11-22 21:37:18 +01:00
chochem c6d8518d82 fix apatite ore crash (#85) 2024-11-21 17:11:44 +00:00
Dream Master 98711e5d34 update 2024-11-18 12:00:06 +01:00
Glease 5caab59507 close item inventory if parent item is gone (#84) 2024-11-18 11:38:20 +01:00
Martin Robertz 41d47d99ca update 2024-11-16 15:40:01 +01:00
Alexander Anishin 3c6d5d04d0 Fix NPE in logic of radioactive effect (#83) 2024-11-16 12:04:33 +01:00
Martin Robertz 137927b3e6 update 2024-09-12 08:20:39 +02:00
Nico SpiskeandMartin Robertz 8aa7e05bbe Add ability to display bee lore and add Discoverd by tag (#79)
* [minor] add ability to display bee lore and add Discoverd by tag

* [minor] better formatting, logic for bees, trees and butterflies.

* [minor] changes according to review

---------

Co-authored-by: Martin Robertz <[email protected]>
2024-09-12 07:34:49 +02:00
chochem 16414da3f2 Remove duplicate items (#82)
* remove some items if dreamcraft is loaded

* sa
2024-09-11 19:27:41 +02:00
11eb4b62df Fix broken reflection into GT post-renaming (#80)
* fix reflection

* spotlessApply (#81)

Co-authored-by: GitHub GTNH Actions <>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-09-08 22:50:17 +02:00
Martin Robertz a172cb379f update 2024-08-31 11:27:01 +02:00
Connor-Colenso c979d1fa79 Fix Alveary Mutation Overflow (#76) 2024-08-30 15:09:10 +01:00
Astatine5985 ef5825edcf Bee Mutation Logic Fix (#75) 2024-08-29 21:55:11 +02:00
9570cb2982 Change Radioactive Bee Effect (#72)
* Change up how the radioactive bee works to make it a bit more reasonable.

* Remove debug code

* Fix the range of bees being off by one block. nextInt is [0,n), so we need to do n+1 to get our boundary included.

* Remove unnecessary check, fix alveary block under not using correct y and unprotect other blocks under. Also fix canMineBlock being the wrong way round.

* Fix under block protection for non-alvearies

* spotlessApply (#73)

Co-authored-by: GitHub GTNH Actions <>

* Fix condition

---------

Co-authored-by: GTNH-Colen <[email protected]>
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2024-06-26 16:49:46 +02:00
Martin Robertz f89a074393 update 2024-06-22 22:09:49 +02:00
chochem 19457080bf dont extend the filter to any meta while optimizing (#74) 2024-06-22 17:30:54 +01:00
Oleg Ivanov d6ec27209b Add ingredients search setting to the worktable (#70) 2024-05-26 16:03:16 +02:00
Martin Robertz a0435886ab update 2024-05-26 12:52:39 +02:00
Ethryan 2ab8613bec Adding a Coin Bag for all those coins. (#71) 2024-05-26 12:48:21 +02:00
Martin Robertz 9d31dedd35 update 2024-05-04 11:43:39 +02:00
slprime 2dd539c3df NEI incorrect tooltip with search 2024-05-04 11:38:09 +02:00
Martin Robertz fd2ac7d172 update 2024-04-16 22:22:28 +02:00
NotAPenguin 466110d461 Fix wrong length check (#68) 2024-04-15 17:47:49 +01:00
Martin Robertz ecf0d7165c update 2024-03-27 09:49:21 +01:00
DrParadox7 dde3514dce Add Butterfly Leaf Spawn Config (#67)
Added `butterfly.entities.disable.leaf.spawns` config to Lepidopterology.cfg.

When set to _True_, it will stop any butterfly from spontaneously spawning from Forestry's leaves [_False_ by default].

Pregnant butterflies remain unaffected for fans of the hobby.
2024-03-26 18:14:34 -07:00
Martin Robertz 0f24a4e043 update 2024-03-04 20:29:49 +01:00
leumasme 3ed2ecfdd0 Fix multifarm not harvesting coffee and tea
Also fixes fermenter recipes for these crops
2024-03-04 16:50:39 +01:00
Martin Robertz be548b06cc update 2024-03-03 09:42:06 +01:00
Jason Mitchell 7db0dc7767 Thread safe (#64)
* update readme and bs

* Thread safe
2024-03-02 21:43:31 +01:00
Jason Mitchell 2e20b14e06 Allocation reduction (#62)
* Allocation reduction
2024-02-18 08:30:15 -08:00
Raven Szewczyk 576afde7b7 [ci skip] upgraded build system 2024-02-04 19:58:32 +00:00
bombcar 7f133a5e2a [bs] fix buildscripts for jenkins (#61) 2024-01-09 12:11:19 -06:00
Raven Szewczyk 0135b39309 [ci skip] upgraded build system 2024-01-08 21:25:44 +00:00
glowredman 2bcd3bb46c Misc cleanup
- add missing `serialVersionUID` fields
- addess vararg warnings
2023-12-29 13:26:43 +01:00
glowredman 646988aae8 Addess some deprecation warnings 2023-12-29 13:26:43 +01:00
glowredman 331c8a8c7b Fix generics 2023-12-29 13:26:43 +01:00
glowredman 68ab1b98bd Add default cases to switch statements 2023-12-29 13:26:43 +01:00
glowredman 9140f84d57 Remove VersionChecker 2023-12-29 13:26:43 +01:00
glowredman bf23ca2317 Update gradle.properties 2023-12-29 13:26:43 +01:00
bombcar 0e4f38b3d1 update buildscript 2023-12-20 19:29:15 +01:00
bombcar eeb29cd7f0 add a name for butterflyGE 2023-12-20 19:29:15 +01:00
DrParadox7 103cd87cbe Mail blacklist implements Set 2023-11-12 18:14:46 +01:00
DrParadox7 1da67c79f3 Rework wildcard imports 2023-11-12 18:14:46 +01:00
DrParadox7 3023b12d83 Update BS 2023-11-12 18:14:46 +01:00
DrParadox7 05c4914c79 Mails are now checked for prohibited items
Added blacklist for Mail envelopes.

It's mainly there to prevent players bypassing the stamp cost by sending out inventories rather than items.
2023-11-12 18:14:46 +01:00
miozune bf6bf6846a Update dependency types (#56) 2023-08-12 10:37:19 +02:00
Martin Robertz ba6f1d6249 sa 2023-07-18 20:31:15 +02:00
Martin Robertz 64e861af85 deps 2023-07-18 20:31:06 +02:00
Martin Robertz 27a4d86108 bs 2023-07-18 20:30:42 +02:00
hacatuandJakub afc859c6e9 Fix Additive Production (#55)
* Fixed Secondary Species Primary Production
Calling Math.round on probabilities is a logical error

* gradle spotlessApply

* Fixed computation of BeeModifiers to be consistent with additive modifiers

Needs work in other mods (Binnie and MagicBees)

* Fixed doubled base production modifier, fixed tooltips for frames with negative modifiers

* Fixed floating point bug if productionModifier is negative

* Fixed floating point bug if productionModifier + tier is negative

* Float constant suffix

* Actually fix base production modifier

* Improve tooltip coloring, correct production modifier self capping, add float suffixes

* More tooltip improvments

* Nerf base production (apiaries in shambles)

* Halve forestry frame production boost

Co-authored-by: Jakub <[email protected]>

* Added flowering modifier to tooltips

I believe one of the blood magic frames has a non-default flowering modifier

* Fixed flowering modifier in tooltip and made default values visible

---------

Co-authored-by: Jakub <[email protected]>
2023-07-18 20:28:03 +02:00
初夏同学 6292b4569f Fix a bug when NBTString does not exist. (#54) 2023-07-02 09:48:59 +09:00
Runakai1GitHub GTNH Actionsgithub-actions[bot]
99ebd8efe0 Fix Alveary Simulation of Temperatures (#52)
* Fix Alveary Simulation of Temperatures

* Spottless

* spotlessApply (#53)

Co-authored-by: GitHub GTNH Actions <>

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-06-18 14:56:09 +02:00
Dane Strandboge 29df6ceb1b Auto-apply stats tooltips to all IHiveFrame items (#51)
* Auto-apply stats tooltips to all IHiveFrame items

* allow generated tooltip to be overridden

* link event in api, update production tooltip
2023-04-28 18:54:35 +02:00
AlastorsandJason Mitchell 39c822df8a Fixes the incompatability with the newest NEI
Thanks Mitchbama

Co-Authored-By: Jason Mitchell <[email protected]>
2023-04-26 17:49:04 -07:00
Jakub 9e9ae6bcad Support GT_Block_Machines in mutation requirements (#48) 2023-04-07 17:50:43 +02:00
Jakub 661a5598ea New bees formula (#45)
* New formula

* Make production modifier globally additive
2023-03-29 17:26:15 +02:00
Jakub d96669f5f7 Add a way to simulate night (#46)
* Add a way to simulate night

* Add default value to avoid crashes

* Delighted -> Unlighted
2023-03-27 21:01:10 +02:00
Quetz4l ca9ebbc0ed add setting to config-> disable butterflies spawn (#44)
* bs

* add setting to config-> disable butterflies spawn
+ default disable is false

* changed name DISABLE_BUTTERFLY to disableButterfly

* changed Boolean to boolean
(for disableButterfly)
2023-03-20 21:48:43 +01:00
Ethryan 7e60669620 Fix typo (#43) 2023-02-19 22:32:10 +01:00
f2b402955a Update Forestry.java (#41)
* Update Forestry.java

* spotlessApply (#42)

Co-authored-by: GitHub GTNH Actions <>

* Update Forestry.java

---------

Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2023-02-16 11:14:18 +01:00
hacatu 983b5bc8dd Fixed Secondary Species Primary Production (#40)
Calling Math.round on probabilities is a logical error
2023-02-16 10:17:58 +01:00
Raven Szewczyk 7817587067 [ci skip] upgraded build system 2023-01-31 09:52:49 +00:00
Jason Mitchell 79fb06bca6 [ci skip] Add git-blame-ignore-revs for spotlessApply 2023-01-29 12:03:50 -08:00
Jason Mitchell 94aa9346b1 [ci skip] spotlessApply with the new settings 2023-01-29 12:03:50 -08:00
Jason Mitchell 4711be8028 [ci skip] Update buildscript to RetroFuturaGradle 2023-01-29 12:03:12 -08:00
miozune 10df035419 Fix BOP Turnip Seeds extracted into 0mB of Seed Oil (#39)
* Fix BOP Turnip Seeds extracted into 0mB of Seed Oil

* Use `GameRegistry#findItemStack`
2022-10-25 19:54:42 +02:00
Jakub 5f622686f3 Fix typo (#38) 2022-10-21 22:57:06 +02:00
Glease fce7efd59a fix potential memory leak (#36) 2022-10-19 08:50:23 +01:00
Jakub 6158afeb86 Add Jubiliance description (#35)
* Add Jubilance description

* Update GuiBeealyzer.java

* Translatable strings
2022-10-16 13:45:10 +02:00
Jakub e94f967c38 Move IAlleleBeeAcceleratableEffect from GT (#34) 2022-10-13 16:05:44 +02:00
Jason Mitchell 3ee9facc9b Let the people have their giant sequoia with slightly less tedium. (#32)
* Let the people have their giant sequoia with slightly less tedium.
2022-10-09 16:52:11 -07:00
Jakub 67026cf3cc Apply new bee production chance formula (#31)
* Apply new formula

* Update build.gradle

* Update

* Use function
2022-10-08 17:28:06 +02:00
Glease 47f33cb8ec forget invalid recipe entries (#30) 2022-10-05 17:57:58 +02:00
bjin2000 22d4978e6c fix swarmer's hive spawn (#29) 2022-09-24 12:43:17 +02:00
miozune c507872364 Vegetable is not fruit (#28) 2022-08-25 16:15:40 +02:00
miozune c5c3aee2fb Carrot is not fruit (#27)
* Carrot is not fruit

* updateBuildScript & spotlessApply
2022-08-25 14:10:35 +02:00
DianeXD 6973dbc80d Add missing temperature/humidity adjustment logic (#25)
Don't adjust to a relatively better environment
2022-08-19 14:24:11 +02:00
glowredman c7b65abfd8 Cofh dep (#24)
* Revert "Make CoFHCore required (#23)"

This reverts commit 03ac4a850a.

* throw exception if CoFHAPI|energy could not be found

* spaces -> tabs
2022-07-31 09:48:07 +02:00
Jason Mitchell 19ae8891f6 [ci skip] Migrate github actions to GTNH-Actions-Workflows 2022-07-16 10:48:13 -07:00
Jakub 03ac4a850a Make CoFHCore required (#23) 2022-07-15 23:12:07 +01:00
slprime cfa2feab1c Highlight missing item in worktable (#22)
* highlight missing item in worktable

* fix crash without recipe
2022-06-29 22:59:03 +02:00
DianeXD 06baad945a Add overlay identifier (#21)
* Add overlay identifier

* Use recipeID
2022-06-03 13:37:08 +02:00
Jakub Szewczyk 14f61b5917 Fix planting in wrong dimension (#20)
* Update buildscript

* Pass the world object directly to avoid using the wrong dimension
2022-04-27 11:21:57 +02:00
Glease b58e4c57c7 Drastically reduce getBlock calls in orchard mode (#19)
* Drastically reduce getBlock calls in orchard mode

* improve caching
2022-03-26 15:55:35 +01:00
bombcar bfa39a7738 update buildscript (#18)
* update buildscript

* reformat

* Read gtnh mavne
2022-02-12 22:09:09 +01:00
bombcar 460804ae35 correct dependencies (#17) 2022-02-09 06:59:41 +01:00
bombcar 8f6e9a89e4 Updatebuild (#16)
* update buildscript

* clarify lcense
2022-02-07 20:22:25 -08:00
Martin Robertz 9c4de1a6fe Merge pull request #14 from GTNewHorizons/hive-npe
Fix NPE on rendering inside Hive
2022-01-19 12:04:44 +01:00
miozune af1c54b738 Fix NPE on rendering inside Hive 2022-01-19 19:16:50 +09:00
Jason Mitchell 5845a37558 update to explicit dependencies 2022-01-17 22:25:55 -08:00
Jason Mitchell 93cdba701c maven publish buildscript update 2022-01-17 22:25:42 -08:00
Martin Robertz fc9a2bce58 add bat files to ignorelist 2021-12-11 17:22:44 +01:00
boubou19 4410d607bb Merge pull request #13 from GTNewHorizons/update-build-script
Update build scripts and CI
2021-11-30 15:41:05 +01:00
Johann Bernhardt ffc523e1b9 Update build scripts and CI 2021-11-30 10:08:54 +01:00
Martin Robertz 6366eea2c7 Merge pull request #12 from GTNewHorizons/unified-build-script
Unified build script
2021-11-23 20:21:14 +01:00
Johann Bernhardt 86f36f9d04 Fixed mod name and mod id missmatch 2021-11-23 19:23:51 +01:00
Johann Bernhardt c387c4e6d2 Refactored dependency to craftguide 2021-11-23 19:20:08 +01:00
Johann Bernhardt f6f825283a ... and fixed texture issues 2021-11-23 19:16:12 +01:00
Johann Bernhardt 3a2ae9d677 Add information about shaded cofh-core 2021-11-23 19:15:54 +01:00
Johann Bernhardt 0f6849bf8b Refactor dependency to inventory tweaks 2021-11-23 16:41:16 +01:00
Johann Bernhardt 9728c3bbae Switch to NEI master 2021-11-22 18:52:57 +01:00
Johann Bernhardt f9d95a2c09 Experiment with custom pom entries 2021-11-22 14:23:02 +01:00
Johann Bernhardt 01c96dd1bd Move to unified build script 2021-11-22 12:39:37 +01:00
Johann Bernhardt 3429114d2a Move files 2021-11-22 12:37:53 +01:00
boubou19 a958073079 Merge pull request #11 from GTNewHorizons/patch-getblock-npe
Fix unprotected block access
2021-11-05 10:16:33 +01:00
Glease d4e58b84c8 Fix unprotected block access 2021-11-05 16:00:12 +08:00
Martin Robertz 689a822058 Merge pull request #10 from Flanisch/PamNetherCompat
Pams' Harvest The Nether Compatibility
2021-08-22 12:40:47 +02:00
BuildTools 0acbd6b247 Made MultiFarm typing crop specific 2021-08-21 14:02:23 +02:00
BuildTools d4206beba7 Add Pam's Harvest The Nether compatibility for MultiFarms 2021-08-21 04:01:34 +02:00
DreamMasterXXL 5412a73dc5 update api sub module 2021-08-14 15:37:31 +02:00
Martin Robertz dbd4246beb Merge pull request #9 from D-Cysteine/GTNH-Fixes
Update code to handle mutations with modified climate
2021-08-14 15:19:23 +02:00
D-Cysteine 6a205d71cc Remove incorrect IButterflyMutation change 2021-08-13 17:35:39 -06:00
Dream-MasterXXL ad50ab6716 update submodule Redstone flux use us repo fork 2021-08-12 15:41:13 +02:00
Dream-MasterXXL bb597e7403 update(Forestry API) use GTNH Fork 2021-08-12 15:35:35 +02:00
D-Cysteine 9614f95961 Fix import order 2021-08-11 23:58:10 -06:00
D-Cysteine ef0b5c7c1d Reset patch version 2021-08-11 23:28:12 -06:00
D-Cysteine 7e889775c1 Update code to handle mutations with modified climate 2021-08-11 23:25:56 -06:00
DreamMasterXXL 7ea1f150e0 add(Forestry)Changelog 2021-06-27 23:25:27 +02:00
Martin Robertz 4c7c7c3438 Merge pull request #8 from GTNewHorizons/worktable-npe
Fix NPE on crafting in worktable
2021-04-06 17:05:20 +02:00
Glease 621208393e Fix NPE on crafting in worktable 2021-04-06 22:46:39 +08:00
DreamMasterXXL 98c0b66b6f bump version 2021-01-29 20:11:09 +01:00
DreamMasterXXL 5b61261d69 Merge branch 'IC2-Crop-Module' into GTNH-Fixes 2021-01-29 20:05:41 +01:00
Martin Robertz d025499747 Merge pull request #7 from GTNewHorizons/bq3_compat
Dirty fix for BQ3 crafting quest not triggering
2021-01-22 17:15:58 +01:00
Glease 7320ddb44f Dirty fix for BQ3 crafting quest not triggering 2021-01-22 22:41:32 +08:00
bartimaeusnek d2545b7a59 Ic2 crop module (#6)
* Added IC2-Crop-Module

* Changed Lang repo

* updated lang submodule
2020-12-24 21:15:03 +01:00
bartimaeusnek 66d07bcac4 updated lang submodule 2020-10-14 13:26:11 +02:00
bartimaeusnek fb2eb7cda4 Changed Lang repo 2020-10-14 13:17:05 +02:00
bartimaeusnek 347fdb101c Added IC2-Crop-Module 2020-10-14 13:01:03 +02:00
DreamMasterXXL d2a086ac02 bump version 2020-05-10 14:01:46 +02:00
Glease 859a79a824 Actually remove the debug prints
GTNewHorizons/GT-New-Horizons-Modpack#6061
2020-05-10 18:53:18 +08:00
Dream-Master 00c31a6158 bump version 2020-03-27 21:27:04 +01:00
bartimaeusnek 5db5b712ce Fixed Mutation Coniditons (#5)
+ reduced usage of reflexion
+ inlined code

Signed-off-by: bartimaeusnek <[email protected]>
2020-03-27 14:12:42 +01:00
Dream-Master 9cac9a14df bump version 2020-03-23 22:29:01 +01:00
bartimaeusnek 43f98e9cca fixed method not found exception
wrong class for get Method call... i hate reflexion >_>
2020-03-23 17:18:25 +01:00
Dream-Master ff4c09324b update gradle 2020-03-23 13:57:14 +01:00
ElNounchandbartimaeusnek d1c17a13b1 BartWorks support for apiculture requirements (#4)
* BartWorks support for apiculture requirements

Co-authored-by: bartimaeusnek <[email protected]>
2020-03-22 15:03:20 +01:00
Jason Mitchell 8a8ac56266 bump version 2020-02-29 20:26:02 -08:00
Jason Mitchell 208de8ad3a Fix NPE 2020-02-29 20:23:52 -08:00
Dream-Master d988fb849d bump version 2020-02-16 12:53:28 +01:00
Martin Robertz ab83d90dd3 Merge pull request #3 from GTNewHorizons/limit_butterflies_distance_from_home
Backport butterflys staying close to home
2020-02-16 11:39:35 +01:00
Jason Mitchell 79c5cff926 Backport butterflys staying close to home from https://github.com/ForestryMC/ForestryMC/commit/904293f407c2e9ceeb35dcb9178ed505f361a0f3#diff-96a2a2f1a71177681853bd9c5eb46752 2020-02-15 21:31:55 -08:00
Martin Robertz 5522c33924 Merge pull request #2 from GTNewHorizons/feature/shiftlag
Feature/shiftlag
2019-12-14 21:00:39 +01:00
Richard Hendricks 93aa429cf2 Add config options, remove debug prints 2019-12-14 13:44:27 -06:00
Richard Hendricks fa5c4c0218 Remove isDirty related stuff, it causes stack overflows because it is not properly cleared when the craft is partial. Performance now should be good enough we don't even care about a few extra calls. 2019-12-14 02:04:02 -06:00
Richard Hendricks 32691c6af4 Add in local recipe cache 2019-12-13 17:41:58 -06:00
Richard Hendricks 5615ffc518 Recipelist acceleration is working. Worktable local cache needs creating. 2019-12-13 00:12:06 -06:00
Richard Hendricks 2af41cf68d not working 2019-12-12 20:16:58 -06:00
Richard Hendricks 0cdaf8cff8 Add new limiting crafting time function. 2019-12-09 22:07:26 -06:00
Dream-Master 7b5eafc42a update version 2019-05-12 20:32:50 +02:00
Martin Robertz 59ca1d2082 Merge pull request #1 from GTNewHorizons/giantSequoia
added recipe.
2019-05-09 09:46:14 +02:00
bartimaeusnek 0df88973c0 added recipe.
Signed-off-by: bartimaeusnek <[email protected]>
2019-05-09 06:35:23 +02:00
Dream-Master e54bb5d4ea change api path 2019-03-26 09:06:46 +01:00
Dream-Master 824f155804 change api adress 2019-03-26 09:01:05 +01:00
Dream-Master 24e2cf668e Revert "remove redstone flux not working api"
This reverts commit f260099bfa.
2019-03-26 08:55:47 +01:00
Dream-Master f260099bfa remove redstone flux not working api 2019-03-26 08:46:07 +01:00
bartimaeusnek 855d359b02 changed crop logic a bit
if crop havest is not possible at the optimal state, just harvest, ffs.

Signed-off-by: bartimaeusnek <[email protected]>
2019-03-23 23:29:26 +01:00
bartimaeusnek abcb180689 added a null check
might help for  https://github.com/GTNewHorizons/NewHorizons/issues/4283
2019-03-18 18:58:33 +01:00
Jason Mitchell 507adb1b3f version bump 2018-10-06 09:09:25 -07:00
Jason Mitchell 23c4e4ed91 Fix pollination crash 2018-10-06 09:08:06 -07:00
bartimaeusnek e5057788a8 version bump 2018-06-09 17:08:51 +02:00
bartimaeusnek a5045bfc0f try to limit nbttag compound on apiaries to 128 entries 2018-06-08 00:52:00 +02:00
bartimaeusnek bfd678c63e removed shades Java7Checker due to issures with Java 9
+ updated Forge Version to v1614
+ updated used Java version to v8
+ updated used grandle wrapper to 2.14.1
2018-06-07 20:15:02 +02:00
LunaticExperimentalist 320ea99090 Have trade station compare tags when accepting payment (#1850) 2017-09-18 21:44:11 -07:00
mezz 08f16ba26d Bump version 2016-10-02 15:41:30 -07:00
mezz 9419dc82de Fix #1442 Let BeeHousings detect biome changes 2016-10-02 15:41:09 -07:00
mezz 2d1f64c5f6 Bump version 2016-07-31 17:11:05 -07:00
mezz cd9f82001c Fix #1366 Alveary in the Nether does not have Hellish temperature 2016-07-31 17:10:59 -07:00
mezz f7b8435d28 Update lang, bump version 2016-06-23 15:38:24 -07:00
mezz 013806f158 Merge remote-tracking branch 'origin/dev' into 4.2 2016-06-23 15:33:48 -07:00
Nirek-K 062b5ee75f Fix #1328 Crash when trying to pick up wheat from Moistener process slot 2016-06-23 17:30:34 -05:00
Nirek-K 56adc25fdf Fix #1330 Change resource checks to check tile for IBeeHousing 2016-06-23 15:40:41 -05:00
mezz df375b1b30 Merge remote-tracking branch 'origin/dev' into 4.2 2016-06-09 16:43:14 -07:00
Nirek-K 789da29af0 Fix #1293 Prevent nulls from passing Agricraft harvest
Update HC compat
2016-06-05 19:18:53 -05:00
Nirek-K e0df2f84a0 Fix Fabricator glass recipes 4000mb->4 blocks 2016-05-29 18:40:57 -05:00
Nirek-K 01656f13a6 Basic MFR plugin, allow farm to plant/cut rubber trees
(trying to plant sacreds is a ..bad idea)
Centrifuge raw rubber from propolis in the absense of IC2
minor bugfix for witchery sapling ferment
2016-04-28 02:47:58 -05:00
mezz b466e9ce4a Merge remote-tracking branch 'origin/dev' into 4.2 2016-04-27 19:30:56 -07:00
Nirek-K 60c9dad874 Merge pull request #1137 from ultrasn0w/dev
Update PlantMegaPack Plugin
2016-04-25 14:55:21 -05:00
ultrasn0w d734ca55e6 Update PlantMegaPack Plugin 2016-04-25 21:15:47 +02:00
Nirek-K f16f349f10 Version bump to be ahead of stable, and pull in lang fixes 2016-04-24 14:32:05 -05:00
Nirek-K 66561ac66d Fix #1129 Bugfixes for Multifarm BC Gate Triggers. 2016-04-18 17:28:37 -05:00
Nirek-K ad96e21b37 Fix eating bottles slightly better, Steve now enjoys mead in 8packs (hic). 2016-04-17 18:46:52 -05:00
Nirek-K 3967d21b06 Short mead now has a purpose, further distillation produces mead (only drinkable in bottles).
Also fix somehow eating it glass bottle and all.
2016-04-17 01:40:45 -05:00
Nirek-K 2a025254a0 Add ic2 industrial fert as farming fertilizer. (seperate config option to probably come later) 2016-04-05 16:08:00 -05:00
Nirek-K 97bfbe2213 Fix #1117 Radioactive bee effect can bypass apiarist suit 2016-04-03 11:17:30 -05:00
Nirek-K 98c56973db Fix #1123 Add lang string for Leporine Bee, Add some basic bee trades to Aparist. 2016-03-31 09:41:47 -05:00
mezz b83da5c628 Merge branch 'mc-1.7.10' into 4.2 2016-03-22 12:29:14 -07:00
mezz 4a2af4743f Fix #1117 Radioactive bee effect can bypass apiarist suit 2016-03-22 12:28:31 -07:00
mezz e90771e38a Merge branch 'dev' into 4.2 2016-03-06 10:01:54 -08:00
mezz 9c98a6a00b Bump Version 2016-03-06 10:01:23 -08:00
mezz 75a3a7b935 Fix #1093 Electrical Engine circuit board does not sync 2016-03-06 10:00:22 -08:00
mezz 99020cde7f Fix #1086 Squeezer NEI integration can't lookup multi stack recipes. 2016-02-28 23:40:57 -08:00
mezz 98e13299d6 Fix #1061 Squeezer is very "liberal" regarding oredict in Recipes 2016-02-28 23:39:55 -08:00
mezz 010fe4662a Fix #1081 FillBucketHook does not check bucket type 2016-02-28 23:18:55 -08:00
mezz 92ee6dbc0d Merge branch 'dev' into 4.2 2016-02-22 15:34:50 -08:00
mezz 98c7b3b5ed Bump version 2016-02-22 15:34:21 -08:00
Nirek-K 507b03043e Add module checks to RotaryCraft plugin 2016-02-21 19:34:34 -06:00
mezz c1e00ff395 Do not save player profile properties to nbt 2016-02-19 19:08:17 -08:00
Nirek-K 897123c883 Add missing Snow diplacable tags for plugin flowers. 2016-02-19 13:14:00 -06:00
Nirek-K 0ed33cf9a3 Increase wax cast durability to 16, Fabricator tank to 8, Add 4 to 4 Plain glass Fabrication recipe, change stamp defs to be oreDictionary. 2016-02-19 12:41:35 -06:00
Nirek-K 8ba8c0fb17 Forgot Sandstone had variants. Add variants->Fabricator. 2016-02-18 06:25:16 -06:00
Nirek-K 9c40b03751 Tank should probably be a multiple of 2, derp. 2016-02-18 06:05:42 -06:00
Nirek-K 194c0a0e77 Add Red Sand, Sandstone to Fabricator->glass, slightly increase fabricator glasstank. 2016-02-18 05:51:30 -06:00
Nirek-K 77157aa9cb Add new pinecones from BoP to squeezable for seedoil. 2016-02-12 15:16:24 -06:00
Nirek-K f4681d251c Increase seed oil yield of Harvestcraft peanuts, and tree nuts to be slightly more viable oil sources. 2016-02-12 11:00:09 -06:00
mezz 96cc1b869c Merge branch 'dev' into 4.2 2016-02-11 17:36:46 -08:00
mezz 20ca044be0 Bump version 2016-02-11 17:36:30 -08:00
mezz 6cd9f33c3f Close #1060 Close #1065 Disable Growthcraft plugin for version 2.5.0+ 2016-02-11 17:35:21 -08:00
Nirek-K 7585c6a265 Fix #1067 add module checks to BoP Plugin 2016-02-11 00:48:38 -06:00
Nirek-K 91a5084bde Further cleanup GC plugin nulls. 2016-02-10 15:29:26 -06:00
Nirek-K 0876a50be2 Add missing null check to Growthcraft plugin. 2016-02-10 08:19:40 -06:00
mezz 1941690330 Merge branch 'dev' into 4.2 2016-02-01 18:06:09 -08:00
mezz bbd39ea5c7 Fix #1053 NPE when loading with old configs 2016-02-01 18:05:51 -08:00
mezz 53f4107ee3 Merge branch 'dev' into 4.2 2016-01-28 20:38:06 -08:00
mezz 6265c01f60 Bump version 2016-01-28 20:37:46 -08:00
Nirek-K b9478e16b7 Add Orchard farmland, dirt traversal for ic2 plants. 2016-01-24 15:49:31 -06:00
Nirek-K 2cdee67624 Add Carrots equal to Apples in the squeezer(juice/mulch), potatoes at double fermenter rate of wheat (choice between pure fermenting, and seeds for seedoil) 2016-01-24 03:35:55 -06:00
Nirek-K 58fe331fe3 And missed one in HC too. 2016-01-24 03:17:37 -06:00
Nirek-K a4d5117a97 Missed a check in BoP, also fix PlantMegaPack 2016-01-24 03:05:27 -06:00
Nirek-K 32a9a6ff5c Fix #1051 Check for Farming module before adding BoP and Harvestcraft crops. 2016-01-24 02:19:15 -06:00
mezz 9f2f2ed85b Fix #1043 Crash from mods spawning wood items with wildcard metadata 2016-01-15 20:07:54 -08:00
mezz 22258c2dac Merge branch 'dev' into 4.2 2016-01-11 07:40:17 -08:00
mezz e0c1c538aa Fix ClientTickEvent crash on disconnect from server 2016-01-10 21:04:35 -08:00
mezz 825768e522 Fix naturalist's eye lag on multiplayer servers 2016-01-01 11:55:39 -08:00
mezz dd21d83ea3 Merge branch 'dev' into 4.2 2015-12-30 04:39:13 -08:00
mezz d0ead16eaa Bump version to 4.2.4 2015-12-30 04:38:44 -08:00
mezz 1d924d5ed5 Merge pull request #1004 from estebes/dev
Add IC2 crops support to multifarms (uses orchard farm logic)
2015-12-30 04:37:20 -08:00
mezz ff7adac9e1 Fix #1001 Slabs can't combine on placement in same block 2015-12-30 04:34:23 -08:00
mezz 45993f8213 Fix #999 Forestry Wood Logs Placement Issue 2015-12-30 02:31:19 -08:00
mezz 33573fea20 Fix #1022 Indistinguishable pollination color for some tree species 2015-12-29 12:34:26 -08:00
mezz 178142bf7a Fix #922 New tree branching generates non-connected logs 2015-12-29 11:17:42 -08:00
mezz 5d2aaea757 Fix #1008 Backpack superposition bug 2015-12-29 09:40:37 -08:00
mezz fbb02e43f5 Limit packets from engines supplying power to nearly full receivers 2015-12-29 08:20:05 -08:00
mezz 896767ae1b auto format 2015-12-23 23:06:45 -08:00
mezz d11034e4aa Merge branch 'dev' into 4.2 2015-12-22 17:47:29 -08:00
mezz cc64b09ad4 Fix #1017 crash when accessing bee cart gui 2015-12-22 17:44:38 -08:00
mezz d5ebc02999 Fix BreedingTracker crash 2015-12-19 16:02:08 -08:00
mezz 8415b657f2 Use Forge 10.13.4.1566 fuel burn time workaround.
Fix #960 Fireproof wood have fuel value,
Fix #469 Burn time of wooden slabs should be 150 ticks
2015-12-13 13:47:55 -08:00
mezz f0099b728f Merge branch 'dev' into 4.2 2015-12-12 22:52:38 -08:00
mezz 1ceccddbd0 Fix sync issues with researched mutations, use smaller packets 2015-12-12 22:51:59 -08:00
mezz c875e8ed5d Merge branch 'dev' into 4.2 2015-12-12 18:10:38 -08:00
mezz f3ee4f8694 Bump version to 4.2.2 2015-12-12 18:09:51 -08:00
mezz c2437a8a13 Fix #1009 Minor fluid dupe on right-clicking nearly-full machine 2015-12-12 18:08:40 -08:00
mezz e2f32ab767 Sync mail to client on login, do not display mail indicator on logout 2015-12-12 17:45:12 -08:00
mezz d0c8c92863 Fix #1010 Automatically sync breeding trackers to client 2015-12-12 17:27:18 -08:00
Nirek-K a8c84cfcf9 Possibly fix IE plugin loading too early, add small RotaryCraft plugin. 2015-12-11 12:06:28 -06:00
mezz 8f8f6a05f7 Fix #1006 Farm Block Recipes broken 2015-12-09 14:43:58 -08:00
mezz 721c8fd0ad Make AlleleEffectFertile only tick IGrowable and IPlantable 2015-12-08 18:22:16 -08:00
estebes 962a17494c Added IC2 crops support to multifarms (uses orchard farm logic) 2015-12-05 11:10:34 +00:00
mezz 01e43d8a18 #987 Use fluid names instead of IDs 2015-12-03 12:19:04 -08:00
mezz 4228ef73d7 Merge branch 'dev' into 4.2 2015-12-03 11:29:37 -08:00
mezz 6b9614bccd Fix #994 Peat-fired Engine no longer accepts Bituminous Peat 2015-12-03 10:07:51 -08:00
mezz 179311a390 Use 2 render passes for saplings (for addon saplings via tree api) 2015-12-03 10:02:08 -08:00
mezz d8bcab07ba Use 2 render passes for saplings (for addon saplings via tree api) 2015-12-03 10:01:27 -08:00
mezz 2368f05778 Merge branch 'dev' into 4.2 2015-12-03 10:00:08 -08:00
mezz 347e0a61e1 Fix #986 Forestry version of acacia sapling cannot be obtained 2015-11-26 20:15:12 -08:00
mezz 23792a84c1 Fix #983 farm block recipes are missing for most materials 2015-11-25 12:11:15 -08:00
mezz b4c0777f1c minor cleanup 2015-11-22 10:10:09 -08:00
mezz db5daf9e3d Tidy species code 2015-11-21 21:50:38 -08:00
mezz a574eac903 Add custom colour provider for bee species colours 2015-11-21 21:27:21 -08:00
mezz b3799c22e6 Fix #975 Crash with Storage Module disabled and Growthcraft 2015-11-21 20:46:17 -08:00
mezz 97d10fdba3 Fix MutationConditionRequiresResource 2015-11-21 16:04:18 -08:00
mezz e03400fc6a Update lang 2015-11-21 16:04:09 -08:00
mezz 2a35c1072b bump version for dev 2015-11-21 14:05:41 -08:00
mezz a4dd450ff8 Add mutation condition requireResource(String oreDictName) 2015-11-21 14:04:53 -08:00
mezz 8df8404a84 #976 Disable inventory tweaks shortcut buttons on Forestry inventories 2015-11-21 12:34:21 -08:00
mezz 54e73da1d5 Fix #979 Bio Generator crashing the game 2015-11-21 11:53:06 -08:00
mezz 7d83e28a03 Fix #977 add additional defensive checks to BeekeepingLogic 2015-11-21 11:24:35 -08:00
mezz db7736f7d2 Add missing GUI classes to GuiIdRegistry 2015-11-21 11:24:00 -08:00
mezz eff9dfcca7 Fix #978 missing localization keys for mail trades and escritoire 2015-11-21 11:06:12 -08:00
mezz 2b874fb42f Use Multimaps.asMap to hide weird casting 2015-11-20 18:34:07 -08:00
mezz 27daa8e1ac Add support for InventoryTweaks 2015-11-20 18:28:25 -08:00
mezz a49eb1c5f9 Fix #524 Add config for Received letters HUD Placement 2015-11-20 15:31:21 -08:00
mezz 7e3b7acdef Allow hotkeys to send items to hotbar, except locked slots 2015-11-20 12:05:10 -08:00
mezz 9c532dd076 Allow hotkeys to send items to hotbar, except locked slots 2015-11-20 12:04:49 -08:00
mezz 3de8bac1ad Update minimum required Forge version to 10.13.4.1448
(cherry picked from commit 4c41d0bb6e)
2015-11-20 10:18:08 -08:00
mezz abca8b13f3 Fix #972 tree growing logs with default properties instead using genome
(cherry picked from commit 67a7185261)

Conflicts:
	src/main/java/forestry/arboriculture/genetics/TreeDefinition.java
2015-11-20 10:17:51 -08:00
mezz 3c7856f264 Add checking to make sure client and server can't open different GUIs 2015-11-20 09:49:55 -08:00
mezz 408a66bb40 Refactor GUI handling code 2015-11-19 20:37:33 -08:00
mezz 31231db459 minor cleanup 2015-11-19 16:42:30 -08:00
mezz 67a7185261 Fix #972 tree growing logs with default properties instead using genome 2015-11-19 01:37:29 -08:00
mezz aeaf113b11 Fix git capitalization derp 2015-11-19 01:24:57 -08:00
mezz 084a84903f Update lang 2015-11-19 01:04:39 -08:00
mezz 167e493160 Move butterfly blocks to PluginLepidopterology.blocks
remove custom shaped and shapeless recipes
2015-11-19 01:04:39 -08:00
mezz ce2a2ec8ed Move engine blocks to PluginEnergy.blocks 2015-11-19 01:04:38 -08:00
mezz 10e5391f48 Move factory blocks to PluginFactory.blocks 2015-11-19 01:04:38 -08:00
mezz ffe19807db Move mail blocks to PluginMail.blocks 2015-11-19 01:04:37 -08:00
mezz 6cfae1462f Move farm blocks to PluginFarming.blocks 2015-11-19 01:04:37 -08:00
mezz 18a0ae3643 Move apiculture blocks to PluginApiculture.blocks 2015-11-19 01:04:37 -08:00
mezz 358522b2af Move tree blocks to PluginArboriculture.blocks 2015-11-19 01:04:36 -08:00
mezz ade9bb6940 Move core blocks to PluginCore.blocks 2015-11-19 01:04:36 -08:00
mezz 23fd664e34 remove last bits of ForestryItem 2015-11-19 01:04:36 -08:00
mezz 60d5728ccb Move core items to PluginCore.items (first... 2015-11-19 01:04:35 -08:00
mezz 55118e399f Move butterfly items to PluginLepidopterology.items 2015-11-19 01:04:35 -08:00
mezz 7e50c57ba9 Move mail items to PluginMail.items 2015-11-19 01:04:35 -08:00
mezz 317dd0dbf9 Move storage items to PluginStorage.items 2015-11-19 01:04:34 -08:00
mezz e9af62e772 Move liquid container items to PluginFluids.items 2015-11-19 01:04:34 -08:00
mezz daa5e3bc75 Move food items into PluginFood.items 2015-11-19 01:04:33 -08:00
mezz e248f40f58 Move mod compatibility plugins into plugins/compat folder 2015-11-19 01:04:33 -08:00
mezz 0e53fccfdb Move food items into PluginFood.items 2015-11-19 01:04:33 -08:00
mezz fc289c16d4 Move arboriculture items into PluginApiculture.items 2015-11-19 01:04:32 -08:00
mezz fe69452464 Move apiculture items to PluginApiculture.items 2015-11-19 01:04:32 -08:00
mezz 4c41d0bb6e Update minimum required Forge version to 10.13.4.1448 2015-11-19 01:04:31 -08:00
mezz 0fe87253d1 Move core items to PluginCore.items (first of item/block refactor) 2015-11-19 01:04:31 -08:00
mezz 4f19f95b71 Clean up packet registration code 2015-11-19 01:04:31 -08:00
mezz a6ecc95f80 Merge pull request #971 from ganymedes01/dev
Workaround to allow other mods to get plank icons without position
2015-11-18 11:38:26 -08:00
ganymedes01 4b43ee9e8e Update BlockPlanks.java 2015-11-18 18:43:11 +00:00
mezz f52059640e Add strict checking for registered genomes 2015-11-17 14:13:22 -08:00
mezz c96f260abd Fix farms not spreading farmland after it has started 2015-11-17 03:06:32 -08:00
mezz 010c65b192 Fix soldering iron can't remove circuit boards 2015-11-17 02:26:44 -08:00
mezz f2b95e1777 Clean up farm itemEntity collection code 2015-11-17 02:19:35 -08:00
mezz 5f18a51827 Clean up allele effects code 2015-11-17 02:16:52 -08:00
mezz eaad349b74 Add typed methods for getting entities from the world 2015-11-17 02:12:30 -08:00
mezz efd9cd06f6 Add support for Apiarist Armor on any EntityLivingBase 2015-11-17 02:11:35 -08:00
mezz 2f16ca5828 Update lang 2015-11-17 02:10:11 -08:00
mezz d7c2f11ace Fix #967 trees growing with wrong wood 2015-11-16 23:13:39 -08:00
mezz d82db2f003 Fix #965 issues displaying multiblock owner ledgers 2015-11-16 22:50:41 -08:00
mezz 84b1fa8c07 Fix farms only planting brown mushrooms 2015-11-15 02:59:56 -08:00
mezz 723d07ab7c Use vanilla BigMushroom generation 2015-11-15 02:59:32 -08:00
mezz 71b5f2f181 Fix #964 tools not working in Adventure Mode 2015-11-15 02:19:29 -08:00
mezz 8d7dc86e9f Fix #805 Implement no recipe conflict feature for the Worktable 2015-11-15 00:51:56 -08:00
mezz 5f2de3026e Clean up widgets and OpenGL gui lighting issues 2015-11-13 23:12:40 -08:00
mezz 430115a7d4 Refactor text layout from GuiForestry into its own class 2015-11-13 03:38:06 -08:00
mezz a516886087 Refactor worktable code a bit 2015-11-13 02:47:52 -08:00
mezz c6b1e65a4a Create a dedicated ghost crafting inventory class 2015-11-12 23:21:00 -08:00
mezz e154d4e2c6 Add better error checking to the Fabricator 2015-11-11 21:44:03 -08:00
mezz 9247ed1509 Stop error ledgers from showing tooltip when cleared 2015-11-11 21:21:04 -08:00
mezz 0251691d66 Fix obfuscation conflict with multiblock component isInvalid() 2015-11-11 17:15:47 -08:00
mezz d4cd0aaf7e Fix #960, Use itemDamage for wood items instead of NBT 2015-11-11 00:09:17 -08:00
mezz 90c9050e80 Fix #949 Fluid not accepted by carpenter when some recipes are removed 2015-11-10 21:33:43 -08:00
mezz 0713e0ea9c Fix #949 Fluid not accepted by carpenter when fluid names are changed 2015-11-10 18:53:04 -08:00
mezz 731d15fbd5 Add API for multiblock components 2015-11-10 02:44:18 -08:00
mezz 14bdab069e Fix #879 Fix #957 Improve error messages, add habitat locator hint 2015-11-09 01:32:42 -08:00
mezz e73e18a3c7 Fix worktable not showing owner gui tab 2015-11-08 23:47:33 -08:00
mezz fc69e25ea3 Fix crash with Damage Indicators mod and Butterflies 2015-11-08 21:21:23 -08:00
mezz 8465ff358a Update Lang, organize error codes 2015-11-08 20:23:51 -08:00
mezz b7382f074a Fix crash from ExtraUtilities calling getRenderType() on server 2015-11-08 19:40:16 -08:00
mezz 56a9e84800 Fix Gui crash on server startup 2015-11-08 19:24:46 -08:00
mezz 01433d7741 Fix #958 Crash when placing a machine block on another modded block 2015-11-08 02:35:16 -08:00
mezz fb595f7b26 Fix #956 clean up butterfly code 2015-11-08 02:13:38 -08:00
mezz 53269c63ca Remove redundant language keys for cart entities 2015-11-07 15:34:15 -08:00
mezz 63a48b2ea2 Tidy bee cart code 2015-11-07 15:15:54 -08:00
mezz 3770d34926 Fix integration with RailCraft loader/unloader/dispenser 2015-11-06 23:07:51 -08:00
mezz 2ab553898f Stop RailCraft from rendering a halo text of the cart's inventory name 2015-11-06 00:08:39 -08:00
mezz 862feea792 Ensure Forestry Queens from NEI are mated 2015-11-05 23:09:05 -08:00
mezz bd8dbbeaf8 Add Minecart with Apiary 2015-11-05 21:58:01 -08:00
mezz 571bdd9b80 Fix cart contents rendering as black in the End dimension 2015-11-05 17:47:29 -08:00
mezz 411b4959f2 Move inventory code to their own files, refactor, cleanup.
Register items and blocks before the rest of preInit.
2015-11-05 04:47:04 -08:00
mezz f1afca664b Fix #951 Add localization for mutation restrictions 2015-11-04 18:56:13 -08:00
mezz d1fe7eee92 Clean up Escritoire code and behavior 2015-11-04 05:01:54 -08:00
mezz 08812ae5ea Fix #948 Bottler Error in Console Forestry NEI Integration 2015-11-03 21:41:59 -08:00
mezz c9b145817e Add registration and retrieval of alleles by IChromosomeType in the API 2015-11-03 21:32:14 -08:00
mezz 407496a0ad Fix Alveary bee effects 2015-11-03 20:45:06 -08:00
mezz eb0a55d91c Close #699 Add Beehouse Minecart 2015-11-03 01:07:20 -08:00
mezz 5b53c3f153 Bump version to 4.2.0 for dev branch 2015-11-03 01:07:19 -08:00
mezz d284ee0e6d Bump version number to 4.1.1 2015-11-02 00:14:35 -08:00
mezz acf350d1aa Fix #945 crash in StandardTank.canDrain 2015-11-02 00:02:31 -08:00
mezz 3fde556b86 Fix fermenter not starting in some cases 2015-10-31 21:11:35 -07:00
mezz 7a45ce35a3 Fix #937 Multifarm detects rain in rainless biomes 2015-10-31 20:41:36 -07:00
mezz 9a745b10d7 Fix #938 Squeezer tank level does not update unless gui interacted 2015-10-31 20:29:15 -07:00
mezz 1594edd4d4 Fix #936 Machines run too slowly 2015-10-31 01:40:13 -07:00
mezz 72fc7cee93 Fix crash from missing tile in TankManager 2015-10-30 01:29:44 -07:00
mezz 4796ea24bb Fix #691 Tank GUIs are not synced for multiple players at the same time 2015-10-30 01:05:22 -07:00
mezz bcb468b496 Fix #935 Most farm blocks are uncraftable 2015-10-29 21:25:35 -07:00
mezz 6a3e3e6f55 Fix #932 The coolant ability of crushed ice is 1000s of times too high 2015-10-29 17:20:37 -07:00
mezz 6ed24c7c8c Fix #930 Fireproof Wood doesn't work in regular wood recipes 2015-10-29 16:57:24 -07:00
mezz d6a5b00251 Fix #934 Raintank crash 2015-10-29 15:47:51 -07:00
mezz 1f82c216a8 Fix #933 Fix Ore Dictionary registration for Fruits 2015-10-29 15:41:22 -07:00
mezz 8824585282 Fix #929 Bottler doesn't work with some mod Fluid Containers 2015-10-27 23:38:50 -07:00
mezz 784bdba4fb Fix #928 Fermenter not processing some recipes when resource tank is low 2015-10-27 16:48:22 -07:00
mezz 79f98f35d8 Fix #924 Allow wrenching top or bottom of most blocks to rotate them 2015-10-27 01:59:48 -07:00
mezz a7ca8b0c20 Fix ray trace collision on chests 2015-10-27 01:57:50 -07:00
mezz 23271bab04 Fix #922 Multifarm does not harvest large tree branches 2015-10-27 00:55:48 -07:00
mezz d1328cff6c Fix #923 Alvearies get disconnected from pipes on server start 2015-10-27 00:13:54 -07:00
mezz 45f844b53b Fix #925 Fermenter null fluid crash 2015-10-26 22:48:15 -07:00
mezz 8502ec84f9 Fix #913 Fabricator temperature jumps once glass is melted 2015-10-25 14:10:56 -07:00
mezz b7aaebd508 Fix #918 New chests are not transparent to light 2015-10-25 13:26:13 -07:00
mezz 85c05d8985 Fix #899 Machine's exterior tank levels don't update until GUI is opened 2015-10-25 00:46:43 -07:00
mezz dffa89709b Fix #914 Multifarms delete harvested wood from forestry saplings 2015-10-24 23:20:03 -07:00
mezz d25f869129 Fix #900 Bee life bar will stay in GUI when queen is taken out 2015-10-24 22:31:19 -07:00
mezz f1693a248c Fix #911 GUI tabs can go offscreen on wide GUIs and small resolutions 2015-10-24 22:26:19 -07:00
mezz 888047cad8 Add preserveNBT option to IDescriptiveRecipe, simplify IFabricatorRecipe 2015-10-24 19:59:59 -07:00
mezz 7ad2e2e94d Add FabricatorSmeltingRecipeManager to API 2015-10-24 18:12:50 -07:00
mezz ef61493179 Add back deprecated PlainFlowers for compatibility 2015-10-23 12:23:19 -07:00
mezz a2aef025c1 Create ButterflyDefinition, organize alleles 2015-10-23 12:21:37 -07:00
mezz 41e3fb15e5 Fix crash from Creosote or Steam rendering on machine tanks 2015-10-22 23:20:34 -07:00
mezz bb87fc6046 Add Java 7 check, clean up build.gradle 2015-10-22 20:40:52 -07:00
mezz 806d7eb9f6 Remove unused generic type 2015-10-22 18:18:45 -07:00
mezz 6539ad10af Tidy up TextureManager 2015-10-22 18:18:27 -07:00
mezz 76afe30e94 Make IToolWrench @Optional 2015-10-22 14:29:39 -07:00
mezz 02c25142cd Move getPlayer from ProxyCommon to PlayerUtil 2015-10-22 14:10:26 -07:00
mezz 84968c6021 Fix #897 Bee territory numbers are misleading 2015-10-22 13:58:58 -07:00
mezz 4874b628db Improve engine placement and hit box 2015-10-22 01:15:37 -07:00
mezz df02bf1d26 Fix ItemBlockWood getIcon(ItemStack stack, int pass) to work correctly 2015-10-21 22:04:22 -07:00
mezz cf69299087 Make TankRenderInfo immutable 2015-10-21 22:03:20 -07:00
mezz c49401bcda Remove unused IStructureBlockItem.java 2015-10-21 22:02:58 -07:00
mezz d2d203f772 Fix machines won't drain fluid containers that hold less than one bucket 2015-10-21 14:15:37 -07:00
mezz 6d6af6b043 Fix #904 Crash from using Infuser 2015-10-21 12:22:40 -07:00
mezz c4311cca77 Implement a way to list and remove recipes from the API 2015-10-21 12:22:27 -07:00
mezz 824b3f087a Deprecate the unused IWorldGenInterface 2015-10-20 00:17:03 -07:00
mezz 2a1b8fbc68 Fix tree leaves have default genetics instead of sapling's genetics 2015-10-19 22:34:49 -07:00
mezz 07defbeec3 Fix #901 Fix some stuff for WAILAPlugins 2015-10-19 22:34:49 -07:00
Nirek-K 4716f8daf7 Add GC grapes to backpack. 2015-10-19 15:36:31 -05:00
mezz 0cc8c4c4df Remove unused textures and changelog folder 2015-10-18 18:08:55 -07:00
mezz 2605bdaceb Show actual fluid color on machine's exterior tanks 2015-10-18 18:01:40 -07:00
mezz 9899687786 Split up Proxies.common code 2015-10-17 12:25:13 -07:00
mezz 0ea878d7bc Minor cleanup, tidy Imprinter networking 2015-10-16 17:32:33 -07:00
mezz 3e0cf7c302 Fix #892 Forestry Workbench destroys TFC Tools in Crafts. 2015-10-16 14:35:31 -07:00
mezz b81466fdcb Update development version of Forge to recommended 2015-10-16 14:34:54 -07:00
Nirek-K 2725b19f95 Update/Include support for MagicalCrops Beta 5 2015-10-16 14:18:39 -05:00
mezz 099e6f47e8 Fix #893 Shift-Removing items from a machine prefers the hotbar 2015-10-16 11:56:22 -07:00
mezz 614c13b4f3 Clean up network, clearly separate client and server packets 2015-10-15 15:57:17 -07:00
mezz 140643bec3 Fix #887 Particles are wrong when breaking wood items 2015-10-14 12:20:42 -07:00
mezz e6bb939f7f Bump version of Dev branch to 4.1.0 2015-10-14 01:57:44 -07:00
mezz ad0fcc57b5 Fix #853 Improve trees to have more branches and variations with height. 2015-10-14 01:57:35 -07:00
mezz 3684792a39 Update Lang 2015-10-14 01:52:34 -07:00
mezz 0e81f373f0 Implement a generic ISpeciesType for ISpeciesRoot 2015-10-13 10:28:12 -07:00
mezz 59d1d3456b Fix #888 Squeezer should not work with reusable fluid containers 2015-10-13 08:08:53 -07:00
mezz 15fe11094b Bump version to 4.0.9 2015-10-11 19:04:57 -07:00
mezz 790e9b9fba Fix #883 ExtrabiomesXL saplings not fermenting with Honey 2015-10-11 19:04:16 -07:00
mezz c7ef2ef807 Bump version to 4.0.8 2015-10-11 06:12:17 -07:00
mezz 11fa7bbf75 Add improvements to the flower API 2015-10-11 06:12:17 -07:00
Nirek-K 4c2cbd77c1 Fix #876 Mustard internal naming is failure. 2015-10-11 04:58:45 -05:00
mezz f58de9e5cc Fix #880 Apiarist's chest does not creak when opened 2015-10-10 22:49:32 -07:00
mezz 3f0dc9e74f Fix #881 Update codebase to Java 7 2015-10-10 22:49:09 -07:00
mezz 9ecab0fecd Bump version to 4.0.7 2015-10-06 20:19:28 -07:00
mezz 01245f32c5 Fix #870 Analyzer turns pollen into saplings 2015-10-06 20:18:53 -07:00
mezz 8cc0da5c04 Fix #830 Multifarms do not plant saplings when Arboriculture is disabled 2015-10-05 23:42:00 -07:00
mezz 6e68768259 Fix #865 Farm with multiple gearboxes has "no power" if one has no power 2015-10-05 23:30:46 -07:00
mezz 9ee34b06b6 Remove unused part of NEI Recipe Handler 2015-10-05 22:17:29 -07:00
mezz b05c395300 Fix #867 Custom Forestry recipes not working with NEI [?] button 2015-10-05 22:17:03 -07:00
mezz 48ef020dc9 Fix #868 Last tin can won't be consumed by Farm GUI 2015-10-05 21:59:56 -07:00
mezz 83b7ce00f7 Fix #859 Multi Farm using single tube upgrade cannot set the direction 2015-10-03 22:48:39 -07:00
mezz 6165d80c0c Fix #807 Add direction labels to circuit board for farm configurations 2015-10-03 22:06:50 -07:00
James Mitchell 31cb40f7b6 Update CLA link 2015-10-03 20:35:23 -07:00
mezz 16e4801d48 Bump version to 4.0.6 2015-10-03 13:44:22 -07:00
InfinityRaider 8fb7d5eb67 FlowerRegistry and AgriCraft compatibility update
Add to CLA agreement
2015-10-03 13:35:27 -07:00
mezz 55866d6a64 #830 fix farm crash when Plugin Arboriculture is disabled 2015-10-03 00:51:31 -07:00
mezz 510cf83670 Fix #861 Worktable client crash 2015-10-03 00:28:01 -07:00
mezz 656a6451bf Improve bee complexity calculation by excluding blacklisted mutations 2015-10-03 00:22:59 -07:00
mezz 69ee5bde65 Bump version to 4.0.5 2015-10-03 00:12:26 -07:00
mezz 592895cc48 Add NEI Worktable [?] support and categories from NEI Addons 2015-10-03 00:12:02 -07:00
mezz 7b5febd394 Bump version to 4.0.4 2015-10-01 18:31:23 -07:00
mezz 71481d5ace Add API helpers for using the new IBeeHousing modifiers and listeners 2015-10-01 18:30:28 -07:00
mezz 1d0efd537e Fix #791 *alyzer slot behavior changed. (can't swap specimens) 2015-09-29 22:33:27 -07:00
mezz 5052df8844 Revert "Fix breaking change to the API in IMutation"
This reverts commit f020dcf2e2.
2015-09-29 21:10:11 -07:00
mezz b1d496f24f Fix #858 sometimes can't craft with multiple GregTech tools in Worktable 2015-09-29 21:07:23 -07:00
mezz 2bfe576f7e Bump version to 4.0.3 2015-09-29 15:21:30 -07:00
mezz cc5c8af338 Fix #856 Crash when clicking the fluid slot in NEI squeezer recipe 2015-09-29 15:20:35 -07:00
mezz 19a9c2681c Bump version to 4.0.2 2015-09-29 00:40:19 -07:00
mezz f020dcf2e2 Fix breaking change to the API in IMutation 2015-09-29 00:30:42 -07:00
mezz dd34765223 Bump version to 4.0.1 2015-09-28 23:47:54 -07:00
mezz 3253077466 Fix #854 OpenGL transparency issues 2015-09-28 23:45:18 -07:00
mezz 8743f29613 Fix #851 Add a way to get wood items from the API 2015-09-27 19:35:46 -07:00
mezz 0b6b201366 Fix bug in implementation of tryAddStack 2015-09-26 23:12:11 -07:00
mezz 3e9da9b85c Fix alyzer GUI's behaviour line 2015-09-26 22:03:10 -07:00
mezz 8b7d3e5d15 Replace Constants.WILDCARD with OreDictionary.WILDCARD_VALUE 2015-09-26 16:05:05 -07:00
mezz 76b7ee6f50 Fix squeezer consuming whole stacks of fluid containers at once 2015-09-26 14:36:37 -07:00
Nirek-K 9478ffb7c1 Fix #847 TradeStation not outputting items to automation (also fix insertion filtering) 2015-09-26 13:29:29 -05:00
mezz ad08b90be8 Fix #845 Looking up NEI Squeezer recipes shows full stacks instead of 1 2015-09-25 22:26:31 -07:00
mezz 94f1898a56 Fix #844 Combine NEI entries for squeezing liquid containers 2015-09-25 22:25:49 -07:00
mezz 86f9fbcaf0 Rename TileBeeHouse since it's messing with git's file capitalization 2015-09-25 15:45:23 -07:00
mezz 65f876cf4a #806 Fix server crash from trying to load chest renderer 2015-09-25 15:30:25 -07:00
mezz 4234c38d69 Replace !Proxies.common.isSimulating(world) with standard world.isRemote 2015-09-25 15:18:24 -07:00
mezz 1e89bab556 Rename files to be more consistent. Add missing headers, tidy up Utils 2015-09-25 15:09:54 -07:00
mezz 37dd0efee2 Fix #750 Worktable not working properly with GT Tools 2015-09-24 01:04:55 -07:00
mezz 19a802fd68 #750 Make sure recipes with NBT do not match items with no NBT 2015-09-24 00:49:26 -07:00
mezz f6e3eb9335 Cleanup unused imports 2015-09-23 03:09:08 -07:00
mezz bfd49b107d Remove PropolisPipe (Moved to BC Compat) and update BC API version 2015-09-23 03:08:45 -07:00
mezz 77f5130604 Fix #804 Missing glass input on Thermionic Fabricator NEI Integration 2015-09-23 01:42:05 -07:00
mezz a188bbd43a Fix #821 bee house and apiary are invisible 2015-09-23 01:17:28 -07:00
mezz eee55cebf7 Fix error message for missing plantable flowers in config 2015-09-23 01:15:25 -07:00
ganymedes01 e967479506 Close #809 Remove stained glass 2015-09-22 23:31:47 -07:00
mezz f49bcfd020 Fix #834 Fix machine fluid handling for IFluidContainerItem 2015-09-22 23:14:46 -07:00
Vexatos 614305c690 Extracted Apiarist Armor checking methods to API so addons can use them 2015-09-20 15:33:01 -07:00
Nirek-K 901318c2b0 Add small plugin for Erebus. (possibly to be expanded) 2015-09-18 16:58:33 -05:00
mezz ef0dc7b7f7 Fix #833 Spread out HasFlowersCache hasFlowers checking over ticks 2015-09-17 04:14:59 -07:00
Nirek-K 31bd1e82fd Make plantball value slightly less terrible (equal to 9 wheat, so 'slightly' better to combine wheat, still worse for things like saplings) 2015-09-15 18:09:48 -05:00
Nirek-K b56a299f63 Fix #829 IC2 plantballs not working in fermenter 2015-09-15 17:11:34 -05:00
mezz 2a4191718b Fix #828 Register ShapelessRecipeCustom in recipe sorter 2015-09-15 14:28:57 -07:00
mezz cf2050d77a Fix #826 Biomes O Plenty module crashes with disabled Storage Module 2015-09-12 21:07:05 -07:00
mezz e0ccc28d55 Fix #819 Thermionic Fabricator not heating up 2015-09-11 17:17:05 -07:00
ganymedes01 f85a3d442b enable lighting when rendering 2015-09-11 16:29:57 +01:00
ganymedes01 5cd2350c9b Fix #806 Chests now render akin to the vanilla chests 2015-09-09 01:07:16 -07:00
mezz eef67a43ac Merge pull request #815 from bdew/fix-squeezer-od
Fixes to OreDictionary support in squeezer recipes
2015-09-08 13:15:22 -07:00
mezz c42ba345da Merge pull request #810 from ganymedes01/rainmaker-fix
Fix rainmaker crash
2015-09-08 13:08:24 -07:00
bdew 8f67ea75b8 Changed squeezer recipes to prioritize specific recipes over OreDictionary
Also fixed squeezer not accepting inputs that match OD recipes and fixed the NEI handler
2015-09-06 22:39:57 +03:00
Nirek-K d954f97cff minor melony cleanup of Growthcraft plugin 2015-08-30 17:43:52 -05:00
Nirek-K 81b4035fb8 Add glowshrooms to nether flower 2015-08-30 17:19:28 -05:00
Nirek-K bcd97662b2 Growthcraft Plugin
Orchard support for rice, grape, hops
Forester Backpack plant support
Squeezer/fermenter
Centrifuging GC beecombs
2015-08-30 17:18:42 -05:00
Nirek-K 767c92a66a Add BoP Mushrooms and tiny cactus to Bees 2015-08-30 13:26:17 -05:00
Nirek-K 6a1b2610fb Fix BoP flower integration, update flowers to be more than just vanilla (idea: Hummer12007) 2015-08-30 13:13:35 -05:00
Nirek-K 81d2c1971c Allow Biogas Engine fuel tank to be drained externally. 2015-08-28 08:17:58 -05:00
ganymedes01 b99d5829c1 Fix rainmaker crash 2015-08-27 18:51:47 +01:00
Nirek-K e71d57406e Make worktable recipe oreDictionary aware (craftingTableWood) 2015-08-23 12:28:30 -05:00
Nirek-K 62ee9013e5 Add what should be the rest of mod magical crops for the beta 2015-08-22 20:44:55 -05:00
Nirek-K 1daa7d243f Add some support for magical crops beta naming (likely missing some nonvanilla crops) 2015-08-22 19:45:28 -05:00
Nirek-K 19c13abd45 Add the inevitivably missed oreDictionary Recipes 2015-08-21 02:34:49 -05:00
Nirek-K 79e0fabacb Make Chest Recipes oreDictionary aware with chestWood 2015-08-21 02:01:41 -05:00
Nirek-K def51bada1 Make most recipes OreDictionary Aware. 2015-08-21 01:45:09 -05:00
ganymedes01 f5dc70141e Enable lighting when rendering TESRs 2015-08-20 00:48:07 -07:00
mezz 4bf4c2a043 Fix #798 Add NEIIntegration (thanks @Tonius for original work) 2015-08-20 00:44:20 -07:00
mezz e3cd71779e Update Lang 2015-08-19 11:17:51 -07:00
mezz fbf731b858 Close #797 With Nirek: Chipset upgrades for Machines 2015-08-18 23:47:42 -07:00
mezz 1da8001b92 Add findMatchingRecipes for possible multiple recipes in the future 2015-08-16 22:23:33 -07:00
mezz 71d53727e9 Fix #792 Sheared decorative leaf blocks don't stack 2015-08-16 16:57:17 -07:00
mezz 358fb75f9a Fix #794 engine chaining and heating 2015-08-16 00:16:03 -07:00
mezz 020f30b418 Fix #793 frames should not be automated or stack in Apiaries 2015-08-15 23:37:27 -07:00
mezz c56f09897c Move BoP integration to Forestry 2015-08-15 22:41:04 -07:00
mezz d924483fbb Fix farmable IMC to accept negative meta (wildcard) 2015-08-15 22:12:04 -07:00
mezz 56c06ab6ed Use block and item registries instead of using delegate directly
allows compatibility with older Forge
2015-08-15 19:01:30 -07:00
mezz 8eb4afc464 Improve farmables IMC parsing (allow names with dots in them) 2015-08-15 18:59:23 -07:00
mezz 689b97d948 Merge GuiUtil into Utils 2015-08-14 00:54:27 -07:00
mezz 844045f75b Fix #669 Allow Rainmaker automation 2015-08-12 00:16:40 -07:00
mezz 045a3a9ccd Fix #743 Add config option for pollination on Vanilla trees 2015-08-11 23:09:51 -07:00
mezz 0def8c3f34 Let players walk through willow leaves slowly 2015-08-11 22:34:31 -07:00
mezz 8d9c282a4f Fix #789 leaves can decay when tree trunk is still there 2015-08-11 22:33:38 -07:00
mezz 2f5edddb59 Fix tree gen vines where leaves should be 2015-08-11 22:31:15 -07:00
mezz 3c63001cef Fix #768 drop circuit board when machine is broken. 2015-08-10 00:16:32 -07:00
mezz a714310096 Fix Alveary with new wood slabs 2015-08-10 00:14:27 -07:00
mezz 8303f5c216 Ensure string capitalization uses English Locale 2015-08-09 21:32:50 -07:00
mezz d04adf394b Cleanup some derped refactoring 2015-08-09 21:09:54 -07:00
mezz e28ad8424c Clean up Utils.getTile to not use try/catch 2015-08-09 21:02:46 -07:00
mezz 9f1b1cc474 Fix #680 and Fix #750 worktable handling of tools and ItemCraftedEvent 2015-08-09 21:02:26 -07:00
mezz 2508343599 Fix slab recipe to output 6 slabs instead of 1 2015-08-09 20:46:54 -07:00
mezz 6f07bbc63f Stop NEI Crashing when cheating items to a full inventory 2015-08-09 20:45:04 -07:00
mezz f9b76a90b1 Fix #773 Crash with invalid flowers from HEE in Forestry 4.0.0 2015-08-09 15:53:48 -07:00
mezz b1db58b8a4 #773 try to catch the cause of the apiculture config crash 2015-08-08 15:51:43 -07:00
mezz 44538c1e03 Fix #786 Extremely short bee-lifespan 2015-08-08 14:11:00 -07:00
mezz fb7bf6d9fb Make engines more compatible with other RF mods 2015-08-08 12:53:05 -07:00
mezz ee46f4fee1 Add sources jar to maven, try to clean up gradle 2015-08-08 11:13:05 -07:00
mezz 32812d8a43 Fix stair and fence item rendering when held 2015-08-02 22:53:23 -07:00
mezz fdf3493ed0 Code cleanup and remove some unused code 2015-08-02 22:53:19 -07:00
mezz f0f8c9a984 Fix #780 Small particles decrease the mipmap level
Add potion effect particles (poison, regeneration, confusion)
Add Ignition effect particles
2015-08-02 00:43:23 -07:00
mezz 48a59c2ca7 Fix Alveary temperature modifiers have no effect 2015-08-01 22:40:41 -07:00
mezz 15c17125bb Fix bees unable to find flowers 2015-08-01 22:39:48 -07:00
mezz 70a04e99ce #773 Fix NPE in StackUtils.parseStackString 2015-08-01 18:33:17 -07:00
mezz 43906e058d Fix #763 Forestry saplings sometimes use bonemeal infinitely 2015-08-01 18:23:45 -07:00
mezz 36ed432462 Update lang 2015-08-01 14:08:39 -07:00
mezz 7ed3d1e19f Fix server crash from wood icon registration 2015-08-01 13:32:01 -07:00
mezz 09fcbad632 Fix #776 Rearrange and use full-size text on (bee/tree/flutter)-alzyer 2015-08-01 04:09:11 -07:00
mezz 7cda899bef Fix #775 Found Chromosome with invalid Alleles 2015-08-01 00:58:37 -07:00
mezz 63ba9903ea Fix #779 Village apiaries are inactive, lose inventory after reload 2015-08-01 00:16:55 -07:00
mezz 3a5ccd87cd Tree refactor. Breaks wooden logs and planks.
Fix #758 Add fireproof versions of all Forestry wooden items
Fix #762 Forestry saplings are randomly invisible on place.
Fix #689 Remove old fence recipes
Fix #504 Make NaturalistEye pretty
Fix #778 Villager house roofs should be made of colorful Forestry wood stairs
2015-08-01 00:16:55 -07:00
mezz 0a79ead98d Add a way to get all the Alveary components from the Alveary Controller 2015-08-01 00:16:54 -07:00
Nirek-K 6845a0f71b Fix #771 Don't NPE in AgriCraft Plugin if Farming is disabled. 2015-07-25 11:10:50 -05:00
mezz 953ffd4fd1 Fix bee flower config parsing 2015-07-24 23:31:52 -07:00
mezz 8d96264763 Fix #769 Fix #744 issues with flower weights in apiculture.cfg 2015-07-24 23:08:17 -07:00
mezz b52a46f352 Fix multifarm control blocks. Minor multiblock cleanup 2015-07-20 21:52:07 -07:00
mezz d24eb693e9 Vect cleanup 2015-07-20 21:51:27 -07:00
mezz e04bbcba84 Fix #757 Particles rendering in other dimensions 2015-07-19 23:25:45 -07:00
mezz aa47599278 Giant multiblock refactor 2015-07-19 22:35:34 -07:00
Nirek-K 201111cb83 minor cleanup of the minor cleanup of the fabricator..cleanup 2015-07-18 18:58:13 -05:00
Nirek-K 20b3db9b41 minor cleanup to fabricator 2015-07-18 18:26:28 -05:00
Nirek-K 9251e17b9a Fix #761 Make tree vines generate correctly 2015-07-17 15:33:58 -05:00
Nirek-K e223537485 Fix #760 Allow Genome chests to be extracted from. 2015-07-16 11:19:14 -05:00
Nirek-K 454abdd2ed Restrict Fabricator inventory more like Carpenter.
Only accept related items while recipe is active, never accept casts/meltables.
2015-07-15 20:41:10 -05:00
Nirek-K 124aba3ede Fix #752 Fabricator Inventory only accepts items that is used in a recipe. 2015-07-15 14:13:56 -05:00
mezz c106c1826f Fix crash from missing Agrarian bee allele from older worlds 2015-07-13 21:05:13 -07:00
Nirek-K 0cd138111a Add mycelium recipes for grain seeds to Moistener 2015-07-12 14:18:29 -05:00
Nirek-K 2ea9f98aad Add Natura and Harvestcraft grains to Moistener. 2015-07-12 13:22:22 -05:00
Nirek-K 5cfdbccaad Allow extraction of unwanted items from the Moistener reservoir. 2015-07-12 09:50:48 -05:00
Nirek-K fba7288046 Fix #754 Allow bees to see Agricraft wheat and netherwart 2015-07-10 14:53:39 -05:00
mezz 6a6627394b Fix #697 boost mutation chance when researched in the Escritoire 2015-07-08 00:19:22 -07:00
Nirek-K d31968d190 Fix #746 point princess/drone triggers to master TE for errorstates 2015-07-02 09:08:38 -05:00
Nirek-K 5975bdf4fd Plant Mega Pack stage finalish plus 3.
misc plants to their respective sets
2015-07-01 08:32:19 -05:00
Nirek-K d882b0cf0a minor plugin cleanup 2015-07-01 01:34:50 -05:00
mezz a972287513 Fix #745 backpack item config gets the wrong meta value 2015-06-30 20:50:01 -07:00
mezz dea639cee2 Cleanup TickHandler registration 2015-06-30 20:50:01 -07:00
Nirek-K 2492167833 Plant Mega Pack Finalish Stage
Add plants to orchard (exception 2 tile plants)
Add aquatic plants to the orchard (place plant on water that's on dirt)
Add fungus to multifarm crop/orchard and bees
Add rest of mountain/shrubs/etc to multifarm and bees
Add jungle to multifarm crop/orchard and bees
Add berry bushes to multifarm crop/orchard and squeezer
2015-06-30 12:09:59 -05:00
Nirek-K 4f61f8062d Adjust Orchard logic slightly to support traversal blocks beyond wood. 2015-06-29 21:46:43 -05:00
mezz 73ad158b5c Fix #742 Hopper doesn't fill last spot of Carpenter inventory 2015-06-28 14:28:34 -07:00
mezz 7d998d2bb8 #740 Fix default Apiculture.cfg in non-english locales 2015-06-28 13:56:54 -07:00
mezz 958885ab95 Fix issue with BeekeepingLogic cached canWork 2015-06-28 02:51:58 -07:00
Nirek-K 7d9cf9ac81 Make Biogas equal to biomass in the Biogas Engine 2015-06-28 03:28:51 -05:00
Nirek-K b5120991d5 Plugin for Immersive Engineering
Add Hemp to crop tube, seeds to squeezer.
2015-06-28 02:09:59 -05:00
Nirek-K ce4e4935d9 Add IC2 Biogas as a fuel to the Biogas engine (80% value of Biomass) 2015-06-28 00:54:27 -05:00
mezz f0fa49f46c Fix #739 Trade station crashes when loaded without name set 2015-06-27 21:17:26 -07:00
mezz f79a8b3896 Fix #738 plain leaf blocks accept fertilizer and fruit pods do not grow 2015-06-26 22:27:43 -07:00
mezz f423093bf0 Fix #737 Cactus blocks not working as flowers 2015-06-26 19:36:36 -07:00
mezz 347b53307f Fix bees to pollinate vanilla trees again 2015-06-24 22:25:40 -07:00
mezz a848721f32 Fix wheat and other block-only flowers not counting as a flower 2015-06-24 22:03:06 -07:00
mezz 3fb8ba1ef4 Fix #732 letter sizes 2015-06-24 21:18:10 -07:00
mezz 00ad24d415 Tidy up TemperatureState for engines 2015-06-24 20:44:06 -07:00
mezz 9ade0b8df2 Register GeneratorFuels even without IC2 present 2015-06-24 20:43:11 -07:00
mezz 348551ed8f Add some basic tests (having minecraft unloaded is very limiting) 2015-06-22 23:34:26 -07:00
mezz 306ba82848 Fix #522 Redstone signals should disable Forestry's powered machines 2015-06-22 21:31:40 -07:00
mezz 55ee53583c #507 add basic config gui 2015-06-21 23:18:48 -07:00
mezz 3e9e4afbfd Localize Configs #507 2015-06-21 23:18:39 -07:00
mezz 117fd7235c Bump minor version number to 3.7.0 2015-06-21 14:53:34 -07:00
mezz b9cd7f1e63 Migrate ALL configs to forge configs #507 2015-06-21 14:52:54 -07:00
mezz 33b010a8fa Fix #536 Add additional Flower Configs for each type
Migrate Apiculture config #507
2015-06-20 23:57:33 -07:00
mezz 8ef193c8a5 Fix #730 Crash with corrupted forestry leaves from MFR harvester 2015-06-20 20:38:01 -07:00
mezz 9d1d1b9ef1 Bump BC recipes compatible version range.
BuildcraftAPI|recipes got a breaking update in 7.0, but it only
breaks integration tables
2015-06-20 16:17:27 -07:00
mezz edd7dd098b Include CraftGuide API in project, excluded from JAR
It rarely updates, and the gradle git thing was never working for me
2015-06-20 16:14:59 -07:00
mezz 3488a39016 Fix #295 Display energy stored on machines correctly 2015-06-20 01:45:12 -07:00
mezz 797b794214 Fix Analyzer block's display for trees and butterflies 2015-06-20 01:40:06 -07:00
mezz adc3b438c6 Fix #729 Leaves name doesn't show properly 2015-06-19 20:38:57 -07:00
mezz 699fb6fc37 minor tidying 2015-06-19 00:33:48 -07:00
mezz fde3b752e1 Fix progress bars on Carpenter and Centrifuge jumping to 100% at first 2015-06-19 00:33:36 -07:00
mezz f1b35a6746 Fix #692 Carpenter crafting preview is sometimes blank 2015-06-19 00:33:03 -07:00
mezz 4808c25e9f Remove use of OreDictionary method that is only in future Forge versions 2015-06-18 20:49:50 -07:00
mezz af3d007da4 Fix for missing meta value on ItemStack string 2015-06-17 01:21:32 -07:00
mezz 1a048c29ad Fix #694 Fix #672 Fix #578 Add better Backpack config and smart defaults 2015-06-17 01:01:29 -07:00
mezz 4cf7fd84b9 Fix recent issue with item inventories potentially losing items 2015-06-16 21:14:33 -07:00
mezz f6d8005e03 Fix #726 Letter's player/trader icon is glitched when side tabs are open 2015-06-14 20:35:51 -07:00
mezz ed563d98c2 Fix #547 wheat farm places farmland in invalid spaces 2015-06-14 19:24:41 -07:00
mezz 66da45f5bf Fix #725 Allow multifarm to break any type of soil again 2015-06-14 15:12:16 -07:00
mezz fb966143f9 Fix #721 Crash when reusing the Habitat Locator 2015-06-14 14:53:39 -07:00
mezz 763df470a1 Limit stack size of analyzed specimen in the escritoire 2015-06-14 14:36:41 -07:00
mezz 487a5bde45 Fix Alvearies animating after they are broken apart 2015-06-13 16:45:50 -07:00
mezz 19602bcd47 Fix #723 Alveary does not form using Oredictionary name slabWood 2015-06-13 16:45:50 -07:00
mezz c90ea75fde Minor code tidying in Escritoire 2015-06-13 16:43:44 -07:00
Nirek-K 4851a70893 Allow OreDictionary slabWood blocks to complete Alvearies 2015-06-13 18:27:40 -05:00
Nirek-K e7d297dbc6 Make AgriCraft particles slightly more melony. 2015-06-10 21:31:07 -05:00
mezz 50a0a5fa81 Fix #720 Spectacles don't show pollinated leaf blocks 2015-06-09 20:48:21 -07:00
mezz a4fc09c405 Fix #713 isHellish implementation for Alvearies 2015-06-09 00:33:20 -07:00
mezz fa092e2a1b Move PacketHelper methods into DataStreams 2015-06-09 00:23:36 -07:00
mezz ff97fd8067 Fix #716 Crash when looking up bee mutations in NEI 2015-06-08 23:39:18 -07:00
mezz d183abfd11 Fix GUI glitch with the Alveary (no progress bar) 2015-06-07 21:09:20 -07:00
mezz 2e4d9856b2 Fix #710 BeekeepingLogic crash 2015-06-07 01:29:24 -07:00
mezz ad1773a7f7 Close #703 Improve the probability system for centrifuge outputs 2015-06-07 01:21:30 -07:00
mezz a2944ce4e6 Fix Binnie's mods 2015-06-06 23:15:31 -07:00
mezz deb6afaf08 Bulletproof the BC pipe sealant recipe, make it shapeless 2015-06-06 23:15:31 -07:00
mezz fe84d52c38 Fix performance issue when player had no mailbox 2015-06-06 23:15:31 -07:00
mezz 1249ccf983 Fix #701 Improve BeekeepingLogic and network performance.
Improve rendering performance of saplings and butterflies too
2015-06-06 23:15:25 -07:00
mezz d61096e1a9 Fix #698 Worktable is uncraftable 2015-06-03 23:37:36 -07:00
mezz e458dcbb3f Fix #696 Ticon Autosmelt on Forestry Ores makes Apatite 2015-06-02 00:26:33 -07:00
mezz 31e4d93e33 Add API to query for plugin enabled/disabled status 2015-05-31 16:03:39 -07:00
mezz 3aad454237 Restrict Propolis Pipe to BC 6 (to be added in BC Compat for BC 7) 2015-05-31 15:30:07 -07:00
mezz cdae5a6a44 Fix #693 EnderIO Combustion Engine can't use Ethanol without BuildCraft 2015-05-31 14:56:18 -07:00
mezz 37fefff9f3 Add missing Copyright statement 2015-05-31 03:22:21 -07:00
mezz 04caed5baa Cleanup 2015-05-31 03:13:24 -07:00
mezz c6baca7116 #561 Fix bee particle effects networking 2015-05-31 03:13:23 -07:00
mezz 68315ee614 #561 Add "gui open" and "active" packet updates 2015-05-31 03:13:23 -07:00
mezz 0655ea235a Merge pull request #686 from ganymedes01/patch-1
Add fence recipes to match vanilla's style
2015-05-29 22:36:04 -07:00
mezz 25b33b8db9 Clean up Ledgers a bit 2015-05-29 22:31:38 -07:00
mezz 6dab61b0f9 Fix crash in BeekeepingLogic when removing a flower near bee hives
Fix Bee produceStacks logic
2015-05-29 22:31:38 -07:00
mezz 9fccfd1198 #561 refactor networking
Use more DataStreams and less NBT
Add packet for error states changing
Reduce network use by Clockwork Engine
2015-05-29 22:31:38 -07:00
ganymedes01 5294bfa44d Change fence recipes to match vanilla's style
I know forestry is not in 1.8 yet, but why not use it's recipe pattern for fences?

As seen here: http://minecraft.gamepedia.com/Fence
Fences in 1.8 are crafted with an specific type of wood and sticks in the middle, yielding 3 fences per recipe.
2015-05-27 11:08:18 -03:00
mezz ce00a33593 #641 Fix moistener inventory alignment 2015-05-25 23:32:13 -07:00
mezz 8f9c570dd0 replace Utils.getBiomeAt 2015-05-25 01:28:27 -07:00
mezz 4bff9e537e Use more precise biome temperature checking (use coordinates) 2015-05-25 01:24:57 -07:00
mezz c01c0b88e9 Remove ancient legacy tile entities 2015-05-25 00:58:11 -07:00
mezz 64f2cbae3c Fix #668 Add Localization grammar to crates 2015-05-21 23:21:00 -07:00
mezz e8e37eb010 Fix #675 Machine Gui Tabs should open based on time, not frame rate 2015-05-21 23:08:30 -07:00
mezz a3ccb226e5 Fix #679 dupe bug with EnderIO and worktable 2015-05-21 22:19:35 -07:00
mezz 1ed3851672 Remove ILegacyHandler (see #677) 2015-05-21 21:35:32 -07:00
mezz bb740e5c30 Fix #677 missing Maximum flowering allele 2015-05-21 21:27:49 -07:00
mezz 81f0018db3 Cleanup Refactored BeekeepingLogic.update() 2015-05-21 21:22:57 -07:00
bdew 0e444d96d1 Refactored BeekeepingLogic.update() to separate check and work methods 2015-05-21 10:41:44 +03:00
mezz 93a6c77eba Fix #641 Item Inventory Dupe Bug. Refactor Inventories 2015-05-21 00:30:35 -07:00
mezz 6b824f47cd Add config option for gui tab speed 2015-05-17 18:31:07 -07:00
mezz e73e703f8c Tidy up item inventory code 2015-05-17 18:14:35 -07:00
mezz cd7d5f10e6 #666 Fix performance regression from checking for flowers constantly 2015-05-17 01:31:17 -07:00
mezz 43d8b18d2d #666 Display multiple errors for bees and housings that support it 2015-05-17 01:18:00 -07:00
mezz ff00017586 #666 Refactor error states, display multiple error states 2015-05-17 00:59:40 -07:00
mezz 5d9175a00d Tidy code in EngineTin 2015-05-16 00:44:05 -07:00
mezz 2bafc77c02 #657 Fix custom localization of maturation speed 2015-05-16 00:43:43 -07:00
mezz ea03a4c9fe #657 Add localization for gui.flyer.tooltip 2015-05-16 00:42:32 -07:00
mezz 1f2733a0f0 #657 Fix missing butterfly metabolism strings 2015-05-16 00:30:57 -07:00
mezz 6c90c812f0 #657 Custom localization for worker speed tooltips 2015-05-16 00:30:02 -07:00
mezz 6a16ac5133 Fix #665 Crash with addon mods from BeeMutation.getChance 2015-05-15 21:54:34 -07:00
mezz d5296fbc60 Fix #652 Bottler liquid dupe bug on server 2015-05-09 17:39:01 -07:00
mezz 7b476b39c2 Add AlleleFactory and localization support for forestry addons using it 2015-05-09 15:06:29 -07:00
mezz 53d3cc554f Add support for creating nocturnal bee species 2015-05-09 15:02:13 -07:00
mezz ce6d92e5cc Begin to support Float product and specialty chances.
Full support will come when the deprecated Int versions are removed.
Until then, very small chances are rounded up to 1/100.
2015-05-07 23:59:43 -07:00
Nirek-K 49deb75278 Add meta checking to flower weight adjustment 2015-05-08 01:25:19 -05:00
mezz 9d32c6dfcb Fix server crash from allele refactor 2015-05-07 22:39:43 -07:00
mezz 7f4a13aa23 Revert "Revert "Add factories for creating bee species and mutations""
This reverts commit 0c12fdf730.
2015-05-07 22:27:19 -07:00
mezz 0c12fdf730 Revert "Add factories for creating bee species and mutations"
This reverts commit 6afee76bee.
2015-05-07 22:19:30 -07:00
mezz 6afee76bee Add factories for creating bee species and mutations
Remove strict bee biome check (it worked poorly with biome mods)
2015-05-07 22:14:52 -07:00
Nirek-K d29f4c0b79 Fix #650 Fix logic errors in bee planting 2015-05-07 20:33:44 -05:00
Nirek-K c705486472 #Fix 646 Move plantables registration to not be smashed by acceptable. 2015-05-02 17:00:58 -05:00
Nirek-K efc3795124 Fix #644 Make Clockwork engine recipe OreDictionary aware. 2015-04-30 21:40:08 -05:00
Nirek-K c3322de12a Add AgriCraft seeds to squeezer. 2015-04-26 18:48:47 -05:00
Nirek-K 1844546f03 Increase precision of secondPrincessChance to 2 decimals 2015-04-24 19:49:30 -05:00
Nirek-K ef658020d2 Fix #638 Allow Analyzer to accept and convert vanilla saplings. 2015-04-24 13:50:12 -05:00
mezz 4cdc612ed0 cleanup 2015-04-24 00:08:07 -07:00
mezz 8d9a0090ec Close #624 Make Forestry saplings IGrowable 2015-04-24 00:07:40 -07:00
mezz 821cfb4987 Fix #600 crash when removing a bee mod (even with clear.invalid.chromosomes) 2015-04-23 23:28:44 -07:00
mezz e5a4f8eb60 Cleanup for Bee Refactor 2015-04-22 23:28:51 -07:00
mezz d16c6a3b36 Cleanup for Bee Refactor 2015-04-22 23:14:42 -07:00
mezz dab7636c27 Update Lang 2015-04-22 22:57:21 -07:00
mezz f51d691002 Refactor Bee mutations, genomes, and species. 2015-04-22 22:51:56 -07:00
mezz a875a54b93 Remove old plugins 2015-04-22 21:58:26 -07:00
mezz 8418116b58 Clean up PluginApiculture hive drop registration 2015-04-22 21:58:26 -07:00
mezz 8dedba4f16 Remove old deprecated and legacy methods 2015-04-22 21:58:26 -07:00
Nirek-K cb6e4620fa Fix #633 End Flower (Dragon egg) doesn't work with HEE 2015-04-22 21:23:54 -05:00
mezz 4b8e651a89 Make TankManager gui handling match the old code properly 2015-04-18 16:17:26 -07:00
mezz 9275784a5a Fix #630 Can't use Ender Electron Tube 2015-04-18 14:06:13 -07:00
mezz 9f04307478 Allow compatibility with new Forge's Fluids change and old Forge too 2015-04-18 13:00:47 -07:00
Nirek-K ca050a7732 Fix #623
Also allow pollen to work on vanilla leaves.
2015-04-15 13:51:00 -05:00
mezz 240bdd3ad1 Merge pull request #615 from Nirek-K/MGCropsFix1
Fix MagicalCrops Plugin firing too early.
2015-04-13 22:05:49 -07:00
mezz f2c3495674 Merge pull request #614 from Nirek-K/F613
Fix #613 Buildcraft 6.4.x compatibility
2015-04-13 22:05:33 -07:00
mezz 1deb385cfe Merge pull request #616 from Nirek-K/VanillaFarm
Allow Orchard to pick up vanilla crops, address #498
2015-04-13 22:04:42 -07:00
Nirek-K d2fcbd8cde Allow Orchard to pick up vanilla crops, address #498 2015-04-13 16:43:11 -05:00
Nirek-K d7daceace7 Fix MagicalCrops Plugin firing too early. 2015-04-13 08:21:22 -05:00
Nirek-K 199158aeee Fix #613 2015-04-13 08:03:17 -05:00
mezz cca4710cb2 Fix #612. Update minimum required Forge version to 10.13.3.1370 2015-04-12 21:12:12 -07:00
mezz b8b7ea328f Update dependencies and fix Fluids for Forge 10.13.3.x 2015-04-11 18:39:46 -07:00
Joe Amenta 0462e5a930 Fix #602. Fixing the imprinter and infuser GUIs to work like the alyzers.
Imprinter and infuser would previously not run their output until the output
slot was clicked (likely, only in SSP). Treealyzer and Beealyzer comment out a
block of code (Flutterlyzer never had this in the first place) that was
uncommented in these... doing the same here made the issue go away.

Sign CLA
2015-04-10 19:26:33 -07:00
Nirek-K 4be4606854 Add AgriCraft cropstick plants to Orchard 2015-04-09 21:37:59 -07:00
Nirek-K f4d671ba2a Add Water Artichoke to orchard.
Add other crops to orchard.
2015-04-09 21:36:18 -07:00
Nirek-K 38ea1061d1 Add Spinach.
Add HC crops to the Orchard Tube, diverse crop fields can be built and the farm will maintain the design.
2015-04-09 21:35:17 -07:00
Nirek-K e26fde5cc0 Plant Mega Pack Stage 4
Add Forest and Plains plant types to bee plant/acceptable and Multifarm (Crop)
Slight Refactor and Cleanup
More minor Cleanup
2015-04-09 21:31:21 -07:00
mezz ae1ed86b50 #606 Allow Flutterlyzer to show mutations 2015-04-09 21:28:51 -07:00
mezz 784a47ba11 Fix #597 Crash from Butterfly Genome.getActiveAllele 2015-04-06 20:24:47 -07:00
mezz b5370254c4 Optimize compression of png assets 2015-04-06 00:58:17 -07:00
mezz 689adab411 Fix #594 Crash in Natura plugin 2015-04-05 21:06:19 -07:00
mezz 1526b2cb3f Close #586 Disabled "Generated apatite vein around *coords*" messages 2015-04-05 20:55:37 -07:00
mezz 536254af42 Fix #588 crash on crate registry with disabled storage module and natura 2015-04-05 20:04:49 -07:00
mezz eee22d3e5c Rename loadPlugin to registerHandlers in PluginManager 2015-04-05 20:03:58 -07:00
mezz f7bc38c7e4 Fix #592 Some Crates are missing a recipe 2015-04-05 14:17:34 -07:00
Nirek-K 3f6f12f7cc Fix #588 Bulletproof null checks for Natura Plugin 2015-04-05 14:17:34 -07:00
mezz f8f949850b Bump unstable branch to version 3.6.0 2015-04-04 20:58:53 -07:00
mezz fd88173e6f Fix #584 Carpenter doesn't work 2015-04-04 19:41:16 -07:00
Nirek-K 70d6db8bf2 Plant Mega Pack Stage 3
Add most basic flowers to plantable and usable by bees. This should include almost all flowers that don't 'grow' like crops.
2015-03-30 22:07:18 -07:00
mezz 29dddc76ef Make escritoir inventory a private static class instead of anonymous 2015-03-30 22:07:17 -07:00
mezz e80a4e9dfa Organize modules 2015-03-30 22:04:30 -07:00
mezz 1ca041a29f Revert "Close #441 Add Underground Biomes Constructs integration"
This reverts commit b3b1a6a415.

Conflicts:
	lang
	src/main/java/forestry/Forestry.java
	src/main/java/forestry/plugins/PluginManager.java
2015-03-29 23:44:48 -07:00
mezz 4bfb2a3662 make worktable inventory adapter a private static class 2015-03-29 23:39:50 -07:00
mezz 59b90044b7 Clean up slot handling code 2015-03-29 22:00:00 -07:00
mezz 6a8b9af626 Fix #579 Centrifuge recipes do not work with wildcard metadata 2015-03-29 22:00:00 -07:00
mezz 9df39e48eb Move slot handling code out of ContainerForestry, in to SlotHelper 2015-03-29 22:00:00 -07:00
mezz 54fdeab46e Merge pull request #571 from Nirek-K/Witchery
Witchery Support #223
2015-03-28 23:13:46 -07:00
mezz 80cfe423aa Fix #574 clean up candle code 2015-03-28 23:03:52 -07:00
mezz 614ba3f6a9 Merge pull request #575 from Nirek-K/F573
Fix #573 Add Vanilla Acacia and Dark oak to fermenter
2015-03-28 17:16:02 -07:00
Nirek-K ac83f6107d Fix #573 Add Vanilla Acacia and Dark oak to fermenter 2015-03-28 18:25:35 -05:00
Nirek-K 51497c98f7 Witchery Support
BloodRose, Dandelion, Poppy, Shrub added to Flowers Acceptable (not spread)
Belladonna, Mandrake, Mindrake, Snowbell, Wolfsbane, Wormwood, Garlic added
to Crop Multifarm, seeds to squeezer.
Saplings added to multifarm, fermenter.
2015-03-28 02:01:16 -05:00
mezz ed7b200c56 Merge pull request #567 from Nirek-K/PlantMP2
Plant Mega Pack Stage 2
2015-03-27 22:27:51 -07:00
MysteriousAges 5d2d350a96 Merge pull request #568 from Nirek-K/dev
Remove old animation files no longer used (as per Hanfox)
2015-03-27 21:10:47 -07:00
Nirek-K 9ffe216f4a Remove old animation files no longer used. (as per Hanfox) 2015-03-27 18:20:04 -05:00
Nirek-K a3f23ea1cb Plant Mega Pack Stage 2
Cactus/Desert plants to crop multifarm, acceptable to Cacti bee flower allele
Land Crops to crop multifarm, seeds to seed oil, products to juice in Squeezer
2015-03-27 05:28:07 -05:00
mezz f0c535f30a remove unused imports 2015-03-26 22:48:21 -07:00
mezz 1d162bf5ca Update formatting to ignore javadocs 2015-03-26 22:47:34 -07:00
Nirek-K af036b64e8 Plant Mega Pack Stage 1 Bamboo to Reed farm. Bamboo, Kelp to Fermenter 2015-03-26 22:47:20 -07:00
Nirek-K 06a86742bb Fix #542 Add Chisel Worldgen to Digger Backpack
Granite, Limestone, Marble, Andesite, Diorite
2015-03-26 22:40:14 -07:00
mezz e48fbe948e Fix #566 Habitat Locator icon is broken on 32x + texture packs 2015-03-26 22:22:00 -07:00
mezz d4cd2153ef #563 clear up error from missing Breeding Tracker constructor 2015-03-26 21:48:17 -07:00
mezz 4887926994 Fix #563 Player's Breeding Tracker is not sent on opening GUI 2015-03-25 22:11:19 -07:00
mezz 9989451c1c Cleanup 2015-03-25 00:51:48 -07:00
mezz ce3d891eaa #561 Use less network data for saplings 2015-03-24 23:02:48 -07:00
mezz e8c2223f01 #552 Fix leaf icons are missing in NEI recipes 2015-03-24 00:06:24 -07:00
mezz 714206d8c8 Fix #519 Analyzer block display does not update when bee changes 2015-03-23 23:35:06 -07:00
mezz 6593d75234 Move NOPOWER error check to TilePowered updateEntity 2015-03-23 23:35:05 -07:00
mezz 97a96b8f3f remove "all" from InvTools addStack. (used only by tryAddStack) 2015-03-23 23:35:05 -07:00
mezz 5bc0f0156e Remove unused methods 2015-03-23 23:35:05 -07:00
mezz b922c89bb1 Remove unused methods 2015-03-22 21:59:39 -07:00
mezz 8eb601b6cf Fix #548 Make butterfly "hurt" noise quieter 2015-03-22 20:39:05 -07:00
mezz f86031f884 Fix #520 Move recipe registration from postInit to Init 2015-03-22 19:33:57 -07:00
mezz d59072b771 Fix #556 Crash when disabling PluginFactory 2015-03-22 17:41:35 -07:00
mezz c780ec6aaf Remove redundant leaf speciesUID NBT 2015-03-22 17:10:56 -07:00
mezz 558d78bc63 #552 Fix display of non-default fruit types on trees 2015-03-22 16:48:37 -07:00
mezz 0f61cea75e #19 add config option to disable butterfly pollination 2015-03-22 15:37:56 -07:00
mezz 08a9badc54 Fix #559 Forestry fluid can be duplicated with buckets 2015-03-22 15:23:24 -07:00
mezz d71b0e5646 Fix #557 crash from Analyzer 2015-03-22 15:12:03 -07:00
mezz 8a870b9c76 Fix #552 Leaves use excess network bandwidth 2015-03-22 14:50:08 -07:00
mezz 59885f1916 Improve packet handling performance 2015-03-22 14:43:27 -07:00
mezz 7f54ddaa83 Rename ItemBackpack "info" to "definition" 2015-03-21 19:09:08 -07:00
mezz eb502ac0ca Stronger typing for alleles 2015-03-21 19:03:56 -07:00
mezz 2b2370be43 Remove minor backpack optimization that does not always work correctly. 2015-03-18 22:30:48 -07:00
mezz 0aec8b65e9 Fix #545 Client desync when breaking owned blocks 2015-03-05 22:05:32 -08:00
mezz 3de7766db6 Fix #532 Fix WAILA support. Use the deprecated getPickBlock 2015-03-04 22:48:07 -08:00
mezz 671752d1cf Fix #541 Thermionic Fabricator not giving output items 2015-03-04 22:21:36 -08:00
mezz b42837ef70 Fix #540 Dupe bug with Thermionic Fabricator 2015-03-04 21:08:18 -08:00
mezz f5407f9e88 Fix #537 Shift click goes to first slot instead of existing stack 2015-03-03 00:30:58 -08:00
mezz fc0ef3eef0 replace confusing for loops that have no body 2015-03-03 00:03:06 -08:00
mezz 76ceb7a46c Added clay, stained hardened clay, and packed ice to builder's backpack 2015-03-02 23:55:59 -08:00
mezz d169666f43 Cleanup GuiCatalogue 2015-03-02 23:55:58 -08:00
mezz 5802178bbd Fix #538 Internal error when changing Catalogue page with no trades 2015-03-02 23:55:58 -08:00
mezz d30b2482df Automatic cleanup of formatting 2015-03-02 23:55:58 -08:00
mezz f4e9c61e3a Strict and consistent typing for GUI's Container and Inventory 2015-03-02 23:55:52 -08:00
mezz 7362286ead Fix #531 Combine config item parsing for backpack and flowers 2015-03-01 01:04:07 -08:00
mezz 90b13eac1d Revert "Tidy Configuration.java"
This reverts commit ee114f82ec.
2015-03-01 00:58:45 -08:00
mezz f76af59569 Fix #527 Make Bee House, Apiary and Apiarist's Chest harvest with Axe 2015-03-01 00:05:31 -08:00
mezz 5d12fa7550 Fix #533 Backpack lag when inventory is full and standing on item 2015-02-28 23:41:27 -08:00
mezz 16922e6b99 Improve StackUtils isCraftingEquivalent when using OreDictionary 2015-02-28 23:39:36 -08:00
mezz 46b24745a4 Fix #526 Carpenter NPE when storage is disabled 2015-02-28 20:56:23 -08:00
mezz 4b355a6c4a Fix #528 crash from ItemStack with no item in Alveary 2015-02-28 20:42:06 -08:00
mezz 9efe1a940e Remove redundant method in GuiCarpenter 2015-02-28 20:24:19 -08:00
mezz ee114f82ec Tidy Configuration.java 2015-02-28 20:24:19 -08:00
mezz 12a81c5357 Merge pull request #530 from GenuineSounds/dev
Make backpack config more forgiving.
2015-02-28 20:22:08 -08:00
Brian Wiegand a149a29171 Add CLA Signature. 2015-02-26 17:09:20 -08:00
Brian Wiegand 82556c850e Trim each backpack part before processing.
Adds additional white-space forgiveness for the custom back config entries.
2015-02-26 17:05:30 -08:00
Brian Wiegand e265ffe09e Make backpack config much more forgiving.
Make backpack config much more forgiving of white-space characters in between definitions. Also it will skip entire sections that are empty.

Here are the split pattern results.
https://dl.dropboxusercontent.com/u/79514/Screenshots/Features/Screenshot%202015-02-26%2001.46.29.png
2015-02-26 01:49:49 -08:00
mezz b9b71cf015 Fix #518 Trade station crashes when new station is named after a restart 2015-02-21 00:02:31 -08:00
Nate Ingles 9536bf1b78 Changed baobab, mahogany, and wenge bark textures 2015-02-20 23:39:44 -08:00
mezz 298795690e Fix #517 NPE crash when disabling the storage module 2015-02-18 00:03:56 -08:00
mezz af59a2ad6a Fix #513 pollination issues with meta values and flowerpots 2015-02-17 23:44:20 -08:00
mezz ab0952ac2b Remove unused methods in EngineBronze 2015-02-15 17:58:34 -08:00
mezz 042b36a350 Fix #461 Disable powered machines on a direct redstone signal 2015-02-15 17:58:20 -08:00
mezz 1ac0cf5489 Fix #459 Enable automation of the Thermionic Fabricator 2015-02-15 17:34:22 -08:00
mezz 5f8661a17f #19 use a tick count like Railcraft 2015-02-15 16:40:06 -08:00
mezz 6a607e4551 Fix #510 Fix farmland layout 2015-02-15 16:12:48 -08:00
mezz 172a2c00ac #510, Fix #502. Fix farm error reporting and inventory blanking 2015-02-15 16:12:05 -08:00
mezz 7dff774368 Fix farm reporting wrong location for hasCultivated listeners 2015-02-15 15:05:40 -08:00
mezz 272152d48e Fix #510 Multifarm reports "No farmland" 2015-02-15 15:04:46 -08:00
mezz 2fce803456 #19 use a tick count like Railcraft 2015-02-15 15:04:00 -08:00
mezz a679d46c57 Remove unused methods in TileMachine 2015-02-15 13:41:14 -08:00
Nirek-K 2b4dfcdae3 Add config option to add a chance of additional princess spawn, for skyblock/limited land maps
Minor Cleanup
2015-02-15 13:26:27 -08:00
mezz 786dbd82c7 #19 Spread out tick updates for tile entities 2015-02-08 14:17:21 -08:00
mezz 0848cfb891 Fix #251 overlapping farming areas 2015-02-08 13:29:28 -08:00
mezz 7fc90fb76e #248 Cleanup TileControl 2015-02-08 11:31:03 -08:00
mezz 08741959b3 Use bee temp and humidity tolerance to place hives 2015-02-08 00:04:23 -08:00
mezz 93062955ba Change temperature and humidity tolerance of the basic bee lines 2015-02-08 00:03:33 -08:00
Nirek-K fd41fb9ff7 Add Support for Magical Crops Multifarm support (Wheat(Crop) tube) Fermenter/Squeezer support 2015-02-07 10:35:27 -08:00
mezz a9b90f4fef Fix #499 broken pollination with non-Forestry bees 2015-02-05 20:12:37 -08:00
mezz f5245e766b Fix #499 broken pollination with non-Forestry bees 2015-02-05 20:09:46 -08:00
mezz 4d43e918f1 #19 apply butterfly spawn constraint to the creation of caterpillars too 2015-02-04 01:23:33 -08:00
mezz bf2da35086 #19 prevent bees and butterflies from converting leaves when checking 2015-02-04 01:22:49 -08:00
mezz e0737d2851 #19 Increase cooldown for butterfly pollination and breeding 2015-02-04 01:19:30 -08:00
mezz dceffe23c3 #19 end butterfly lifecycle after a Minecraft week 2015-02-04 01:18:37 -08:00
mezz f6e1147271 Bump unstable branch to version 3.5.0 2015-02-04 00:45:44 -08:00
mezz 7028a17649 Fix #497 Clockwork Engine animations runs forever when it stores energy 2015-02-03 20:46:07 -08:00
mezz b08a618baa Fix #478 Manual peat bog doesn't replace bog earth 2015-02-02 22:01:10 -08:00
mezz 433c516166 Merge pull request #493 from Nirek-K/HC_fixes
Slight Orchard logic fixes
2015-02-02 20:47:36 -08:00
Nirek-K 1ce2d45417 Slight Orchard logic fixes
Slightly increase search grid to include outlying fruit
Don't skip over trunk on first level
2015-02-02 06:55:09 -06:00
mezz b18cee80cb Close #489 Worktable accept items from automation 2015-02-02 00:31:03 -08:00
mezz 62fcb24160 Fix #492 Add electron tube info to tooltip 2015-02-02 00:25:31 -08:00
Nirek-K f6b92ad6ac HarvestCraft Integration part 1
Multifarm support for all plant based crops. Plants/Tree Fruit
ferment-able/squeezable (Add Fluid Vegetable Juice) Seeds squeezable into Seed
Oil Honey squeezable into Honey Beeswax can be made into wax capsules Grain
crops can be used for Compost

HarvestCraft Integration part 2
Add Basic Orchard Tube (Apple Infused)
Supports all trees, bark and fruit-ish
All crops should now be supported
Vegetables produce Vegetable juice and go into the Vegetables tube
Everything else ground based goes to the Wheat(Crop) tube

Lastminute typos are the best.

mezz - Have regular orchard handle HarvestCraft too
2015-02-01 23:43:48 -08:00
Nirek-K c576f745fb Add Cotton to Wheat(Crop)tube. 2015-02-01 19:42:56 -08:00
Nirek-K 870906188c ExUtil support:
New Managed Farm: Ender (Tube:Ender Eye)
Places Endstone, plants Enderlily seeds

Add Config Option.

Add Ender Tube(Ender Eye, 3 End stone, 2 Redstone)

mezz - fixes for extra utilities plugin
2015-02-01 19:37:42 -08:00
mezz 9df241b1ac Fix bee flowerPot growth and fertilization growth 2015-01-30 23:09:34 -08:00
mezz c218d6c9e1 Fix #475 Bees changing blocks via pollination 2015-01-30 21:35:55 -08:00
Nirek-K ee55d90746 Basic BoP Plugin: Add Multifarm support for BoP Trees Add Turnip to Vegetable tube. 2015-01-29 23:39:14 -08:00
Nirek-K 8597d67416 Add missing crated honeycombs, fruit, nuts,vanilla saplings,wood,red sand and podzol
Minor Cleanup
2015-01-29 23:28:38 -08:00
mezz 56dfae034d Fix #480 Increase hive spawn rate 25%, add config option for spawn rate 2015-01-29 00:09:06 -08:00
mezz 636201ce5a Fix #479 Try to make sure hives are always glowing 2015-01-28 23:48:21 -08:00
mezz f6bbf33b7a Fix #483 Catalogue GUI fixes 2015-01-28 22:20:12 -08:00
Nirek-K 9eec976f7b Natura Crates, Compost, Barley Multifarm
Crates for most Natura items.
Barley Compost recipe.
Add barley to the Wheat(Crops) Multifarm tube.
Add Potash Apple to squeezer (Half Apple yield)
2015-01-27 22:50:35 -08:00
mezz 5b8b0c78b0 Close #477 Auto-Format code with new formatting settings 2015-01-26 22:26:21 -08:00
mezz 8e92d16320 #477 Add formatting profile settings 2015-01-26 22:25:02 -08:00
mezz 853d69a0f1 Cleanup of an unchecked List 2015-01-26 21:27:52 -08:00
mezz 97285cfcb2 Fix FlowerType pollination rules 2015-01-25 23:10:41 -08:00
mezz d4f3f0d327 Fix #475 fix leaves not pollinating 2015-01-25 22:59:45 -08:00
mezz 0b71684778 Fix #475 Bee pollination broken 2015-01-25 22:21:58 -08:00
mezz 0f085e0691 Close #463 Bring back and improve the Habitat Locator! 2015-01-25 20:00:19 -08:00
mezz c3f37a379a Fix bee biome temperature check for nether biomes 2015-01-25 19:50:29 -08:00
mezz 5a7bd9f57a Fix crash from missing block when a plugin mod is uninstalled 2015-01-25 18:26:29 -08:00
mezz 7ec3b8bf9b #457 Add config option for village generation (forgot lumberjack) 2015-01-24 00:25:33 -08:00
mezz dab217eab0 Close #457 Add config option for village generation 2015-01-24 00:21:20 -08:00
mezz dffa845851 Fix #470 Engines don't output to other mods' machines 2015-01-23 23:25:57 -08:00
mezz 1aefd5863e Fix #472 Crash with Thaumic Tinkerer Ichorium Axe 2015-01-23 22:57:33 -08:00
mezz 8745f56f8b Merge pull request #471 from Samtrion/dev
Minor Changes/fixes to Flower Registry
2015-01-23 22:31:24 -08:00
mezz 273dae3298 Fix #473 Still wasting fluid at near full output. 2015-01-23 22:28:22 -08:00
samtrion b1b877f530 Minor Changes/fixes
- A cache for flowerType treemaps added
- If a flower is already registered, the lowest weight wins.
2015-01-22 10:03:16 +01:00
mezz 6870dafe02 Add fuel handler info for Forestry wooden slabs #469 2015-01-21 23:59:38 -08:00
mezz b3b1a6a415 Close #441 Add Underground Biomes Constructs integration 2015-01-21 23:36:21 -08:00
mezz 953a84f346 Update lang 2015-01-21 23:19:27 -08:00
mezz 3ac0ac9625 Fix #464 Breaking a farm block shows wrong colored particles 2015-01-19 21:55:33 -08:00
mezz c6dae0318c Fix #467 Carpenter automation 2015-01-19 14:30:28 -08:00
Martin Stühmer 7ace6d7faa Flower Rewrite Based on a weighted distribution system
Create cla-signatures.txt
Fixed code convention in Flower Class
2015-01-19 13:46:38 -08:00
mezz 8eb366997d Minor Cleanup 2015-01-19 11:34:38 -08:00
mezz dc1449855e Fix #465 crash after closing catalogue and opening another item gui 2015-01-19 11:34:18 -08:00
mezz f832025f6d Farm refactor, Fix #187 Multifarms do not give equal space 2015-01-18 14:21:23 -08:00
mezz b36d10308b Let farm break replaceable blocks (such as Railcraft's residual heat) 2015-01-18 14:21:22 -08:00
mezz 195c8fc524 Fix possible reservoir crash from thermionic fabricator 2015-01-18 14:21:21 -08:00
mezz bdd386c431 Add VectUtil for World functions using vects 2015-01-17 15:51:25 -08:00
mezz 1e9952e908 Update for BuildCraft 6.3 2015-01-15 23:03:07 -08:00
mezz 10678d6469 Fix deprecation warnings from Forge 2015-01-15 22:50:33 -08:00
mezz 1601136304 Fix #456 Pipes cannot extract from Farm Hatch 2015-01-15 21:12:23 -08:00
mezz e1758f63cd Fix #455 Item duplicating by letters 2015-01-15 21:02:24 -08:00
mezz f46bcf228c Fix #454 Forestry fences don't connect to fence gates 2015-01-15 20:36:46 -08:00
Nirek-K baa70ece6d Add Fermenter support for Barley, Natura Saplings 2015-01-15 00:24:01 -08:00
mezz 8977d04de0 Fix #446 Special products don't align in beealyzer 2015-01-14 23:37:37 -08:00
mezz 2a35b05ec1 Fix #452 Opening a multiblock inventory momentarily places a block 2015-01-14 23:25:08 -08:00
mezz 122af6d72d Update developer forge 2015-01-14 22:38:37 -08:00
mezz 9cd3b9af5b Fix forced retrogen not disabling itself after being set 2015-01-11 22:36:47 -08:00
mezz 61704192fe Skip hive postGen when in hiveGen debug mode 2015-01-11 20:55:59 -08:00
mezz a3ae2b797f Improve hiveGen debug setting 2015-01-11 20:42:08 -08:00
mezz d94a688f28 Fix #135 Feature for adding Forestry resources to existing chunks 2015-01-11 19:33:37 -08:00
mezz b3fbadce84 Shuffle the order that hives try to generate 2015-01-11 13:57:47 -08:00
mezz 04d6b979ab Clean and simplify the implementation of hives through the API 2015-01-11 01:40:54 -08:00
mezz fae3b3d24e Update development Forge version 2015-01-10 10:37:25 -08:00
mezz 98372c3e08 Fix #445 Beehouse and Apiary do not detect hellish biome 2015-01-09 20:30:00 -08:00
CovertJaguar 0a68dc0307 Issue #431 Work around no longer required, fix merged into Forge 1.7.10-10.13.2.1283 and 1.8-11.14.0.1282 2015-01-09 13:15:31 -08:00
mezz 4c72917c05 Fix #444 Upper half slabs render incorrectly 2015-01-07 20:30:50 -08:00
CovertJaguar b41646540c Issue #431 Restore mezz's original fix, with a TODO comment 2015-01-07 16:01:12 -08:00
CovertJaguar 8dc81b53d6 Improves #431 Calling markBlockForUpdate() on the server is unneccesary, plus other optimizations. 2015-01-07 13:46:30 -08:00
mezz ec111e38c3 #443 Squeezer should not squeeze if it has no room for the liquid 2015-01-07 08:49:24 -08:00
mezz 8edd081de6 Update lang 2015-01-07 08:41:23 -08:00
mezz 852604e9d4 Fix pipette display. Updates icon on click, shows fluid amount tooltip 2015-01-07 07:54:35 -08:00
mezz 58a8b29bbf Minor render optimization for stopped engines 2015-01-07 07:13:18 -08:00
mezz 0fc61f46b0 Allow disabling Factory Module 2015-01-07 07:07:45 -08:00
mezz 92d53626ce Add generation count to bee tooltips for bred bees. 2015-01-05 20:59:56 -08:00
mezz 24ca3d20f3 Fix #436 Tooltip order for trees should match treealyzer order 2015-01-05 20:58:27 -08:00
mezz 080e026285 Fix #433 Stairs have wrong pick-block and Waila name 2015-01-05 20:37:00 -08:00
mezz e5979367ee Fix #431 Leaves become invisible when they start to decay 2015-01-04 22:58:10 -08:00
mezz 960b322e86 Fix #439 Some Drones have GEN tag 2015-01-04 17:39:25 -08:00
mezz d536d5cf46 Fix #437 Warnings from bee villager house construction 2015-01-04 16:46:19 -08:00
mezz 3850b1b172 Fix #435 machines consume thermal expansion tanks on right click 2015-01-03 21:03:05 -08:00
mezz 7981288250 Fix #432 Client crash when crafting fence with new planks 2015-01-02 15:49:32 -08:00
mezz e77f62d8e7 Fix #430 farm hatch should only automatically output downward 2015-01-02 15:30:19 -08:00
mezz 5326e41c9f Fix #417 Villager Beekeeper House Crashes with Arboriculture disabled 2015-01-02 04:01:47 -08:00
mezz f2395d27a8 Close #271. Improve usability of the Escritoire 2015-01-02 02:26:54 -08:00
mezz ca9c99c283 Add info about disabled plugins on crash reports 2015-01-02 00:08:35 -08:00
mezz 8cbb94aed0 Fix #429 Filled capsules are placed in armor slot when inventory is full 2015-01-01 23:13:15 -08:00
mezz e00d96ff08 Fix #428 Electrical Engine shows "no fuel" when inactive 2015-01-01 23:02:18 -08:00
mezz d436657556 Fix #426 Throttle the speed of the Generator accepting liquid containers 2015-01-01 23:01:05 -08:00
mezz f862485a05 Fix #298. xupaosso - Add Ipe, Padauk, Cocobolo, and Zebrawood trees 2015-01-01 19:43:23 -08:00
mezz 9af62513e5 Add grammars for wood products, generalize for new trees 2015-01-01 19:41:07 -08:00
mezz e8fa5ebca9 Fix #423 Mushroom growth crashes in rare cases 2014-12-31 15:30:32 -08:00
mezz a9fbfbbe74 Don't register fluids that are not Forestry's. #420 #422 2014-12-31 05:17:47 -08:00
mezz c54b7c40bb Giant Inventory Refactor 2. Slots will only accept valid items
Moved logic out of Containers, the old filtered slots were not always the same
logic as the IInventory.

Moved ISidedInventory logic up to TileForestry and use InventoryAdapters
to override only the methods we need to.

Tested a ton but there will be some new issues given the scope.
2014-12-31 04:22:33 -08:00
mezz 2b3b590cf4 Close #414 add better shift click for trade station 2014-12-28 18:04:40 -08:00
mezz 291fa98639 Fix #413, Fix access permissions 2014-12-28 16:59:28 -08:00
mezz a2938d8e55 Fix OpenGL stack overflow in worktable 2014-12-28 16:31:54 -08:00
mezz 0d1d8295b4 Fix #411 Trade Station does not show its name in the GUI 2014-12-28 12:56:31 -08:00
mezz daa3ab13be Fix catalog display bug introduced in the previous fix 2014-12-28 00:47:50 -08:00
mezz 17182cc2b2 Fix java.io.EOFException console spam 2014-12-28 00:46:50 -08:00
mezz 8f1b1e03f4 Use EnumChatFormatting values instead of unicode text 2014-12-27 22:00:51 -08:00
mezz d55b119019 Fix #410 Catalogue has glitched text 2014-12-27 21:58:41 -08:00
mezz 00c444a46d Improve GUI ItemStack rendering. Fix tooltip hover area 2014-12-27 20:29:34 -08:00
mezz e780215100 Cleanup 2014-12-27 12:02:13 -08:00
mezz 3c5c624251 Update development Forge (not the required version) 2014-12-26 23:42:13 -08:00
mezz 36508a191a Fix #408 Bronze and Copper storage blocks break into Apatite blocks 2014-12-26 23:40:52 -08:00
mezz 550462221c Cleanup 2014-12-26 23:29:12 -08:00
mezz defbdc8e71 Fix #407 Crash after naming a new Trade Station 2014-12-26 22:24:31 -08:00
mezz 6346039f14 Fix worktable lock icon rendering poorly over enchanted items 2014-12-26 22:14:22 -08:00
mezz d32530caba Fix #409 Custom book duplication on Worktable crashes client 2014-12-26 22:13:47 -08:00
mezz f5a73db68d Minor Cleanup 2014-12-26 21:42:11 -08:00
mezz e23a38e1f1 Fix #393 Farm block icons are sometimes black 2014-12-26 18:06:18 -08:00
mezz 6763619289 Expose crate registration to the API 2014-12-26 02:13:39 -08:00
mezz d652cd7a9b Minor cleanup in MachineCarpenter 2014-12-25 23:54:49 -08:00
mezz 7183d734f0 Close #354 Add Crated Potatoes and Crated Carrots 2014-12-25 23:44:18 -08:00
mezz 7b93aca1e6 Clean up crates code 2014-12-25 23:43:30 -08:00
mezz bcaaf251c6 Fix #397, Fix #404, GUI showing incorrect genetic info 2014-12-25 16:05:28 -08:00
CovertJaguar eefd71ef56 Grab and insert the Buildcraft License file into the jar 2014-12-25 09:26:04 -08:00
mezz f2d315c251 Only need one crate renderer instance 2014-12-25 01:09:13 -08:00
mezz e4b8342e1c Close #392 Generate Crate Icons Automatically 2014-12-25 01:00:13 -08:00
mezz 107047a04c Fix #394. Add shift-for-more-info on long tooltips 2014-12-24 20:48:52 -08:00
mezz 1430becdff Fix #406 locked worktable recipes sometimes become unlocked 2014-12-24 20:21:15 -08:00
mezz 77295ab74e Add better logs for invalid genome errors #400 2014-12-24 20:02:11 -08:00
mezz 68f61ab9ab Fix #405 Alveary should only be made with wooden slabs 2014-12-24 16:11:08 -08:00
mezz 1c6d55931d Fix #399 Middle clicking Forestry slabs gets the wrong slab 2014-12-24 16:04:03 -08:00
mezz 8fe121f8b9 Use HTTPS for git subomdules 2014-12-24 13:42:10 -08:00
CovertJaguar 0fcd151776 Update build.gradle with the submodule changes....clean up api inclusion code (hacks on top of hacks! one hack adds APIs to the jar while another is removing it lol) 2014-12-24 08:07:51 -08:00
CovertJaguar 52994b2a39 Fix Lang submodule default url to use the github protocol. 2014-12-24 08:05:17 -08:00
CovertJaguar 885fc1291e Remove RF API sources from repo 2014-12-24 07:34:16 -08:00
CovertJaguar b23167d468 Readd Forestry API correctly this time. 2014-12-24 07:31:59 -08:00
CovertJaguar 6d7f30ea6b Remove Forestry API again because I derped it up 2014-12-24 07:30:42 -08:00
CovertJaguar 70d8d76934 Readd APIs as submodules 2014-12-24 07:28:20 -08:00
CovertJaguar a449e1b3b2 Remove API from the ignored folders 2014-12-24 07:26:14 -08:00
CovertJaguar ca64f88113 Remove Forestry API in prep for adding RF API as a submodule (changing the directory tree) 2014-12-24 07:21:11 -08:00
CovertJaguar 62261a5b8f TankManager.tankCanDrainFluid() should take the fluid type into account (oops) 2014-12-24 07:10:06 -08:00
mezz 20b2dcf9c3 Clean up Fluids comments. method name setDrink -> setProperties 2014-12-24 01:09:33 -08:00
mezz 98e62aa1e3 Refactor fluids code, create PluginFluids 2014-12-24 01:00:53 -08:00
mezz a4f7e4c583 rename Fluids.get() to Fluids.getFluid() in preparation for refactor 2014-12-24 00:43:22 -08:00
mezz 305be1b979 Convert old honey using the still #390 2014-12-23 13:30:42 -08:00
mezz 43bd276389 Close #390 Forestry Fluids should have FluidBlocks 2014-12-23 01:16:29 -08:00
mezz eb20049b6d Fix #391 Some inventory slots have Xs when they're empty 2014-12-20 21:39:32 -08:00
mezz 4432b0dac4 Fix #395 Crashes without BuildCraft 2014-12-20 21:16:55 -08:00
mezz 8d5b19787e Fix #388 Multifarm not loading its inventory 2014-12-20 15:56:51 -08:00
mezz d705f4f4db Move EnumFarmBlock to its own file 2014-12-20 15:52:48 -08:00
mezz 2f6969e141 Cleanup 2014-12-20 04:18:52 -08:00
mezz 26ff21f446 Fix #387 bee tooltip shows wrong humidity tolerance 2014-12-20 04:06:07 -08:00
mezz 4cfa8f7338 Minor bugfixes 2014-12-20 03:59:47 -08:00
mezz e2fff11ea8 Simple Cleanup 2014-12-20 03:59:31 -08:00
mezz 09df969bcf Fix drawing bee icons in the Imprinter 2014-12-20 03:21:00 -08:00
mezz 483a21cd7d Remove unused imports 2014-12-20 01:07:36 -08:00
mezz 71dcbdf0e4 Fix #385 Server crash when opening AlvearySieve 2014-12-20 00:13:28 -08:00
mezz d63377532c Fix #384 Client crash at forestry.farming.gadgets.TileHatch 2014-12-19 23:40:07 -08:00
mezz 46348fca07 Fix #383 Fermenter crash when opening the gui 2014-12-19 23:25:45 -08:00
mezz 08555326b2 Clean up Bee.java. Split Vect into MutableVect and (immutable) Vect. 2014-12-19 23:16:15 -08:00
mezz 90f80da4da Clean up pollination. Add pollination for vanilla Acacia and Dark Oak 2014-12-18 22:46:54 -08:00
CovertJaguar db0ab5feda Fixes #379 Clean up and fix Naturalist Chest 2014-12-18 06:02:38 -08:00
CovertJaguar 06549d1e2d Fix usage usability checks to account for access setting. 2014-12-18 06:01:42 -08:00
CovertJaguar 8406073107 Fixes #378 Alveary should ensure it has a an inventory before it tries to read item into it. 2014-12-18 01:53:55 -08:00
mezz e55b21028e #232 #373 Stop shipping the BuildCraft API in Jar 2014-12-18 00:29:19 -08:00
mezz a1cf0ddf77 Fix #377 Centrifuge, Peat Engine, Analyzer won't accept items 2014-12-17 23:18:30 -08:00
mezz 2d8cadea26 Fix #376 Farm Hatch does not accept any items 2014-12-17 23:12:13 -08:00
CovertJaguar 4e963ca6e1 Improve ErrorStateRegistry 2014-12-17 00:28:21 -08:00
CovertJaguar 947717873d Fix faulty pipe selection randomizer in moveOneItemToPipe() 2014-12-16 23:44:39 -08:00
mezz 45f167754a Cleanup TODOs 2014-12-16 22:34:43 -08:00
mezz 35afdc66b8 Remove unused config options, fix enableBackpackResupply option 2014-12-16 22:34:43 -08:00
CovertJaguar 89c3fb8bdf Attempt to fix issues with structure inventories.
Also cleaned up the Hatch pipe/inventory interaction code, modernizing it and removing duplicate code.
This involved adding my AdjecentInventoryCache and AdjecentTileCache code from Railcraft for greatly improved performance.
ISpecialInventory is now 100% unused.
2014-12-16 03:09:15 -08:00
CovertJaguar c7d88d73d3 Clean imports 2014-12-15 08:15:21 -08:00
CovertJaguar 344bb7514b Finish Inventory cleanup 2014-12-15 08:09:46 -08:00
CovertJaguar db93c6e930 Merge branch 'dev' into inventory-cleanup
Conflicts:
	src/main/java/forestry/apiculture/gadgets/TileAlvearyHygroregulator.java
	src/main/java/forestry/core/circuits/ItemSolderingIron.java
	src/main/java/forestry/core/gadgets/TileAnalyzer.java
	src/main/java/forestry/energy/gadgets/EngineBronze.java
	src/main/java/forestry/energy/gadgets/MachineGenerator.java
	src/main/java/forestry/factory/gadgets/MachineBottler.java
	src/main/java/forestry/factory/gadgets/MachineCarpenter.java
	src/main/java/forestry/factory/gadgets/MachineFabricator.java
	src/main/java/forestry/factory/gadgets/MachineMoistener.java
	src/main/java/forestry/factory/gadgets/MachineRaintank.java
	src/main/java/forestry/factory/gadgets/MachineSqueezer.java
	src/main/java/forestry/factory/gadgets/MachineStill.java
	src/main/java/forestry/mail/gadgets/MachineTrader.java
2014-12-15 07:56:29 -08:00
CovertJaguar aaa00d0184 For whatever reason the Potion.isBadEffect() reflection was giving me generics related compile errors. This fixes it. 2014-12-15 07:46:28 -08:00
CovertJaguar d4b8c6b503 Bump version 2014-12-15 07:45:25 -08:00
CovertJaguar ccdcce47cc Fixes #369 The Solding Iron and other Cicruit stuff should no longer crash if no layouts are defined.
The fix kind of grew out of control because I had to add a new EnumErrorCode and didn't want to keep breaking the API every time I did that. So I needed to decouple the ErrorStates from EnumErrorCode.
2014-12-15 07:45:10 -08:00
mezz 364ed4cf53 Remove unused defaults 2014-12-14 18:35:14 -08:00
mezz 84da3cc939 Remove ClassMap and EntityNetData 2014-12-14 18:28:38 -08:00
mezz 344e842764 Fix some mail glitches. Check valid addresses for writing letters 2014-12-14 18:07:57 -08:00
mezz 3d4ba15751 Minor Cleanup bee and tree commands 2014-12-14 14:46:25 -08:00
mezz d8beaa92b9 Fix #367 Fix fabricator crash 2014-12-14 13:54:47 -08:00
mezz a68cbc54e7 Fix and migrate Tree commands to new format. Remove CommandMC 2014-12-13 23:38:36 -08:00
mezz a8b7098f39 Implement spawn tree and spawn forest commands 2014-12-13 21:29:55 -08:00
mezz 1b741eaac5 Remove vialEmpty, vialCatalyst 2014-12-13 19:19:49 -08:00
mezz 9cbb6e390b Cleanup, use Fluids enum 2014-12-13 18:58:49 -08:00
mezz c4b3f7e9f1 Only consume fluid containers with null getContainerItem 2014-12-13 18:56:31 -08:00
CovertJaguar 792ab77a48 More Inventory rewrite stuff. 2014-12-13 18:20:52 -08:00
CovertJaguar 3326f4db03 Merge branch 'dev' of github.com:ForestryMC/ForestryMC into inventory-cleanup
Conflicts:
	src/main/java/forestry/apiculture/gadgets/TileAlvearyHygroregulator.java
	src/main/java/forestry/apiculture/gadgets/TileAlvearySwarmer.java
	src/main/java/forestry/core/gui/ContainerForestry.java
	src/main/java/forestry/energy/gadgets/EngineBronze.java
	src/main/java/forestry/energy/gadgets/MachineGenerator.java
	src/main/java/forestry/factory/gadgets/MachineBottler.java
	src/main/java/forestry/factory/gadgets/MachineCarpenter.java
	src/main/java/forestry/factory/gadgets/MachineFabricator.java
	src/main/java/forestry/factory/gadgets/MachineFermenter.java
	src/main/java/forestry/factory/gadgets/MachineMoistener.java
	src/main/java/forestry/factory/gadgets/MachineRaintank.java
	src/main/java/forestry/factory/gadgets/MachineStill.java
	src/main/java/forestry/factory/gadgets/TileWorktable.java
	src/main/java/forestry/farming/gadgets/TileFarmPlain.java
	src/main/java/forestry/farming/gui/ContainerFarm.java
2014-12-13 16:39:40 -08:00
mezz 5ea4770a2d Fix #364. Cleanup of Liquid/Fluid handling, handle IFluidContainerItem 2014-12-13 01:42:52 -08:00
mezz 5c4bd5307c Fix #365 Fluid pipe connected to farmblock 2014-12-12 01:30:51 -08:00
mezz 2242dfdfb9 Cleanup 2014-12-12 00:34:44 -08:00
mezz e26da52d21 Closes #363. Ore dictionary support for IC2's Rubberized Electron Tubes 2014-12-11 22:00:03 -08:00
mezz dbf6202a90 Fix Alveary Swarmer and Swarm Hive 2014-12-09 01:09:10 -08:00
mezz 1d2266a524 update lang 2014-12-09 00:58:59 -08:00
mezz a300e97aa0 Cleanup MachineFabricator 2014-12-08 22:41:37 -08:00
mezz 76fe2b1c90 cleanup 2014-12-08 22:41:36 -08:00
mezz 099f33549b Refactor out worktable canCraftRecipe logic to RecipeUtil 2014-12-08 22:41:36 -08:00
MysteriousAges e281cb4591 Welcoming Miry and Boggy bees! Marshy bees are no longer in a branch all on their lonesome. 2014-12-08 21:42:22 -08:00
MysteriousAges 99f09b4037 Fertile effect should now respect housing territory modifiers. 2014-12-08 21:41:08 -08:00
mezz 23ffb78ab3 Improve null safety of memorized recipe isValid check 2014-12-07 16:23:03 -08:00
mezz 2cb1959421 Add blacklist to worktable memory, blacklist non-empty maps 2014-12-07 16:15:40 -08:00
mezz 7ffb9d5c1d Fix #362 Missing Analyzer Crafting recipe 2014-12-07 12:45:21 -08:00
mezz 029604222c Support left click drag on Worktable 2014-12-07 01:46:15 -08:00
mezz c6f205864f oops 2014-12-06 23:34:40 -08:00
mezz 4cc318bc1d Fix crash when crafting with a Map on a Worktable 2014-12-06 23:31:56 -08:00
mezz c010977a0b Fix #359 Crafting with a worktable does not trigger achievements. 2014-12-06 23:28:05 -08:00
mezz 84e9673454 Fix lang typo: agrarain -> agrarian 2014-12-06 20:01:18 -08:00
mezz 54e4aafc0e Improve bee give command format 2014-12-06 19:54:53 -08:00
mezz 46256bac41 Fix crash from checking Potion.isBadEffect on server 2014-12-06 18:52:32 -08:00
CovertJaguar 4f48cd5890 More progress on inventory rework 2014-12-05 12:43:23 -08:00
CovertJaguar 48d6230ed1 Update lang 2014-12-05 12:43:00 -08:00
CovertJaguar f3895aeaab Merge branch 'dev' into inventory-cleanup 2014-12-04 19:09:37 -08:00
mezz 4c6a461425 Partially Revert "Swapping out deprecated method for non-deprecated call."
This reverts commit fafee34803.

There are 3rd party housings that don't implement the new getErrorState() yet.
We can only get rid of this with the next major API change.
2014-12-04 18:28:39 -08:00
MysteriousAges f6a166c87f Merge pull request #358 from Vexatos/patch-1
Fixed PluginApiculture.java
2014-12-04 10:30:25 -08:00
Vexatos 8be4298ca9 Update PluginApiculture.java 2014-12-04 17:54:33 +01:00
MysteriousAges fafee34803 Swapping out deprecated method for non-deprecated call. 2014-12-04 01:56:43 -08:00
MysteriousAges 4ab3e7ddb4 Merge branch 'dev' of github.com:ForestryMC/ForestryMC into dev 2014-12-04 01:37:01 -08:00
MysteriousAges 8ff72af9d2 Farmerly & Agrarian bees. Buzz buzz 2014-12-04 01:13:29 -08:00
mezz b2d722a4c5 Make Apiarist's Armor protect against potion effects from bees 2014-12-04 00:12:07 -08:00
mezz 475d99eae8 Fix #353 Alveary heater/fan energy consumption, animation 2014-12-03 23:50:39 -08:00
mezz d0244ece32 Fix biome error in Alveary 2014-12-03 23:50:00 -08:00
mezz 4f95ceab29 Cleanup 2014-12-03 22:45:32 -08:00
mezz 0105f36668 Fix #356 Worktable using the wrong wood with Shift-use all 2014-12-03 21:56:41 -08:00
mezz ab3ba0c4db Fix #357 Forestry stained glass not silk touchable 2014-12-03 21:22:21 -08:00
mezz 38009bb32a Safety check for IC2 Plugin. #351 2014-12-03 20:46:10 -08:00
mezz d132a0ae62 Cleanup 2014-12-02 23:23:11 -08:00
mezz d827a0f132 Fix #352 Backpack deletion/duplication bug 2014-12-02 23:22:58 -08:00
mezz 891c0c6133 Add beePrincessGE.name for trader's princess trade for monastic drone 2014-12-02 22:09:53 -08:00
mezz f8a9bf44c3 Suppress unhandled exception warnings 2014-11-30 18:31:42 -08:00
mezz 874a49262d Cleanup *alyzers 2014-11-30 18:31:05 -08:00
CovertJaguar 3636af5b9c More work on inventory stuff, and fix all the broken merge stuff 2014-11-30 17:59:31 -08:00
CovertJaguar 034cdf2860 Intial stages of an cleanup of the inventory code, this commit is very broken. 2014-11-30 17:19:16 -08:00
CovertJaguar 3d765067cf Merge branch 'dev' of github.com:ForestryMC/ForestryMC into dev
Conflicts:
	src/main/java/forestry/core/utils/BlockUtil.java
2014-11-30 16:50:09 -08:00
mezz 9da092e6d4 Fix #347 Squeezer progress bar interferes with tank display 2014-11-30 16:12:03 -08:00
mezz 0b5a5bc34d Fix trade stations failing to initialize because of GameProfile check 2014-11-30 15:26:46 -08:00
mezz c17a6af267 Fix trees growing with wrong wood. relates to #344 2014-11-30 14:44:53 -08:00
mezz 3884fecf77 Minor Cleanup
Fix up some null checks

Clean up redundant array creation to varargs parameter

Remove redundant type casts

Simplify arithmetic

Use foreach loops

Remove unused code

Minor cleanup
2014-11-29 23:49:47 -08:00
mezz 05a7ac6d93 Fix bonemealed pods growing too large 2014-11-29 23:49:42 -08:00
mezz 7f5108f26c Update for BuildCraft 6.2.1. Fix #348 2014-11-29 19:53:40 -08:00
mezz be82dd318b Clean up GuiFlutterlyzer 2014-11-28 18:20:40 -08:00
mezz ce2930b1ab Clean up Treealyzer, fix showing secondary fruits 2014-11-28 18:20:03 -08:00
mezz cc187d6b8b Semi-automatic minor cleanup 2014-11-28 18:09:51 -08:00
mezz 1d2c4e438d cleanup BlockBeehives 2014-11-28 17:49:08 -08:00
mezz be0a62b831 Fix use of GameProfile.equals() 2014-11-28 16:58:53 -08:00
mezz 8b37aa86ff Fix #346. Legacy crash from old Apiarist chest 2014-11-28 16:52:51 -08:00
mezz 9d70a1b0ec Cleanup imports 2014-11-28 16:47:18 -08:00
CovertJaguar 6ea4ab4491 Clean up Engines a bit.
Remove ISpecialInventory implementations on Engines.
Change Engines to IEnergyConnection instead of IEnergyHandler.
2014-11-28 10:36:13 -08:00
CovertJaguar 10a5ba3eb8 Update lang 2014-11-28 10:34:52 -08:00
CovertJaguar 8ce7e49d5f Update dependencies 2014-11-28 10:03:11 -08:00
mezz 34c1956cc1 Fix #345 Pipette not depositing liquid 2014-11-27 23:00:39 -08:00
mezz cfbde3eb83 Minor tree cleanup 2014-11-27 11:42:10 -08:00
mezz 328b9e8356 Fix #344 Teak Trees have Lime wood 2014-11-27 11:41:41 -08:00
mezz 878fe51866 Fix up BuildCraft triggers 2014-11-26 23:40:37 -08:00
mezz efe1236326 Fix #338 Fixed soil detection multifarm trigger 2014-11-26 22:57:06 -08:00
mezz abe0563550 Fix null biome error for multifarms 2014-11-26 22:25:48 -08:00
mezz 14b34e0b01 Fix #343 AbstractMethodError from Command's getRequiredPermissionLevel() 2014-11-26 21:34:56 -08:00
mezz dba8b5448a Use BiomeGenBase instead of biomeID 2014-11-26 21:13:57 -08:00
mezz 91206dce35 Fix #342 Raintank - wrong biome message in correct biomes 2014-11-26 20:08:12 -08:00
mezz 6cdafc05de Fix enum type in ContainerCatalogue 2014-11-22 01:38:48 -08:00
mezz 00924ccd68 Fix checking for fuels 2014-11-22 01:38:43 -08:00
mezz e251d28893 Fix operator precedence error with sending UUIDs 2014-11-22 01:32:27 -08:00
mezz 0ec13d6966 Cleanup: typo variables 2014-11-22 01:31:19 -08:00
mezz 07ba130dc6 Fix #336. infinite loop on server when bee housing is full 2014-11-21 22:00:46 -08:00
mezz 6927c4d5fb Add wildcard for OreDictionary where appropriate 2014-11-20 19:10:10 -08:00
mezz e2144b140b Fix broken API 2014-11-20 19:09:19 -08:00
mezz aab26dca3e bump to fix broken build
api submodule wasn't pushed
2014-11-17 19:37:09 -08:00
CovertJaguar bb5f2b0977 Remove some crashy debug statements from AIButterflyPollinate 2014-11-17 19:12:07 -08:00
mezz eca3be2e63 #232 make BuildCraft @Optional statements more specific 2014-11-16 20:09:28 -08:00
CovertJaguar feef3b8a63 Merge branch 'dev' of github.com:ForestryMC/ForestryMC into dev 2014-11-16 20:06:05 -08:00
CovertJaguar 6e33a55bcb TIL that fake players now implement EntityPlayerMP 2014-11-16 20:05:47 -08:00
mezz 53f512d7aa Improve performance of reading bees from NBT 2014-11-16 20:01:41 -08:00
mezz b6ba59f9f9 Move EnumErrorCode to the API (tick performance) 2014-11-16 20:01:33 -08:00
mezz ae3f75e22a Improve bee logic performance 2014-11-16 16:14:41 -08:00
MysteriousAges 9dd73935d7 Refactoring BeekeepingLogic's monolithic update(). Down from 200+ lines to 20, and a buttload of functions. Hopefully it's a bit easier to read & understand now.
Tabs.
Switched order of hasQueen/tryBreedingPrincess to ensure that princesses are bred into queens.
2014-11-16 15:17:15 -08:00
mezz b69897ff3d Fix #326. Don't pollinate decorative vanilla leaves 2014-11-16 15:00:04 -08:00
mezz 4da4a7cf56 Fix hives dropping ignoble drones (which shouldn't exist) 2014-11-16 13:32:35 -08:00
mezz 9ddb43e388 Fix watered farms not replacing flowing water 2014-11-15 15:08:09 -08:00
mezz ead6b2c9b9 #282 Make tree farms pick up entities up to the world height. 2014-11-15 14:43:09 -08:00
mezz 25a88df47c #232 use @Optional for BuildCraft triggers 2014-11-15 14:21:33 -08:00
CovertJaguar 968ad8189e Update lang 2014-11-15 04:08:33 -08:00
CovertJaguar aba03f6364 Merge pull request #330 from ForestryMC/beekeepingCommands
update beekeeping commands
2014-11-15 00:39:49 -08:00
mezz 70e8654adb update beekeeping commands 2014-11-14 22:53:46 -08:00
CovertJaguar 8fe22130d3 Use ChastStyle instead of formatting codes 2014-11-13 04:33:41 -08:00
CovertJaguar 79c7ae435c Convert Mail Commands.
And various other improvements to the command code and localization support.
2014-11-13 04:25:10 -08:00
CovertJaguar 6a3d92e825 Add license header file, for IDE use. 2014-11-13 02:36:38 -08:00
CovertJaguar c2acb36c44 I really need to tell my IDE to use Forestry's file header for this project, not Railcraft's.... 2014-11-13 02:22:40 -08:00
CovertJaguar 4609ebc754 Major Butterfly AI rework, they should be less derpy about getting stuck in holes and flying over oceans.
Various other tweaks and improvements as well, including a fix for the spazzy wing movement that 1.7 introduced.
2014-11-13 02:14:17 -08:00
CovertJaguar aea3c55192 Update Buildcraft to 6.1.7 2014-11-13 02:11:03 -08:00
CovertJaguar e7ae15c81d Merge branch 'dev' of github.com:ForestryMC/ForestryMC into dev 2014-11-12 03:53:40 -08:00
CovertJaguar 4a390fe967 Creates a new command framework that supports trees of commands simply and easily.
Depreciated CommandMC. Many commands remain to be converted to the new system.
Added a butterfly kill command.
2014-11-12 03:53:01 -08:00
CovertJaguar 2132c4457d Apply formatting to Butterfly classes 2014-11-12 03:24:07 -08:00
mezz 267905ef3f Fix #326 decorative leaves should not pollinate 2014-11-11 19:54:34 -08:00
mezz e528609212 Minor code cleanup 2014-11-11 19:07:47 -08:00
mezz 6fb07b9d40 Fix #325 Centrifuge dupe bug 2014-11-11 19:07:27 -08:00
mezz d385a25efa Fix Fermenter error state and hasWork 2014-11-06 19:18:33 -08:00
mezz 5f52cf54cb Add icon for "no power" error state 2014-11-06 19:04:07 -08:00
mezz acb85e75ef Add "No Power" error state to multifarm 2014-11-05 23:03:13 -08:00
mezz 220ce0b6a2 Add "No Power" error state to multifarm 2014-11-05 23:00:44 -08:00
mezz 63ec46d830 Close #312, use BuildCraft's IHasWork instead of TriggerHasWork 2014-11-05 22:51:10 -08:00
mezz 06907ae3d4 Fix engineTin constantly switching error states 2014-11-05 22:51:10 -08:00
mezz cb805e3a22 Fix TileAnalyzer's error state checking and display 2014-11-05 22:51:10 -08:00
mezz 393bd691d8 Fix crash from TriggerLowLiquid 2014-11-05 22:51:09 -08:00
mezz 3a5275396b Add "No Power" error state 2014-11-05 22:51:04 -08:00
mezz 7d72a60f9b Make unpowered machines not inherit from TilePowered 2014-11-05 21:50:14 -08:00
mezz 32313cfe6a #309 Convert MJ to RF for BuildCraft plugin 2014-11-04 21:08:13 -08:00
mezz 9f0084c1b7 Optimize NBT species retrieval from ItemStacks 2014-11-03 23:02:08 -08:00
mezz 13d89fc347 Give fireproof genes a name 2014-11-03 21:33:16 -08:00
mezz 8bf9184ba4 Fix #313: Genome NBT errors 2014-11-03 21:32:49 -08:00
mezz 5487aba3a2 Close #287. Add fireproof logs and planks, and recipes 2014-11-03 00:30:19 -08:00
mezz 66a74703f8 #287 Add fireproof gene to trees 2014-11-03 00:28:14 -08:00
mezz c9bd15a20d Close #84. Fix #302. Fix #309. Update BuildCraft API to 6.1.x 2014-11-02 15:00:28 -08:00
mezz 486b7a8f80 Fix low paper trigger message 2014-11-02 15:00:28 -08:00
mezz bc2e27e495 Bump to trigger a build on jenkins (it was down) 2014-11-02 11:26:15 -08:00
mezz e028428a67 Fix Tropical Hive generation 2014-11-01 21:37:11 -07:00
mezz a9b72c85bd Fix #306: Raintank fills in Desert biome 2014-10-29 22:04:21 -07:00
mezz 247cb0b336 #300: Fix leaf tick frequency to match BlockTreeContainer 2014-10-26 23:09:21 -07:00
mezz 50a155aa2a Fix #300: Fruits on leaves do not ripen 2014-10-26 22:20:51 -07:00
mezz f47d349056 Fix #303: Default Farm Logic disappears with smaller circuits 2014-10-26 21:03:08 -07:00
mezz 4c52620f0f use foreach 2014-10-26 21:02:39 -07:00
mezz f4121b0849 Fix Lang submodule 2014-10-26 20:58:55 -07:00
MysteriousAges f0dedf56a5 Adding storage blocks for Apatite, Copper, Tin and Bronze. 2014-10-24 20:01:43 -07:00
MysteriousAges 71b0a7bc1d Adding storage block textures. 2014-10-24 18:52:38 -07:00
MysteriousAges c8fd93873a Storage block textures - Apatite, Bronze, Copper, Tin. 2014-10-23 17:42:20 -07:00
mezz d1baa7d69c Fix crash from addon circuits 2014-10-20 22:22:09 -07:00
mezz 8c19ba73cb Change warning about MCPC+ to Cauldron 2014-10-20 20:34:17 -07:00
mezz 7d373ad75b Formatting cleanup in MailAddress 2014-10-17 00:10:36 -07:00
mezz 5960f800e7 Fix #288 The MultiFarm won't place dirt 2014-10-16 22:46:37 -07:00
mezz eb4fcf3267 Exclude old language files from jars 2014-10-12 23:50:15 -07:00
mezz 1f9d4badc3 Losslessly compress all png assets with PNGGauntlet 2014-10-12 23:40:07 -07:00
mezz b60b5c1251 Fix #283 Crash from Disabling Arboriculture 2014-10-11 16:52:10 -07:00
mezz d7dc7a8c69 Re-add deprecated backpack method to stop outdated mods from crashing 2014-10-11 16:37:18 -07:00
mezz 5e9cc9e2b1 Fix #280, crash on viewing the name of research notes from 1.6.4 2014-10-10 00:25:20 -07:00
CovertJaguar 4fcb9cb221 Update README.md 2014-10-08 18:22:09 -07:00
CovertJaguar 1e4db46584 Update README.md 2014-10-08 18:21:42 -07:00
CovertJaguar eb102ac7d7 Bump version 2014-10-08 15:46:13 -07:00
mezz 01388ca02e Remove root api package-info that duplicates ForestryAPI|core 2014-10-08 14:12:51 -07:00
mezz 2792eda133 Fix #277. Remove minimum input energy requirement for machines 2014-10-08 13:56:03 -07:00
CovertJaguar 7fbdb8b670 Update lang 2014-10-08 08:31:23 -07:00
CovertJaguar ef3a62a9e7 Add some sanity checks to the Sapling1 pickBlock() function.
Closes #276
2014-10-08 08:18:46 -07:00
mezz cbf8822d1e Add sand to farm breakable-ground whitelist 2014-10-08 03:22:52 -07:00
mezz ec088976cb Update CONTRIBUTING.md to include bug reports 2014-10-08 02:39:41 -07:00
mezz 704acf008c Have farms do a block update when setting new ground 2014-10-07 01:17:54 -07:00
mezz 3bb0acc04c Prevent farms from accidentally destroying anything but farmland. 2014-10-07 01:10:45 -07:00
CovertJaguar 7ae094ab72 There is a function for that. 2014-10-06 15:14:14 -07:00
mezz 911aa8ca5c Fix #272. Allow every kind of log to be smelted into charcoal 2014-10-06 14:18:46 -07:00
CovertJaguar 9a1888e85c Update application.properties 2014-10-06 08:47:42 -07:00
mezz 955ae9640a Make ItemScoop an ItemForestryTool and work in Adventure Mode 2014-10-05 21:12:06 -07:00
mezz d510e121eb Fix #268 saplings not being picked up by large farms 2014-10-05 05:46:55 -07:00
mezz 46c4c65488 Put harvested farm resources back in the resources slot 2014-10-05 04:29:15 -07:00
mezz 087780fbf8 Farms treat any ground block that isn't their ground as waste 2014-10-05 04:29:14 -07:00
mezz 46f5b2fb46 First steps to being able to disable the Lepidopterology module 2014-10-04 21:56:26 -07:00
mezz 056dc75fab #252 Add debug.conf with option to generate hives everywhere 2014-10-04 03:27:57 -07:00
mezz 814e48ba5a Better temperature control for spawning beehives 2014-10-04 03:03:26 -07:00
mezz ebcdf7fbf5 Use strings to register hives in HiveManager 2014-10-04 00:44:03 -07:00
mezz 625b5038a5 Fix #262 crash from squeezer 2014-10-03 20:55:42 -07:00
mezz 9ec59e9dcd Stop hives being placed sunken into grass 2014-10-03 20:43:11 -07:00
mezz 4600180cb7 fix some build.gradle warnings 2014-10-03 16:02:10 -07:00
mezz 1f2c32669e Fix #265, Fix #264. Stop modest hive spawning in nether, stop high cpu 2014-10-03 16:01:46 -07:00
mezz 4b2336bae2 #260 Expose basic hive gen in the API 2014-10-03 02:08:41 -07:00
mezz 8816a5fea8 #252 Improve hive worldgen. Works with more biome variations 2014-10-02 03:38:26 -07:00
mezz f8ff6f9ea4 Fix crashes when disabling apiculture module 2014-10-01 22:28:21 -07:00
mezz c0ba391f4f Rename plain pollen to pollenCluster internally 2014-10-01 20:40:15 -07:00
mezz bbcfa7bf2b Fix #258 crash when disabling storage module 2014-10-01 19:44:10 -07:00
CovertJaguar 270147ce36 Add a build qualifer to the version string 2014-09-30 18:42:33 -07:00
mezz dd4529aa75 #255 Add custom localization for worker speed tooltip 2014-09-29 21:32:56 -07:00
mezz a50198dd3d #255 fix temperature and humidity tolerance localization 2014-09-29 17:09:57 -07:00
mezz 6bcd77ceff #255 fix missing translations for bee effects 2014-09-29 16:30:15 -07:00
mezz 83d545e3c7 automatic spaces to tabs 2014-09-29 16:23:47 -07:00
mezz 974ce7ea65 Close #247 Custom names for adjectives 2014-09-29 01:36:19 -07:00
mezz fe5d14643b move "for." prefix into StringUtil.canTranslate 2014-09-29 01:14:11 -07:00
mezz 548823813f Added StringUtil.canTranslate 2014-09-28 23:48:34 -07:00
mezz cfd60a9610 Fix #250. Make getPlayer return fake player when missing profile 2014-09-28 21:56:13 -07:00
mezz a8583bfbfd removed isClientPlayer from MailAddress 2014-09-28 21:54:30 -07:00
mezz f02426b219 Make peat farm replace farmland 2014-09-28 18:57:33 -07:00
mezz d7aae80bdd Made codechicken fully optional, not included in jars. 2014-09-28 18:35:49 -07:00
mezz e75afa927f Fix CircuitFarmLogic 2014-09-28 17:28:44 -07:00
CovertJaguar 6c0dc4a5d9 Merge pull request #249 from MineMaarten/patch-1
Update CircuitFarmLogic.java
2014-09-28 08:50:51 -07:00
MineMaarten 9acb76a676 Update CircuitFarmLogic.java
I've created a custom farm logic for my seeds, but it just implements IFarmLogic, and doesn't extend FarmLogic (as that isn't available from the API), causing a ClassCastException. This would resolve that issue.
2014-09-28 16:27:27 +02:00
mezz 5fb04e4467 #246 Exclude codechicken from build jars 2014-09-27 16:52:58 -07:00
mezz c43d057339 #245 Add localized plugin description comments to modules.cfg too 2014-09-27 12:50:24 -07:00
mezz ccd91f91d5 Fix #245: Localize plugin descriptions 2014-09-27 12:46:54 -07:00
mezz cea331470e Moved all electric engine circuits and generator fuel to PluginIC2 2014-09-27 11:44:00 -07:00
mezz d2960b19be Fix #243. Add smelting recipe for apatite 2014-09-27 10:14:52 -07:00
mezz bb708797ba Fix xp for smelting 2014-09-27 10:06:20 -07:00
CovertJaguar c1b29f5c20 Make Analyzer Machine require power and accept Honey Drops 2014-09-26 23:17:07 -07:00
2717 changed files with 142316 additions and 84976 deletions

No files matched your search

+2
View File
@@ -0,0 +1,2 @@
# Ignore spotlessApply reformat
94aa9346b1811eff7e67820b75d5098e3f83448d
+44
View File
@@ -0,0 +1,44 @@
* text eol=lf
*.[jJ][aA][rR] binary
*.[pP][nN][gG] binary
*.[jJ][pP][gG] binary
*.[jJ][pP][eE][gG] binary
*.[gG][iI][fF] binary
*.[tT][iI][fF] binary
*.[tT][iI][fF][fF] binary
*.[iI][cC][oO] binary
*.[sS][vV][gG] text
*.[eE][pP][sS] binary
*.[xX][cC][fF] binary
*.[kK][aA][rR] binary
*.[mM]4[aA] binary
*.[mM][iI][dD] binary
*.[mM][iI][dD][iI] binary
*.[mM][pP]3 binary
*.[oO][gG][gG] binary
*.[rR][aA] binary
*.7[zZ] binary
*.[gG][zZ] binary
*.[tT][aA][rR] binary
*.[tT][gG][zZ] binary
*.[zZ][iI][pP] binary
*.[tT][cC][nN] binary
*.[sS][oO] binary
*.[dD][lL][lL] binary
*.[dD][yY][lL][iI][bB] binary
*.[pP][sS][dD] binary
*.[tT][tT][fF] binary
*.[oO][tT][fF] binary
*.[pP][aA][tT][cC][hH] -text
*.[bB][aA][tT] text eol=crlf
*.[cC][mM][dD] text eol=crlf
*.[pP][sS]1 text eol=crlf
*[aA][uU][tT][oO][gG][eE][nN][eE][rR][aA][tT][eE][dD]* binary
+13
View File
@@ -0,0 +1,13 @@
name: Build and test
on:
pull_request:
branches: [ master, main, release/** ]
push:
branches: [ master, main, release/** ]
jobs:
build-and-test:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/build-and-test.yml@master
secrets: inherit
+17
View File
@@ -0,0 +1,17 @@
name: Optimize images
on:
pull_request:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
push:
branches: [ master, main, release/** ]
paths:
- "**/*.png"
jobs:
optimize-images:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/optimize-images.yml@master
secrets: inherit
+14
View File
@@ -0,0 +1,14 @@
name: Release tagged build
on:
push:
tags: [ '*' ]
permissions:
contents: write
jobs:
release-tags:
uses: GTNewHorizons/GTNH-Actions-Workflows/.github/workflows/release-tags.yml@master
secrets: inherit
+33 -20
View File
@@ -1,20 +1,33 @@
# everything
/*
# folders
!/forestry_techne
!/gradle/wrapper
!/src
# files
!/.gitignore
!/.gitmodules
!/CLA.txt
!/CONTRIBUTING.md
!/LICENSE.txt
!/README.md
!/application.properties
!/build.gradle
!/build.xml
!/gradlew
!/gradlew.bat
.gradle
.settings
/.idea/
/.vscode/
/run/
/build/
/eclipse/
.classpath
.project
/bin/
/config/
/crash-reports/
/logs/
options.txt
/saves/
usernamecache.json
banned-ips.json
banned-players.json
eula.txt
ops.json
server.properties
servers.dat
usercache.json
whitelist.json
/out/
*.iml
*.ipr
*.iws
src/main/resources/mixins.*.json
*.bat
*.DS_Store
!gradlew.bat
layout.json
-6
View File
@@ -1,6 +0,0 @@
[submodule "lang"]
path = lang
url = https://github.com/ForestryMC/Forestry-Localization.git
[submodule "api"]
path = api
url = https://github.com/ForestryMC/ForestryAPI.git
+48
View File
@@ -0,0 +1,48 @@
# ForestryMC
Changelog of ForestryMC.
### [#8 Fix NPE on crafting in worktable](https://github.com/GTNewHorizons/ForestryMC/pull/8)
**Merge pull request #8 from GTNewHorizons/worktable-npe**
* Fix NPE on crafting in worktable
[4c7c7c34388aebd](https://github.com/GTNewHorizons/ForestryMC/commit/4c7c7c34388aebd)
by Martin Robertz *2021-04-06 15:05:20*
### No issue
**Fix NPE on crafting in worktable**
[621208393e64d97](https://github.com/GTNewHorizons/ForestryMC/commit/621208393e64d97)
by Glease *2021-04-06 14:46:39*
### [#6 Ic2 crop module](https://github.com/GTNewHorizons/ForestryMC/pull/6)
**Ic2 crop module (#6)**
* Added IC2-Crop-Module
* Changed Lang repo
* updated lang submodule
[d2545b7a5990cf2](https://github.com/GTNewHorizons/ForestryMC/commit/d2545b7a5990cf2)
by bartimaeusnek *2020-12-24 20:15:03*
### [#7 Dirty fix for BQ3 crafting quest not triggering](https://github.com/GTNewHorizons/ForestryMC/pull/7)
**Merge pull request #7 from GTNewHorizons/bq3_compat**
* Dirty fix for BQ3 crafting quest not triggering
[d0254997472c5be](https://github.com/GTNewHorizons/ForestryMC/commit/d0254997472c5be)
by Martin Robertz *2021-01-22 16:15:58*
### No issue
**bump version**
[98c0b66b6fbe598](https://github.com/GTNewHorizons/ForestryMC/commit/98c0b66b6fbe598)
by DreamMasterXXL *2021-01-29 19:11:09*
**Merge branch 'IC2-Crop-Module' into GTNH-Fixes**
[5b61261d69d541b](https://github.com/GTNewHorizons/ForestryMC/commit/5b61261d69d541b)
by DreamMasterXXL *2021-01-29 19:05:41*
**Dirty fix for BQ3 crafting quest not triggering**
[7320ddb44f63bfd](https://github.com/GTNewHorizons/ForestryMC/commit/7320ddb44f63bfd)
by Glease *2021-01-22 14:41:32*
Executable → Regular
View File
File mode changed.
+3
View File
@@ -0,0 +1,3 @@
# Any Github changes require admin approval
/.github/** @GTNewHorizons/admin
-16
View File
@@ -1,16 +0,0 @@
How to contribute to Forestry
====================================
### Contributor License Agreement
Before pull requests can be accepted, the contributor needs to sign a contributor license agreement. (Essentially giving a license for using his code and/or media and for re-licensing it, for details read the agreement linked below.)
### How do I sign?
To keep the hassle for everyone involved to a minimum, Forestry uses CLAHub to manage the agreements. To get started, <a href="https://www.clahub.com/agreements/ForestryMC/ForestryMC">sign the Contributor License Agreement</a>.
### Why is this needed?
Without CLAs it at some point becomes essentially impossible to change the license of a project which accepts contributions from third parties. Without an explicit agreement every contributor would still own the copyright to his code. So as long as it (or parts of it) remain in the code base, he would have to agree to every license change. If enough time has passed, there may be dozens, perhaps even hundreds of contributors involved and it will be very hard to track down each and every one of them and get them to agree on a new license.
This would make it impossible to change the license to a more permissive one at a later date, so the code would be locked into CC BY-NC-ND 3.0 until it passes into the public domain about a hundred years from now. This situation is to be avoided and that’s why you are being bothered with this CLA.
Executable → Regular
+1 -676
View File
@@ -1,7 +1,7 @@
GNU LESSER GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Copyright (C) 2007 Free Software Foundation, Inc. <https://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -163,678 +163,3 @@ whether future versions of the GNU Lesser General Public License shall
apply, that proxy's public statement of acceptance of any version is
permanent authorization for you to choose that version for the
Library.
GNU GENERAL PUBLIC LICENSE
Version 3, 29 June 2007
Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The GNU General Public License is a free, copyleft license for
software and other kinds of works.
The licenses for most software and other practical works are designed
to take away your freedom to share and change the works. By contrast,
the GNU General Public License is intended to guarantee your freedom to
share and change all versions of a program--to make sure it remains free
software for all its users. We, the Free Software Foundation, use the
GNU General Public License for most of our software; it applies also to
any other work released this way by its authors. You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
them if you wish), that you receive source code or can get it if you
want it, that you can change the software or use pieces of it in new
free programs, and that you know you can do these things.
To protect your rights, we need to prevent others from denying you
these rights or asking you to surrender the rights. Therefore, you have
certain responsibilities if you distribute copies of the software, or if
you modify it: responsibilities to respect the freedom of others.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must pass on to the recipients the same
freedoms that you received. You must make sure that they, too, receive
or can get the source code. And you must show them these terms so they
know their rights.
Developers that use the GNU GPL protect your rights with two steps:
(1) assert copyright on the software, and (2) offer you this License
giving you legal permission to copy, distribute and/or modify it.
For the developers' and authors' protection, the GPL clearly explains
that there is no warranty for this free software. For both users' and
authors' sake, the GPL requires that modified versions be marked as
changed, so that their problems will not be attributed erroneously to
authors of previous versions.
Some devices are designed to deny users access to install or run
modified versions of the software inside them, although the manufacturer
can do so. This is fundamentally incompatible with the aim of
protecting users' freedom to change the software. The systematic
pattern of such abuse occurs in the area of products for individuals to
use, which is precisely where it is most unacceptable. Therefore, we
have designed this version of the GPL to prohibit the practice for those
products. If such problems arise substantially in other domains, we
stand ready to extend this provision to those domains in future versions
of the GPL, as needed to protect the freedom of users.
Finally, every program is threatened constantly by software patents.
States should not allow patents to restrict development and use of
software on general-purpose computers, but in those that do, we wish to
avoid the special danger that patents applied to a free program could
make it effectively proprietary. To prevent this, the GPL assures that
patents cannot be used to render the program non-free.
The precise terms and conditions for copying, distribution and
modification follow.
TERMS AND CONDITIONS
0. Definitions.
"This License" refers to version 3 of the GNU General Public License.
"Copyright" also means copyright-like laws that apply to other kinds of
works, such as semiconductor masks.
"The Program" refers to any copyrightable work licensed under this
License. Each licensee is addressed as "you". "Licensees" and
"recipients" may be individuals or organizations.
To "modify" a work means to copy from or adapt all or part of the work
in a fashion requiring copyright permission, other than the making of an
exact copy. The resulting work is called a "modified version" of the
earlier work or a work "based on" the earlier work.
A "covered work" means either the unmodified Program or a work based
on the Program.
To "propagate" a work means to do anything with it that, without
permission, would make you directly or secondarily liable for
infringement under applicable copyright law, except executing it on a
computer or modifying a private copy. Propagation includes copying,
distribution (with or without modification), making available to the
public, and in some countries other activities as well.
To "convey" a work means any kind of propagation that enables other
parties to make or receive copies. Mere interaction with a user through
a computer network, with no transfer of a copy, is not conveying.
An interactive user interface displays "Appropriate Legal Notices"
to the extent that it includes a convenient and prominently visible
feature that (1) displays an appropriate copyright notice, and (2)
tells the user that there is no warranty for the work (except to the
extent that warranties are provided), that licensees may convey the
work under this License, and how to view a copy of this License. If
the interface presents a list of user commands or options, such as a
menu, a prominent item in the list meets this criterion.
1. Source Code.
The "source code" for a work means the preferred form of the work
for making modifications to it. "Object code" means any non-source
form of a work.
A "Standard Interface" means an interface that either is an official
standard defined by a recognized standards body, or, in the case of
interfaces specified for a particular programming language, one that
is widely used among developers working in that language.
The "System Libraries" of an executable work include anything, other
than the work as a whole, that (a) is included in the normal form of
packaging a Major Component, but which is not part of that Major
Component, and (b) serves only to enable use of the work with that
Major Component, or to implement a Standard Interface for which an
implementation is available to the public in source code form. A
"Major Component", in this context, means a major essential component
(kernel, window system, and so on) of the specific operating system
(if any) on which the executable work runs, or a compiler used to
produce the work, or an object code interpreter used to run it.
The "Corresponding Source" for a work in object code form means all
the source code needed to generate, install, and (for an executable
work) run the object code and to modify the work, including scripts to
control those activities. However, it does not include the work's
System Libraries, or general-purpose tools or generally available free
programs which are used unmodified in performing those activities but
which are not part of the work. For example, Corresponding Source
includes interface definition files associated with source files for
the work, and the source code for shared libraries and dynamically
linked subprograms that the work is specifically designed to require,
such as by intimate data communication or control flow between those
subprograms and other parts of the work.
The Corresponding Source need not include anything that users
can regenerate automatically from other parts of the Corresponding
Source.
The Corresponding Source for a work in source code form is that
same work.
2. Basic Permissions.
All rights granted under this License are granted for the term of
copyright on the Program, and are irrevocable provided the stated
conditions are met. This License explicitly affirms your unlimited
permission to run the unmodified Program. The output from running a
covered work is covered by this License only if the output, given its
content, constitutes a covered work. This License acknowledges your
rights of fair use or other equivalent, as provided by copyright law.
You may make, run and propagate covered works that you do not
convey, without conditions so long as your license otherwise remains
in force. You may convey covered works to others for the sole purpose
of having them make modifications exclusively for you, or provide you
with facilities for running those works, provided that you comply with
the terms of this License in conveying all material for which you do
not control copyright. Those thus making or running the covered works
for you must do so exclusively on your behalf, under your direction
and control, on terms that prohibit them from making any copies of
your copyrighted material outside their relationship with you.
Conveying under any other circumstances is permitted solely under
the conditions stated below. Sublicensing is not allowed; section 10
makes it unnecessary.
3. Protecting Users' Legal Rights From Anti-Circumvention Law.
No covered work shall be deemed part of an effective technological
measure under any applicable law fulfilling obligations under article
11 of the WIPO copyright treaty adopted on 20 December 1996, or
similar laws prohibiting or restricting circumvention of such
measures.
When you convey a covered work, you waive any legal power to forbid
circumvention of technological measures to the extent such circumvention
is effected by exercising rights under this License with respect to
the covered work, and you disclaim any intention to limit operation or
modification of the work as a means of enforcing, against the work's
users, your or third parties' legal rights to forbid circumvention of
technological measures.
4. Conveying Verbatim Copies.
You may convey verbatim copies of the Program's source code as you
receive it, in any medium, provided that you conspicuously and
appropriately publish on each copy an appropriate copyright notice;
keep intact all notices stating that this License and any
non-permissive terms added in accord with section 7 apply to the code;
keep intact all notices of the absence of any warranty; and give all
recipients a copy of this License along with the Program.
You may charge any price or no price for each copy that you convey,
and you may offer support or warranty protection for a fee.
5. Conveying Modified Source Versions.
You may convey a work based on the Program, or the modifications to
produce it from the Program, in the form of source code under the
terms of section 4, provided that you also meet all of these conditions:
a) The work must carry prominent notices stating that you modified
it, and giving a relevant date.
b) The work must carry prominent notices stating that it is
released under this License and any conditions added under section
7. This requirement modifies the requirement in section 4 to
"keep intact all notices".
c) You must license the entire work, as a whole, under this
License to anyone who comes into possession of a copy. This
License will therefore apply, along with any applicable section 7
additional terms, to the whole of the work, and all its parts,
regardless of how they are packaged. This License gives no
permission to license the work in any other way, but it does not
invalidate such permission if you have separately received it.
d) If the work has interactive user interfaces, each must display
Appropriate Legal Notices; however, if the Program has interactive
interfaces that do not display Appropriate Legal Notices, your
work need not make them do so.
A compilation of a covered work with other separate and independent
works, which are not by their nature extensions of the covered work,
and which are not combined with it such as to form a larger program,
in or on a volume of a storage or distribution medium, is called an
"aggregate" if the compilation and its resulting copyright are not
used to limit the access or legal rights of the compilation's users
beyond what the individual works permit. Inclusion of a covered work
in an aggregate does not cause this License to apply to the other
parts of the aggregate.
6. Conveying Non-Source Forms.
You may convey a covered work in object code form under the terms
of sections 4 and 5, provided that you also convey the
machine-readable Corresponding Source under the terms of this License,
in one of these ways:
a) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by the
Corresponding Source fixed on a durable physical medium
customarily used for software interchange.
b) Convey the object code in, or embodied in, a physical product
(including a physical distribution medium), accompanied by a
written offer, valid for at least three years and valid for as
long as you offer spare parts or customer support for that product
model, to give anyone who possesses the object code either (1) a
copy of the Corresponding Source for all the software in the
product that is covered by this License, on a durable physical
medium customarily used for software interchange, for a price no
more than your reasonable cost of physically performing this
conveying of source, or (2) access to copy the
Corresponding Source from a network server at no charge.
c) Convey individual copies of the object code with a copy of the
written offer to provide the Corresponding Source. This
alternative is allowed only occasionally and noncommercially, and
only if you received the object code with such an offer, in accord
with subsection 6b.
d) Convey the object code by offering access from a designated
place (gratis or for a charge), and offer equivalent access to the
Corresponding Source in the same way through the same place at no
further charge. You need not require recipients to copy the
Corresponding Source along with the object code. If the place to
copy the object code is a network server, the Corresponding Source
may be on a different server (operated by you or a third party)
that supports equivalent copying facilities, provided you maintain
clear directions next to the object code saying where to find the
Corresponding Source. Regardless of what server hosts the
Corresponding Source, you remain obligated to ensure that it is
available for as long as needed to satisfy these requirements.
e) Convey the object code using peer-to-peer transmission, provided
you inform other peers where the object code and Corresponding
Source of the work are being offered to the general public at no
charge under subsection 6d.
A separable portion of the object code, whose source code is excluded
from the Corresponding Source as a System Library, need not be
included in conveying the object code work.
A "User Product" is either (1) a "consumer product", which means any
tangible personal property which is normally used for personal, family,
or household purposes, or (2) anything designed or sold for incorporation
into a dwelling. In determining whether a product is a consumer product,
doubtful cases shall be resolved in favor of coverage. For a particular
product received by a particular user, "normally used" refers to a
typical or common use of that class of product, regardless of the status
of the particular user or of the way in which the particular user
actually uses, or expects or is expected to use, the product. A product
is a consumer product regardless of whether the product has substantial
commercial, industrial or non-consumer uses, unless such uses represent
the only significant mode of use of the product.
"Installation Information" for a User Product means any methods,
procedures, authorization keys, or other information required to install
and execute modified versions of a covered work in that User Product from
a modified version of its Corresponding Source. The information must
suffice to ensure that the continued functioning of the modified object
code is in no case prevented or interfered with solely because
modification has been made.
If you convey an object code work under this section in, or with, or
specifically for use in, a User Product, and the conveying occurs as
part of a transaction in which the right of possession and use of the
User Product is transferred to the recipient in perpetuity or for a
fixed term (regardless of how the transaction is characterized), the
Corresponding Source conveyed under this section must be accompanied
by the Installation Information. But this requirement does not apply
if neither you nor any third party retains the ability to install
modified object code on the User Product (for example, the work has
been installed in ROM).
The requirement to provide Installation Information does not include a
requirement to continue to provide support service, warranty, or updates
for a work that has been modified or installed by the recipient, or for
the User Product in which it has been modified or installed. Access to a
network may be denied when the modification itself materially and
adversely affects the operation of the network or violates the rules and
protocols for communication across the network.
Corresponding Source conveyed, and Installation Information provided,
in accord with this section must be in a format that is publicly
documented (and with an implementation available to the public in
source code form), and must require no special password or key for
unpacking, reading or copying.
7. Additional Terms.
"Additional permissions" are terms that supplement the terms of this
License by making exceptions from one or more of its conditions.
Additional permissions that are applicable to the entire Program shall
be treated as though they were included in this License, to the extent
that they are valid under applicable law. If additional permissions
apply only to part of the Program, that part may be used separately
under those permissions, but the entire Program remains governed by
this License without regard to the additional permissions.
When you convey a copy of a covered work, you may at your option
remove any additional permissions from that copy, or from any part of
it. (Additional permissions may be written to require their own
removal in certain cases when you modify the work.) You may place
additional permissions on material, added by you to a covered work,
for which you have or can give appropriate copyright permission.
Notwithstanding any other provision of this License, for material you
add to a covered work, you may (if authorized by the copyright holders of
that material) supplement the terms of this License with terms:
a) Disclaiming warranty or limiting liability differently from the
terms of sections 15 and 16 of this License; or
b) Requiring preservation of specified reasonable legal notices or
author attributions in that material or in the Appropriate Legal
Notices displayed by works containing it; or
c) Prohibiting misrepresentation of the origin of that material, or
requiring that modified versions of such material be marked in
reasonable ways as different from the original version; or
d) Limiting the use for publicity purposes of names of licensors or
authors of the material; or
e) Declining to grant rights under trademark law for use of some
trade names, trademarks, or service marks; or
f) Requiring indemnification of licensors and authors of that
material by anyone who conveys the material (or modified versions of
it) with contractual assumptions of liability to the recipient, for
any liability that these contractual assumptions directly impose on
those licensors and authors.
All other non-permissive additional terms are considered "further
restrictions" within the meaning of section 10. If the Program as you
received it, or any part of it, contains a notice stating that it is
governed by this License along with a term that is a further
restriction, you may remove that term. If a license document contains
a further restriction but permits relicensing or conveying under this
License, you may add to a covered work material governed by the terms
of that license document, provided that the further restriction does
not survive such relicensing or conveying.
If you add terms to a covered work in accord with this section, you
must place, in the relevant source files, a statement of the
additional terms that apply to those files, or a notice indicating
where to find the applicable terms.
Additional terms, permissive or non-permissive, may be stated in the
form of a separately written license, or stated as exceptions;
the above requirements apply either way.
8. Termination.
You may not propagate or modify a covered work except as expressly
provided under this License. Any attempt otherwise to propagate or
modify it is void, and will automatically terminate your rights under
this License (including any patent licenses granted under the third
paragraph of section 11).
However, if you cease all violation of this License, then your
license from a particular copyright holder is reinstated (a)
provisionally, unless and until the copyright holder explicitly and
finally terminates your license, and (b) permanently, if the copyright
holder fails to notify you of the violation by some reasonable means
prior to 60 days after the cessation.
Moreover, your license from a particular copyright holder is
reinstated permanently if the copyright holder notifies you of the
violation by some reasonable means, this is the first time you have
received notice of violation of this License (for any work) from that
copyright holder, and you cure the violation prior to 30 days after
your receipt of the notice.
Termination of your rights under this section does not terminate the
licenses of parties who have received copies or rights from you under
this License. If your rights have been terminated and not permanently
reinstated, you do not qualify to receive new licenses for the same
material under section 10.
9. Acceptance Not Required for Having Copies.
You are not required to accept this License in order to receive or
run a copy of the Program. Ancillary propagation of a covered work
occurring solely as a consequence of using peer-to-peer transmission
to receive a copy likewise does not require acceptance. However,
nothing other than this License grants you permission to propagate or
modify any covered work. These actions infringe copyright if you do
not accept this License. Therefore, by modifying or propagating a
covered work, you indicate your acceptance of this License to do so.
10. Automatic Licensing of Downstream Recipients.
Each time you convey a covered work, the recipient automatically
receives a license from the original licensors, to run, modify and
propagate that work, subject to this License. You are not responsible
for enforcing compliance by third parties with this License.
An "entity transaction" is a transaction transferring control of an
organization, or substantially all assets of one, or subdividing an
organization, or merging organizations. If propagation of a covered
work results from an entity transaction, each party to that
transaction who receives a copy of the work also receives whatever
licenses to the work the party's predecessor in interest had or could
give under the previous paragraph, plus a right to possession of the
Corresponding Source of the work from the predecessor in interest, if
the predecessor has it or can get it with reasonable efforts.
You may not impose any further restrictions on the exercise of the
rights granted or affirmed under this License. For example, you may
not impose a license fee, royalty, or other charge for exercise of
rights granted under this License, and you may not initiate litigation
(including a cross-claim or counterclaim in a lawsuit) alleging that
any patent claim is infringed by making, using, selling, offering for
sale, or importing the Program or any portion of it.
11. Patents.
A "contributor" is a copyright holder who authorizes use under this
License of the Program or a work on which the Program is based. The
work thus licensed is called the contributor's "contributor version".
A contributor's "essential patent claims" are all patent claims
owned or controlled by the contributor, whether already acquired or
hereafter acquired, that would be infringed by some manner, permitted
by this License, of making, using, or selling its contributor version,
but do not include claims that would be infringed only as a
consequence of further modification of the contributor version. For
purposes of this definition, "control" includes the right to grant
patent sublicenses in a manner consistent with the requirements of
this License.
Each contributor grants you a non-exclusive, worldwide, royalty-free
patent license under the contributor's essential patent claims, to
make, use, sell, offer for sale, import and otherwise run, modify and
propagate the contents of its contributor version.
In the following three paragraphs, a "patent license" is any express
agreement or commitment, however denominated, not to enforce a patent
(such as an express permission to practice a patent or covenant not to
sue for patent infringement). To "grant" such a patent license to a
party means to make such an agreement or commitment not to enforce a
patent against the party.
If you convey a covered work, knowingly relying on a patent license,
and the Corresponding Source of the work is not available for anyone
to copy, free of charge and under the terms of this License, through a
publicly available network server or other readily accessible means,
then you must either (1) cause the Corresponding Source to be so
available, or (2) arrange to deprive yourself of the benefit of the
patent license for this particular work, or (3) arrange, in a manner
consistent with the requirements of this License, to extend the patent
license to downstream recipients. "Knowingly relying" means you have
actual knowledge that, but for the patent license, your conveying the
covered work in a country, or your recipient's use of the covered work
in a country, would infringe one or more identifiable patents in that
country that you have reason to believe are valid.
If, pursuant to or in connection with a single transaction or
arrangement, you convey, or propagate by procuring conveyance of, a
covered work, and grant a patent license to some of the parties
receiving the covered work authorizing them to use, propagate, modify
or convey a specific copy of the covered work, then the patent license
you grant is automatically extended to all recipients of the covered
work and works based on it.
A patent license is "discriminatory" if it does not include within
the scope of its coverage, prohibits the exercise of, or is
conditioned on the non-exercise of one or more of the rights that are
specifically granted under this License. You may not convey a covered
work if you are a party to an arrangement with a third party that is
in the business of distributing software, under which you make payment
to the third party based on the extent of your activity of conveying
the work, and under which the third party grants, to any of the
parties who would receive the covered work from you, a discriminatory
patent license (a) in connection with copies of the covered work
conveyed by you (or copies made from those copies), or (b) primarily
for and in connection with specific products or compilations that
contain the covered work, unless you entered into that arrangement,
or that patent license was granted, prior to 28 March 2007.
Nothing in this License shall be construed as excluding or limiting
any implied license or other defenses to infringement that may
otherwise be available to you under applicable patent law.
12. No Surrender of Others' Freedom.
If conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot convey a
covered work so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you may
not convey it at all. For example, if you agree to terms that obligate you
to collect a royalty for further conveying from those to whom you convey
the Program, the only way you could satisfy both those terms and this
License would be to refrain entirely from conveying the Program.
13. Use with the GNU Affero General Public License.
Notwithstanding any other provision of this License, you have
permission to link or combine any covered work with a work licensed
under version 3 of the GNU Affero General Public License into a single
combined work, and to convey the resulting work. The terms of this
License will continue to apply to the part which is the covered work,
but the special requirements of the GNU Affero General Public License,
section 13, concerning interaction through a network will apply to the
combination as such.
14. Revised Versions of this License.
The Free Software Foundation may publish revised and/or new versions of
the GNU General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the
Program specifies that a certain numbered version of the GNU General
Public License "or any later version" applies to it, you have the
option of following the terms and conditions either of that numbered
version or of any later version published by the Free Software
Foundation. If the Program does not specify a version number of the
GNU General Public License, you may choose any version ever published
by the Free Software Foundation.
If the Program specifies that a proxy can decide which future
versions of the GNU General Public License can be used, that proxy's
public statement of acceptance of a version permanently authorizes you
to choose that version for the Program.
Later license versions may give you additional or different
permissions. However, no additional obligations are imposed on any
author or copyright holder as a result of your choosing to follow a
later version.
15. Disclaimer of Warranty.
THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY
OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO,
THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM
IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF
ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
16. Limitation of Liability.
IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY
GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE
USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF
DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS),
EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF
SUCH DAMAGES.
17. Interpretation of Sections 15 and 16.
If the disclaimer of warranty and limitation of liability provided
above cannot be given local legal effect according to their terms,
reviewing courts shall apply local law that most closely approximates
an absolute waiver of all civil liability in connection with the
Program, unless a warranty or assumption of liability accompanies a
copy of the Program in return for a fee.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
state the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program. If not, see <http://www.gnu.org/licenses/>.
Also add information on how to contact you by electronic and paper mail.
If the program does terminal interaction, make it output a short
notice like this when it starts in an interactive mode:
<program> Copyright (C) <year> <name of author>
This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, your program's commands
might be different; for a GUI interface, you would use an "about box".
You should also get your employer (if you work as a programmer) or school,
if any, to sign a "copyright disclaimer" for the program, if necessary.
For more information on this, and how to apply and follow the GNU GPL, see
<http://www.gnu.org/licenses/>.
The GNU General Public License does not permit incorporating your program
into proprietary programs. If your program is a subroutine library, you
may consider it more useful to permit linking proprietary applications with
the library. If this is what you want to do, use the GNU Lesser General
Public License instead of this License. But first, please read
<http://www.gnu.org/philosophy/why-not-lgpl.html>.
Executable → Regular
+2 -10
View File
@@ -3,15 +3,9 @@ Forestry
### What is it?
This is the GTNH fork of Forestry for 1.7.10. Do not report any issues to the original Forestry team. This fork is maintained by the GTNH team and is not supported by the original Forestry team.
Forestry is a modification for the game Minecraft and known primarily for its farms and bees.
### Homepage
[Wiki](http://forestry.sengir.net/)
[Latest Builds for 1.7.10](http://jenkins.ic2.player.to/job/Forestry/)
[IRC #forestry on esper.net](http://webchat.esper.net/?nick=ForestryGithub...&channels=forestry&prompt=1)
### Building
@@ -29,8 +23,6 @@ Beware of ugly code.
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.
**If you submit a PR you must accept the [Contributor License Agreement](https://www.clahub.com/agreements/ForestryMC/ForestryMC). There is no way around that, since otherwise changing the license later - even to something more permissive! - , becomes close to impossible.**
### License & Copyright
Forestry is (c) 2011 - 2014 SirSengir and licensed under LGPL v3. See the LICENSE.txt for all the gory details or go to http://www.gnu.org/licenses/lgpl-3.0.txt for more information. Forestry also contains code contributed by CovertJaguar, Player, MysteriousAges, Binnie, RichardG, cpw and others.
Forestry is (c) 2011 - 2014 SirSengir and licensed under LGPL v3. See the LICENSE.txt for all the gory details or go to http://www.gnu.org/licenses/lgpl-3.0.txt for more information. Forestry also contains code contributed by CovertJaguar, Player, MysteriousAges, Binnie, RichardG, cpw, the GTNH Team, and others.
Submodule api deleted from b3c8d281a3.
-6
View File
@@ -1,6 +0,0 @@
mcversion=1.7.10
forgeversion=10.13.0.1207
version_major=3
version_minor=1
version_patch=1
Executable → Regular
+4 -342
View File
@@ -1,343 +1,5 @@
buildscript {
repositories {
mavenCentral()
maven {
name = "forge"
url = "http://files.minecraftforge.net/maven"
}
maven {
name = "sonatype"
url = "https://oss.sonatype.org/content/repositories/snapshots/"
}
}
dependencies {
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
// https://github.com/ajoberstar/gradle-git
classpath 'org.ajoberstar:gradle-git:0.8.0'
}
//version: 1707058017
plugins {
id 'com.gtnewhorizons.gtnhconvention'
}
apply plugin: 'forge'
apply plugin: 'maven'
loadProperties()
version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
if (project.hasProperty('buildQualifier')) {
version = project.version + '-' + project.buildQualifier
}
group= "net.sengir.forestry" // http://maven.apache.org/guides/mini/guide-naming-conventions.html
archivesBaseName = "forestry_" + mcversion
ext.dirDest = './build/dist'
ext.dirLang = "./lang"
ext.dirApi = "./api"
ext.CraftGuideRepo = "https://github.com/Uristqwerty/CraftGuide.git"
ext.CraftGuideTmp = "build/tmp/CraftGuide"
minecraft {
version = mcversion + "-" + forgeversion
runDir = "run"
replace '@VERSION@', project.version
replace '@BUILD_NUMBER@', getBuildNumber()
}
sourceSets {
api {
java {
srcDir CraftGuideTmp + "/src"
include '**/CraftGuide/api/**'
}
}
main {
java {
srcDir project.dirApi
}
resources {
srcDir project.dirLang
}
}
}
repositories {
maven {
name = "ic2"
url = "http://maven.ic2.player.to/"
}
}
configurations {
apis
compile.extendsFrom apis
}
dependencies {
compile 'net.industrial-craft:industrialcraft-2:2.2.575-experimental:api'
apis 'com.mod-buildcraft:buildcraft:6.0.18:dev'
}
processResources {
// this will ensure that this task is redone when the versions change.
inputs.property "version", project.version
inputs.property "mcversion", project.minecraft.version
// replace stuff in mcmod.info, nothing else
from(sourceSets.main.resources.srcDirs) {
include 'mcmod.info'
// replace version and mcversion
expand 'version':project.version, 'mcversion':project.minecraft.version
}
// copy everything else, thats not the mcmod.info
from(sourceSets.main.resources.srcDirs) {
exclude 'mcmod.info'
exclude '**/*.md'
}
}
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}"
}
}
task echoVersion << {
printNextVersion()
}
def saveVersion() {
ant.propertyfile(
file: "application.properties") {
entry( key:"version_major", type:"int", value: version_major)
entry( key:"version_minor", type:"int", value: version_minor)
entry( key:"version_patch", type:"int", value: version_patch)
}
project.version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
printNextVersion()
}
def printNextVersion() {
println '*************************************************************'
println 'The next build will be version: ' + project.version
println '*************************************************************'
}
task bumpMajor << {
project.version_major = Integer.parseInt(project.version_major) + 1
project.version_minor = "0"
project.version_patch = "0"
saveVersion()
}
task bumpMinor << {
project.version_minor = Integer.parseInt(project.version_minor) + 1
project.version_patch = "0"
saveVersion()
}
task bumpPatch << {
project.version_patch = Integer.parseInt(project.version_patch) + 1
saveVersion()
}
task initCraftGuide << {
def localRepo = file(CraftGuideTmp)
if (localRepo.exists()) {
println 'Updating CraftGuide repo'
def grgit = org.ajoberstar.grgit.Grgit.open(localRepo)
grgit.pull()
grgit.close()
} else {
println 'Cloning CraftGuide repo'
def grgit = org.ajoberstar.grgit.Grgit.clone(dir: localRepo, uri: CraftGuideRepo)
grgit.close()
}
}
jar {
destinationDir = file("build/tmp")
archiveName = "main.jar"
from {
configurations.apis.collect {
it.isDirectory() ? it : zipTree(it).matching {
include '**/api/**'
}
}
}
}
task mainJarSigned ( type: Jar, dependsOn: 'reobf' ) {
from (zipTree(jar.getArchivePath())) {
exclude '**/api/**'
exclude '**/codechicken/**'
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
destinationDir = file("build/tmp")
archiveName = "signed.jar"
doLast {
if (project.hasProperty('signingKeystore')) {
ant.signjar(jar: getArchivePath(),
alias: signingAlias,
keystore: signingKeystore,
storepass: signingStorepass)
} else {
println 'Signing disabled, gradle.properties is missing.'
}
}
}
task mainJar ( type: Zip, dependsOn: mainJarSigned ) {
from (zipTree(mainJarSigned.getArchivePath())) {
include '**'
}
from (zipTree(jar.getArchivePath())) {
include '**'
exclude '**/codechicken/**'
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
destinationDir = file(dirDest)
includeEmptyDirs = false
extension = 'jar'
}
task devJarSigned ( type: Jar, dependsOn: 'classes' ) {
from(sourceSets.main.output) {
exclude '**/api/**'
exclude '**/codechicken/**'
}
destinationDir = file("build/tmp")
archiveName = "signed-dev.jar"
doLast {
if (project.hasProperty('signingKeystore')) {
ant.signjar(jar: getArchivePath(),
alias: signingAlias,
keystore: signingKeystore,
storepass: signingStorepass)
} else {
println 'Signing disabled, gradle.properties is missing.'
}
}
}
task devJar ( type: Zip, dependsOn: devJarSigned ) {
from (zipTree(devJarSigned.getArchivePath())) {
include '**'
}
from(sourceSets.main.allSource) {
include '**'
exclude '**/codechicken/**'
}
from(sourceSets.main.output) {
include '**'
exclude '**/codechicken/**'
}
from {
configurations.apis.collect {
it.isDirectory() ? it : zipTree(it).matching {
include '**/api/**'
}
}
}
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
destinationDir = file(dirDest)
extension = 'jar'
classifier = 'dev'
}
task apiJar(type: Jar, dependsOn: 'classes') {
from (dirApi) {
include '**'
}
from (sourceSets.main.output) {
include 'forestry/api/**'
}
destinationDir = file(dirDest)
extension = 'jar'
classifier = 'api'
}
task release(dependsOn: [apiJar, devJar, mainJar]) {
doLast {
println '*************************************************************'
println 'This build will be version: ' + project.version
println '*************************************************************'
}
}
afterEvaluate {
compileApiJava.dependsOn initCraftGuide
}
artifacts {
archives apiJar
archives devJar
}
uploadArchives {
repositories {
if (project.hasProperty('mavenDir')) {
mavenDeployer {
repository(url: "file://"+mavenDir)
addFilter('api') { artifact, file ->
file == apiJar.archivePath
}
addFilter('dev') { artifact, file ->
file == devJar.archivePath
}
}
} else {
println 'Archives upload disabled, gradle.properties is missing.'
}
}
}
def loadProperties() {
println('loading application.properties')
file("application.properties").withReader { reader ->
def userProps = new Properties()
userProps.load(reader)
for (Map.Entry property in userProps) {
project.ext[property.getKey()] = property.getValue()
}
}
}
def getBuildNumber() {
return "$System.env.BUILD_NUMBER" != "null" ? "$System.env.BUILD_NUMBER" : "0"
}
+6
View File
@@ -0,0 +1,6 @@
Account;Email;Date;
samtrion;[email protected];2015-01-18
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
+13
View File
@@ -0,0 +1,13 @@
// Add your dependencies here
dependencies {
api("com.github.GTNewHorizons:GTNHLib:0.9.54:dev")
api('curse.maven:cofh-lib-220333:2388748')
compileOnlyApi('com.github.GTNewHorizons:Angelica:2.1.19:api')
devOnlyNonPublishable('com.github.GTNewHorizons:NotEnoughItems:2.8.107-GTNH:dev')
compileOnly('com.github.GTNewHorizons:inventory-tweaks:1.7.1:api')
compileOnly('com.github.GTNewHorizons:BuildCraft:7.1.57:api')
compileOnly('net.industrial-craft:industrialcraft-2:2.2.828-experimental:dev')
compileOnly('curse.maven:craftguide-75557:2459320')
devOnlyNonPublishable('net.xonich.mc:NoHotbarNeeded:0.0.3:dev')
}
+238
View File
@@ -0,0 +1,238 @@
# ExampleMod tag to use as Blowdryer (Spotless, etc.) settings version, leave empty to disable.
# LOCAL to test local config updates.
gtnh.settings.blowdryerTag = 0.2.0
# Human-readable mod name, available for mcmod.info population.
modName = Forestry
# Case-sensitive identifier string, available for mcmod.info population and used for automatic mixin JSON generation.
# Conventionally lowercase.
modId = Forestry
# Root package of the mod, used to find various classes in other properties,
# mcmod.info substitution, enabling assertions in run tasks, etc.
modGroup = forestry
# Whether to use modGroup as the maven publishing group.
# When false, com.github.GTNewHorizons is used.
useModGroupForPublishing = false
# Updates your build.gradle and settings.gradle automatically whenever an update is available.
autoUpdateBuildScript = false
# Version of Minecraft to target
minecraftVersion = 1.7.10
# Version of Minecraft Forge to target
forgeVersion = 10.13.4.1614
# Specify an MCP channel for dependency deobfuscation and the deobfParams task.
channel = stable
# Specify an MCP mappings version for dependency deobfuscation and the deobfParams task.
mappingsVersion = 12
# Defines other MCP mappings for dependency deobfuscation.
remoteMappings = https\://raw.githubusercontent.com/MinecraftForge/FML/1.7.10/conf/
# Select a default username for testing your mod. You can always override this per-run by running
# `./gradlew runClient --username=AnotherPlayer`, or configuring this command in your IDE.
developmentEnvironmentUserName = Developer
# Enables modern Java syntax support. Valid values:
# - false: No modern syntax, Java 8 only
# - jabel: Jabel syntax-only support, compiles to J8 bytecode
# - jvmDowngrader: Full modern Java via JVM Downgrader (syntax + stdlib APIs)
# - modern: Native modern Java bytecode, no downgrading
enableModernJavaSyntax = jabel
# If set, ignores the above setting and compiles with the given toolchain. This may cause unexpected issues,
# and should *not* be used in most situations. -1 disables this.
# forceToolchainVersion = -1
# Target JVM version for JVM Downgrader bytecode downgrading.
# Only used when enableModernJavaSyntax = jvmDowngrader
# downgradeTargetVersion = 8
# Comma-separated list of Java versions for multi-release jar support (JVM Downgrader only).
# Classes will be available in META-INF/versions/N/ for each version N in this list.
# Default: "21,25" (J25+ gets native classes, J21-24 gets partial downgrade, J8-20 gets full downgrade).
# jvmDowngraderMultiReleaseVersions = 21,25
# Specifies how JVM Downgrader API stubs are provided. Options:
# - shade: Shade minimized stubs into the jar
# - gtnhlib: GTNHLib provides stubs at runtime (adds version constraint)
# - external: Another dependency provides stubs (no constraint, no warning)
# - (empty): Warning reminding you to configure stubs
# Note: 'shade' option requires you to verify license compliance, see: https://github.com/unimined/JvmDowngrader/blob/main/LICENSE.md
# jvmDowngraderStubsProvider =
# Enables injecting missing generics into the decompiled source code for a better coding experience.
# Turns most publicly visible List, Map, etc. into proper List<E>, Map<K, V> types.
enableGenericInjection = true
# Generate a class with a String field for the mod version named as defined below.
# If generateGradleTokenClass is empty or not missing, no such class will be generated.
# If gradleTokenVersion is empty or missing, the field will not be present in the class.
generateGradleTokenClass = forestry.Tags
# Name of the token containing the project's current version to generate/replace.
gradleTokenVersion = VERSION
# [DEPRECATED] Mod ID replacement token.
gradleTokenModId =
# [DEPRECATED] Mod name replacement token.
gradleTokenModName =
# [DEPRECATED] Mod Group replacement token.
gradleTokenGroupName =
# [DEPRECATED]
# Multiple source files can be defined here by providing a comma-separated list: Class1.java,Class2.java,Class3.java
# public static final String VERSION = "GRADLETOKEN_VERSION";
# The string's content will be replaced with your mod's version when compiled. You should use this to specify your mod's
# version in @Mod([...], version = VERSION, [...]).
# Leave these properties empty to skip individual token replacements.
replaceGradleTokenInFile =
# In case your mod provides an API for other mods to implement you may declare its package here. Otherwise, you can
# leave this property empty.
# Example value: (apiPackage = api) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.api
apiPackage = api
# Specify the configuration file for Forge's access transformers here. It must be placed into /src/main/resources/META-INF/
# There can be multiple files in a space-separated list.
# Example value: mymodid_at.cfg nei_at.cfg
accessTransformersFile = forestry_at.cfg
# Provides setup for Mixins if enabled. If you don't know what mixins are: Keep it disabled!
usesMixins = false
# Set to a non-empty string to configure mixins in a separate source set under src/VALUE, instead of src/main.
# This can speed up compile times thanks to not running the mixin annotation processor on all input sources.
# Mixin classes will have access to "main" classes, but not the other way around.
separateMixinSourceSet =
# Adds some debug arguments like verbose output and class export.
usesMixinDebug = false
# Specify the location of your implementation of IMixinConfigPlugin. Leave it empty otherwise.
mixinPlugin =
# Specify the package that contains all of your Mixins. The package must exist or
# the build will fail. If you have a package property defined in your mixins.<modid>.json,
# it must match with this or the build will fail.
mixinsPackage =
# Specify the core mod entry class if you use a core mod. This class must implement IFMLLoadingPlugin!
# This parameter is for legacy compatibility only
# Example value: (coreModClass = asm.FMLPlugin) + (modGroup = com.myname.mymodid) -> com.myname.mymodid.asm.FMLPlugin
coreModClass =
# If your project is only a consolidation of mixins or a core mod and does NOT contain a 'normal' mod ( = some class
# that is annotated with @Mod) you want this to be true. When in doubt: leave it on false!
containsMixinsAndOrCoreModOnly = false
# Enables Mixins even if this mod doesn't use them, useful if one of the dependencies uses mixins.
forceEnableMixins = false
# If enabled, you may use 'shadowCompile' for dependencies. They will be integrated into your jar. It is your
# responsibility to check the license and request permission for distribution if required.
usesShadowedDependencies = false
# If disabled, won't remove unused classes from shadowed dependencies. Some libraries use reflection to access
# their own classes, making the minimization unreliable.
minimizeShadowedDependencies = true
# If disabled, won't rename the shadowed classes.
relocateShadowedDependencies = true
# Adds CurseMaven, Modrinth, and some more well-known 1.7.10 repositories.
includeWellKnownRepositories = true
# A list of repositories to exclude from the includeWellKnownRepositories setting. Should be a space separated
# list of strings, with the acceptable keys being(case does not matter):
# cursemaven
# modrinth
excludeWellKnownRepositories =
# Change these to your Maven coordinates if you want to publish to a custom Maven repository instead of the default GTNH Maven.
# Authenticate with the MAVEN_USER and MAVEN_PASSWORD environment variables.
# If you need a more complex setup disable maven publishing here and add a publishing repository to addon.gradle.
usesMavenPublishing = true
# Maven repository to publish the mod to.
# mavenPublishUrl = https\://nexus.gtnewhorizons.com/repository/releases/
# Publishing to Modrinth requires you to set the MODRINTH_TOKEN environment variable to your current Modrinth API token.
#
# The project's ID on Modrinth. Can be either the slug or the ID.
# Leave this empty if you don't want to publish to Modrinth.
modrinthProjectId =
# The project's relations on Modrinth. You can use this to refer to other projects on Modrinth.
# Syntax: scope1-type1:name1;scope2-type2:name2;...
# Where scope can be one of [required, optional, incompatible, embedded],
# type can be one of [project, version],
# and the name is the Modrinth project or version slug/id of the other mod.
# Example: required-project:fplib;optional-project:gasstation;incompatible-project:gregtech
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
modrinthRelations =
# Publishing to CurseForge requires you to set the CURSEFORGE_TOKEN environment variable to one of your CurseForge API tokens.
#
# The project's numeric ID on CurseForge. You can find this in the About Project box.
# Leave this empty if you don't want to publish on CurseForge.
curseForgeProjectId =
# The project's relations on CurseForge. You can use this to refer to other projects on CurseForge.
# Syntax: type1:name1;type2:name2;...
# Where type can be one of [requiredDependency, embeddedLibrary, optionalDependency, tool, incompatible],
# and the name is the CurseForge project slug of the other mod.
# Example: requiredDependency:railcraft;embeddedLibrary:cofhlib;incompatible:buildcraft
# Note: UniMixins is automatically set as a required dependency if usesMixins = true.
curseForgeRelations =
# Optional parameter to customize the produced artifacts. Use this to preserve artifact naming when migrating older
# projects. New projects should not use this parameter.
# customArchiveBaseName =
# Optional parameter to customize the default working directory used by the runClient* tasks. Relative to the project directory.
# runClientWorkingDirectory = run/client
# Optional parameter to customize the default working directory used by the runServer* tasks. Relative to the project directory.
# runServerWorkingDirectory = run/server
# Optional parameter to have the build automatically fail if an illegal version is used.
# This can be useful if you e.g. only want to allow versions in the form of '1.1.xxx'.
# The check is ONLY performed if the version is a git tag.
# Note: the specified string must be escaped, so e.g. 1\\.1\\.\\d+ instead of 1\.1\.\d+
# versionPattern =
# Uncomment to prevent the source code from being published.
# noPublishedSources = true
# Uncomment this to disable Spotless checks.
# This should only be uncommented to keep it easier to sync with upstream/other forks.
# That is, if there is no other active fork/upstream, NEVER change this.
# disableSpotless = true
# Uncomment this to disable Checkstyle checks (currently wildcard import check).
# disableCheckstyle = true
# Override the IDEA build type. Valid values are: "" (leave blank, do not override), "idea" (force use native IDEA build), "gradle"
# (force use delegated build).
# This is meant to be set in $HOME/.gradle/gradle.properties.
# e.g. add "systemProp.org.gradle.project.ideaOverrideBuildType=idea" will override the build type to be native build.
# WARNING: If you do use this option, it will overwrite whatever you have in your existing projects. This might not be what you want!
# Usually there is no need to uncomment this here as other developers do not necessarily use the same build type as you.
# ideaOverrideBuildType = idea
# Whether IDEA should run spotless checks when pressing the Build button.
# This is meant to be set in $HOME/.gradle/gradle.properties.
# ideaCheckSpotlessOnBuild = true
# Non-GTNH properties
org.gradle.configuration-cache = true
org.gradle.parallel = true
+12
View File
@@ -0,0 +1,12 @@
#This file is generated by updateDaemonJvm
toolchainUrl.FREE_BSD.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.FREE_BSD.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.LINUX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.LINUX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.MAC_OS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/c2dd35c9d0aaf0ba6ad0791320f99dfc/redirect
toolchainUrl.MAC_OS.X86_64=https\://api.foojay.io/disco/v3.0/ids/e5810bd7fd1f8a586644409d395a7e55/redirect
toolchainUrl.UNIX.AARCH64=https\://api.foojay.io/disco/v3.0/ids/1630f7ebef05444cb27a2709ea0249b3/redirect
toolchainUrl.UNIX.X86_64=https\://api.foojay.io/disco/v3.0/ids/fa1e318c287360478e3c83a9a3ef1007/redirect
toolchainUrl.WINDOWS.AARCH64=https\://api.foojay.io/disco/v3.0/ids/7b3c4877c0749019e6805bb61e421497/redirect
toolchainUrl.WINDOWS.X86_64=https\://api.foojay.io/disco/v3.0/ids/8e1d9ee5d0f13e442218f6884a306da1/redirect
toolchainVersion=25
Binary file not shown.
+3 -2
View File
@@ -1,6 +1,7 @@
#Wed Jul 02 15:54:47 CDT 2014
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-9.4.0-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-2.0-bin.zip
Vendored
+202 -118
View File
@@ -1,79 +1,128 @@
#!/usr/bin/env bash
#!/bin/sh
#
# Copyright © 2015 the original authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0
#
##############################################################################
##
## Gradle start up script for UN*X
##
#
# Gradle start up script for POSIX generated by Gradle.
#
# Important for running:
#
# (1) You need a POSIX-compliant shell to run this script. If your /bin/sh is
# noncompliant, but you have some other compliant shell such as ksh or
# bash, then to run this script, type that shell name before the whole
# command line, like:
#
# ksh Gradle
#
# Busybox and similar reduced shells will NOT work, because this script
# requires all of these POSIX shell features:
# * functions;
# * expansions «$var», «${var}», «${var:-default}», «${var+SET}»,
# «${var#prefix}», «${var%suffix}», and «$( cmd )»;
# * compound commands having a testable exit status, especially «case»;
# * various built-in commands including «command», «set», and «ulimit».
#
# Important for patching:
#
# (2) This script targets any POSIX shell, so it avoids extensions provided
# by Bash, Ksh, etc; in particular arrays are avoided.
#
# The "traditional" practice of packing multiple parameters into a
# space-separated string is a well documented source of bugs and security
# problems, so this is (mostly) avoided, by progressively accumulating
# options in "$@", and eventually passing that to Java.
#
# Where the inherited environment variables (DEFAULT_JVM_OPTS, JAVA_OPTS,
# and GRADLE_OPTS) rely on word-splitting, this is performed explicitly;
# see the in-line comments for details.
#
# There are tweaks for specific operating systems such as AIX, CygWin,
# Darwin, MinGW, and NonStop.
#
# (3) This script is generated from the Groovy template
# https://github.com/gradle/gradle/blob/b631911858264c0b6e4d6603d677ff5218766cee/platforms/jvm/plugins-application/src/main/resources/org/gradle/api/internal/plugins/unixStartScript.txt
# within the Gradle project.
#
# You can find Gradle at https://github.com/gradle/gradle/.
#
##############################################################################
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS=""
# Attempt to set APP_HOME
APP_NAME="Gradle"
APP_BASE_NAME=`basename "$0"`
# Resolve links: $0 may be a link
app_path=$0
# Need this for daisy-chained symlinks.
while
APP_HOME=${app_path%"${app_path##*/}"} # leaves a trailing /; empty if no leading path
[ -h "$app_path" ]
do
ls=$( ls -ld "$app_path" )
link=${ls#*' -> '}
case $link in #(
/*) app_path=$link ;; #(
*) app_path=$APP_HOME$link ;;
esac
done
# This is normally unused
# shellcheck disable=SC2034
APP_BASE_NAME=${0##*/}
# Discard cd standard output in case $CDPATH is set (https://github.com/gradle/gradle/issues/25036)
APP_HOME=$( cd -P "${APP_HOME:-./}" > /dev/null && printf '%s\n' "$PWD" ) || exit
# Use the maximum available, or set MAX_FD != -1 to use that value.
MAX_FD="maximum"
MAX_FD=maximum
warn ( ) {
warn () {
echo "$*"
}
} >&2
die ( ) {
die () {
echo
echo "$*"
echo
exit 1
}
} >&2
# OS specific support (must be 'true' or 'false').
cygwin=false
msys=false
darwin=false
case "`uname`" in
CYGWIN* )
cygwin=true
;;
Darwin* )
darwin=true
;;
MINGW* )
msys=true
;;
nonstop=false
case "$( uname )" in #(
CYGWIN* ) cygwin=true ;; #(
Darwin* ) darwin=true ;; #(
MSYS* | MINGW* ) msys=true ;; #(
NONSTOP* ) nonstop=true ;;
esac
# For Cygwin, ensure paths are in UNIX format before anything is touched.
if $cygwin ; then
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
fi
# Attempt to set APP_HOME
# Resolve links: $0 may be a link
PRG="$0"
# Need this for relative symlinks.
while [ -h "$PRG" ] ; do
ls=`ls -ld "$PRG"`
link=`expr "$ls" : '.*-> \(.*\)$'`
if expr "$link" : '/.*' > /dev/null; then
PRG="$link"
else
PRG=`dirname "$PRG"`"/$link"
fi
done
SAVED="`pwd`"
cd "`dirname \"$PRG\"`/" >&-
APP_HOME="`pwd -P`"
cd "$SAVED" >&-
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
# Determine the Java command to use to start the JVM.
if [ -n "$JAVA_HOME" ] ; then
if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
# IBM's JDK on AIX uses strange locations for the executables
JAVACMD="$JAVA_HOME/jre/sh/java"
JAVACMD=$JAVA_HOME/jre/sh/java
else
JAVACMD="$JAVA_HOME/bin/java"
JAVACMD=$JAVA_HOME/bin/java
fi
if [ ! -x "$JAVACMD" ] ; then
die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
@@ -82,83 +131,118 @@ Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
else
JAVACMD="java"
which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
JAVACMD=java
if ! command -v java >/dev/null 2>&1
then
die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
Please set the JAVA_HOME variable in your environment to match the
location of your Java installation."
fi
fi
# Increase the maximum file descriptors if we can.
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
MAX_FD_LIMIT=`ulimit -H -n`
if [ $? -eq 0 ] ; then
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
MAX_FD="$MAX_FD_LIMIT"
fi
ulimit -n $MAX_FD
if [ $? -ne 0 ] ; then
warn "Could not set maximum file descriptor limit: $MAX_FD"
fi
else
warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
fi
fi
# For Darwin, add options to specify how the application appears in the dock
if $darwin; then
GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
fi
# For Cygwin, switch paths to Windows format before running java
if $cygwin ; then
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
# We build the pattern for arguments to be converted via cygpath
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
SEP=""
for dir in $ROOTDIRSRAW ; do
ROOTDIRS="$ROOTDIRS$SEP$dir"
SEP="|"
done
OURCYGPATTERN="(^($ROOTDIRS))"
# Add a user-defined pattern to the cygpath arguments
if [ "$GRADLE_CYGPATTERN" != "" ] ; then
OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
fi
# Now convert the arguments - kludge to limit ourselves to /bin/sh
i=0
for arg in "$@" ; do
CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
else
eval `echo args$i`="\"$arg\""
fi
i=$((i+1))
done
case $i in
(0) set -- ;;
(1) set -- "$args0" ;;
(2) set -- "$args0" "$args1" ;;
(3) set -- "$args0" "$args1" "$args2" ;;
(4) set -- "$args0" "$args1" "$args2" "$args3" ;;
(5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
(6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
(7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
(8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
(9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
if ! "$cygwin" && ! "$darwin" && ! "$nonstop" ; then
case $MAX_FD in #(
max*)
# In POSIX sh, ulimit -H is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
MAX_FD=$( ulimit -H -n ) ||
warn "Could not query maximum file descriptor limit"
esac
case $MAX_FD in #(
'' | soft) :;; #(
*)
# In POSIX sh, ulimit -n is undefined. That's why the result is checked to see if it worked.
# shellcheck disable=SC2039,SC3045
ulimit -n "$MAX_FD" ||
warn "Could not set maximum file descriptor limit to $MAX_FD"
esac
fi
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
function splitJvmOpts() {
JVM_OPTS=("$@")
}
eval splitJvmOpts $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS
JVM_OPTS[${#JVM_OPTS[*]}]="-Dorg.gradle.appname=$APP_BASE_NAME"
# Collect all arguments for the java command, stacking in reverse order:
# * args from the command line
# * the main class name
# * -classpath
# * -D...appname settings
# * --module-path (only if needed)
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and GRADLE_OPTS environment variables.
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
# For Cygwin or MSYS, switch paths to Windows format before running java
if "$cygwin" || "$msys" ; then
APP_HOME=$( cygpath --path --mixed "$APP_HOME" )
JAVACMD=$( cygpath --unix "$JAVACMD" )
# Now convert the arguments - kludge to limit ourselves to /bin/sh
for arg do
if
case $arg in #(
-*) false ;; # don't mess with options #(
/?*) t=${arg#/} t=/${t%%/*} # looks like a POSIX filepath
[ -e "$t" ] ;; #(
*) false ;;
esac
then
arg=$( cygpath --path --ignore --mixed "$arg" )
fi
# Roll the args list around exactly as many times as the number of
# args, so each arg winds up back in the position where it started, but
# possibly modified.
#
# NB: a `for` loop captures its iteration list before it begins, so
# changing the positional parameters here affects neither the number of
# iterations, nor the values presented in `arg`.
shift # remove old arg
set -- "$@" "$arg" # push replacement arg
done
fi
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
# Collect all arguments for the java command:
# * DEFAULT_JVM_OPTS, JAVA_OPTS, and optsEnvironmentVar are not allowed to contain shell fragments,
# and any embedded shellness will be escaped.
# * For example: A user cannot expect ${Hostname} to be expanded, as it is an environment variable and will be
# treated as '${Hostname}' itself on the command line.
set -- \
"-Dorg.gradle.appname=$APP_BASE_NAME" \
-jar "$APP_HOME/gradle/wrapper/gradle-wrapper.jar" \
"$@"
# Stop when "xargs" is not available.
if ! command -v xargs >/dev/null 2>&1
then
die "xargs is not available"
fi
# Use "xargs" to parse quoted args.
#
# With -n1 it outputs one arg per line, with the quotes and backslashes removed.
#
# In Bash we could simply go:
#
# readarray ARGS < <( xargs -n1 <<<"$var" ) &&
# set -- "${ARGS[@]}" "$@"
#
# but POSIX shell has neither arrays nor command substitution, so instead we
# post-process each arg (as a line of input to sed) to backslash-escape any
# character that might be a shell metacharacter, then use eval to reverse
# that process (while maintaining the separation between arguments), and wrap
# the whole thing up as a single "set" statement.
#
# This will of course break if any of these variables contains a newline or
# an unmatched quote.
#
eval "set -- $(
printf '%s\n' "$DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS" |
xargs -n1 |
sed ' s~[^-[:alnum:]+,./:=@_]~\\&~g; ' |
tr '\n' ' '
)" '"$@"'
exec "$JAVACMD" "$@"
Vendored
+46 -43
View File
@@ -1,4 +1,22 @@
@if "%DEBUG%" == "" @echo off
@rem
@rem Copyright 2015 the original author or authors.
@rem
@rem Licensed under the Apache License, Version 2.0 (the "License");
@rem you may not use this file except in compliance with the License.
@rem You may obtain a copy of the License at
@rem
@rem https://www.apache.org/licenses/LICENSE-2.0
@rem
@rem Unless required by applicable law or agreed to in writing, software
@rem distributed under the License is distributed on an "AS IS" BASIS,
@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
@rem See the License for the specific language governing permissions and
@rem limitations under the License.
@rem
@rem SPDX-License-Identifier: Apache-2.0
@rem
@if "%DEBUG%"=="" @echo off
@rem ##########################################################################
@rem
@rem Gradle startup script for Windows
@@ -8,26 +26,30 @@
@rem Set local scope for the variables with windows NT shell
if "%OS%"=="Windows_NT" setlocal
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS=
set DIRNAME=%~dp0
if "%DIRNAME%" == "" set DIRNAME=.
if "%DIRNAME%"=="" set DIRNAME=.
@rem This is normally unused
set APP_BASE_NAME=%~n0
set APP_HOME=%DIRNAME%
@rem Resolve any "." and ".." in APP_HOME to make it shorter.
for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
@rem Find java.exe
if defined JAVA_HOME goto findJavaFromJavaHome
set JAVA_EXE=java.exe
%JAVA_EXE% -version >NUL 2>&1
if "%ERRORLEVEL%" == "0" goto init
if %ERRORLEVEL% equ 0 goto execute
echo.
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH. 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
@@ -35,54 +57,35 @@ goto fail
set JAVA_HOME=%JAVA_HOME:"=%
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
if exist "%JAVA_EXE%" goto init
if exist "%JAVA_EXE%" goto execute
echo.
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
echo.
echo Please set the JAVA_HOME variable in your environment to match the
echo location of your Java installation.
echo. 1>&2
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME% 1>&2
echo. 1>&2
echo Please set the JAVA_HOME variable in your environment to match the 1>&2
echo location of your Java installation. 1>&2
goto fail
:init
@rem Get command-line arguments, handling Windowz variants
if not "%OS%" == "Windows_NT" goto win9xME_args
if "%@eval[2+2]" == "4" goto 4NT_args
:win9xME_args
@rem Slurp the command line arguments.
set CMD_LINE_ARGS=
set _SKIP=2
:win9xME_args_slurp
if "x%~1" == "x" goto execute
set CMD_LINE_ARGS=%*
goto execute
:4NT_args
@rem Get arguments from the 4NT Shell from JP Software
set CMD_LINE_ARGS=%$
:execute
@rem Setup the command line
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
@rem Execute Gradle
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -jar "%APP_HOME%\gradle\wrapper\gradle-wrapper.jar" %*
:end
@rem End local scope for the variables with windows NT shell
if "%ERRORLEVEL%"=="0" goto mainEnd
if %ERRORLEVEL% equ 0 goto mainEnd
:fail
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
rem the _cmd.exe /c_ return code!
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
exit /b 1
set EXIT_CODE=%ERRORLEVEL%
if %EXIT_CODE% equ 0 set EXIT_CODE=1
if not ""=="%GRADLE_EXIT_CONSOLE%" exit %EXIT_CODE%
exit /b %EXIT_CODE%
:mainEnd
if "%OS%"=="Windows_NT" endlocal
+2
View File
@@ -0,0 +1,2 @@
before_install:
- ./gradlew setupCIWorkspace
Submodule lang deleted from c37b50751a.
+5
View File
@@ -0,0 +1,5 @@
// Add any additional repositiroes for your dependencies here
repositories {
mavenLocal()
}
+23
View File
@@ -0,0 +1,23 @@
pluginManagement {
repositories {
maven {
// RetroFuturaGradle
name "GTNH Maven"
url "https://nexus.gtnewhorizons.com/repository/public/"
mavenContent {
includeGroup("com.gtnewhorizons")
includeGroupByRegex("com\\.gtnewhorizons\\..+")
}
}
gradlePluginPortal()
mavenCentral()
mavenLocal()
}
}
plugins {
id 'com.gtnewhorizons.gtnhsettingsconvention' version '2.0.24'
}
@@ -1,38 +0,0 @@
package codechicken.nei;
public class VisiblityData
{
public boolean showUtilityButtons = true;
public boolean showStateButtons = true;
/**
* Item panel and associated buttons
*/
public boolean showItemPanel = true;
/**
* Item and search section
*/
public boolean showItemSection = true;
/**
* Dropdown and Item search field
*/
public boolean showSearchSection = true;
/**
* All widgets except options button
*/
public boolean showWidgets = true;
/**
* The entire NEI interface, aka hidden
*/
public boolean showNEI = true;
public boolean enableDeleteMode = true;
public void translateDependancies()
{
if(!showNEI)
showWidgets = false;
if(!showWidgets)
showItemSection = showUtilityButtons = showStateButtons = false;
if(!showItemSection)
showSearchSection = showItemPanel = false;
}
}
@@ -1,49 +0,0 @@
package codechicken.nei.api;
import codechicken.nei.VisiblityData;
import net.minecraft.client.gui.inventory.GuiContainer;
import net.minecraft.item.ItemStack;
import java.util.List;
/**
* If this is implemented on a gui, it will be automatically registered
*/
public interface INEIGuiHandler
{
public VisiblityData modifyVisiblity(GuiContainer gui, VisiblityData currentVisibility);
/**
* NEI will give the specified item to the InventoryRange returned if the player's inventory is full.
* return null for no range
*/
public Iterable<Integer> getItemSpawnSlots(GuiContainer gui, ItemStack item);
/**
* @return A list of TaggedInventoryAreas that will be used with the savestates.
*/
public List<TaggedInventoryArea> getInventoryAreas(GuiContainer gui);
/**
* Handles clicks while an itemstack has been dragged from the item panel. Use this to set configurable slots and the like.
* Changes made to the stackSize of the dragged stack will be kept
* @param gui The current gui instance
* @param mousex The x position of the mouse
* @param mousey The y position of the mouse
* @param draggedStack The stack being dragged from the item panel
* @param button The button presed
* @return True if the drag n drop was handled. False to resume processing through other routes. The held stack will be deleted if draggedStack.stackSize == 0
*/
public boolean handleDragNDrop(GuiContainer gui, int mousex, int mousey, ItemStack draggedStack, int button);
/**
* Used to prevent the item panel from drawing on top of other gui elements.
* This function will also be called with a 1x1 size rectangle on the mouse position for determining if the given coordinate should override item panel functions such as scrolling
* @param x The x coordinate of the rectangle bounding the slot
* @param y The y coordinate of the rectangle bounding the slot
* @param w The w coordinate of the rectangle bounding the slot
* @param h The h coordinate of the rectangle bounding the slot
* @return true if the item panel slot within the specified rectangle should not be rendered.
*/
public boolean hideItemPanelSlot(GuiContainer gui, int x, int y, int w, int h);
}
@@ -1,48 +0,0 @@
package codechicken.nei.api;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import java.util.HashSet;
public class TaggedInventoryArea
{
public HashSet<Integer> slots = new HashSet<Integer>();
public String tagName;
/**
* Only for player inventories.
*/
private IInventory inventory;
/**
* Other inventories
*/
private Container container;
public TaggedInventoryArea(InventoryPlayer invPlayer)
{
this("InventoryPlayer", 0, 39, null);
inventory = invPlayer;
}
public TaggedInventoryArea(String name, int first, int last, Container container)
{
this.container = container;
tagName = name;
for(int i = first; i <= last; i++)
slots.add(i);
}
public ItemStack getStackInSlot(int i)
{
if(inventory != null)
return inventory.getStackInSlot(i);
return container.getSlot(i).getStack();
}
public boolean isContainer()
{
return inventory == null;
}
}
-11
View File
@@ -1,11 +0,0 @@
package cofh.api;
public class CoFHAPIProps {
private CoFHAPIProps() {
}
public static final String VERSION = "1.7.10R1.0.1";
}
@@ -1,158 +0,0 @@
package cofh.api.energy;
import net.minecraft.nbt.NBTTagCompound;
/**
* Reference implementation of {@link IEnergyStorage}. Use/extend this or implement your own.
*
* @author King Lemming
*
*/
public class EnergyStorage implements IEnergyStorage {
protected int energy;
protected int capacity;
protected int maxReceive;
protected int maxExtract;
public EnergyStorage(int capacity) {
this(capacity, capacity, capacity);
}
public EnergyStorage(int capacity, int maxTransfer) {
this(capacity, maxTransfer, maxTransfer);
}
public EnergyStorage(int capacity, int maxReceive, int maxExtract) {
this.capacity = capacity;
this.maxReceive = maxReceive;
this.maxExtract = maxExtract;
}
public EnergyStorage readFromNBT(NBTTagCompound nbt) {
this.energy = nbt.getInteger("Energy");
if (energy > capacity) {
energy = capacity;
}
return this;
}
public NBTTagCompound writeToNBT(NBTTagCompound nbt) {
if (energy < 0) {
energy = 0;
}
nbt.setInteger("Energy", energy);
return nbt;
}
public void setCapacity(int capacity) {
this.capacity = capacity;
if (energy > capacity) {
energy = capacity;
}
}
public void setMaxTransfer(int maxTransfer) {
setMaxReceive(maxTransfer);
setMaxExtract(maxTransfer);
}
public void setMaxReceive(int maxReceive) {
this.maxReceive = maxReceive;
}
public void setMaxExtract(int maxExtract) {
this.maxExtract = maxExtract;
}
public int getMaxReceive() {
return maxReceive;
}
public int getMaxExtract() {
return maxExtract;
}
/**
* This function is included to allow for server -&gt; client sync. Do not call this externally to the containing Tile Entity, as not all IEnergyHandlers are
* guaranteed to have it.
*
* @param energy
*/
public void setEnergyStored(int energy) {
this.energy = energy;
if (this.energy > capacity) {
this.energy = capacity;
} else if (this.energy < 0) {
this.energy = 0;
}
}
/**
* This function is included to allow the containing tile to directly and efficiently modify the energy contained in the EnergyStorage. Do not rely on this
* externally, as not all IEnergyHandlers are guaranteed to have it.
*
* @param energy
*/
public void modifyEnergyStored(int energy) {
this.energy += energy;
if (this.energy > capacity) {
this.energy = capacity;
} else if (this.energy < 0) {
this.energy = 0;
}
}
/* IEnergyStorage */
@Override
public int receiveEnergy(int maxReceive, boolean simulate) {
int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive));
if (!simulate) {
energy += energyReceived;
}
return energyReceived;
}
@Override
public int extractEnergy(int maxExtract, boolean simulate) {
int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract));
if (!simulate) {
energy -= energyExtracted;
}
return energyExtracted;
}
@Override
public int getEnergyStored() {
return energy;
}
@Override
public int getMaxEnergyStored() {
return capacity;
}
}
@@ -1,21 +0,0 @@
package cofh.api.energy;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Implement this interface on TileEntities which should connect to energy transportation blocks. This is intended for blocks which generate energy but do not
* accept it; otherwise just use IEnergyHandler.
*
* Note that {@link IEnergyHandler} is an extension of this.
*
* @author King Lemming
*
*/
public interface IEnergyConnection {
/**
* Returns TRUE if the TileEntity can connect on a given side.
*/
boolean canConnectEnergy(ForgeDirection from);
}
@@ -1,52 +0,0 @@
package cofh.api.energy;
import net.minecraft.item.ItemStack;
/**
* Implement this interface on Item classes that support external manipulation of their internal energy storages.
*
* A reference implementation is provided {@link ItemEnergyContainer}.
*
* @author King Lemming
*
*/
public interface IEnergyContainerItem {
/**
* Adds energy to a container item. Returns the quantity of energy that was accepted. This should always return 0 if the item cannot be externally charged.
*
* @param container
* ItemStack to be charged.
* @param maxReceive
* Maximum amount of energy to be sent into the item.
* @param simulate
* If TRUE, the charge will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) received by the item.
*/
int receiveEnergy(ItemStack container, int maxReceive, boolean simulate);
/**
* Removes energy from a container item. Returns the quantity of energy that was removed. This should always return 0 if the item cannot be externally
* discharged.
*
* @param container
* ItemStack to be discharged.
* @param maxExtract
* Maximum amount of energy to be extracted from the item.
* @param simulate
* If TRUE, the discharge will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) extracted from the item.
*/
int extractEnergy(ItemStack container, int maxExtract, boolean simulate);
/**
* Get the amount of energy currently stored in the container item.
*/
int getEnergyStored(ItemStack container);
/**
* Get the max amount of energy that can be stored in the container item.
*/
int getMaxEnergyStored(ItemStack container);
}
@@ -1,51 +0,0 @@
package cofh.api.energy;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Implement this interface on Tile Entities which should handle energy, generally storing it in one or more internal {@link IEnergyStorage} objects.
*
* A reference implementation is provided {@link TileEnergyHandler}.
*
* @author King Lemming
*
*/
public interface IEnergyHandler extends IEnergyConnection {
/**
* Add energy to an IEnergyHandler, internal distribution is left entirely to the IEnergyHandler.
*
* @param from
* Orientation the energy is received from.
* @param maxReceive
* Maximum amount of energy to receive.
* @param simulate
* If TRUE, the charge will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) received.
*/
int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate);
/**
* Remove energy from an IEnergyHandler, internal distribution is left entirely to the IEnergyHandler.
*
* @param from
* Orientation the energy is extracted from.
* @param maxExtract
* Maximum amount of energy to extract.
* @param simulate
* If TRUE, the extraction will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) extracted.
*/
int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate);
/**
* Returns the amount of energy currently stored.
*/
int getEnergyStored(ForgeDirection from);
/**
* Returns the maximum amount of energy that can be stored.
*/
int getMaxEnergyStored(ForgeDirection from);
}
@@ -1,45 +0,0 @@
package cofh.api.energy;
/**
* An energy storage is the unit of interaction with Energy inventories.
*
* A reference implementation can be found at {@link EnergyStorage}.
*
* @author King Lemming
*
*/
public interface IEnergyStorage {
/**
* Adds energy to the storage. Returns quantity of energy that was accepted.
*
* @param maxReceive
* Maximum amount of energy to be inserted.
* @param simulate
* If TRUE, the insertion will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) accepted by the storage.
*/
int receiveEnergy(int maxReceive, boolean simulate);
/**
* Removes energy from the storage. Returns quantity of energy that was removed.
*
* @param maxExtract
* Maximum amount of energy to be extracted.
* @param simulate
* If TRUE, the extraction will only be simulated.
* @return Amount of energy that was (or would have been, if simulated) extracted from the storage.
*/
int extractEnergy(int maxExtract, boolean simulate);
/**
* Returns the amount of energy currently stored.
*/
int getEnergyStored();
/**
* Returns the maximum amount of energy that can be stored.
*/
int getMaxEnergyStored();
}
@@ -1,110 +0,0 @@
package cofh.api.energy;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
/**
* Reference implementation of {@link IEnergyContainerItem}. Use/extend this or implement your own.
*
* @author King Lemming
*
*/
public class ItemEnergyContainer extends Item implements IEnergyContainerItem {
protected int capacity;
protected int maxReceive;
protected int maxExtract;
public ItemEnergyContainer() {
}
public ItemEnergyContainer(int capacity) {
this(capacity, capacity, capacity);
}
public ItemEnergyContainer(int capacity, int maxTransfer) {
this(capacity, maxTransfer, maxTransfer);
}
public ItemEnergyContainer(int capacity, int maxReceive, int maxExtract) {
this.capacity = capacity;
this.maxReceive = maxReceive;
this.maxExtract = maxExtract;
}
public ItemEnergyContainer setCapacity(int capacity) {
this.capacity = capacity;
return this;
}
public void setMaxTransfer(int maxTransfer) {
setMaxReceive(maxTransfer);
setMaxExtract(maxTransfer);
}
public void setMaxReceive(int maxReceive) {
this.maxReceive = maxReceive;
}
public void setMaxExtract(int maxExtract) {
this.maxExtract = maxExtract;
}
/* IEnergyContainerItem */
@Override
public int receiveEnergy(ItemStack container, int maxReceive, boolean simulate) {
if (container.stackTagCompound == null) {
container.stackTagCompound = new NBTTagCompound();
}
int energy = container.stackTagCompound.getInteger("Energy");
int energyReceived = Math.min(capacity - energy, Math.min(this.maxReceive, maxReceive));
if (!simulate) {
energy += energyReceived;
container.stackTagCompound.setInteger("Energy", energy);
}
return energyReceived;
}
@Override
public int extractEnergy(ItemStack container, int maxExtract, boolean simulate) {
if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) {
return 0;
}
int energy = container.stackTagCompound.getInteger("Energy");
int energyExtracted = Math.min(energy, Math.min(this.maxExtract, maxExtract));
if (!simulate) {
energy -= energyExtracted;
container.stackTagCompound.setInteger("Energy", energy);
}
return energyExtracted;
}
@Override
public int getEnergyStored(ItemStack container) {
if (container.stackTagCompound == null || !container.stackTagCompound.hasKey("Energy")) {
return 0;
}
return container.stackTagCompound.getInteger("Energy");
}
@Override
public int getMaxEnergyStored(ItemStack container) {
return capacity;
}
}
@@ -1,62 +0,0 @@
package cofh.api.energy;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.tileentity.TileEntity;
import net.minecraftforge.common.util.ForgeDirection;
/**
* Reference implementation of {@link IEnergyHandler}. Use/extend this or implement your own.
*
* @author King Lemming
*
*/
public class TileEnergyHandler extends TileEntity implements IEnergyHandler {
protected EnergyStorage storage = new EnergyStorage(32000);
@Override
public void readFromNBT(NBTTagCompound nbt) {
super.readFromNBT(nbt);
storage.readFromNBT(nbt);
}
@Override
public void writeToNBT(NBTTagCompound nbt) {
super.writeToNBT(nbt);
storage.writeToNBT(nbt);
}
/* IEnergyHandler */
@Override
public boolean canConnectEnergy(ForgeDirection from) {
return true;
}
@Override
public int receiveEnergy(ForgeDirection from, int maxReceive, boolean simulate) {
return storage.receiveEnergy(maxReceive, simulate);
}
@Override
public int extractEnergy(ForgeDirection from, int maxExtract, boolean simulate) {
return storage.extractEnergy(maxExtract, simulate);
}
@Override
public int getEnergyStored(ForgeDirection from) {
return storage.getEnergyStored();
}
@Override
public int getMaxEnergyStored(ForgeDirection from) {
return storage.getMaxEnergyStored();
}
}
@@ -1,10 +0,0 @@
/**
* (C) 2014 Team CoFH / CoFH / Cult of the Full Hub
* http://www.teamcofh.com
*/
@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHAPI", provides = "CoFHAPI|energy")
package cofh.api.energy;
import cofh.api.CoFHAPIProps;
import cpw.mods.fml.common.API;
-9
View File
@@ -1,9 +0,0 @@
/**
* (C) 2014 Team CoFH / CoFH / Cult of the Full Hub
* http://www.teamcofh.com
*/
@API(apiVersion = CoFHAPIProps.VERSION, owner = "CoFHLib", provides = "CoFHAPI")
package cofh.api;
import cpw.mods.fml.common.API;
+137 -113
View File
@@ -1,46 +1,51 @@
/*******************************************************************************
* Copyright (c) 2011-2014 SirSengir.
* All rights reserved. This program and the accompanying materials
* are made available under the terms of the GNU Lesser Public License v3
* which accompanies this distribution, and is available at
* http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to:
* SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges
* Copyright (c) 2011-2014 SirSengir. All rights reserved. This program and the accompanying materials are made
* available under the terms of the GNU Lesser Public License v3 which accompanies this distribution, and is available
* at http://www.gnu.org/licenses/lgpl-3.0.txt
*
* Various Contributors including, but not limited to: SirSengir (original work), CovertJaguar, Player, Binnie,
* MysteriousAges
******************************************************************************/
package forestry;
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.Loader;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.ModAPIManager;
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 forestry.api.fuels.EngineBronzeFuel;
import forestry.api.fuels.EngineCopperFuel;
import forestry.api.fuels.FermenterFuel;
import forestry.api.fuels.FuelManager;
import forestry.api.fuels.GeneratorFuel;
import forestry.api.fuels.MoistenerFuel;
import forestry.api.fuels.RainSubstrate;
import forestry.core.ForestryCore;
import forestry.core.config.Defaults;
import forestry.core.config.ForestryItem;
import forestry.core.config.Version;
import forestry.api.core.ForestryAPI;
import forestry.core.ClimateManager;
import forestry.core.EventHandlerCore;
import forestry.core.config.Config;
import forestry.core.config.Constants;
import forestry.core.config.GameMode;
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.FluidMap;
import forestry.core.utils.ItemStackMap;
import forestry.core.utils.Log;
import forestry.core.utils.StringUtil;
import java.io.File;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import forestry.core.worldgen.WorldGenerator;
import forestry.plugins.PluginManager;
/**
* Forestry Minecraft Mod
@@ -48,103 +53,122 @@ import net.minecraft.item.Item;
* @author SirSengir
*/
@Mod(
modid = Defaults.MOD,
name = "Forestry",
version = Version.VERSION,
dependencies = "required-after:Forge@[10.13.0.1207,);"
+ "after:Buildcraft|Core;"
+ "after:ExtrabiomesXL;"
+ "after:BiomesOPlenty;"
+ "after:IC2")
//, certificateFingerprint = Version.FINGERPRINT)
modid = Constants.MOD,
name = Constants.MOD,
version = Constants.VERSION,
guiFactory = "forestry.core.config.ForestryGuiConfigFactory",
dependencies = "required-after:Forge@[10.13.4.1566,);" + "required-after:gtnhlib@[0.9.41,);"
+ "after:Buildcraft|Core@[6.1.7,);"
+ "after:ExtrabiomesXL;"
+ "after:BiomesOPlenty;"
+ "after:IC2@[2.0.140,);"
+ "after:Natura@[2.2.0,);"
+ "after:HardcoreEnderExpansion;")
public class Forestry {
@Mod.Instance(Defaults.MOD)
public static Forestry instance;
private File configFolder;
@Mod.Instance(Constants.MOD)
public static Forestry instance;
public Forestry() {
FuelManager.fermenterFuel = new ItemStackMap<FermenterFuel>();
FuelManager.moistenerResource = new ItemStackMap<MoistenerFuel>();
FuelManager.rainSubstrate = new ItemStackMap<RainSubstrate>();
FuelManager.bronzeEngineFuel = new FluidMap<EngineBronzeFuel>();
FuelManager.copperEngineFuel = new ItemStackMap<EngineCopperFuel>();
FuelManager.generatorFuel = new FluidMap<GeneratorFuel>();
}
@SidedProxy(clientSide = "forestry.core.ForestryClient", serverSide = "forestry.core.ForestryCore")
public static ForestryCore core = new ForestryCore();
public static PacketHandler packetHandler;
private File configFolder;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
packetHandler = new PacketHandler();
configFolder = new File(event.getModConfigurationDirectory(), "forestry");
public Forestry() {
ForestryAPI.instance = this;
ForestryAPI.climateManager = new ClimateManager();
ForestryAPI.forestryConstants = new Constants();
ForestryAPI.errorStateRegistry = new ErrorStateRegistry();
EnumErrorCode.init();
}
core.preInit(event.getSourceFile(), this);
}
public static PacketHandler packetHandler;
@EventHandler
public void init(FMLInitializationEvent event) {
core.init(this);
}
public static boolean isDreamcraftLoaded;
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
core.postInit();
}
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
checkForCoFHLib();
packetHandler = new PacketHandler();
@EventHandler
public void serverStarting(FMLServerStartingEvent event) {
core.serverStarting(event.getServer());
}
isDreamcraftLoaded = Loader.isModLoaded("dreamcraft");
public File getConfigFolder() {
return configFolder;
}
/*@EventHandler
public void fingerprintWarning(FMLFingerprintViolationEvent event) {
Proxies.log.info("Fingerprint of the mod jar is invalid. The jar file was tampered with.");
FMLInterModComms.sendMessage("Railcraft", "securityViolation", "Fingerprint of jar file did not match.");
FMLInterModComms.sendMessage("Thaumcraft", "securityViolation", "Fingerprint of jar file did not match.");
FMLInterModComms.sendMessage("IC2", "securityViolation", "Fingerprint of jar file did not match.");
}*/
// Register event handler
EventHandlerCore eventHandlerCore = new EventHandlerCore();
MinecraftForge.EVENT_BUS.register(eventHandlerCore);
FMLCommonHandler.instance().bus().register(eventHandlerCore);
MinecraftForge.EVENT_BUS.register(new MultiblockEventHandler());
@EventHandler
public void processIMCMessages(IMCEvent event) {
core.processIMCMessages(event.getMessages());
}
configFolder = new File(event.getModConfigurationDirectory(), "forestry");
Config.load();
@EventHandler
public void missingMapping(FMLMissingMappingsEvent event) {
for (MissingMapping mapping : event.get())
if (mapping.type == Type.BLOCK) {
Block block = GameRegistry.findBlock(Defaults.MOD, StringUtil.cleanTags(mapping.name));
if (block != null) {
mapping.remap(block);
Proxies.log.warning("Remapping block " + mapping.name + " to " + StringUtil.cleanBlockName(block));
}
} else {
Block block = GameRegistry.findBlock(Defaults.MOD, StringUtil.cleanTags(mapping.name));
if (block != null) {
mapping.remap(Item.getItemFromBlock(block));
Proxies.log.warning("Remapping item " + mapping.name + " to " + StringUtil.cleanBlockName(block));
} else if (mapping.name.equals("Forestry:builderBackpack")) {
mapping.remap(ForestryItem.builderBackpack.item());
Proxies.log.warning("Remapping item " + mapping.name + " to " + ForestryItem.builderBackpack.name());
} else if (mapping.name.equals("Forestry:builderBackpackT2")) {
mapping.remap(ForestryItem.builderBackpackT2.item());
Proxies.log.warning("Remapping item " + mapping.name + " to " + ForestryItem.builderBackpackT2.name());
} else if (mapping.name.equals("Forestry:adventurerBackpack")) {
mapping.remap(ForestryItem.adventurerBackpack.item());
Proxies.log.warning("Remapping item " + mapping.name + " to " + ForestryItem.adventurerBackpack.name());
} else if (mapping.name.equals("Forestry:adventurerBackpackT2")) {
mapping.remap(ForestryItem.adventurerBackpackT2.item());
Proxies.log.warning("Remapping item " + mapping.name + " to " + ForestryItem.adventurerBackpackT2.name());
} else if (mapping.name.equals("Forestry:shortMead")) {
mapping.remap(ForestryItem.beverage.item());
Proxies.log.warning("Remapping item " + mapping.name + " to " + ForestryItem.beverage.name());
}
}
}
PluginManager.runSetup();
ForestryAPI.activeMode = new GameMode(Config.gameMode);
PluginManager.runPreInit();
}
@EventHandler
public void init(FMLInitializationEvent event) {
// Register gui handler
NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
PluginManager.runInit();
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
PluginManager.runPostInit();
// Parse Mail Blacklist
Config.parseMailBlacklist();
// Register world generator
WorldGenerator worldGenerator = new WorldGenerator();
GameRegistry.registerWorldGenerator(worldGenerator, 0);
// Register tick handlers
Proxies.common.registerTickHandlers(worldGenerator);
// Handle IMC messages.
PluginManager.processIMCMessages(FMLInterModComms.fetchRuntimeMessages(ForestryAPI.instance));
}
@EventHandler
public void serverStarting(FMLServerStartingEvent event) {
PluginManager.serverStarting(event.getServer());
}
public File getConfigFolder() {
return configFolder;
}
@EventHandler
public void processIMCMessages(IMCEvent event) {
PluginManager.processIMCMessages(event.getMessages());
}
@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));
}
}
}
}
private static void checkForCoFHLib() {
if (!ModAPIManager.INSTANCE.hasAPI("CoFHAPI|energy")) {
throw new RuntimeException(
"CoFHAPI|energy could not be found! This version of Forestry does not contain the RedstoneFlux API anymore, so you have to install either CoFHLib or CoFHCore.");
}
}
}
@@ -0,0 +1,55 @@
/*******************************************************************************
* 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.ArrayList;
import java.util.HashMap;
import net.minecraft.item.ItemStack;
/**
*
* Some miscellaneous lists and settings for bees.
*
* @author SirSengir
*/
public class BeeManager {
/**
* 0 - Common Village Bees 1 - Uncommon Village Bees (20 % of spawns)
*/
public static ArrayList<IBeeGenome>[] villageBees;
/**
* List of items that can induce swarming. Integer denotes x in 1000 chance.
*/
public static HashMap<ItemStack, Integer> inducers = new HashMap<ItemStack, Integer>();
/**
* 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,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.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,57 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
package forestry.api.apiculture;
/**
* 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 {
public float getTerritoryModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
return 1.0f;
}
public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
return 1.0f;
}
public float getProductionModifier(IBeeGenome genome, float currentModifier) {
return 0.0f;
}
public float getFloweringModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
public boolean isSealed() {
return false;
}
public boolean isSelfLighted() {
return false;
}
public boolean isSelfUnlighted() {
return false;
}
public boolean isSunlightSimulated() {
return false;
}
public boolean isHellish() {
return false;
}
}
@@ -0,0 +1,112 @@
/*******************************************************************************
* 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),
/**
* Slightly incorrectly named. If true, a naturally dirunal bee can work during the night. If true, a naturally
* nocturnal bee can work during the day.
*/
NOCTURNAL(IAlleleBoolean.class),
/**
* Not used / superseded by fixed values for the species. Probably going to be replaced with a boolean for
* FIRE_RESIST.
*/
@Deprecated
HUMIDITY(IAllele.class),
/**
* Humidity difference to its native supported one the bee can tolerate.
*/
HUMIDITY_TOLERANCE(IAlleleTolerance.class),
/**
* If true the bee can work during rain.
*/
TOLERANT_FLYER(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);
final Class<? extends IAllele> clss;
/**
* Cached values() array for frequent read-only operations, the array should NOT be mutated.
*/
public static final EnumBeeChromosome[] VALUES = values();
EnumBeeChromosome(Class<? extends IAllele> clss) {
this.clss = clss;
}
@Override
public Class<? extends IAllele> getAlleleClass() {
return clss;
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public ISpeciesRoot getSpeciesRoot() {
return BeeManager.beeRoot;
}
}
@@ -0,0 +1,38 @@
/*******************************************************************************
* 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,
NONE;
/**
* Cached values() array for frequent read-only operations, the array should NOT be mutated.
*/
public static final EnumBeeType[] VALUES = values();
private final String name;
EnumBeeType() {
this.name = this.toString().toLowerCase(Locale.ENGLISH);
}
public String getName() {
return name;
}
public static EnumBeeType fromOrdinal(int ordinal) {
return VALUES[ordinal];
}
}
@@ -0,0 +1,47 @@
/*******************************************************************************
* 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.ArrayList;
import net.minecraft.item.ItemStack;
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";
/**
* @deprecated since Forestry 3.4. Use IFlowerRegistry.registerPlantableFlower instead. Completely unused since
* Forestry 4.0, kept for backward compatibility with older mods.
*/
@Deprecated
public static ArrayList<ItemStack> plainFlowers = new ArrayList<ItemStack>();
}
@@ -0,0 +1,9 @@
package forestry.api.apiculture;
import forestry.api.genetics.IEffectData;
@SuppressWarnings("unused")
public interface IAlleleBeeAcceleratableEffect {
IEffectData doEffectAccelerated(IBeeGenome genome, IEffectData storedData, IBeeHousing housing, float did);
}
@@ -0,0 +1,32 @@
/*******************************************************************************
* 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;
public interface IAlleleBeeEffect extends IAlleleEffect {
/**
* Called by apiaries to cause an effect in the world.
*
* @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 bee effects.
*
* @param genome
* @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 doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing);
}
@@ -0,0 +1,55 @@
/*******************************************************************************
* 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 net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.genetics.IAlleleSpecies;
public interface IAlleleBeeSpecies extends IAlleleSpecies {
/**
* @return the IBeeRoot
*/
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)
IIcon getIcon(EnumBeeType type, int renderPass);
/**
* @deprecated since Forestry 3.6.
* @return Path of the texture to use for entity rendering.
*/
@Deprecated
String getEntityTexture();
}
@@ -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 net.minecraft.item.ItemStack;
import forestry.api.genetics.IAlleleSpeciesCustom;
public interface IAlleleBeeSpeciesCustom extends IAlleleBeeSpecies, IAlleleSpeciesCustom {
/**
* Add a product for this bee species. Chance is between 0 and 1.
*/
IAlleleBeeSpeciesCustom 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.
*/
IAlleleBeeSpeciesCustom addSpecialty(ItemStack specialty, Float chance);
/**
* Set the Jubilance Provider for this bee species. Bees only produce their specialty when they are Jubilant (see
* IJubilanceProvider)
*/
IAlleleBeeSpeciesCustom setJubilanceProvider(IJubilanceProvider provider);
/**
* Get the Jubilance Provider for this bee species.
*/
default IJubilanceProvider getJubilanceProvider() {
return null;
}
/**
* Make this species only active at night.
*/
IAlleleBeeSpeciesCustom setNocturnal();
/** Use this if you have custom icons for bees. */
IAlleleBeeSpeciesCustom setCustomBeeIconProvider(IBeeIconProvider beeIconProvider);
/**
* Use this if you have custom icon colours for bees (other than the default static primary + secondary colours).
*/
IAlleleBeeSpeciesCustom setCustomBeeIconColourProvider(IBeeIconColourProvider 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,40 @@
/*******************************************************************************
* 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.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
/**
* When implemented by armor piece items, allows them to act as apiarist's armor.
*/
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, String cause, boolean doProtect);
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param player Player 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
* @deprecated since Forestry 4.2. Use protectEntity
*/
@Deprecated
public boolean protectPlayer(EntityPlayer player, ItemStack armor, String cause, boolean doProtect);
}
@@ -0,0 +1,66 @@
/*******************************************************************************
* 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.entity.player.EntityPlayer;
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
* @since Forestry 4.2
*/
int wearsItems(EntityLivingBase entity, String cause, boolean doProtect);
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param stack ItemStack to check
* @param player Player 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
* @deprecated since Forestry 4.2. use the EntityLivingBase version
*/
@Deprecated
boolean isArmorApiarist(ItemStack stack, EntityPlayer player, String cause, boolean doProtect);
/**
* Called when the apiarist's armor acts as protection against an attack.
*
* @param player Player 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
* @deprecated since Forestry 4.2. use the EntityLivingBase version
*/
@Deprecated
int wearsItems(EntityPlayer player, String cause, boolean doProtect);
}
@@ -0,0 +1,20 @@
package forestry.api.apiculture;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.item.ItemStack;
public interface IArmorApiaristMulti extends IArmorApiarist {
/**
* Called to determine how many pieces an armor "counts for". For instance, if this returns 4, the single piece will
* act as full protection.
*
* @param entity Entity being attacked
* @param armor Armor item
* @param cause Optional cause of attack, such as a bee effect identifier
* @return Amount of effective protected slots
*/
default int getProtectionCount(EntityLivingBase entity, ItemStack armor, String cause) {
return 1;
}
}
@@ -0,0 +1,87 @@
/*******************************************************************************
* 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 java.util.Set;
import net.minecraft.item.ItemStack;
import net.minecraft.world.biome.BiomeGenBase;
import forestry.api.core.IErrorState;
import forestry.api.genetics.IEffectData;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.IIndividualLiving;
/**
* Other implementations than Forestry's default one are not supported.
*
* @author SirSengir
*/
public interface IBee extends IIndividualLiving {
/**
* @return Bee's genetic information.
*/
IBeeGenome getGenome();
/**
* @return Genetic information of the bee's mate, null if unmated.
*/
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.
*
* @param flag
*/
void setIsNatural(boolean flag);
IEffectData[] doEffect(IEffectData[] storedData, IBeeHousing housing);
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<BiomeGenBase> getSuitableBiomes();
ItemStack[] getProduceList();
ItemStack[] getSpecialtyList();
ItemStack[] produceStacks(IBeeHousing housing);
IBee spawnPrincess(IBeeHousing housing);
IBee[] spawnDrones(IBeeHousing housing);
void plantFlowerRandom(IBeeHousing housing);
IIndividual retrievePollen(IBeeHousing housing);
boolean pollinateRandom(IBeeHousing housing, IIndividual pollen);
}
@@ -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 forestry.api.genetics.IClassification;
public interface IBeeFactory {
/**
* Creates a new bee species. Automatically registered with AlleleManager.alleleRegistry.registerAllele() See
* IAlleleBeeSpeciesCustom and IAlleleSpeciesCustom 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.
*/
IAlleleBeeSpeciesCustom 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,47 @@
/*******************************************************************************
* 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;
/**
* Only the default implementation is supported.
*
* @author SirSengir
*
*/
public interface IBeeGenome extends IGenome {
IAlleleBeeSpecies getPrimary();
IAlleleBeeSpecies getSecondary();
float getSpeed();
int getLifespan();
int getFertility();
EnumTolerance getToleranceTemp();
EnumTolerance getToleranceHumid();
boolean getNocturnal();
boolean getTolerantFlyer();
boolean getCaveDwelling();
IFlowerProvider getFlowerProvider();
int getFlowering();
int[] getTerritory();
IAlleleBeeEffect getEffect();
}
@@ -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.apiculture;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import com.mojang.authlib.GameProfile;
import forestry.api.core.IClimateProvider;
import forestry.api.core.IErrorLogicSource;
import forestry.api.genetics.IHousing;
public interface IBeeHousing extends IHousing, IClimateProvider, IErrorLogicSource {
/**
* Used by BeeManager.beeRoot.createBeeHousingModifier(IBeeHousing housing) to combine bee modifiers from several
* sources that can change over time.
*
* @return IBeeModifiers from the housing, frames, etc.
*/
Iterable<IBeeModifier> getBeeModifiers();
/**
* Used by BeeManager.beeRoot.createBeeHousingListener(IBeeHousing housing) 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();
World getWorld();
GameProfile getOwner();
/**
* @since Forestry 4.2
* @return exact coordinates where bee FX should spawn from
*/
Vec3 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,14 @@
/*******************************************************************************
* 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 IBeeIconColourProvider {
int getIconColour(int renderPass);
}
@@ -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.apiculture;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
public interface IBeeIconProvider {
void registerIcons(IIconRegister register);
IIcon getIcon(EnumBeeType type, int renderPass);
}
@@ -0,0 +1,30 @@
/*******************************************************************************
* 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,77 @@
/*******************************************************************************
* 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 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, 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. Cannot be used together with SelfUnlighted
*/
boolean isSelfLighted();
/**
* @return Boolean indicating if housing can ignore lightness/day. Cannot be used together with SelfLighted
*/
default boolean isSelfUnlighted() {
return false;
}
/**
* @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,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.genetics.IMutation;
public interface IBeeMutation extends IMutation {
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,11 @@
/*******************************************************************************
* 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.IMutationCustom;
public interface IBeeMutationCustom extends IBeeMutation, IMutationCustom {
}
@@ -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 forestry.api.genetics.IAllele;
public interface IBeeMutationFactory {
/**
* Creates a new bee mutation. Automatically registered with BeeManager.beeRoot.registerMutation() See
* IBeeMutationCustom and IMutationCustom 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.
*/
IBeeMutationCustom createMutation(IAlleleBeeSpecies parentBee0, IAlleleBeeSpecies parentBee1, IAllele[] result,
int chance);
}
@@ -0,0 +1,127 @@
/*******************************************************************************
* 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.ArrayList;
import java.util.Collection;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import com.mojang.authlib.GameProfile;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.ISpeciesRoot;
public interface IBeeRoot extends ISpeciesRoot {
/**
* @return true if passed item is a Forestry bee. Equal to getType(ItemStack stack) != EnumBeeType.NONE
*/
@Override
boolean isMember(ItemStack stack);
/**
* @return {@link IBee} pattern parsed from the passed stack's nbt data.
*/
@Override
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 */
/**
* @param world
* @return {@link IApiaristTracker} associated with the passed world.
*/
IApiaristTracker getBreedingTracker(World world, GameProfile player);
/* BEE SPECIFIC */
/**
* @return type of bee encoded on the itemstack. EnumBeeType.NONE if it isn't a bee.
*/
@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(World world, 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
ArrayList<IBee> getIndividualTemplates();
/* MUTATIONS */
@Override
Collection<IBeeMutation> getMutations(boolean shuffle);
/* GAME MODE */
void resetBeekeepingMode();
ArrayList<IBeekeepingMode> getBeekeepingModes();
IBeekeepingMode getBeekeepingMode(World world);
IBeekeepingMode getBeekeepingMode(String name);
void registerBeekeepingMode(IBeekeepingMode mode);
void setBeekeepingMode(World world, String name);
/* 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,57 @@
/*******************************************************************************
* 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.player.EntityPlayerMP;
import forestry.api.core.INBTTagable;
/**
* Stores beekeeping logic for bee housings. Get one with BeeManager.beeRoot.createBeekeepingLogic(IBeeHousing housing)
* Save and load it to NBT using the INBTTagable methods.
*/
public interface IBeekeepingLogic extends INBTTagable {
/* 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();
/* CLIENT */
/**
* Call this when the housing comes into view of the client. (i.e. when tile.getDescriptionPacket() is called)
*/
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.
*/
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.
*/
void doBeeFX();
}
@@ -0,0 +1,74 @@
/*******************************************************************************
* 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.ArrayList;
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.
*/
ArrayList<String> getDescription();
/**
* @return Float used to modify the wear on comb frames.
*/
float getWearModifier();
/**
* @param queen
* @return fertility taking into account the birthing queen and surroundings.
*/
int getFinalFertility(IBee queen, World world, int x, int y, int z);
/**
* @param queen
* @return true if the queen is genetically "fatigued" and should not be reproduced anymore.
*/
boolean isFatigued(IBee queen, IBeeHousing housing);
/**
* @param queen
* @param 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);
/**
*
* @param queen
* @param offspring
* @param 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);
/**
* @param queen
* @return true if an offspring of this queen is considered a natural
*/
boolean isNaturalOffspring(IBee queen);
/**
* @param 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,38 @@
/*******************************************************************************
* 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.Collection;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
/**
* Bees can be seeded either as hive drops or as mutation results.
*
* Add IHiveDrops with HiveManager.get___Hive.addDrop
*
* @author SirSengir
*/
public interface IHiveDrop {
ItemStack getPrincess(World world, int x, int y, int z, int fortune);
Collection<ItemStack> getDrones(World world, int x, int y, int z, int fortune);
Collection<ItemStack> getAdditional(World world, int x, int y, int z, int fortune);
/**
* Chance to drop. Default drops have 80 (= 80 %).
*
* @param world Minecraft world this is called for.
* @param x x-Coordinate of the broken hive.
* @param y y-Coordinate of the broken hive.
* @param z z-Coordinate of the broken hive.
* @return Chance for drop as an integer of 0 - 100.
*/
int getChance(World world, int x, int y, int z);
}
@@ -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 java.util.List;
import javax.annotation.Nullable;
import net.minecraft.item.ItemStack;
import net.minecraftforge.event.entity.player.ItemTooltipEvent;
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 null if it has been broken.
*/
ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear);
IBeeModifier getBeeModifier();
/**
* Provides an override for the "Hold Shift" tooltip info for a frame.<br>
* Called by {@link forestry.apiculture.EventHandlerApiculture#addFrameTooltip(ItemTooltipEvent)}.
*
* @return The info to display for this frame, or null if default generated info.
*/
@Nullable
default List<String> getFrameTooltip() {
return null;
}
}
@@ -0,0 +1,17 @@
/*******************************************************************************
* 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.Block;
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(Block block, int meta);
}
@@ -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;
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);
default String getDescription() {
return null;
}
}
@@ -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.apiculture.hives;
public class HiveManager {
public static IHiveRegistry hiveRegistry;
public static IHiveGenHelper genHelper;
}
@@ -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.hives;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
public interface IHiveDescription {
/**
* The hive generator for this hive.
*/
IHiveGen getHiveGen();
/**
* The hive block to be placed in the world.
*/
Block getBlock();
int getMeta();
/**
* 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(BiomeGenBase 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, int x, int y, int z);
}
@@ -0,0 +1,27 @@
/*******************************************************************************
* 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.world.World;
public interface IHiveGen {
/**
* return a Y value that the hive should try to generate at. returns negative if the hive can't be placed anywhere.
*/
int getYForHive(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, int x, int y, int z);
/**
* returns true if the hive can safely replace the block at this location.
*/
boolean canReplace(World world, int x, int y, int z);
}
@@ -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.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,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 java.util.List;
import forestry.api.apiculture.IHiveDrop;
public interface IHiveRegistry {
/* Forestry Hive Names */
public static final String forest = "Forestry:forest";
public static final String meadows = "Forestry:meadows";
public static final String desert = "Forestry:desert";
public static final String jungle = "Forestry:jungle";
public static final String end = "Forestry:end";
public static final String snow = "Forestry:snow";
public static final String swamp = "Forestry:swamp";
/**
* 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,9 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
@API(apiVersion = "4.1.0", owner = "ForestryAPI|apiculture", provides = "ForestryAPI|hives")
package forestry.api.apiculture.hives;
import cpw.mods.fml.common.API;
@@ -0,0 +1,9 @@
/*******************************************************************************
* Copyright 2011-2014 SirSengir
*
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
******************************************************************************/
@API(apiVersion = "5.0.0", owner = "ForestryAPI|core", provides = "ForestryAPI|apiculture")
package forestry.api.apiculture;
import cpw.mods.fml.common.API;
@@ -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 net.minecraft.util.StatCollector;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IFruitFamily;
public enum EnumFruitFamily implements IFruitFamily {
PRUNES("prunes", "Prunus domestica"),
POMES("pomes", "Pomum"),
JUNGLE("jungle", "Tropicus"),
NUX("nuts", "Nux");
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 StatCollector.translateToLocal("for.family." + uid);
}
@Override
public String getDescription() {
return StatCollector.translateToLocal("for.family." + uid + ".description");
}
}
@@ -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.arboriculture;
import forestry.api.genetics.ISpeciesType;
public enum EnumGermlingType implements ISpeciesType {
SAPLING("sapling"),
BLOSSOM("blossom"),
POLLEN("pollen"),
GERMLING("germling"),
NONE("none");
public static final EnumGermlingType[] VALUES = values();
private final String name;
EnumGermlingType(String name) {
this.name = name;
}
public String getName() {
return name;
}
}
@@ -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 EnumGrowthConditions {
HOSTILE,
PALTRY,
NORMAL,
GOOD,
EXCELLENT
}
@@ -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;
public enum EnumLeafType {
DECIDUOUS,
CONIFERS,
JUNGLE,
WILLOW,
MAPLE,
PALM
}
@@ -0,0 +1,103 @@
/*******************************************************************************
* 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 net.minecraftforge.common.EnumPlantType;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleArea;
import forestry.api.genetics.IAlleleBoolean;
import forestry.api.genetics.IAlleleFloat;
import forestry.api.genetics.IAlleleInteger;
import forestry.api.genetics.IAllelePlantType;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IFruitFamily;
import forestry.api.genetics.ISpeciesRoot;
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),
/**
* {@link IGrowthProvider}, determines conditions required by the tree to grow.
*/
GROWTH(IAlleleGrowth.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),
/**
* May add additional tolerances for {@link EnumPlantTypes}.
*/
PLANT(IAllelePlantType.class),
/**
* Determines the speed at which fruit will ripen on this tree.
*/
SAPPINESS(IAlleleFloat.class),
/**
* Territory for leaf effects. Unused.
*/
TERRITORY(IAlleleArea.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);
final Class<? extends IAllele> clss;
/**
* Cached values() array for frequent read-only operations, the array should NOT be mutated.
*/
public static final EnumTreeChromosome[] VALUES = values();
EnumTreeChromosome(Class<? extends IAllele> clss) {
this.clss = clss;
}
@Override
public Class<? extends IAllele> getAlleleClass() {
return clss;
}
@Override
public String getName() {
return this.toString().toLowerCase(Locale.ENGLISH);
}
@Override
public ISpeciesRoot getSpeciesRoot() {
return TreeManager.treeRoot;
}
}
@@ -0,0 +1,93 @@
/*******************************************************************************
* 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;
import net.minecraft.nbt.NBTTagCompound;
public enum EnumWoodType {
LARCH,
TEAK,
ACACIA,
LIME,
CHESTNUT,
WENGE,
BAOBAB,
SEQUOIA(4.0f),
KAPOK,
EBONY,
MAHOGANY,
BALSA(1.0f),
WILLOW,
WALNUT,
GREENHEART(7.5f),
CHERRY,
MAHOE,
POPLAR,
PALM,
PAPAYA,
PINE(3.0f),
PLUM,
MAPLE,
CITRUS,
GIGANTEUM,
IPE,
PADAUK,
COCOBOLO,
ZEBRAWOOD;
public static final float DEFAULT_HARDNESS = 2.0f;
public static final EnumWoodType[] VALUES = values();
private final float hardness;
EnumWoodType() {
this.hardness = DEFAULT_HARDNESS;
}
EnumWoodType(float hardness) {
this.hardness = hardness;
}
public float getHardness() {
return hardness;
}
/**
* @deprecated since Forestry 4.2. Woods use itemDamage instead of NBT now
*/
@Deprecated
public void saveToCompound(NBTTagCompound compound) {
compound.setInteger("WoodType", ordinal());
}
/**
* @deprecated since Forestry 4.2. Woods use itemDamage instead of NBT now
*/
@Deprecated
public static EnumWoodType getFromCompound(NBTTagCompound compound) {
if (compound != null) {
int typeOrdinal = compound.getInteger("WoodType");
if (typeOrdinal >= 0 && typeOrdinal < VALUES.length) {
return VALUES[typeOrdinal];
}
}
return EnumWoodType.LARCH;
}
public static EnumWoodType getRandom(Random random) {
return VALUES[random.nextInt(VALUES.length)];
}
@Override
public String toString() {
return super.toString().toLowerCase(Locale.ENGLISH);
}
}
@@ -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 forestry.api.genetics.IAllele;
/**
* Simple allele encapsulating an {@link IFruitProvider}.
*/
public interface IAlleleFruit extends IAllele {
IFruitProvider getProvider();
}
@@ -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 forestry.api.genetics.IAllele;
/**
* Simple allele encapsulating an {@link IGrowthProvider}.
*/
public interface IAlleleGrowth extends IAllele {
IGrowthProvider getProvider();
}
@@ -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.world.World;
import forestry.api.genetics.IAlleleEffect;
import forestry.api.genetics.IEffectData;
/**
* Simple allele encapsulating a leaf effect. (Not implemented)
*/
public interface IAlleleLeafEffect extends IAlleleEffect {
IEffectData doEffect(ITreeGenome genome, IEffectData storedData, World world, int x, int y, int z);
}
@@ -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 java.util.Collection;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.EnumPlantType;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.genetics.IAlleleSpecies;
import forestry.api.genetics.IFruitFamily;
public interface IAlleleTreeSpecies extends IAlleleSpecies {
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();
/* TEXTURES AND OVERRIDES */
int getLeafColour(boolean pollinated);
@SideOnly(Side.CLIENT)
IIcon getLeafIcon(boolean pollinated, boolean fancy);
@SideOnly(Side.CLIENT)
IIcon getGermlingIcon(EnumGermlingType type, int renderPass);
@SideOnly(Side.CLIENT)
int getGermlingColour(EnumGermlingType type, int renderPass);
}
@@ -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.minecraftforge.common.EnumPlantType;
import forestry.api.genetics.IAlleleSpeciesCustom;
import forestry.api.genetics.IFruitFamily;
public interface IAlleleTreeSpeciesCustom extends IAlleleSpeciesCustom, IAlleleTreeSpecies {
/** Add a fruit family for this tree. Trees can have multiple fruit families. */
IAlleleTreeSpeciesCustom addFruitFamily(IFruitFamily family);
/** Set the minecraft plant type for this tree. Default is Plains. */
IAlleleTreeSpeciesCustom setPlantType(EnumPlantType type);
}
@@ -0,0 +1,11 @@
/*******************************************************************************
* 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,72 @@
/*******************************************************************************
* 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.texture.IIconRegister;
import net.minecraft.item.ItemStack;
import net.minecraft.world.IBlockAccess;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.genetics.IFruitFamily;
public interface IFruitProvider {
IFruitFamily getFamily();
int getColour(ITreeGenome genome, IBlockAccess world, int x, int y, int z, int ripeningTime);
boolean markAsFruitLeaf(ITreeGenome genome, World world, int x, int y, int z);
int getRipeningPeriod();
// / Products, Chance
ItemStack[] getProducts();
// / Specialty, Chance
ItemStack[] getSpecialty();
ItemStack[] getFruits(ITreeGenome genome, World world, int x, int y, int z, int ripeningTime);
/**
* @return Short, human-readable identifier used in the treealyzer.
*/
String getDescription();
/* TEXTURE OVERLAY */
/**
* @param genome
* @param world
* @param x
* @param y
* @param z
* @param ripeningTime Elapsed ripening time for the fruit.
* @param fancy
* @return IIcon index of the texture to overlay on the leaf block.
*/
short getIconIndex(ITreeGenome genome, IBlockAccess world, int x, int y, int z, int ripeningTime, boolean fancy);
/**
* @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.
*
* @param genome
* @param world
* @param x
* @param y
* @param z
* @return true if a fruit block was spawned, false otherwise.
*/
boolean trySpawnFruitBlock(ITreeGenome genome, World world, int x, int y, int z);
@SideOnly(Side.CLIENT)
void registerIcons(IIconRegister register);
}
@@ -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.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
/**
* 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 IGermlingIconProvider {
void registerIcons(IIconRegister register);
IIcon getIcon(EnumGermlingType type, int renderPass);
}
@@ -0,0 +1,38 @@
/*******************************************************************************
* 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.world.World;
public interface IGrowthProvider {
/**
* Check to see whether a sapling at the given location with the given genome can grow into a tree.
*
* @param genome Genome of the tree this is called for.
* @param world Minecraft world the tree will inhabit.
* @param xPos x-Coordinate to attempt growth at.
* @param yPos y-Coordinate to attempt growth at.
* @param zPos z-Coordinate to attempt growth at.
* @param expectedGirth Trunk size of the tree to generate.
* @param expectedHeight Height of the tree to generate.
* @return true if the tree can grow at the given coordinates, false otherwise.
*/
boolean canGrow(ITreeGenome genome, World world, int xPos, int yPos, int zPos, int expectedGirth,
int expectedHeight);
EnumGrowthConditions getGrowthConditions(ITreeGenome genome, World world, int xPos, int yPos, int zPos);
/**
* @return Short, human-readable identifier used in the treealyzer.
*/
String getDescription();
/**
* @return Detailed description of growth behaviour used in the treealyzer.
*/
String[] getInfo();
}
@@ -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 net.minecraft.util.IIcon;
/**
* Provides icons for leaves. Used by TreeManager.treeFactory.createSpecies() Get a default Forestry implementation from
* TreeManager.treeFactory.getLeafIconProvider() or implement your own.
*
* 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 ILeafIconProvider {
IIcon getIcon(boolean pollinated, boolean fancy);
int getColor(boolean pollinated);
}
@@ -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 net.minecraft.world.World;
public interface ILeafTickHandler {
boolean onRandomLeafTick(ITree tree, World world, int x, int y, int z, boolean isDestroyed);
}
@@ -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 net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
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 x x-Coordinate of the broken leaf block.
* @param y y-Coordinate of the broken leaf block.
* @param z z-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, int x, int y, int z);
}
Loaded 100 of 2717 files, more files were not shown because too many files have changed in this diff. Show more