Compare commits

...
94 Commits
Author SHA1 Message Date
mezz 3fde556b86 Fix fermenter not starting in some cases 2015-10-31 21:11:35 -07:00
mezz 7a45ce35a3 Fix #937 Multifarm detects rain in rainless biomes 2015-10-31 20:41:36 -07:00
mezz 9a745b10d7 Fix #938 Squeezer tank level does not update unless gui interacted 2015-10-31 20:29:15 -07:00
mezz 1594edd4d4 Fix #936 Machines run too slowly 2015-10-31 01:40:13 -07:00
mezz 72fc7cee93 Fix crash from missing tile in TankManager 2015-10-30 01:29:44 -07:00
mezz 4796ea24bb Fix #691 Tank GUIs are not synced for multiple players at the same time 2015-10-30 01:05:22 -07:00
mezz bcb468b496 Fix #935 Most farm blocks are uncraftable 2015-10-29 21:25:35 -07:00
mezz 6a3e3e6f55 Fix #932 The coolant ability of crushed ice is 1000s of times too high 2015-10-29 17:20:37 -07:00
mezz 6ed24c7c8c Fix #930 Fireproof Wood doesn't work in regular wood recipes 2015-10-29 16:57:24 -07:00
mezz d6a5b00251 Fix #934 Raintank crash 2015-10-29 15:47:51 -07:00
mezz 1f82c216a8 Fix #933 Fix Ore Dictionary registration for Fruits 2015-10-29 15:41:22 -07:00
mezz 8824585282 Fix #929 Bottler doesn't work with some mod Fluid Containers 2015-10-27 23:38:50 -07:00
mezz 784bdba4fb Fix #928 Fermenter not processing some recipes when resource tank is low 2015-10-27 16:48:22 -07:00
mezz 79f98f35d8 Fix #924 Allow wrenching top or bottom of most blocks to rotate them 2015-10-27 01:59:48 -07:00
mezz a7ca8b0c20 Fix ray trace collision on chests 2015-10-27 01:57:50 -07:00
mezz 23271bab04 Fix #922 Multifarm does not harvest large tree branches 2015-10-27 00:55:48 -07:00
mezz d1328cff6c Fix #923 Alvearies get disconnected from pipes on server start 2015-10-27 00:13:54 -07:00
mezz 45f844b53b Fix #925 Fermenter null fluid crash 2015-10-26 22:48:15 -07:00
mezz 8502ec84f9 Fix #913 Fabricator temperature jumps once glass is melted 2015-10-25 14:10:56 -07:00
mezz b7aaebd508 Fix #918 New chests are not transparent to light 2015-10-25 13:26:13 -07:00
mezz 85c05d8985 Fix #899 Machine's exterior tank levels don't update until GUI is opened 2015-10-25 00:46:43 -07:00
mezz dffa89709b Fix #914 Multifarms delete harvested wood from forestry saplings 2015-10-24 23:20:03 -07:00
mezz d25f869129 Fix #900 Bee life bar will stay in GUI when queen is taken out 2015-10-24 22:31:19 -07:00
mezz f1693a248c Fix #911 GUI tabs can go offscreen on wide GUIs and small resolutions 2015-10-24 22:26:19 -07:00
mezz 888047cad8 Add preserveNBT option to IDescriptiveRecipe, simplify IFabricatorRecipe 2015-10-24 19:59:59 -07:00
mezz 7ad2e2e94d Add FabricatorSmeltingRecipeManager to API 2015-10-24 18:12:50 -07:00
mezz ef61493179 Add back deprecated PlainFlowers for compatibility 2015-10-23 12:23:19 -07:00
mezz a2aef025c1 Create ButterflyDefinition, organize alleles 2015-10-23 12:21:37 -07:00
mezz 41e3fb15e5 Fix crash from Creosote or Steam rendering on machine tanks 2015-10-22 23:20:34 -07:00
mezz bb87fc6046 Add Java 7 check, clean up build.gradle 2015-10-22 20:40:52 -07:00
mezz 806d7eb9f6 Remove unused generic type 2015-10-22 18:18:45 -07:00
mezz 6539ad10af Tidy up TextureManager 2015-10-22 18:18:27 -07:00
mezz 76afe30e94 Make IToolWrench @Optional 2015-10-22 14:29:39 -07:00
mezz 02c25142cd Move getPlayer from ProxyCommon to PlayerUtil 2015-10-22 14:10:26 -07:00
mezz 84968c6021 Fix #897 Bee territory numbers are misleading 2015-10-22 13:58:58 -07:00
mezz 4874b628db Improve engine placement and hit box 2015-10-22 01:15:37 -07:00
mezz df02bf1d26 Fix ItemBlockWood getIcon(ItemStack stack, int pass) to work correctly 2015-10-21 22:04:22 -07:00
mezz cf69299087 Make TankRenderInfo immutable 2015-10-21 22:03:20 -07:00
mezz c49401bcda Remove unused IStructureBlockItem.java 2015-10-21 22:02:58 -07:00
mezz d2d203f772 Fix machines won't drain fluid containers that hold less than one bucket 2015-10-21 14:15:37 -07:00
mezz 6d6af6b043 Fix #904 Crash from using Infuser 2015-10-21 12:22:40 -07:00
mezz c4311cca77 Implement a way to list and remove recipes from the API 2015-10-21 12:22:27 -07:00
mezz 824b3f087a Deprecate the unused IWorldGenInterface 2015-10-20 00:17:03 -07:00
mezz 2a1b8fbc68 Fix tree leaves have default genetics instead of sapling's genetics 2015-10-19 22:34:49 -07:00
mezz 07defbeec3 Fix #901 Fix some stuff for WAILAPlugins 2015-10-19 22:34:49 -07:00
Nirek-K 4716f8daf7 Add GC grapes to backpack. 2015-10-19 15:36:31 -05:00
mezz 0cc8c4c4df Remove unused textures and changelog folder 2015-10-18 18:08:55 -07:00
mezz 2605bdaceb Show actual fluid color on machine's exterior tanks 2015-10-18 18:01:40 -07:00
mezz 9899687786 Split up Proxies.common code 2015-10-17 12:25:13 -07:00
mezz 0ea878d7bc Minor cleanup, tidy Imprinter networking 2015-10-16 17:32:33 -07:00
mezz 3e0cf7c302 Fix #892 Forestry Workbench destroys TFC Tools in Crafts. 2015-10-16 14:35:31 -07:00
mezz b81466fdcb Update development version of Forge to recommended 2015-10-16 14:34:54 -07:00
Nirek-K 2725b19f95 Update/Include support for MagicalCrops Beta 5 2015-10-16 14:18:39 -05:00
mezz 099e6f47e8 Fix #893 Shift-Removing items from a machine prefers the hotbar 2015-10-16 11:56:22 -07:00
mezz 614c13b4f3 Clean up network, clearly separate client and server packets 2015-10-15 15:57:17 -07:00
mezz 140643bec3 Fix #887 Particles are wrong when breaking wood items 2015-10-14 12:20:42 -07:00
mezz e6bb939f7f Bump version of Dev branch to 4.1.0 2015-10-14 01:57:44 -07:00
mezz ad0fcc57b5 Fix #853 Improve trees to have more branches and variations with height. 2015-10-14 01:57:35 -07:00
mezz 3684792a39 Update Lang 2015-10-14 01:52:34 -07:00
mezz 0e81f373f0 Implement a generic ISpeciesType for ISpeciesRoot 2015-10-13 10:28:12 -07:00
mezz 59d1d3456b Fix #888 Squeezer should not work with reusable fluid containers 2015-10-13 08:08:53 -07:00
mezz 15fe11094b Bump version to 4.0.9 2015-10-11 19:04:57 -07:00
mezz 790e9b9fba Fix #883 ExtrabiomesXL saplings not fermenting with Honey 2015-10-11 19:04:16 -07:00
mezz c7ef2ef807 Bump version to 4.0.8 2015-10-11 06:12:17 -07:00
mezz 11fa7bbf75 Add improvements to the flower API 2015-10-11 06:12:17 -07:00
Nirek-K 4c2cbd77c1 Fix #876 Mustard internal naming is failure. 2015-10-11 04:58:45 -05:00
mezz f58de9e5cc Fix #880 Apiarist's chest does not creak when opened 2015-10-10 22:49:32 -07:00
mezz 3f0dc9e74f Fix #881 Update codebase to Java 7 2015-10-10 22:49:09 -07:00
mezz 9ecab0fecd Bump version to 4.0.7 2015-10-06 20:19:28 -07:00
mezz 01245f32c5 Fix #870 Analyzer turns pollen into saplings 2015-10-06 20:18:53 -07:00
mezz 8cc0da5c04 Fix #830 Multifarms do not plant saplings when Arboriculture is disabled 2015-10-05 23:42:00 -07:00
mezz 6e68768259 Fix #865 Farm with multiple gearboxes has "no power" if one has no power 2015-10-05 23:30:46 -07:00
mezz 9ee34b06b6 Remove unused part of NEI Recipe Handler 2015-10-05 22:17:29 -07:00
mezz b05c395300 Fix #867 Custom Forestry recipes not working with NEI [?] button 2015-10-05 22:17:03 -07:00
mezz 48ef020dc9 Fix #868 Last tin can won't be consumed by Farm GUI 2015-10-05 21:59:56 -07:00
mezz 83b7ce00f7 Fix #859 Multi Farm using single tube upgrade cannot set the direction 2015-10-03 22:48:39 -07:00
mezz 6165d80c0c Fix #807 Add direction labels to circuit board for farm configurations 2015-10-03 22:06:50 -07:00
James Mitchell 31cb40f7b6 Update CLA link 2015-10-03 20:35:23 -07:00
mezz 16e4801d48 Bump version to 4.0.6 2015-10-03 13:44:22 -07:00
InfinityRaider 8fb7d5eb67 FlowerRegistry and AgriCraft compatibility update
Add to CLA agreement
2015-10-03 13:35:27 -07:00
mezz 55866d6a64 #830 fix farm crash when Plugin Arboriculture is disabled 2015-10-03 00:51:31 -07:00
mezz 510cf83670 Fix #861 Worktable client crash 2015-10-03 00:28:01 -07:00
mezz 656a6451bf Improve bee complexity calculation by excluding blacklisted mutations 2015-10-03 00:22:59 -07:00
mezz 69ee5bde65 Bump version to 4.0.5 2015-10-03 00:12:26 -07:00
mezz 592895cc48 Add NEI Worktable [?] support and categories from NEI Addons 2015-10-03 00:12:02 -07:00
mezz 7b5febd394 Bump version to 4.0.4 2015-10-01 18:31:23 -07:00
mezz 71481d5ace Add API helpers for using the new IBeeHousing modifiers and listeners 2015-10-01 18:30:28 -07:00
mezz 1d0efd537e Fix #791 *alyzer slot behavior changed. (can't swap specimens) 2015-09-29 22:33:27 -07:00
mezz 5052df8844 Revert "Fix breaking change to the API in IMutation"
This reverts commit f020dcf2e2.
2015-09-29 21:10:11 -07:00
mezz b1d496f24f Fix #858 sometimes can't craft with multiple GregTech tools in Worktable 2015-09-29 21:07:23 -07:00
mezz 2bfe576f7e Bump version to 4.0.3 2015-09-29 15:21:30 -07:00
mezz cc5c8af338 Fix #856 Crash when clicking the fluid slot in NEI squeezer recipe 2015-09-29 15:20:35 -07:00
mezz 19a9c2681c Bump version to 4.0.2 2015-09-29 00:40:19 -07:00
mezz f020dcf2e2 Fix breaking change to the API in IMutation 2015-09-29 00:30:42 -07:00
646 changed files with 9111 additions and 7845 deletions

No files matched your search

+1 -1
View File
@@ -16,7 +16,7 @@
!/LICENSE.txt
!/license-header.txt
!/README.md
!/application.properties
!/gradle.properties
!/build.gradle
!/build.xml
!/gradlew
+1 -1
View File
@@ -31,7 +31,7 @@ Beware of ugly code.
Bugfixes are generally welcome. If you want to contribute something which changes game mechanics, please talk to someone with commit privileges first. Nothing is more frustrating than putting a lot of work and effort into a new game mechanic and then having the PR rejected because it doesn’t fit gameplay-wise.
**If you submit a PR you must accept the [Contributor License Agreement](https://www.clahub.com/agreements/ForestryMC/ForestryMC). There is no way around that, since otherwise changing the license later - even to something more permissive! - , becomes close to impossible.**
**If you submit a PR you must accept the [Contributor License Agreement](https://cla-assistant.io/ForestryMC/ForestryMC). There is no way around that, since otherwise changing the license later - even to something more permissive! - , becomes close to impossible.**
### License & Copyright
-5
View File
@@ -1,5 +0,0 @@
mcversion=1.7.10
forgeversion=10.13.3.1370-1.7.10
version_major=4
version_minor=0
version_patch=1
+26 -69
View File
@@ -21,8 +21,6 @@ apply plugin: 'forge'
apply plugin: 'maven'
apply plugin: 'java'
loadProperties()
version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
if (project.hasProperty('buildQualifier')) {
version = project.version + '-' + project.buildQualifier
@@ -36,12 +34,18 @@ ext.dirLang = "./lang"
ext.apiForestry = "./api/forestry"
ext.apiRedstoneFlux = "./api/redstoneflux"
// java version
sourceCompatibility = 1.7
targetCompatibility = 1.7
minecraft {
version = mcversion + "-" + forgeversion
runDir = "run"
replace '@VERSION@', project.version
replace '@BUILD_NUMBER@', getBuildNumber()
srgExtra "PK: chylex/javacheck forestry/shade/javacheck"
}
sourceSets {
@@ -69,16 +73,22 @@ repositories {
name = "chickenbones"
url = "http://chickenbones.net/maven/"
}
maven{
name "tterrag Repo"
url "http://maven.tterrag.com/"
}
}
configurations {
api
compile.extendsFrom api
shade
compile.extendsFrom shade
}
dependencies {
api 'net.industrial-craft:industrialcraft-2:2.2.713-experimental:api'
api name: "buildcraft", version: "7.0.25", classifier: "api"
api name: "buildcraft", version: "7.1.12", classifier: "api"
// http://files.minecraftforge.net/CodeChickenLib/
compile "codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev"
@@ -88,6 +98,9 @@ dependencies {
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.111:dev"
compile "codechicken:NotEnoughItems:1.7.10-1.0.5.111:src"
// http://maven.tterrag.com/
shade "chylex.javacheck:JavaChecker:v1.2-b1"
testCompile 'junit:junit:4.12'
}
@@ -130,45 +143,6 @@ debugClient {
}
}
task echoVersion << {
printNextVersion()
}
def saveVersion() {
ant.propertyfile(
file: "application.properties") {
entry( key:"version_major", type:"int", value: version_major)
entry( key:"version_minor", type:"int", value: version_minor)
entry( key:"version_patch", type:"int", value: version_patch)
}
project.version = version_major + '.' + version_minor + '.' + version_patch + '.' + getBuildNumber()
printNextVersion()
}
def printNextVersion() {
println '*************************************************************'
println 'The next build will be version: ' + project.version
println '*************************************************************'
}
task bumpMajor << {
project.version_major = Integer.parseInt(project.version_major) + 1
project.version_minor = "0"
project.version_patch = "0"
saveVersion()
}
task bumpMinor << {
project.version_minor = Integer.parseInt(project.version_minor) + 1
project.version_patch = "0"
saveVersion()
}
task bumpPatch << {
project.version_patch = Integer.parseInt(project.version_patch) + 1
saveVersion()
}
jar {
destinationDir = file("build/tmp")
archiveName = "main.jar"
@@ -180,8 +154,11 @@ jar {
into ('cofh/api') {
from project.apiRedstoneFlux + "/LICENSE - LGPLv3.txt"
}
into ('buildcraft/api') {
from "./src/main/java/buildcraft/LICENSE-API"
configurations.shade.each{ dep ->
from(project.zipTree(dep)){
exclude 'META-INF', 'META-INF/**', 'mcmod.info'
}
}
}
@@ -195,6 +172,10 @@ task mainJar(type: Jar, dependsOn: 'reobf') {
destinationDir = file(dirDest)
duplicatesStrategy = DuplicatesStrategy.EXCLUDE
includeEmptyDirs = false
manifest{
attributes 'TweakClass': 'forestry.shade.javacheck.Java7Checker'
}
}
task devJar(type: Jar, dependsOn: 'classes') {
@@ -236,20 +217,9 @@ task sourceJar(type: Jar, dependsOn: 'classes') {
classifier = 'sources'
}
task releaseInit << {
println '*************************************************************'
println 'This build will be version: ' + rootProject.version
println '*************************************************************'
task release (dependsOn: [mainJar, apiJar, devJar, sourceJar]) {
}
task release (dependsOn: [releaseInit, mainJar, apiJar, devJar, sourceJar]) {
}
mainJar.shouldRunAfter releaseInit
devJar.shouldRunAfter releaseInit
apiJar.shouldRunAfter releaseInit
sourceJar.shouldRunAfter releaseInit
artifacts {
archives apiJar
archives devJar
@@ -278,19 +248,6 @@ uploadArchives {
}
}
def loadProperties() {
println('loading application.properties')
file("application.properties").withReader { reader ->
def userProps = new Properties()
userProps.load(reader)
for (Map.Entry property in userProps) {
project.ext[property.getKey()] = property.getValue()
}
}
}
def getBuildNumber() {
return "$System.env.BUILD_NUMBER" != "null" ? "$System.env.BUILD_NUMBER" : "0"
}
+1
View File
@@ -3,3 +3,4 @@ samtrion;[email protected];2015-01-18
GenuineSounds;[email protected];2015-02-26
airbreather;[email protected];2015-04-10
ganymedes01;[email protected];2015-05-27
infinityraider;theoneandonlyraider@gmail;com;2015-10-03
+5
View File
@@ -0,0 +1,5 @@
mcversion=1.7.10
forgeversion=10.13.4.1541-1.7.10
version_major=4
version_minor=1
version_patch=0
+1 -1
Submodule lang updated: 2518a210e7...2843053395.
-21
View File
@@ -1,21 +0,0 @@
BuildCraft API License
Copyright (c) 2011-2014 SpaceToad and the BuildCraft team
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in
all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
THE SOFTWARE.
@@ -1,40 +0,0 @@
/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License.
* Please check the contents of the license, which should be located
* as "LICENSE.API" in the BuildCraft source code distribution.
*/
package buildcraft.api.tools;
import net.minecraft.entity.player.EntityPlayer;
/***
* Implement this interface on subclasses of Item to have that item work as a wrench for buildcraft
*/
public interface IToolWrench {
/***
* Called to ensure that the wrench can be used. To get the ItemStack that is used, check player.inventory.getCurrentItem()
*
* @param player
* - The player doing the wrenching
* @param x
* ,y,z - The coordinates for the block being wrenched
*
* @return true if wrenching is allowed, false if not
*/
boolean canWrench(EntityPlayer player, int x, int y, int z);
/***
* Callback after the wrench has been used. This can be used to decrease durability or for other purposes. To get the ItemStack that was used, check
* player.inventory.getCurrentItem()
*
* @param player
* - The player doing the wrenching
* @param x
* ,y,z - The coordinates of the block being wrenched
*/
void wrenchUsed(EntityPlayer player, int x, int y, int z);
}
@@ -1,11 +0,0 @@
/**
* Copyright (c) 2011-2014, SpaceToad and the BuildCraft Team
* http://www.mod-buildcraft.com
*
* The BuildCraft API is distributed under the terms of the MIT License.
* Please check the contents of the license, which should be located
* as "LICENSE.API" in the BuildCraft source code distribution.
*/
@API(apiVersion = "1.0", owner = "BuildCraftAPI|core", provides = "BuildCraftAPI|tools")
package buildcraft.api.tools;
import cpw.mods.fml.common.API;
+7 -13
View File
@@ -30,13 +30,7 @@ import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.Type;
import forestry.api.fuels.EngineBronzeFuel;
import forestry.api.fuels.EngineCopperFuel;
import forestry.api.fuels.FermenterFuel;
import forestry.api.fuels.FuelManager;
import forestry.api.fuels.GeneratorFuel;
import forestry.api.fuels.MoistenerFuel;
import forestry.api.fuels.RainSubstrate;
import forestry.core.ForestryCore;
import forestry.core.config.Constants;
import forestry.core.config.ForestryItem;
@@ -70,7 +64,7 @@ public class Forestry {
public static Forestry instance;
private File configFolder;
private static final Map<String, ForestryItem> mappedItems = new HashMap<String, ForestryItem>();
private static final Map<String, ForestryItem> mappedItems = new HashMap<>();
static {
mappedItems.put("Forestry:builderBackpack", ForestryItem.builderBackpack);
@@ -87,12 +81,12 @@ public class Forestry {
}
public Forestry() {
FuelManager.fermenterFuel = new ItemStackMap<FermenterFuel>();
FuelManager.moistenerResource = new ItemStackMap<MoistenerFuel>();
FuelManager.rainSubstrate = new ItemStackMap<RainSubstrate>();
FuelManager.bronzeEngineFuel = new FluidMap<EngineBronzeFuel>();
FuelManager.copperEngineFuel = new ItemStackMap<EngineCopperFuel>();
FuelManager.generatorFuel = new FluidMap<GeneratorFuel>();
FuelManager.fermenterFuel = new ItemStackMap<>();
FuelManager.moistenerResource = new ItemStackMap<>();
FuelManager.rainSubstrate = new ItemStackMap<>();
FuelManager.bronzeEngineFuel = new FluidMap<>();
FuelManager.copperEngineFuel = new ItemStackMap<>();
FuelManager.generatorFuel = new FluidMap<>();
}
@SidedProxy(clientSide = "forestry.core.ForestryClient", serverSide = "forestry.core.ForestryCore")
@@ -60,7 +60,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
private int queenWorkCycleThrottle;
private IEffectData effectData[] = new IEffectData[2];
private final Stack<ItemStack> spawn = new Stack<ItemStack>();
private final Stack<ItemStack> spawn = new Stack<>();
private final HasFlowersCache hasFlowersCache = new HasFlowersCache();
private final QueenCanWorkCache queenCanWorkCache = new QueenCanWorkCache();
@@ -73,8 +73,8 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
public BeekeepingLogic(IBeeHousing housing) {
this.housing = housing;
this.beeModifier = new BeeHousingModifier(housing);
this.beeListener = new BeeHousingListener(housing);
this.beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
this.beeListener = BeeManager.beeRoot.createBeeHousingListener(housing);
}
// / SAVING & LOADING
@@ -112,7 +112,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
hasFlowersCache.writeToNBT(nbttagcompound);
Stack<ItemStack> spawnCopy = new Stack<ItemStack>();
Stack<ItemStack> spawnCopy = new Stack<>();
spawnCopy.addAll(spawn);
NBTTagList nbttaglist = new NBTTagList();
while (!spawnCopy.isEmpty()) {
@@ -193,6 +193,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
if (errorLogic.setCondition(queen == null, EnumErrorCode.NOQUEEN)) {
setActive(false);
beeProgress = 0;
return false;
}
@@ -373,7 +374,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
World world = beeHousing.getWorld();
Stack<ItemStack> offspring = new Stack<ItemStack>();
Stack<ItemStack> offspring = new Stack<>();
IApiaristTracker breedingTracker = BeeManager.beeRoot.getBreedingTracker(world, beeHousing.getOwner());
// Princess
@@ -399,7 +400,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
IBeeHousingInventory beeInventory = beeHousing.getBeeInventory();
Collection<ItemStack> spawn = new ArrayList<ItemStack>();
Collection<ItemStack> spawn = new ArrayList<>();
while (!offspring.isEmpty()) {
ItemStack spawned = offspring.pop();
@@ -15,7 +15,6 @@ import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
import forestry.apiculture.genetics.BeeHelper;
import forestry.apiculture.gui.ContainerAlveary;
import forestry.apiculture.gui.ContainerAlvearyHygroregulator;
import forestry.apiculture.gui.ContainerAlvearySieve;
@@ -68,7 +67,7 @@ public class GuiHandlerApiculture extends GuiHandlerBase {
return new GuiAlvearySwarmer(player.inventory, getTile(world, x, y, z, player, TileAlvearySwarmer.class));
case ApiaristChestGUI:
return getNaturalistChestGui(BeeHelper.UID, player, world, x, y, z, guiData);
return getNaturalistChestGui(BeeManager.beeRoot, player, world, x, y, z, guiData);
case ApiaryGUI:
return new GuiBeeHousing(player.inventory, getTile(world, x, y, z, player, TileApiary.class));
@@ -131,7 +130,7 @@ public class GuiHandlerApiculture extends GuiHandlerBase {
return new ContainerAlvearySwarmer(player.inventory, getTile(world, x, y, z, player, TileAlvearySwarmer.class));
case ApiaristChestGUI:
return getNaturalistChestContainer(BeeHelper.UID, player, world, x, y, z, guiData);
return getNaturalistChestContainer(BeeManager.beeRoot, player, world, x, y, z, guiData);
case ApiaryGUI:
synchApiaristTracker(world, player);
@@ -72,7 +72,7 @@ public class BlockAlveary extends BlockStructure {
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> drop = new ArrayList<ItemStack>();
ArrayList<ItemStack> drop = new ArrayList<>();
drop.add(new ItemStack(this, 1, metadata != 1 ? metadata : 0));
return drop;
}
@@ -132,20 +132,20 @@ public class BlockAlveary extends BlockStructure {
@Override
public void registerBlockIcons(IIconRegister register) {
icons = new IIcon[14];
icons[0] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.plain");
icons[1] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.entrance");
icons[2] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.bottom");
icons[3] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.left");
icons[4] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.right");
icons[5] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.swarmer.off");
icons[6] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.swarmer.on");
icons[7] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.heater.off");
icons[8] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.heater.on");
icons[9] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.fan.off");
icons[10] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.fan.on");
icons[11] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.valve");
icons[12] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.stabiliser");
icons[13] = TextureManager.getInstance().registerTex(register, "apiculture/alveary.sieve");
icons[0] = TextureManager.registerTex(register, "apiculture/alveary.plain");
icons[1] = TextureManager.registerTex(register, "apiculture/alveary.entrance");
icons[2] = TextureManager.registerTex(register, "apiculture/alveary.bottom");
icons[3] = TextureManager.registerTex(register, "apiculture/alveary.left");
icons[4] = TextureManager.registerTex(register, "apiculture/alveary.right");
icons[5] = TextureManager.registerTex(register, "apiculture/alveary.swarmer.off");
icons[6] = TextureManager.registerTex(register, "apiculture/alveary.swarmer.on");
icons[7] = TextureManager.registerTex(register, "apiculture/alveary.heater.off");
icons[8] = TextureManager.registerTex(register, "apiculture/alveary.heater.on");
icons[9] = TextureManager.registerTex(register, "apiculture/alveary.fan.off");
icons[10] = TextureManager.registerTex(register, "apiculture/alveary.fan.on");
icons[11] = TextureManager.registerTex(register, "apiculture/alveary.valve");
icons[12] = TextureManager.registerTex(register, "apiculture/alveary.stabiliser");
icons[13] = TextureManager.registerTex(register, "apiculture/alveary.sieve");
}
@SideOnly(Side.CLIENT)
@@ -83,7 +83,7 @@ public class BlockBeehives extends BlockContainer {
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = new ArrayList<>();
// Handle legacy block
if (metadata == 0) {
@@ -185,8 +185,8 @@ public class BlockBeehives extends BlockContainer {
public void registerBlockIcons(IIconRegister register) {
icons = new IIcon[18];
for (int i = 1; i < 9; i++) {
icons[i * 2] = TextureManager.getInstance().registerTex(register, "beehives/beehive." + i + ".top");
icons[(i * 2) + 1] = TextureManager.getInstance().registerTex(register, "beehives/beehive." + i + ".side");
icons[i * 2] = TextureManager.registerTex(register, "beehives/beehive." + i + ".top");
icons[(i * 2) + 1] = TextureManager.registerTex(register, "beehives/beehive." + i + ".side");
}
}
@@ -75,7 +75,7 @@ public class BlockCandle extends BlockTorch {
.put("dyeBlack", new Color(20, 20, 20).getRGB())
.build();
lightingItems = new HashSet<Item>(Arrays.asList(
lightingItems = new HashSet<>(Arrays.asList(
Items.flint_and_steel,
Items.flint,
Item.getItemFromBlock(Blocks.torch)
@@ -117,11 +117,11 @@ public class BlockCandle extends BlockTorch {
@Override
public void registerBlockIcons(IIconRegister register) {
String fileBase = StringUtil.cleanBlockName(this);
this.blockIcon = TextureManager.getInstance().registerTex(register, "stump");
this.litStump = TextureManager.getInstance().registerTex(register, fileBase + "StumpLit");
this.litTip = TextureManager.getInstance().registerTex(register, fileBase + "TipLit");
this.unlitStump = TextureManager.getInstance().registerTex(register, fileBase + "StumpUnlit");
this.unlitTip = TextureManager.getInstance().registerTex(register, fileBase + "TipUnlit");
this.blockIcon = TextureManager.registerTex(register, "stump");
this.litStump = TextureManager.registerTex(register, fileBase + "StumpLit");
this.litTip = TextureManager.registerTex(register, fileBase + "TipLit");
this.unlitStump = TextureManager.registerTex(register, fileBase + "StumpUnlit");
this.unlitTip = TextureManager.registerTex(register, fileBase + "TipUnlit");
}
@Override
@@ -233,7 +233,7 @@ public class BlockCandle extends BlockTorch {
/* DROP HANDLING */
// Hack: When harvesting we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ItemStack> drop = new ThreadLocal<ItemStack>();
private final ThreadLocal<ItemStack> drop = new ThreadLocal<>();
@Override
public void onBlockHarvested(World world, int x, int y, int z, int metadata, EntityPlayer player) {
@@ -253,7 +253,7 @@ public class BlockCandle extends BlockTorch {
dropStack = getCandleDrop(world, x, y, z);
}
ArrayList<ItemStack> drops = new ArrayList<ItemStack>(1);
ArrayList<ItemStack> drops = new ArrayList<>(1);
drops.add(dropStack);
return drops;
@@ -46,7 +46,7 @@ public class BlockStump extends BlockTorch {
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
this.blockIcon = TextureManager.getInstance().registerTex(register, StringUtil.cleanBlockName(this));
this.blockIcon = TextureManager.registerTex(register, StringUtil.cleanBlockName(this));
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -25,7 +25,7 @@ public class BeeModeHelper implements ICommandModeHelper {
public String[] getModeNames() {
ArrayList<IBeekeepingMode> beekeepingModes = BeeManager.beeRoot.getBeekeepingModes();
int modeStringCount = beekeepingModes.size();
List<String> modeStrings = new ArrayList<String>(modeStringCount);
List<String> modeStrings = new ArrayList<>(modeStringCount);
for (IBeekeepingMode mode : beekeepingModes) {
modeStrings.add(mode.getName());
}
@@ -53,7 +53,7 @@ public class BeeStatsSaveHelper implements IStatsSaveHelper {
@Override
public Collection<IAlleleSpecies> getSpecies() {
Collection<IAlleleSpecies> species = new ArrayList<IAlleleSpecies>();
Collection<IAlleleSpecies> species = new ArrayList<>();
for (IAllele allele : AlleleManager.alleleRegistry.getRegisteredAlleles().values()) {
if (allele instanceof IAlleleBeeSpecies) {
species.add((IAlleleBeeSpecies) allele);
@@ -39,7 +39,7 @@ public class CommandBeeGive extends SubCommand {
super("give");
setPermLevel(PermLevel.ADMIN);
List<String> beeTypeStrings = new ArrayList<String>();
List<String> beeTypeStrings = new ArrayList<>();
for (EnumBeeType type : EnumBeeType.values()) {
if (type == EnumBeeType.NONE) {
continue;
@@ -151,7 +151,7 @@ public class CommandBeeGive extends SubCommand {
}
private static String[] getSpecies() {
List<String> species = new ArrayList<String>();
List<String> species = new ArrayList<>();
for (IAllele allele : AlleleManager.alleleRegistry.getRegisteredAlleles().values()) {
if (allele instanceof IAlleleBeeSpecies) {
@@ -27,9 +27,9 @@ public class EntityFXBee extends EntityFX {
this.particleMaxAge = (int) (20.0D / (Math.random() * 0.8D + 0.2D));
this.noClip = true;
this.motionX *= 0.2D;
this.motionX *= 0.1D;
this.motionY *= 0.015D;
this.motionZ *= 0.2D;
this.motionZ *= 0.1D;
}
/**
@@ -12,6 +12,8 @@ package forestry.apiculture.flowers;
import com.google.common.base.Objects;
import javax.annotation.Nonnull;
import net.minecraft.block.Block;
import net.minecraftforge.oredict.OreDictionary;
@@ -46,7 +48,7 @@ final class Flower implements IFlower {
}
@Override
public int compareTo(IFlower other) {
public int compareTo(@Nonnull IFlower other) {
return this.weight.compareTo(other.getWeight());
}
@@ -45,12 +45,13 @@ public class FlowerProvider implements IFlowerProvider {
EnumSet<EnumPlantType> plantTypes = pollinatable.getPlantType();
if (flowerType.equals(FlowerManager.FlowerTypeNether)) {
return plantTypes.contains(EnumPlantType.Nether);
} else if (flowerType.equals(FlowerManager.FlowerTypeCacti)) {
return plantTypes.contains(EnumPlantType.Desert);
} else {
return plantTypes.size() > 1 || !plantTypes.contains(EnumPlantType.Nether);
switch (flowerType) {
case FlowerManager.FlowerTypeNether:
return plantTypes.contains(EnumPlantType.Nether);
case FlowerManager.FlowerTypeCacti:
return plantTypes.contains(EnumPlantType.Desert);
default:
return plantTypes.size() > 1 || !plantTypes.contains(EnumPlantType.Nether);
}
}
@@ -34,25 +34,30 @@ import net.minecraft.tileentity.TileEntityFlowerPot;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
import net.minecraftforge.oredict.OreDictionary;
import cpw.mods.fml.common.registry.GameRegistry;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.FlowerManager;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.genetics.IFlower;
import forestry.api.genetics.IFlowerAcceptableRule;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
import forestry.apiculture.BeeHousingModifier;
import forestry.core.config.Constants;
import forestry.core.utils.Log;
import forestry.core.utils.vect.MutableVect;
import forestry.core.utils.vect.Vect;
import forestry.plugins.PluginManager;
public final class FlowerRegistry implements IFlowerRegistry {
public final class FlowerRegistry implements IFlowerRegistry, IFlowerGrowthHelper {
private final Set<String> defaultFlowerTypes = ImmutableSet.of(
FlowerManager.FlowerTypeVanilla,
@@ -66,17 +71,19 @@ public final class FlowerRegistry implements IFlowerRegistry {
FlowerManager.FlowerTypeGourd
);
private final HashMultimap<String, IFlowerAcceptableRule> registeredRules; // custom check
private final HashMultimap<String, Block> registeredBlocks; // quick first check
private final HashMultimap<String, IFlower> registeredFlowers; // full check
private final HashMultimap<String, Flower> registeredFlowers; // full check
private final ArrayListMultimap<String, IFlowerGrowthRule> growthRules;
private final Map<String, TreeMap<Double, IFlower>> chances;
private final Map<String, TreeMap<Double, Flower>> chances;
public FlowerRegistry() {
this.registeredRules = HashMultimap.create();
this.registeredBlocks = HashMultimap.create();
this.registeredFlowers = HashMultimap.create();
this.growthRules = ArrayListMultimap.create();
this.chances = new HashMap<String, TreeMap<Double, IFlower>>();
this.chances = new HashMap<>();
registerVanillaGrowthRules();
}
@@ -91,6 +98,17 @@ public final class FlowerRegistry implements IFlowerRegistry {
registerFlower(block, meta, 0.0, flowerTypes);
}
@Override
public void registerAcceptableFlowerRule(IFlowerAcceptableRule acceptableFlower, String... flowerTypes) {
for (String flowerType : flowerTypes) {
if (defaultFlowerTypes.contains(flowerType)) {
Log.severe("IFlowerAcceptableRules are too slow to be applied to Forestry's built-in flower type: " + flowerType + ".");
} else {
registeredRules.put(flowerType, acceptableFlower);
}
}
}
@Override
public void registerPlantableFlower(Block block, int meta, double weight, String... flowerTypes) {
registerFlower(block, meta, weight, flowerTypes);
@@ -114,7 +132,7 @@ public final class FlowerRegistry implements IFlowerRegistry {
throw new NullPointerException("Tried to register flower with null type. " + block);
}
Set<IFlower> flowers = this.registeredFlowers.get(flowerType);
Set<Flower> flowers = this.registeredFlowers.get(flowerType);
flowers.add(newFlower);
Set<Block> blocks = this.registeredBlocks.get(flowerType);
@@ -138,11 +156,12 @@ public final class FlowerRegistry implements IFlowerRegistry {
return null;
}
Set<IFlowerAcceptableRule> acceptableRules = this.registeredRules.get(flowerType);
Set<Block> acceptedBlocks = this.registeredBlocks.get(flowerType);
Set<IFlower> acceptedFlowers = this.registeredFlowers.get(flowerType);
Set<Flower> acceptedFlowers = this.registeredFlowers.get(flowerType);
World world = beeHousing.getWorld();
IBeeModifier beeModifier = new BeeHousingModifier(beeHousing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing);
Vect area = getArea(bee.getGenome(), beeModifier);
Vect housingPos = new Vect(beeHousing.getCoordinates()).add(-area.x / 2, -area.y / 2, -area.z / 2);
@@ -152,6 +171,12 @@ public final class FlowerRegistry implements IFlowerRegistry {
Vect posBlock = Vect.add(housingPos, posCurrent);
for (IFlowerAcceptableRule acceptableRule : acceptableRules) {
if (acceptableRule.isAcceptableFlower(flowerType, world, posBlock.x, posBlock.y, posBlock.z)) {
return new ChunkCoordinates(posBlock.x, posBlock.y, posBlock.z);
}
}
if (isAcceptedFlower(flowerType, acceptedBlocks, acceptedFlowers, world, posBlock.x, posBlock.y, posBlock.z)) {
return new ChunkCoordinates(posBlock.x, posBlock.y, posBlock.z);
}
@@ -166,13 +191,20 @@ public final class FlowerRegistry implements IFlowerRegistry {
return false;
}
Set<IFlowerAcceptableRule> acceptedCustom = this.registeredRules.get(flowerType);
for (IFlowerAcceptableRule acceptableFlower : acceptedCustom) {
if (acceptableFlower.isAcceptableFlower(flowerType, world, x, y, z)) {
return true;
}
}
Set<Block> acceptedBlocks = this.registeredBlocks.get(flowerType);
Set<IFlower> acceptedFlowers = this.registeredFlowers.get(flowerType);
Set<Flower> acceptedFlowers = this.registeredFlowers.get(flowerType);
return isAcceptedFlower(flowerType, acceptedBlocks, acceptedFlowers, world, x, y, z);
}
private static boolean isAcceptedFlower(String flowerType, Set<Block> acceptedBlocks, Set<IFlower> acceptedFlowers, World world, int x, int y, int z) {
private static boolean isAcceptedFlower(String flowerType, Set<Block> acceptedBlocks, Set<Flower> acceptedFlowers, World world, int x, int y, int z) {
Block block = world.getBlock(x, y, z);
final int meta;
@@ -190,15 +222,21 @@ public final class FlowerRegistry implements IFlowerRegistry {
meta = world.getBlockMetadata(x, y, z);
}
if (PluginManager.Module.AGRICRAFT.isEnabled() && (flowerType.equals(FlowerManager.FlowerTypeWheat) || flowerType.equals(FlowerManager.FlowerTypeNether))) {
if (PluginManager.Module.AGRICRAFT.isEnabled()) {
Block cropBlock = GameRegistry.findBlock("AgriCraft", "crops");
if (block == cropBlock) {
ArrayList<ItemStack> drops = block.getDrops(world, x, y, z, 7, 0);
if (drops.get(1).getItem() == Items.wheat_seeds && flowerType.equals(FlowerManager.FlowerTypeWheat)) {
return true;
}
if (drops.get(1).getItem() == Items.nether_wart && flowerType.equals(FlowerManager.FlowerTypeNether)) {
return true;
if(block instanceof IPlantable) {
//For agricraft versions which implement IPlantable in the BlockCrop class
block = ((IPlantable) block).getPlant(world, x, y, z);
} else {
//For earlier versions of AgriCraft
ArrayList<ItemStack> drops = block.getDrops(world, x, y, z, 7, 0);
if (drops.get(1).getItem() == Items.wheat_seeds && flowerType.equals(FlowerManager.FlowerTypeWheat)) {
return true;
}
if (drops.get(1).getItem() == Items.nether_wart && flowerType.equals(FlowerManager.FlowerTypeNether)) {
return true;
}
}
}
}
@@ -214,7 +252,15 @@ public final class FlowerRegistry implements IFlowerRegistry {
}
for (IFlowerGrowthRule rule : this.growthRules.get(flowerType)) {
if (rule.growFlower(this, flowerType, world, individual, x, y, z)) {
boolean success;
try {
success = rule.growFlower(this, flowerType, world, x, y, z);
} catch (Throwable ignored) {
// legacy method
success = rule.growFlower(this, flowerType, world, individual, x, y, z);
}
if (success) {
return true;
}
}
@@ -224,7 +270,7 @@ public final class FlowerRegistry implements IFlowerRegistry {
@Override
public Set<IFlower> getAcceptableFlowers(String flowerType) {
return this.registeredFlowers.get(flowerType);
return ImmutableSet.<IFlower>copyOf(this.registeredFlowers.get(flowerType));
}
@Override
@@ -240,21 +286,21 @@ public final class FlowerRegistry implements IFlowerRegistry {
@Override
public IFlower getRandomPlantableFlower(String flowerType, Random rand) {
TreeMap<Double, IFlower> chancesMap = getChancesMap(flowerType);
TreeMap<Double, Flower> chancesMap = getChancesMap(flowerType);
double maxKey = chancesMap.lastKey() + 1.0;
return chancesMap.get(chancesMap.lowerKey(rand.nextDouble() * maxKey));
}
@Override
public Collection<String> getFlowerTypes() {
return new ArrayList<String>(Sets.union(defaultFlowerTypes, registeredFlowers.keySet()));
return new ArrayList<>(Sets.union(defaultFlowerTypes, registeredFlowers.keySet()));
}
private TreeMap<Double, IFlower> getChancesMap(String flowerType) {
private TreeMap<Double, Flower> getChancesMap(String flowerType) {
if (!this.chances.containsKey(flowerType)) {
TreeMap<Double, IFlower> flowerChances = new TreeMap<Double, IFlower>();
TreeMap<Double, Flower> flowerChances = new TreeMap<>();
double count = 0.0;
for (IFlower flower : this.registeredFlowers.get(flowerType)) {
for (Flower flower : this.registeredFlowers.get(flowerType)) {
if (flower.isPlantable()) {
flowerChances.put(count, flower);
count += flower.getWeight();
@@ -266,13 +312,19 @@ public final class FlowerRegistry implements IFlowerRegistry {
}
private void registerVanillaGrowthRules() {
registerGrowthRule(new VanillaDirtGrassGrowthRule(), FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow);
registerGrowthRule(new VanillaSnowGrowthRule(), FlowerManager.FlowerTypeSnow);
registerGrowthRule(new VanillaFlowerPotGrowthRule(), FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow, FlowerManager.FlowerTypeMushrooms, FlowerManager.FlowerTypeCacti,
registerGrowthRule(new GrowthRuleDirtGrass(), FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow);
registerGrowthRule(new GrowthRuleSnow(), FlowerManager.FlowerTypeSnow);
registerGrowthRule(new GrowthRuleFlowerPot(), FlowerManager.FlowerTypeVanilla, FlowerManager.FlowerTypeSnow, FlowerManager.FlowerTypeMushrooms, FlowerManager.FlowerTypeCacti,
FlowerManager.FlowerTypeJungle);
registerGrowthRule(new VanillaMyceliumGrowthRule(), FlowerManager.FlowerTypeMushrooms);
registerGrowthRule(new VanillaDefaultGrowthRule(), FlowerManager.FlowerTypeEnd);
registerGrowthRule(new VanillaFertilizeGrowthRule(Blocks.melon_stem, Blocks.pumpkin_stem), FlowerManager.FlowerTypeGourd);
registerGrowthRule(new VanillaFertilizeGrowthRule(Blocks.wheat), FlowerManager.FlowerTypeWheat);
registerGrowthRule(new GrowthRuleMycelium(), FlowerManager.FlowerTypeMushrooms);
registerGrowthRule(new GrowthRuleNone(), FlowerManager.FlowerTypeEnd);
registerGrowthRule(new GrowthRuleFertilize(Blocks.melon_stem, Blocks.pumpkin_stem), FlowerManager.FlowerTypeGourd);
registerGrowthRule(new GrowthRuleFertilize(Blocks.wheat), FlowerManager.FlowerTypeWheat);
}
@Override
public boolean plantRandomFlower(String flowerType, World world, int x, int y, int z) {
IFlower flower = getRandomPlantableFlower(flowerType, world.rand);
return world.setBlock(x, y, z, flower.getBlock(), flower.getMeta(), Constants.FLAG_BLOCK_SYNCH);
}
}
@@ -15,12 +15,13 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import forestry.api.genetics.IFlower;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
import forestry.core.config.Constants;
public class VanillaDirtGrassGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleDirtGrass implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry flowerRegistry, String flowerType, World world, IIndividual individual, int x, int y, int z) {
@@ -37,4 +38,18 @@ public class VanillaDirtGrassGrowthRule implements IFlowerGrowthRule {
return world.setBlock(x, y, z, flower.getBlock(), flower.getMeta(), Constants.FLAG_BLOCK_SYNCH);
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
if (!world.isAirBlock(x, y, z)) {
return false;
}
Block ground = world.getBlock(x, y - 1, z);
if (ground != Blocks.dirt && ground != Blocks.grass) {
return false;
}
return helper.plantRandomFlower(flowerType, world, x, y, z);
}
}
@@ -16,20 +16,30 @@ import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.world.World;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
public class VanillaFertilizeGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleFertilize implements IFlowerGrowthRule {
private final List<Block> allowedItems;
public VanillaFertilizeGrowthRule(Block... allowedItems) {
public GrowthRuleFertilize(Block... allowedItems) {
this.allowedItems = Arrays.asList(allowedItems);
}
@Override
public boolean growFlower(IFlowerRegistry fr, String flowerType, World world, IIndividual individual, int x, int y, int z) {
return growFlower(world, x, y, z);
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
return growFlower(world, x, y, z);
}
private boolean growFlower(World world, int x, int y, int z) {
Block ground = world.getBlock(x, y, z);
int groundMeta;
for (Block b : this.allowedItems) {
@@ -17,15 +17,24 @@ import net.minecraft.tileentity.TileEntityFlowerPot;
import net.minecraft.world.World;
import forestry.api.apiculture.FlowerManager;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
public class VanillaFlowerPotGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleFlowerPot implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry fr, String flowerType, World world, IIndividual individual, int x, int y, int z) {
return growFlower(flowerType, world, x, y, z);
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
return growFlower(flowerType, world, x, y, z);
}
private static boolean growFlower(String flowerType, World world, int x, int y, int z) {
TileEntity tile = world.getTileEntity(x, y, z);
if (!(tile instanceof TileEntityFlowerPot)) {
return false;
@@ -44,16 +53,22 @@ public class VanillaFlowerPotGrowthRule implements IFlowerGrowthRule {
BlockFlowerPot flowerPot = (BlockFlowerPot) block;
int flower;
if (flowerType.equals(FlowerManager.FlowerTypeVanilla) || flowerType.equals(FlowerManager.FlowerTypeSnow)) {
flower = world.rand.nextInt(2) + 1;
} else if (flowerType.equals(FlowerManager.FlowerTypeJungle)) {
flower = 6;
} else if (flowerType.equals(FlowerManager.FlowerTypeCacti)) {
flower = world.rand.nextInt(2) + 9;
} else if (flowerType.equals(FlowerManager.FlowerTypeMushrooms)) {
flower = world.rand.nextInt(2) + 7;
} else {
return false;
switch (flowerType) {
case FlowerManager.FlowerTypeVanilla:
case FlowerManager.FlowerTypeSnow:
flower = world.rand.nextInt(2) + 1;
break;
case FlowerManager.FlowerTypeJungle:
flower = 6;
break;
case FlowerManager.FlowerTypeCacti:
flower = world.rand.nextInt(2) + 9;
break;
case FlowerManager.FlowerTypeMushrooms:
flower = world.rand.nextInt(2) + 7;
break;
default:
return false;
}
TileEntityFlowerPot newTile = (TileEntityFlowerPot) flowerPot.createNewTileEntity(world, flower);
@@ -15,12 +15,13 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import forestry.api.genetics.IFlower;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
import forestry.core.config.Constants;
public class VanillaMyceliumGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleMycelium implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry fr, String flowerType, World world, IIndividual individual, int x, int y, int z) {
@@ -37,4 +38,18 @@ public class VanillaMyceliumGrowthRule implements IFlowerGrowthRule {
return world.setBlock(x, y, z, flower.getBlock(), flower.getMeta(), Constants.FLAG_BLOCK_SYNCH);
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
if (!world.isAirBlock(x, y, z)) {
return false;
}
Block ground = world.getBlock(x, y - 1, z);
if (ground != Blocks.mycelium) {
return false;
}
return helper.plantRandomFlower(flowerType, world, x, y, z);
}
}
@@ -12,15 +12,21 @@ package forestry.apiculture.flowers;
import net.minecraft.world.World;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
public class VanillaDefaultGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleNone implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry fr, String flowerType, World world, IIndividual individual, int x, int y, int z) {
return true;
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
return true;
}
}
@@ -15,12 +15,13 @@ import net.minecraft.init.Blocks;
import net.minecraft.world.World;
import forestry.api.genetics.IFlower;
import forestry.api.genetics.IFlowerGrowthHelper;
import forestry.api.genetics.IFlowerGrowthRule;
import forestry.api.genetics.IFlowerRegistry;
import forestry.api.genetics.IIndividual;
import forestry.core.config.Constants;
public class VanillaSnowGrowthRule implements IFlowerGrowthRule {
public class GrowthRuleSnow implements IFlowerGrowthRule {
@Override
public boolean growFlower(IFlowerRegistry fr, String flowerType, World world, IIndividual individual, int x, int y, int z) {
@@ -37,4 +38,18 @@ public class VanillaSnowGrowthRule implements IFlowerGrowthRule {
return world.setBlock(x, y, z, flower.getBlock(), flower.getMeta(), Constants.FLAG_BLOCK_SYNCH);
}
@Override
public boolean growFlower(IFlowerGrowthHelper helper, String flowerType, World world, int x, int y, int z) {
if (world.getBlock(x, y, z) != Blocks.snow) {
return false;
}
Block ground = world.getBlock(x, y - 1, z);
if (ground != Blocks.dirt && ground != Blocks.grass) {
return false;
}
return helper.plantRandomFlower(flowerType, world, x, y, z);
}
}
@@ -30,6 +30,7 @@ import com.mojang.authlib.GameProfile;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.FlowerManager;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.api.apiculture.IApiaristTracker;
@@ -52,7 +53,6 @@ import forestry.api.genetics.IFlowerProvider;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.IMutation;
import forestry.api.genetics.IPollinatable;
import forestry.apiculture.BeeHousingModifier;
import forestry.arboriculture.genetics.pollination.FakePollinatable;
import forestry.arboriculture.genetics.pollination.ICheckPollinatable;
import forestry.core.config.Config;
@@ -251,9 +251,9 @@ public class Bee extends IndividualLiving implements IBee {
World world = housing.getWorld();
BiomeGenBase biome = housing.getBiome();
Set<IErrorState> errorStates = new HashSet<IErrorState>();
Set<IErrorState> errorStates = new HashSet<>();
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
// / Rain needs tolerant flyers
if (world.isRaining() && !genome.getTolerantFlyer() && BiomeHelper.canRainOrSnow(biome) && !beeModifier.isSealed()) {
@@ -316,7 +316,7 @@ public class Bee extends IndividualLiving implements IBee {
@Override
public ArrayList<BiomeGenBase> getSuitableBiomes() {
ArrayList<BiomeGenBase> suitableBiomes = new ArrayList<BiomeGenBase>();
ArrayList<BiomeGenBase> suitableBiomes = new ArrayList<>();
for (BiomeGenBase biome : BiomeGenBase.getBiomeGenArray()) {
if (isSuitableBiome(biome)) {
suitableBiomes.add(biome);
@@ -402,7 +402,7 @@ public class Bee extends IndividualLiving implements IBee {
// / PRODUCTION
@Override
public ItemStack[] getProduceList() {
ArrayList<ItemStack> products = new ArrayList<ItemStack>();
ArrayList<ItemStack> products = new ArrayList<>();
IAlleleBeeSpecies primary = genome.getPrimary();
IAlleleBeeSpecies secondary = genome.getSecondary();
@@ -448,7 +448,7 @@ public class Bee extends IndividualLiving implements IBee {
return null;
}
List<ItemStack> products = new ArrayList<ItemStack>();
List<ItemStack> products = new ArrayList<>();
IAlleleBeeSpecies primary = genome.getPrimary();
IAlleleBeeSpecies secondary = genome.getSecondary();
@@ -458,7 +458,7 @@ public class Bee extends IndividualLiving implements IBee {
setIsNatural(false);
}
IBeeModifier beeHousingModifier = new BeeHousingModifier(housing);
IBeeModifier beeHousingModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
IBeeModifier beeModeModifier = mode.getBeeModifier();
// Bee genetic speed * beehousing * beekeeping mode
@@ -518,7 +518,7 @@ public class Bee extends IndividualLiving implements IBee {
return null;
}
List<IBee> bees = new ArrayList<IBee>();
List<IBee> bees = new ArrayList<>();
ChunkCoordinates housingCoordinates = housing.getCoordinates();
int toCreate = BeeManager.beeRoot.getBeekeepingMode(world).getFinalFertility(this, world, housingCoordinates.posX, housingCoordinates.posY, housingCoordinates.posZ);
@@ -630,7 +630,7 @@ public class Bee extends IndividualLiving implements IBee {
@Override
public IIndividual retrievePollen(IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
int chance = Math.round(genome.getFlowering() * beeModifier.getFloweringModifier(getGenome(), 1f));
@@ -673,7 +673,7 @@ public class Bee extends IndividualLiving implements IBee {
@Override
public boolean pollinateRandom(IBeeHousing housing, IIndividual pollen) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
int chance = (int) (genome.getFlowering() * beeModifier.getFloweringModifier(getGenome(), 1f));
@@ -720,7 +720,7 @@ public class Bee extends IndividualLiving implements IBee {
@Override
public void plantFlowerRandom(IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
int chance = Math.round(genome.getFlowering() * beeModifier.getFloweringModifier(getGenome(), 1f));
@@ -742,7 +742,7 @@ public class Bee extends IndividualLiving implements IBee {
Vect randomPos = Vect.getRandomPositionInArea(random, area);
Vect posBlock = Vect.add(housingPos, randomPos, offset);
if (provider.growFlower(world, this, posBlock.x, posBlock.y, posBlock.z)) {
if (FlowerManager.flowerRegistry.growFlower(provider.getFlowerType(), world, this, posBlock.x, posBlock.y, posBlock.z)) {
break;
}
}
@@ -7,8 +7,9 @@ import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IClassification;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.core.genetics.IBranchDefinition;
import forestry.core.genetics.alleles.Allele;
import forestry.core.genetics.alleles.AlleleHelper;
import forestry.core.genetics.alleles.EnumAllele;
public enum BeeBranchDefinition implements IBranchDefinition {
@@ -19,96 +20,96 @@ public enum BeeBranchDefinition implements IBranchDefinition {
INFERNAL("Diapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2);
Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.NETHER);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.AVERAGE);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.NETHER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.AVERAGE);
}
},
AUSTERE("Modapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1);
Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.CACTI);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.DOWN_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.CACTI);
}
},
TROPICAL("Caldapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.UP_1);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.JUNGLE);
Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectMiasmic);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.UP_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.JUNGLE);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.EFFECT, AlleleEffect.effectMiasmic);
}
},
END("Finapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW);
Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
Allele.helper.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.END);
Allele.helper.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectMisanthrope);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.END);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.EFFECT, AlleleEffect.effectMisanthrope);
}
},
FROZEN("Coagapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.SNOW);
Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectGlacial);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.UP_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.SNOW);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.EFFECT, AlleleEffect.effectGlacial);
}
},
VENGEFUL("Punapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGEST);
Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectRadioactive);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGEST);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.EFFECT, AlleleEffect.effectRadioactive);
}
},
FESTIVE("Festapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
}
},
AGRARIAN("Rustapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER);
}
},
BOGGY("Paludapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.MUSHROOMS);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.MUSHROOMS);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
}
},
MONASTIC("Monapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
Allele.helper.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER);
Allele.helper.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
Allele.helper.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
Allele.helper.set(alleles, EnumBeeChromosome.CAVE_DWELLING, true);
Allele.helper.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.LOW);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTER);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_1);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.CAVE_DWELLING, true);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.WHEAT);
}
};
@@ -140,18 +141,18 @@ public enum BeeBranchDefinition implements IBranchDefinition {
if (defaultTemplate == null) {
defaultTemplate = new IAllele[EnumBeeChromosome.values().length];
Allele.helper.set(defaultTemplate, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.NORMAL);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.NONE);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.NOCTURNAL, false);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.NONE);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.TOLERANT_FLYER, false);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.CAVE_DWELLING, false);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.VANILLA);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWEST);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.AVERAGE);
Allele.helper.set(defaultTemplate, EnumBeeChromosome.EFFECT, Allele.effectNone);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTER);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.NORMAL);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.NONE);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.NOCTURNAL, false);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.NONE);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.TOLERANT_FLYER, false);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.CAVE_DWELLING, false);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.VANILLA);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWEST);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.AVERAGE);
AlleleHelper.instance.set(defaultTemplate, EnumBeeChromosome.EFFECT, AlleleEffect.effectNone);
}
return Arrays.copyOf(defaultTemplate, defaultTemplate.length);
}
@@ -32,8 +32,9 @@ import forestry.api.apiculture.IBeeMutationCustom;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.genetics.IAllele;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.core.config.ForestryItem;
import forestry.core.genetics.alleles.Allele;
import forestry.core.genetics.alleles.AlleleHelper;
import forestry.core.genetics.alleles.EnumAllele;
public enum BeeDefinition implements IBeeDefinition {
@@ -46,8 +47,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.HIGH);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.HIGH);
}
@Override
@@ -63,7 +64,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
}
@Override
@@ -79,7 +80,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
}
@Override
@@ -101,8 +102,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.FAST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.FAST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST);
}
@Override
@@ -122,9 +123,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW);
}
@Override
@@ -140,9 +141,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
}
@Override
@@ -160,9 +161,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectBeatific);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectBeatific);
}
@Override
@@ -180,9 +181,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOW);
}
@Override
@@ -198,8 +199,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
}
@Override
@@ -217,9 +218,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FAST);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FAST);
}
@Override
@@ -238,10 +239,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
}
@Override
@@ -258,10 +259,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
}
@Override
@@ -278,11 +279,11 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectHeroic);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.CAVE_DWELLING, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectHeroic);
}
@Override
@@ -303,9 +304,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectAggressive);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectAggressive);
}
@Override
@@ -327,9 +328,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectAggressive);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectAggressive);
}
@Override
@@ -352,9 +353,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectIgnition);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectIgnition);
}
@Override
@@ -375,8 +376,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -394,8 +395,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
}
@Override
@@ -420,10 +421,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
Allele.helper.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectCreeper);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
AlleleHelper.instance.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.DOWN_2);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectCreeper);
}
@Override
@@ -445,8 +446,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -464,8 +465,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
}
@Override
@@ -484,10 +485,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
Allele.helper.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectExploration);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
AlleleHelper.instance.set(template, EnumBeeChromosome.TEMPERATURE_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectExploration);
}
@Override
@@ -523,7 +524,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectReanimation);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectReanimation);
}
@Override
@@ -541,9 +542,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectResurrection);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectResurrection);
}
@Override
@@ -562,9 +563,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
}
@Override
@@ -582,8 +583,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -603,8 +604,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -624,8 +625,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
}
@Override
@@ -642,8 +643,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
}
@Override
@@ -662,8 +663,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
}
@Override
@@ -685,7 +686,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectFestiveEaster);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectFestiveEaster);
}
@Override
@@ -708,8 +709,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectSnowing);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectSnowing);
}
@Override
@@ -732,8 +733,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectDrunkard);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectDrunkard);
}
@Override
@@ -760,9 +761,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
Allele.helper.set(template, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.GOURD);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWER_PROVIDER, EnumAllele.Flowers.GOURD);
}
@Override
@@ -800,8 +801,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
}
@Override
@@ -819,10 +820,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectFertile);
Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.HUMIDITY_TOLERANCE, EnumAllele.Tolerance.BOTH_2);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectFertile);
AlleleHelper.instance.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
}
@Override
@@ -859,9 +860,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
}
@Override
@@ -881,10 +882,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectMycophilic);
Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGER);
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectMycophilic);
AlleleHelper.instance.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGER);
}
@Override
@@ -923,7 +924,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
}
@Override
@@ -941,8 +942,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectRepulsion);
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectRepulsion);
}
@Override
@@ -993,7 +994,7 @@ public enum BeeDefinition implements IBeeDefinition {
setSpeciesProperties(species);
template = branch.getTemplate();
Allele.helper.set(template, EnumBeeChromosome.SPECIES, species);
AlleleHelper.instance.set(template, EnumBeeChromosome.SPECIES, species);
setAlleles(template);
genome = BeeManager.beeRoot.templateAsGenome(template);
@@ -33,6 +33,8 @@ import forestry.api.apiculture.IApiaristTracker;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeeMutation;
import forestry.api.apiculture.IBeeRoot;
import forestry.api.apiculture.IBeekeepingLogic;
@@ -42,6 +44,8 @@ import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosomeType;
import forestry.api.genetics.IIndividual;
import forestry.api.genetics.IMutation;
import forestry.apiculture.BeeHousingListener;
import forestry.apiculture.BeeHousingModifier;
import forestry.apiculture.BeekeepingLogic;
import forestry.core.config.ForestryItem;
import forestry.core.genetics.SpeciesRoot;
@@ -204,7 +208,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
}
/* TEMPLATES */
private static final ArrayList<IBee> beeTemplates = new ArrayList<IBee>();
private static final ArrayList<IBee> beeTemplates = new ArrayList<>();
@Override
public ArrayList<IBee> getIndividualTemplates() {
@@ -226,7 +230,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
/**
* List of possible mutations on species alleles.
*/
private static final ArrayList<IBeeMutation> beeMutations = new ArrayList<IBeeMutation>();
private static final ArrayList<IBeeMutation> beeMutations = new ArrayList<>();
@Override
public Collection<IBeeMutation> getMutations(boolean shuffle) {
@@ -252,7 +256,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
}
/* BREEDING MODES */
private final ArrayList<IBeekeepingMode> beekeepingModes = new ArrayList<IBeekeepingMode>();
private final ArrayList<IBeekeepingMode> beekeepingModes = new ArrayList<>();
private static IBeekeepingMode activeBeekeepingMode;
@Override
@@ -326,6 +330,16 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
return new BeekeepingLogic(housing);
}
@Override
public IBeeModifier createBeeHousingModifier(IBeeHousing housing) {
return new BeeHousingModifier(housing);
}
@Override
public IBeeListener createBeeHousingListener(IBeeHousing housing) {
return new BeeHousingListener(housing);
}
@Override
public IChromosomeType[] getKaryotype() {
return EnumBeeChromosome.values();
@@ -21,7 +21,6 @@ import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeeMutationCustom;
import forestry.api.apiculture.IBeeRoot;
import forestry.api.genetics.IAllele;
import forestry.apiculture.BeeHousingModifier;
import forestry.core.genetics.mutations.Mutation;
public class BeeMutation extends Mutation implements IBeeMutationCustom {
@@ -48,7 +47,7 @@ public class BeeMutation extends Mutation implements IBeeMutationCustom {
return 0;
}
IBeeModifier beeHousingModifier = new BeeHousingModifier(housing);
IBeeModifier beeHousingModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
IBeeModifier beeModeModifier = BeeManager.beeRoot.getBeekeepingMode(world).getBeeModifier();
processedChance *= beeHousingModifier.getMutationModifier(genome0, genome1, processedChance);
@@ -8,7 +8,7 @@ import forestry.api.apiculture.EnumBeeType;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.genetics.IAllele;
import forestry.core.genetics.alleles.Allele;
import forestry.core.genetics.alleles.AlleleHelper;
public abstract class BeeVariation implements IBeeDefinition {
@@ -51,7 +51,7 @@ public abstract class BeeVariation implements IBeeDefinition {
@Override
protected void initializeTemplate(IAllele[] template) {
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
}
}
}
@@ -16,13 +16,13 @@ import java.util.Random;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.DefaultBeeModifier;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeekeepingMode;
import forestry.apiculture.BeeHousingModifier;
public class BeekeepingMode implements IBeekeepingMode {
@@ -53,7 +53,7 @@ public class BeekeepingMode implements IBeekeepingMode {
@Override
public ArrayList<String> getDescription() {
ArrayList<String> ret = new ArrayList<String>();
ArrayList<String> ret = new ArrayList<>();
ret.add("beemode." + name.toLowerCase(Locale.ENGLISH) + ".desc");
return ret;
}
@@ -84,7 +84,7 @@ public class BeekeepingMode implements IBeekeepingMode {
return false;
}
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
return queen.getGeneration() > 96 + rand.nextInt(6) + rand.nextInt(6) &&
rand.nextFloat() < 0.02f * beeModifier.getGeneticDecay(queen.getGenome(), 1f);
@@ -92,7 +92,7 @@ public class BeekeepingMode implements IBeekeepingMode {
@Override
public boolean isOverworked(IBee queen, IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
float productionModifier = beeModifier.getProductionModifier(queen.getGenome(), 1f);
if (productionModifier > 16) {
@@ -106,7 +106,7 @@ public class BeekeepingMode implements IBeekeepingMode {
@Override
public boolean isDegenerating(IBee queen, IBee offspring, IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
float mutationModifier = beeModifier.getMutationModifier(queen.getGenome(), queen.getMate(), 1.0f);
if (mutationModifier > 10) {
@@ -25,7 +25,7 @@ import forestry.api.apiculture.IHiveDrop;
public class HiveDrop implements IHiveDrop {
private final IBeeDefinition beeTemplate;
private final ArrayList<ItemStack> additional = new ArrayList<ItemStack>();
private final ArrayList<ItemStack> additional = new ArrayList<>();
private final int chance;
private float ignobleShare = 0.0f;
@@ -59,7 +59,7 @@ public class HiveDrop implements IHiveDrop {
@Override
public ArrayList<ItemStack> getAdditional(World world, int x, int y, int z, int fortune) {
ArrayList<ItemStack> ret = new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = new ArrayList<>();
for (ItemStack stack : additional) {
ret.add(stack.copy());
}
@@ -45,8 +45,8 @@ import forestry.core.utils.GeneticsUtil;
import forestry.core.utils.ItemStackUtil;
public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpeciesCustom {
private final Map<ItemStack, Float> productChances = new HashMap<ItemStack, Float>();
private final Map<ItemStack, Float> specialtyChances = new HashMap<ItemStack, Float>();
private final Map<ItemStack, Float> productChances = new HashMap<>();
private final Map<ItemStack, Float> specialtyChances = new HashMap<>();
private final int primaryColour;
private final int secondaryColour;
@@ -56,7 +56,7 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
private boolean nocturnal = false;
public AlleleBeeSpecies(String uid, String unlocalizedName, String authority, String unlocalizedDescription, boolean dominant, IClassification branch, String binomial, int primaryColor, int secondaryColor) {
super(uid, unlocalizedName, authority, unlocalizedDescription, dominant, branch, binomial, false);
super(uid, unlocalizedName, authority, unlocalizedDescription, dominant, branch, binomial);
this.primaryColour = primaryColor;
this.secondaryColour = secondaryColor;
@@ -137,7 +137,7 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
@Override
public ItemStack[] getResearchBounty(World world, GameProfile researcher, IIndividual individual, int bountyLevel) {
ArrayList<ItemStack> bounty = new ArrayList<ItemStack>();
ArrayList<ItemStack> bounty = new ArrayList<>();
Collections.addAll(bounty, super.getResearchBounty(world, researcher, individual, bountyLevel));
if (bountyLevel > 10) {
@@ -213,8 +213,7 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
String beeIconDir = "bees/default/";
TextureManager textureManager = TextureManager.getInstance();
IIcon body1 = textureManager.registerTex(register, beeIconDir + "body1");
IIcon body1 = TextureManager.registerTex(register, beeIconDir + "body1");
for (int i = 0; i < EnumBeeType.values().length; i++) {
EnumBeeType beeType = EnumBeeType.values()[i];
@@ -224,13 +223,13 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
String beeTypeNameBase = beeIconDir + beeType.toString().toLowerCase(Locale.ENGLISH);
icons[i][0] = textureManager.registerTex(register, beeTypeNameBase + ".outline");
icons[i][0] = TextureManager.registerTex(register, beeTypeNameBase + ".outline");
if (beeType == EnumBeeType.LARVAE) {
icons[i][1] = textureManager.registerTex(register, beeTypeNameBase + ".body");
icons[i][1] = TextureManager.registerTex(register, beeTypeNameBase + ".body");
} else {
icons[i][1] = body1;
}
icons[i][2] = textureManager.registerTex(register, beeTypeNameBase + ".body2");
icons[i][2] = TextureManager.registerTex(register, beeTypeNameBase + ".body2");
}
}
@@ -0,0 +1,107 @@
/*******************************************************************************
* 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.apiculture.genetics.alleles;
import net.minecraft.util.AxisAlignedBB;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.genetics.IEffectData;
import forestry.core.genetics.alleles.AlleleCategorized;
import forestry.core.proxy.Proxies;
import forestry.core.utils.vect.MutableVect;
import forestry.core.utils.vect.Vect;
public abstract class AlleleEffect extends AlleleCategorized implements IAlleleBeeEffect {
public static IAlleleBeeEffect effectNone;
public static IAlleleBeeEffect effectAggressive;
public static IAlleleBeeEffect effectHeroic;
public static IAlleleBeeEffect effectBeatific;
public static IAlleleBeeEffect effectMiasmic;
public static IAlleleBeeEffect effectMisanthrope;
public static IAlleleBeeEffect effectGlacial;
public static IAlleleBeeEffect effectRadioactive;
public static IAlleleBeeEffect effectCreeper;
public static IAlleleBeeEffect effectIgnition;
public static IAlleleBeeEffect effectExploration;
public static IAlleleBeeEffect effectFestiveEaster;
public static IAlleleBeeEffect effectSnowing;
public static IAlleleBeeEffect effectDrunkard;
public static IAlleleBeeEffect effectReanimation;
public static IAlleleBeeEffect effectResurrection;
public static IAlleleBeeEffect effectRepulsion;
public static IAlleleBeeEffect effectFertile;
public static IAlleleBeeEffect effectMycophilic;
protected AlleleEffect(String valueName, boolean isDominant) {
super("forestry", "effect", valueName, isDominant);
}
@Override
public IEffectData validateStorage(IEffectData storedData) {
return null;
}
@Override
public boolean isCombinable() {
return false;
}
@Override
public IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
return storedData;
}
@Override
public IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
Proxies.render.addBeeHiveFX("particles/swarm_bee", housing.getWorld(), housing.getCoordinates(), genome.getPrimary().getIconColour(0));
return storedData;
}
protected Vect getModifiedArea(IBeeGenome genome, IBeeHousing housing) {
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
float territoryModifier = beeModifier.getTerritoryModifier(genome, 1f);
MutableVect area = new MutableVect(genome.getTerritory());
area.multiply(territoryModifier);
if (area.x < 1) {
area.x = 1;
}
if (area.y < 1) {
area.y = 1;
}
if (area.z < 1) {
area.z = 1;
}
return new Vect(area);
}
protected AxisAlignedBB getBounding(IBeeGenome genome, IBeeHousing housing) {
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
float territoryModifier = beeModifier.getTerritoryModifier(genome, 1.0f);
MutableVect area = new MutableVect(genome.getTerritory());
area.multiply(territoryModifier);
Vect offset = new Vect(area).multiply(-1 / 2.0f);
Vect min = new Vect(housing.getCoordinates()).add(offset);
Vect max = min.add(area);
return AxisAlignedBB.getBoundingBox(min.x, min.y, min.z, max.x, max.y, max.z);
}
}
@@ -18,7 +18,7 @@ import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.core.EnumTemperature;
import forestry.api.genetics.IEffectData;
import forestry.core.proxy.Proxies;
import forestry.core.config.Constants;
import forestry.core.utils.vect.Vect;
public class AlleleEffectGlacial extends AlleleEffectThrottled {
@@ -61,7 +61,7 @@ public class AlleleEffectGlacial extends AlleleEffectThrottled {
continue;
}
Proxies.common.setBlockWithNotify(world, posBlock.x, posBlock.y, posBlock.z, Blocks.ice);
world.setBlock(posBlock.x, posBlock.y, posBlock.z, Blocks.ice, 0, Constants.FLAG_BLOCK_SYNCH_AND_UPDATE);
}
return storedData;
@@ -80,7 +80,7 @@ public class AlleleEffectIgnition extends AlleleEffectThrottled {
if (housing.getWorld().rand.nextInt(2) != 0) {
super.doFX(genome, storedData, housing);
} else {
Proxies.common.addEntityIgnitionFX(housing.getWorld(), housing.getCoordinates().posX + 0.5, housing.getCoordinates().posY + 1, housing.getCoordinates().posZ + 0.5);
Proxies.render.addEntityIgnitionFX(housing.getWorld(), housing.getCoordinates().posX + 0.5, housing.getCoordinates().posY + 1, housing.getCoordinates().posZ + 0.5);
}
return storedData;
}
@@ -1,87 +1,17 @@
/*******************************************************************************
* 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.apiculture.genetics.alleles;
import net.minecraft.util.AxisAlignedBB;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.genetics.IEffectData;
import forestry.apiculture.BeeHousingModifier;
import forestry.core.genetics.alleles.AlleleCategorized;
import forestry.core.utils.vect.MutableVect;
import forestry.core.utils.vect.Vect;
import forestry.plugins.PluginApiculture;
public class AlleleEffectNone extends AlleleCategorized implements IAlleleBeeEffect {
public AlleleEffectNone(String valueName, boolean isDominant) {
super("forestry", "effect", valueName, isDominant);
}
@Override
public IEffectData validateStorage(IEffectData storedData) {
return null;
}
@Override
public boolean isCombinable() {
return false;
}
@Override
public IEffectData doEffect(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
return storedData;
}
@Override
public IEffectData doFX(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
PluginApiculture.proxy.addBeeHiveFX("particles/swarm_bee", housing.getWorld(), housing.getCoordinates(), genome.getPrimary().getIconColour(0));
return storedData;
}
protected Vect getModifiedArea(IBeeGenome genome, IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
float territoryModifier = beeModifier.getTerritoryModifier(genome, 1f);
MutableVect area = new MutableVect(genome.getTerritory());
area.multiply(territoryModifier);
if (area.x < 1) {
area.x = 1;
}
if (area.y < 1) {
area.y = 1;
}
if (area.z < 1) {
area.z = 1;
}
return new Vect(area);
}
protected AxisAlignedBB getBounding(IBeeGenome genome, IBeeHousing housing) {
IBeeModifier beeModifier = new BeeHousingModifier(housing);
float territoryModifier = beeModifier.getTerritoryModifier(genome, 1.0f);
MutableVect area = new MutableVect(genome.getTerritory());
area.multiply(territoryModifier);
Vect offset = new Vect(area).multiply(-1 / 2.0f);
Vect min = new Vect(housing.getCoordinates()).add(offset);
Vect max = min.add(area);
return AxisAlignedBB.getBoundingBox(min.x, min.y, min.z, max.x, max.y, max.z);
}
}
/*******************************************************************************
* 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.apiculture.genetics.alleles;
public class AlleleEffectNone extends AlleleEffect {
public AlleleEffectNone(String valueName, boolean isDominant) {
super(valueName, isDominant);
}
}
@@ -109,7 +109,7 @@ public class AlleleEffectPotion extends AlleleEffectThrottled {
super.doFX(genome, storedData, housing);
} else {
ChunkCoordinates coords = housing.getCoordinates();
Proxies.common.addEntityPotionFX(housing.getWorld(), coords.posX + 0.5, coords.posY + 1, coords.posZ + 0.5, potionFXColor);
Proxies.render.addEntityPotionFX(housing.getWorld(), coords.posX + 0.5, coords.posY + 1, coords.posZ + 0.5, potionFXColor);
}
return storedData;
}
@@ -49,7 +49,7 @@ public class AlleleEffectResurrection extends AlleleEffectThrottled {
}
public static List<Resurrectable> getReanimationList() {
ArrayList<Resurrectable> list = new ArrayList<Resurrectable>();
ArrayList<Resurrectable> list = new ArrayList<>();
list.add(new Resurrectable(new ItemStack(Items.bone), EntitySkeleton.class));
list.add(new Resurrectable(new ItemStack(Items.arrow), EntitySkeleton.class));
list.add(new Resurrectable(new ItemStack(Items.rotten_flesh), EntityZombie.class));
@@ -58,7 +58,7 @@ public class AlleleEffectResurrection extends AlleleEffectThrottled {
}
public static List<Resurrectable> getResurrectionList() {
ArrayList<Resurrectable> list = new ArrayList<Resurrectable>();
ArrayList<Resurrectable> list = new ArrayList<>();
list.add(new Resurrectable(new ItemStack(Items.gunpowder), EntityCreeper.class));
list.add(new Resurrectable(new ItemStack(Items.ender_pearl), EntityEnderman.class));
list.add(new Resurrectable(new ItemStack(Items.string), EntitySpider.class));
@@ -69,7 +69,7 @@ public class AlleleEffectSnowing extends AlleleEffectThrottled {
world.setBlockMetadataWithNotify(posBlock.x, posBlock.y, posBlock.z, meta + 1, Constants.FLAG_BLOCK_SYNCH_AND_UPDATE);
}
} else if (block.isReplaceable(world, posBlock.x, posBlock.y, posBlock.z)) {
Proxies.common.setBlockWithNotify(world, posBlock.x, posBlock.y, posBlock.z, Blocks.snow_layer);
world.setBlock(posBlock.x, posBlock.y, posBlock.z, Blocks.snow_layer, 0, Constants.FLAG_BLOCK_SYNCH_AND_UPDATE);
}
}
@@ -86,7 +86,7 @@ public class AlleleEffectSnowing extends AlleleEffectThrottled {
World world = housing.getWorld();
Vect spawn = Vect.getRandomPositionInArea(world.rand, area).add(coordinates).add(offset);
Proxies.common.addEntitySnowFX(world, spawn.x, spawn.y, spawn.z);
Proxies.render.addEntitySnowFX(world, spawn.x, spawn.y, spawn.z);
return storedData;
} else {
return super.doFX(genome, storedData, housing);
@@ -15,7 +15,7 @@ import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
import forestry.core.genetics.EffectData;
public abstract class AlleleEffectThrottled extends AlleleEffectNone {
public abstract class AlleleEffectThrottled extends AlleleEffect {
private boolean isCombinable = false;
private final int throttle;
@@ -11,24 +11,21 @@
package forestry.apiculture.gui;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.apiculture.items.ItemImprinter.ImprinterInventory;
import forestry.apiculture.network.PacketImprintSelectionResponse;
import forestry.core.gui.ContainerItemInventory;
import forestry.core.gui.IGuiSelectable;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
import forestry.core.network.ForestryPacket;
import forestry.core.network.PacketGuiSelect;
import forestry.core.network.PacketId;
import forestry.core.network.PacketGuiSelectRequest;
import forestry.core.proxy.Proxies;
import forestry.core.utils.InventoryUtil;
public class ContainerImprinter extends ContainerItemInventory<ImprinterInventory> implements IGuiSelectable {
private boolean isNetSynced = false;
public ContainerImprinter(InventoryPlayer inventoryplayer, ImprinterInventory inventory) {
super(inventory, inventoryplayer, 8, 103);
@@ -40,66 +37,34 @@ public class ContainerImprinter extends ContainerItemInventory<ImprinterInventor
@Override
public void onContainerClosed(EntityPlayer entityplayer) {
if (entityplayer.worldObj.isRemote) {
return;
}
// Drop everything still in there.
for (int i = 0; i < inventory.getSizeInventory(); i++) {
ItemStack stack = inventory.getStackInSlot(i);
if (stack == null) {
continue;
}
Proxies.common.dropItemPlayer(entityplayer, stack);
inventory.setInventorySlotContents(i, null);
}
}
public void advanceSelection(int index) {
sendSelectionChange(index, 0);
}
public void regressSelection(int index) {
sendSelectionChange(index, 1);
}
public void updateContainer(World world) {
if (!isNetSynced && world.isRemote) {
isNetSynced = true;
Proxies.net.sendToServer(new ForestryPacket(PacketId.IMPRINT_SELECTION_GET));
}
}
private void sendSelectionChange(int index, int advance) {
ForestryPacket packet = new PacketGuiSelect(PacketId.GUI_SELECTION_CHANGE, index, advance);
Proxies.net.sendToServer(packet);
isNetSynced = false;
InventoryUtil.dropInventory(inventory, entityplayer.worldObj, entityplayer.posX, entityplayer.posY, entityplayer.posZ);
}
@Override
public void handleSelectionChange(EntityPlayer player, PacketGuiSelect packet) {
if (packet.getSecondaryIndex() == 0) {
if (packet.getPrimaryIndex() == 0) {
public void handleSelectionRequest(EntityPlayerMP player, PacketGuiSelectRequest packetRequest) {
if (packetRequest.getPrimaryIndex() == 0) {
if (packetRequest.getSecondaryIndex() == 0) {
inventory.advancePrimary();
} else {
inventory.advanceSecondary();
inventory.regressPrimary();
}
} else if (packet.getPrimaryIndex() == 0) {
inventory.regressPrimary();
} else {
inventory.regressSecondary();
if (packetRequest.getSecondaryIndex() == 0) {
inventory.advanceSecondary();
} else {
inventory.regressSecondary();
}
}
PacketImprintSelectionResponse packetResponse = new PacketImprintSelectionResponse(inventory.getPrimaryIndex(), inventory.getSecondaryIndex());
Proxies.net.sendToPlayer(packetResponse, player);
}
public void sendSelection(EntityPlayer player) {
ForestryPacket packet = new PacketGuiSelect(PacketId.GUI_SELECTION_SET, inventory.getPrimaryIndex(), inventory.getSecondaryIndex());
Proxies.net.sendToPlayer(packet, player);
}
@Override
public void setSelection(PacketGuiSelect packetPayload) {
public void setSelection(PacketImprintSelectionResponse packetPayload) {
inventory.setPrimaryIndex(packetPayload.getPrimaryIndex());
inventory.setSecondaryIndex(packetPayload.getSecondaryIndex());
}
@@ -36,31 +36,15 @@ public class GuiAlveary extends GuiForestryTitled<ContainerAlveary, TileAlvearyP
}
private void drawHealthMeter(int x, int y, int height, EnumTankLevel rated) {
int i = 176;
int i = 176 + rated.getLevelScaled(16);
int k = 0;
switch (rated) {
case EMPTY:
break;
case LOW:
i += 4;
break;
case MEDIUM:
i += 8;
break;
case HIGH:
i += 12;
break;
case MAXIMUM:
i += 16;
break;
}
this.drawTexturedModalRect(x, y + 46 - height, i, k + 46 - height, 4, height);
}
/* LEDGERS */
protected void initLedgers() {
super.initLedgers();
public void initGui() {
super.initGui();
IAlvearyController alvearyController = inventory.getAlvearyController();
ledgerManager.add(new OwnerLedger(ledgerManager, alvearyController));
@@ -41,24 +41,8 @@ public class GuiBeeHousing extends GuiForestryTitled<ContainerBeeHousing, TileAb
}
private void drawHealthMeter(int x, int y, int height, EnumTankLevel rated) {
int i = 176;
int i = 176 + rated.getLevelScaled(16);
int k = 0;
switch (rated) {
case EMPTY:
break;
case LOW:
i += 4;
break;
case MEDIUM:
i += 8;
break;
case HIGH:
i += 12;
break;
case MAXIMUM:
i += 16;
break;
}
this.drawTexturedModalRect(x, y + 46 - height, i, k + 46 - height, 4, height);
}
@@ -39,7 +39,7 @@ public class GuiBeealyzer extends GuiAlyzer {
public GuiBeealyzer(EntityPlayer player, BeealyzerInventory inventory) {
super("rootBees", player, new ContainerAlyzer(inventory, player), inventory, "gui.beealyzer");
ArrayList<ItemStack> beeList = new ArrayList<ItemStack>();
ArrayList<ItemStack> beeList = new ArrayList<>();
((ItemBeeGE) ForestryItem.beeDroneGE.item()).addCreativeItems(beeList, false);
for (ItemStack beeStack : beeList) {
IAlleleBeeSpecies species = BeeGenome.getSpecies(beeStack);
@@ -129,20 +129,12 @@ public class GuiBeealyzer extends GuiAlyzer {
IAlleleInteger secondaryFertility = (IAlleleInteger) bee.getGenome().getInactiveAllele(EnumBeeChromosome.FERTILITY);
drawFertilityInfo(primaryFertility.getValue(), COLUMN_1, getColorCoding(primaryFertility.isDominant()), 0);
drawFertilityInfo(secondaryFertility.getValue(), COLUMN_2, getColorCoding(secondaryFertility.isDominant()), 0);
newLine();
IAlleleArea activeTerritory = (IAlleleArea) bee.getGenome().getActiveAllele(EnumBeeChromosome.TERRITORY);
IAlleleArea inactiveTerritory = (IAlleleArea) bee.getGenome().getInactiveAllele(EnumBeeChromosome.TERRITORY);
drawRow(StringUtil.localize("gui.area"),
new Vect(activeTerritory.getValue()).toString(),
new Vect(inactiveTerritory.getValue()).toString(),
bee, EnumBeeChromosome.TERRITORY);
drawChromosomeRow(StringUtil.localize("gui.area"), bee, EnumBeeChromosome.TERRITORY);
newLine();
drawChromosomeRow(StringUtil.localize("gui.effect"), bee, EnumBeeChromosome.EFFECT);
newLine();
endPage();
@@ -49,7 +49,7 @@ public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, Habi
new HabitatSlot(9, "Mushroom"),
new HabitatSlot(10, "Nether"),
new HabitatSlot(11, "End")};
private final Map<BiomeDictionary.Type, HabitatSlot> biomeToHabitat = new EnumMap<BiomeDictionary.Type, HabitatSlot>(BiomeDictionary.Type.class);
private final Map<BiomeDictionary.Type, HabitatSlot> biomeToHabitat = new EnumMap<>(BiomeDictionary.Type.class);
private int startX;
private int startY;
@@ -172,7 +172,7 @@ public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, Habi
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
}
Proxies.common.bindTexture(SpriteSheet.ITEMS);
Proxies.render.bindTexture(SpriteSheet.ITEMS);
manager.gui.drawTexturedModelRectFromIcon(startX + xPos, startY + yPos, getIcon(), 16, 16);
GL11.glEnable(GL11.GL_LIGHTING);
}
@@ -26,6 +26,7 @@ import forestry.apiculture.items.ItemImprinter.ImprinterInventory;
import forestry.core.config.Constants;
import forestry.core.config.ForestryItem;
import forestry.core.gui.GuiForestry;
import forestry.core.network.PacketGuiSelectRequest;
import forestry.core.proxy.Proxies;
import forestry.core.utils.StringUtil;
@@ -34,7 +35,7 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInven
private int startX;
private int startY;
private final Map<String, ItemStack> iconStacks = new HashMap<String, ItemStack>();
private final Map<String, ItemStack> iconStacks = new HashMap<>();
public GuiImprinter(InventoryPlayer inventoryplayer, ImprinterInventory inventory) {
super(Constants.TEXTURE_PATH_GUI + "/imprinter.png", new ContainerImprinter(inventoryplayer, inventory), inventory);
@@ -42,7 +43,7 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInven
xSize = 176;
ySize = 185;
List<ItemStack> beeList = new ArrayList<ItemStack>();
List<ItemStack> beeList = new ArrayList<>();
((ItemBeeGE) ForestryItem.beeDroneGE.item()).addCreativeItems(beeList, false);
for (ItemStack beeStack : beeList) {
IAlleleBeeSpecies species = BeeGenome.getSpecies(beeStack);
@@ -54,7 +55,6 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInven
@Override
protected void drawGuiContainerBackgroundLayer(float var1, int mouseX, int mouseY) {
container.updateContainer(Proxies.common.getRenderWorld());
super.drawGuiContainerBackgroundLayer(var1, mouseX, mouseY);
int offset = (138 - fontRendererObj.getStringWidth(StringUtil.localize("gui.imprinter.name"))) / 2;
@@ -106,9 +106,9 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInven
}
if (k == 0) {
container.advanceSelection(slot);
advanceSelection(slot);
} else {
container.regressSelection(slot);
regressSelection(slot);
}
}
@@ -119,4 +119,16 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInven
startX = (this.width - this.xSize) / 2;
startY = (this.height - this.ySize) / 2;
}
private static void advanceSelection(int index) {
sendSelectionChange(index, 0);
}
private static void regressSelection(int index) {
sendSelectionChange(index, 1);
}
private static void sendSelectionChange(int index, int advance) {
Proxies.net.sendToServer(new PacketGuiSelectRequest(index, advance));
}
}
@@ -48,7 +48,7 @@ public class ItemArmorApiarist extends ItemArmor implements IArmorApiarist, IArm
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister register) {
itemIcon = TextureManager.getInstance().registerTex(register, StringUtil.cleanItemName(this));
itemIcon = TextureManager.registerTex(register, StringUtil.cleanItemName(this));
}
@SideOnly(Side.CLIENT)
@@ -178,12 +178,18 @@ public class ItemBeeGE extends ItemGE {
}
}
@SideOnly(Side.CLIENT)
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(ItemStack itemstack, int renderPass) {
return getIconFromSpecies(BeeGenome.getSpecies(itemstack), renderPass);
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIconIndex(ItemStack stack) {
return getIcon(stack, 0);
}
@SideOnly(Side.CLIENT)
public IIcon getIconFromSpecies(IAlleleBeeSpecies species, int renderPass) {
if (species == null) {
@@ -12,13 +12,12 @@ package forestry.apiculture.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBee;
import forestry.api.core.ForestryAPI;
import forestry.api.core.Tabs;
import forestry.api.genetics.ISpeciesRoot;
import forestry.core.config.Config;
import forestry.core.gui.IHintSource;
import forestry.core.items.ItemAlyzer;
@@ -48,48 +47,11 @@ public class ItemBeealyzer extends ItemAlyzer {
}
@Override
protected boolean isSpecimen(ItemStack itemStack) {
return BeeManager.beeRoot.isMember(itemStack);
protected ISpeciesRoot getSpeciesRoot() {
return BeeManager.beeRoot;
}
@Override
public void onSlotClick(EntityPlayer player) {
// Source slot to analyze empty
if (getStackInSlot(SLOT_SPECIMEN) == null) {
return;
}
IBee bee = BeeManager.beeRoot.getMember(getStackInSlot(SLOT_SPECIMEN));
// No bee, abort
if (bee == null) {
return;
}
// Analyze if necessary
if (!bee.isAnalyzed()) {
// Requires energy
if (!isEnergy(getStackInSlot(SLOT_ENERGY))) {
return;
}
bee.analyze();
if (player != null) {
BeeManager.beeRoot.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getPrimary());
BeeManager.beeRoot.getBreedingTracker(player.worldObj, player.getGameProfile()).registerSpecies(bee.getGenome().getSecondary());
}
NBTTagCompound nbttagcompound = new NBTTagCompound();
bee.writeToNBT(nbttagcompound);
getStackInSlot(SLOT_SPECIMEN).setTagCompound(nbttagcompound);
// Decrease energy
decrStackSize(SLOT_ENERGY, 1);
}
setInventorySlotContents(SLOT_ANALYZE_1, getStackInSlot(SLOT_SPECIMEN));
setInventorySlotContents(SLOT_SPECIMEN, null);
}
// / IHINTSOURCE
@Override
@@ -23,6 +23,7 @@ import net.minecraft.client.renderer.texture.TextureAtlasSprite;
import net.minecraft.client.renderer.texture.TextureMap;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChunkCoordinates;
@@ -43,6 +44,7 @@ import forestry.api.core.IErrorSource;
import forestry.api.core.IErrorState;
import forestry.api.core.Tabs;
import forestry.api.genetics.AlleleManager;
import forestry.apiculture.network.PacketHabitatBiomePointer;
import forestry.apiculture.render.TextureHabitatLocator;
import forestry.core.config.Config;
import forestry.core.config.ForestryItem;
@@ -59,7 +61,7 @@ public class ItemHabitatLocator extends ItemInventoried {
private static final String iconName = "forestry:biomefinder";
private Set<BiomeGenBase> targetBiomes = new HashSet<BiomeGenBase>();
private Set<BiomeGenBase> targetBiomes = new HashSet<>();
private boolean biomeFound = false;
private int searchRadiusIteration = 0;
private int searchAngleIteration = 0;
@@ -108,7 +110,7 @@ public class ItemHabitatLocator extends ItemInventoried {
private void startBiomeSearch(IBee bee, EntityPlayer player) {
this.targetBiomes = new HashSet<BiomeGenBase>(bee.getSuitableBiomes());
this.targetBiomes = new HashSet<>(bee.getSuitableBiomes());
this.searchAngleIteration = 0;
this.searchRadiusIteration = 0;
this.biomeFound = false;
@@ -118,7 +120,7 @@ public class ItemHabitatLocator extends ItemInventoried {
removeInvalidBiomes(currentBiome, targetBiomes);
// reset the locator coordinates
Proxies.common.setHabitatLocatorCoordinates(null, null);
Proxies.render.setHabitatLocatorTexture(null, null);
}
@Override
@@ -140,8 +142,8 @@ public class ItemHabitatLocator extends ItemInventoried {
ChunkCoordinates target = findNearestBiome(player, targetBiomes);
// send an update if we find the biome
if (target != null) {
Proxies.common.setHabitatLocatorCoordinates(player, target);
if (target != null && player instanceof EntityPlayerMP) {
Proxies.net.sendToPlayer(new PacketHabitatBiomePointer(target), (EntityPlayerMP) player);
biomeFound = true;
}
}
@@ -237,9 +239,9 @@ public class ItemHabitatLocator extends ItemInventoried {
return new ChunkCoordinates(pos.x, pos.y, pos.z);
}
private static final Set<BiomeGenBase> waterBiomes = new HashSet<BiomeGenBase>();
private static final Set<BiomeGenBase> netherBiomes = new HashSet<BiomeGenBase>();
private static final Set<BiomeGenBase> endBiomes = new HashSet<BiomeGenBase>();
private static final Set<BiomeGenBase> waterBiomes = new HashSet<>();
private static final Set<BiomeGenBase> netherBiomes = new HashSet<>();
private static final Set<BiomeGenBase> endBiomes = new HashSet<>();
static {
Collections.addAll(waterBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.BEACH));
@@ -107,7 +107,7 @@ public class ItemHoneycomb extends ItemForestryMultiPass {
}
private int getRandomCombType(Random random, boolean includeSecret) {
List<Integer> validCombs = new ArrayList<Integer>(combs.length);
List<Integer> validCombs = new ArrayList<>(combs.length);
for (int i = 0; i < combs.length; i++) {
if (!combs[i].isSecret || includeSecret) {
validCombs.add(i);
@@ -35,8 +35,8 @@ import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.IClimateControlled;
import forestry.apiculture.BeeHousingInventory;
import forestry.apiculture.BeeHousingModifier;
import forestry.core.access.EnumAccess;
import forestry.core.inventory.FakeInventoryAdapter;
import forestry.core.inventory.IInventoryAdapter;
import forestry.core.multiblock.CoordTriplet;
import forestry.core.multiblock.IMultiblockPart;
@@ -60,11 +60,11 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
private float humidChange = 0.0f;
// PARTS
private final Set<IBeeModifier> beeModifiers = new HashSet<IBeeModifier>();
private final Set<IBeeListener> beeListeners = new HashSet<IBeeListener>();
private final Set<IAlvearyComponent.Climatiser> climatisers = new HashSet<IAlvearyComponent.Climatiser>();
private final Set<IAlvearyComponent.Active> activeComponents = new HashSet<IAlvearyComponent.Active>();
private final Set<IAlvearyComponent> allComponents = new HashSet<IAlvearyComponent>();
private final Set<IBeeModifier> beeModifiers = new HashSet<>();
private final Set<IBeeListener> beeListeners = new HashSet<>();
private final Set<IAlvearyComponent.Climatiser> climatisers = new HashSet<>();
private final Set<IAlvearyComponent.Active> activeComponents = new HashSet<>();
private final Set<IAlvearyComponent> allComponents = new HashSet<>();
// CLIENT
private int breedingProgressPercent = 0;
@@ -89,7 +89,11 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
@Override
public IInventoryAdapter getInternalInventory() {
return inventory;
if (isAssembled()) {
return inventory;
} else {
return FakeInventoryAdapter.instance();
}
}
@Override
@@ -305,10 +309,10 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
fxY += upSpread;
// display fx on all 4 sides
Proxies.common.addEntitySwarmFX(worldObj, (fxX - distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ - distanceFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ + distanceFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX - distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ - distanceFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ + distanceFromCenter));
}
}
}
@@ -384,7 +388,7 @@ public class AlvearyController extends RectangularMultiblockControllerBase imple
@Override
public EnumTemperature getTemperature() {
IBeeModifier beeModifier = new BeeHousingModifier(this);
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(this);
if (beeModifier.isHellish() && tempChange >= 0) {
return EnumTemperature.HELLISH;
}
@@ -10,14 +10,25 @@
******************************************************************************/
package forestry.apiculture.multiblock;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.StatCollector;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeHousingInventory;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeekeepingLogic;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.IErrorLogic;
import forestry.apiculture.blocks.BlockAlveary;
import forestry.core.multiblock.MultiblockControllerBase;
import forestry.core.multiblock.MultiblockValidationException;
import forestry.core.multiblock.rectangular.RectangularMultiblockTileEntityBase;
public abstract class TileAlveary extends RectangularMultiblockTileEntityBase {
public abstract class TileAlveary extends RectangularMultiblockTileEntityBase implements IBeeHousing {
public static final int PLAIN_META = 0;
public static final int ENTRANCE_META = 1;
@@ -83,6 +94,8 @@ public abstract class TileAlveary extends RectangularMultiblockTileEntityBase {
if (worldObj.isRemote) {
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
notifyNeighborsOfBlockChange();
markDirty();
}
@Override
@@ -93,6 +106,71 @@ public abstract class TileAlveary extends RectangularMultiblockTileEntityBase {
if (worldObj.isRemote) {
this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
}
notifyNeighborsOfBlockChange();
markDirty();
}
/* IHousing */
@Override
public World getWorld() {
return getAlvearyController().getWorld();
}
@Override
public ChunkCoordinates getCoordinates() {
return getAlvearyController().getCoordinates();
}
@Override
public BiomeGenBase getBiome() {
return getAlvearyController().getBiome();
}
/* IBeeHousing */
@Override
public Iterable<IBeeModifier> getBeeModifiers() {
return getAlvearyController().getBeeModifiers();
}
@Override
public Iterable<IBeeListener> getBeeListeners() {
return getAlvearyController().getBeeListeners();
}
@Override
public IBeeHousingInventory getBeeInventory() {
return getAlvearyController().getBeeInventory();
}
@Override
public IBeekeepingLogic getBeekeepingLogic() {
return getAlvearyController().getBeekeepingLogic();
}
/* IClimatised */
@Override
public EnumTemperature getTemperature() {
return getAlvearyController().getTemperature();
}
@Override
public EnumHumidity getHumidity() {
return getAlvearyController().getHumidity();
}
@Override
public int getBlockLightValue() {
return getAlvearyController().getBlockLightValue();
}
@Override
public boolean canBlockSeeTheSky() {
return getAlvearyController().canBlockSeeTheSky();
}
@Override
public IErrorLogic getErrorLogic() {
return getAlvearyController().getErrorLogic();
}
}
@@ -10,8 +10,6 @@
******************************************************************************/
package forestry.apiculture.multiblock;
import net.minecraft.inventory.Container;
import net.minecraft.inventory.ICrafting;
import net.minecraft.inventory.IInventory;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
@@ -20,6 +18,7 @@ import net.minecraftforge.common.util.ForgeDirection;
import net.minecraftforge.fluids.Fluid;
import net.minecraftforge.fluids.FluidStack;
import net.minecraftforge.fluids.FluidTankInfo;
import net.minecraftforge.fluids.IFluidHandler;
import forestry.api.apiculture.IAlvearyComponent;
import forestry.api.core.IClimateControlled;
@@ -34,7 +33,7 @@ import forestry.core.inventory.TileInventoryAdapter;
import forestry.core.network.GuiId;
import forestry.core.tiles.ILiquidTankTile;
public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IInventory, ILiquidTankTile, IAlvearyComponent.Climatiser {
public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IInventory, ILiquidTankTile, IFluidHandler, IAlvearyComponent.Climatiser {
private final HygroregulatorRecipe[] recipes;
@@ -56,7 +55,7 @@ public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IIn
Fluid liquidIce = Fluids.ICE.getFluid();
this.liquidTank = new FilteredTank(Constants.PROCESSOR_TANK_CAPACITY, water, lava, liquidIce);
this.tankManager = new TankManager(liquidTank);
this.tankManager = new TankManager(this, liquidTank);
this.recipes = new HygroregulatorRecipe[]{new HygroregulatorRecipe(new FluidStack(water, 1), 1, 0.01f, -0.005f),
new HygroregulatorRecipe(new FluidStack(lava, 1), 10, -0.01f, +0.005f),
@@ -108,12 +107,8 @@ public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IIn
}
if (tickCount % 20 == 0) {
IInventoryAdapter canInventory = getInternalInventory();
// Check if we have suitable items waiting in the item slot
if (canInventory.getStackInSlot(0) != null) {
FluidHelper.drainContainers(tankManager, canInventory, 0);
}
FluidHelper.drainContainers(tankManager, this, 0);
}
}
@@ -121,7 +116,7 @@ public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IIn
@Override
public void readFromNBT(NBTTagCompound nbttagcompound) {
super.readFromNBT(nbttagcompound);
tankManager.readTanksFromNBT(nbttagcompound);
tankManager.readFromNBT(nbttagcompound);
transferTime = nbttagcompound.getInteger("TransferTime");
@@ -134,7 +129,7 @@ public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IIn
@Override
public void writeToNBT(NBTTagCompound nbttagcompound) {
super.writeToNBT(nbttagcompound);
tankManager.writeTanksToNBT(nbttagcompound);
tankManager.writeToNBT(nbttagcompound);
nbttagcompound.setInteger("TransferTime", transferTime);
if (currentRecipe != null) {
@@ -186,14 +181,6 @@ public class TileAlvearyHygroregulator extends TileAlvearyWithGui implements IIn
return tankManager.getTankInfo(from);
}
@Override
public void getGUINetworkData(int messageId, int data) {
}
@Override
public void sendGUINetworkData(Container container, ICrafting iCrafting) {
}
/* RECIPE MANAGMENT */
private static class HygroregulatorRecipe {
@@ -16,23 +16,12 @@ import java.util.Collection;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.util.ForgeDirection;
import cpw.mods.fml.common.Optional;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeHousingInventory;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IBeekeepingLogic;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.ForestryAPI;
import forestry.api.core.IErrorLogic;
import forestry.apiculture.trigger.ApicultureTriggers;
import forestry.core.config.Config;
import forestry.core.gui.IHintSource;
@@ -53,7 +42,7 @@ import buildcraft.api.statements.ITriggerInternal;
import buildcraft.api.statements.ITriggerProvider;
@Optional.Interface(iface = "buildcraft.api.statements.ITriggerProvider", modid = "BuildCraftAPI|statements")
public class TileAlvearyPlain extends TileAlveary implements IBeeHousing, IClimatised, IHintSource, IStreamableGui, ITitled, ITriggerProvider {
public class TileAlvearyPlain extends TileAlveary implements IClimatised, IHintSource, IStreamableGui, ITitled, ITriggerProvider {
@Override
public void onMachineAssembled(MultiblockControllerBase controller) {
@@ -133,70 +122,13 @@ public class TileAlvearyPlain extends TileAlveary implements IBeeHousing, IClima
@Optional.Method(modid = "BuildCraftAPI|statements")
@Override
public Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile) {
Collection<ITriggerExternal> res = new ArrayList<ITriggerExternal>();
Collection<ITriggerExternal> res = new ArrayList<>();
res.add(ApicultureTriggers.missingQueen);
res.add(ApicultureTriggers.missingDrone);
return res;
}
/* IHousing */
@Override
public World getWorld() {
return getAlvearyController().getWorld();
}
@Override
public ChunkCoordinates getCoordinates() {
return getAlvearyController().getCoordinates();
}
@Override
public BiomeGenBase getBiome() {
return getAlvearyController().getBiome();
}
/* IBeeHousing */
@Override
public Iterable<IBeeModifier> getBeeModifiers() {
return getAlvearyController().getBeeModifiers();
}
@Override
public Iterable<IBeeListener> getBeeListeners() {
return getAlvearyController().getBeeListeners();
}
@Override
public IBeeHousingInventory getBeeInventory() {
return getAlvearyController().getBeeInventory();
}
@Override
public IBeekeepingLogic getBeekeepingLogic() {
return getAlvearyController().getBeekeepingLogic();
}
/* IClimatised */
@Override
public EnumTemperature getTemperature() {
return getAlvearyController().getTemperature();
}
@Override
public EnumHumidity getHumidity() {
return getAlvearyController().getHumidity();
}
@Override
public int getBlockLightValue() {
return getAlvearyController().getBlockLightValue();
}
@Override
public boolean canBlockSeeTheSky() {
return getAlvearyController().canBlockSeeTheSky();
}
@Override
public float getExactTemperature() {
return getAlvearyController().getExactTemperature();
@@ -206,10 +138,4 @@ public class TileAlvearyPlain extends TileAlveary implements IBeeHousing, IClima
public float getExactHumidity() {
return getAlvearyController().getExactHumidity();
}
@Override
public IErrorLogic getErrorLogic() {
return getAlvearyController().getErrorLogic();
}
}
@@ -40,7 +40,7 @@ import forestry.core.utils.ItemStackUtil;
public class TileAlvearySwarmer extends TileAlvearyWithGui implements ISidedInventory, IActivatable, IAlvearyComponent.Active {
private final SwarmerInventory inventory;
private final Stack<ItemStack> pendingSpawns = new Stack<ItemStack>();
private final Stack<ItemStack> pendingSpawns = new Stack<>();
private boolean active;
public TileAlvearySwarmer() {
@@ -12,29 +12,26 @@ package forestry.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketId;
import forestry.core.network.PacketIdClient;
import forestry.core.proxy.Proxies;
import forestry.core.tiles.IActivatable;
public class PacketActiveUpdate extends PacketCoordinates {
public class PacketActiveUpdate extends PacketCoordinates implements IForestryPacketClient {
private boolean active;
public static void onPacketData(DataInputStreamForestry data) throws IOException {
new PacketActiveUpdate(data);
}
private PacketActiveUpdate(DataInputStreamForestry data) throws IOException {
super(data);
public PacketActiveUpdate() {
}
public PacketActiveUpdate(IActivatable tile) {
super(PacketId.TILE_FORESTRY_ACTIVE, tile.getCoordinates());
super(PacketIdClient.TILE_FORESTRY_ACTIVE, tile.getCoordinates());
this.active = tile.isActive();
}
@@ -45,11 +42,13 @@ public class PacketActiveUpdate extends PacketCoordinates {
}
@Override
protected void readData(DataInputStreamForestry data) throws IOException {
public void readData(DataInputStreamForestry data) throws IOException {
super.readData(data);
active = data.readBoolean();
}
@Override
public void onPacketData(DataInputStreamForestry data, EntityPlayer player) {
TileEntity tile = getTarget(Proxies.common.getRenderWorld());
if (tile instanceof IActivatable) {
((IActivatable) tile).setActive(active);
@@ -12,6 +12,7 @@ package forestry.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import forestry.api.apiculture.IBeeHousing;
@@ -19,23 +20,19 @@ import forestry.api.apiculture.IBeekeepingLogic;
import forestry.apiculture.BeekeepingLogic;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketId;
import forestry.core.network.PacketIdClient;
import forestry.core.proxy.Proxies;
public class PacketBeekeepingLogicActive extends PacketCoordinates {
public class PacketBeekeepingLogicActive extends PacketCoordinates implements IForestryPacketClient {
private BeekeepingLogic beekeepingLogic;
public static void onPacketData(DataInputStreamForestry data) throws IOException {
new PacketBeekeepingLogicActive(data);
}
private PacketBeekeepingLogicActive(DataInputStreamForestry data) throws IOException {
super(data);
public PacketBeekeepingLogicActive() {
}
public PacketBeekeepingLogicActive(IBeeHousing tile) {
super(PacketId.BEE_LOGIC_ACTIVE, tile.getCoordinates());
super(PacketIdClient.BEE_LOGIC_ACTIVE, tile.getCoordinates());
this.beekeepingLogic = (BeekeepingLogic) tile.getBeekeepingLogic();
}
@@ -46,9 +43,7 @@ public class PacketBeekeepingLogicActive extends PacketCoordinates {
}
@Override
protected void readData(DataInputStreamForestry data) throws IOException {
super.readData(data);
public void onPacketData(DataInputStreamForestry data, EntityPlayer player) throws IOException {
TileEntity tile = getTarget(Proxies.common.getRenderWorld());
if (tile instanceof IBeeHousing) {
IBeeHousing beeHousing = (IBeeHousing) tile;
@@ -0,0 +1,62 @@
/*******************************************************************************
* 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.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import forestry.apiculture.tiles.TileCandle;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketIdClient;
import forestry.core.proxy.Proxies;
public class PacketCandleUpdate extends PacketCoordinates implements IForestryPacketClient {
private int colour;
private boolean lit;
public PacketCandleUpdate() {
}
public PacketCandleUpdate(TileCandle tileCandle) {
super(PacketIdClient.CANDLE_UPDATE, tileCandle);
colour = tileCandle.getColour();
lit = tileCandle.isLit();
}
@Override
public void writeData(DataOutputStreamForestry data) throws IOException {
super.writeData(data);
data.writeInt(colour);
data.writeBoolean(lit);
}
@Override
public void readData(DataInputStreamForestry data) throws IOException {
super.readData(data);
colour = data.readInt();
lit = data.readBoolean();
}
@Override
public void onPacketData(DataInputStreamForestry data, EntityPlayer player) throws IOException {
TileEntity tileEntity = getTarget(Proxies.common.getRenderWorld());
if (tileEntity instanceof TileCandle) {
((TileCandle) tileEntity).onPacketUpdate(colour, lit);
}
}
}
@@ -0,0 +1,37 @@
/*******************************************************************************
* 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.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.ChunkCoordinates;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketIdClient;
import forestry.core.proxy.Proxies;
public class PacketHabitatBiomePointer extends PacketCoordinates implements IForestryPacketClient {
public PacketHabitatBiomePointer() {
}
public PacketHabitatBiomePointer(ChunkCoordinates coordinates) {
super(PacketIdClient.HABITAT_BIOME_POINTER, coordinates);
}
@Override
public void onPacketData(DataInputStreamForestry data, EntityPlayer player) throws IOException {
Proxies.render.setHabitatLocatorTexture(player, getCoordinates());
}
}
@@ -1,72 +0,0 @@
/*******************************************************************************
* 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.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import forestry.apiculture.gui.ContainerImprinter;
import forestry.apiculture.tiles.TileCandle;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.IPacketHandler;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketId;
import forestry.core.proxy.Proxies;
public class PacketHandlerApiculture implements IPacketHandler {
@Override
public boolean onPacketData(PacketId packetID, DataInputStreamForestry data, EntityPlayer player) throws IOException {
switch (packetID) {
case HABITAT_BIOME_POINTER: {
PacketCoordinates packet = new PacketCoordinates(data);
Proxies.common.setHabitatLocatorCoordinates(player, packet.getCoordinates());
return true;
}
case IMPRINT_SELECTION_GET: {
onImprintSelectionGet(player);
return true;
}
case CANDLE: {
PacketUpdateCandle updateCandle = new PacketUpdateCandle(data);
onCandleUpdate(updateCandle);
return true;
}
case BEE_LOGIC_ACTIVE: {
PacketBeekeepingLogicActive.onPacketData(data);
return true;
}
}
return false;
}
private static void onImprintSelectionGet(EntityPlayer playerEntity) {
if (!(playerEntity.openContainer instanceof ContainerImprinter)) {
return;
}
((ContainerImprinter) playerEntity.openContainer).sendSelection(playerEntity);
}
private static void onCandleUpdate(PacketUpdateCandle updateCandle) {
TileEntity tileEntity = updateCandle.getTarget(Proxies.common.getRenderWorld());
if (tileEntity instanceof TileCandle) {
((TileCandle) tileEntity).onPacketUpdate(updateCandle);
}
}
}
@@ -0,0 +1,42 @@
/*******************************************************************************
* 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.apiculture.network;
import java.io.IOException;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.inventory.Container;
import forestry.apiculture.gui.ContainerImprinter;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.PacketGuiSelect;
import forestry.core.network.PacketIdClient;
public class PacketImprintSelectionResponse extends PacketGuiSelect implements IForestryPacketClient {
public PacketImprintSelectionResponse() {
}
public PacketImprintSelectionResponse(int primaryIndex, int secondaryIndex) {
super(PacketIdClient.IMPRINT_SELECTION_RESPONSE, primaryIndex, secondaryIndex);
}
@Override
public void onPacketData(DataInputStreamForestry data, EntityPlayer player) throws IOException {
Container container = player.openContainer;
if (!(container instanceof ContainerImprinter)) {
return;
}
((ContainerImprinter) container).setSelection(this);
}
}
@@ -1,48 +0,0 @@
package forestry.apiculture.network;
import java.io.IOException;
import forestry.apiculture.tiles.TileCandle;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
import forestry.core.network.PacketCoordinates;
import forestry.core.network.PacketId;
public class PacketUpdateCandle extends PacketCoordinates {
private int colour;
private boolean lit;
public PacketUpdateCandle(DataInputStreamForestry data) throws IOException {
super(data);
}
public PacketUpdateCandle(TileCandle tileCandle) {
super(PacketId.CANDLE, tileCandle);
colour = tileCandle.getColour();
lit = tileCandle.isLit();
}
@Override
public void writeData(DataOutputStreamForestry data) throws IOException {
super.writeData(data);
data.writeInt(colour);
data.writeBoolean(lit);
}
@Override
public void readData(DataInputStreamForestry data) throws IOException {
super.readData(data);
colour = data.readInt();
lit = data.readBoolean();
}
public int getColour() {
return colour;
}
public boolean isLit() {
return lit;
}
}
@@ -10,17 +10,9 @@
******************************************************************************/
package forestry.apiculture.proxy;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import forestry.core.render.IBlockRenderer;
public class ProxyApiculture {
public void addBeeHiveFX(String texture, World world, ChunkCoordinates coordinates, int color) {
}
public void addBeeSwarmFX(String texture, World world, double xCoord, double yCoord, double zCoord, int color) {
}
public IBlockRenderer getRendererAnalyzer(String string) {
return null;
@@ -10,24 +10,16 @@
******************************************************************************/
package forestry.apiculture.proxy;
import net.minecraft.client.particle.EntityFX;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraftforge.client.MinecraftForgeClient;
import cpw.mods.fml.client.registry.RenderingRegistry;
import forestry.apiculture.entities.EntityBee;
import forestry.apiculture.entities.EntityFXBee;
import forestry.apiculture.render.ParticleRenderer;
import forestry.apiculture.render.RenderBeeEntity;
import forestry.apiculture.render.RenderBeeItem;
import forestry.core.config.ForestryItem;
import forestry.core.proxy.ProxyRenderClient;
import forestry.core.render.IBlockRenderer;
import forestry.core.render.RenderAnalyzer;
import forestry.core.render.TextureManager;
import forestry.plugins.PluginApiculture;
public class ProxyApicultureClient extends ProxyApiculture {
@@ -43,40 +35,6 @@ public class ProxyApicultureClient extends ProxyApiculture {
}
}
@Override
public void addBeeHiveFX(String icon, World world, ChunkCoordinates coordinates, int color) {
if (!ProxyRenderClient.shouldSpawnParticle(world)) {
return;
}
EntityFX fx = new EntityFXBee(world, coordinates.posX + 0.5D, coordinates.posY + 0.5D, coordinates.posZ + 0.5D, color);
fx.setParticleIcon(TextureManager.getInstance().getDefault(icon));
ParticleRenderer.getInstance().addEffect(fx);
}
@Override
public void addBeeSwarmFX(String icon, World world, double xCoord, double yCoord, double zCoord, int color) {
if (!ProxyRenderClient.shouldSpawnParticle(world)) {
return;
}
EntityFX fx;
if (world.rand.nextBoolean()) {
fx = new EntityFXBee(world, xCoord, yCoord, zCoord, color);
} else {
double spawnX = xCoord + world.rand.nextInt(4) - 2;
double spawnY = yCoord + world.rand.nextInt(4) - 2;
double spawnZ = zCoord + world.rand.nextInt(4) - 2;
fx = new EntityFXBee(world, spawnX, spawnY, spawnZ, color);
}
fx.setParticleIcon(TextureManager.getInstance().getDefault(icon));
ParticleRenderer.getInstance().addEffect(fx);
}
@Override
public IBlockRenderer getRendererAnalyzer(String gfxBase) {
return new RenderAnalyzer(gfxBase);
@@ -83,7 +83,7 @@ public class ModelAnalyzer extends ModelBase {
float factor = (float) (1.0 / 16.0);
Proxies.common.bindTexture(textures[0]);
Proxies.render.bindTexture(textures[0]);
pedestal.rotateAngleX = angle[0];
pedestal.rotateAngleY = angle[1];
@@ -98,13 +98,13 @@ public class ModelAnalyzer extends ModelBase {
tower1.rotateAngleX = angle[0];
tower1.rotateAngleY = angle[1];
tower1.rotateAngleZ = angle[2];
Proxies.common.bindTexture(textures[1]);
Proxies.render.bindTexture(textures[1]);
tower1.render(factor);
tower2.rotateAngleX = angle[0];
tower2.rotateAngleY = angle[1];
tower2.rotateAngleZ = angle[2];
Proxies.common.bindTexture(textures[2]);
Proxies.render.bindTexture(textures[2]);
tower2.render(factor);
GL11.glPopMatrix();
@@ -159,6 +159,6 @@ public class ParticleRenderer {
}
private boolean lazyAdd = false;
private final List<EntityFX> particles = new ArrayList<EntityFX>();
private final List<EntityFX> newParticles = new ArrayList<EntityFX>();
private final List<EntityFX> particles = new ArrayList<>();
private final List<EntityFX> newParticles = new ArrayList<>();
}
@@ -92,7 +92,7 @@ public class RenderBeeItem implements IItemRenderer {
float xPos = 1.0f; float yPos = 1.0f;
float width = 1f; float height = 1f;
Proxies.common.bindTexture(SpriteSheet.ITEMS);
Proxies.render.bindTexture(SpriteSheet.ITEMS);
Tessellator tessellator = Tessellator.instance;
tessellator.startDrawingQuads();
tessellator.addVertexWithUV((double)(xPos + 0), (double)(yPos + height), 0f, (double)background.getMinU(), (double)background.getMaxV());
@@ -102,10 +102,10 @@ public abstract class TileAbstractBeeHousing extends TileBase implements IBeeHou
float upSpread = (worldObj.rand.nextFloat() * 6F) / 16F;
fxY += upSpread;
Proxies.common.addEntitySwarmFX(worldObj, (fxX - distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ - distanceFromCenter));
Proxies.common.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ + distanceFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX - distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + distanceFromCenter), fxY, (fxZ + leftRightSpreadFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ - distanceFromCenter));
Proxies.render.addEntitySwarmFX(worldObj, (fxX + leftRightSpreadFromCenter), fxY, (fxZ + distanceFromCenter));
}
}
}
@@ -40,6 +40,7 @@ public class TileApiaristChest extends TileNaturalistChest {
checkedForLegacyBlock = true;
}
super.updateServerSide();
}
private void migrateFromLegacyBlock() {
@@ -70,7 +70,7 @@ public class TileApiary extends TileAbstractBeeHousing {
@Override
public Collection<IBeeModifier> getBeeModifiers() {
List<IBeeModifier> beeModifiers = new ArrayList<IBeeModifier>();
List<IBeeModifier> beeModifiers = new ArrayList<>();
beeModifiers.add(beeModifier);
@@ -159,7 +159,7 @@ public class TileApiary extends TileAbstractBeeHousing {
}
public Collection<IHiveFrame> getFrames() {
Collection<IHiveFrame> hiveFrames = new ArrayList<IHiveFrame>(SLOT_FRAMES_COUNT);
Collection<IHiveFrame> hiveFrames = new ArrayList<>(SLOT_FRAMES_COUNT);
for (int i = SLOT_FRAMES_1; i < SLOT_FRAMES_1 + SLOT_FRAMES_COUNT; i++) {
ItemStack stackInSlot = getStackInSlot(i);
@@ -181,7 +181,7 @@ public class TileApiary extends TileAbstractBeeHousing {
@Optional.Method(modid = "BuildCraftAPI|statements")
@Override
public Collection<ITriggerExternal> getExternalTriggers(ForgeDirection side, TileEntity tile) {
LinkedList<ITriggerExternal> res = new LinkedList<ITriggerExternal>();
LinkedList<ITriggerExternal> res = new LinkedList<>();
res.add(ApicultureTriggers.missingQueen);
res.add(ApicultureTriggers.missingDrone);
res.add(ApicultureTriggers.noFrames);
@@ -14,7 +14,7 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.network.Packet;
import net.minecraft.tileentity.TileEntity;
import forestry.apiculture.network.PacketUpdateCandle;
import forestry.apiculture.network.PacketCandleUpdate;
public class TileCandle extends TileEntity {
private int colour;
@@ -28,13 +28,13 @@ public class TileCandle extends TileEntity {
@Override
public Packet getDescriptionPacket() {
PacketUpdateCandle updateCandle = new PacketUpdateCandle(this);
PacketCandleUpdate updateCandle = new PacketCandleUpdate(this);
return updateCandle.getPacket();
}
public void onPacketUpdate(PacketUpdateCandle updateCandle) {
colour = updateCandle.getColour();
lit = updateCandle.isLit();
public void onPacketUpdate(int colour, boolean isLit) {
this.colour = colour;
this.lit = isLit;
}
@Override
@@ -343,7 +343,7 @@ public class ComponentVillageBeeHouse extends StructureVillagePieces.House1 {
EnumHumidity biomeHumidity = EnumHumidity.getFromValue(biome.rainfall);
// Add bees that can live in this environment
List<IBeeGenome> valid = new ArrayList<IBeeGenome>();
List<IBeeGenome> valid = new ArrayList<>();
for (IBeeGenome genome : candidates) {
if (checkBiomeHazard(genome, biomeTemperature, biomeHumidity)) {
valid.add(genome);
@@ -25,7 +25,7 @@ import forestry.api.core.EnumTemperature;
public final class Hive {
private final IHiveDescription hiveDescription;
private final List<IHiveDrop> drops = new ArrayList<IHiveDrop>();
private final List<IHiveDrop> drops = new ArrayList<>();
public Hive(IHiveDescription hiveDescription) {
if (hiveDescription == null) {
@@ -19,7 +19,7 @@ import net.minecraft.world.World;
public class HiveGenGround extends HiveGen {
private final Set<Material> groundMaterials = new HashSet<Material>();
private final Set<Material> groundMaterials = new HashSet<>();
public HiveGenGround(Block... groundBlocks) {
for (Block block : groundBlocks) {
@@ -22,7 +22,7 @@ import forestry.api.apiculture.hives.IHiveRegistry;
public class HiveRegistry implements IHiveRegistry {
private final Map<String, Hive> hives = new HashMap<String, Hive>();
private final Map<String, Hive> hives = new HashMap<>();
@Override
public void registerHive(String hiveName, IHiveDescription hiveDescription) {
@@ -50,7 +50,7 @@ public class HiveRegistry implements IHiveRegistry {
}
public List<Hive> getHives() {
return new ArrayList<Hive>(hives.values());
return new ArrayList<>(hives.values());
}
public List<IHiveDrop> getDrops(String hiveName) {
@@ -37,7 +37,7 @@ public class FruitProviderNone implements IFruitProvider {
}
}
private static final HashMap<String, OverlayType> overlayTypes = new HashMap<String, OverlayType>();
private static final HashMap<String, OverlayType> overlayTypes = new HashMap<>();
static {
overlayTypes.put("berries", new OverlayType("berries", (short) 1000));
@@ -127,7 +127,7 @@ public class FruitProviderNone implements IFruitProvider {
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
if (overlay != null) {
TextureManager.getInstance().registerTexUID(register, overlay.texUID, "leaves/fruits." + overlay.ident);
TextureManager.registerTexUID(register, overlay.texUID, "leaves/fruits." + overlay.ident);
}
}
}
@@ -36,10 +36,21 @@ public class FruitProviderPod extends FruitProviderNone {
PAPAYA((short) 2013, (short) 2014, (short) 2015);//, COCONUT((short)2016, (short)2017, (short)2018);
public final short[] uids;
EnumPodType(short stage1, short stage2, short stage3) {
uids = new short[]{stage1, stage2, stage3};
}
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
if (this == COCOA) {
return;
}
String name = toString().toLowerCase(Locale.ENGLISH);
for (int i = 0; i < 3; i++) {
TextureManager.registerTexUID(register, uids[i], "pods/" + name + "." + i);
}
}
}
private static final ItemStack[] DUMMY = new ItemStack[0];
@@ -98,13 +109,7 @@ public class FruitProviderPod extends FruitProviderNone {
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
if (type == EnumPodType.COCOA) {
return;
}
TextureManager.getInstance().registerTexUID(register, type.uids[0], "pods/" + type.toString().toLowerCase(Locale.ENGLISH) + ".0");
TextureManager.getInstance().registerTexUID(register, type.uids[1], "pods/" + type.toString().toLowerCase(Locale.ENGLISH) + ".1");
TextureManager.getInstance().registerTexUID(register, type.uids[2], "pods/" + type.toString().toLowerCase(Locale.ENGLISH) + ".2");
type.registerIcons(register);
}
}
@@ -28,7 +28,7 @@ import forestry.api.genetics.IFruitFamily;
*/
public class FruitProviderRandom extends FruitProviderNone {
private final Map<ItemStack, Float> products = new HashMap<ItemStack, Float>();
private final Map<ItemStack, Float> products = new HashMap<>();
private int colour = 0xffffff;
public FruitProviderRandom(String key, IFruitFamily family, ItemStack product, float modifier) {
@@ -48,7 +48,7 @@ public class FruitProviderRandom extends FruitProviderNone {
@Override
public ItemStack[] getFruits(ITreeGenome genome, World world, int x, int y, int z, int ripeningTime) {
ArrayList<ItemStack> product = new ArrayList<ItemStack>();
ArrayList<ItemStack> product = new ArrayList<>();
float modeYieldMod = TreeManager.treeRoot.getTreekeepingMode(world).getYieldModifier(genome, 1f);
@@ -25,7 +25,7 @@ import forestry.api.genetics.IFruitFamily;
public class FruitProviderRipening extends FruitProviderNone {
private final Map<ItemStack, Float> products = new HashMap<ItemStack, Float>();
private final Map<ItemStack, Float> products = new HashMap<>();
private int colourCallow = 0xffffff;
@@ -63,7 +63,7 @@ public class FruitProviderRipening extends FruitProviderNone {
@Override
public ItemStack[] getFruits(ITreeGenome genome, World world, int x, int y, int z, int ripeningTime) {
ArrayList<ItemStack> product = new ArrayList<ItemStack>();
ArrayList<ItemStack> product = new ArrayList<>();
float stage = getRipeningStage(ripeningTime);
if (stage < 0.5f) {
@@ -14,7 +14,7 @@ import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.arboriculture.genetics.TreeHelper;
import forestry.api.arboriculture.TreeManager;
import forestry.arboriculture.gui.GuiTreealyzer;
import forestry.arboriculture.items.ItemTreealyzer.TreealyzerInventory;
import forestry.core.GuiHandlerBase;
@@ -34,7 +34,7 @@ public class GuiHandlerArboriculture extends GuiHandlerBase {
switch (GuiId.values()[cleanId]) {
case ArboristChestGUI:
return this.getNaturalistChestContainer(TreeHelper.UID, player, world, x, y, z, decodeGuiData(id));
return this.getNaturalistChestContainer(TreeManager.treeRoot, player, world, x, y, z, decodeGuiData(id));
case TreealyzerGUI:
ItemStack equipped = player.getCurrentEquippedItem();
@@ -62,7 +62,7 @@ public class GuiHandlerArboriculture extends GuiHandlerBase {
switch (GuiId.values()[cleanId]) {
case ArboristChestGUI:
return this.getNaturalistChestGui(TreeHelper.UID, player, world, x, y, z, decodeGuiData(id));
return this.getNaturalistChestGui(TreeManager.treeRoot, player, world, x, y, z, decodeGuiData(id));
case TreealyzerGUI:
ItemStack equipped = player.getCurrentEquippedItem();
@@ -20,16 +20,16 @@ import forestry.api.arboriculture.EnumWoodType;
import forestry.api.arboriculture.IWoodItemAccess;
public class WoodItemAccess implements IWoodItemAccess {
private static final EnumMap<EnumWoodType, ItemStack> logs = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> logsFireproof = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> planks = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> planksFireproof = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> slabs = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> slabsFireproof = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> fences = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> fencesFireproof = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> stairs = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> stairsFireproof = new EnumMap<EnumWoodType, ItemStack>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> logs = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> logsFireproof = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> planks = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> planksFireproof = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> slabs = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> slabsFireproof = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> fences = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> fencesFireproof = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> stairs = new EnumMap<>(EnumWoodType.class);
private static final EnumMap<EnumWoodType, ItemStack> stairsFireproof = new EnumMap<>(EnumWoodType.class);
private static ItemStack getStack(EnumWoodType woodType, Block block) {
NBTTagCompound woodNBT = new NBTTagCompound();
@@ -18,6 +18,7 @@ import net.minecraft.block.BlockFence;
import net.minecraft.block.BlockFenceGate;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -41,10 +42,12 @@ import forestry.api.core.Tabs;
import forestry.arboriculture.IWoodTyped;
import forestry.arboriculture.render.IconProviderWood;
import forestry.arboriculture.tiles.TileWood;
import forestry.core.render.ParticleHelper;
import forestry.plugins.PluginArboriculture;
public class BlockArbFence extends BlockFence implements IWoodTyped, ITileEntityProvider {
private final ParticleHelper.Callback particleCallback;
private final boolean fireproof;
public BlockArbFence(boolean fireproof) {
@@ -57,6 +60,8 @@ public class BlockArbFence extends BlockFence implements IWoodTyped, ITileEntity
setHarvestLevel("axe", 0);
setStepSound(soundTypeWood);
setCreativeTab(Tabs.tabArboriculture);
this.particleCallback = new ParticleHelper.DefaultCallback(this);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -101,7 +106,7 @@ public class BlockArbFence extends BlockFence implements IWoodTyped, ITileEntity
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileWood wood = BlockWood.getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
EnumWoodType woodType = wood.getWoodType();
return IconProviderWood.getPlankIcon(woodType);
}
@@ -120,30 +125,37 @@ public class BlockArbFence extends BlockFence implements IWoodTyped, ITileEntity
@Override
public final ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
ItemStack itemStack = new ItemStack(this);
NBTTagCompound nbt = BlockWood.getTagCompound(world, x, y, z);
NBTTagCompound nbt = TileWood.getTagCompound(world, x, y, z);
itemStack.setTagCompound(nbt);
return itemStack;
}
@Override
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z) {
return TileWood.blockRemovedByPlayer(this, world, player, x, y, z);
}
/* DROP HANDLING */
// Hack: When harvesting we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<>();
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
world.removeTileEntity(x, y, z);
super.breakBlock(world, x, y, z, block, meta);
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer playerProfile) {
drops.set(TileWood.getDrops(this, world, x, y, z));
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = drops.get();
drops.remove();
// not harvested, get drops normally
if (ret == null) {
ret = TileWood.getDrops(this, world, x, y, z);
}
return ret;
}
@Override
public final float getBlockHardness(World world, int x, int y, int z) {
TileWood wood = BlockWood.getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
if (wood == null) {
return EnumWoodType.DEFAULT_HARDNESS;
}
@@ -174,4 +186,17 @@ public class BlockArbFence extends BlockFence implements IWoodTyped, ITileEntity
public boolean isFireproof() {
return fireproof;
}
/* Particles */
@SideOnly(Side.CLIENT)
@Override
public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
return ParticleHelper.addHitEffects(worldObj, this, target, effectRenderer, particleCallback);
}
@SideOnly(Side.CLIENT)
@Override
public boolean addDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
return ParticleHelper.addDestroyEffects(worldObj, this, x, y, z, meta, effectRenderer, particleCallback);
}
}
@@ -16,6 +16,7 @@ import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.block.BlockStairs;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -37,9 +38,11 @@ import forestry.api.core.Tabs;
import forestry.arboriculture.IWoodTyped;
import forestry.arboriculture.render.IconProviderWood;
import forestry.arboriculture.tiles.TileWood;
import forestry.core.render.ParticleHelper;
public class BlockArbStairs extends BlockStairs implements IWoodTyped, ITileEntityProvider {
private final ParticleHelper.Callback particleCallback;
private final boolean fireproof;
public BlockArbStairs(Block par2Block, boolean fireproof) {
@@ -51,6 +54,8 @@ public class BlockArbStairs extends BlockStairs implements IWoodTyped, ITileEnti
setHardness(2.0F);
setResistance(5.0F);
setHarvestLevel("axe", 0);
this.particleCallback = new ParticleHelper.DefaultCallback(this);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -62,26 +67,33 @@ public class BlockArbStairs extends BlockStairs implements IWoodTyped, ITileEnti
}
}
@Override
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z) {
return TileWood.blockRemovedByPlayer(this, world, player, x, y, z);
}
/* DROP HANDLING */
// Hack: When harvesting we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<>();
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
world.removeTileEntity(x, y, z);
super.breakBlock(world, x, y, z, block, meta);
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer playerProfile) {
drops.set(TileWood.getDrops(this, world, x, y, z));
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = drops.get();
drops.remove();
// not harvested, get drops normally
if (ret == null) {
ret = TileWood.getDrops(this, world, x, y, z);
}
return ret;
}
@Override
public ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
ItemStack itemStack = super.getPickBlock(target, world, x, y, z);
NBTTagCompound stairsNBT = BlockWood.getTagCompound(world, x, y, z);
NBTTagCompound stairsNBT = TileWood.getTagCompound(world, x, y, z);
itemStack.setTagCompound(stairsNBT);
return itemStack;
}
@@ -102,7 +114,7 @@ public class BlockArbStairs extends BlockStairs implements IWoodTyped, ITileEnti
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileWood wood = BlockWood.getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
EnumWoodType woodType = wood.getWoodType();
return IconProviderWood.getPlankIcon(woodType);
}
@@ -126,4 +138,17 @@ public class BlockArbStairs extends BlockStairs implements IWoodTyped, ITileEnti
public TileEntity createNewTileEntity(World p_149915_1_, int p_149915_2_) {
return new TileWood();
}
/* Particles */
@SideOnly(Side.CLIENT)
@Override
public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
return ParticleHelper.addHitEffects(worldObj, this, target, effectRenderer, particleCallback);
}
@SideOnly(Side.CLIENT)
@Override
public boolean addDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
return ParticleHelper.addDestroyEffects(worldObj, this, x, y, z, meta, effectRenderer, particleCallback);
}
}
@@ -48,6 +48,7 @@ import forestry.api.arboriculture.ITree;
import forestry.api.arboriculture.TreeManager;
import forestry.api.core.IToolScoop;
import forestry.api.core.Tabs;
import forestry.api.lepidopterology.ButterflyManager;
import forestry.api.lepidopterology.EnumFlutterType;
import forestry.api.lepidopterology.IButterfly;
import forestry.arboriculture.LeafDecayHelper;
@@ -58,7 +59,6 @@ import forestry.arboriculture.tiles.TileLeaves;
import forestry.core.proxy.Proxies;
import forestry.core.utils.ItemStackUtil;
import forestry.plugins.PluginArboriculture;
import forestry.plugins.PluginLepidopterology;
public class BlockForestryLeaves extends BlockNewLeaf implements ITileEntityProvider, IGrowable {
@@ -103,7 +103,7 @@ public class BlockForestryLeaves extends BlockNewLeaf implements ITileEntityProv
/* DROP HANDLING */
// Hack: When harvesting leaves we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<ArrayList<ItemStack>>();
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<>();
@Override
public void onBlockHarvested(World world, int x, int y, int z, int metadata, EntityPlayer player) {
@@ -144,7 +144,7 @@ public class BlockForestryLeaves extends BlockNewLeaf implements ITileEntityProv
}
private static ArrayList<ItemStack> getLeafDrop(World world, @Nullable GameProfile playerProfile, int x, int y, int z, float saplingModifier, int fortune) {
ArrayList<ItemStack> prod = new ArrayList<ItemStack>();
ArrayList<ItemStack> prod = new ArrayList<>();
TileLeaves tile = getLeafTile(world, x, y, z);
if (tile == null || tile.getTree() == null || tile.isDecorative()) {
@@ -340,7 +340,7 @@ public class BlockForestryLeaves extends BlockNewLeaf implements ITileEntityProv
TileEntity tile = world.getTileEntity(x, y, z);
IButterfly caterpillar = tile instanceof TileLeaves ? ((TileLeaves) tile).getCaterpillar() : null;
if (heldItem != null && (heldItem.getItem() instanceof IToolScoop) && caterpillar != null) {
ItemStack butterfly = PluginLepidopterology.butterflyInterface.getMemberStack(caterpillar, EnumFlutterType.CATERPILLAR.ordinal());
ItemStack butterfly = ButterflyManager.butterflyRoot.getMemberStack(caterpillar, EnumFlutterType.CATERPILLAR.ordinal());
ItemStackUtil.dropItemStackAsEntity(butterfly, world, x, y, z);
((TileLeaves) tile).setCaterpillar(null);
return true;
@@ -80,7 +80,7 @@ public class BlockFruitPod extends BlockCocoa {
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
return new ArrayList<>();
}
@Override
@@ -111,7 +111,7 @@ public class BlockFruitPod extends BlockCocoa {
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
defaultIcon = TextureManager.getInstance().registerTex(register, "pods/papaya.2");
defaultIcon = TextureManager.registerTex(register, "pods/papaya.2");
}
@SideOnly(Side.CLIENT)
@@ -45,6 +45,7 @@ public class BlockLog extends BlockWood {
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
super.breakBlock(world, x, y, z, block, meta);
byte radius = 4;
int boundary = radius + 1;
@@ -101,7 +102,7 @@ public class BlockLog extends BlockWood {
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
int meta = world.getBlockMetadata(x, y, z);
TileWood wood = getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
EnumWoodType type = wood.getWoodType();
if (type == null) {
return getIcon(side, meta);
@@ -50,7 +50,7 @@ public class BlockPlanks extends BlockWood {
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileWood wood = getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
EnumWoodType woodType = wood.getWoodType();
return IconProviderWood.getPlankIcon(woodType);
}
@@ -89,7 +89,7 @@ public class BlockSapling extends BlockTreeContainer implements IGrowable {
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
defaultIcon = TextureManager.getInstance().registerTex(register, "germlings/sapling.treeBalsa");
defaultIcon = TextureManager.registerTex(register, "germlings/sapling.treeBalsa");
for (IAllele allele : AlleleManager.alleleRegistry.getRegisteredAlleles().values()) {
if (allele instanceof IAlleleTreeSpecies) {
@@ -150,7 +150,7 @@ public class BlockSapling extends BlockTreeContainer implements IGrowable {
/* REMOVING */
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
return new ArrayList<>();
}
@Override
@@ -17,6 +17,7 @@ import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
@@ -41,9 +42,11 @@ import forestry.api.core.Tabs;
import forestry.arboriculture.IWoodTyped;
import forestry.arboriculture.render.IconProviderWood;
import forestry.arboriculture.tiles.TileWood;
import forestry.core.render.ParticleHelper;
public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyped, ITileEntityProvider {
private final ParticleHelper.Callback particleCallback;
private final boolean fireproof;
public BlockSlab(boolean fireproof) {
@@ -57,6 +60,8 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
setResistance(5.0F);
setStepSound(soundTypeWood);
setHarvestLevel("axe", 0);
this.particleCallback = new ParticleHelper.DefaultCallback(this);
}
@Override
@@ -80,7 +85,7 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
@Override
public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
TileWood wood = BlockWood.getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
EnumWoodType woodType = wood.getWoodType();
return IconProviderWood.getPlankIcon(woodType);
}
@@ -117,30 +122,37 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
@Override
public final ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
ItemStack itemStack = new ItemStack(this);
NBTTagCompound nbt = BlockWood.getTagCompound(world, x, y, z);
NBTTagCompound nbt = TileWood.getTagCompound(world, x, y, z);
itemStack.setTagCompound(nbt);
return itemStack;
}
@Override
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z) {
return TileWood.blockRemovedByPlayer(this, world, player, x, y, z);
}
/* DROP HANDLING */
// Hack: When harvesting we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<>();
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
world.removeTileEntity(x, y, z);
super.breakBlock(world, x, y, z, block, meta);
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer playerProfile) {
drops.set(TileWood.getDrops(this, world, x, y, z));
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = drops.get();
drops.remove();
// not harvested, get drops normally
if (ret == null) {
ret = TileWood.getDrops(this, world, x, y, z);
}
return ret;
}
@Override
public final float getBlockHardness(World world, int x, int y, int z) {
TileWood wood = BlockWood.getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
if (wood == null) {
return EnumWoodType.DEFAULT_HARDNESS;
}
@@ -183,4 +195,17 @@ public class BlockSlab extends net.minecraft.block.BlockSlab implements IWoodTyp
public Item getItem(World world, int x, int y, int z) {
return Item.getItemFromBlock(this);
}
/* Particles */
@SideOnly(Side.CLIENT)
@Override
public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
return ParticleHelper.addHitEffects(worldObj, this, target, effectRenderer, particleCallback);
}
@SideOnly(Side.CLIENT)
@Override
public boolean addDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
return ParticleHelper.addDestroyEffects(worldObj, this, x, y, z, meta, effectRenderer, particleCallback);
}
}
@@ -15,6 +15,7 @@ import java.util.ArrayList;
import net.minecraft.block.Block;
import net.minecraft.block.ITileEntityProvider;
import net.minecraft.block.material.Material;
import net.minecraft.client.particle.EffectRenderer;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
@@ -35,10 +36,11 @@ import forestry.api.core.Tabs;
import forestry.arboriculture.IWoodTyped;
import forestry.arboriculture.render.IconProviderWood;
import forestry.arboriculture.tiles.TileWood;
import forestry.core.tiles.TileUtil;
import forestry.core.render.ParticleHelper;
public abstract class BlockWood extends Block implements ITileEntityProvider, IWoodTyped {
private final ParticleHelper.Callback particleCallback;
private final String blockKind;
private final boolean fireproof;
@@ -49,6 +51,8 @@ public abstract class BlockWood extends Block implements ITileEntityProvider, IW
setStepSound(soundTypeWood);
setCreativeTab(Tabs.tabArboriculture);
particleCallback = new ParticleHelper.DefaultCallback(this);
}
@Override
@@ -61,21 +65,6 @@ public abstract class BlockWood extends Block implements ITileEntityProvider, IW
return fireproof;
}
public static TileWood getWoodTile(IBlockAccess world, int x, int y, int z) {
return TileUtil.getTile(world, x, y, z, TileWood.class);
}
protected static NBTTagCompound getTagCompound(IBlockAccess world, int x, int y, int z) {
TileWood wood = getWoodTile(world, x, y, z);
NBTTagCompound nbttagcompound = new NBTTagCompound();
if (wood == null) {
return nbttagcompound;
}
EnumWoodType woodType = wood.getWoodType();
woodType.saveToCompound(nbttagcompound);
return nbttagcompound;
}
@SideOnly(Side.CLIENT)
@Override
public final void registerBlockIcons(IIconRegister register) {
@@ -90,30 +79,37 @@ public abstract class BlockWood extends Block implements ITileEntityProvider, IW
@Override
public final ItemStack getPickBlock(MovingObjectPosition target, World world, int x, int y, int z) {
ItemStack itemStack = new ItemStack(this);
NBTTagCompound nbt = getTagCompound(world, x, y, z);
NBTTagCompound nbt = TileWood.getTagCompound(world, x, y, z);
itemStack.setTagCompound(nbt);
return itemStack;
}
@Override
public boolean removedByPlayer(World world, EntityPlayer player, int x, int y, int z) {
return TileWood.blockRemovedByPlayer(this, world, player, x, y, z);
}
/* DROP HANDLING */
// Hack: When harvesting we need to get the drops in onBlockHarvested,
// because Mojang destroys the block and tile before calling getDrops.
private final ThreadLocal<ArrayList<ItemStack>> drops = new ThreadLocal<>();
@Override
public void breakBlock(World world, int x, int y, int z, Block block, int meta) {
world.removeTileEntity(x, y, z);
super.breakBlock(world, x, y, z, block, meta);
public void onBlockHarvested(World world, int x, int y, int z, int meta, EntityPlayer playerProfile) {
drops.set(TileWood.getDrops(this, world, x, y, z));
}
@Override
public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
return new ArrayList<ItemStack>();
ArrayList<ItemStack> ret = drops.get();
drops.remove();
// not harvested, get drops normally
if (ret == null) {
ret = TileWood.getDrops(this, world, x, y, z);
}
return ret;
}
@Override
public final float getBlockHardness(World world, int x, int y, int z) {
TileWood wood = getWoodTile(world, x, y, z);
TileWood wood = TileWood.getWoodTile(world, x, y, z);
if (wood == null) {
return EnumWoodType.DEFAULT_HARDNESS;
}
@@ -138,4 +134,16 @@ public abstract class BlockWood extends Block implements ITileEntityProvider, IW
@SideOnly(Side.CLIENT)
public abstract IIcon getIcon(IBlockAccess world, int x, int y, int z, int side);
/* Particles */
@SideOnly(Side.CLIENT)
@Override
public boolean addHitEffects(World worldObj, MovingObjectPosition target, EffectRenderer effectRenderer) {
return ParticleHelper.addHitEffects(worldObj, this, target, effectRenderer, particleCallback);
}
@SideOnly(Side.CLIENT)
@Override
public boolean addDestroyEffects(World worldObj, int x, int y, int z, int meta, EffectRenderer effectRenderer) {
return ParticleHelper.addDestroyEffects(worldObj, this, x, y, z, meta, effectRenderer, particleCallback);
}
}
@@ -73,7 +73,7 @@ public final class CommandTreeSpawn extends SubCommand {
}
private static String[] getSpecies() {
List<String> species = new ArrayList<String>();
List<String> species = new ArrayList<>();
for (IAllele allele : AlleleManager.alleleRegistry.getRegisteredAlleles().values()) {
if (allele instanceof IAlleleTreeSpecies) {
Loaded 100 of 646 files, more files were not shown because too many files have changed in this diff. Show more