Compare commits
No commits in common. "BOP-1.16.4-13.x.x" and "BOP-1.7.10-2.1.x" have entirely different histories.
BOP-1.16.4
...
BOP-1.7.10
|
@ -1,27 +0,0 @@
|
||||||
---
|
|
||||||
name: 1.16.3 Standalone Bug
|
|
||||||
about: For bugs that occur with Biomes O' Plenty for 1.16.3. We do not support older versions!
|
|
||||||
title: ''
|
|
||||||
labels: bug-minor
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Bug Report
|
|
||||||
|
|
||||||
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
|
|
||||||
|
|
||||||
### What's the issue you encountered?
|
|
||||||
|
|
||||||
[ Describe the issue in detail and what you were doing beforehand. ]</br>
|
|
||||||
|
|
||||||
### How can the issue be reproduced?
|
|
||||||
|
|
||||||
[ Include a detailed step by step process for recreating your issue with only Biomes O' Plenty installed. ]</br>
|
|
||||||
|
|
||||||
### Logs
|
|
||||||
|
|
||||||
[ Please include any relevant logs here. This can be done by dragging and dropping your log files into the issue. ]</br>
|
|
||||||
|
|
||||||
### Mod Version
|
|
||||||
[ Please put the version of the mod you were using here. ]</br>
|
|
|
@ -1,23 +0,0 @@
|
||||||
---
|
|
||||||
name: 1.16.3 Standalone Crash
|
|
||||||
about: For crashes that occur with Biomes O' Plenty for 1.16.3. We do not support older versions!
|
|
||||||
title: ''
|
|
||||||
labels: crash
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Bug Report
|
|
||||||
|
|
||||||
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
|
|
||||||
|
|
||||||
### How can the crash be reproduced?
|
|
||||||
|
|
||||||
[ Include a detailed step by step process for recreating your crash with only Biomes O' Plenty installed. ]</br>
|
|
||||||
|
|
||||||
### Crash Report and Logs
|
|
||||||
|
|
||||||
[ Please include your crash report and logs here. This can be done by dragging and dropping your log files and crash report files into the issue. ]</br>
|
|
||||||
|
|
||||||
### Mod Version
|
|
||||||
[ Please put the version of the mod you were using here. ]</br>
|
|
|
@ -1,20 +0,0 @@
|
||||||
---
|
|
||||||
name: 1.16.3 Feature Request
|
|
||||||
about: Feature requests for Biomes O' Plenty for 1.16.3. We do not support older versions!
|
|
||||||
title: ''
|
|
||||||
labels: feature
|
|
||||||
assignees: ''
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Feature Request
|
|
||||||
|
|
||||||
[ Lines between [ ] (square brackets) should be removed before posting. ]</br>
|
|
||||||
|
|
||||||
### What feature are you suggesting?
|
|
||||||
|
|
||||||
[ Provide an overview of the feature being suggested. ]</br>
|
|
||||||
|
|
||||||
### Why should it be added?
|
|
||||||
|
|
||||||
[ Describe the benefits of implementing this feature. ]</br>
|
|
|
@ -1,5 +0,0 @@
|
||||||
blank_issues_enabled: false
|
|
||||||
contact_links:
|
|
||||||
- name: Glitchfiend Discord
|
|
||||||
url: https://discord.gg/GyyzU6T
|
|
||||||
about: Please ask general questions here instead of opening issues for them.
|
|
|
@ -1,28 +1,45 @@
|
||||||
/build/
|
*.sh
|
||||||
|
|
||||||
|
LICENSE.txt
|
||||||
|
|
||||||
|
temp/*
|
||||||
|
runtime/*
|
||||||
|
reobf/*
|
||||||
|
logs/*
|
||||||
|
lib/*
|
||||||
|
jars/*
|
||||||
|
forge/*
|
||||||
|
eclipse/*
|
||||||
|
docs/*
|
||||||
|
conf/*
|
||||||
|
bin/*
|
||||||
|
.gradle/*
|
||||||
|
.settings/*
|
||||||
|
run/*
|
||||||
|
|
||||||
|
src/minecraft/cpw/*
|
||||||
|
src/minecraft/net/minecraft/*
|
||||||
|
src/minecraft/net/minecraftforge/classloading/*
|
||||||
|
src/minecraft/net/minecraftforge/common/*
|
||||||
|
src/minecraft/net/minecraftforge/client/*
|
||||||
|
src/minecraft/net/minecraftforge/event/*
|
||||||
|
src/minecraft/net/minecraftforge/liquids/*
|
||||||
|
src/minecraft/net/minecraftforge/oredict/*
|
||||||
|
src/minecraft/net/minecraftforge/transformers/*
|
||||||
|
src/minecraft/paulscode/*
|
||||||
|
src/minecraft/ibxm/*
|
||||||
|
|
||||||
|
src/minecraft/Start.java
|
||||||
|
|
||||||
|
src/minecraft/mcpmod.info
|
||||||
|
src/minecraft/mcp.png
|
||||||
|
src/minecraft/forge_logo.png
|
||||||
|
src/minecraft/forge_at.cfg
|
||||||
|
src/minecraft/fmlversion.properties
|
||||||
|
src/minecraft/fml_marker.cfg
|
||||||
|
src/minecraft/fml_at.cfg
|
||||||
|
build_number.properties
|
||||||
|
.project
|
||||||
|
.classpath
|
||||||
/bin/
|
/bin/
|
||||||
/out/
|
/build/
|
||||||
/Mixin/
|
|
||||||
/repo/
|
|
||||||
/run/
|
|
||||||
/logs/
|
|
||||||
.idea/*
|
|
||||||
/.gradle/
|
|
||||||
/.settings/
|
|
||||||
/.classpath
|
|
||||||
/.project
|
|
||||||
|
|
||||||
# OS generated files
|
|
||||||
*.DS_Store
|
|
||||||
|
|
||||||
# IntelliJ project files
|
|
||||||
*.iml
|
|
||||||
*.ipr
|
|
||||||
*.iws
|
|
||||||
|
|
||||||
*.launch
|
|
||||||
mappings/.gradle/
|
|
||||||
#mappings/mcp/
|
|
||||||
mappings/build/
|
|
||||||
mappings/*.csv
|
|
||||||
mappings/.project
|
|
||||||
mappings/last_updated.json
|
|
||||||
|
|
|
@ -1,60 +0,0 @@
|
||||||
@Library('forge-shared-library')_
|
|
||||||
|
|
||||||
pipeline {
|
|
||||||
options {
|
|
||||||
disableConcurrentBuilds()
|
|
||||||
}
|
|
||||||
agent {
|
|
||||||
docker {
|
|
||||||
image 'gradle:jdk8'
|
|
||||||
args '-v forgegc:/home/gradle/.gradle/'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
environment {
|
|
||||||
GRADLE_ARGS = '--no-daemon --console=plain' // No daemon for now as FG3 kinda derps. //'-Dorg.gradle.daemon.idletimeout=5000'
|
|
||||||
JENKINS_HEAD = 'https://wiki.jenkins-ci.org/download/attachments/2916393/headshot.png'
|
|
||||||
}
|
|
||||||
|
|
||||||
stages {
|
|
||||||
stage('fetch') {
|
|
||||||
steps {
|
|
||||||
checkout scm
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('setup') {
|
|
||||||
steps {
|
|
||||||
withGradle {
|
|
||||||
sh './gradlew ${GRADLE_ARGS} --refresh-dependencies'
|
|
||||||
}
|
|
||||||
script {
|
|
||||||
env.MYVERSION = sh(returnStdout: true, script: './gradlew :properties -q | grep "^version:" | awk \'{print $2}\'').trim()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('changelog') {
|
|
||||||
when {
|
|
||||||
not {
|
|
||||||
changeRequest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
writeChangelog(currentBuild, "build/BiomesOPlenty-${env.MYVERSION}-changelog.txt")
|
|
||||||
}
|
|
||||||
}
|
|
||||||
stage('publish') {
|
|
||||||
when {
|
|
||||||
not {
|
|
||||||
changeRequest()
|
|
||||||
}
|
|
||||||
}
|
|
||||||
environment {
|
|
||||||
CURSE_API_KEY = credentials('curse-api-key')
|
|
||||||
}
|
|
||||||
steps {
|
|
||||||
withGradle {
|
|
||||||
sh './gradlew ${GRADLE_ARGS} :uploadArchives curseforge -PcurseApiKey=${CURSE_API_KEY}'
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
325
LICENSE.txt
325
LICENSE.txt
|
@ -1,325 +0,0 @@
|
||||||
Creative Commons Attribution-NonCommercial-NoDerivatives 4.0
|
|
||||||
International Public License
|
|
||||||
|
|
||||||
By exercising the Licensed Rights (defined below), You accept and agree
|
|
||||||
to be bound by the terms and conditions of this Creative Commons
|
|
||||||
Attribution-NonCommercial-NoDerivatives 4.0 International Public
|
|
||||||
License ("Public License"). To the extent this Public License may be
|
|
||||||
interpreted as a contract, You are granted the Licensed Rights in
|
|
||||||
consideration of Your acceptance of these terms and conditions, and the
|
|
||||||
Licensor grants You such rights in consideration of benefits the
|
|
||||||
Licensor receives from making the Licensed Material available under
|
|
||||||
these terms and conditions.
|
|
||||||
|
|
||||||
|
|
||||||
Section 1 -- Definitions.
|
|
||||||
|
|
||||||
a. Adapted Material means material subject to Copyright and Similar
|
|
||||||
Rights that is derived from or based upon the Licensed Material
|
|
||||||
and in which the Licensed Material is translated, altered,
|
|
||||||
arranged, transformed, or otherwise modified in a manner requiring
|
|
||||||
permission under the Copyright and Similar Rights held by the
|
|
||||||
Licensor. For purposes of this Public License, where the Licensed
|
|
||||||
Material is a musical work, performance, or sound recording,
|
|
||||||
Adapted Material is always produced where the Licensed Material is
|
|
||||||
synched in timed relation with a moving image.
|
|
||||||
|
|
||||||
b. Copyright and Similar Rights means copyright and/or similar rights
|
|
||||||
closely related to copyright including, without limitation,
|
|
||||||
performance, broadcast, sound recording, and Sui Generis Database
|
|
||||||
Rights, without regard to how the rights are labeled or
|
|
||||||
categorized. For purposes of this Public License, the rights
|
|
||||||
specified in Section 2(b)(1)-(2) are not Copyright and Similar
|
|
||||||
Rights.
|
|
||||||
|
|
||||||
c. Effective Technological Measures means those measures that, in the
|
|
||||||
absence of proper authority, may not be circumvented under laws
|
|
||||||
fulfilling obligations under Article 11 of the WIPO Copyright
|
|
||||||
Treaty adopted on December 20, 1996, and/or similar international
|
|
||||||
agreements.
|
|
||||||
|
|
||||||
d. Exceptions and Limitations means fair use, fair dealing, and/or
|
|
||||||
any other exception or limitation to Copyright and Similar Rights
|
|
||||||
that applies to Your use of the Licensed Material.
|
|
||||||
|
|
||||||
e. Licensed Material means the artistic or literary work, database,
|
|
||||||
or other material to which the Licensor applied this Public
|
|
||||||
License.
|
|
||||||
|
|
||||||
f. Licensed Rights means the rights granted to You subject to the
|
|
||||||
terms and conditions of this Public License, which are limited to
|
|
||||||
all Copyright and Similar Rights that apply to Your use of the
|
|
||||||
Licensed Material and that the Licensor has authority to license.
|
|
||||||
|
|
||||||
g. Licensor means the individual(s) or entity(ies) granting rights
|
|
||||||
under this Public License.
|
|
||||||
|
|
||||||
h. NonCommercial means not primarily intended for or directed towards
|
|
||||||
commercial advantage or monetary compensation. For purposes of
|
|
||||||
this Public License, the exchange of the Licensed Material for
|
|
||||||
other material subject to Copyright and Similar Rights by digital
|
|
||||||
file-sharing or similar means is NonCommercial provided there is
|
|
||||||
no payment of monetary compensation in connection with the
|
|
||||||
exchange.
|
|
||||||
|
|
||||||
i. Share means to provide material to the public by any means or
|
|
||||||
process that requires permission under the Licensed Rights, such
|
|
||||||
as reproduction, public display, public performance, distribution,
|
|
||||||
dissemination, communication, or importation, and to make material
|
|
||||||
available to the public including in ways that members of the
|
|
||||||
public may access the material from a place and at a time
|
|
||||||
individually chosen by them.
|
|
||||||
|
|
||||||
j. Sui Generis Database Rights means rights other than copyright
|
|
||||||
resulting from Directive 96/9/EC of the European Parliament and of
|
|
||||||
the Council of 11 March 1996 on the legal protection of databases,
|
|
||||||
as amended and/or succeeded, as well as other essentially
|
|
||||||
equivalent rights anywhere in the world.
|
|
||||||
|
|
||||||
k. You means the individual or entity exercising the Licensed Rights
|
|
||||||
under this Public License. Your has a corresponding meaning.
|
|
||||||
|
|
||||||
|
|
||||||
Section 2 -- Scope.
|
|
||||||
|
|
||||||
a. License grant.
|
|
||||||
|
|
||||||
1. Subject to the terms and conditions of this Public License,
|
|
||||||
the Licensor hereby grants You a worldwide, royalty-free,
|
|
||||||
non-sublicensable, non-exclusive, irrevocable license to
|
|
||||||
exercise the Licensed Rights in the Licensed Material to:
|
|
||||||
|
|
||||||
a. reproduce and Share the Licensed Material, in whole or
|
|
||||||
in part, for NonCommercial purposes only; and
|
|
||||||
|
|
||||||
b. produce and reproduce, but not Share, Adapted Material
|
|
||||||
for NonCommercial purposes only.
|
|
||||||
|
|
||||||
2. Exceptions and Limitations. For the avoidance of doubt, where
|
|
||||||
Exceptions and Limitations apply to Your use, this Public
|
|
||||||
License does not apply, and You do not need to comply with
|
|
||||||
its terms and conditions.
|
|
||||||
|
|
||||||
3. Term. The term of this Public License is specified in Section
|
|
||||||
6(a).
|
|
||||||
|
|
||||||
4. Media and formats; technical modifications allowed. The
|
|
||||||
Licensor authorizes You to exercise the Licensed Rights in
|
|
||||||
all media and formats whether now known or hereafter created,
|
|
||||||
and to make technical modifications necessary to do so. The
|
|
||||||
Licensor waives and/or agrees not to assert any right or
|
|
||||||
authority to forbid You from making technical modifications
|
|
||||||
necessary to exercise the Licensed Rights, including
|
|
||||||
technical modifications necessary to circumvent Effective
|
|
||||||
Technological Measures. For purposes of this Public License,
|
|
||||||
simply making modifications authorized by this Section 2(a)
|
|
||||||
(4) never produces Adapted Material.
|
|
||||||
|
|
||||||
5. Downstream recipients.
|
|
||||||
|
|
||||||
a. Offer from the Licensor -- Licensed Material. Every
|
|
||||||
recipient of the Licensed Material automatically
|
|
||||||
receives an offer from the Licensor to exercise the
|
|
||||||
Licensed Rights under the terms and conditions of this
|
|
||||||
Public License.
|
|
||||||
|
|
||||||
b. No downstream restrictions. You may not offer or impose
|
|
||||||
any additional or different terms or conditions on, or
|
|
||||||
apply any Effective Technological Measures to, the
|
|
||||||
Licensed Material if doing so restricts exercise of the
|
|
||||||
Licensed Rights by any recipient of the Licensed
|
|
||||||
Material.
|
|
||||||
|
|
||||||
6. No endorsement. Nothing in this Public License constitutes or
|
|
||||||
may be construed as permission to assert or imply that You
|
|
||||||
are, or that Your use of the Licensed Material is, connected
|
|
||||||
with, or sponsored, endorsed, or granted official status by,
|
|
||||||
the Licensor or others designated to receive attribution as
|
|
||||||
provided in Section 3(a)(1)(A)(i).
|
|
||||||
|
|
||||||
b. Other rights.
|
|
||||||
|
|
||||||
1. Moral rights, such as the right of integrity, are not
|
|
||||||
licensed under this Public License, nor are publicity,
|
|
||||||
privacy, and/or other similar personality rights; however, to
|
|
||||||
the extent possible, the Licensor waives and/or agrees not to
|
|
||||||
assert any such rights held by the Licensor to the limited
|
|
||||||
extent necessary to allow You to exercise the Licensed
|
|
||||||
Rights, but not otherwise.
|
|
||||||
|
|
||||||
2. Patent and trademark rights are not licensed under this
|
|
||||||
Public License.
|
|
||||||
|
|
||||||
3. To the extent possible, the Licensor waives any right to
|
|
||||||
collect royalties from You for the exercise of the Licensed
|
|
||||||
Rights, whether directly or through a collecting society
|
|
||||||
under any voluntary or waivable statutory or compulsory
|
|
||||||
licensing scheme. In all other cases the Licensor expressly
|
|
||||||
reserves any right to collect such royalties, including when
|
|
||||||
the Licensed Material is used other than for NonCommercial
|
|
||||||
purposes.
|
|
||||||
|
|
||||||
|
|
||||||
Section 3 -- License Conditions.
|
|
||||||
|
|
||||||
Your exercise of the Licensed Rights is expressly made subject to the
|
|
||||||
following conditions.
|
|
||||||
|
|
||||||
a. Attribution.
|
|
||||||
|
|
||||||
1. If You Share the Licensed Material, You must:
|
|
||||||
|
|
||||||
a. retain the following if it is supplied by the Licensor
|
|
||||||
with the Licensed Material:
|
|
||||||
|
|
||||||
i. identification of the creator(s) of the Licensed
|
|
||||||
Material and any others designated to receive
|
|
||||||
attribution, in any reasonable manner requested by
|
|
||||||
the Licensor (including by pseudonym if
|
|
||||||
designated);
|
|
||||||
|
|
||||||
ii. a copyright notice;
|
|
||||||
|
|
||||||
iii. a notice that refers to this Public License;
|
|
||||||
|
|
||||||
iv. a notice that refers to the disclaimer of
|
|
||||||
warranties;
|
|
||||||
|
|
||||||
v. a URI or hyperlink to the Licensed Material to the
|
|
||||||
extent reasonably practicable;
|
|
||||||
|
|
||||||
b. indicate if You modified the Licensed Material and
|
|
||||||
retain an indication of any previous modifications; and
|
|
||||||
|
|
||||||
c. indicate the Licensed Material is licensed under this
|
|
||||||
Public License, and include the text of, or the URI or
|
|
||||||
hyperlink to, this Public License.
|
|
||||||
|
|
||||||
For the avoidance of doubt, You do not have permission under
|
|
||||||
this Public License to Share Adapted Material.
|
|
||||||
|
|
||||||
2. You may satisfy the conditions in Section 3(a)(1) in any
|
|
||||||
reasonable manner based on the medium, means, and context in
|
|
||||||
which You Share the Licensed Material. For example, it may be
|
|
||||||
reasonable to satisfy the conditions by providing a URI or
|
|
||||||
hyperlink to a resource that includes the required
|
|
||||||
information.
|
|
||||||
|
|
||||||
3. If requested by the Licensor, You must remove any of the
|
|
||||||
information required by Section 3(a)(1)(A) to the extent
|
|
||||||
reasonably practicable.
|
|
||||||
|
|
||||||
|
|
||||||
Section 4 -- Sui Generis Database Rights.
|
|
||||||
|
|
||||||
Where the Licensed Rights include Sui Generis Database Rights that
|
|
||||||
apply to Your use of the Licensed Material:
|
|
||||||
|
|
||||||
a. for the avoidance of doubt, Section 2(a)(1) grants You the right
|
|
||||||
to extract, reuse, reproduce, and Share all or a substantial
|
|
||||||
portion of the contents of the database for NonCommercial purposes
|
|
||||||
only and provided You do not Share Adapted Material;
|
|
||||||
|
|
||||||
b. if You include all or a substantial portion of the database
|
|
||||||
contents in a database in which You have Sui Generis Database
|
|
||||||
Rights, then the database in which You have Sui Generis Database
|
|
||||||
Rights (but not its individual contents) is Adapted Material; and
|
|
||||||
|
|
||||||
c. You must comply with the conditions in Section 3(a) if You Share
|
|
||||||
all or a substantial portion of the contents of the database.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 4 supplements and does not
|
|
||||||
replace Your obligations under this Public License where the Licensed
|
|
||||||
Rights include other Copyright and Similar Rights.
|
|
||||||
|
|
||||||
|
|
||||||
Section 5 -- Disclaimer of Warranties and Limitation of Liability.
|
|
||||||
|
|
||||||
a. UNLESS OTHERWISE SEPARATELY UNDERTAKEN BY THE LICENSOR, TO THE
|
|
||||||
EXTENT POSSIBLE, THE LICENSOR OFFERS THE LICENSED MATERIAL AS-IS
|
|
||||||
AND AS-AVAILABLE, AND MAKES NO REPRESENTATIONS OR WARRANTIES OF
|
|
||||||
ANY KIND CONCERNING THE LICENSED MATERIAL, WHETHER EXPRESS,
|
|
||||||
IMPLIED, STATUTORY, OR OTHER. THIS INCLUDES, WITHOUT LIMITATION,
|
|
||||||
WARRANTIES OF TITLE, MERCHANTABILITY, FITNESS FOR A PARTICULAR
|
|
||||||
PURPOSE, NON-INFRINGEMENT, ABSENCE OF LATENT OR OTHER DEFECTS,
|
|
||||||
ACCURACY, OR THE PRESENCE OR ABSENCE OF ERRORS, WHETHER OR NOT
|
|
||||||
KNOWN OR DISCOVERABLE. WHERE DISCLAIMERS OF WARRANTIES ARE NOT
|
|
||||||
ALLOWED IN FULL OR IN PART, THIS DISCLAIMER MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
b. TO THE EXTENT POSSIBLE, IN NO EVENT WILL THE LICENSOR BE LIABLE
|
|
||||||
TO YOU ON ANY LEGAL THEORY (INCLUDING, WITHOUT LIMITATION,
|
|
||||||
NEGLIGENCE) OR OTHERWISE FOR ANY DIRECT, SPECIAL, INDIRECT,
|
|
||||||
INCIDENTAL, CONSEQUENTIAL, PUNITIVE, EXEMPLARY, OR OTHER LOSSES,
|
|
||||||
COSTS, EXPENSES, OR DAMAGES ARISING OUT OF THIS PUBLIC LICENSE OR
|
|
||||||
USE OF THE LICENSED MATERIAL, EVEN IF THE LICENSOR HAS BEEN
|
|
||||||
ADVISED OF THE POSSIBILITY OF SUCH LOSSES, COSTS, EXPENSES, OR
|
|
||||||
DAMAGES. WHERE A LIMITATION OF LIABILITY IS NOT ALLOWED IN FULL OR
|
|
||||||
IN PART, THIS LIMITATION MAY NOT APPLY TO YOU.
|
|
||||||
|
|
||||||
c. The disclaimer of warranties and limitation of liability provided
|
|
||||||
above shall be interpreted in a manner that, to the extent
|
|
||||||
possible, most closely approximates an absolute disclaimer and
|
|
||||||
waiver of all liability.
|
|
||||||
|
|
||||||
|
|
||||||
Section 6 -- Term and Termination.
|
|
||||||
|
|
||||||
a. This Public License applies for the term of the Copyright and
|
|
||||||
Similar Rights licensed here. However, if You fail to comply with
|
|
||||||
this Public License, then Your rights under this Public License
|
|
||||||
terminate automatically.
|
|
||||||
|
|
||||||
b. Where Your right to use the Licensed Material has terminated under
|
|
||||||
Section 6(a), it reinstates:
|
|
||||||
|
|
||||||
1. automatically as of the date the violation is cured, provided
|
|
||||||
it is cured within 30 days of Your discovery of the
|
|
||||||
violation; or
|
|
||||||
|
|
||||||
2. upon express reinstatement by the Licensor.
|
|
||||||
|
|
||||||
For the avoidance of doubt, this Section 6(b) does not affect any
|
|
||||||
right the Licensor may have to seek remedies for Your violations
|
|
||||||
of this Public License.
|
|
||||||
|
|
||||||
c. For the avoidance of doubt, the Licensor may also offer the
|
|
||||||
Licensed Material under separate terms or conditions or stop
|
|
||||||
distributing the Licensed Material at any time; however, doing so
|
|
||||||
will not terminate this Public License.
|
|
||||||
|
|
||||||
d. Sections 1, 5, 6, 7, and 8 survive termination of this Public
|
|
||||||
License.
|
|
||||||
|
|
||||||
|
|
||||||
Section 7 -- Other Terms and Conditions.
|
|
||||||
|
|
||||||
a. The Licensor shall not be bound by any additional or different
|
|
||||||
terms or conditions communicated by You unless expressly agreed.
|
|
||||||
|
|
||||||
b. Any arrangements, understandings, or agreements regarding the
|
|
||||||
Licensed Material not stated herein are separate from and
|
|
||||||
independent of the terms and conditions of this Public License.
|
|
||||||
|
|
||||||
|
|
||||||
Section 8 -- Interpretation.
|
|
||||||
|
|
||||||
a. For the avoidance of doubt, this Public License does not, and
|
|
||||||
shall not be interpreted to, reduce, limit, restrict, or impose
|
|
||||||
conditions on any use of the Licensed Material that could lawfully
|
|
||||||
be made without permission under this Public License.
|
|
||||||
|
|
||||||
b. To the extent possible, if any provision of this Public License is
|
|
||||||
deemed unenforceable, it shall be automatically reformed to the
|
|
||||||
minimum extent necessary to make it enforceable. If the provision
|
|
||||||
cannot be reformed, it shall be severed from this Public License
|
|
||||||
without affecting the enforceability of the remaining terms and
|
|
||||||
conditions.
|
|
||||||
|
|
||||||
c. No term or condition of this Public License will be waived and no
|
|
||||||
failure to comply consented to unless expressly agreed to by the
|
|
||||||
Licensor.
|
|
||||||
|
|
||||||
d. Nothing in this Public License constitutes or may be interpreted
|
|
||||||
as a limitation upon, or waiver of, any privileges and immunities
|
|
||||||
that apply to the Licensor or You, including from the legal
|
|
||||||
processes of any jurisdiction or authority.
|
|
480
README.md
480
README.md
|
@ -1,17 +1,479 @@
|
||||||
<p align="center"><img src="https://i.imgur.com/HQ2opH6.png"></p>
|
[<img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png">](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
|
||||||
|
|
||||||
<p align="center"><img src="https://i.imgur.com/CYxKg5M.png"></p>
|
Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US).
|
||||||
|
|
||||||
<p align="center">https://discord.gg/GyyzU6T</p>
|
## Authors
|
||||||
|
|
||||||
**Biomes O' Plenty** is a **Minecraft mod** that adds **over 50 new biomes** to the Overworld, Nether, and End. From Lavender Fields to Redwood Forests and many more, all of our biomes are decorated with a variety of **new trees, flowers, and plants!**
|
- **Adubbz** - "Madman" - General, Technical, Mod Compatibility
|
||||||
|
|
||||||
-----------------
|
- **Amnet** - "Foreign Affairs" - General, Technical, Mod Compatibility
|
||||||
|
|
||||||
**Note:** To use the mod on a **server**, you must set the **level-type** setting in your server's config file to **biomesoplenty**
|
- **Forstride** - "World Painter" - Founder, Art, Biome Design, General
|
||||||
|
|
||||||
-----------------
|
- **ted80** - "Biome Fanatic" - Biome Execution, General
|
||||||
|
|
||||||
[<img src="http://i.creativecommons.org/l/by-nc-nd/3.0/88x31.png">](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US)
|
## Credits ##
|
||||||
|
|
||||||
|
- **gamax92** - Initial Forge Conversion
|
||||||
|
|
||||||
|
- **enchilado** - Mud Tool and Armour Textures
|
||||||
|
|
||||||
|
- **Tim Rurkowski** - Music author
|
||||||
|
|
||||||
Biomes O' Plenty is licensed under a [Creative Commons Attribution-NonCommercial-NoDerivs 4.0 Unported License](http://creativecommons.org/licenses/by-nc-nd/4.0/deed.en_US).
|
- **Soaryn** - Help making the Altar Frames
|
||||||
|
|
||||||
|
- **MineModder2000** - 256 high worlds
|
||||||
|
|
||||||
|
|
||||||
|
## Changelog
|
||||||
|
(Future changelogs can be found in the releases section)
|
||||||
|
|
||||||
|
Version 1.1.0 '24-09-13'
|
||||||
|
- Made steam particles animated
|
||||||
|
- Added the Phantom
|
||||||
|
- Removed the crafting recipe for ghastly souls (*I wonder where they went*)
|
||||||
|
- Changed the biomes in which billages can generate in by default
|
||||||
|
- Added Wither Wart
|
||||||
|
- Tweaked the liquid poison textures
|
||||||
|
- Updated several localizations (Props to VeryBigBro and Vexatos)
|
||||||
|
- Fixed the Mountain biome's height
|
||||||
|
- Added gravestone gen to the nether
|
||||||
|
- Changed how willow trees generate
|
||||||
|
- Added persimmons and persimmon trees
|
||||||
|
- Changed the hunger/saturation values for food
|
||||||
|
- Added smooth sky colour transitions (this was a Forge addition, but it's worth mentioning)
|
||||||
|
- Nerfed jungle spiders
|
||||||
|
- Changed the mod logo
|
||||||
|
- Added various coloured coral
|
||||||
|
- Tweaked kelp
|
||||||
|
- Added a few ocean biomes
|
||||||
|
- Oceanic Abyss
|
||||||
|
- Coral Reef
|
||||||
|
- Kelp Forest
|
||||||
|
- Added Forge Multipart microblocks integration
|
||||||
|
- Fixed rainfall values for snowy biomes
|
||||||
|
- Added the Ochre Acres biome
|
||||||
|
- Fixed bucket container items
|
||||||
|
- Increaed growth time for apple trees
|
||||||
|
- Added wading boots
|
||||||
|
- Added flippers
|
||||||
|
- Tweaked the Oasis biome
|
||||||
|
- Added custom village materials for various biomes
|
||||||
|
- Fixed block picking on stairs (Our OCD friend Leenhaart :P)
|
||||||
|
- Added Tropics Mountain Subbiome
|
||||||
|
- Added Hibiscus
|
||||||
|
- Added Lily of the Valley
|
||||||
|
- Added Burning Blossom
|
||||||
|
- Tweaked various plant/flower textures
|
||||||
|
- Renamed Aloe to Bromeliad
|
||||||
|
- Added Lavender
|
||||||
|
- Added the Lavender Fields biome
|
||||||
|
- Added a way to grow tiny cacti and cattails with bonemeal
|
||||||
|
- Deathblooms and thorns now hurt if shears aren't used
|
||||||
|
- Added Goldenrods
|
||||||
|
- Added Bluebells
|
||||||
|
- Switched to using isGenMineableReplaceable (which in turn fixed Underground Biomes compatibility with gems)
|
||||||
|
- Added Shrubs
|
||||||
|
- Added Wheat Grass
|
||||||
|
- Added Damp Grass
|
||||||
|
- Tweaked Moss generation
|
||||||
|
- Tweaked Moss texture
|
||||||
|
- Disabled rain in the Badlands
|
||||||
|
- Made moss no longer spread
|
||||||
|
- Updated to 1.6.4
|
||||||
|
- Added Miner's Delight
|
||||||
|
- Tweaked the way Berry Bushes render
|
||||||
|
- Updated the MFR API
|
||||||
|
- Updated the Forestry API
|
||||||
|
- Added config options for the ocean biomes, wither wart and burning blossom
|
||||||
|
- Added Icy Iris
|
||||||
|
- Added Flat Mushroom
|
||||||
|
- Added cocoa trees to the Tropical Rainforest
|
||||||
|
- Added jungle wood to trees in the Brushland and Scrubland
|
||||||
|
- Tweaked marsh generation
|
||||||
|
- Added mud to Marshes
|
||||||
|
- Renamed reeds to River Cane
|
||||||
|
- Added proper reeds (You'll know them when you see them)
|
||||||
|
|
||||||
|
Version 0.6.2 '20-08-13'
|
||||||
|
- Fixed bigtrees compatibility
|
||||||
|
- Fixed another bug with altars
|
||||||
|
|
||||||
|
Version 0.6.1 '16-08-13'
|
||||||
|
- Fixed food for the fifty-billionth time
|
||||||
|
- Added fr_CA localisation
|
||||||
|
- Added fr_FR localisation
|
||||||
|
- Added pl_PL localisation
|
||||||
|
- Added a config option for the Spring Water Regeneration Effect
|
||||||
|
- Tweaked some achievements
|
||||||
|
- Made puddles dry up faster
|
||||||
|
- Changed the height of the Grassland
|
||||||
|
- Promised Land Tweaks
|
||||||
|
- Fixed Spring Water Regeneration Effect
|
||||||
|
- Fixed stair hardness
|
||||||
|
- Added the Silkglades biome
|
||||||
|
- Added a config option to generate pumpkins without faces
|
||||||
|
- Added a config option to disable lethal decoration
|
||||||
|
- Tweaked Biome Dictionary definitions
|
||||||
|
- Tweaked Origin Valley sky colour
|
||||||
|
- Added sub biomes for the enhanced vanilla biomes
|
||||||
|
- Tweaked the barley texture
|
||||||
|
- Fixed quicksand deepness
|
||||||
|
- Added the Overgrown Greens biome
|
||||||
|
- Prevented the Nether from being overriden in default worlds unless Add to Default is set to true
|
||||||
|
- Fixed a crash with saplings
|
||||||
|
- Added a config option to disable vanilla's exposed stone feature
|
||||||
|
- Tweaked the Shrubland height
|
||||||
|
- Tweaked the Tundra height
|
||||||
|
- Fixed terrain generator "stripes"
|
||||||
|
- Fixed a crash with disabling structures
|
||||||
|
- Fixed some bugs with sacrificing
|
||||||
|
- Fixed some bugs with pine tree growth requirements and slabs
|
||||||
|
|
||||||
|
Version 0.6.0 '03-08-13'
|
||||||
|
- Ripped out old integration for BC pumps
|
||||||
|
- Fixed a server crash bug with sacrifical altars
|
||||||
|
- Fixed a bug with the German localisation
|
||||||
|
- Added config options for certain recipes
|
||||||
|
- Tweaked the Bayou and Lush Swamp heights
|
||||||
|
- Overhauled the Field biome
|
||||||
|
- Added spires to the wasteland
|
||||||
|
- Added a Savanna Plateau sub-biome
|
||||||
|
- Made mountainous biomes less ugly
|
||||||
|
- Fixed noms again
|
||||||
|
- Fixed a crash between RC and GT
|
||||||
|
- Added a zh_CN localisation
|
||||||
|
- Split the config file into sub files
|
||||||
|
|
||||||
|
Version 0.5.9.2 '30-07-13'
|
||||||
|
- Added the Chromaflora
|
||||||
|
- Changed willow trees in the Promised Land to swampy ivy trees
|
||||||
|
- Re-added clouds to the Promised Land
|
||||||
|
- Fixed the eating bug in multiplayer, now zip your traps about it!
|
||||||
|
- Russian translation tweaks (by VeryBigBro)
|
||||||
|
- Updated Forestry Integration and API
|
||||||
|
- Corrected loftwood recipes
|
||||||
|
- Updated ore dictionary registration for logs
|
||||||
|
- Tweaked fir log/plank textures
|
||||||
|
|
||||||
|
Version 0.5.9 '23-07-13'
|
||||||
|
- Fixed eating food
|
||||||
|
- Fixed some biome heights, decreased the amount of trees in the Snowy Confierous Forest
|
||||||
|
- Tweaked some flower textures, changed some achievement icons
|
||||||
|
- Fixed height for mangroves
|
||||||
|
- Added support for falling leaves from Better Grass & Leaves
|
||||||
|
- Fixed a crash bug with non-living entities entering poison ivy
|
||||||
|
- Updated the better leaf textures
|
||||||
|
- Fixed a crash with saplings
|
||||||
|
- Added Long Grass
|
||||||
|
- Added config option for disabling oceans
|
||||||
|
- Fixed an issue with the shroom powder texture
|
||||||
|
- Tweaked the Garden biome
|
||||||
|
- Tweaked the Shield biome
|
||||||
|
|
||||||
|
Version 0.5.8 '21-07-13'
|
||||||
|
- Removed the crappy Amethyst Tinkers Construct tools
|
||||||
|
- Redid the grave
|
||||||
|
- Berries now have a new texture
|
||||||
|
- Changed localized name of Berries to Berry
|
||||||
|
- Adjusted how common Scythes are damaged
|
||||||
|
- Added wild carrots
|
||||||
|
- Added salads
|
||||||
|
- Changed the texture for fast willow leaves
|
||||||
|
- Tweaked the Garden biome
|
||||||
|
- Added beach variation config options
|
||||||
|
- Added Russian translations (courtesy of Sodiet)
|
||||||
|
- Fixed the sky colours config option
|
||||||
|
- Plants no longer generate in invalid positions (causing them to them pop off)
|
||||||
|
- Reeds are now cut down properly
|
||||||
|
- Fixed poison dart particles
|
||||||
|
- Tweaked the creative tab icon
|
||||||
|
- Puddles now dry up faster
|
||||||
|
- Added support for full 256 terrain generation
|
||||||
|
- Tweaked sub-biomes
|
||||||
|
- Improved some sapling textures
|
||||||
|
- Tweaked the Alps sub biome
|
||||||
|
- Fixed the mod logo
|
||||||
|
- Fixed fluid localizations
|
||||||
|
- Fixed bucket container items
|
||||||
|
- Poison ivy no longer poisons players wearing leather pants and boots
|
||||||
|
- Tweaked some biomes to allow them to generate above 128
|
||||||
|
|
||||||
|
Version 0.5.7 '09-07-13'
|
||||||
|
- Full update to 1.6.2
|
||||||
|
- Adjusted the crafting recipes for Scythes
|
||||||
|
- Added sub-biomes
|
||||||
|
- Canyon Ravine
|
||||||
|
- Meadow Forest
|
||||||
|
- Thick Ominous Woods
|
||||||
|
- Pasture Meadow
|
||||||
|
- Pasture Thin
|
||||||
|
- Shrubland Forest
|
||||||
|
- Timber Thin
|
||||||
|
- Added amethyst buckets specifically for picking up Spring Water
|
||||||
|
- Removed the Overgrown Beach
|
||||||
|
- Tweaked the Badlands
|
||||||
|
|
||||||
|
Version 0.5.6 '05-07-13'
|
||||||
|
- Added Treecapacitator compatibility
|
||||||
|
- Made the Ancient Staff and Dart Blower render in 3D like other tools
|
||||||
|
- Addeed the Altar Frame
|
||||||
|
- Added the Sacrificial Focus
|
||||||
|
- Added the Celestial Lens
|
||||||
|
- Added the Soul Manipulator
|
||||||
|
- Added Scythes
|
||||||
|
- Fixed alignment on mud/amethyst tool textures
|
||||||
|
- Added Globs to the API
|
||||||
|
- Fixed Glob spawning
|
||||||
|
- Fixed decoration on the Overgrown Beach
|
||||||
|
- Coniferous Forest colour changes
|
||||||
|
- Fixed a few logs being unable to be burned into charcoal
|
||||||
|
- Added option to disable the Nether changes
|
||||||
|
- Tweaked picking up apples from apple trees.
|
||||||
|
- Tweaked placing saplings.
|
||||||
|
- Added new stairs as a valid fuel
|
||||||
|
- Switched to a new localizations system (Not that anyone will use it)
|
||||||
|
- Fixed Thaumcraft Golem working on Apple Trees
|
||||||
|
- Added Minefactory Reloaded compatibility
|
||||||
|
- Changed the default Moss ID
|
||||||
|
- Added a warning when using the default world type without the config option enabled
|
||||||
|
- New version checking system
|
||||||
|
- Added Biome Finder achievements
|
||||||
|
- Added Tinkers construct integration for Amethyst tools
|
||||||
|
- Fixed an exploit with shears and berry bushes
|
||||||
|
- Added support for Better Grass and Leaves
|
||||||
|
- Tweaked the Fungi Forest trees
|
||||||
|
- Tweaked pyramid generation
|
||||||
|
- Made the BOP world type able to have biomes from other mods
|
||||||
|
- Added puddles that generate in the rain
|
||||||
|
- Fixed grass not dropping seeds
|
||||||
|
- Added graves
|
||||||
|
- Made horses spawn in several biomes
|
||||||
|
- Removed the Nourishment effect
|
||||||
|
- Removed BWG4 integration (Ted wanted to move it into BWG4 itself)
|
||||||
|
- You can no longer spawn in the hot springs or orchard
|
||||||
|
- Tweaked hot springs generation
|
||||||
|
- Tweaked apple tree generation
|
||||||
|
- Spring water can no longer be picked up by hand
|
||||||
|
- Algae is now biome coloured
|
||||||
|
- Tweaked the Badlands
|
||||||
|
- Tweaked the Mystic Grove
|
||||||
|
|
||||||
|
Version 0.5.5 '04-06-13'
|
||||||
|
- Fixed warnings on startup about Thaumcraft compatibility
|
||||||
|
- Fixed tundra boulder generation
|
||||||
|
- Added bamboo thatching > bamboo recipe
|
||||||
|
- Tweaked the Liquid Poison texture
|
||||||
|
- Custom dyes now work on sheep and dog collars
|
||||||
|
- Fixed a bug with connected textures
|
||||||
|
- Updated some temperatures and humidities for Forestry
|
||||||
|
- Added some new gems
|
||||||
|
- Changed the Ancient Staff recipe to use the new gems
|
||||||
|
- Fixed temperature/humidity values for the Hot Springs and Mountain biomes
|
||||||
|
- Added config options for which Nether biomes generate
|
||||||
|
- Added a config option for the custom loot
|
||||||
|
- Fixed a bug with bamboo not decaying
|
||||||
|
|
||||||
|
Version 0.5.4 '01-06-13'
|
||||||
|
- Added use animation to berry bushes
|
||||||
|
- Tweaked apple leaf textures
|
||||||
|
- Removed nether tags from overworld biomes
|
||||||
|
- Added several Nether Biomes
|
||||||
|
- Undergarden
|
||||||
|
- Corrupted Sands
|
||||||
|
- Phantasmagoric Inferno
|
||||||
|
- Boneyard
|
||||||
|
- Tweaked dandelion particles
|
||||||
|
- Apples and berries from leaves and bushes no longer spawn directly on the player
|
||||||
|
- Fixed a bug with trees in the Jade Cliffs
|
||||||
|
- Added ivy
|
||||||
|
- Nerfed apple tree growth
|
||||||
|
- Tweaked algae generation
|
||||||
|
- Tweaked algae texture
|
||||||
|
- Adjusted the Boreal Forest
|
||||||
|
- Added Bone Segments
|
||||||
|
- Added kelp
|
||||||
|
- Made amethyst tools and armour repairable
|
||||||
|
- Overhauled the Bog biome
|
||||||
|
- Renamed the Swampwoods to the Sludegpit and made it like the old Bog
|
||||||
|
- Adjusted the Deadlands and how Smoldering Grass generates
|
||||||
|
- Added the Timber biome
|
||||||
|
- Added Spring Water
|
||||||
|
- Added Liquid Poison
|
||||||
|
- Added the Nourishment potion effect (from Spring Wtaer)
|
||||||
|
- Added the Paralysis potion effect (from Poison Darts)
|
||||||
|
- Gave the deathbloom a particle effect
|
||||||
|
- Made the deathbloom apply the wither effect on contact
|
||||||
|
- Added pine trees
|
||||||
|
- Tweaked the Canyon
|
||||||
|
- Tweaked hard dirt texture
|
||||||
|
- Tweaked aloe texture
|
||||||
|
- Tweaked fir leaf texture
|
||||||
|
- Added pine, hellbark and jacaranda wood, leaves, planks, stairs and slabs
|
||||||
|
- Added the Hot Springs biome
|
||||||
|
- Added Jacaranda trees
|
||||||
|
- Disabled oil generation in the Promised Land
|
||||||
|
- Adjusted quicksand generation
|
||||||
|
- Allowed tiny cacti and thorns to live in any light level
|
||||||
|
- Reworked the Promised Lands portal
|
||||||
|
- Improved the Mangrove biome
|
||||||
|
- Added steam particles
|
||||||
|
- Tweaked grass bounding boxes
|
||||||
|
- Added beach variations
|
||||||
|
- Players now enter the overworld upon falling out of the Promised Lands
|
||||||
|
- The Ancient Staff now depletes on use
|
||||||
|
- Gave the Promised Lands a movement ratio of 16
|
||||||
|
- The Ancient Staff can now be used in the Promised Lands
|
||||||
|
|
||||||
|
Version 0.5.3 '17-05-13'
|
||||||
|
- Added reeds
|
||||||
|
- Added 2 new mushrooms (Portobello and Blue Milk Cap)
|
||||||
|
- Adjusted and fixed mod compatibility with Thermal Expansion
|
||||||
|
- Adjusted hitboxes for some flowers
|
||||||
|
- Added poison ivy
|
||||||
|
- Changed default distance between villages
|
||||||
|
- Tweaked the Fungi Forest
|
||||||
|
- Fixed High Grass generation in the Marsh
|
||||||
|
- Removed Barley from blacksmith chests
|
||||||
|
- Added white dandelions (they can be blown into the air too!)
|
||||||
|
- Improved Redwood Forest Biome and thin Redwood tree generation
|
||||||
|
- Replaced the old Ice Sheet Biome with a Polar biome
|
||||||
|
- Added random offset for foliage
|
||||||
|
- Renamed Yucca to Aloe
|
||||||
|
- Changed the moss texture
|
||||||
|
- Added the dart blower
|
||||||
|
- Fixed a few crafting recipes
|
||||||
|
- Added a new Promised Land generator
|
||||||
|
- Added Promised Land Sub-Biomes
|
||||||
|
- Adjusted which plants grow from bonemeal
|
||||||
|
- Made the Promised Lands use holy stone
|
||||||
|
- Adjusted Amethyst Ore texture
|
||||||
|
- Added hippy flower bands
|
||||||
|
- Added cloud blocks
|
||||||
|
- Redwood trees now require a 3x3 of redwood saplings
|
||||||
|
- Tweaked spider spawn weights in the Ominous Woods
|
||||||
|
- Added big tree variants of the red and orange trees to the Seasonal Forest
|
||||||
|
- Made the sky colour of the Promised Lands configurable
|
||||||
|
- Added Celestial Crystal
|
||||||
|
- Fixed a crash bug with mudballs
|
||||||
|
- Tweaked apple leaves
|
||||||
|
- Adjusted palm tree generation
|
||||||
|
- Added alternative blue, brown and green, black and white dyes
|
||||||
|
- Added glowshrooms
|
||||||
|
- Made Icy Hills hillier
|
||||||
|
- Gave barley a random offset
|
||||||
|
- Added sunflowers
|
||||||
|
- Added lilyflowers
|
||||||
|
- Adjusted some achievement descriptions
|
||||||
|
- Switched to using BWG4 Acacia Trees
|
||||||
|
- Tweaked the Savanna
|
||||||
|
- BOP woods now trigger the "Get Wood" achievement
|
||||||
|
- Added berry bushes
|
||||||
|
- Added sunflower seeds
|
||||||
|
- Overhauled the Grove Biome
|
||||||
|
- Overhauled the Field Biome
|
||||||
|
- Added the "Glob"
|
||||||
|
|
||||||
|
Version 0.5.2 '05-05-13'
|
||||||
|
- Added an API for other mod developers
|
||||||
|
- Added support for Biomes O Plenty woods in Thermal Expansion sawmills
|
||||||
|
- Significantly compressed the amount of Block IDs used, however breaks existing worlds
|
||||||
|
- Updated to the latest Forge
|
||||||
|
- Changed various things to use IShearable
|
||||||
|
- Changed default biome ids to be compatible with Mo Creatures
|
||||||
|
- Made a proper fix for achievements and made them enabled by default (The config option is still there though for those that want it)
|
||||||
|
- Added Better World Generation 4 support
|
||||||
|
- Made shears instantly destroy Biomes O Plenty leaves
|
||||||
|
- Adjusted high grass hitbox to cover both blocks
|
||||||
|
- Fixed an issue causing sound files to be created on the desktop
|
||||||
|
- Biomes O Plenty saplings now work in the Forestry fermenter
|
||||||
|
- Biomes O Plenty flowers can now be used with bees
|
||||||
|
- Gave the different types Autumn and Cherry Leaves their own names
|
||||||
|
- Added Biome Dictionary support
|
||||||
|
- Added seeds on destroyed Biomes O Plenty grasses
|
||||||
|
- Carrots and potatoes now have a chance (1%) to be dropped from sprouts
|
||||||
|
- Added a random drop of apples when destroying apple leaves
|
||||||
|
- Added flowers to plants created on bonemeal use
|
||||||
|
- Tweaked the recipe for bamboo thatching
|
||||||
|
- Bamboo now acts as sticks
|
||||||
|
- Hopefully fixed saplings once and for all
|
||||||
|
- Added hardcoded foliage colours
|
||||||
|
- Added configurable spawn distance between villages in the BOP world type
|
||||||
|
- Added more biomes for villages to spawn in
|
||||||
|
- Tweaked cattail generation
|
||||||
|
- Renamed the texture files to reflect the in-game names
|
||||||
|
- You can now have different textures for the heart of every log
|
||||||
|
- Added Thaumcraft compatibility
|
||||||
|
- Updated the regular BOP music disc file (courtesy of Forstride), may require deleting the old bopdisc.ogg to take effect
|
||||||
|
- Allowed Forestry beehives to spawn on Biomes O Plenty certain blocks
|
||||||
|
- Fixed registering biomes for world types - BOP biomes now accessible in Large Biomes World Type
|
||||||
|
- Fixed leaf decay
|
||||||
|
- Fixed config option for adding biomes to vanilla world types
|
||||||
|
- Fixed Red Rock
|
||||||
|
- Fixed BOP Items
|
||||||
|
- Fixed placing of Mangrove and Holy Saplings
|
||||||
|
- Finished the Thaumcraft aspects
|
||||||
|
- Changed the styling of Bamboo Forests to that of Forstrides liking
|
||||||
|
- Added Yucca flower to desert biomes
|
||||||
|
- Added High Cattails
|
||||||
|
- Seperated High Grass into two blocks
|
||||||
|
- Fire now burns infinitely on ashes
|
||||||
|
- Fixed willow colouring
|
||||||
|
- Adjust the Canyon Biome slightly
|
||||||
|
- Adjusted the Lush Desert biome slightly
|
||||||
|
|
||||||
|
Version 0.5.1 '17-04-2013'
|
||||||
|
- Fixed server crash with mudballs
|
||||||
|
- Fixed Forestry beehives spawning, as well as giving biomes appropriate temperatures
|
||||||
|
- Removed wrong recipe for mossy cobblestone
|
||||||
|
- Added bamboo saplings
|
||||||
|
- Bonemeal now creates the appropriate giant flowers when used on red and yellow flowers
|
||||||
|
- Changed default biome ids
|
||||||
|
- Fixed sapling bugs
|
||||||
|
|
||||||
|
Version 0.5.0 '09-04-2013'
|
||||||
|
- Desert sprouts and Dune Grass now require shears to be harvested
|
||||||
|
- Added alpha beaches to origin valley biome
|
||||||
|
- You can now throw Mudballs to deal 1/2 heart of damage
|
||||||
|
- Entities get the slowness potion effect when hit by mudballs
|
||||||
|
- Mud balls can now be fired from dispensers
|
||||||
|
- Resources now only install client-side
|
||||||
|
- Fixed bonemeal on Origin Saplings
|
||||||
|
- Bonemeal now only reacts to mangrove saplings when they are on sand
|
||||||
|
- Fixed bonemeal and holy grass dependancies on Holy and Magic saplings
|
||||||
|
- Changed the leaves blocks to use the IShearable interface
|
||||||
|
- Made the enderporter only work in the overworld
|
||||||
|
- Fixed the textures for logs to display according to their orientation
|
||||||
|
- Adding Leaves, Saplings, Stairs and Slabs to Ore Dictionary
|
||||||
|
- Fixed crash on right clicking on slabs with nothing in your hand
|
||||||
|
- Fixed trees not generating in the Mystic grove
|
||||||
|
- Fixed placing Moss, TreeMoss and Willow
|
||||||
|
- Fixed a bug with Promised Lands not using the ID from the config file
|
||||||
|
|
||||||
|
Version 0.4.9 '03-04-2013'
|
||||||
|
- Tools actually have the properties of the tools they are meant to be (they used to all think they are swords)
|
||||||
|
- Ore dictionary support for wood
|
||||||
|
- Added a temporary fix for the Ach Flower issue in the form of a config option for achievements
|
||||||
|
- Fancier message upon creation of The Promised Lands
|
||||||
|
- No more duplicate chat messages on creating the Promised Lands
|
||||||
|
- You can no longer create an infinite endstone supply from spamming Promised Lands portals
|
||||||
|
- Holy Tall grass no longer drops itself without using shears
|
||||||
|
- Fixed things wrongly having wooden footstep sounds
|
||||||
|
- Saplings now use the new bonemeal system added by Minecraft 1.5
|
||||||
|
- Bonemeal now creates Holy Tall Grass when used on Holy Grass
|
||||||
|
- Fixed slabs not stacking
|
||||||
|
- Fixed leaf decay
|
||||||
|
- Fixed tool effectiveness on various blocks
|
||||||
|
- Gave smoldering grass and ash their expected behaviours; burn on contact (smoldering grass) and slowness (ash)
|
||||||
|
- Holy and magic saplings will only grow on Holy Grass
|
||||||
|
- Holy Grass burns up into Soulsand in the Nether
|
||||||
|
- Fixed axe recipes
|
||||||
|
- Removed unnecessary recipes for hoes
|
||||||
|
|
||||||
|
Version 0.4.8 '31-03-2013'
|
||||||
|
- Fixed smoldering grass texture
|
||||||
|
- Fixed flower achievement?
|
||||||
|
- Fixed Giant red flower texture
|
||||||
|
|
||||||
|
Version 0.4.7 '30-03-2013'
|
||||||
|
- Updated to Minecraft 1.5.1
|
||||||
|
|
386
build.gradle
386
build.gradle
|
@ -1,188 +1,198 @@
|
||||||
buildscript {
|
buildscript {
|
||||||
repositories {
|
repositories {
|
||||||
mavenLocal()
|
mavenCentral()
|
||||||
maven { url = 'https://files.minecraftforge.net/maven' }
|
maven {
|
||||||
jcenter()
|
name = "ForgeFS"
|
||||||
mavenCentral()
|
url = "http://files.minecraftforge.net/maven"
|
||||||
}
|
}
|
||||||
dependencies {
|
maven {
|
||||||
classpath group: 'net.minecraftforge.gradle', name: 'ForgeGradle', version: '3.+', changing: true
|
name = "sonatype"
|
||||||
}
|
url = "https://oss.sonatype.org/content/repositories/snapshots/"
|
||||||
}
|
}
|
||||||
|
}
|
||||||
plugins {
|
dependencies {
|
||||||
id "com.matthewprenger.cursegradle" version "1.4.0"
|
classpath 'net.minecraftforge.gradle:ForgeGradle:1.2-SNAPSHOT'
|
||||||
}
|
}
|
||||||
|
}
|
||||||
apply plugin: 'net.minecraftforge.gradle'
|
|
||||||
apply plugin: 'eclipse'
|
|
||||||
apply plugin: 'idea'
|
plugins {
|
||||||
apply plugin: 'maven'
|
id "com.matthewprenger.cursegradle" version "1.0.5"
|
||||||
|
}
|
||||||
repositories { mavenLocal() }
|
|
||||||
|
apply plugin: "maven"
|
||||||
group = "com.github.glitchfiend.biomesoplenty"
|
apply plugin: "forge"
|
||||||
archivesBaseName = "BiomesOPlenty"
|
|
||||||
|
repositories {
|
||||||
def getGitHash = {
|
mavenLocal()
|
||||||
def stdout = new ByteArrayOutputStream()
|
flatDir {
|
||||||
exec {
|
name "fileRepo"
|
||||||
commandLine 'git', 'rev-parse', '--short', 'HEAD'
|
dirs "repo"
|
||||||
standardOutput = stdout
|
}
|
||||||
}
|
ivy {
|
||||||
return stdout.toString().trim()
|
name 'Forge FS legacy'
|
||||||
}
|
artifactPattern "http://files.minecraftforge.net/[module]/[module]-dev-[revision].[ext]"
|
||||||
|
}
|
||||||
version = "${minecraft_version}-${mod_version}.${System.getenv().BUILD_NUMBER}"
|
}
|
||||||
|
|
||||||
minecraft {
|
// define the properties file
|
||||||
mappings channel: 'official', version: minecraft_version
|
ext.configFile = file "build.properties"
|
||||||
|
|
||||||
accessTransformer = file('src/main/resources/META-INF/accesstransformer.cfg')
|
configFile.withReader {
|
||||||
|
// read config. it shall from now on be referenced as simply config or as project.config
|
||||||
runs {
|
def prop = new Properties()
|
||||||
client = {
|
prop.load(it)
|
||||||
workingDirectory = project.file("run").canonicalPath
|
project.ext.config = new ConfigSlurper().parse prop
|
||||||
source sourceSets.main
|
}
|
||||||
}
|
|
||||||
server = {
|
group = "com.github.glitchfiend.biomesoplenty"
|
||||||
workingDirectory = project.file("run").canonicalPath
|
version = config.mod_version
|
||||||
source sourceSets.main
|
archivesBaseName = "BiomesOPlenty"
|
||||||
}
|
|
||||||
}
|
minecraft {
|
||||||
}
|
version = config.minecraft_version + "-" + config.forge_version // grab latest forge
|
||||||
|
}
|
||||||
processResources {
|
|
||||||
from (sourceSets.main.resources.srcDirs) {
|
// add some stuff to the version
|
||||||
include 'META-INF/mods.toml'
|
version = "${config.minecraft_version}-${config.mod_version}.${System.getenv().BUILD_NUMBER}"
|
||||||
expand 'version': project.version
|
|
||||||
}
|
processResources {
|
||||||
}
|
// replace stuff in the files we want.
|
||||||
|
from(sourceSets.main.resources.srcDirs) {
|
||||||
jar {
|
include '**/*.info'
|
||||||
classifier = 'universal'
|
include '**/*.properties'
|
||||||
}
|
|
||||||
|
// replaces
|
||||||
dependencies {
|
expand ([
|
||||||
minecraft 'net.minecraftforge:forge:' + minecraft_version + '-' + forge_version
|
'modid': project.archivesBaseName,
|
||||||
}
|
'mod_version': project.config.mod_version,
|
||||||
|
'minecraft_version': project.config.minecraft_version,
|
||||||
task sourcesJar(type: Jar) {
|
'build_number': project.config.build_number,
|
||||||
from sourceSets.main.allJava
|
'worldcore_version': project.config.worldcore_version
|
||||||
from (sourceSets.main.output) {
|
])
|
||||||
include 'LICENSE.txt'
|
}
|
||||||
}
|
|
||||||
|
// copy everything else, thats we didnt do before
|
||||||
classifier = 'sources'
|
from(sourceSets.main.resources.srcDirs) {
|
||||||
}
|
exclude '**/*.info'
|
||||||
|
exclude '**/*.properties'
|
||||||
task deobfJar(type: Jar) {
|
}
|
||||||
from sourceSets.main.output
|
}
|
||||||
classifier = 'deobf'
|
|
||||||
}
|
jar {
|
||||||
|
classifier = 'universal'
|
||||||
task apiJar(type: Jar) {
|
}
|
||||||
from(sourceSets.main.allJava) {
|
|
||||||
include 'biomesoplenty/api/**'
|
import net.minecraftforge.gradle.tasks.dev.ChangelogTask
|
||||||
}
|
import net.minecraftforge.gradle.common.Constants
|
||||||
from (sourceSets.main.output) {
|
import net.minecraftforge.gradle.delayed.*
|
||||||
include 'LICENSE.txt'
|
|
||||||
include 'biomesoplenty/api/**'
|
task createChangelog(type: ChangelogTask) {
|
||||||
}
|
def jobName = "${System.getenv().JOB_NAME}"
|
||||||
|
def buildNumber = "${System.getenv().BUILD_NUMBER}"
|
||||||
classifier = 'api'
|
|
||||||
}
|
setServerRoot(new DelayedString(project, 'http://ci.jenkins.minecraftforge.net/'))
|
||||||
|
setJobName(new DelayedString(project, jobName.toString()));
|
||||||
def changelog_file = rootProject.file("build/BiomesOPlenty-${version}-changelog.txt")
|
setAuthName(new DelayedString(project, 'console_script'));
|
||||||
|
setAuthPassword(new DelayedString(project, 'dc6d48ca20a474beeac280a9a16a926e'));
|
||||||
curseforge {
|
setTargetBuild({buildNumber.toString()});
|
||||||
if (project.hasProperty('curseApiKey')) {
|
setOutput(new DelayedFile(project, 'build/libs/' + project.getName() + '-' + project.version + '-changelog.txt'));
|
||||||
apiKey = project.getProperty('curseApiKey')
|
}
|
||||||
project {
|
|
||||||
id = '220318'
|
tasks.build.dependsOn('createChangelog')
|
||||||
|
|
||||||
if (changelog_file.exists()) {
|
task sourceJar(type: Jar) {
|
||||||
changelog = changelog_file
|
from sourceSets.main.allJava
|
||||||
}
|
classifier = 'sources'
|
||||||
|
}
|
||||||
releaseType = 'beta'
|
|
||||||
|
task deobfJar(type: Jar) {
|
||||||
mainArtifact(jar) {
|
from sourceSets.main.output
|
||||||
displayName = "Biomes O' Plenty ${version}"
|
classifier = 'deobf'
|
||||||
}
|
}
|
||||||
addArtifact sourcesJar
|
|
||||||
addArtifact deobfJar
|
artifacts {
|
||||||
addArtifact apiJar
|
archives sourceJar
|
||||||
}
|
archives deobfJar
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
curseforge {
|
||||||
artifacts {
|
apiKey = "$System.env.curse_api_key"
|
||||||
if (changelog_file.exists()) {
|
project {
|
||||||
archives changelog_file
|
id = '220318'
|
||||||
}
|
changelog = file('build/libs/' + project.getName() + '-' + project.version + '-changelog.txt');
|
||||||
archives jar
|
releaseType = 'beta'
|
||||||
archives sourcesJar
|
}
|
||||||
archives deobfJar
|
}
|
||||||
archives apiJar
|
|
||||||
}
|
uploadArchives {
|
||||||
|
repositories {
|
||||||
uploadArchives {
|
mavenDeployer {
|
||||||
repositories {
|
if (project.hasProperty('forgeMavenPassword'))
|
||||||
mavenDeployer {
|
{
|
||||||
if (project.hasProperty('forgeMavenPassword')) {
|
repository(url: "http://files.minecraftforge.net/maven/manage/upload") {
|
||||||
repository(url: "https://files.minecraftforge.net/maven/manage/upload") {
|
authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword'))
|
||||||
authentication(userName: project.getProperty('forgeMavenUsername'), password: project.getProperty('forgeMavenPassword'))
|
}
|
||||||
}
|
}
|
||||||
}
|
else
|
||||||
else {
|
{
|
||||||
// local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
|
// local repo folder. Might wanna juset use gradle install if you wanans end it to maven-local
|
||||||
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
|
repository(url: 'file://localhost/' + project.file('repo').getAbsolutePath())
|
||||||
}
|
}
|
||||||
|
|
||||||
pom {
|
pom {
|
||||||
groupId = project.group
|
groupId = project.group
|
||||||
version = project.version
|
version = project.version
|
||||||
artifactId = project.archivesBaseName
|
artifactId = project.archivesBaseName
|
||||||
project {
|
project {
|
||||||
name project.archivesBaseName
|
name project.archivesBaseName
|
||||||
packaging 'jar'
|
packaging 'jar'
|
||||||
description 'Biomes O Plenty'
|
description 'Biomes O Plenty'
|
||||||
url 'https://github.com/Glitchfiend/BiomesOPlenty'
|
url 'https://github.com/Glitchfiend/BiomesOPlenty'
|
||||||
|
|
||||||
scm {
|
scm {
|
||||||
url 'https://github.com/Glitchfiend/BiomesOPlenty'
|
url 'https://github.com/Glitchfiend/BiomesOPlenty'
|
||||||
connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git'
|
connection 'scm:git:git://github.com/Glitchfiend/BiomesOPlenty.git'
|
||||||
developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git'
|
developerConnection 'scm:git:git@github.com:Glitchfiend/BiomesOPlenty.git'
|
||||||
}
|
}
|
||||||
|
|
||||||
issueManagement {
|
issueManagement {
|
||||||
system 'github'
|
system 'github'
|
||||||
url 'https://github.com/Glitchfiend/BiomesOPlenty/issues'
|
url 'https://github.com/Glitchfiend/BiomesOPlenty/issues'
|
||||||
}
|
}
|
||||||
|
|
||||||
licenses {
|
licenses {
|
||||||
license {
|
license {
|
||||||
name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License'
|
name 'Creative Commons Attribution-NonCommercial-NoDerivs 4.0 International Public License'
|
||||||
url 'http://creativecommons.org/licenses/by-nc-nd/4.0/'
|
url 'http://creativecommons.org/licenses/by-nc-nd/4.0/'
|
||||||
distribution 'repo'
|
distribution 'repo'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
developers {
|
developers {
|
||||||
developer {
|
developer {
|
||||||
id 'Adubbz'
|
id 'Adubbz'
|
||||||
name 'Adubbz'
|
name 'Adubbz'
|
||||||
roles { role 'developer' }
|
roles { role 'developer' }
|
||||||
}
|
}
|
||||||
developer {
|
developer {
|
||||||
id 'Forstride'
|
id 'Amnet'
|
||||||
name 'Forstride'
|
name 'Amnet'
|
||||||
roles { role 'developer' }
|
roles { role 'developer' }
|
||||||
}
|
}
|
||||||
}
|
developer {
|
||||||
}
|
id 'Forstride'
|
||||||
}
|
name 'Forstride'
|
||||||
}
|
roles { role 'developer' }
|
||||||
}
|
}
|
||||||
}
|
developer {
|
||||||
|
id 'ted80'
|
||||||
|
name 'ted80'
|
||||||
|
roles { role 'developer' }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,3 @@
|
||||||
|
minecraft_version=1.7.10
|
||||||
|
forge_version=10.13.4.1614-1.7.10
|
||||||
|
mod_version=2.1.0
|
|
@ -1,12 +0,0 @@
|
||||||
# Sets default memory used for gradle commands. Can be overridden by user or command line properties.
|
|
||||||
# This is required to provide enough memory for the Minecraft decompilation process.
|
|
||||||
org.gradle.jvmargs=-Xmx3G
|
|
||||||
org.gradle.daemon=false
|
|
||||||
|
|
||||||
mod_version=13.1.0
|
|
||||||
|
|
||||||
minecraft_version=1.16.5
|
|
||||||
minecraft_version_toml=16
|
|
||||||
forge_version=36.1.0
|
|
||||||
forge_version_toml=36
|
|
||||||
forge_group=net.minecraftforge
|
|
Binary file not shown.
|
@ -1,5 +1,6 @@
|
||||||
|
#Sun Jan 03 20:54:15 AEDT 2016
|
||||||
distributionBase=GRADLE_USER_HOME
|
distributionBase=GRADLE_USER_HOME
|
||||||
distributionPath=wrapper/dists
|
distributionPath=wrapper/dists
|
||||||
zipStoreBase=GRADLE_USER_HOME
|
zipStoreBase=GRADLE_USER_HOME
|
||||||
zipStorePath=wrapper/dists
|
zipStorePath=wrapper/dists
|
||||||
distributionUrl=https\://services.gradle.org/distributions/gradle-4.9-bin.zip
|
distributionUrl=https\://services.gradle.org/distributions/gradle-2.10-bin.zip
|
||||||
|
|
|
@ -6,6 +6,47 @@
|
||||||
##
|
##
|
||||||
##############################################################################
|
##############################################################################
|
||||||
|
|
||||||
|
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
||||||
|
DEFAULT_JVM_OPTS=""
|
||||||
|
|
||||||
|
APP_NAME="Gradle"
|
||||||
|
APP_BASE_NAME=`basename "$0"`
|
||||||
|
|
||||||
|
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
||||||
|
MAX_FD="maximum"
|
||||||
|
|
||||||
|
warn ( ) {
|
||||||
|
echo "$*"
|
||||||
|
}
|
||||||
|
|
||||||
|
die ( ) {
|
||||||
|
echo
|
||||||
|
echo "$*"
|
||||||
|
echo
|
||||||
|
exit 1
|
||||||
|
}
|
||||||
|
|
||||||
|
# OS specific support (must be 'true' or 'false').
|
||||||
|
cygwin=false
|
||||||
|
msys=false
|
||||||
|
darwin=false
|
||||||
|
case "`uname`" in
|
||||||
|
CYGWIN* )
|
||||||
|
cygwin=true
|
||||||
|
;;
|
||||||
|
Darwin* )
|
||||||
|
darwin=true
|
||||||
|
;;
|
||||||
|
MINGW* )
|
||||||
|
msys=true
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
# For Cygwin, ensure paths are in UNIX format before anything is touched.
|
||||||
|
if $cygwin ; then
|
||||||
|
[ -n "$JAVA_HOME" ] && JAVA_HOME=`cygpath --unix "$JAVA_HOME"`
|
||||||
|
fi
|
||||||
|
|
||||||
# Attempt to set APP_HOME
|
# Attempt to set APP_HOME
|
||||||
# Resolve links: $0 may be a link
|
# Resolve links: $0 may be a link
|
||||||
PRG="$0"
|
PRG="$0"
|
||||||
|
@ -20,49 +61,9 @@ while [ -h "$PRG" ] ; do
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
SAVED="`pwd`"
|
SAVED="`pwd`"
|
||||||
cd "`dirname \"$PRG\"`/" >/dev/null
|
cd "`dirname \"$PRG\"`/" >&-
|
||||||
APP_HOME="`pwd -P`"
|
APP_HOME="`pwd -P`"
|
||||||
cd "$SAVED" >/dev/null
|
cd "$SAVED" >&-
|
||||||
|
|
||||||
APP_NAME="Gradle"
|
|
||||||
APP_BASE_NAME=`basename "$0"`
|
|
||||||
|
|
||||||
# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
|
|
||||||
DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
|
|
||||||
|
|
||||||
# Use the maximum available, or set MAX_FD != -1 to use that value.
|
|
||||||
MAX_FD="maximum"
|
|
||||||
|
|
||||||
warn () {
|
|
||||||
echo "$*"
|
|
||||||
}
|
|
||||||
|
|
||||||
die () {
|
|
||||||
echo
|
|
||||||
echo "$*"
|
|
||||||
echo
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# OS specific support (must be 'true' or 'false').
|
|
||||||
cygwin=false
|
|
||||||
msys=false
|
|
||||||
darwin=false
|
|
||||||
nonstop=false
|
|
||||||
case "`uname`" in
|
|
||||||
CYGWIN* )
|
|
||||||
cygwin=true
|
|
||||||
;;
|
|
||||||
Darwin* )
|
|
||||||
darwin=true
|
|
||||||
;;
|
|
||||||
MINGW* )
|
|
||||||
msys=true
|
|
||||||
;;
|
|
||||||
NONSTOP* )
|
|
||||||
nonstop=true
|
|
||||||
;;
|
|
||||||
esac
|
|
||||||
|
|
||||||
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
|
||||||
|
|
||||||
|
@ -89,7 +90,7 @@ location of your Java installation."
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Increase the maximum file descriptors if we can.
|
# Increase the maximum file descriptors if we can.
|
||||||
if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
|
if [ "$cygwin" = "false" -a "$darwin" = "false" ] ; then
|
||||||
MAX_FD_LIMIT=`ulimit -H -n`
|
MAX_FD_LIMIT=`ulimit -H -n`
|
||||||
if [ $? -eq 0 ] ; then
|
if [ $? -eq 0 ] ; then
|
||||||
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
|
||||||
|
@ -113,7 +114,6 @@ fi
|
||||||
if $cygwin ; then
|
if $cygwin ; then
|
||||||
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
APP_HOME=`cygpath --path --mixed "$APP_HOME"`
|
||||||
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
|
||||||
JAVACMD=`cygpath --unix "$JAVACMD"`
|
|
||||||
|
|
||||||
# We build the pattern for arguments to be converted via cygpath
|
# We build the pattern for arguments to be converted via cygpath
|
||||||
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
|
||||||
|
@ -154,19 +154,11 @@ if $cygwin ; then
|
||||||
esac
|
esac
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# Escape application args
|
# Split up the JVM_OPTS And GRADLE_OPTS values into an array, following the shell quoting and substitution rules
|
||||||
save () {
|
function splitJvmOpts() {
|
||||||
for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
|
JVM_OPTS=("$@")
|
||||||
echo " "
|
|
||||||
}
|
}
|
||||||
APP_ARGS=$(save "$@")
|
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, following the shell quoting and substitution rules
|
exec "$JAVACMD" "${JVM_OPTS[@]}" -classpath "$CLASSPATH" org.gradle.wrapper.GradleWrapperMain "$@"
|
||||||
eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
|
|
||||||
|
|
||||||
# by default we should be in the correct project dir, but when run from Finder on Mac, the cwd is wrong
|
|
||||||
if [ "$(uname)" = "Darwin" ] && [ "$HOME" = "$PWD" ]; then
|
|
||||||
cd "$(dirname "$0")"
|
|
||||||
fi
|
|
||||||
|
|
||||||
exec "$JAVACMD" "$@"
|
|
||||||
|
|
|
@ -1,90 +1,90 @@
|
||||||
@if "%DEBUG%" == "" @echo off
|
@if "%DEBUG%" == "" @echo off
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
@rem
|
@rem
|
||||||
@rem Gradle startup script for Windows
|
@rem Gradle startup script for Windows
|
||||||
@rem
|
@rem
|
||||||
@rem ##########################################################################
|
@rem ##########################################################################
|
||||||
|
|
||||||
@rem Set local scope for the variables with windows NT shell
|
@rem Set local scope for the variables with windows NT shell
|
||||||
if "%OS%"=="Windows_NT" setlocal
|
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.
|
@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 DEFAULT_JVM_OPTS=
|
||||||
|
|
||||||
set DIRNAME=%~dp0
|
set DIRNAME=%~dp0
|
||||||
if "%DIRNAME%" == "" set DIRNAME=.
|
if "%DIRNAME%" == "" set DIRNAME=.
|
||||||
set APP_BASE_NAME=%~n0
|
set APP_BASE_NAME=%~n0
|
||||||
set APP_HOME=%DIRNAME%
|
set APP_HOME=%DIRNAME%
|
||||||
|
|
||||||
@rem Find java.exe
|
@rem Find java.exe
|
||||||
if defined JAVA_HOME goto findJavaFromJavaHome
|
if defined JAVA_HOME goto findJavaFromJavaHome
|
||||||
|
|
||||||
set JAVA_EXE=java.exe
|
set JAVA_EXE=java.exe
|
||||||
%JAVA_EXE% -version >NUL 2>&1
|
%JAVA_EXE% -version >NUL 2>&1
|
||||||
if "%ERRORLEVEL%" == "0" goto init
|
if "%ERRORLEVEL%" == "0" goto init
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
|
||||||
echo.
|
echo.
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:findJavaFromJavaHome
|
:findJavaFromJavaHome
|
||||||
set JAVA_HOME=%JAVA_HOME:"=%
|
set JAVA_HOME=%JAVA_HOME:"=%
|
||||||
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
set JAVA_EXE=%JAVA_HOME%/bin/java.exe
|
||||||
|
|
||||||
if exist "%JAVA_EXE%" goto init
|
if exist "%JAVA_EXE%" goto init
|
||||||
|
|
||||||
echo.
|
echo.
|
||||||
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
|
||||||
echo.
|
echo.
|
||||||
echo Please set the JAVA_HOME variable in your environment to match the
|
echo Please set the JAVA_HOME variable in your environment to match the
|
||||||
echo location of your Java installation.
|
echo location of your Java installation.
|
||||||
|
|
||||||
goto fail
|
goto fail
|
||||||
|
|
||||||
:init
|
:init
|
||||||
@rem Get command-line arguments, handling Windowz variants
|
@rem Get command-line arguments, handling Windowz variants
|
||||||
|
|
||||||
if not "%OS%" == "Windows_NT" goto win9xME_args
|
if not "%OS%" == "Windows_NT" goto win9xME_args
|
||||||
if "%@eval[2+2]" == "4" goto 4NT_args
|
if "%@eval[2+2]" == "4" goto 4NT_args
|
||||||
|
|
||||||
:win9xME_args
|
:win9xME_args
|
||||||
@rem Slurp the command line arguments.
|
@rem Slurp the command line arguments.
|
||||||
set CMD_LINE_ARGS=
|
set CMD_LINE_ARGS=
|
||||||
set _SKIP=2
|
set _SKIP=2
|
||||||
|
|
||||||
:win9xME_args_slurp
|
:win9xME_args_slurp
|
||||||
if "x%~1" == "x" goto execute
|
if "x%~1" == "x" goto execute
|
||||||
|
|
||||||
set CMD_LINE_ARGS=%*
|
set CMD_LINE_ARGS=%*
|
||||||
goto execute
|
goto execute
|
||||||
|
|
||||||
:4NT_args
|
:4NT_args
|
||||||
@rem Get arguments from the 4NT Shell from JP Software
|
@rem Get arguments from the 4NT Shell from JP Software
|
||||||
set CMD_LINE_ARGS=%$
|
set CMD_LINE_ARGS=%$
|
||||||
|
|
||||||
:execute
|
:execute
|
||||||
@rem Setup the command line
|
@rem Setup the command line
|
||||||
|
|
||||||
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
|
||||||
|
|
||||||
@rem Execute Gradle
|
@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%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %CMD_LINE_ARGS%
|
||||||
|
|
||||||
:end
|
:end
|
||||||
@rem End local scope for the variables with windows NT shell
|
@rem End local scope for the variables with windows NT shell
|
||||||
if "%ERRORLEVEL%"=="0" goto mainEnd
|
if "%ERRORLEVEL%"=="0" goto mainEnd
|
||||||
|
|
||||||
:fail
|
:fail
|
||||||
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
|
||||||
rem the _cmd.exe /c_ return code!
|
rem the _cmd.exe /c_ return code!
|
||||||
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
|
||||||
exit /b 1
|
exit /b 1
|
||||||
|
|
||||||
:mainEnd
|
:mainEnd
|
||||||
if "%OS%"=="Windows_NT" endlocal
|
if "%OS%"=="Windows_NT" endlocal
|
||||||
|
|
||||||
:omega
|
:omega
|
||||||
|
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,514 @@
|
||||||
|
tile.mud.mud.name=泥巴
|
||||||
|
tile.mud.quicksand.name=流沙
|
||||||
|
|
||||||
|
tile.ashStone.name=火山灰岩
|
||||||
|
tile.hardSand.name=硬化沙子
|
||||||
|
tile.hardDirt.name=硬化泥土
|
||||||
|
tile.hardIce.name=硬化冰块
|
||||||
|
tile.driedDirt.name=干燥泥土
|
||||||
|
tile.cragRock.name=碎岩
|
||||||
|
tile.mudBricks.name=泥巴砖块
|
||||||
|
tile.biomeBlock.name=生态群系源质矿石
|
||||||
|
tile.crystal.name=仙域水晶
|
||||||
|
|
||||||
|
tile.rocks.limestone.name=石灰岩
|
||||||
|
tile.rocks.limestonesmooth.name=光滑石灰岩
|
||||||
|
tile.rocks.siltstone.name=粉砂岩
|
||||||
|
tile.rocks.siltstonesmooth.name=光滑粉砂岩
|
||||||
|
tile.rocks.shale.name=页岩
|
||||||
|
tile.rocks.shalesmooth.name=光滑页岩
|
||||||
|
|
||||||
|
tile.ash.name=灰烬块
|
||||||
|
tile.flesh.name=肉块
|
||||||
|
|
||||||
|
tile.lilyBop.mediumlily.name=大型睡莲
|
||||||
|
tile.lilyBop.smalllily.name=中型睡莲
|
||||||
|
tile.lilyBop.tinylily.name=小型睡莲
|
||||||
|
|
||||||
|
tile.plants.deadgrass.name=枯萎草
|
||||||
|
tile.plants.desertgrass.name=沙漠草
|
||||||
|
tile.plants.desertsprouts.name=沙漠野菜
|
||||||
|
tile.plants.dunegrass.name=沙丘草
|
||||||
|
tile.plants.spectralfern.name=幽灵蕨
|
||||||
|
tile.plants.thorn.name=荆棘
|
||||||
|
tile.plants.wildrice.name=野生稻
|
||||||
|
tile.plants.cattail.name=香蒲
|
||||||
|
tile.plants.cattailtop.name=香蒲
|
||||||
|
tile.plants.cattailbottom.name=香蒲
|
||||||
|
tile.plants.rivercane.name=河水甘蔗
|
||||||
|
tile.plants.cactus.name=仙人球
|
||||||
|
tile.plants.witherwart.name=凋零疣
|
||||||
|
tile.plants.reed.name=芦苇
|
||||||
|
tile.plants.root.name=根须
|
||||||
|
tile.plants.wildcarrot.name=野萝卜
|
||||||
|
|
||||||
|
tile.flowers.clover.name=苜蓿
|
||||||
|
tile.flowers.swampflower.name=沼泽花
|
||||||
|
tile.flowers.deadbloom.name=死亡花
|
||||||
|
tile.flowers.glowflower.name=闪光花
|
||||||
|
tile.flowers.hydrangea.name=绣球花
|
||||||
|
tile.flowers.cosmos.name=黄波斯菊
|
||||||
|
tile.flowers.daffodil.name=粉水仙
|
||||||
|
tile.flowers.wildflower.name=野花
|
||||||
|
tile.flowers.violet.name=紫罗兰
|
||||||
|
tile.flowers.anemone.name=银莲花
|
||||||
|
tile.flowers.lilyflower.name=水百合
|
||||||
|
tile.flowers.enderlotus.name=末影莲
|
||||||
|
tile.flowers.bromeliad.name=凤梨花
|
||||||
|
tile.flowers.eyebulbbottom.name=眼球花
|
||||||
|
tile.flowers.eyebulbtop.name=眼球花
|
||||||
|
tile.flowers.dandelion.name=蒲公英
|
||||||
|
|
||||||
|
tile.flowers2.hibiscus.name=粉木槿
|
||||||
|
tile.flowers2.lilyofthevalley.name=谷百合
|
||||||
|
tile.flowers2.burningblossom.name=火焰花
|
||||||
|
tile.flowers2.lavender.name=薰衣草
|
||||||
|
tile.flowers2.goldenrod.name=麒麟草
|
||||||
|
tile.flowers2.bluebells.name=蓝铃花
|
||||||
|
tile.flowers2.minersdelight.name=乐矿花
|
||||||
|
tile.flowers2.icyiris.name=冰红膜花
|
||||||
|
tile.flowers2.rose.name=蔷薇
|
||||||
|
|
||||||
|
tile.fruitBop.apple_block.name=苹果
|
||||||
|
tile.fruitBop.persimmon_block.name=柿子
|
||||||
|
tile.fruitBop.peach_block.name=桃子
|
||||||
|
tile.fruitBop.pear_block.name=雪梨
|
||||||
|
tile.fruitBop.pinecone_block.name=松果
|
||||||
|
|
||||||
|
tile.stoneFormations.stalagmite.name=石笋
|
||||||
|
tile.stoneFormations.stalactite.name=钟乳石
|
||||||
|
|
||||||
|
tile.foliage.duckweed.name=浮萍
|
||||||
|
tile.foliage.shortgrass.name=小草
|
||||||
|
tile.foliage.mediumgrass.name=矮草
|
||||||
|
tile.foliage.flaxbottom.name=亚麻
|
||||||
|
tile.foliage.bush.name=灌木
|
||||||
|
tile.foliage.sprout.name=野菜
|
||||||
|
tile.foliage.flaxtop.name=亚麻
|
||||||
|
tile.foliage.poisonivy.name=毒藤
|
||||||
|
tile.foliage.berrybush.name=浆果灌木
|
||||||
|
tile.foliage.shrub.name=灌木
|
||||||
|
tile.foliage.wheatgrass.name=麦草
|
||||||
|
tile.foliage.dampgrass.name=湿草
|
||||||
|
tile.foliage.koru.name=银蕨
|
||||||
|
tile.foliage.cloverpatch.name=苜蓿地
|
||||||
|
tile.foliage.leafpile.name=树叶堆
|
||||||
|
tile.foliage.deadleafpile.name=枯叶堆
|
||||||
|
|
||||||
|
tile.petals.bigflowerred.name=巨大红色花
|
||||||
|
tile.petals.bigfloweryellow.name=巨大黄色花
|
||||||
|
|
||||||
|
tile.mushrooms.toadstool.name=毒菌
|
||||||
|
tile.mushrooms.portobello.name=双孢蘑菇
|
||||||
|
tile.mushrooms.bluemilk.name=蓝牛奶伞菌
|
||||||
|
tile.mushrooms.glowshroom.name=夜光菇
|
||||||
|
tile.mushrooms.flatmushroom.name=平菇
|
||||||
|
tile.mushrooms.shadowshroom.name=阴影菇
|
||||||
|
|
||||||
|
tile.saplings.appleSapling.name=苹果树苗
|
||||||
|
tile.saplings.yellowautumnSapling.name=黄色秋天树苗
|
||||||
|
tile.saplings.bambooSapling.name=竹苗
|
||||||
|
tile.saplings.magicSapling.name=魔法树苗
|
||||||
|
tile.saplings.darkSapling.name=黑暗树苗
|
||||||
|
tile.saplings.deadSapling.name=垂死树苗
|
||||||
|
tile.saplings.firSapling.name=杉树树苗
|
||||||
|
tile.saplings.etherealSapling.name=空灵树苗
|
||||||
|
tile.saplings.orangeautumnSapling.name=橙色秋天树苗
|
||||||
|
tile.saplings.originSapling.name=起源树苗
|
||||||
|
tile.saplings.pinkcherrySapling.name=粉红樱桃树苗
|
||||||
|
tile.saplings.mapleSapling.name=枫树树苗
|
||||||
|
tile.saplings.whitecherrySapling.name=白色樱桃树苗
|
||||||
|
tile.saplings.hellbarkSapling.name=地狱皮树苗
|
||||||
|
tile.saplings.jacarandaSapling.name=蓝花楹树苗
|
||||||
|
tile.saplings.persimmonSapling.name=柿子树苗
|
||||||
|
|
||||||
|
tile.colorizedSaplings.sacredoakSapling.name=神圣橡树树苗
|
||||||
|
tile.colorizedSaplings.mangroveSapling.name=红树树苗
|
||||||
|
tile.colorizedSaplings.palmSapling.name=棕榈树苗
|
||||||
|
tile.colorizedSaplings.redwoodSapling.name=红杉树苗
|
||||||
|
tile.colorizedSaplings.willowSapling.name=柳树树苗
|
||||||
|
tile.colorizedSaplings.pineSapling.name=松树树苗
|
||||||
|
tile.colorizedSaplings.mahoganySapling.name=桃花心木树苗
|
||||||
|
tile.colorizedSaplings.floweringSapling.name=开花橡木树苗
|
||||||
|
|
||||||
|
tile.willow.name=柳树
|
||||||
|
tile.ivy.name=藤蔓
|
||||||
|
tile.bamboo.name=竹子
|
||||||
|
tile.mudBricksStairs.name=泥巴砖块楼梯
|
||||||
|
tile.originGrass.name=草苗
|
||||||
|
tile.longGrass.name=深草
|
||||||
|
tile.overgrownNetherrack.name=地狱苔石
|
||||||
|
tile.treeMoss.name=树藓
|
||||||
|
tile.turnip.name=芜青
|
||||||
|
tile.flowerVine.name=开花藤蔓
|
||||||
|
tile.wisteria.name=紫藤
|
||||||
|
|
||||||
|
tile.coral1.kelpbottom.name=巨藻
|
||||||
|
tile.coral1.kelpsingle.name=巨藻
|
||||||
|
tile.coral1.kelptop.name=巨藻
|
||||||
|
tile.coral1.pinkcoral.name=粉珊瑚
|
||||||
|
tile.coral1.orangecoral.name=橙珊瑚
|
||||||
|
tile.coral1.bluecoral.name=蓝珊瑚
|
||||||
|
tile.coral1.glowcoral.name=夜光珊瑚
|
||||||
|
tile.coral2.algae.name=海藻
|
||||||
|
|
||||||
|
tile.newBopGrass.silty.name=粉草块
|
||||||
|
tile.newBopGrass.sandy.name=沙草块
|
||||||
|
tile.newBopGrass.loamy.name=肥沃草块
|
||||||
|
tile.newBopDirt.dirt_silty.name=粉质土
|
||||||
|
tile.newBopDirt.dirt_sandy.name=沙质土
|
||||||
|
tile.newBopDirt.dirt_loamy.name=肥沃土
|
||||||
|
tile.newBopDirt.coarse_dirt_silty.name=粗糙粉质土
|
||||||
|
tile.newBopDirt.coarse_dirt_sandy.name=粗糙沙质土
|
||||||
|
tile.newBopDirt.coarse_dirt_loamy.name=粗糙肥沃土
|
||||||
|
tile.newBopFarmland.silty.name=粉质耕地
|
||||||
|
tile.newBopFarmland.sandy.name=沙质耕地
|
||||||
|
tile.newBopFarmland.loamy.name=肥沃耕地
|
||||||
|
|
||||||
|
tile.bopGrass.spectralmoss.name=幽灵苔藓
|
||||||
|
tile.bopGrass.smolderinggrass.name=阴燃草
|
||||||
|
|
||||||
|
tile.gemOre.amethystore.name=紫晶矿石
|
||||||
|
tile.gemOre.amethystblock.name=紫晶块
|
||||||
|
tile.gemOre.rubyore.name=红宝石矿石
|
||||||
|
tile.gemOre.rubyblock.name=红宝石块
|
||||||
|
tile.gemOre.peridotore.name=橄榄石矿石
|
||||||
|
tile.gemOre.peridotblock.name=橄榄石块
|
||||||
|
tile.gemOre.topazore.name=黄玉矿石
|
||||||
|
tile.gemOre.topazblock.name=黄玉块
|
||||||
|
tile.gemOre.tanzaniteore.name=坦桑矿石
|
||||||
|
tile.gemOre.tanzaniteblock.name=坦桑石块
|
||||||
|
tile.gemOre.malachiteore.name=孔雀石矿石
|
||||||
|
tile.gemOre.malachiteblock.name=孔雀石块
|
||||||
|
tile.gemOre.sapphireore.name=蓝宝石矿石
|
||||||
|
tile.gemOre.sapphireblock.name=蓝宝石块
|
||||||
|
tile.gemOre.amberore.name=琥珀矿石
|
||||||
|
tile.gemOre.amberblock.name=琥珀块
|
||||||
|
|
||||||
|
tile.moss.name=苔藓
|
||||||
|
|
||||||
|
tile.hive.honeycomb.name=蜂窝块
|
||||||
|
tile.hive.hive.name=蜂巢块
|
||||||
|
tile.hive.honeycombempty.name=空蜂窝块
|
||||||
|
tile.hive.honeycombfilled.name=满的蜂窝块
|
||||||
|
|
||||||
|
tile.honeyBlock.name=蜂蜜块
|
||||||
|
|
||||||
|
tile.jellyBlock.strawberry.name=草莓果冻块
|
||||||
|
tile.jellyBlock.raspberry.name=木莓果冻块
|
||||||
|
tile.jellyBlock.grape.name=葡萄果冻块
|
||||||
|
|
||||||
|
tile.bones.bones_small.name=一小截骨头
|
||||||
|
tile.bones.bones_medium.name=一截骨头
|
||||||
|
tile.bones.bones_large.name=一大截骨头
|
||||||
|
|
||||||
|
tile.bones.bones_small_side_1.name=一小截骨头
|
||||||
|
tile.bones.bones_small_side_2.name=一小截骨头
|
||||||
|
tile.bones.bones_medium_side_1.name=一截骨头
|
||||||
|
tile.bones.bones_medium_side_2.name=一截骨头
|
||||||
|
|
||||||
|
tile.grave.name=坟墓
|
||||||
|
|
||||||
|
tile.stoneDoubleSlab.mudbrickSlab.name=泥砖台阶
|
||||||
|
tile.stoneSingleSlab.mudbrickSlab.name=泥砖台阶
|
||||||
|
|
||||||
|
tile.planks.sacredoakPlank.name=神圣橡木木板
|
||||||
|
tile.planks.cherryPlank.name=樱桃树木板
|
||||||
|
tile.planks.darkPlank.name=黑暗树木板
|
||||||
|
tile.planks.firPlank.name=杉树木板
|
||||||
|
tile.planks.etherealPlank.name=空灵树木板
|
||||||
|
tile.planks.magicPlank.name=魔法树木板
|
||||||
|
tile.planks.mangrovePlank.name=红树木板
|
||||||
|
tile.planks.palmPlank.name=棕榈树木板
|
||||||
|
tile.planks.redwoodPlank.name=红杉木板
|
||||||
|
tile.planks.willowPlank.name=柳树木板
|
||||||
|
tile.planks.bambooThatching.name=竹板
|
||||||
|
tile.planks.pinePlank.name=松树木板
|
||||||
|
tile.planks.hellBarkPlank.name=地狱皮树木板
|
||||||
|
tile.planks.jacarandaPlank.name=蓝花楹树木板
|
||||||
|
tile.planks.mahoganyPlank.name=桃花心木木板
|
||||||
|
|
||||||
|
tile.logs1.sacredoakWood.name=神圣橡木原木
|
||||||
|
tile.logs1.cherryWood.name=樱桃树原木
|
||||||
|
tile.logs1.darkWood.name=黑暗树原木
|
||||||
|
tile.logs1.firWood.name=杉树原木
|
||||||
|
|
||||||
|
tile.logs2.etherealWood.name=空灵树原木
|
||||||
|
tile.logs2.magicWood.name=魔法树原木
|
||||||
|
tile.logs2.mangroveWood.name=红树原木
|
||||||
|
tile.logs2.palmWood.name=棕榈树原木
|
||||||
|
|
||||||
|
tile.logs3.redwoodWood.name=红杉原木
|
||||||
|
tile.logs3.willowWood.name=柳树原木
|
||||||
|
tile.logs3.deadWood.name=垂死树原木
|
||||||
|
tile.logs3.bigflowerstemWood.name=巨大花茎
|
||||||
|
|
||||||
|
tile.logs4.pineWood.name=松树原木
|
||||||
|
tile.logs4.hellbarkWood.name=地狱皮树原木
|
||||||
|
tile.logs4.jacarandaWood.name=蓝花楹树原木
|
||||||
|
tile.logs4.mahoganyWood.name=桃花心木树原木
|
||||||
|
|
||||||
|
tile.leaves1.yellowautumn.name=黄色秋天树叶
|
||||||
|
tile.leaves1.bamboo.name=竹叶
|
||||||
|
tile.leaves1.magic.name=魔法树叶
|
||||||
|
tile.leaves1.dark.name=黑暗树叶
|
||||||
|
|
||||||
|
tile.leaves2.dead.name=垂死树叶
|
||||||
|
tile.leaves2.fir.name=杉树树叶
|
||||||
|
tile.leaves2.ethereal.name=空灵树树叶
|
||||||
|
tile.leaves2.orangeautumn.name=橙色秋天树叶
|
||||||
|
|
||||||
|
tile.leaves3.origin.name=起源树树叶
|
||||||
|
tile.leaves3.pinkcherry.name=粉樱桃树叶
|
||||||
|
tile.leaves3.maple.name=枫树树叶
|
||||||
|
tile.leaves3.whitecherry.name=白樱桃树叶
|
||||||
|
|
||||||
|
tile.leaves4.hellbark.name=地狱皮树叶
|
||||||
|
tile.leaves4.jacaranda.name=蓝花楹树叶
|
||||||
|
|
||||||
|
tile.colorizedLeaves1.sacredoak.name=神圣橡木树叶
|
||||||
|
tile.colorizedLeaves1.mangrove.name=红树树叶
|
||||||
|
tile.colorizedLeaves1.palm.name=棕榈树叶
|
||||||
|
tile.colorizedLeaves1.redwood.name=红杉叶
|
||||||
|
|
||||||
|
tile.colorizedLeaves2.willow.name=柳树树叶
|
||||||
|
tile.colorizedLeaves2.pine.name=松树叶
|
||||||
|
tile.colorizedLeaves2.mahogany.name=桃花心木树叶
|
||||||
|
tile.colorizedLeaves2.flowering.name=开花橡木树叶
|
||||||
|
|
||||||
|
tile.appleLeaves.name=苹果树叶
|
||||||
|
tile.persimmonLeaves.name=柿子树叶
|
||||||
|
|
||||||
|
tile.woodenDoubleSlab1.sacredoakSlab.name=神圣橡木台阶
|
||||||
|
tile.woodenDoubleSlab1.cherrySlab.name=樱桃树台阶
|
||||||
|
tile.woodenDoubleSlab1.darkSlab.name=黑暗树台阶
|
||||||
|
tile.woodenDoubleSlab1.firSlab.name=杉树台阶
|
||||||
|
tile.woodenDoubleSlab1.etherealSlab.name=空灵树台阶
|
||||||
|
tile.woodenDoubleSlab1.magicSlab.name=魔法树台阶
|
||||||
|
tile.woodenDoubleSlab1.mangroveSlab.name=红树台阶
|
||||||
|
tile.woodenDoubleSlab1.palmSlab.name=棕榈树台阶
|
||||||
|
tile.woodenDoubleSlab2.redwoodSlab.name=红杉台阶
|
||||||
|
tile.woodenDoubleSlab2.willowSlab.name=柳树台阶
|
||||||
|
tile.woodenDoubleSlab2.pineSlab.name=松树台阶
|
||||||
|
tile.woodenDoubleSlab2.hell_barkSlab.name=地狱皮树台阶
|
||||||
|
tile.woodenDoubleSlab2.jacarandaSlab.name=蓝花楹树台阶
|
||||||
|
tile.woodenDoubleSlab2.mahoganySlab.name=桃花心木台阶
|
||||||
|
|
||||||
|
tile.woodenSingleSlab1.sacredoakSlab.name=神圣橡木台阶
|
||||||
|
tile.woodenSingleSlab1.cherrySlab.name=樱桃树台阶
|
||||||
|
tile.woodenSingleSlab1.darkSlab.name=黑暗树台阶
|
||||||
|
tile.woodenSingleSlab1.firSlab.name=衫树台阶
|
||||||
|
tile.woodenSingleSlab1.etherealSlab.name=空灵树台阶
|
||||||
|
tile.woodenSingleSlab1.magicSlab.name=魔法树台阶
|
||||||
|
tile.woodenSingleSlab1.mangroveSlab.name=红树台阶
|
||||||
|
tile.woodenSingleSlab1.palmSlab.name=棕榈树台阶
|
||||||
|
tile.woodenSingleSlab2.redwoodSlab.name=红杉台阶
|
||||||
|
tile.woodenSingleSlab2.willowSlab.name=柳树台阶
|
||||||
|
tile.woodenSingleSlab2.pineSlab.name=松树台阶
|
||||||
|
tile.woodenSingleSlab2.hell_barkSlab.name=地狱皮树台阶
|
||||||
|
tile.woodenSingleSlab2.jacarandaSlab.name=蓝花楹树台阶
|
||||||
|
tile.woodenSingleSlab2.mahoganySlab.name=桃花心木台阶
|
||||||
|
|
||||||
|
tile.sacredoakStairs.name=神圣橡木楼梯
|
||||||
|
tile.cherryStairs.name=樱桃木楼梯
|
||||||
|
tile.darkStairs.name=黑暗木楼梯
|
||||||
|
tile.firStairs.name=杉木楼梯
|
||||||
|
tile.etherealStairs.name=空灵木楼梯
|
||||||
|
tile.magicStairs.name=魔法木楼梯
|
||||||
|
tile.mangroveStairs.name=红树木楼梯
|
||||||
|
tile.palmStairs.name=棕榈木楼梯
|
||||||
|
tile.redwoodStairs.name=红杉木楼梯
|
||||||
|
tile.willowStairs.name=柳树木楼梯
|
||||||
|
tile.pineStairs.name=松树木楼梯
|
||||||
|
tile.hellBarkStairs.name=地狱皮木楼梯
|
||||||
|
tile.jacarandaStairs.name=蓝花楹木楼梯
|
||||||
|
tile.mahoganyStairs.name=桃花心木楼梯
|
||||||
|
|
||||||
|
item.food.berries.name=浆果
|
||||||
|
item.food.shroompowder.name=蘑菇粉
|
||||||
|
item.food.wildcarrots.name=野萝卜
|
||||||
|
item.food.peach.name=桃子
|
||||||
|
item.food.saladfruit.name=水果沙拉
|
||||||
|
item.food.saladveggie.name=蔬菜沙拉
|
||||||
|
item.food.saladshroom.name=蘑菇沙拉
|
||||||
|
item.food.persimmon.name=柿子
|
||||||
|
item.food.filledhoneycomb.name=满的蜂蜜窝
|
||||||
|
item.food.ambrosia.name=仙馔密酒
|
||||||
|
item.food.turnip.name=芜青
|
||||||
|
item.food.pear.name=雪梨
|
||||||
|
item.food.ricebowl.name=碗饭
|
||||||
|
|
||||||
|
item.turnipSeeds.name=芜青种子
|
||||||
|
|
||||||
|
item.dartBlower.name=飞镖吹筒
|
||||||
|
item.dart.dart.name=飞镖
|
||||||
|
item.dart.poisondart.name=毒飞镖
|
||||||
|
|
||||||
|
item.mudball.name=泥球
|
||||||
|
|
||||||
|
item.misc.mudbrick.name=泥块
|
||||||
|
item.misc.ash.name=一小堆灰烬
|
||||||
|
item.misc.fleshchunk.name=肉块
|
||||||
|
item.misc.emptyhoneycomb.name=空蜂巢
|
||||||
|
item.misc.crystalshard.name=仙域水晶碎片
|
||||||
|
item.misc.bluedye.name=蓝色染料
|
||||||
|
item.misc.browndye.name=棕色染料
|
||||||
|
item.misc.greendye.name=绿色染料
|
||||||
|
item.misc.whitedye.name=白色染料
|
||||||
|
item.misc.blackdye.name=黑色染料
|
||||||
|
item.misc.ghastlysoul.name=可怕的灵魂
|
||||||
|
item.misc.pixiedust.name=妖精之尘
|
||||||
|
item.misc.ichor.name=灵液
|
||||||
|
item.misc.pinecone.name=松果
|
||||||
|
|
||||||
|
item.jarEmpty.name=空罐子
|
||||||
|
item.jarFilled.jarhoney.name=蜂蜜罐
|
||||||
|
item.jarFilled.jarpoison.name=毒罐子
|
||||||
|
item.jarFilled.jarpixie.name=妖精罐子
|
||||||
|
|
||||||
|
item.gems.amethyst.name=紫水晶
|
||||||
|
item.gems.ruby.name=红宝石
|
||||||
|
item.gems.peridot.name=橄榄石
|
||||||
|
item.gems.topaz.name=黄玉
|
||||||
|
item.gems.tanzanite.name=坦桑石
|
||||||
|
item.gems.malachite.name=孔雀石
|
||||||
|
item.gems.sapphire.name=蓝宝石
|
||||||
|
item.gems.amber.name=琥珀
|
||||||
|
|
||||||
|
item.pickaxeMud.name=泥巴镐
|
||||||
|
item.axeMud.name=泥巴斧
|
||||||
|
item.shovelMud.name=泥巴铲
|
||||||
|
item.swordMud.name=泥巴剑
|
||||||
|
item.hoeMud.name=泥巴锄
|
||||||
|
item.helmetMud.name=泥巴头盔
|
||||||
|
item.chestplateMud.name=泥巴胸甲
|
||||||
|
item.leggingsMud.name=泥巴护腿
|
||||||
|
item.bootsMud.name=泥巴靴子
|
||||||
|
|
||||||
|
item.pickaxeAmethyst.name=紫水晶镐
|
||||||
|
item.axeAmethyst.name=紫水晶斧
|
||||||
|
item.shovelAmethyst.name=紫水晶铲
|
||||||
|
item.swordAmethyst.name=紫水晶剑
|
||||||
|
item.hoeAmethyst.name=紫水晶锄
|
||||||
|
item.helmetAmethyst.name=紫水晶头盔
|
||||||
|
item.chestplateAmethyst.name=紫水晶胸甲
|
||||||
|
item.leggingsAmethyst.name=紫水晶护腿
|
||||||
|
item.bootsAmethyst.name=紫水晶靴子
|
||||||
|
|
||||||
|
item.scytheWood.name=木镰刀
|
||||||
|
item.scytheStone.name=石镰刀
|
||||||
|
item.scytheIron.name=铁镰刀
|
||||||
|
item.scytheGold.name=金镰刀
|
||||||
|
item.scytheDiamond.name=钻石镰刀
|
||||||
|
item.scytheMud.name=泥土镰刀
|
||||||
|
item.scytheAmethyst.name=紫水晶镰刀
|
||||||
|
|
||||||
|
item.ancientStaff.ancientstaff.name=上古手仗
|
||||||
|
item.ancientStaff.staffhandle.name=上古手杖手柄
|
||||||
|
item.ancientStaff.staffpole.name=上古手杖仗杆
|
||||||
|
item.ancientStaff.stafftopper.name=上古手杖龙头
|
||||||
|
item.ancientStaff.ancientstaffbroken.name=废弃上古手杖
|
||||||
|
|
||||||
|
item.enderporter.name=末地逃逸护符
|
||||||
|
|
||||||
|
item.record_wanderer.name=音乐唱片
|
||||||
|
item.record_corruption.name=音乐唱片
|
||||||
|
|
||||||
|
item.record_wanderer.desc=Tim Rurkowski - Wanderer
|
||||||
|
item.record_corruption.desc=???
|
||||||
|
|
||||||
|
item.flowerBand.dullflowerband.name=黯淡的花环
|
||||||
|
item.flowerBand.plainflowerband.name=平凡的花环
|
||||||
|
item.flowerBand.lushflowerband.name=丰饶的花环
|
||||||
|
item.flowerBand.exoticflowerband.name=异域之花环
|
||||||
|
|
||||||
|
item.wadingBoots.name=雨靴
|
||||||
|
item.flippers.name=脚蹼
|
||||||
|
|
||||||
|
item.biomeBook.name=Book O' Biomes
|
||||||
|
item.biomeFinder.name=生物雷达
|
||||||
|
item.biomeEssence.name=生物源质
|
||||||
|
|
||||||
|
item.poisonBucket.name=毒液桶
|
||||||
|
item.hell_bloodBucket.name=血水桶
|
||||||
|
item.honeyBucket.name=蜂蜜桶
|
||||||
|
|
||||||
|
tile.poison.name=毒液
|
||||||
|
tile.hell_blood.name=血
|
||||||
|
tile.honey.name=蜂蜜
|
||||||
|
|
||||||
|
fluid.poison=毒液
|
||||||
|
fluid.hell_blood=血水
|
||||||
|
fluid.honey=蜂蜜
|
||||||
|
|
||||||
|
biomeRadar.target=目标:
|
||||||
|
biomeRadar.foundBiome=找到生物群系!
|
||||||
|
biomeRadar.scanBiome=右键单击扫描生物群系
|
||||||
|
|
||||||
|
enderporter.prevent=一股神秘的力量阻止你在这个世界使用此物品
|
||||||
|
|
||||||
|
phrase.bop.useBOPATGWorldtype=如果你在这里选择BOPATG的世界类型, 将会直接生成BOPATG的生物群系. 这个提示只会出现一次.
|
||||||
|
phrase.bop.useBOPWorldtype=如果你在这里选择BOP的世界类型, 将会直接生成BOP的生物群系. 这个提示只会出现一次..
|
||||||
|
phrase.bop.updateAvaliable=你当前没有使用最新的BOP版本. 最新版本是: v%s 用于 %s 版本
|
||||||
|
|
||||||
|
warning.bopStartup1=超多生物群系(以下简称BOP)有一个自己独特的世界类型, 你可以在
|
||||||
|
warning.bopStartup2=在生成世界的时候在世界类型那里选择BOP的世界类型
|
||||||
|
warning.bopStartup3='超多生物群系'.
|
||||||
|
warning.bopStartup4=如果你在服务器使用的话, 可以打开server.properties把level-type参数改成 BIOMESOP
|
||||||
|
warning.bopStartup5=这样就会在服务器世界的生成中生成BOP生物群系
|
||||||
|
warning.bopStartup6=这个提示只会出现一次.
|
||||||
|
|
||||||
|
potion.paralysis=麻痹
|
||||||
|
potion.possession=中毒
|
||||||
|
|
||||||
|
entity.BiomesOPlenty.Glob.name=泥史莱姆
|
||||||
|
entity.BiomesOPlenty.JungleSpider.name=丛林蜘蛛
|
||||||
|
entity.BiomesOPlenty.Phantom.name=魅影
|
||||||
|
entity.BiomesOPlenty.Rosester.name=火鸡
|
||||||
|
entity.BiomesOPlenty.Wasp.name=胡峰
|
||||||
|
entity.BiomesOPlenty.Bird.name=鸟
|
||||||
|
entity.BiomesOPlenty.Pixie.name=妖精
|
||||||
|
|
||||||
|
achievement.bop.achFlower=花之子
|
||||||
|
achievement.bop.achFlower.desc=成为大自然中的一员!
|
||||||
|
|
||||||
|
achievement.bop.achBerry=捡起浆果
|
||||||
|
achievement.bop.achBerry.desc=这简直是最简单的事情了...
|
||||||
|
achievement.bop.achMoss=滚动的石头
|
||||||
|
achievement.bop.achMoss.desc=啥都没有
|
||||||
|
achievement.bop.achThorn=这..非常棘手啊
|
||||||
|
achievement.bop.achThorn.desc=比仙人掌还危险!
|
||||||
|
achievement.bop.achCoral=很有营养
|
||||||
|
achievement.bop.achCoral.desc=一大块清蒸珊瑚怎么样?
|
||||||
|
|
||||||
|
achievement.bop.achFlowerBand=花的力量
|
||||||
|
achievement.bop.achFlowerBand.desc=年轻人, 甚是妙哉.
|
||||||
|
achievement.bop.achDartBlower=全自动
|
||||||
|
achievement.bop.achDartBlower.desc=孩子, 不要亮瞎了眼睛!
|
||||||
|
achievement.bop.achScythe=植物杀手
|
||||||
|
achievement.bop.achScythe.desc=一个收割之日.
|
||||||
|
achievement.bop.achEnderporter=甜蜜的家
|
||||||
|
achievement.bop.achEnderporter.desc=用末影珍珠的神奇力量.
|
||||||
|
|
||||||
|
achievement.bop.achHoney=有苦有乐
|
||||||
|
achievement.bop.achHoney.desc=含血的甜蜜大陆.
|
||||||
|
achievement.bop.achWitherWart=衰退
|
||||||
|
achievement.bop.achWitherWart.desc=假装主人.
|
||||||
|
achievement.bop.achGrave=倔坟者
|
||||||
|
achievement.bop.achGrave.desc=下一个挡板.
|
||||||
|
achievement.bop.achPhantom=幽灵的威胁
|
||||||
|
achievement.bop.achPhantom.desc=灵魂小偷...
|
||||||
|
|
||||||
|
achievement.bop.achPromised=往前走!
|
||||||
|
achievement.bop.achPromised.desc=欢迎来到极乐净土(笑)(应许之地)!
|
||||||
|
achievement.bop.achCelestial=蓝天
|
||||||
|
achievement.bop.achCelestial.desc=我是一个方块
|
||||||
|
achievement.bop.achAmbrosia=众神之酒
|
||||||
|
achievement.bop.achAmbrosia.desc=保持饥渴,我的朋友们.
|
||||||
|
|
||||||
|
achievement.bop.achAllBOP=成就猎杀者
|
||||||
|
achievement.bop.achAllBOP.desc=你征服了全世界, 完成了BOP所有的成就!
|
||||||
|
|
||||||
|
itemGroup.tabBiomesOPlenty=超多生态群系
|
||||||
|
|
||||||
|
generator.BIOMESOP=超多生态群系
|
|
@ -0,0 +1,49 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import 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;
|
||||||
|
}
|
|
@ -0,0 +1,102 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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;
|
||||||
|
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);
|
||||||
|
|
||||||
|
Class<? extends IAllele> clss;
|
||||||
|
|
||||||
|
EnumBeeChromosome(Class<? extends IAllele> clss) {
|
||||||
|
this.clss = clss;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends IAllele> getAlleleClass() {
|
||||||
|
return clss;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return this.toString().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ISpeciesRoot getSpeciesRoot() {
|
||||||
|
return BeeManager.beeRoot;
|
||||||
|
}
|
||||||
|
}
|
|
@ -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 java.util.Locale;
|
||||||
|
|
||||||
|
public enum EnumBeeType {
|
||||||
|
DRONE, PRINCESS, QUEEN, LARVAE, NONE;
|
||||||
|
|
||||||
|
public static final EnumBeeType[] VALUES = values();
|
||||||
|
|
||||||
|
String name;
|
||||||
|
|
||||||
|
private EnumBeeType() {
|
||||||
|
this.name = this.toString().toLowerCase(Locale.ENGLISH);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IFlowerProvider;
|
||||||
|
import forestry.api.genetics.IFlowerRegistry;
|
||||||
|
|
||||||
|
public class FlowerManager {
|
||||||
|
/**
|
||||||
|
* ItemStacks representing simple flower blocks. Meta-sensitive, processed by the basic {@link IFlowerProvider}.
|
||||||
|
*
|
||||||
|
* @deprecated since Forestry 3.4. Use {@link #IFlowerRegistry.registerPlantableFlower(ItemStack flower, double weight, String... flowerTypes)} instead.
|
||||||
|
* <blockquote><pre>e.g. FlowerManager.flowerRegister.registerPlantableFlower(new ItemStack(Blocks.red_flower), 1.0, FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow);</pre></blockquote>
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public static ArrayList<ItemStack> plainFlowers = new ArrayList<ItemStack>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* <blockquote><pre>e.g. FlowerManager.flowerRegister.registerPlantableFlower(new ItemStack(Blocks.red_flower), 1.0, FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow);</pre></blockquote>
|
||||||
|
*/
|
||||||
|
public static IFlowerRegistry flowerRegistry;
|
||||||
|
|
||||||
|
public static final String FlowerTypeVanilla = "flowersVanilla";
|
||||||
|
public static final String FlowerTypeNether = "flowersNether";
|
||||||
|
public static final String FlowerTypeCacti = "flowersCacti";
|
||||||
|
public static final String FlowerTypeMushrooms = "flowersMushrooms";
|
||||||
|
public static final String FlowerTypeEnd = "flowersEnd";
|
||||||
|
public static final String FlowerTypeJungle = "flowersJungle";
|
||||||
|
public static final String FlowerTypeSnow = "flowersSnow";
|
||||||
|
public static final String FlowerTypeWheat = "flowersWheat";
|
||||||
|
public static final String FlowerTypeGourd = "flowersGourd";
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAlleleEffect;
|
||||||
|
import forestry.api.genetics.IEffectData;
|
||||||
|
|
||||||
|
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,69 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Since Forestry 3.6 use getProductChances()
|
||||||
|
* @return Map of possible products with the chance for drop each bee cycle. (0 - 100)
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
Map<ItemStack, Integer> getProducts();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated Since Forestry 3.6 use getSpecialtyChances()
|
||||||
|
* @return Map of possible specialities with the chance for drop each bee cycle. (0 - 100)
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
Map<ItemStack, Integer> getSpecialty();
|
||||||
|
}
|
|
@ -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.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);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Make this species only active at night.
|
||||||
|
*/
|
||||||
|
IAlleleBeeSpeciesCustom setNocturnal();
|
||||||
|
|
||||||
|
/** Use this if you have custom icons for bees. */
|
||||||
|
IAlleleBeeSpeciesCustom setCustomBeeIconProvider(IBeeIconProvider beeIconProvider);
|
||||||
|
}
|
|
@ -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.core.ITileStructure;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Needs to be implemented by TileEntities that want to be part of an alveary.
|
||||||
|
*/
|
||||||
|
public interface IAlvearyComponent extends ITileStructure {
|
||||||
|
|
||||||
|
void registerBeeModifier(IBeeModifier modifier);
|
||||||
|
|
||||||
|
void removeBeeModifier(IBeeModifier modifier);
|
||||||
|
|
||||||
|
void registerBeeListener(IBeeListener event);
|
||||||
|
|
||||||
|
void removeBeeListener(IBeeListener event);
|
||||||
|
|
||||||
|
void addTemperatureChange(float change, float boundaryDown, float boundaryUp);
|
||||||
|
|
||||||
|
void addHumidityChange(float change, float boundaryDown, float boundaryUp);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if this TE has a function other than a plain alveary block. Returning true prevents the TE from becoming master.
|
||||||
|
*/
|
||||||
|
boolean hasFunction();
|
||||||
|
|
||||||
|
}
|
|
@ -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 forestry.api.genetics.IBreedingTracker;
|
||||||
|
import forestry.api.genetics.IIndividual;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Can be used to garner information on bee breeding. See {@link forestry.api.genetics.ISpeciesRoot} for retrieval functions.
|
||||||
|
*
|
||||||
|
* @author SirSengir
|
||||||
|
*/
|
||||||
|
public interface IApiaristTracker extends IBreedingTracker {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the birth of a queen. Will mark species as discovered.
|
||||||
|
*
|
||||||
|
* @param queen
|
||||||
|
* Created queen.
|
||||||
|
*/
|
||||||
|
void registerQueen(IIndividual queen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Amount of queens bred with this tracker.
|
||||||
|
*/
|
||||||
|
int getQueenCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the birth of a princess. Will mark species as discovered.
|
||||||
|
*
|
||||||
|
* @param princess
|
||||||
|
* Created princess.
|
||||||
|
*/
|
||||||
|
void registerPrincess(IIndividual princess);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Amount of princesses bred with this tracker.
|
||||||
|
*/
|
||||||
|
int getPrincessCount();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Register the birth of a drone. Will mark species as discovered.
|
||||||
|
*
|
||||||
|
* @param drone
|
||||||
|
* Created drone.
|
||||||
|
*/
|
||||||
|
void registerDrone(IIndividual drone);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Amount of drones bred with this tracker.
|
||||||
|
*/
|
||||||
|
int getDroneCount();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import 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 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
|
||||||
|
*/
|
||||||
|
public boolean protectPlayer(EntityPlayer player, ItemStack armor, String cause, boolean doProtect);
|
||||||
|
}
|
|
@ -0,0 +1,98 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.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);
|
||||||
|
|
||||||
|
boolean hasFlower(IBeeHousing housing);
|
||||||
|
|
||||||
|
ArrayList<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);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines whether the queen can work.
|
||||||
|
*
|
||||||
|
* @param housing the {@link IBeeHousing} the bee currently resides in.
|
||||||
|
* @return the error code encountered.
|
||||||
|
* @deprecated since Forestry 3.6. Use getCanWork
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
IErrorState canWork(IBeeHousing housing);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IClassification;
|
||||||
|
|
||||||
|
public interface IBeeFactory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Creates a new bee species.
|
||||||
|
* Automatically registered with AlleleManager.alleleRegistry.registerAllele()
|
||||||
|
* See 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,48 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,27 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.IHousing;
|
||||||
|
|
||||||
|
public interface IBeeHousing extends IBeeModifier, IBeeListener, IHousing {
|
||||||
|
|
||||||
|
ItemStack getQueen();
|
||||||
|
|
||||||
|
ItemStack getDrone();
|
||||||
|
|
||||||
|
void setQueen(ItemStack itemstack);
|
||||||
|
|
||||||
|
void setDrone(ItemStack itemstack);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if princesses and drones can (currently) mate in this housing to generate queens.
|
||||||
|
*/
|
||||||
|
boolean canBreed();
|
||||||
|
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
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,46 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.IIndividual;
|
||||||
|
|
||||||
|
public interface IBeeListener {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called on queen update.
|
||||||
|
*
|
||||||
|
* @param queen
|
||||||
|
*/
|
||||||
|
void onQueenChange(ItemStack queen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the bees wear out the housing's equipment.
|
||||||
|
*
|
||||||
|
* @param amount
|
||||||
|
* Integer indicating the amount worn out.
|
||||||
|
*/
|
||||||
|
void wearOutEquipment(int amount);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called just before the children are generated, and the queen removed.
|
||||||
|
*
|
||||||
|
* @param queen
|
||||||
|
*/
|
||||||
|
void onQueenDeath(IBee queen);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called after the children have been spawned, but before the queen appears
|
||||||
|
*
|
||||||
|
* @param queen
|
||||||
|
*/
|
||||||
|
void onPostQueenDeath(IBee queen);
|
||||||
|
|
||||||
|
boolean onPollenRetrieved(IBee queen, IIndividual pollen, boolean isHandled);
|
||||||
|
|
||||||
|
boolean onEggLaid(IBee queen);
|
||||||
|
}
|
|
@ -0,0 +1,71 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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
|
||||||
|
* @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
|
||||||
|
*/
|
||||||
|
boolean isSelfLighted();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Boolean indicating if housing can ignore not seeing the sky
|
||||||
|
*/
|
||||||
|
boolean isSunlightSimulated();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Boolean indicating whether this housing simulates the nether
|
||||||
|
*/
|
||||||
|
boolean isHellish();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAllele;
|
||||||
|
import forestry.api.genetics.IGenome;
|
||||||
|
import forestry.api.genetics.IMutation;
|
||||||
|
|
||||||
|
public interface IBeeMutation extends IMutation {
|
||||||
|
|
||||||
|
IBeeRoot getRoot();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param housing
|
||||||
|
* @param allele0
|
||||||
|
* @param allele1
|
||||||
|
* @param genome0
|
||||||
|
* @param genome1
|
||||||
|
* @return float representing the chance for mutation to occur. note that this is 0 - 100 based, since it was an integer previously!
|
||||||
|
* @deprecated since Forestry 3.6, use the IAlleleBeeSpecies / IBeeGenome version
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
float getChance(IBeeHousing housing, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1);
|
||||||
|
|
||||||
|
float getChance(IBeeHousing housing, IAlleleBeeSpecies allele0, IAlleleBeeSpecies allele1, IBeeGenome genome0, IBeeGenome genome1);
|
||||||
|
}
|
|
@ -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;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IMutationCustom;
|
||||||
|
|
||||||
|
public interface IBeeMutationCustom extends IBeeMutation, IMutationCustom {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAllele;
|
||||||
|
|
||||||
|
public interface IBeeMutationFactory {
|
||||||
|
/**
|
||||||
|
* Creates a new bee mutation.
|
||||||
|
* Automatically registered with BeeManager.beeRoot.registerMutation()
|
||||||
|
* See 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,128 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.core.IStructureLogic;
|
||||||
|
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.
|
||||||
|
*/
|
||||||
|
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 */
|
||||||
|
/**
|
||||||
|
* @param housing
|
||||||
|
* Object implementing IBeeHousing.
|
||||||
|
* @return IBeekeepingLogic
|
||||||
|
*/
|
||||||
|
IBeekeepingLogic createBeekeepingLogic(IBeeHousing housing);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TileEntities wanting to function as alveary components need to implement structure logic for validation.
|
||||||
|
*
|
||||||
|
* @return IStructureLogic for alvearies.
|
||||||
|
*/
|
||||||
|
IStructureLogic createAlvearyStructureLogic(IAlvearyComponent structure);
|
||||||
|
|
||||||
|
}
|
|
@ -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.core.INBTTagable;
|
||||||
|
import forestry.api.genetics.IEffectData;
|
||||||
|
|
||||||
|
public interface IBeekeepingLogic extends INBTTagable {
|
||||||
|
|
||||||
|
/* STATE INFORMATION */
|
||||||
|
int getBreedingTime();
|
||||||
|
|
||||||
|
int getTotalBreedingTime();
|
||||||
|
|
||||||
|
IBee getQueen();
|
||||||
|
|
||||||
|
IBeeHousing getHousing();
|
||||||
|
|
||||||
|
IEffectData[] getEffectData();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated since Forestry 3.6. use canWork() and doWork() instead
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
void update();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,70 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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 extends IBeeModifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @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);
|
||||||
|
|
||||||
|
|
||||||
|
}
|
|
@ -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,27 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IHiveFrame extends IBeeModifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 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.
|
||||||
|
*/
|
||||||
|
ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear);
|
||||||
|
|
||||||
|
}
|
|
@ -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.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,15 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
|
||||||
|
public interface IJubilanceProvider {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true when conditions are right to make this species Jubilant.
|
||||||
|
* Jubilant bees can produce their Specialty products.
|
||||||
|
*/
|
||||||
|
boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing);
|
||||||
|
}
|
|
@ -0,0 +1,13 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture.hives;
|
||||||
|
|
||||||
|
public class HiveManager {
|
||||||
|
|
||||||
|
public static IHiveRegistry hiveRegistry;
|
||||||
|
public static IHiveGenHelper genHelper;
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,48 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,29 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,23 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.apiculture.hives;
|
||||||
|
|
||||||
|
import net.minecraft.block.Block;
|
||||||
|
|
||||||
|
public interface IHiveGenHelper {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a hiveGen for a hive that spawns on the ground.
|
||||||
|
* validGroundBlocks specifies which block materials it can spawn on.
|
||||||
|
*/
|
||||||
|
IHiveGen ground(Block... validGroundBlocks);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns a hiveGen for a hive that spawns in trees.
|
||||||
|
*/
|
||||||
|
IHiveGen tree();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,33 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,8 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,8 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
@API(apiVersion="3.5.0", owner="ForestryAPI|core", provides="ForestryAPI|apiculture")
|
||||||
|
package forestry.api.apiculture;
|
||||||
|
import cpw.mods.fml.common.API;
|
|
@ -0,0 +1,23 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
public enum EnumGermlingType {
|
||||||
|
SAPLING("sapling"), BLOSSOM("blossom"), POLLEN("pollen"), GERMLING("germling"), NONE("none");
|
||||||
|
|
||||||
|
public static final EnumGermlingType[] VALUES = values();
|
||||||
|
|
||||||
|
private final String name;
|
||||||
|
|
||||||
|
private EnumGermlingType(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return name;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
public enum EnumGrowthConditions {
|
||||||
|
HOSTILE, PALTRY, NORMAL, GOOD, EXCELLENT
|
||||||
|
}
|
|
@ -0,0 +1,96 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.AlleleManager;
|
||||||
|
import forestry.api.genetics.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;
|
||||||
|
import net.minecraftforge.common.EnumPlantType;
|
||||||
|
|
||||||
|
public enum EnumTreeChromosome implements IChromosomeType {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines the following: - WorldGen, including the used wood blocks - {@link IFruitFamily}s supported. Limits which {@link IFruitProvider}
|
||||||
|
* will actually yield fruit with this species. - Native {@link EnumPlantType} for this tree. Combines with the PLANT chromosome.
|
||||||
|
*/
|
||||||
|
SPECIES(IAlleleTreeSpecies.class),
|
||||||
|
/**
|
||||||
|
* {@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),
|
||||||
|
;
|
||||||
|
|
||||||
|
Class<? extends IAllele> clss;
|
||||||
|
|
||||||
|
EnumTreeChromosome(Class<? extends IAllele> clss) {
|
||||||
|
this.clss = clss;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public Class<? extends IAllele> getAlleleClass() {
|
||||||
|
return clss;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getName() {
|
||||||
|
return this.toString().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public ISpeciesRoot getSpeciesRoot() {
|
||||||
|
return AlleleManager.alleleRegistry.getSpeciesRoot("rootTrees");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -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.arboriculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAllele;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple allele encapsulating an {@link IFruitProvider}.
|
||||||
|
*/
|
||||||
|
public interface IAlleleFruit extends IAllele {
|
||||||
|
|
||||||
|
IFruitProvider getProvider();
|
||||||
|
|
||||||
|
}
|
|
@ -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.arboriculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAllele;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Simple allele encapsulating an {@link IGrowthProvider}.
|
||||||
|
*/
|
||||||
|
public interface IAlleleGrowth extends IAllele {
|
||||||
|
|
||||||
|
IGrowthProvider getProvider();
|
||||||
|
|
||||||
|
}
|
|
@ -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.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,69 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import java.util.Collection;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.gen.feature.WorldGenerator;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.EnumPlantType;
|
||||||
|
|
||||||
|
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();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param tree
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return Tree generator for the tree at the given location.
|
||||||
|
*/
|
||||||
|
WorldGenerator getGenerator(ITree tree, World world, int x, int y, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return All available generator classes for this species.
|
||||||
|
*/
|
||||||
|
Class<? extends WorldGenerator>[] getGeneratorClasses();
|
||||||
|
|
||||||
|
/* TEXTURES AND OVERRIDES */
|
||||||
|
int getLeafColour(ITree tree);
|
||||||
|
|
||||||
|
short getLeafIconIndex(ITree tree, boolean fancy);
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
IIcon getGermlingIcon(EnumGermlingType type, int renderPass);
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
int getGermlingColour(EnumGermlingType type, int renderPass);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @return Array of ItemStacks representing logs that these tree produces, the first one being the primary one
|
||||||
|
*/
|
||||||
|
ItemStack[] getLogStacks();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,12 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IBreedingTracker;
|
||||||
|
|
||||||
|
public interface IArboristTracker extends IBreedingTracker {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,74 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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,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,12 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public interface ILeafTickHandler {
|
||||||
|
boolean onRandomLeafTick(ITree tree, World world, int biomeId, int x, int y, int z, boolean isDestroyed);
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import 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);
|
||||||
|
}
|
|
@ -0,0 +1,100 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.EnumSet;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
import net.minecraft.world.gen.feature.WorldGenerator;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.EnumPlantType;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IEffectData;
|
||||||
|
import forestry.api.genetics.IIndividual;
|
||||||
|
import forestry.api.world.ITreeGenData;
|
||||||
|
|
||||||
|
public interface ITree extends IIndividual, ITreeGenData {
|
||||||
|
|
||||||
|
void mate(ITree other);
|
||||||
|
|
||||||
|
IEffectData[] doEffect(IEffectData[] storedData, World world, int biomeid, int x, int y, int z);
|
||||||
|
|
||||||
|
IEffectData[] doFX(IEffectData[] storedData, World world, int biomeid, int x, int y, int z);
|
||||||
|
|
||||||
|
ITreeGenome getGenome();
|
||||||
|
|
||||||
|
ITreeGenome getMate();
|
||||||
|
|
||||||
|
EnumSet<EnumPlantType> getPlantTypes();
|
||||||
|
|
||||||
|
ITree[] getSaplings(World world, int x, int y, int z, float modifier);
|
||||||
|
|
||||||
|
ItemStack[] getProduceList();
|
||||||
|
|
||||||
|
ItemStack[] getSpecialtyList();
|
||||||
|
|
||||||
|
ItemStack[] produceStacks(World world, int x, int y, int z, int ripeningTime);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return Boolean indicating whether a sapling can stay planted at the given position.
|
||||||
|
*/
|
||||||
|
boolean canStay(World world, int x, int y, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return Boolean indicating whether a sapling at the given position can grow into a tree.
|
||||||
|
*/
|
||||||
|
boolean canGrow(World world, int x, int y, int z, int expectedGirth, int expectedHeight);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Integer denoting the maturity (block ticks) required for a sapling to attempt to grow into a tree.
|
||||||
|
*/
|
||||||
|
int getRequiredMaturity();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Integer denoting how resilient leaf blocks are against adverse influences (i.e. caterpillars).
|
||||||
|
*/
|
||||||
|
int getResilience();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return Integer denoting the size of the tree trunk.
|
||||||
|
*/
|
||||||
|
int getGirth(World world, int x, int y, int z);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @return Growth conditions at the given position.
|
||||||
|
*/
|
||||||
|
EnumGrowthConditions getGrowthCondition(World world, int x, int y, int z);
|
||||||
|
|
||||||
|
WorldGenerator getTreeGenerator(World world, int x, int y, int z, boolean wasBonemealed);
|
||||||
|
|
||||||
|
ITree copy();
|
||||||
|
|
||||||
|
boolean isPureBred(EnumTreeChromosome chromosome);
|
||||||
|
|
||||||
|
boolean canBearFruit();
|
||||||
|
}
|
|
@ -0,0 +1,46 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.EnumSet;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.EnumPlantType;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IGenome;
|
||||||
|
|
||||||
|
public interface ITreeGenome extends IGenome {
|
||||||
|
|
||||||
|
IAlleleTreeSpecies getPrimary();
|
||||||
|
|
||||||
|
IAlleleTreeSpecies getSecondary();
|
||||||
|
|
||||||
|
IFruitProvider getFruitProvider();
|
||||||
|
|
||||||
|
IGrowthProvider getGrowthProvider();
|
||||||
|
|
||||||
|
float getHeight();
|
||||||
|
|
||||||
|
float getFertility();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Determines either a) how many fruit leaves there are or b) the chance for any fruit leave to drop a sapling. Exact usage determined by the
|
||||||
|
* IFruitProvider
|
||||||
|
*/
|
||||||
|
float getYield();
|
||||||
|
|
||||||
|
float getSappiness();
|
||||||
|
|
||||||
|
EnumSet<EnumPlantType> getPlantTypes();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Amount of random block ticks required for a sapling to mature into a fully grown tree.
|
||||||
|
*/
|
||||||
|
int getMaturationTime();
|
||||||
|
|
||||||
|
int getGirth();
|
||||||
|
|
||||||
|
IAlleleLeafEffect getEffect();
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
public interface ITreeModifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param genome
|
||||||
|
* @return Float used to modify the height.
|
||||||
|
*/
|
||||||
|
float getHeightModifier(ITreeGenome genome, float currentModifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param genome
|
||||||
|
* @return Float used to modify the yield.
|
||||||
|
*/
|
||||||
|
float getYieldModifier(ITreeGenome genome, float currentModifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param genome
|
||||||
|
* @return Float used to modify the sappiness.
|
||||||
|
*/
|
||||||
|
float getSappinessModifier(ITreeGenome genome, float currentModifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @param genome
|
||||||
|
* @return Float used to modify the maturation.
|
||||||
|
*/
|
||||||
|
float getMaturationModifier(ITreeGenome genome, float currentModifier);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param genome0
|
||||||
|
* @param genome1
|
||||||
|
* @return Float used to modify the base mutation chance.
|
||||||
|
*/
|
||||||
|
float getMutationModifier(ITreeGenome genome0, ITreeGenome genome1, float currentModifier);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,34 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAllele;
|
||||||
|
import forestry.api.genetics.IGenome;
|
||||||
|
import forestry.api.genetics.IMutation;
|
||||||
|
import forestry.api.genetics.ISpeciesRoot;
|
||||||
|
|
||||||
|
public interface ITreeMutation extends IMutation {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return {@link ISpeciesRoot} this mutation is associated with.
|
||||||
|
*/
|
||||||
|
ITreeRoot getRoot();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param world
|
||||||
|
* @param x
|
||||||
|
* @param y
|
||||||
|
* @param z
|
||||||
|
* @param allele0
|
||||||
|
* @param allele1
|
||||||
|
* @param genome0
|
||||||
|
* @param genome1
|
||||||
|
* @return float representing the chance for mutation to occur. note that this is 0 - 100 based, since it was an integer previously!
|
||||||
|
*/
|
||||||
|
float getChance(World world, int x, int y, int z, IAllele allele0, IAllele allele1, IGenome genome0, IGenome genome1);
|
||||||
|
}
|
|
@ -0,0 +1,113 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.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.IChromosome;
|
||||||
|
import forestry.api.genetics.IIndividual;
|
||||||
|
import forestry.api.genetics.ISpeciesRoot;
|
||||||
|
|
||||||
|
public interface ITreeRoot extends ISpeciesRoot {
|
||||||
|
|
||||||
|
@Override
|
||||||
|
boolean isMember(ItemStack itemstack);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITree getMember(ItemStack itemstack);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITree getMember(NBTTagCompound compound);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITree templateAsIndividual(IAllele[] template);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITree templateAsIndividual(IAllele[] templateActive, IAllele[] templateInactive);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITreeGenome templateAsGenome(IAllele[] template);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
ITreeGenome templateAsGenome(IAllele[] templateActive, IAllele[] templateInactive);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param world
|
||||||
|
* @return {@link IArboristTracker} associated with the passed world.
|
||||||
|
*/
|
||||||
|
@Override
|
||||||
|
IArboristTracker getBreedingTracker(World world, GameProfile player);
|
||||||
|
|
||||||
|
/* TREE SPECIFIC */
|
||||||
|
/**
|
||||||
|
* Register a leaf tick handler.
|
||||||
|
* @param handler the {@link ILeafTickHandler} to register.
|
||||||
|
*/
|
||||||
|
void registerLeafTickHandler(ILeafTickHandler handler);
|
||||||
|
|
||||||
|
Collection<ILeafTickHandler> getLeafTickHandlers();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return type of tree encoded on the itemstack. EnumBeeType.NONE if it isn't a tree.
|
||||||
|
*/
|
||||||
|
EnumGermlingType getType(ItemStack stack);
|
||||||
|
|
||||||
|
ITree getTree(World world, int x, int y, int z);
|
||||||
|
|
||||||
|
ITree getTree(World world, ITreeGenome genome);
|
||||||
|
|
||||||
|
boolean plantSapling(World world, ITree tree, GameProfile owner, int x, int y, int z);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated since Forestry 3.5.0. Use ITreeGenData setLeavesDecorative.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
// decorative=true for creative and player-placed leaves. No decay, pollination, or drops.
|
||||||
|
boolean setLeaves(World world, IIndividual tree, GameProfile owner, int x, int y, int z, boolean decorative);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @deprecated since Forestry 3.5.0. Use ITreeGenData setLeaves.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
// set normal leaves created as worldgen
|
||||||
|
boolean setLeaves(World world, IIndividual tree, GameProfile owner, int x, int y, int z);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
IChromosome[] templateAsChromosomes(IAllele[] template);
|
||||||
|
|
||||||
|
@Override
|
||||||
|
IChromosome[] templateAsChromosomes(IAllele[] templateActive, IAllele[] templateInactive);
|
||||||
|
|
||||||
|
boolean setFruitBlock(World world, IAlleleFruit allele, float sappiness, short[] indices, int x, int y, int z);
|
||||||
|
|
||||||
|
/* GAME MODE */
|
||||||
|
ArrayList<ITreekeepingMode> getTreekeepingModes();
|
||||||
|
|
||||||
|
ITreekeepingMode getTreekeepingMode(World world);
|
||||||
|
|
||||||
|
ITreekeepingMode getTreekeepingMode(String name);
|
||||||
|
|
||||||
|
void registerTreekeepingMode(ITreekeepingMode mode);
|
||||||
|
|
||||||
|
void setTreekeepingMode(World world, String name);
|
||||||
|
|
||||||
|
/* TEMPLATES */
|
||||||
|
@Override
|
||||||
|
ArrayList<ITree> getIndividualTemplates();
|
||||||
|
|
||||||
|
/* MUTATIONS */
|
||||||
|
@Override
|
||||||
|
Collection<ITreeMutation> getMutations(boolean shuffle);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,22 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
|
public interface ITreekeepingMode extends ITreeModifier {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Localized name of this treekeeping mode.
|
||||||
|
*/
|
||||||
|
String getName();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Localized list of strings outlining the behaviour of this treekeeping mode.
|
||||||
|
*/
|
||||||
|
ArrayList<String> getDescription();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
@API(apiVersion="2.3.0", owner="ForestryAPI|core", provides="ForestryAPI|arboriculture")
|
||||||
|
package forestry.api.arboriculture;
|
||||||
|
import cpw.mods.fml.common.API;
|
|
@ -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.circuits;
|
||||||
|
|
||||||
|
public class ChipsetManager {
|
||||||
|
|
||||||
|
public static ISolderManager solderManager;
|
||||||
|
public static ICircuitRegistry circuitRegistry;
|
||||||
|
|
||||||
|
}
|
|
@ -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.circuits;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
public interface ICircuit {
|
||||||
|
String getUID();
|
||||||
|
|
||||||
|
boolean requiresDiscovery();
|
||||||
|
|
||||||
|
int getLimit();
|
||||||
|
|
||||||
|
String getName();
|
||||||
|
|
||||||
|
boolean isCircuitable(TileEntity tile);
|
||||||
|
|
||||||
|
void onInsertion(int slot, TileEntity tile);
|
||||||
|
|
||||||
|
void onLoad(int slot, TileEntity tile);
|
||||||
|
|
||||||
|
void onRemoval(int slot, TileEntity tile);
|
||||||
|
|
||||||
|
void onTick(int slot, TileEntity tile);
|
||||||
|
|
||||||
|
void addTooltip(List<String> list);
|
||||||
|
}
|
|
@ -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.circuits;
|
||||||
|
|
||||||
|
import java.util.List;
|
||||||
|
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
import forestry.api.core.INBTTagable;
|
||||||
|
|
||||||
|
public interface ICircuitBoard extends INBTTagable {
|
||||||
|
|
||||||
|
int getPrimaryColor();
|
||||||
|
|
||||||
|
int getSecondaryColor();
|
||||||
|
|
||||||
|
void addTooltip(List<String> list);
|
||||||
|
|
||||||
|
void onInsertion(TileEntity tile);
|
||||||
|
|
||||||
|
void onLoad(TileEntity tile);
|
||||||
|
|
||||||
|
void onRemoval(TileEntity tile);
|
||||||
|
|
||||||
|
void onTick(TileEntity tile);
|
||||||
|
|
||||||
|
ICircuit[] getCircuits();
|
||||||
|
|
||||||
|
}
|
|
@ -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.circuits;
|
||||||
|
|
||||||
|
public interface ICircuitLayout {
|
||||||
|
|
||||||
|
String getUID();
|
||||||
|
|
||||||
|
String getName();
|
||||||
|
|
||||||
|
String getUsage();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,10 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.circuits;
|
||||||
|
|
||||||
|
public interface ICircuitLibrary {
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.circuits;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraft.world.World;
|
||||||
|
|
||||||
|
public interface ICircuitRegistry {
|
||||||
|
|
||||||
|
/* CIRCUITS */
|
||||||
|
Map<String, ICircuit> getRegisteredCircuits();
|
||||||
|
|
||||||
|
void registerCircuit(ICircuit circuit);
|
||||||
|
|
||||||
|
ICircuit getCircuit(String uid);
|
||||||
|
|
||||||
|
ICircuitLibrary getCircuitLibrary(World world, String playername);
|
||||||
|
|
||||||
|
/* LAYOUTS */
|
||||||
|
Map<String, ICircuitLayout> getRegisteredLayouts();
|
||||||
|
|
||||||
|
void registerLayout(ICircuitLayout layout);
|
||||||
|
|
||||||
|
ICircuitLayout getLayout(String uid);
|
||||||
|
|
||||||
|
ICircuitLayout getDefaultLayout();
|
||||||
|
|
||||||
|
ICircuitBoard getCircuitboard(ItemStack itemstack);
|
||||||
|
|
||||||
|
boolean isChipset(ItemStack itemstack);
|
||||||
|
|
||||||
|
}
|
|
@ -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.circuits;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface ISolderManager {
|
||||||
|
|
||||||
|
void addRecipe(ICircuitLayout layout, ItemStack resource, ICircuit circuit);
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
@API(apiVersion="2.0.0", owner="ForestryAPI|core", provides="ForestryAPI|circuits")
|
||||||
|
package forestry.api.circuits;
|
||||||
|
import cpw.mods.fml.common.API;
|
|
@ -0,0 +1,36 @@
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
|
import net.minecraft.world.biome.BiomeGenBase;
|
||||||
|
|
||||||
|
import net.minecraftforge.common.BiomeDictionary;
|
||||||
|
|
||||||
|
public class BiomeHelper {
|
||||||
|
|
||||||
|
private static final Map<BiomeGenBase, Boolean> isBiomeHellishCache = new HashMap<BiomeGenBase, Boolean>();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if it can rain or snow in the given biome.
|
||||||
|
*/
|
||||||
|
public static boolean canRainOrSnow(BiomeGenBase biomeGenBase) {
|
||||||
|
return biomeGenBase.getEnableSnow() || biomeGenBase.canSpawnLightningBolt();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines if a given BiomeGenBase is of HELLISH temperature, since it is treated separately from actual temperature values.
|
||||||
|
* Uses the BiomeDictionary.
|
||||||
|
* @param biomeGen BiomeGenBase of the biome in question
|
||||||
|
* @return true, if the BiomeGenBase is a Nether-type biome; false otherwise.
|
||||||
|
*/
|
||||||
|
public static boolean isBiomeHellish(BiomeGenBase biomeGen) {
|
||||||
|
if (isBiomeHellishCache.containsKey(biomeGen)) {
|
||||||
|
return isBiomeHellishCache.get(biomeGen);
|
||||||
|
}
|
||||||
|
|
||||||
|
boolean isBiomeHellish = BiomeDictionary.isBiomeOfType(biomeGen, BiomeDictionary.Type.NETHER);
|
||||||
|
isBiomeHellishCache.put(biomeGen, isBiomeHellish);
|
||||||
|
return isBiomeHellish;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,43 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Many things Forestry use temperature and humidity of a biome to determine whether they can or how they can work or spawn at a given location.
|
||||||
|
*
|
||||||
|
* This enum concerns humidity.
|
||||||
|
*/
|
||||||
|
public enum EnumHumidity {
|
||||||
|
ARID("Arid"), NORMAL("Normal"), DAMP("Damp");
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
|
||||||
|
private EnumHumidity(String name) {
|
||||||
|
this.name = name;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines the EnumHumidity given a floating point representation of Minecraft Rainfall.
|
||||||
|
* To check if rainfall is possible in a biome, use BiomeHelper.canRainOrSnow().
|
||||||
|
* @param rawHumidity raw rainfall value
|
||||||
|
* @return EnumHumidity corresponding to rainfall value
|
||||||
|
*/
|
||||||
|
public static EnumHumidity getFromValue(float rawHumidity) {
|
||||||
|
if (rawHumidity > 0.85f) { // matches BiomeGenBase.isHighHumidity()
|
||||||
|
return DAMP;
|
||||||
|
}
|
||||||
|
else if (rawHumidity >= 0.3f) {
|
||||||
|
return NORMAL;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ARID;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,79 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
import net.minecraft.world.biome.BiomeGenBase;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Many things Forestry use temperature and humidity of a biome to determine whether they can or how they can work or spawn at a given location.
|
||||||
|
*
|
||||||
|
* This enum concerns temperature.
|
||||||
|
*/
|
||||||
|
public enum EnumTemperature {
|
||||||
|
NONE("None", "habitats/ocean"), ICY("Icy", "habitats/snow"), COLD("Cold", "habitats/taiga"),
|
||||||
|
NORMAL("Normal", "habitats/plains"), WARM("Warm", "habitats/jungle"), HOT("Hot", "habitats/desert"), HELLISH("Hellish", "habitats/nether");
|
||||||
|
|
||||||
|
public final String name;
|
||||||
|
public final String iconIndex;
|
||||||
|
|
||||||
|
private EnumTemperature(String name, String iconIndex) {
|
||||||
|
this.name = name;
|
||||||
|
this.iconIndex = iconIndex;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getName() {
|
||||||
|
return this.name;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public IIcon getIcon() {
|
||||||
|
return ForestryAPI.textureManager.getDefault(iconIndex);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Determines the EnumTemperature given a floating point representation of
|
||||||
|
* Minecraft temperature. Hellish biomes are handled based on their biome
|
||||||
|
* type - check BiomeHelper.isBiomeHellish.
|
||||||
|
* @param rawTemp raw temperature value
|
||||||
|
* @return EnumTemperature corresponding to value of rawTemp
|
||||||
|
*/
|
||||||
|
public static EnumTemperature getFromValue(float rawTemp) {
|
||||||
|
if (rawTemp > 1.00f) {
|
||||||
|
return HOT;
|
||||||
|
}
|
||||||
|
else if (rawTemp > 0.85f) {
|
||||||
|
return WARM;
|
||||||
|
}
|
||||||
|
else if (rawTemp > 0.35f) {
|
||||||
|
return NORMAL;
|
||||||
|
}
|
||||||
|
else if (rawTemp > 0.0f) {
|
||||||
|
return COLD;
|
||||||
|
}
|
||||||
|
else {
|
||||||
|
return ICY;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EnumTemperature getFromBiome(BiomeGenBase biomeGenBase) {
|
||||||
|
if (BiomeHelper.isBiomeHellish(biomeGenBase)) {
|
||||||
|
return HELLISH;
|
||||||
|
}
|
||||||
|
return getFromValue(biomeGenBase.temperature);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EnumTemperature getFromBiome(BiomeGenBase biomeGenBase, int x, int y, int z) {
|
||||||
|
if (BiomeHelper.isBiomeHellish(biomeGenBase)) {
|
||||||
|
return HELLISH;
|
||||||
|
}
|
||||||
|
float temperature = biomeGenBase.getFloatTemperature(x, y, z);
|
||||||
|
return getFromValue(temperature);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,77 @@
|
||||||
|
/*
|
||||||
|
*******************************************************************************
|
||||||
|
* 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.api.core;
|
||||||
|
|
||||||
|
import com.google.common.collect.BiMap;
|
||||||
|
import com.google.common.collect.HashBiMap;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author CovertJaguar <http://www.railcraft.info/>
|
||||||
|
*/
|
||||||
|
public class ErrorStateRegistry {
|
||||||
|
|
||||||
|
private static final BiMap<Short, IErrorState> states = HashBiMap.create();
|
||||||
|
private static final Map<String, IErrorState> stateNames = new HashMap<String, IErrorState>();
|
||||||
|
private static final Set<IErrorState> stateView = Collections.unmodifiableSet(states.inverse().keySet());
|
||||||
|
|
||||||
|
public static void registerErrorState(IErrorState state) {
|
||||||
|
if (states.containsKey(state.getID()))
|
||||||
|
throw new RuntimeException("Forestry Error State does not possess a unique id.");
|
||||||
|
states.put(state.getID(), state);
|
||||||
|
addStateName(state, state.getUniqueName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void addAlias(IErrorState state, String name) {
|
||||||
|
if (!states.values().contains(state))
|
||||||
|
throw new RuntimeException("Forestry Error State did not exist while trying to register alias.");
|
||||||
|
addStateName(state, name);
|
||||||
|
}
|
||||||
|
|
||||||
|
private static void addStateName(IErrorState state, String name) {
|
||||||
|
if (!name.contains(":"))
|
||||||
|
throw new RuntimeException("Forestry Error State name must be in the format <modid>:<name>.");
|
||||||
|
if (stateNames.containsKey(name))
|
||||||
|
throw new RuntimeException("Forestry Error State does not possess a unique name.");
|
||||||
|
stateNames.put(name, state);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IErrorState getErrorState(short id) {
|
||||||
|
return states.get(id);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static IErrorState getErrorState(String name) {
|
||||||
|
return stateNames.get(name);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static Set<IErrorState> getErrorStates() {
|
||||||
|
return stateView;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public static void initIcons(IIconRegister register) {
|
||||||
|
for (IErrorState code : states.values()) {
|
||||||
|
code.registerIcons(register);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import java.util.Set;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Forestry's API is divided into several subcategories to make it easier to understand.
|
||||||
|
*
|
||||||
|
* If you need to distribute API files, try to only include the parts you are actually
|
||||||
|
* using to minimize conflicts due to API changes.
|
||||||
|
*
|
||||||
|
* .core - Miscallenous base classes and interfaces as well as some basics for tools, armor, game modes and stuff needed by biome mods.
|
||||||
|
* .fuels - Managers and classes to facilitate adding fuels to various engines and machines.
|
||||||
|
* .recipes - Managers and helpers to facilitate adding new recipes to various machines.
|
||||||
|
* .storage - Managers, events and interfaces for defining new backpacks and handling backpack behaviour.
|
||||||
|
* .mail - Anything related to handling letters and adding new mail carrier systems.
|
||||||
|
* .genetics - Shared code for all genetic subclasses.
|
||||||
|
* \ .apiculture - Bees.
|
||||||
|
* \ .arboriculture - Trees.
|
||||||
|
* \ .lepidopterology - Butterflies.
|
||||||
|
*
|
||||||
|
* Note that if Forestry is not present, all these references will be null.
|
||||||
|
*/
|
||||||
|
public class ForestryAPI {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The main mod instance for Forestry.
|
||||||
|
*/
|
||||||
|
public static Object instance;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* A {@link ITextureManager} needed for some things in the API.
|
||||||
|
*/
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public static ITextureManager textureManager;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The currently active {@link IGameMode}.
|
||||||
|
*/
|
||||||
|
public static IGameMode activeMode;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides information on certain Forestry constants (Villager IDs, Chest gen keys, etc)
|
||||||
|
*/
|
||||||
|
public static IForestryConstants forestryConstants;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The currently enabled Forestry plugins.
|
||||||
|
* Can be used to check if certain features are available, for example:
|
||||||
|
* ForestryAPI.enabledPlugins.contains("APICULTURE")
|
||||||
|
*/
|
||||||
|
public static Set<String> enabledPlugins;
|
||||||
|
}
|
|
@ -0,0 +1,60 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
|
||||||
|
import com.mojang.authlib.GameProfile;
|
||||||
|
|
||||||
|
import cpw.mods.fml.common.eventhandler.Event;
|
||||||
|
|
||||||
|
import forestry.api.genetics.IAlleleSpecies;
|
||||||
|
import forestry.api.genetics.IBreedingTracker;
|
||||||
|
import forestry.api.genetics.IMutation;
|
||||||
|
import forestry.api.genetics.ISpeciesRoot;
|
||||||
|
|
||||||
|
public abstract class ForestryEvent extends Event {
|
||||||
|
|
||||||
|
private static abstract class BreedingEvent extends ForestryEvent {
|
||||||
|
public final ISpeciesRoot root;
|
||||||
|
public final IBreedingTracker tracker;
|
||||||
|
public final GameProfile username;
|
||||||
|
|
||||||
|
private BreedingEvent(ISpeciesRoot root, GameProfile username, IBreedingTracker tracker) {
|
||||||
|
super();
|
||||||
|
this.root = root;
|
||||||
|
this.username = username;
|
||||||
|
this.tracker = tracker;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class SpeciesDiscovered extends BreedingEvent {
|
||||||
|
public final IAlleleSpecies species;
|
||||||
|
public SpeciesDiscovered(ISpeciesRoot root, GameProfile username, IAlleleSpecies species, IBreedingTracker tracker) {
|
||||||
|
super(root, username, tracker);
|
||||||
|
this.species = species;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class MutationDiscovered extends BreedingEvent {
|
||||||
|
public final IMutation allele;
|
||||||
|
public MutationDiscovered(ISpeciesRoot root, GameProfile username, IMutation allele, IBreedingTracker tracker) {
|
||||||
|
super(root, username, tracker);
|
||||||
|
this.allele = allele;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static class SyncedBreedingTracker extends ForestryEvent {
|
||||||
|
public final IBreedingTracker tracker;
|
||||||
|
public final EntityPlayer player;
|
||||||
|
public SyncedBreedingTracker(IBreedingTracker tracker, EntityPlayer player) {
|
||||||
|
super();
|
||||||
|
this.tracker = tracker;
|
||||||
|
this.player = player;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
import net.minecraft.entity.player.EntityPlayer;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IArmorNaturalist {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the naturalist's armor acts as spectacles for seeing pollinated tree leaves/flowers.
|
||||||
|
*
|
||||||
|
* @param player
|
||||||
|
* Player doing the viewing
|
||||||
|
* @param armor
|
||||||
|
* Armor item
|
||||||
|
* @param doSee
|
||||||
|
* Whether or not to actually do the side effects of viewing
|
||||||
|
* @return true if the armor actually allows the player to see pollination.
|
||||||
|
*/
|
||||||
|
public boolean canSeePollination(EntityPlayer player, ItemStack armor, boolean doSee);
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/*
|
||||||
|
*******************************************************************************
|
||||||
|
* 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.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
* @author CovertJaguar <http://www.railcraft.info/>
|
||||||
|
*/
|
||||||
|
public interface IErrorState {
|
||||||
|
|
||||||
|
short getID();
|
||||||
|
|
||||||
|
String getUniqueName();
|
||||||
|
|
||||||
|
String getDescription();
|
||||||
|
|
||||||
|
String getHelp();
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
void registerIcons(IIconRegister register);
|
||||||
|
|
||||||
|
@SideOnly(value = Side.CLIENT)
|
||||||
|
IIcon getIcon();
|
||||||
|
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
public interface IForestryConstants {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The villager ID for the Apiarist Villager.
|
||||||
|
*/
|
||||||
|
public int getApicultureVillagerID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The villager ID for the Arborist Villager.
|
||||||
|
*/
|
||||||
|
public int getArboricultureVillagerID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return The ChestGenHooks key for adding items to the Forestry Villager chest.
|
||||||
|
*/
|
||||||
|
public String getVillagerChestGenKey();
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
public interface IGameMode {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return Human-readable identifier for the game mode. (i.e. 'EASY', 'NORMAL', 'HARD')
|
||||||
|
*/
|
||||||
|
String getIdentifier();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ident Identifier for the setting. (See the gamemode config.)
|
||||||
|
* @return Value of the requested setting, false if unknown setting.
|
||||||
|
*/
|
||||||
|
boolean getBooleanSetting(String ident);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ident Identifier for the setting. (See the gamemode config.)
|
||||||
|
* @return Value of the requested setting, 0 if unknown setting.
|
||||||
|
*/
|
||||||
|
int getIntegerSetting(String ident);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ident Identifier for the setting. (See the gamemode config.)
|
||||||
|
* @return Value of the requested setting, 0 if unknown setting.
|
||||||
|
*/
|
||||||
|
float getFloatSetting(String ident);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param ident Identifier for the setting. (See the gamemode config.)
|
||||||
|
* @return Value of the requested setting, an itemstack containing an apple if unknown setting.
|
||||||
|
*/
|
||||||
|
ItemStack getStackSetting(String ident);
|
||||||
|
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
import net.minecraft.client.renderer.texture.IIconRegister;
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Provides icons, needed in some interfaces, most notably for bees and trees.
|
||||||
|
*/
|
||||||
|
public interface IIconProvider {
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
IIcon getIcon(short texUID);
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
void registerIcons(IIconRegister register);
|
||||||
|
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
import net.minecraft.nbt.NBTTagCompound;
|
||||||
|
|
||||||
|
public interface INBTTagable {
|
||||||
|
void readFromNBT(NBTTagCompound nbttagcompound);
|
||||||
|
|
||||||
|
void writeToNBT(NBTTagCompound nbttagcompound);
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.inventory.IInventory;
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
import net.minecraftforge.common.util.ForgeDirection;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Taken from BuildCraft 5.0.x
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
public interface ISpecialInventory extends IInventory {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Offers an ItemStack for addition to the inventory.
|
||||||
|
*
|
||||||
|
* @param stack
|
||||||
|
* ItemStack offered for addition. Do not manipulate this!
|
||||||
|
* @param doAdd
|
||||||
|
* If false no actual addition should take place. Implementors should simulate.
|
||||||
|
* @param from
|
||||||
|
* Orientation the ItemStack is offered from.
|
||||||
|
* @return Amount of items used from the passed stack.
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
int addItem(ItemStack stack, boolean doAdd, ForgeDirection from);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Requests items to be extracted from the inventory
|
||||||
|
*
|
||||||
|
* @param doRemove
|
||||||
|
* If false no actual extraction may occur. Implementors should simulate.
|
||||||
|
* Can be used to "peek" at what the result would be
|
||||||
|
* @param from
|
||||||
|
* Orientation the ItemStack is requested from.
|
||||||
|
* @param maxItemCount
|
||||||
|
* Maximum amount of items to extract (spread over all returned item stacks)
|
||||||
|
* @return Array of item stacks that were/would be extracted from the inventory
|
||||||
|
*/
|
||||||
|
@Deprecated
|
||||||
|
ItemStack[] extractItem(boolean doRemove, ForgeDirection from, int maxItemCount);
|
||||||
|
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
public interface IStructureLogic extends INBTTagable {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return String unique to the type of structure controlled by this structure logic.
|
||||||
|
*/
|
||||||
|
String getTypeUID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called by {@link ITileStructure}'s validateStructure().
|
||||||
|
*/
|
||||||
|
void validateStructure();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.util.IIcon;
|
||||||
|
|
||||||
|
import cpw.mods.fml.relauncher.Side;
|
||||||
|
import cpw.mods.fml.relauncher.SideOnly;
|
||||||
|
|
||||||
|
@SideOnly(Side.CLIENT)
|
||||||
|
public interface ITextureManager {
|
||||||
|
|
||||||
|
void registerIconProvider(IIconProvider provider);
|
||||||
|
|
||||||
|
IIcon getIcon(short texUID);
|
||||||
|
|
||||||
|
IIcon getDefault(String ident);
|
||||||
|
}
|
|
@ -0,0 +1,63 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* Copyright 2011-2014 SirSengir
|
||||||
|
*
|
||||||
|
* This work (the API) is licensed under the "MIT" License, see LICENSE.txt for details.
|
||||||
|
******************************************************************************/
|
||||||
|
package forestry.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.inventory.ISidedInventory;
|
||||||
|
import net.minecraft.tileentity.TileEntity;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* The basis for multiblock components.
|
||||||
|
*/
|
||||||
|
public interface ITileStructure {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return String unique to the type of structure controlled by this structure logic. Should map to {@link IStructureLogic}
|
||||||
|
*/
|
||||||
|
String getTypeUID();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Should map to {@link IStructureLogic}
|
||||||
|
*/
|
||||||
|
void validateStructure();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called when the structure resets.
|
||||||
|
*/
|
||||||
|
void onStructureReset();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return TileEntity that is the master in this structure, null if no structure exists.
|
||||||
|
*/
|
||||||
|
ITileStructure getCentralTE();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Called to set the master TileEntity. Implementing TileEntity should keep track of the master's coordinates, not refer to the TE object itself.
|
||||||
|
*
|
||||||
|
* @param tile
|
||||||
|
*/
|
||||||
|
void setCentralTE(TileEntity tile);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return ISidedInventory representing the inventory accessed from this block.
|
||||||
|
*/
|
||||||
|
ISidedInventory getStructureInventory();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Only called on Forestry's own blocks.
|
||||||
|
*/
|
||||||
|
void makeMaster();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if this TE is the master in a structure, false otherwise.
|
||||||
|
*/
|
||||||
|
boolean isMaster();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return true if the TE is master or has a master.
|
||||||
|
*/
|
||||||
|
boolean isIntegratedIntoStructure();
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,54 @@
|
||||||
|
/*******************************************************************************
|
||||||
|
* 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.api.core;
|
||||||
|
|
||||||
|
import net.minecraft.item.ItemStack;
|
||||||
|
|
||||||
|
import net.minecraftforge.fluids.FluidStack;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Taken from BuildCraft 5.0.x
|
||||||
|
*/
|
||||||
|
public interface IToolPipette {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param pipette
|
||||||
|
* ItemStack of the pipette.
|
||||||
|
* @return Capacity of the pipette.
|
||||||
|
*/
|
||||||
|
int getCapacity(ItemStack pipette);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param pipette
|
||||||
|
* @return true if the pipette can pipette.
|
||||||
|
*/
|
||||||
|
boolean canPipette(ItemStack pipette);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Fills the pipette with the given liquid stack.
|
||||||
|
*
|
||||||
|
* @param pipette
|
||||||
|
* @param liquid
|
||||||
|
* @param doFill
|
||||||
|
* @return Amount of liquid used in filling the pipette.
|
||||||
|
*/
|
||||||
|
int fill(ItemStack pipette, FluidStack liquid, boolean doFill);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Drains liquid from the pipette
|
||||||
|
*
|
||||||
|
* @param pipette
|
||||||
|
* @param maxDrain
|
||||||
|
* @param doDrain
|
||||||
|
* @return Fluid stack representing the liquid and amount drained from the pipette.
|
||||||
|
*/
|
||||||
|
FluidStack drain(ItemStack pipette, int maxDrain, boolean doDrain);
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Marks a tool as a scoop.
|
||||||
|
*/
|
||||||
|
public interface IToolScoop {
|
||||||
|
|
||||||
|
}
|
|
@ -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.core;
|
||||||
|
|
||||||
|
import net.minecraft.creativetab.CreativeTabs;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* References to the specialised tabs added by Forestry to creative inventory.
|
||||||
|
*/
|
||||||
|
public class Tabs {
|
||||||
|
|
||||||
|
public static CreativeTabs tabApiculture;
|
||||||
|
public static CreativeTabs tabArboriculture;
|
||||||
|
public static CreativeTabs tabLepidopterology;
|
||||||
|
|
||||||
|
}
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue