Compare commits

..
8 Commits
Author SHA1 Message Date
mezz 9c1b7927d6 bump version to 4.0.11 2015-10-21 13:20:32 -07:00
Nirek-K bf3ac85d88 Update/Include support for MagicalCrops Beta 5
(cherry picked from commit 2725b19f95)
2015-10-21 13:18:59 -07:00
mezz d09b663ba6 Fix #904 Crash from using Infuser
(cherry picked from commit 6d6af6b043)
2015-10-21 13:18:50 -07:00
mezz 3beacb998d Fix tree leaves have default genetics instead of sapling's genetics
(cherry picked from commit 2a1b8fbc68)
2015-10-21 13:18:37 -07:00
mezz 52e7f95534 Fix #892 Forestry Workbench destroys TFC Tools in Crafts.
(cherry picked from commit 3e0cf7c302)
2015-10-21 13:18:14 -07:00
mezz cc4cc558b8 Fix #893 Shift-Removing items from a machine prefers the hotbar
(cherry picked from commit 099e6f47e8)
2015-10-16 11:56:56 -07:00
mezz 956aaca10c Fix #887 Particles are wrong when breaking wood items
(cherry picked from commit 140643bec3)
2015-10-14 12:21:08 -07:00
mezz 23f7c9c7d9 Bump version to 4.0.10 for 4.0 branch 2015-10-14 01:58:50 -07:00
961 changed files with 22804 additions and 27186 deletions

No files matched your search

+1 -1
View File
@@ -16,7 +16,7 @@
!/LICENSE.txt
!/license-header.txt
!/README.md
!/gradle.properties
!/application.properties
!/build.gradle
!/build.xml
!/gradlew
+5
View File
@@ -0,0 +1,5 @@
mcversion=1.7.10
forgeversion=10.13.3.1370-1.7.10
version_major=4
version_minor=0
version_patch=11
+70 -26
View File
@@ -21,6 +21,8 @@ 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
@@ -44,8 +46,6 @@ minecraft {
replace '@VERSION@', project.version
replace '@BUILD_NUMBER@', getBuildNumber()
srgExtra "PK: chylex/javacheck forestry/shade/javacheck"
}
sourceSets {
@@ -73,22 +73,16 @@ 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.790-experimental:api'
api name: "buildcraft", version: "7.1.12", classifier: "api"
api 'net.industrial-craft:industrialcraft-2:2.2.713-experimental:api'
api name: "buildcraft", version: "7.0.25", classifier: "api"
// http://files.minecraftforge.net/CodeChickenLib/
compile "codechicken:CodeChickenLib:1.7.10-1.1.3.140:dev"
@@ -98,9 +92,6 @@ 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'
}
@@ -143,6 +134,45 @@ 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"
@@ -154,14 +184,8 @@ jar {
into ('cofh/api') {
from project.apiRedstoneFlux + "/LICENSE - LGPLv3.txt"
}
into ('invtweaks/api') {
from "./src/main/java/invtweaks/LICENSE.txt"
}
configurations.shade.each{ dep ->
from(project.zipTree(dep)){
exclude 'META-INF', 'META-INF/**', 'mcmod.info'
}
into ('buildcraft/api') {
from "./src/main/java/buildcraft/LICENSE-API"
}
}
@@ -175,10 +199,6 @@ 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') {
@@ -220,9 +240,20 @@ task sourceJar(type: Jar, dependsOn: 'classes') {
classifier = 'sources'
}
task release (dependsOn: [mainJar, apiJar, devJar, sourceJar]) {
task releaseInit << {
println '*************************************************************'
println 'This build will be version: ' + rootProject.version
println '*************************************************************'
}
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
@@ -251,6 +282,19 @@ 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"
}
-5
View File
@@ -1,5 +0,0 @@
mcversion=1.7.10
forgeversion=10.13.4.1566-1.7.10
version_major=4
version_minor=2
version_patch=10
+1 -1
Submodule lang updated: cb5900228e...2843053395.
@@ -1,21 +1,21 @@
## Inventory Tweaks Mod license (MIT)
Copyright (c) 2011-2013 Marwane Kalam-Alami
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.
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.
@@ -0,0 +1,40 @@
/**
* 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);
}
@@ -0,0 +1,11 @@
/**
* 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;
+63 -56
View File
@@ -11,43 +11,41 @@
package forestry;
import java.io.File;
import java.util.HashMap;
import java.util.Map;
import net.minecraft.block.Block;
import net.minecraft.item.Item;
import net.minecraftforge.common.MinecraftForge;
import cpw.mods.fml.common.FMLCommonHandler;
import cpw.mods.fml.common.Mod;
import cpw.mods.fml.common.Mod.EventHandler;
import cpw.mods.fml.common.SidedProxy;
import cpw.mods.fml.common.event.FMLInitializationEvent;
import cpw.mods.fml.common.event.FMLInterModComms;
import cpw.mods.fml.common.event.FMLInterModComms.IMCEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent;
import cpw.mods.fml.common.event.FMLMissingMappingsEvent.MissingMapping;
import cpw.mods.fml.common.event.FMLPostInitializationEvent;
import cpw.mods.fml.common.event.FMLPreInitializationEvent;
import cpw.mods.fml.common.event.FMLServerStartingEvent;
import cpw.mods.fml.common.network.NetworkRegistry;
import cpw.mods.fml.common.registry.GameRegistry;
import cpw.mods.fml.common.registry.GameRegistry.Type;
import forestry.api.core.ForestryAPI;
import forestry.core.EventHandlerCore;
import forestry.core.config.Config;
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.GameMode;
import forestry.core.config.ForestryItem;
import forestry.core.config.Version;
import forestry.core.errors.EnumErrorCode;
import forestry.core.errors.ErrorStateRegistry;
import forestry.core.gui.GuiHandler;
import forestry.core.multiblock.MultiblockEventHandler;
import forestry.core.network.PacketHandler;
import forestry.core.proxy.Proxies;
import forestry.core.utils.Log;
import forestry.core.utils.StringUtil;
import forestry.core.worldgen.WorldGenerator;
import forestry.plugins.PluginManager;
import forestry.core.utils.datastructures.FluidMap;
import forestry.core.utils.datastructures.ItemStackMap;
/**
* Forestry Minecraft Mod
@@ -59,7 +57,7 @@ import forestry.plugins.PluginManager;
name = "Forestry",
version = Version.VERSION,
guiFactory = "forestry.core.config.ForestryGuiConfigFactory",
dependencies = "required-after:Forge@[10.13.4.1566,);"
dependencies = "required-after:Forge@[10.13.0.1207,);"
+ "after:Buildcraft|Core@[6.1.7,);"
+ "after:ExtrabiomesXL;"
+ "after:BiomesOPlenty;"
@@ -72,70 +70,73 @@ public class Forestry {
public static Forestry instance;
private File configFolder;
public Forestry() {
ForestryAPI.instance = this;
ForestryAPI.forestryConstants = new Constants();
ForestryAPI.errorStateRegistry = new ErrorStateRegistry();
EnumErrorCode.init();
private static final Map<String, ForestryItem> mappedItems = new HashMap<>();
static {
mappedItems.put("Forestry:builderBackpack", ForestryItem.builderBackpack);
mappedItems.put("Forestry:builderBackpackT2", ForestryItem.builderBackpackT2);
mappedItems.put("Forestry:adventurerBackpack", ForestryItem.adventurerBackpack);
mappedItems.put("Forestry:adventurerBackpackT2", ForestryItem.adventurerBackpackT2);
mappedItems.put("Forestry:shortMead", ForestryItem.beverage);
mappedItems.put("Forestry:waterCan", ForestryItem.canWater);
mappedItems.put("Forestry:biofuelCan", ForestryItem.canEthanol);
mappedItems.put("Forestry:biomassCan", ForestryItem.canBiomass);
mappedItems.put("Forestry:bucketBiofuel", ForestryItem.bucketEthanol);
mappedItems.put("Forestry:refractoryBiofuel", ForestryItem.refractoryEthanol);
mappedItems.put("Forestry:waxCapsuleBiofuel", ForestryItem.waxCapsuleEthanol);
}
public Forestry() {
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")
public static ForestryCore core = new ForestryCore();
public static PacketHandler packetHandler;
@EventHandler
public void preInit(FMLPreInitializationEvent event) {
packetHandler = new PacketHandler();
// Register event handler
EventHandlerCore eventHandlerCore = new EventHandlerCore();
MinecraftForge.EVENT_BUS.register(eventHandlerCore);
FMLCommonHandler.instance().bus().register(eventHandlerCore);
MinecraftForge.EVENT_BUS.register(new MultiblockEventHandler());
configFolder = new File(event.getModConfigurationDirectory(), "forestry");
Config.load();
PluginManager.runSetup();
ForestryAPI.activeMode = new GameMode(Config.gameMode);
PluginManager.runPreInit();
core.preInit(event.getSourceFile(), this);
}
@EventHandler
public void init(FMLInitializationEvent event) {
// Register gui handler
NetworkRegistry.INSTANCE.registerGuiHandler(this, new GuiHandler());
PluginManager.runInit();
core.init(this);
}
@EventHandler
public void postInit(FMLPostInitializationEvent event) {
PluginManager.runPostInit();
// Register world generator
WorldGenerator worldGenerator = new WorldGenerator();
GameRegistry.registerWorldGenerator(worldGenerator, 0);
// Register tick handlers
Proxies.common.registerTickHandlers(worldGenerator);
// Handle IMC messages.
PluginManager.processIMCMessages(FMLInterModComms.fetchRuntimeMessages(ForestryAPI.instance));
core.postInit();
}
@EventHandler
public void serverStarting(FMLServerStartingEvent event) {
PluginManager.serverStarting(event.getServer());
core.serverStarting(event.getServer());
}
public File getConfigFolder() {
return configFolder;
}
/*@EventHandler
public void fingerprintWarning(FMLFingerprintViolationEvent event) {
Log.info("Fingerprint of the mod jar is invalid. The jar file was tampered with.");
FMLInterModComms.sendMessage("Railcraft", "securityViolation", "Fingerprint of jar file did not match.");
FMLInterModComms.sendMessage("Thaumcraft", "securityViolation", "Fingerprint of jar file did not match.");
FMLInterModComms.sendMessage("IC2", "securityViolation", "Fingerprint of jar file did not match.");
}*/
@EventHandler
public void processIMCMessages(IMCEvent event) {
PluginManager.processIMCMessages(event.getMessages());
core.processIMCMessages(event.getMessages());
}
@EventHandler
@@ -148,10 +149,16 @@ public class Forestry {
Log.warning("Remapping block " + mapping.name + " to " + StringUtil.cleanBlockName(block));
}
} else {
Item item = GameRegistry.findItem(Constants.MOD, StringUtil.cleanTags(mapping.name));
if (item != null) {
mapping.remap(item);
Log.warning("Remapping item " + mapping.name + " to " + StringUtil.cleanItemName(item));
Block block = GameRegistry.findBlock(Constants.MOD, StringUtil.cleanTags(mapping.name));
if (block != null) {
mapping.remap(Item.getItemFromBlock(block));
Log.warning("Remapping item " + mapping.name + " to " + StringUtil.cleanBlockName(block));
} else {
ForestryItem mappedItem = mappedItems.get(mapping.name);
if (mappedItem != null) {
mapping.remap(mappedItem.item());
Log.warning("Remapping item " + mapping.name + " to " + mappedItem.name());
}
}
}
}
@@ -1,21 +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;
import forestry.api.apiculture.DefaultBeeModifier;
import forestry.api.apiculture.IBeeGenome;
public class AlvearyBeeModifier extends DefaultBeeModifier {
@Override
public float getTerritoryModifier(IBeeGenome genome, float currentModifier) {
return 2.0f;
}
}
@@ -1,28 +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;
import forestry.api.apiculture.DefaultBeeListener;
import forestry.apiculture.inventory.IApiaryInventory;
public class ApiaryBeeListener extends DefaultBeeListener {
private final IApiary apiary;
public ApiaryBeeListener(IApiary apiary) {
this.apiary = apiary;
}
@Override
public void wearOutEquipment(int amount) {
IApiaryInventory apiaryInventory = apiary.getApiaryInventory();
apiaryInventory.wearOutFrames(apiary, amount);
}
}
@@ -1,21 +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;
import forestry.api.apiculture.DefaultBeeModifier;
import forestry.api.apiculture.IBeeGenome;
public class ApiaryBeeModifier extends DefaultBeeModifier {
@Override
public float getProductionModifier(IBeeGenome genome, float currentModifier) {
return 0.1f;
}
}
@@ -10,7 +10,6 @@
******************************************************************************/
package forestry.apiculture;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
@@ -21,7 +20,7 @@ import forestry.api.apiculture.IArmorApiaristHelper;
public class ArmorApiaristHelper implements IArmorApiaristHelper {
@Override
public boolean isArmorApiarist(ItemStack stack, EntityLivingBase entity, String cause, boolean doProtect) {
public boolean isArmorApiarist(ItemStack stack, EntityPlayer player, String cause, boolean doProtect) {
if (stack == null) {
return false;
}
@@ -32,38 +31,19 @@ public class ArmorApiaristHelper implements IArmorApiaristHelper {
}
IArmorApiarist armorApiarist = (IArmorApiarist) item;
try {
return armorApiarist.protectEntity(entity, stack, cause, doProtect);
} catch (Throwable ignored) { // protectEntity is new to the API and may not be implemented by the armor
if (entity instanceof EntityPlayer) {
return armorApiarist.protectPlayer((EntityPlayer) entity, stack, cause, doProtect);
} else {
return true; // fallback on assuming IArmorApiarist will protect the entity
}
}
return armorApiarist.protectPlayer(player, stack, cause, doProtect);
}
@Override
public int wearsItems(EntityLivingBase entity, String cause, boolean doProtect) {
public int wearsItems(EntityPlayer player, String cause, boolean doProtect) {
int count = 0;
for (int i = 1; i <= 4; i++) {
ItemStack armorItem = entity.getEquipmentInSlot(i);
if (isArmorApiarist(armorItem, entity, cause, doProtect)) {
for (ItemStack armorItem : player.inventory.armorInventory) {
if (isArmorApiarist(armorItem, player, cause, doProtect)) {
count++;
}
}
return count;
}
@Override
public boolean isArmorApiarist(ItemStack stack, EntityPlayer player, String cause, boolean doProtect) {
return isArmorApiarist(stack, (EntityLivingBase) player, cause, doProtect);
}
@Override
public int wearsItems(EntityPlayer player, String cause, boolean doProtect) {
return wearsItems((EntityLivingBase) player, cause, doProtect);
}
}
@@ -20,14 +20,14 @@ import forestry.core.inventory.InventoryAdapterRestricted;
import forestry.core.utils.InventoryUtil;
import forestry.core.utils.SlotUtil;
public class InventoryBeeHousing extends InventoryAdapterRestricted implements IBeeHousingInventory {
public class BeeHousingInventory extends InventoryAdapterRestricted implements IBeeHousingInventory {
public static final int SLOT_QUEEN = 0;
public static final int SLOT_DRONE = 1;
public static final int SLOT_PRODUCT_1 = 2;
public static final int SLOT_PRODUCT_COUNT = 7;
public InventoryBeeHousing(int size, IAccessHandler accessHandler) {
super(size, "Items", accessHandler);
public BeeHousingInventory(int size, String name, IAccessHandler accessHandler) {
super(size, name, accessHandler);
}
@Override
@@ -1,46 +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;
import forestry.api.apiculture.DefaultBeeModifier;
import forestry.api.apiculture.IBeeGenome;
public class BeehouseBeeModifier extends DefaultBeeModifier {
@Override
public float getTerritoryModifier(IBeeGenome genome, float currentModifier) {
return 1.0f;
}
@Override
public float getProductionModifier(IBeeGenome genome, float currentModifier) {
return 0.25f;
}
@Override
public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
return 0.0f;
}
@Override
public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
return 3.0f;
}
@Override
public float getFloweringModifier(IBeeGenome genome, float currentModifier) {
return 3.0f;
}
@Override
public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
return 0.0f;
}
}
@@ -17,12 +17,9 @@ import java.util.Collections;
import java.util.Set;
import java.util.Stack;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.nbt.NBTTagList;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
@@ -38,9 +35,9 @@ import forestry.api.core.IErrorLogic;
import forestry.api.core.IErrorState;
import forestry.api.genetics.IEffectData;
import forestry.api.genetics.IIndividual;
import forestry.apiculture.network.packets.PacketBeeLogicActive;
import forestry.apiculture.network.packets.PacketBeeLogicActiveEntity;
import forestry.apiculture.network.PacketBeekeepingLogicActive;
import forestry.core.config.Constants;
import forestry.core.config.ForestryItem;
import forestry.core.errors.EnumErrorCode;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
@@ -165,20 +162,20 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
IBeeHousingInventory beeInventory = housing.getBeeInventory();
boolean hasSpace = addPendingProducts(beeInventory, spawn);
errorLogic.setCondition(!hasSpace, EnumErrorCode.NO_SPACE_INVENTORY);
errorLogic.setCondition(!hasSpace, EnumErrorCode.NOSPACE);
ItemStack queenStack = beeInventory.getQueen();
EnumBeeType beeType = BeeManager.beeRoot.getType(queenStack);
// check if we're breeding
if (beeType == EnumBeeType.PRINCESS) {
if (ForestryItem.beePrincessGE.isItemEqual(queenStack)) {
boolean hasDrone = BeeManager.beeRoot.isDrone(beeInventory.getDrone());
errorLogic.setCondition(!hasDrone, EnumErrorCode.NO_DRONE);
errorLogic.setCondition(!hasDrone, EnumErrorCode.NODRONE);
setActive(false); // not active (no bee FX) when we are breeding
return !errorLogic.hasErrors();
}
if (beeType == EnumBeeType.QUEEN) {
if (ForestryItem.beeQueenGE.isItemEqual(queenStack)) {
if (!isQueenAlive(queenStack)) {
IBee dyingQueen = BeeManager.beeRoot.getMember(queenStack);
Collection<ItemStack> spawned = killQueen(dyingQueen, housing, beeListener);
@@ -194,9 +191,8 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
this.queenStack = queenStack;
}
if (errorLogic.setCondition(queen == null, EnumErrorCode.NO_QUEEN)) {
if (errorLogic.setCondition(queen == null, EnumErrorCode.NOQUEEN)) {
setActive(false);
beeProgress = 0;
return false;
}
@@ -206,7 +202,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
}
boolean hasFlowers = hasFlowersCache.hasFlowers(queen, housing);
errorLogic.setCondition(!hasFlowers, EnumErrorCode.NO_FLOWER);
errorLogic.setCondition(!hasFlowers, EnumErrorCode.NOFLOWER);
boolean canWork = !errorLogic.hasErrors();
setActive(canWork);
@@ -217,8 +213,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
public void doWork() {
IBeeHousingInventory beeInventory = housing.getBeeInventory();
ItemStack queenStack = beeInventory.getQueen();
EnumBeeType beeType = BeeManager.beeRoot.getType(queenStack);
if (beeType == EnumBeeType.PRINCESS) {
if (ForestryItem.beePrincessGE.isItemEqual(queenStack)) {
tickBreed();
} else {
queenWorkTick(queen);
@@ -289,13 +284,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
/** Checks if a queen is alive. Much faster than reading the whole bee nbt */
private static boolean isQueenAlive(ItemStack queenStack) {
if (queenStack == null) {
return false;
}
NBTTagCompound nbtTagCompound = queenStack.getTagCompound();
if (nbtTagCompound == null) {
return false;
}
int health = nbtTagCompound.getInteger("Health");
return health > 0;
}
@@ -309,9 +298,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
ItemStack droneStack = beeInventory.getDrone();
ItemStack princessStack = beeInventory.getQueen();
EnumBeeType droneType = BeeManager.beeRoot.getType(droneStack);
EnumBeeType princessType = BeeManager.beeRoot.getType(princessStack);
if (droneType != EnumBeeType.DRONE || princessType != EnumBeeType.PRINCESS) {
if (!ForestryItem.beeDroneGE.isItemEqual(droneStack) || !ForestryItem.beePrincessGE.isItemEqual(princessStack)) {
beeProgress = 0;
return;
}
@@ -330,7 +317,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
NBTTagCompound nbttagcompound = new NBTTagCompound();
princess.writeToNBT(nbttagcompound);
queenStack = new ItemStack(PluginApiculture.items.beeQueenGE);
queenStack = ForestryItem.beeQueenGE.getItemStack();
queenStack.setTagCompound(nbttagcompound);
beeInventory.setQueen(queenStack);
@@ -367,7 +354,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
} else {
Log.warning("Tried to spawn offspring off an unmated queen. Devolving her to a princess.");
ItemStack convert = new ItemStack(PluginApiculture.items.beePrincessGE);
ItemStack convert = ForestryItem.beePrincessGE.getItemStack();
NBTTagCompound nbttagcompound = new NBTTagCompound();
queen.writeToNBT(nbttagcompound);
convert.setTagCompound(nbttagcompound);
@@ -430,23 +417,7 @@ public class BeekeepingLogic implements IBeekeepingLogic, IStreamable {
public void syncToClient() {
World world = housing.getWorld();
if (world != null && !world.isRemote) {
if (housing instanceof Entity) {
Proxies.net.sendNetworkPacket(new PacketBeeLogicActiveEntity(housing, (Entity) housing), world);
} else {
Proxies.net.sendNetworkPacket(new PacketBeeLogicActive(housing), world);
}
}
}
@Override
public void syncToClient(EntityPlayerMP player) {
World world = housing.getWorld();
if (world != null && !world.isRemote) {
if (housing instanceof TileEntity) {
Proxies.net.sendToPlayer(new PacketBeeLogicActive(housing), player);
} else if (housing instanceof Entity) {
Proxies.net.sendToPlayer(new PacketBeeLogicActiveEntity(housing, (Entity) housing), player);
}
Proxies.net.sendNetworkPacket(new PacketBeekeepingLogicActive(housing), world);
}
}
@@ -10,7 +10,6 @@
******************************************************************************/
package forestry.apiculture;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.nbt.NBTTagCompound;
import forestry.api.apiculture.IBeekeepingLogic;
@@ -37,11 +36,6 @@ public class FakeBeekeepingLogic implements IBeekeepingLogic {
}
@Override
public void syncToClient(EntityPlayerMP player) {
}
@Override
public int getBeeProgressPercent() {
return 0;
+181
View File
@@ -0,0 +1,181 @@
/*******************************************************************************
* 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;
import net.minecraft.entity.player.EntityPlayer;
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;
import forestry.apiculture.gui.ContainerAlvearySwarmer;
import forestry.apiculture.gui.ContainerBeeHousing;
import forestry.apiculture.gui.ContainerHabitatLocator;
import forestry.apiculture.gui.ContainerImprinter;
import forestry.apiculture.gui.GuiAlveary;
import forestry.apiculture.gui.GuiAlvearyHygroregulator;
import forestry.apiculture.gui.GuiAlvearySieve;
import forestry.apiculture.gui.GuiAlvearySwarmer;
import forestry.apiculture.gui.GuiBeeHousing;
import forestry.apiculture.gui.GuiBeealyzer;
import forestry.apiculture.gui.GuiHabitatLocator;
import forestry.apiculture.gui.GuiImprinter;
import forestry.apiculture.items.ItemBeealyzer.BeealyzerInventory;
import forestry.apiculture.items.ItemHabitatLocator.HabitatLocatorInventory;
import forestry.apiculture.items.ItemImprinter.ImprinterInventory;
import forestry.apiculture.multiblock.TileAlvearyHygroregulator;
import forestry.apiculture.multiblock.TileAlvearyPlain;
import forestry.apiculture.multiblock.TileAlvearySieve;
import forestry.apiculture.multiblock.TileAlvearySwarmer;
import forestry.apiculture.tiles.TileApiary;
import forestry.apiculture.tiles.TileBeehouse;
import forestry.core.GuiHandlerBase;
import forestry.core.gui.ContainerAlyzer;
import forestry.core.network.GuiId;
public class GuiHandlerApiculture extends GuiHandlerBase {
@Override
public Object getClientGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
int cleanId = decodeGuiID(id);
int guiData = decodeGuiData(id);
if (cleanId >= GuiId.values().length) {
return null;
}
ItemStack equipped;
switch (GuiId.values()[cleanId]) {
case AlvearyGUI:
return new GuiAlveary(player.inventory, getTile(world, x, y, z, player, TileAlvearyPlain.class));
case AlvearySieveGUI:
return new GuiAlvearySieve(player.inventory, getTile(world, x, y, z, player, TileAlvearySieve.class));
case AlvearySwarmerGUI:
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);
case ApiaryGUI:
return new GuiBeeHousing(player.inventory, getTile(world, x, y, z, player, TileApiary.class));
case BeealyzerGUI:
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
return new GuiBeealyzer(player, new BeealyzerInventory(player, equipped));
case BeehouseGUI:
return new GuiBeeHousing(player.inventory, getTile(world, x, y, z, player, TileBeehouse.class));
case HabitatLocatorGUI:
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
return new GuiHabitatLocator(player, new HabitatLocatorInventory(player, equipped));
case HygroregulatorGUI:
return new GuiAlvearyHygroregulator(player.inventory, getTile(world, x, y, z, player, TileAlvearyHygroregulator.class));
case ImprinterGUI:
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
return new GuiImprinter(player.inventory, new ImprinterInventory(player, equipped));
default:
return null;
}
}
@Override
public Object getServerGuiElement(int id, EntityPlayer player, World world, int x, int y, int z) {
int cleanId = decodeGuiID(id);
int guiData = decodeGuiData(id);
if (cleanId >= GuiId.values().length) {
return null;
}
ItemStack equipped;
switch (GuiId.values()[cleanId]) {
case AlvearyGUI:
synchApiaristTracker(world, player);
return new ContainerAlveary(player.inventory, getTile(world, x, y, z, player, TileAlvearyPlain.class));
case AlvearySieveGUI:
return new ContainerAlvearySieve(player.inventory, getTile(world, x, y, z, player, TileAlvearySieve.class));
case AlvearySwarmerGUI:
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);
case ApiaryGUI:
synchApiaristTracker(world, player);
return new ContainerBeeHousing(player.inventory, getTile(world, x, y, z, player, TileApiary.class), true);
case BeealyzerGUI:
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
synchApiaristTracker(world, player);
return new ContainerAlyzer(new BeealyzerInventory(player, equipped), player);
case BeehouseGUI:
synchApiaristTracker(world, player);
return new ContainerBeeHousing(player.inventory, getTile(world, x, y, z, player, TileBeehouse.class), false);
case HabitatLocatorGUI:
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
return new ContainerHabitatLocator(player, new HabitatLocatorInventory(player, equipped));
case HygroregulatorGUI:
return new ContainerAlvearyHygroregulator(player.inventory, getTile(world, x, y, z, player, TileAlvearyHygroregulator.class));
case ImprinterGUI:
synchApiaristTracker(world, player);
equipped = player.getCurrentEquippedItem();
if (equipped == null) {
return null;
}
return new ContainerImprinter(player.inventory, new ImprinterInventory(player, equipped));
default:
return null;
}
}
private static void synchApiaristTracker(World world, EntityPlayer player) {
BeeManager.beeRoot.getBreedingTracker(world, player.getGameProfile()).synchToPlayer(player);
}
}
@@ -16,14 +16,11 @@ import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.FlowerManager;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.core.INBTTagable;
import forestry.api.genetics.IFlowerProvider;
import forestry.core.utils.vect.Vect;
import forestry.plugins.PluginApiculture;
public class HasFlowersCache implements INBTTagable {
@@ -45,16 +42,7 @@ public class HasFlowersCache implements INBTTagable {
return true;
}
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing);
ChunkCoordinates housingCoords = beeHousing.getCoordinates();
int[] genomeTerritory = queen.getGenome().getTerritory();
float housingModifier = beeModifier.getTerritoryModifier(queen.getGenome(), 1f);
Vect area = new Vect(genomeTerritory).multiply(housingModifier * 3.0f);
Vect min = new Vect(area).multiply(-0.5f).add(housingCoords);
Vect max = new Vect(area).multiply(0.5f).add(housingCoords);
if (isFlowerValid(world, flowerType, min, max)) {
if (FlowerManager.flowerRegistry.isAcceptedFlower(flowerType, world, flowerCoords.posX, flowerCoords.posY, flowerCoords.posZ)) {
return true;
} else {
flowerCoords = null;
@@ -72,17 +60,6 @@ public class HasFlowersCache implements INBTTagable {
return flowerCoords != null;
}
private boolean isFlowerValid(World world, String flowerType, Vect min, Vect max) {
if (!isFlowerCoordInRange(flowerCoords, min, max)) {
return false;
}
return FlowerManager.flowerRegistry.isAcceptedFlower(flowerType, world, flowerCoords.posX, flowerCoords.posY, flowerCoords.posZ);
}
private static boolean isFlowerCoordInRange(ChunkCoordinates flowerCoords, Vect min, Vect max) {
return flowerCoords.posX >= min.x && flowerCoords.posX <= max.x && flowerCoords.posY >= min.y && flowerCoords.posY <= max.y && flowerCoords.posZ >= min.z && flowerCoords.posZ <= max.z;
}
@Override
public void readFromNBT(NBTTagCompound nbttagcompound) {
if (!nbttagcompound.hasKey(nbtKey)) {
@@ -1,18 +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;
import forestry.api.apiculture.IBeeHousing;
import forestry.apiculture.inventory.IApiaryInventory;
public interface IApiary extends IBeeHousing {
IApiaryInventory getApiaryInventory();
}
@@ -29,11 +29,13 @@ import cpw.mods.fml.common.registry.VillagerRegistry.IVillageCreationHandler;
import cpw.mods.fml.common.registry.VillagerRegistry.IVillageTradeHandler;
import forestry.api.apiculture.EnumBeeType;
import forestry.apiculture.blocks.BlockApicultureType;
import forestry.apiculture.genetics.BeeDefinition;
import forestry.apiculture.items.ItemHoneycomb;
import forestry.apiculture.worldgen.ComponentVillageBeeHouse;
import forestry.core.config.Constants;
import forestry.core.config.ForestryBlock;
import forestry.core.config.ForestryItem;
import forestry.core.utils.Log;
import forestry.plugins.PluginApiculture;
public class VillageHandlerApiculture implements IVillageCreationHandler, IVillageTradeHandler {
@@ -48,20 +50,11 @@ public class VillageHandlerApiculture implements IVillageCreationHandler, IVilla
@SuppressWarnings("unchecked")
@Override
public void manipulateTradesForVillager(EntityVillager villager, MerchantRecipeList recipeList, Random random) {
ItemStack wildcardPrincess = new ItemStack(PluginApiculture.items.beePrincessGE, 1, OreDictionary.WILDCARD_VALUE);
recipeList.add(new MerchantRecipe(wildcardPrincess, new ItemStack(Items.emerald, 1)));
ItemStack randomComb = PluginApiculture.items.beeComb.getRandomComb(1, random, false);
recipeList.add(new MerchantRecipe(new ItemStack(Items.wheat, 2), randomComb));
ItemStack apiary = PluginApiculture.blocks.apiculture.get(BlockApicultureType.APIARY);
recipeList.add(new MerchantRecipe(new ItemStack(Blocks.log, 24, OreDictionary.WILDCARD_VALUE), apiary));
ItemStack provenFrames = PluginApiculture.items.frameProven.getItemStack(6);
recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 1), provenFrames));
ItemStack monasticDrone = BeeDefinition.MONASTIC.getMemberStack(EnumBeeType.DRONE);
recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 12), wildcardPrincess, monasticDrone));
recipeList.add(new MerchantRecipe(ForestryItem.beePrincessGE.getItemStack(1, OreDictionary.WILDCARD_VALUE), new ItemStack(Items.emerald, 1)));
recipeList.add(new MerchantRecipe(new ItemStack(Items.wheat, 2), ItemHoneycomb.getRandomComb(1, random, false)));
recipeList.add(new MerchantRecipe(new ItemStack(Blocks.log, 24, OreDictionary.WILDCARD_VALUE), ForestryBlock.apiculture.getItemStack(1, Constants.DEFINITION_APIARY_META)));
recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 1), ForestryItem.frameProven.getItemStack(6)));
recipeList.add(new MerchantRecipe(new ItemStack(Items.emerald, 12), ForestryItem.beePrincessGE.getItemStack(1, OreDictionary.WILDCARD_VALUE), BeeDefinition.MONASTIC.getMemberStack(EnumBeeType.DRONE)));
}
@Override
@@ -37,27 +37,15 @@ import forestry.apiculture.multiblock.TileAlvearySieve;
import forestry.apiculture.multiblock.TileAlvearyStabiliser;
import forestry.apiculture.multiblock.TileAlvearySwarmer;
import forestry.core.blocks.BlockStructure;
import forestry.core.multiblock.MultiblockRegistry;
import forestry.core.render.TextureManager;
public class BlockAlveary extends BlockStructure {
public enum Type {
PLAIN,
ENTRANCE,
SWARMER,
FAN,
HEATER,
HYGRO,
STABILIZER,
SIEVE;
public static final Type[] VALUES = values();
}
public BlockAlveary() {
super(new MaterialBeehive(false));
setHardness(1.0f);
setCreativeTab(Tabs.tabApiculture);
setHarvestLevel("axe", 0);
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -98,25 +86,19 @@ public class BlockAlveary extends BlockStructure {
/* TILE ENTITY CREATION */
@Override
public TileEntity createTileEntity(World world, int metadata) {
if (metadata < 0 || metadata > Type.VALUES.length) {
return null;
}
Type type = Type.VALUES[metadata];
switch (type) {
case SWARMER:
switch (metadata) {
case TileAlveary.SWARMER_META:
return new TileAlvearySwarmer();
case FAN:
case TileAlveary.FAN_META:
return new TileAlvearyFan();
case HEATER:
case TileAlveary.HEATER_META:
return new TileAlvearyHeater();
case HYGRO:
case TileAlveary.HYGRO_META:
return new TileAlvearyHygroregulator();
case STABILIZER:
case TileAlveary.STABILIZER_META:
return new TileAlvearyStabiliser();
case SIEVE:
case TileAlveary.SIEVE_META:
return new TileAlvearySieve();
case PLAIN:
default:
return new TileAlvearyPlain();
}
@@ -150,49 +132,47 @@ public class BlockAlveary extends BlockStructure {
@Override
public void registerBlockIcons(IIconRegister register) {
icons = new IIcon[14];
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");
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");
}
@SideOnly(Side.CLIENT)
@Override
public IIcon getIcon(int side, int metadata) {
if ((metadata <= 1
|| metadata == Type.SIEVE.ordinal() || metadata == Type.SWARMER.ordinal() || metadata == Type.STABILIZER.ordinal())
|| metadata == TileAlveary.SIEVE_META || metadata == TileAlveary.SWARMER_META || metadata == TileAlveary.STABILIZER_META)
&& (side == 1 || side == 0)) {
return icons[BOTTOM];
}
Type type = Type.VALUES[metadata];
switch (type) {
case PLAIN:
switch (metadata) {
case TileAlveary.PLAIN_META:
return icons[PLAIN];
case ENTRANCE:
case TileAlveary.ENTRANCE_META:
return icons[ENTRANCE];
case SWARMER:
case TileAlveary.SWARMER_META:
return icons[ALVEARY_SWARMER_OFF];
case FAN:
case TileAlveary.FAN_META:
return icons[ALVEARY_FAN_OFF];
case HEATER:
case TileAlveary.HEATER_META:
return icons[ALVEARY_HEATER_OFF];
case HYGRO:
case TileAlveary.HYGRO_META:
return icons[ALVEARY_HYGRO];
case STABILIZER:
case TileAlveary.STABILIZER_META:
return icons[STABILISER];
case SIEVE:
case TileAlveary.SIEVE_META:
return icons[SIEVE];
default:
return null;
@@ -248,7 +228,7 @@ public class BlockAlveary extends BlockStructure {
@SideOnly(Side.CLIENT)
private IIcon getBlockTextureFromSideAndTile(IBlockAccess world, int x, int y, int z, int side) {
TileEntity tile = world.getTileEntity(x, y, z);
if (!(tile instanceof TileAlveary)) {
if (tile == null || !(tile instanceof TileAlveary)) {
return getIcon(side, 0);
}
@@ -281,11 +261,7 @@ public class BlockAlveary extends BlockStructure {
TileAlveary tileAlveary = (TileAlveary) tileEntity;
// We must check that the slabs on top were not removed
tileAlveary.getMultiblockLogic().getController().reassemble();
MultiblockRegistry.addDirtyController(world, tileAlveary.getMultiblockController());
}
}
public ItemStack get(Type type) {
return new ItemStack(this, 1, type.ordinal());
}
}
@@ -1,22 +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.blocks;
import forestry.api.core.Tabs;
import forestry.core.blocks.BlockBase;
public class BlockApiculture extends BlockBase<BlockApicultureType> {
public BlockApiculture() {
super();
setCreativeTab(Tabs.tabApiculture);
setHarvestLevel("axe", 0);
}
}
@@ -1,58 +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.blocks;
import java.util.Locale;
import org.apache.commons.lang3.text.WordUtils;
import forestry.apiculture.tiles.TileApiaristChest;
import forestry.apiculture.tiles.TileApiary;
import forestry.apiculture.tiles.TileBeehouse;
import forestry.core.blocks.IMachineProperties;
import forestry.core.tiles.TileForestry;
public enum BlockApicultureType implements IMachineProperties {
APIARY(TileApiary.class),
APIARIST_CHEST_LEGACY(TileApiaristChest.class, "ApiaristChest"),
BEEHOUSE(TileBeehouse.class);
public static final BlockApicultureType[] VALUES = values();
private final String teIdent;
private final Class<? extends TileForestry> teClass;
BlockApicultureType(Class<? extends TileForestry> teClass) {
String name = toString().toLowerCase(Locale.ENGLISH);
this.teIdent = "forestry." + WordUtils.capitalize(name);
this.teClass = teClass;
}
BlockApicultureType(Class<? extends TileForestry> teClass, String name) {
this.teIdent = "forestry." + name;
this.teClass = teClass;
}
@Override
public int getMeta() {
return ordinal();
}
@Override
public String getTeIdent() {
return teIdent;
}
@Override
public Class<? extends TileForestry> getTeClass() {
return teClass;
}
}
@@ -41,11 +41,6 @@ import forestry.core.utils.ItemStackUtil;
import forestry.plugins.PluginApiculture;
public class BlockBeehives extends BlockContainer {
public enum Type {
LEGACY,
FOREST,
MEADOWS;
}
public BlockBeehives() {
super(new MaterialBeehive(true));
@@ -190,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.registerTex(register, "beehives/beehive." + i + ".top");
icons[(i * 2) + 1] = TextureManager.registerTex(register, "beehives/beehive." + i + ".side");
icons[i * 2] = TextureManager.getInstance().registerTex(register, "beehives/beehive." + i + ".top");
icons[(i * 2) + 1] = TextureManager.getInstance().registerTex(register, "beehives/beehive." + i + ".side");
}
}
@@ -44,7 +44,7 @@ import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.core.Tabs;
import forestry.apiculture.tiles.TileCandle;
import forestry.core.proxy.Proxies;
import forestry.core.ForestryClient;
import forestry.core.render.TextureManager;
import forestry.core.utils.ItemStackUtil;
import forestry.core.utils.StringUtil;
@@ -110,18 +110,18 @@ public class BlockCandle extends BlockTorch {
@Override
public int getRenderType() {
return Proxies.render.getCandleRenderId();
return ForestryClient.candleRenderId;
}
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
String fileBase = StringUtil.cleanBlockName(this);
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");
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");
}
@Override
@@ -326,11 +326,4 @@ public class BlockCandle extends BlockTorch {
}
}
public ItemStack getUnlitCandle(int amount) {
return new ItemStack(this, amount, 0);
}
public ItemStack getLitCandle(int amount) {
return new ItemStack(this, amount, 1);
}
}
@@ -1,41 +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.blocks;
import forestry.api.core.Tabs;
import forestry.apiculture.items.ItemBlockCandle;
import forestry.core.blocks.BlockBase;
import forestry.core.blocks.BlockRegistry;
import forestry.core.items.ItemBlockForestry;
public class BlockRegistryApiculture extends BlockRegistry {
public final BlockApiculture apiculture;
public final BlockBase apicultureChest;
public final BlockBeehives beehives;
public final BlockCandle candle;
public final BlockStump stump;
public final BlockAlveary alveary;
public BlockRegistryApiculture() {
apiculture = registerBlock(new BlockApiculture(), ItemBlockForestry.class, "apiculture");
apicultureChest = registerBlock(new BlockBase(true), ItemBlockForestry.class, "apicultureChest");
apicultureChest.setCreativeTab(Tabs.tabApiculture);
apicultureChest.setHarvestLevel("axe", 0);
beehives = registerBlock(new BlockBeehives(), ItemBlockForestry.class, "beehives");
candle = registerBlock(new BlockCandle(), ItemBlockCandle.class, "candle");
stump = registerBlock(new BlockStump(), ItemBlockForestry.class, "stump");
alveary = registerBlock(new BlockAlveary(), ItemBlockForestry.class, "alveary");
}
}
@@ -29,10 +29,10 @@ import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.core.Tabs;
import forestry.apiculture.tiles.TileCandle;
import forestry.core.config.Constants;
import forestry.core.config.ForestryBlock;
import forestry.core.render.TextureManager;
import forestry.core.utils.ItemStackUtil;
import forestry.core.utils.StringUtil;
import forestry.plugins.PluginApiculture;
public class BlockStump extends BlockTorch {
@@ -46,7 +46,7 @@ public class BlockStump extends BlockTorch {
@SideOnly(Side.CLIENT)
@Override
public void registerBlockIcons(IIconRegister register) {
this.blockIcon = TextureManager.registerTex(register, StringUtil.cleanBlockName(this));
this.blockIcon = TextureManager.getInstance().registerTex(register, StringUtil.cleanBlockName(this));
}
@SuppressWarnings({"rawtypes", "unchecked"})
@@ -63,7 +63,7 @@ public class BlockStump extends BlockTorch {
(held.getItem() == Items.flint_and_steel ||
held.getItem() == Items.flint ||
ItemStackUtil.equals(Blocks.torch, held))) {
world.setBlock(x, y, z, PluginApiculture.blocks.candle, world.getBlockMetadata(x, y, z) | 0x08, Constants.FLAG_BLOCK_SYNCH);
world.setBlock(x, y, z, ForestryBlock.candle.block(), world.getBlockMetadata(x, y, z) | 0x08, Constants.FLAG_BLOCK_SYNCH);
TileCandle tc = new TileCandle();
tc.setColour(0); // default to white
world.setTileEntity(x, y, z, tc);
@@ -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.1D;
this.motionX *= 0.2D;
this.motionY *= 0.015D;
this.motionZ *= 0.1D;
this.motionZ *= 0.2D;
}
/**
@@ -1,121 +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.entities;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.api.apiculture.IBeeHousingInventory;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.apiculture.IHiveFrame;
import forestry.apiculture.ApiaryBeeListener;
import forestry.apiculture.ApiaryBeeModifier;
import forestry.apiculture.IApiary;
import forestry.apiculture.blocks.BlockApicultureType;
import forestry.apiculture.gui.ContainerMinecartBeehouse;
import forestry.apiculture.gui.GuiBeeHousing;
import forestry.apiculture.inventory.IApiaryInventory;
import forestry.apiculture.inventory.InventoryApiary;
import forestry.core.config.Config;
import forestry.core.inventory.IInventoryAdapter;
import forestry.plugins.PluginApiculture;
public class EntityMinecartApiary extends EntityMinecartBeeHousingBase implements IApiary {
private static final IBeeModifier beeModifier = new ApiaryBeeModifier();
private final IBeeListener beeListener = new ApiaryBeeListener(this);
private final InventoryApiary inventory = new InventoryApiary(getAccessHandler());
@SuppressWarnings("unused")
public EntityMinecartApiary(World world) {
super(world);
}
public EntityMinecartApiary(World world, double posX, double posY, double posZ) {
super(world, posX, posY, posZ);
}
@Override
public List<String> getHints() {
return Config.hints.get("apiary");
}
@Override
protected IInventoryAdapter getInternalInventory() {
return inventory;
}
@Override
public IApiaryInventory getApiaryInventory() {
return inventory;
}
@Override
public IBeeHousingInventory getBeeInventory() {
return inventory;
}
@Override
public Block func_145820_n() {
return PluginApiculture.blocks.apiculture;
}
@Override
public int getDisplayTileData() {
return BlockApicultureType.APIARY.ordinal();
}
@Override
public ItemStack getCartItem() {
return PluginApiculture.items.minecartBeehouse.getApiaryMinecart();
}
@Override
public Collection<IBeeModifier> getBeeModifiers() {
List<IBeeModifier> beeModifiers = new ArrayList<>();
beeModifiers.add(beeModifier);
for (IHiveFrame frame : inventory.getFrames()) {
beeModifiers.add(frame.getBeeModifier());
}
return beeModifiers;
}
@Override
public Iterable<IBeeListener> getBeeListeners() {
return Collections.singleton(beeListener);
}
@Override
public Object getGui(EntityPlayer player, int data) {
ContainerMinecartBeehouse container = new ContainerMinecartBeehouse(player.inventory, this, true);
return new GuiBeeHousing<>(this, container, GuiBeeHousing.Icon.APIARY);
}
@Override
public Object getContainer(EntityPlayer player, int data) {
return new ContainerMinecartBeehouse(player.inventory, this, true);
}
@Override
public int getIdOfEntity() {
return getEntityId();
}
}
@@ -1,184 +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.entities;
import java.io.IOException;
import java.util.Random;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.Vec3;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import com.mojang.authlib.GameProfile;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBeeHousing;
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.gui.IGuiBeeHousingInventory;
import forestry.apiculture.network.packets.PacketBeeLogicEntityRequest;
import forestry.apiculture.tiles.TileBeeHousingBase;
import forestry.core.entities.EntityMinecartContainerForestry;
import forestry.core.network.DataInputStreamForestry;
import forestry.core.network.DataOutputStreamForestry;
import forestry.core.network.IForestryPacketServer;
import forestry.core.network.IStreamableGui;
import forestry.core.proxy.Proxies;
import forestry.core.tiles.IClimatised;
public abstract class EntityMinecartBeeHousingBase extends EntityMinecartContainerForestry implements IBeeHousing, IGuiBeeHousingInventory, IClimatised, IStreamableGui {
private static final Random random = new Random();
private static final int beeFXInterval = 4;
private static final int pollenFXInterval = 50;
private final int beeFXTime = random.nextInt(beeFXInterval);
private final int pollenFXTime = random.nextInt(pollenFXInterval);
private final IBeekeepingLogic beeLogic = BeeManager.beeRoot.createBeekeepingLogic(this);
private final IErrorLogic errorLogic = ForestryAPI.errorStateRegistry.createErrorLogic();
// CLIENT
private int breedingProgressPercent = 0;
private boolean needsActiveUpdate = true;
@SuppressWarnings("unused")
public EntityMinecartBeeHousingBase(World world) {
super(world);
}
public EntityMinecartBeeHousingBase(World world, double posX, double posY, double posZ) {
super(world, posX, posY, posZ);
}
/* IBeeHousing */
@Override
public IBeekeepingLogic getBeekeepingLogic() {
return beeLogic;
}
@Override
public EnumTemperature getTemperature() {
return EnumTemperature.getFromBiome(getBiome(), (int) posX, (int) posY, (int) posZ);
}
@Override
public EnumHumidity getHumidity() {
return EnumHumidity.getFromValue(getBiome().rainfall);
}
@Override
public float getExactTemperature() {
return getBiome().temperature;
}
@Override
public float getExactHumidity() {
return getBiome().rainfall;
}
@Override
public int getBlockLightValue() {
return worldObj.getBlockLightValue((int) posX, (int) posY + 1, (int) posZ);
}
@Override
public boolean canBlockSeeTheSky() {
return worldObj.canBlockSeeTheSky((int) posX, (int) posY + 1, (int) posZ);
}
@Override
public World getWorld() {
return worldObj;
}
@Override
public BiomeGenBase getBiome() {
return worldObj.getBiomeGenForCoords((int) posX, (int) posZ);
}
@Override
public GameProfile getOwner() {
return getAccessHandler().getOwner();
}
@Override
public IErrorLogic getErrorLogic() {
return errorLogic;
}
@Override
public ChunkCoordinates getCoordinates() {
return new ChunkCoordinates((int) posX, (int) posY, (int) posZ);
}
@Override
public Vec3 getBeeFXCoordinates() {
return Vec3.createVectorHelper(posX, posY + 0.25, posZ);
}
@Override
public void writeGuiData(DataOutputStreamForestry data) throws IOException {
data.writeVarInt(beeLogic.getBeeProgressPercent());
}
@Override
public void readGuiData(DataInputStreamForestry data) throws IOException {
breedingProgressPercent = data.readVarInt();
}
@Override
public int getHealthScaled(int i) {
return (breedingProgressPercent * i) / 100;
}
@Override
public void onUpdate() {
super.onUpdate();
if (!worldObj.isRemote) {
if (beeLogic.canWork()) {
beeLogic.doWork();
}
} else {
if (needsActiveUpdate) {
IForestryPacketServer packet = new PacketBeeLogicEntityRequest(this);
Proxies.net.sendToServer(packet);
needsActiveUpdate = false;
}
if (beeLogic.canDoBeeFX()) {
if (worldObj.getTotalWorldTime() % beeFXInterval == beeFXTime) {
beeLogic.doBeeFX();
}
if (worldObj.getTotalWorldTime() % pollenFXInterval == pollenFXTime) {
TileBeeHousingBase.doPollenFX(worldObj, posX - 0.5, posY - 0.1, posZ - 0.5);
}
}
}
}
@Override
protected void readEntityFromNBT(NBTTagCompound nbtTagCompound) {
super.readEntityFromNBT(nbtTagCompound);
beeLogic.readFromNBT(nbtTagCompound);
}
@Override
protected void writeEntityToNBT(NBTTagCompound nbtTagCompound) {
super.writeEntityToNBT(nbtTagCompound);
beeLogic.writeToNBT(nbtTagCompound);
}
}
@@ -1,106 +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.entities;
import java.util.Collections;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.api.apiculture.DefaultBeeListener;
import forestry.api.apiculture.IBeeHousingInventory;
import forestry.api.apiculture.IBeeListener;
import forestry.api.apiculture.IBeeModifier;
import forestry.apiculture.BeehouseBeeModifier;
import forestry.apiculture.InventoryBeeHousing;
import forestry.apiculture.blocks.BlockApicultureType;
import forestry.apiculture.gui.ContainerMinecartBeehouse;
import forestry.apiculture.gui.GuiBeeHousing;
import forestry.core.config.Config;
import forestry.core.inventory.IInventoryAdapter;
import forestry.plugins.PluginApiculture;
public class EntityMinecartBeehouse extends EntityMinecartBeeHousingBase {
private static final IBeeModifier beeModifier = new BeehouseBeeModifier();
private static final IBeeListener beeListener = new DefaultBeeListener();
private final InventoryBeeHousing beeInventory = new InventoryBeeHousing(9, getAccessHandler());
@SuppressWarnings("unused")
public EntityMinecartBeehouse(World world) {
super(world);
beeInventory.disableAutomation();
}
public EntityMinecartBeehouse(World world, double posX, double posY, double posZ) {
super(world, posX, posY, posZ);
beeInventory.disableAutomation();
}
@Override
public List<String> getHints() {
return Config.hints.get("bee.house");
}
@Override
public Block func_145820_n() {
return PluginApiculture.blocks.apiculture;
}
@Override
public int getDisplayTileData() {
return BlockApicultureType.BEEHOUSE.ordinal();
}
@Override
public ItemStack getCartItem() {
return PluginApiculture.items.minecartBeehouse.getBeeHouseMinecart();
}
/* IBeeHousing */
@Override
public Iterable<IBeeModifier> getBeeModifiers() {
return Collections.singleton(beeModifier);
}
@Override
public Iterable<IBeeListener> getBeeListeners() {
return Collections.singleton(beeListener);
}
@Override
public IBeeHousingInventory getBeeInventory() {
return beeInventory;
}
@Override
protected IInventoryAdapter getInternalInventory() {
return beeInventory;
}
@Override
public Object getGui(EntityPlayer player, int data) {
ContainerMinecartBeehouse container = new ContainerMinecartBeehouse(player.inventory, this, false);
return new GuiBeeHousing<>(this, container, GuiBeeHousing.Icon.BEE_HOUSE);
}
@Override
public Object getContainer(EntityPlayer player, int data) {
return new ContainerMinecartBeehouse(player.inventory, this, false);
}
@Override
public int getIdOfEntity() {
return getEntityId();
}
}
@@ -225,7 +225,7 @@ public final class FlowerRegistry implements IFlowerRegistry, IFlowerGrowthHelpe
if (PluginManager.Module.AGRICRAFT.isEnabled()) {
Block cropBlock = GameRegistry.findBlock("AgriCraft", "crops");
if (block == cropBlock) {
if (block instanceof IPlantable) {
if(block instanceof IPlantable) {
//For agricraft versions which implement IPlantable in the BlockCrop class
block = ((IPlantable) block).getPlant(world, x, y, z);
} else {
@@ -13,6 +13,8 @@ package forestry.apiculture.genetics;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.nbt.NBTTagCompound;
import com.mojang.authlib.GameProfile;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.IApiaristTracker;
@@ -25,7 +27,11 @@ public class ApiaristTracker extends BreedingTracker implements IApiaristTracker
/** Required for creation from map storage */
public ApiaristTracker(String s) {
super(s);
this(s, null);
}
public ApiaristTracker(String s, GameProfile player) {
super(s, player);
}
private int queensTotal = 0;
@@ -45,7 +45,6 @@ import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.IErrorState;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.EnumTolerance;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleTolerance;
import forestry.api.genetics.IChromosome;
@@ -257,87 +256,48 @@ public class Bee extends IndividualLiving implements IBee {
IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
// / Rain needs tolerant flyers
if (world.isRaining() && BiomeHelper.canRainOrSnow(biome) && !canFlyInRain(beeModifier)) {
errorStates.add(EnumErrorCode.IS_RAINING);
if (world.isRaining() && !genome.getTolerantFlyer() && BiomeHelper.canRainOrSnow(biome) && !beeModifier.isSealed()) {
errorStates.add(EnumErrorCode.ISRAINING);
}
// / Night or darkness requires nocturnal species
if (world.isDaytime()) {
if (!canWorkDuringDay()) {
errorStates.add(EnumErrorCode.NOT_NIGHT);
}
} else {
if (!canWorkAtNight(beeModifier)) {
errorStates.add(EnumErrorCode.NOT_DAY);
errorStates.add(EnumErrorCode.NOTNIGHT);
}
} else if (!canWorkAtNight() && !beeModifier.isSelfLighted()) {
errorStates.add(EnumErrorCode.NOTDAY);
}
if (housing.getBlockLightValue() > Constants.APIARY_MIN_LEVEL_LIGHT) {
if (!canWorkDuringDay()) {
errorStates.add(EnumErrorCode.NOT_GLOOMY);
}
} else {
if (!canWorkAtNight(beeModifier)) {
errorStates.add(EnumErrorCode.NOT_BRIGHT);
errorStates.add(EnumErrorCode.NOTGLOOMY);
}
} else if (!canWorkAtNight() && !beeModifier.isSelfLighted()) {
errorStates.add(EnumErrorCode.NOTLUCID);
}
// / Check for the sky, except if in hell
if (biome != null && !BiomeHelper.isBiomeHellish(biome)) {
if (!housing.canBlockSeeTheSky() && !canWorkUnderground(beeModifier)) {
errorStates.add(EnumErrorCode.NO_SKY);
}
// / No sky, except if in hell
if (biome != null && !BiomeHelper.isBiomeHellish(biome) && !housing.canBlockSeeTheSky() && !genome.getCaveDwelling() && !beeModifier.isSunlightSimulated()) {
errorStates.add(EnumErrorCode.NOSKY);
}
// / And finally climate check
IAlleleBeeSpecies species = genome.getPrimary();
{
EnumTemperature actualTemperature = housing.getTemperature();
EnumTemperature beeBaseTemperature = species.getTemperature();
EnumTolerance beeToleranceTemperature = genome.getToleranceTemp();
if (!AlleleManager.climateHelper.isWithinLimits(actualTemperature, beeBaseTemperature, beeToleranceTemperature)) {
if (beeBaseTemperature.ordinal() > actualTemperature.ordinal()) {
errorStates.add(EnumErrorCode.TOO_COLD);
} else {
errorStates.add(EnumErrorCode.TOO_HOT);
}
}
}
{
EnumHumidity actualHumidity = housing.getHumidity();
EnumHumidity beeBaseHumidity = species.getHumidity();
EnumTolerance beeToleranceHumidity = genome.getToleranceHumid();
if (!AlleleManager.climateHelper.isWithinLimits(actualHumidity, beeBaseHumidity, beeToleranceHumidity)) {
if (beeBaseHumidity.ordinal() > actualHumidity.ordinal()) {
errorStates.add(EnumErrorCode.TOO_ARID);
} else {
errorStates.add(EnumErrorCode.TOO_HUMID);
}
}
if (!isSuitableClimate(housing.getTemperature(), housing.getHumidity())) {
errorStates.add(EnumErrorCode.INVALIDBIOME);
}
return errorStates;
}
private boolean canWorkAtNight(IBeeModifier beeModifier) {
return genome.getPrimary().isNocturnal() || genome.getNocturnal() || beeModifier.isSelfLighted();
private boolean canWorkAtNight() {
return genome.getPrimary().isNocturnal() || genome.getNocturnal();
}
private boolean canWorkDuringDay() {
return !genome.getPrimary().isNocturnal() || genome.getNocturnal();
}
private boolean canWorkUnderground(IBeeModifier beeModifier) {
return genome.getCaveDwelling() || beeModifier.isSunlightSimulated();
}
private boolean canFlyInRain(IBeeModifier beeModifier) {
return genome.getTolerantFlyer() || beeModifier.isSealed();
}
private boolean isSuitableBiome(BiomeGenBase biome) {
if (biome == null) {
return false;
@@ -7,9 +7,8 @@ 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.AlleleHelper;
import forestry.core.genetics.alleles.Allele;
import forestry.core.genetics.alleles.EnumAllele;
public enum BeeBranchDefinition implements IBranchDefinition {
@@ -20,96 +19,96 @@ public enum BeeBranchDefinition implements IBranchDefinition {
INFERNAL("Diapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
AUSTERE("Modapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
TROPICAL("Caldapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
END("Finapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
FROZEN("Coagapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
VENGEFUL("Punapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
AlleleHelper.instance.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGEST);
AlleleHelper.instance.set(alleles, EnumBeeChromosome.EFFECT, AlleleEffect.effectRadioactive);
Allele.helper.set(alleles, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGEST);
Allele.helper.set(alleles, EnumBeeChromosome.EFFECT, Allele.effectRadioactive);
}
},
FESTIVE("Festapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
AGRARIAN("Rustapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
BOGGY("Paludapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
},
MONASTIC("Monapis") {
@Override
protected void setBranchProperties(IAllele[] alleles) {
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);
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);
}
};
@@ -141,18 +140,18 @@ public enum BeeBranchDefinition implements IBranchDefinition {
if (defaultTemplate == null) {
defaultTemplate = new IAllele[EnumBeeChromosome.values().length];
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);
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);
}
return Arrays.copyOf(defaultTemplate, defaultTemplate.length);
}
@@ -32,26 +32,22 @@ 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.apiculture.items.EnumHoneyComb;
import forestry.apiculture.items.EnumPollenCluster;
import forestry.core.genetics.alleles.AlleleHelper;
import forestry.core.config.ForestryItem;
import forestry.core.genetics.alleles.Allele;
import forestry.core.genetics.alleles.EnumAllele;
import forestry.plugins.PluginApiculture;
import forestry.plugins.PluginCore;
public enum BeeDefinition implements IBeeDefinition {
/* HONEY BRANCH */
FOREST(BeeBranchDefinition.HONEY, "nigrocincta", true, new Color(0x19d0ec), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.HONEY, 1), 0.30f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 0.30f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.HIGH);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.HIGH);
}
@Override
@@ -62,12 +58,12 @@ public enum BeeDefinition implements IBeeDefinition {
MEADOWS(BeeBranchDefinition.HONEY, "florea", true, new Color(0xef131e), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.HONEY, 1), 0.30f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 0.30f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.SLOWER);
}
@Override
@@ -78,12 +74,12 @@ public enum BeeDefinition implements IBeeDefinition {
COMMON(BeeBranchDefinition.HONEY, "cerana", true, new Color(0xb2b2b2), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.HONEY, 1), 0.35f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 0.35f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
}
@Override
@@ -100,13 +96,13 @@ public enum BeeDefinition implements IBeeDefinition {
CULTIVATED(BeeBranchDefinition.HONEY, "mellifera", true, new Color(0x5734ec), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.HONEY, 1), 0.40f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 0.40f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.FAST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.FAST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTEST);
}
@Override
@@ -121,14 +117,14 @@ public enum BeeDefinition implements IBeeDefinition {
NOBLE(BeeBranchDefinition.NOBLE, "nobilis", false, new Color(0xec9a19), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.DRIPPING, 1), 0.20f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 0.20f);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -139,14 +135,14 @@ public enum BeeDefinition implements IBeeDefinition {
MAJESTIC(BeeBranchDefinition.NOBLE, "regalis", true, new Color(0x7f0000), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.DRIPPING, 1), 0.30f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 0.30f);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -157,16 +153,16 @@ public enum BeeDefinition implements IBeeDefinition {
IMPERIAL(BeeBranchDefinition.NOBLE, "imperatorius", false, new Color(0xa3e02f), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.DRIPPING, 1), 0.20f)
.addProduct(PluginApiculture.items.royalJelly.getItemStack(), 0.15f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 5), 0.20f)
.addProduct(ForestryItem.royalJelly.getItemStack(), 0.15f)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -179,14 +175,14 @@ public enum BeeDefinition implements IBeeDefinition {
DILIGENT(BeeBranchDefinition.INDUSTRIOUS, "sedulus", false, new Color(0xc219ec), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.STRINGY, 1), 0.20f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 0.20f);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -197,13 +193,13 @@ public enum BeeDefinition implements IBeeDefinition {
UNWEARY(BeeBranchDefinition.INDUSTRIOUS, "assiduus", true, new Color(0x19ec5a), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.STRINGY, 1), 0.30f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 0.30f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORTENED);
}
@Override
@@ -214,16 +210,16 @@ public enum BeeDefinition implements IBeeDefinition {
INDUSTRIOUS(BeeBranchDefinition.INDUSTRIOUS, "industria", false, new Color(0xffffff), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.STRINGY, 1), 0.20f)
.addProduct(PluginApiculture.items.pollenCluster.get(EnumPollenCluster.NORMAL, 1), 0.15f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 3), 0.20f)
.addProduct(ForestryItem.pollenCluster.getItemStack(), 0.15f)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -236,16 +232,16 @@ public enum BeeDefinition implements IBeeDefinition {
STEADFAST(BeeBranchDefinition.HEROIC, "legio", false, new Color(0x4d2b15), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.COCOA, 1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 0.20f)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -256,16 +252,16 @@ public enum BeeDefinition implements IBeeDefinition {
VALIANT(BeeBranchDefinition.HEROIC, "centurio", true, new Color(0x626bdd), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.COCOA, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 0.30f)
.addSpecialty(new ItemStack(Items.sugar), 0.15f);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -276,17 +272,17 @@ public enum BeeDefinition implements IBeeDefinition {
HEROIC(BeeBranchDefinition.HEROIC, "kraphti", false, new Color(0xb3d5e4), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.COCOA, 1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 1), 0.40f)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -300,16 +296,16 @@ public enum BeeDefinition implements IBeeDefinition {
SINISTER(BeeBranchDefinition.INFERNAL, "caecus", false, new Color(0xb3d5e4), new Color(0x9a2323)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SIMMERING, 1), 0.45f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 0.45f)
.setTemperature(EnumTemperature.HELLISH)
.setHumidity(EnumHumidity.ARID);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -323,17 +319,17 @@ public enum BeeDefinition implements IBeeDefinition {
FIENDISH(BeeBranchDefinition.INFERNAL, "diabolus", true, new Color(0xd7bee5), new Color(0x9a2323)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SIMMERING, 1), 0.55f)
.addProduct(PluginCore.items.ash.getItemStack(), 0.15f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 0.55f)
.addProduct(ForestryItem.ash.getItemStack(), 0.15f)
.setTemperature(EnumTemperature.HELLISH)
.setHumidity(EnumHumidity.ARID);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -347,7 +343,7 @@ public enum BeeDefinition implements IBeeDefinition {
DEMONIC(BeeBranchDefinition.INFERNAL, "draco", false, new Color(0xf4e400), new Color(0x9a2323)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SIMMERING, 1), 0.45f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 2), 0.45f)
.addProduct(new ItemStack(Items.glowstone_dust), 0.15f)
.setHasEffect()
.setTemperature(EnumTemperature.HELLISH)
@@ -356,9 +352,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -372,15 +368,15 @@ public enum BeeDefinition implements IBeeDefinition {
MODEST(BeeBranchDefinition.AUSTERE, "modicus", false, new Color(0xc5be86), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.PARCHED, 1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 0.20f)
.setTemperature(EnumTemperature.HOT)
.setHumidity(EnumHumidity.ARID);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -391,15 +387,15 @@ public enum BeeDefinition implements IBeeDefinition {
FRUGAL(BeeBranchDefinition.AUSTERE, "permodestus", true, new Color(0xe8dcb1), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.PARCHED, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 0.30f)
.setTemperature(EnumTemperature.HOT)
.setHumidity(EnumHumidity.ARID);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
}
@Override
@@ -415,8 +411,8 @@ public enum BeeDefinition implements IBeeDefinition {
AUSTERE(BeeBranchDefinition.AUSTERE, "correpere", false, new Color(0xfffac2), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.PARCHED, 1), 0.20f)
.addSpecialty(PluginApiculture.items.beeComb.get(EnumHoneyComb.POWDERY, 1), 0.50f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 7), 0.20f)
.addSpecialty(ForestryItem.beeComb.getItemStack(1, 10), 0.50f)
.setHasEffect()
.setTemperature(EnumTemperature.HOT)
.setHumidity(EnumHumidity.ARID);
@@ -424,10 +420,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -442,15 +438,15 @@ public enum BeeDefinition implements IBeeDefinition {
TROPICAL(BeeBranchDefinition.TROPICAL, "mendelia", false, new Color(0x378020), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SILKY, 1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 0.20f)
.setTemperature(EnumTemperature.WARM)
.setHumidity(EnumHumidity.DAMP);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -461,15 +457,15 @@ public enum BeeDefinition implements IBeeDefinition {
EXOTIC(BeeBranchDefinition.TROPICAL, "darwini", true, new Color(0x304903), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SILKY, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 0.30f)
.setTemperature(EnumTemperature.WARM)
.setHumidity(EnumHumidity.DAMP);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONG);
}
@Override
@@ -480,7 +476,7 @@ public enum BeeDefinition implements IBeeDefinition {
EDENIC(BeeBranchDefinition.TROPICAL, "humboldti", false, new Color(0x393d0d), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SILKY, 1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 0.20f)
.setHasEffect()
.setTemperature(EnumTemperature.WARM)
.setHumidity(EnumHumidity.DAMP);
@@ -488,10 +484,10 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -504,7 +500,7 @@ public enum BeeDefinition implements IBeeDefinition {
ENDED(BeeBranchDefinition.END, "notchi", false, new Color(0xe079fa), new Color(0xd9de9e)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 0.30f)
.setTemperature(EnumTemperature.COLD);
}
@@ -521,13 +517,13 @@ public enum BeeDefinition implements IBeeDefinition {
SPECTRAL(BeeBranchDefinition.END, "idolum", true, new Color(0xa98bed), new Color(0xd9de9e)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1), 0.50f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 0.50f)
.setTemperature(EnumTemperature.COLD);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectReanimation);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectReanimation);
}
@Override
@@ -538,16 +534,16 @@ public enum BeeDefinition implements IBeeDefinition {
PHANTASMAL(BeeBranchDefinition.END, "lemur", false, new Color(0xcc00fa), new Color(0xd9de9e)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MYSTERIOUS, 1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 8), 0.40f)
.setHasEffect()
.setTemperature(EnumTemperature.COLD);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -560,15 +556,15 @@ public enum BeeDefinition implements IBeeDefinition {
WINTRY(BeeBranchDefinition.FROZEN, "brumalis", false, new Color(0xa0ffc8), new Color(0xdaf5f3)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.FROZEN, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 0.30f)
.setTemperature(EnumTemperature.ICY);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -579,15 +575,15 @@ public enum BeeDefinition implements IBeeDefinition {
ICY(BeeBranchDefinition.FROZEN, "coagulis", true, new Color(0xa0ffff), new Color(0xdaf5f3)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.FROZEN, 1), 0.20f)
.addProduct(PluginCore.items.craftingMaterial.getIceShard(1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 0.20f)
.addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 0.20f)
.setTemperature(EnumTemperature.ICY);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -599,16 +595,16 @@ public enum BeeDefinition implements IBeeDefinition {
GLACIAL(BeeBranchDefinition.FROZEN, "glacialis", false, new Color(0xefffff), new Color(0xdaf5f3)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.FROZEN, 1), 0.20f)
.addProduct(PluginCore.items.craftingMaterial.getIceShard(1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 0.20f)
.addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 0.40f)
.setTemperature(EnumTemperature.ICY)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.SHORT);
}
@Override
@@ -622,14 +618,14 @@ public enum BeeDefinition implements IBeeDefinition {
VINDICTIVE(BeeBranchDefinition.VENGEFUL, "ultio", false, new Color(0xeafff3), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.IRRADIATED, 1), 0.25f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 0.25f)
.setIsNotCounted();
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWER);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.NORMAL);
}
@Override
@@ -640,14 +636,14 @@ public enum BeeDefinition implements IBeeDefinition {
VENGEFUL(BeeBranchDefinition.VENGEFUL, "punire", false, new Color(0xc2de00), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.IRRADIATED, 1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 0.40f)
.setIsNotCounted();
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.NORMAL);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGER);
}
@Override
@@ -659,15 +655,15 @@ public enum BeeDefinition implements IBeeDefinition {
AVENGING(BeeBranchDefinition.VENGEFUL, "hostimentum", false, new Color(0xddff00), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.IRRADIATED, 1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 9), 0.40f)
.setHasEffect()
.setIsNotCounted();
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOWEST);
Allele.helper.set(template, EnumBeeChromosome.LIFESPAN, EnumAllele.Lifespan.LONGEST);
}
@Override
@@ -681,7 +677,7 @@ public enum BeeDefinition implements IBeeDefinition {
LEPORINE(BeeBranchDefinition.FESTIVE, "lepus", false, new Color(0xfeff8f), new Color(0x3cd757)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.SILKY, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 6), 0.30f)
.addProduct(new ItemStack(Items.egg), 0.10f)
.setHasEffect()
.setIsNotCounted();
@@ -689,7 +685,7 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectFestiveEaster);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectFestiveEaster);
}
@Override
@@ -703,8 +699,8 @@ public enum BeeDefinition implements IBeeDefinition {
MERRY(BeeBranchDefinition.FESTIVE, "feliciter", false, new Color(0xffffff), new Color(0xd40000)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.FROZEN, 1), 0.30f)
.addProduct(PluginCore.items.craftingMaterial.getIceShard(1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 0.30f)
.addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 0.20f)
.setTemperature(EnumTemperature.ICY)
.setHasEffect()
.setIsNotCounted();
@@ -712,8 +708,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectSnowing);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectSnowing);
}
@Override
@@ -727,8 +723,8 @@ public enum BeeDefinition implements IBeeDefinition {
TIPSY(BeeBranchDefinition.FESTIVE, "ebrius", false, new Color(0xffffff), new Color(0xc219ec)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.FROZEN, 1), 0.30f)
.addProduct(PluginCore.items.craftingMaterial.getIceShard(1), 0.20f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 4), 0.30f)
.addProduct(ForestryItem.craftingMaterial.getItemStack(1, 5), 0.20f)
.setTemperature(EnumTemperature.ICY)
.setHasEffect()
.setIsNotCounted();
@@ -736,8 +732,8 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectDrunkard);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectDrunkard);
}
@Override
@@ -752,7 +748,7 @@ public enum BeeDefinition implements IBeeDefinition {
TRICKY(BeeBranchDefinition.FESTIVE, "libita", false, new Color(0x49413B), new Color(0xFF6A00)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.HONEY, 1), 0.40f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 0), 0.40f)
.addProduct(new ItemStack(Items.cookie), 0.15f)
.addSpecialty(new ItemStack(Items.skull, 1, 0), 0.02f)
.addSpecialty(new ItemStack(Items.skull, 1, 2), 0.02f)
@@ -764,9 +760,9 @@ public enum BeeDefinition implements IBeeDefinition {
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -782,7 +778,7 @@ public enum BeeDefinition implements IBeeDefinition {
RURAL(BeeBranchDefinition.AGRARIAN, "rustico", false, new Color(0xfeff8f), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.WHEATEN, 1), 0.20f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 0.20f);
}
@Override
@@ -799,13 +795,13 @@ public enum BeeDefinition implements IBeeDefinition {
FARMERLY(BeeBranchDefinition.AGRARIAN, "arator", true, new Color(0xD39728), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.WHEATEN, 1), 0.27f);
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 0.27f);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
AlleleHelper.instance.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
Allele.helper.set(template, EnumBeeChromosome.SPEED, EnumAllele.Speed.SLOW);
Allele.helper.set(template, EnumBeeChromosome.TERRITORY, EnumAllele.Territory.LARGE);
}
@Override
@@ -817,16 +813,16 @@ public enum BeeDefinition implements IBeeDefinition {
AGRARIAN(BeeBranchDefinition.AGRARIAN, "arator", true, new Color(0xFFCA75), new Color(0xFFE047)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.WHEATEN, 1), 0.35f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 0.35f)
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -840,7 +836,7 @@ public enum BeeDefinition implements IBeeDefinition {
MARSHY(BeeBranchDefinition.BOGGY, "adorasti", true, new Color(0x546626), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MOSSY, 1), 0.30f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 0.30f)
.setHumidity(EnumHumidity.DAMP);
}
@@ -857,15 +853,15 @@ public enum BeeDefinition implements IBeeDefinition {
MIRY(BeeBranchDefinition.BOGGY, "humidium", true, new Color(0x92AF42), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MOSSY, 1), 0.36f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 0.36f)
.setHumidity(EnumHumidity.DAMP);
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
AlleleHelper.instance.set(template, EnumBeeChromosome.NOCTURNAL, true);
Allele.helper.set(template, EnumBeeChromosome.FERTILITY, EnumAllele.Fertility.MAXIMUM);
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
Allele.helper.set(template, EnumBeeChromosome.NOCTURNAL, true);
}
@Override
@@ -878,17 +874,17 @@ public enum BeeDefinition implements IBeeDefinition {
BOGGY(BeeBranchDefinition.BOGGY, "paluster", true, new Color(0x698948), new Color(0xffdc16)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.MOSSY, 1), 0.39f)
.addSpecialty(PluginCore.items.peat.getItemStack(), 0.08f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 15), 0.39f)
.addSpecialty(ForestryItem.peat.getItemStack(), 0.08f)
.setHumidity(EnumHumidity.DAMP);
}
@Override
protected void setAlleles(IAllele[] template) {
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);
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);
}
@Override
@@ -903,8 +899,8 @@ public enum BeeDefinition implements IBeeDefinition {
MONASTIC(BeeBranchDefinition.MONASTIC, "monachus", false, new Color(0x42371c), new Color(0xfff7b6)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addProduct(PluginApiculture.items.beeComb.get(EnumHoneyComb.WHEATEN, 1), 0.30f)
.addSpecialty(PluginApiculture.items.beeComb.get(EnumHoneyComb.MELLOW, 1), 0.10f)
beeSpecies.addProduct(ForestryItem.beeComb.getItemStack(1, 14), 0.30f)
.addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 0.10f)
.setJubilanceProvider(new JubilanceProviderHermit());
}
@@ -921,13 +917,13 @@ public enum BeeDefinition implements IBeeDefinition {
SECLUDED(BeeBranchDefinition.MONASTIC, "contractus", true, new Color(0x7b6634), new Color(0xfff7b6)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addSpecialty(PluginApiculture.items.beeComb.get(EnumHoneyComb.MELLOW, 1), 0.20f)
beeSpecies.addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 0.20f)
.setJubilanceProvider(new JubilanceProviderHermit());
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
}
@Override
@@ -938,15 +934,15 @@ public enum BeeDefinition implements IBeeDefinition {
HERMITIC(BeeBranchDefinition.MONASTIC, "anachoreta", false, new Color(0xffd46c), new Color(0xfff7b6)) {
@Override
protected void setSpeciesProperties(IAlleleBeeSpeciesCustom beeSpecies) {
beeSpecies.addSpecialty(PluginApiculture.items.beeComb.get(EnumHoneyComb.MELLOW, 1), 0.20f)
beeSpecies.addSpecialty(ForestryItem.beeComb.getItemStack(1, 16), 0.20f)
.setJubilanceProvider(new JubilanceProviderHermit())
.setHasEffect();
}
@Override
protected void setAlleles(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
AlleleHelper.instance.set(template, EnumBeeChromosome.EFFECT, AlleleEffect.effectRepulsion);
Allele.helper.set(template, EnumBeeChromosome.FLOWERING, EnumAllele.Flowering.FASTEST);
Allele.helper.set(template, EnumBeeChromosome.EFFECT, Allele.effectRepulsion);
}
@Override
@@ -997,7 +993,7 @@ public enum BeeDefinition implements IBeeDefinition {
setSpeciesProperties(species);
template = branch.getTemplate();
AlleleHelper.instance.set(template, EnumBeeChromosome.SPECIES, species);
Allele.helper.set(template, EnumBeeChromosome.SPECIES, species);
setAlleles(template);
genome = BeeManager.beeRoot.templateAsGenome(template);
@@ -10,7 +10,6 @@
******************************************************************************/
package forestry.apiculture.genetics;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.IAlleleBeeSpeciesCustom;
import forestry.api.apiculture.IBeeFactory;
import forestry.api.genetics.AlleleManager;
@@ -21,7 +20,7 @@ public class BeeFactory implements IBeeFactory {
@Override
public IAlleleBeeSpeciesCustom createSpecies(String uid, boolean dominant, String authority, String unlocalizedName, String unlocalizedDescription, IClassification branch, String binomial, int primaryColor, int secondaryColor) {
IAlleleBeeSpeciesCustom species = new AlleleBeeSpecies(uid, unlocalizedName, authority, unlocalizedDescription, dominant, branch, binomial, primaryColor, secondaryColor);
AlleleManager.alleleRegistry.registerAllele(species, EnumBeeChromosome.SPECIES);
AlleleManager.alleleRegistry.registerAllele(species);
return species;
}
@@ -41,13 +41,13 @@ import forestry.api.apiculture.IBeekeepingLogic;
import forestry.api.apiculture.IBeekeepingMode;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IChromosome;
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;
import forestry.plugins.PluginApiculture;
@@ -98,29 +98,24 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
}
@Override
public ItemStack getMemberStack(IIndividual individual, int type) {
if (!isMember(individual)) {
public ItemStack getMemberStack(IIndividual bee, int type) {
if (!isMember(bee)) {
return null;
}
IBee bee = (IBee) individual;
Item beeItem;
switch (EnumBeeType.VALUES[type]) {
case QUEEN:
beeItem = PluginApiculture.items.beeQueenGE;
// ensure a queen is always mated
if (bee.getMate() == null) {
bee.mate(bee);
}
beeItem = ForestryItem.beeQueenGE.item();
break;
case PRINCESS:
beeItem = PluginApiculture.items.beePrincessGE;
beeItem = ForestryItem.beePrincessGE.item();
break;
case DRONE:
beeItem = PluginApiculture.items.beeDroneGE;
beeItem = ForestryItem.beeDroneGE.item();
break;
case LARVAE:
beeItem = PluginApiculture.items.beeLarvaeGE;
beeItem = ForestryItem.beeLarvaeGE.item();
break;
default:
throw new RuntimeException("Cannot instantiate a bee of type " + type);
@@ -139,15 +134,13 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
return EnumBeeType.NONE;
}
Item item = stack.getItem();
if (PluginApiculture.items.beeDroneGE == item) {
if (ForestryItem.beeDroneGE.isItemEqual(stack)) {
return EnumBeeType.DRONE;
} else if (PluginApiculture.items.beePrincessGE == item) {
} else if (ForestryItem.beePrincessGE.isItemEqual(stack)) {
return EnumBeeType.PRINCESS;
} else if (PluginApiculture.items.beeQueenGE == item) {
} else if (ForestryItem.beeQueenGE.isItemEqual(stack)) {
return EnumBeeType.QUEEN;
} else if (PluginApiculture.items.beeLarvaeGE == item) {
} else if (ForestryItem.beeLarvaeGE.isItemEqual(stack)) {
return EnumBeeType.LARVAE;
}
@@ -196,8 +189,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
/* GENOME CONVERSIONS */
@Override
public IBeeGenome templateAsGenome(IAllele[] template) {
IChromosome[] chromosomes = templateAsChromosomes(template);
return new BeeGenome(chromosomes);
return new BeeGenome(templateAsChromosomes(template));
}
@Override
@@ -225,9 +217,7 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
@Override
public void registerTemplate(String identifier, IAllele[] template) {
IBeeGenome beeGenome = BeeManager.beeRoot.templateAsGenome(template);
IBee bee = new Bee(beeGenome);
beeTemplates.add(bee);
beeTemplates.add(new Bee(BeeManager.beeRoot.templateAsGenome(template)));
speciesTemplates.put(identifier, template);
}
@@ -328,13 +318,10 @@ public class BeeHelper extends SpeciesRoot implements IBeeRoot {
// Create a tracker if there is none yet.
if (tracker == null) {
tracker = new ApiaristTracker(filename);
tracker = new ApiaristTracker(filename, player);
world.setItemData(filename, tracker);
}
tracker.setUsername(player);
tracker.setWorld(world);
return tracker;
}
@@ -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.AlleleHelper;
import forestry.core.genetics.alleles.Allele;
public abstract class BeeVariation implements IBeeDefinition {
@@ -51,7 +51,7 @@ public abstract class BeeVariation implements IBeeDefinition {
@Override
protected void initializeTemplate(IAllele[] template) {
AlleleHelper.instance.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
Allele.helper.set(template, EnumBeeChromosome.TOLERANT_FLYER, true);
}
}
}
@@ -1,34 +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.genetics;
import forestry.api.apiculture.IBeeIconColourProvider;
public class DefaultBeeIconColourProvider implements IBeeIconColourProvider {
private final int primaryColour;
private final int secondaryColour;
public DefaultBeeIconColourProvider(int primaryColour, int secondaryColour) {
this.primaryColour = primaryColour;
this.secondaryColour = secondaryColour;
}
@Override
public int getIconColour(int renderPass) {
if (renderPass == 0) {
return primaryColour;
}
if (renderPass == 1) {
return secondaryColour;
}
return 0xffffff;
}
}
@@ -1,64 +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.genetics;
import java.util.Locale;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.util.IIcon;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.apiculture.EnumBeeType;
import forestry.api.apiculture.IBeeIconProvider;
import forestry.core.render.TextureManager;
public class DefaultBeeIconProvider implements IBeeIconProvider {
public static final DefaultBeeIconProvider instance = new DefaultBeeIconProvider();
private DefaultBeeIconProvider() {
}
private static final IIcon[][] icons = new IIcon[EnumBeeType.values().length][3];
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
String beeIconDir = "bees/default/";
IIcon body1 = TextureManager.registerTex(register, beeIconDir + "body1");
for (int i = 0; i < EnumBeeType.values().length; i++) {
EnumBeeType beeType = EnumBeeType.values()[i];
if (beeType == EnumBeeType.NONE) {
continue;
}
String beeTypeNameBase = beeIconDir + beeType.toString().toLowerCase(Locale.ENGLISH);
icons[i][0] = TextureManager.registerTex(register, beeTypeNameBase + ".outline");
if (beeType == EnumBeeType.LARVAE) {
icons[i][1] = TextureManager.registerTex(register, beeTypeNameBase + ".body");
} else {
icons[i][1] = body1;
}
icons[i][2] = TextureManager.registerTex(register, beeTypeNameBase + ".body2");
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(EnumBeeType type, int renderPass) {
return icons[type.ordinal()][renderPass];
}
}
@@ -13,19 +13,39 @@ package forestry.apiculture.genetics;
import java.util.List;
import net.minecraft.entity.EntityLiving;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.apiculture.genetics.alleles.AlleleEffect;
import forestry.core.utils.vect.Vect;
/**
* Hermits will not produce if there are any other living creatures nearby.
*/
public class JubilanceProviderHermit extends JubilanceDefault {
@Override
public boolean isJubilant(IAlleleBeeSpecies species, IBeeGenome genome, IBeeHousing housing) {
List<EntityLiving> list = AlleleEffect.getEntitiesInRange(genome, housing, EntityLiving.class);
AxisAlignedBB bounding = getBounding(genome, housing, 1.0f);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityLiving.class, bounding);
return list.size() <= 0;
}
private static AxisAlignedBB getBounding(IBeeGenome genome, IBeeHousing housing, float modifier) {
int[] areaAr = genome.getTerritory();
Vect area = new Vect(areaAr).multiply(modifier);
Vect offset = area.multiply(-1 / 2.0f);
ChunkCoordinates housingCoordinates = housing.getCoordinates();
Vect min = new Vect(housingCoordinates).add(offset);
Vect max = min.add(area);
return AxisAlignedBB.getBoundingBox(min.x, min.y, min.z, max.x, max.y, max.z);
}
}
@@ -13,6 +13,7 @@ package forestry.apiculture.genetics.alleles;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Locale;
import java.util.Map;
import net.minecraft.client.renderer.texture.IIconRegister;
@@ -26,38 +27,39 @@ import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.EnumBeeType;
import forestry.api.apiculture.IAlleleBeeSpeciesCustom;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeIconColourProvider;
import forestry.api.apiculture.IBeeIconProvider;
import forestry.api.apiculture.IBeeRoot;
import forestry.api.apiculture.IJubilanceProvider;
import forestry.api.core.IIconProvider;
import forestry.api.genetics.IClassification;
import forestry.api.genetics.IIndividual;
import forestry.apiculture.genetics.DefaultBeeIconColourProvider;
import forestry.apiculture.genetics.DefaultBeeIconProvider;
import forestry.apiculture.genetics.JubilanceDefault;
import forestry.core.genetics.alleles.AlleleSpecies;
import forestry.core.render.TextureManager;
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<>();
private final Map<ItemStack, Float> specialtyChances = new HashMap<>();
private IBeeIconProvider beeIconProvider;
private IBeeIconColourProvider beeIconColourProvider;
private IJubilanceProvider jubilanceProvider;
private final int primaryColour;
private final int secondaryColour;
private IBeeIconProvider beeIconProvider = DefaultBeeIconProvider.instance;
private IJubilanceProvider jubilanceProvider = JubilanceDefault.instance;
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);
super(uid, unlocalizedName, authority, unlocalizedDescription, dominant, branch, binomial, false);
beeIconProvider = DefaultBeeIconProvider.instance;
beeIconColourProvider = new DefaultBeeIconColourProvider(primaryColor, secondaryColor);
jubilanceProvider = JubilanceDefault.instance;
this.primaryColour = primaryColor;
this.secondaryColour = secondaryColor;
}
@Override
@@ -107,13 +109,12 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
return this;
}
/* RESEARCH */
@Override
public IAlleleBeeSpeciesCustom setCustomBeeIconColourProvider(IBeeIconColourProvider beeIconColourProvider) {
this.beeIconColourProvider = beeIconColourProvider;
return this;
public int getComplexity() {
return GeneticsUtil.getResearchComplexity(this, EnumBeeChromosome.SPECIES);
}
/* RESEARCH */
@Override
public float getResearchSuitability(ItemStack itemstack) {
if (itemstack == null) {
@@ -184,7 +185,13 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
@Override
public int getIconColour(int renderPass) {
return beeIconColourProvider.getIconColour(renderPass);
if (renderPass == 0) {
return primaryColour;
}
if (renderPass == 1) {
return secondaryColour;
}
return 0xffffff;
}
@Override
@@ -192,6 +199,48 @@ public class AlleleBeeSpecies extends AlleleSpecies implements IAlleleBeeSpecies
return null;
}
private static class DefaultBeeIconProvider implements IBeeIconProvider {
public static final DefaultBeeIconProvider instance = new DefaultBeeIconProvider();
private DefaultBeeIconProvider() {
}
private static final IIcon[][] icons = new IIcon[EnumBeeType.values().length][3];
@Override
@SideOnly(Side.CLIENT)
public void registerIcons(IIconRegister register) {
String beeIconDir = "bees/default/";
TextureManager textureManager = TextureManager.getInstance();
IIcon body1 = textureManager.registerTex(register, beeIconDir + "body1");
for (int i = 0; i < EnumBeeType.values().length; i++) {
EnumBeeType beeType = EnumBeeType.values()[i];
if (beeType == EnumBeeType.NONE) {
continue;
}
String beeTypeNameBase = beeIconDir + beeType.toString().toLowerCase(Locale.ENGLISH);
icons[i][0] = textureManager.registerTex(register, beeTypeNameBase + ".outline");
if (beeType == EnumBeeType.LARVAE) {
icons[i][1] = textureManager.registerTex(register, beeTypeNameBase + ".body");
} else {
icons[i][1] = body1;
}
icons[i][2] = textureManager.registerTex(register, beeTypeNameBase + ".body2");
}
}
@Override
@SideOnly(Side.CLIENT)
public IIcon getIcon(EnumBeeType type, int renderPass) {
return icons[type.ordinal()][renderPass];
}
}
private static class BeeIconProviderWrapper implements IIconProvider {
private final IBeeIconProvider beeIconProvider;
@@ -1,160 +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.genetics.alleles;
import java.util.Arrays;
import java.util.List;
import net.minecraft.entity.Entity;
import net.minecraft.potion.Potion;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.util.Vec3;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.EnumBeeChromosome;
import forestry.api.apiculture.IAlleleBeeEffect;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeModifier;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IEffectData;
import forestry.core.genetics.alleles.AlleleCategorized;
import forestry.core.proxy.Proxies;
import forestry.core.utils.EntityUtil;
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;
public static void createAlleles() {
List<IAlleleBeeEffect> beeEffects = Arrays.asList(
effectNone = new AlleleEffectNone("none", true),
effectAggressive = new AlleleEffectAggressive(),
effectHeroic = new AlleleEffectHeroic(),
effectBeatific = new AlleleEffectPotion("beatific", false, Potion.regeneration, 100),
effectMiasmic = new AlleleEffectPotion("miasmic", false, Potion.poison, 600, 100, 0.1f),
effectMisanthrope = new AlleleEffectMisanthrope(),
effectGlacial = new AlleleEffectGlacial(),
effectRadioactive = new AlleleEffectRadioactive(),
effectCreeper = new AlleleEffectCreeper(),
effectIgnition = new AlleleEffectIgnition(),
effectExploration = new AlleleEffectExploration(),
effectFestiveEaster = new AlleleEffectNone("festiveEaster", true),
effectSnowing = new AlleleEffectSnowing(),
effectDrunkard = new AlleleEffectPotion("drunkard", false, Potion.confusion, 100),
effectReanimation = new AlleleEffectResurrection("reanimation", AlleleEffectResurrection.getReanimationList()),
effectResurrection = new AlleleEffectResurrection("resurrection", AlleleEffectResurrection.getResurrectionList()),
effectRepulsion = new AlleleEffectRepulsion(),
effectFertile = new AlleleEffectFertile(),
effectMycophilic = new AlleleEffectFungification()
);
for (IAlleleBeeEffect beeEffect : beeEffects) {
AlleleManager.alleleRegistry.registerAllele(beeEffect, EnumBeeChromosome.EFFECT);
}
}
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) {
Vec3 beeFXCoordinates = getFXCoordinates(housing);
Proxies.render.addBeeHiveFX("particles/swarm_bee", housing.getWorld(), beeFXCoordinates.xCoord, beeFXCoordinates.yCoord, beeFXCoordinates.zCoord, genome.getPrimary().getIconColour(0));
return storedData;
}
protected Vec3 getFXCoordinates(IBeeHousing housing) {
try {
return housing.getBeeFXCoordinates();
} catch (Throwable error) {
// getBeeFXCoordinates() is only newly added to the API, fall back on getCoordinates()
ChunkCoordinates coordinates = housing.getCoordinates();
return Vec3.createVectorHelper(coordinates.posX + 0.5D, coordinates.posY + 0.5D, coordinates.posZ + 0.5D);
}
}
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);
}
public static 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);
}
public static <T extends Entity> List<T> getEntitiesInRange(IBeeGenome genome, IBeeHousing housing, Class<T> entityClass) {
AxisAlignedBB boundingBox = getBounding(genome, housing);
return EntityUtil.getEntitiesWithinAABB(housing.getWorld(), entityClass, boundingBox);
}
}
@@ -13,6 +13,8 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import forestry.api.apiculture.BeeManager;
@@ -22,6 +24,7 @@ import forestry.api.genetics.IEffectData;
import forestry.core.utils.DamageSourceForestry;
public class AlleleEffectAggressive extends AlleleEffectThrottled {
private static final DamageSource damageSourceBeeAggressive = new DamageSourceForestry("bee.aggressive");
public AlleleEffectAggressive() {
@@ -30,15 +33,29 @@ public class AlleleEffectAggressive extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityLivingBase> entities = getEntitiesInRange(genome, housing, EntityLivingBase.class);
for (EntityLivingBase entity : entities) {
AxisAlignedBB hurtBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityLivingBase.class, hurtBox);
for (Object obj : list) {
EntityLivingBase entity = (EntityLivingBase) obj;
int damage = 4;
// Entities are not attacked if they wear a full set of apiarist's armor.
int count = BeeManager.armorApiaristHelper.wearsItems(entity, getUID(), true);
damage -= count;
if (damage <= 0) {
continue;
// Players are not attacked if they wear a full set of apiarist's
// armor.
if (entity instanceof EntityPlayer) {
int count = BeeManager.armorApiaristHelper.wearsItems((EntityPlayer) entity, getUID(), true);
// Full set, no damage/effect
if (count > 3) {
continue;
} else if (count > 2) {
damage = 1;
} else if (count > 1) {
damage = 2;
} else if (count > 0) {
damage = 3;
}
}
entity.attackEntityFrom(damageSourceBeeAggressive, damage);
@@ -13,6 +13,7 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
@@ -58,15 +59,24 @@ public class AlleleEffectCreeper extends AlleleEffectThrottled {
return storedData;
}
List<EntityPlayer> players = getEntitiesInRange(genome, housing, EntityPlayer.class);
for (EntityPlayer player : players) {
AxisAlignedBB infectionBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = world.getEntitiesWithinAABB(EntityPlayer.class, infectionBox);
for (Object obj : list) {
EntityPlayer player = (EntityPlayer) obj;
int chance = explosionChance;
storedData.setInteger(indexExplosionForce, defaultForce);
// Entities are not attacked if they wear a full set of apiarist's armor.
// Players are not attacked if they wear a full set of apiarist's
// armor.
int count = BeeManager.armorApiaristHelper.wearsItems(player, getUID(), true);
// Full set, no damage/effect
if (count > 3) {
continue; // Full set, no damage/effect
continue;
} else if (count > 2) {
chance = 5;
storedData.setInteger(indexExplosionForce, 6);
@@ -84,7 +94,8 @@ public class AlleleEffectCreeper extends AlleleEffectThrottled {
world.playSoundEffect(housingCoords.posX, housingCoords.posY, housingCoords.posZ, "mob.creeper", 4F,
(1.0F + (world.rand.nextFloat() - world.rand.nextFloat()) * 0.2F) * 0.7F);
storedData.setInteger(indexExplosionTimer, 2); // Set explosion timer
storedData.setInteger(indexExplosionTimer, 2); // Set explosion
// timer
}
return storedData;
@@ -13,6 +13,7 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
@@ -26,8 +27,13 @@ public class AlleleEffectExploration extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityPlayer> players = getEntitiesInRange(genome, housing, EntityPlayer.class);
for (EntityPlayer player : players) {
AxisAlignedBB beatifyBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityPlayer.class, beatifyBox);
for (Object obj : list) {
EntityPlayer player = (EntityPlayer) obj;
player.addExperience(2);
}
@@ -13,12 +13,9 @@ package forestry.apiculture.genetics.alleles;
import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.block.IGrowable;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraftforge.common.IPlantable;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
@@ -61,8 +58,8 @@ public class AlleleEffectFertile extends AlleleEffectThrottled {
private static boolean tryTickColumn(World world, int x, int z, int maxY, int minY) {
for (int y = maxY; y >= minY; --y) {
Block block = world.getBlock(x, y, z);
if (block.getTickRandomly() && (block instanceof IGrowable || block instanceof IPlantable)) {
if (!world.isAirBlock(x, y, z)) {
Block block = world.getBlock(x, y, z);
world.scheduleBlockUpdate(x, y, z, block, 5);
return true;
}
@@ -7,6 +7,7 @@ import net.minecraft.block.Block;
import net.minecraft.entity.passive.EntityCow;
import net.minecraft.entity.passive.EntityMooshroom;
import net.minecraft.init.Blocks;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraft.world.gen.feature.WorldGenBigMushroom;
@@ -77,10 +78,16 @@ public class AlleleEffectFungification extends AlleleEffectThrottled {
}
private static void doEntityEffect(IBeeGenome genome, IBeeHousing housing) {
List<EntityCow> cows = getEntitiesInRange(genome, housing, EntityCow.class);
for (EntityCow cow : cows) {
convertCowToMooshroom(cow);
private void doEntityEffect(IBeeGenome genome, IBeeHousing housing) {
AxisAlignedBB aabb = this.getBounding(genome, housing);
World world = housing.getWorld();
List entities = world.getEntitiesWithinAABB(EntityCow.class, aabb);
for (Object entity : entities) {
if (entity instanceof EntityCow && !(entity instanceof EntityMooshroom)) {
convertCowToMooshroom((EntityCow) entity);
break;
}
}
}
@@ -97,9 +104,6 @@ public class AlleleEffectFungification extends AlleleEffectThrottled {
}
private static void convertCowToMooshroom(EntityCow cow) {
if (cow instanceof EntityMooshroom) {
return;
}
World worldObj = cow.worldObj;
cow.setDead();
EntityMooshroom mooshroom = new EntityMooshroom(worldObj);
@@ -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.config.Constants;
import forestry.core.proxy.Proxies;
import forestry.core.utils.vect.Vect;
public class AlleleEffectGlacial extends AlleleEffectThrottled {
@@ -61,7 +61,7 @@ public class AlleleEffectGlacial extends AlleleEffectThrottled {
continue;
}
world.setBlock(posBlock.x, posBlock.y, posBlock.z, Blocks.ice, 0, Constants.FLAG_BLOCK_SYNCH_AND_UPDATE);
Proxies.common.setBlockWithNotify(world, posBlock.x, posBlock.y, posBlock.z, Blocks.ice);
}
return storedData;
@@ -13,15 +13,14 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
import forestry.core.utils.DamageSourceForestry;
public class AlleleEffectHeroic extends AlleleEffectThrottled {
private static final DamageSource damageSourceBeeHeroic = new DamageSourceForestry("bee.heroic");
public AlleleEffectHeroic() {
super("heroic", false, 40, true, false);
@@ -29,11 +28,16 @@ public class AlleleEffectHeroic extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityMob> mobs = getEntitiesInRange(genome, housing, EntityMob.class);
for (EntityMob mob : mobs) {
mob.attackEntityFrom(damageSourceBeeHeroic, 2);
AxisAlignedBB hurtBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityMob.class, hurtBox);
for (Object obj : list) {
EntityMob mob = (EntityMob) obj;
mob.attackEntityFrom(DamageSource.generic, 2);
}
return storedData;
}
}
@@ -13,7 +13,8 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.util.Vec3;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
@@ -23,6 +24,7 @@ import forestry.api.genetics.IEffectData;
import forestry.core.proxy.Proxies;
public class AlleleEffectIgnition extends AlleleEffectThrottled {
private static final int ignitionChance = 50;
private static final int fireDuration = 500;
@@ -32,25 +34,35 @@ public class AlleleEffectIgnition extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
World world = housing.getWorld();
List<EntityLivingBase> entities = getEntitiesInRange(genome, housing, EntityLivingBase.class);
for (EntityLivingBase entity : entities) {
AxisAlignedBB hurtBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = world.getEntitiesWithinAABB(EntityLivingBase.class, hurtBox);
for (Object obj : list) {
EntityLivingBase entity = (EntityLivingBase) obj;
int chance = ignitionChance;
int duration = fireDuration;
// Entities are not attacked if they wear a full set of apiarist's armor.
int count = BeeManager.armorApiaristHelper.wearsItems(entity, getUID(), true);
if (count > 3) {
continue; // Full set, no damage/effect
} else if (count > 2) {
chance = 5;
duration = 50;
} else if (count > 1) {
chance = 20;
duration = 200;
} else if (count > 0) {
chance = 35;
duration = 350;
// Players are not attacked if they wear a full set of apiarist's armor.
if (entity instanceof EntityPlayer) {
int count = BeeManager.armorApiaristHelper.wearsItems((EntityPlayer) entity, getUID(), true);
// Full set, no damage/effect
if (count > 3) {
continue;
} else if (count > 2) {
chance = 5;
duration = 50;
} else if (count > 1) {
chance = 20;
duration = 200;
} else if (count > 0) {
chance = 35;
duration = 350;
}
}
if (world.rand.nextInt(1000) >= chance) {
@@ -68,8 +80,7 @@ public class AlleleEffectIgnition extends AlleleEffectThrottled {
if (housing.getWorld().rand.nextInt(2) != 0) {
super.doFX(genome, storedData, housing);
} else {
Vec3 beeFXCoordinates = getFXCoordinates(housing);
Proxies.render.addEntityIgnitionFX(housing.getWorld(), beeFXCoordinates.xCoord, beeFXCoordinates.yCoord + 0.5, beeFXCoordinates.zCoord);
Proxies.common.addEntityIgnitionFX(housing.getWorld(), housing.getCoordinates().posX + 0.5, housing.getCoordinates().posY + 1, housing.getCoordinates().posZ + 0.5);
}
return storedData;
}
@@ -13,6 +13,7 @@ package forestry.apiculture.genetics.alleles;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import forestry.api.apiculture.BeeManager;
@@ -31,15 +32,28 @@ public class AlleleEffectMisanthrope extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityPlayer> players = getEntitiesInRange(genome, housing, EntityPlayer.class);
for (EntityPlayer player : players) {
AxisAlignedBB beatifyBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityPlayer.class, beatifyBox);
for (Object obj : list) {
EntityPlayer player = (EntityPlayer) obj;
int damage = 4;
// Entities are not attacked if they wear a full set of apiarist's armor.
// Players are not attacked if they wear a full set of apiarist's
// armor.
int count = BeeManager.armorApiaristHelper.wearsItems(player, getUID(), true);
damage -= count;
if (damage <= 0) {
// Full set, no damage/effect
if (count > 3) {
continue;
} else if (count > 2) {
damage = 1;
} else if (count > 1) {
damage = 2;
} else if (count > 0) {
damage = 3;
}
player.attackEntityFrom(damageSourceBeeEnd, damage);
@@ -1,17 +1,87 @@
/*******************************************************************************
* 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);
}
}
/*******************************************************************************
* 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.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 = 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);
}
}
@@ -14,12 +14,12 @@ import java.util.Collection;
import java.util.Collections;
import java.util.List;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.monster.IMob;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.potion.Potion;
import net.minecraft.potion.PotionEffect;
import net.minecraft.potion.PotionHelper;
import net.minecraft.util.Vec3;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.ReflectionHelper;
@@ -56,17 +56,26 @@ public class AlleleEffectPotion extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
World world = housing.getWorld();
List<EntityLivingBase> entities = getEntitiesInRange(genome, housing, EntityLivingBase.class);
for (EntityLivingBase entity : entities) {
AxisAlignedBB effectArea = getBounding(genome, housing);
List list = housing.getWorld().getEntitiesWithinAABB(EntityPlayer.class, effectArea);
for (Object entity : list) {
if (!(entity instanceof EntityPlayer)) {
continue;
}
if (world.rand.nextFloat() >= chance) {
continue;
}
EntityPlayer player = (EntityPlayer) entity;
int dur = this.duration;
if (isBadEffect) {
// Entities are not attacked if they wear a full set of apiarist's armor.
int count = BeeManager.armorApiaristHelper.wearsItems(entity, getUID(), true);
// Players are not attacked if they wear a full set of apiarist's armor.
int count = BeeManager.armorApiaristHelper.wearsItems((EntityPlayer) entity, getUID(), true);
if (count >= 4) {
continue; // Full set, no damage/effect
} else if (count == 3) {
@@ -76,14 +85,9 @@ public class AlleleEffectPotion extends AlleleEffectThrottled {
} else if (count == 1) {
dur = this.duration * 3 / 4;
}
} else {
// don't apply positive effects to mobs
if (entity instanceof IMob) {
continue;
}
}
entity.addPotionEffect(new PotionEffect(potion.getId(), dur, 0));
player.addPotionEffect(new PotionEffect(potion.getId(), dur, 0));
}
return storedData;
@@ -104,8 +108,8 @@ public class AlleleEffectPotion extends AlleleEffectThrottled {
if (housing.getWorld().rand.nextBoolean()) {
super.doFX(genome, storedData, housing);
} else {
Vec3 beeFXCoordinates = getFXCoordinates(housing);
Proxies.render.addEntityPotionFX(housing.getWorld(), beeFXCoordinates.xCoord, beeFXCoordinates.yCoord + 0.5, beeFXCoordinates.zCoord, potionFXColor);
ChunkCoordinates coords = housing.getCoordinates();
Proxies.common.addEntityPotionFX(housing.getWorld(), coords.posX + 0.5, coords.posY + 1, coords.posZ + 0.5, potionFXColor);
}
return storedData;
}
@@ -15,7 +15,9 @@ import java.util.Random;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.tileentity.TileEntity;
import net.minecraft.util.AxisAlignedBB;
import net.minecraft.util.DamageSource;
import net.minecraft.world.World;
@@ -24,6 +26,7 @@ import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.genetics.IEffectData;
import forestry.apiculture.blocks.BlockAlveary;
import forestry.apiculture.multiblock.TileAlveary;
import forestry.core.utils.DamageSourceForestry;
import forestry.core.utils.vect.Vect;
@@ -37,38 +40,54 @@ public class AlleleEffectRadioactive extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
harmEntities(genome, housing);
return destroyEnvironment(genome, storedData, housing);
}
private void harmEntities(IBeeGenome genome, IBeeHousing housing) {
List<EntityLivingBase> entities = getEntitiesInRange(genome, housing, EntityLivingBase.class);
for (EntityLivingBase entity : entities) {
int damage = 8;
// Entities are not attacked if they wear a full set of apiarist's armor.
int count = BeeManager.armorApiaristHelper.wearsItems(entity, getUID(), true);
damage -= count;
if (damage <= 0) {
continue;
}
entity.attackEntityFrom(damageSourceBeeRadioactive, damage);
}
}
private static IEffectData destroyEnvironment(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
World world = housing.getWorld();
Random rand = world.rand;
int[] areaAr = genome.getTerritory();
Vect area = new Vect(areaAr).multiply(2);
Vect offset = area.multiply(-1 / 2.0f);
Vect posHousing = new Vect(housing.getCoordinates());
// Radioactivity hurts players and mobs
Vect min = new Vect(housing.getCoordinates()).add(offset);
Vect max = min.add(area);
AxisAlignedBB hurtBox = AxisAlignedBB.getBoundingBox(min.x, min.y, min.z, max.x, max.y, max.z);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityLivingBase.class, hurtBox);
for (Object obj : list) {
EntityLivingBase entity = (EntityLivingBase) obj;
int damage = 8;
// Players are not attacked if they wear a full set of apiarist's
// armor.
if (entity instanceof EntityPlayer) {
int count = BeeManager.armorApiaristHelper.wearsItems((EntityPlayer) entity, getUID(), true);
// Full set, no damage/effect
if (count > 3) {
continue;
} else if (count > 2) {
damage = 1;
} else if (count > 1) {
damage = 2;
} else if (count > 0) {
damage = 3;
}
}
entity.attackEntityFrom(damageSourceBeeRadioactive, damage);
}
Random rand = housing.getWorld().rand;
// Radioactivity destroys environment
for (int i = 0; i < 20; i++) {
Vect randomPos = Vect.getRandomPositionInArea(rand, area);
Vect posHousing = new Vect(housing.getCoordinates());
Vect posBlock = randomPos.add(posHousing);
posBlock = posBlock.add(offset);
@@ -95,6 +114,9 @@ public class AlleleEffectRadioactive extends AlleleEffectThrottled {
if (tile instanceof IBeeHousing) {
continue;
}
if (tile instanceof TileAlveary) {
continue;
}
if (block.getBlockHardness(world, posBlock.x, posBlock.y, posBlock.z) < 0) {
continue;
@@ -14,6 +14,7 @@ import java.util.List;
import net.minecraft.entity.ai.EntityAITasks.EntityAITaskEntry;
import net.minecraft.entity.monster.EntityMob;
import net.minecraft.util.AxisAlignedBB;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
@@ -28,24 +29,31 @@ public class AlleleEffectRepulsion extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityMob> mobs = getEntitiesInRange(genome, housing, EntityMob.class);
for (EntityMob mob : mobs) {
if (!isMobAvoidingPlayers(mob)) {
mob.tasks.addTask(3, new AIAvoidPlayers(mob, 6.0f, 0.25f, 0.3f));
mob.tasks.onUpdateTasks();
if (housing.getOwner() == null) {
return storedData;
}
AxisAlignedBB hurtBox = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityMob.class, hurtBox);
for (Object obj : list) {
EntityMob mob = (EntityMob) obj;
for (Object objT : mob.tasks.taskEntries) {
EntityAITaskEntry task = (EntityAITaskEntry) objT;
if (task.action instanceof AIAvoidPlayers) {
return storedData;
}
}
mob.tasks.addTask(3, new AIAvoidPlayers(mob, 6.0f, 0.25f, 0.3f));
mob.tasks.onUpdateTasks();
}
return storedData;
}
private boolean isMobAvoidingPlayers(EntityMob mob) {
for (Object objT : mob.tasks.taskEntries) {
EntityAITaskEntry task = (EntityAITaskEntry) objT;
if (task.action instanceof AIAvoidPlayers) {
return true;
}
}
return false;
}
}
@@ -28,6 +28,7 @@ import net.minecraft.entity.monster.EntityZombie;
import net.minecraft.init.Blocks;
import net.minecraft.init.Items;
import net.minecraft.item.ItemStack;
import net.minecraft.util.AxisAlignedBB;
import forestry.api.apiculture.IBeeGenome;
import forestry.api.apiculture.IBeeHousing;
@@ -78,37 +79,35 @@ public class AlleleEffectResurrection extends AlleleEffectThrottled {
@Override
public IEffectData doEffectThrottled(IBeeGenome genome, IEffectData storedData, IBeeHousing housing) {
List<EntityItem> entities = getEntitiesInRange(genome, housing, EntityItem.class);
if (entities.size() == 0) {
return storedData;
AxisAlignedBB bounding = getBounding(genome, housing);
@SuppressWarnings("rawtypes")
List list = housing.getWorld().getEntitiesWithinAABB(EntityItem.class, bounding);
if (list.size() > 0) {
Collections.shuffle(resurrectables);
}
Collections.shuffle(resurrectables);
for (Object obj : list) {
EntityItem item = (EntityItem) obj;
if (item.isDead) {
continue;
}
for (EntityItem entity : entities) {
if (resurrectEntity(entity)) {
break;
ItemStack contained = item.getEntityItem();
for (Resurrectable entry : resurrectables) {
if (ItemStackUtil.isIdenticalItem(entry.res, contained)) {
EntityUtil.spawnEntity(housing.getWorld(), entry.risen, item.posX, item.posY, item.posZ);
contained.stackSize--;
if (contained.stackSize <= 0) {
item.setDead();
}
break;
}
}
}
return storedData;
}
private boolean resurrectEntity(EntityItem entity) {
if (entity.isDead) {
return false;
}
ItemStack contained = entity.getEntityItem();
for (Resurrectable entry : resurrectables) {
if (ItemStackUtil.isIdenticalItem(entry.res, contained)) {
EntityUtil.spawnEntity(entity.worldObj, entry.risen, entity.posX, entity.posY, entity.posZ);
contained.stackSize--;
if (contained.stackSize <= 0) {
entity.setDead();
}
return true;
}
}
return false;
}
}
@@ -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)) {
world.setBlock(posBlock.x, posBlock.y, posBlock.z, Blocks.snow_layer, 0, Constants.FLAG_BLOCK_SYNCH_AND_UPDATE);
Proxies.common.setBlockWithNotify(world, posBlock.x, posBlock.y, posBlock.z, Blocks.snow_layer);
}
}
@@ -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.render.addEntitySnowFX(world, spawn.x, spawn.y, spawn.z);
Proxies.common.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 AlleleEffect {
public abstract class AlleleEffectThrottled extends AlleleEffectNone {
private boolean isCombinable = false;
private final int throttle;
@@ -12,15 +12,32 @@ package forestry.apiculture.gui;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.multiblock.TileAlveary;
import forestry.apiculture.BeeHousingInventory;
import forestry.apiculture.multiblock.TileAlvearyPlain;
import forestry.core.gui.ContainerTile;
import forestry.core.network.packets.PacketGuiUpdate;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
import forestry.core.network.PacketGuiUpdate;
public class ContainerAlveary extends ContainerTile<TileAlveary> {
public class ContainerAlveary extends ContainerTile<TileAlvearyPlain> {
public ContainerAlveary(InventoryPlayer player, TileAlveary tile) {
public ContainerAlveary(InventoryPlayer player, TileAlvearyPlain tile) {
super(tile, player, 8, 108);
ContainerBeeHelper.addSlots(this, tile, false);
// Queen/Princess
this.addSlotToContainer(new SlotFiltered(tile, BeeHousingInventory.SLOT_QUEEN, 29, 39));
// Drone
this.addSlotToContainer(new SlotFiltered(tile, BeeHousingInventory.SLOT_DRONE, 29, 65));
// Product Inventory
this.addSlotToContainer(new SlotOutput(tile, 2, 116, 52));
this.addSlotToContainer(new SlotOutput(tile, 3, 137, 39));
this.addSlotToContainer(new SlotOutput(tile, 4, 137, 65));
this.addSlotToContainer(new SlotOutput(tile, 5, 116, 78));
this.addSlotToContainer(new SlotOutput(tile, 6, 95, 65));
this.addSlotToContainer(new SlotOutput(tile, 7, 95, 39));
this.addSlotToContainer(new SlotOutput(tile, 8, 116, 26));
}
@Override
@@ -12,7 +12,6 @@ package forestry.apiculture.gui;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.inventory.InventoryHygroregulator;
import forestry.apiculture.multiblock.TileAlvearyHygroregulator;
import forestry.core.gui.ContainerLiquidTanks;
import forestry.core.gui.slots.SlotFiltered;
@@ -22,7 +21,7 @@ public class ContainerAlvearyHygroregulator extends ContainerLiquidTanks<TileAlv
public ContainerAlvearyHygroregulator(InventoryPlayer playerInventory, TileAlvearyHygroregulator tile) {
super(tile, playerInventory, 8, 84);
this.addSlotToContainer(new SlotFiltered(tile, InventoryHygroregulator.SLOT_INPUT, 56, 38));
this.addSlotToContainer(new SlotFiltered(tile, TileAlvearyHygroregulator.HygroInventory.SLOT_INPUT, 56, 38));
}
}
@@ -12,25 +12,21 @@ package forestry.apiculture.gui;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.inventory.InventoryAlvearySieve;
import forestry.apiculture.multiblock.TileAlvearySieve;
import forestry.core.gui.ContainerTile;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
import forestry.core.inventory.watchers.ISlotPickupWatcher;
public class ContainerAlvearySieve extends ContainerTile<TileAlvearySieve> {
public ContainerAlvearySieve(InventoryPlayer player, TileAlvearySieve tile) {
super(tile, player, 8, 87);
ISlotPickupWatcher crafter = tile.getCrafter();
addSlotToContainer(new SlotOutput(tile, 0, 94, 52).setCrafter(tile));
addSlotToContainer(new SlotOutput(tile, 1, 115, 39).setCrafter(tile));
addSlotToContainer(new SlotOutput(tile, 2, 73, 39).setCrafter(tile));
addSlotToContainer(new SlotOutput(tile, 3, 94, 26).setCrafter(tile));
addSlotToContainer(new SlotOutput(tile, 0, 94, 52).setPickupWatcher(crafter));
addSlotToContainer(new SlotOutput(tile, 1, 115, 39).setPickupWatcher(crafter));
addSlotToContainer(new SlotOutput(tile, 2, 73, 39).setPickupWatcher(crafter));
addSlotToContainer(new SlotOutput(tile, 3, 94, 26).setPickupWatcher(crafter));
addSlotToContainer(new SlotFiltered(tile, InventoryAlvearySieve.SLOT_SIEVE, 43, 39).setPickupWatcher(crafter));
addSlotToContainer(new SlotFiltered(tile, TileAlvearySieve.AlvearySieveInventory.SLOT_SIEVE, 43, 39).setCrafter(tile));
}
}
@@ -1,48 +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.gui;
import net.minecraft.inventory.IInventory;
import forestry.apiculture.InventoryBeeHousing;
import forestry.apiculture.inventory.InventoryApiary;
import forestry.core.gui.ContainerForestry;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
import forestry.core.tiles.IFilterSlotDelegate;
public abstract class ContainerBeeHelper {
public static <T extends IInventory & IFilterSlotDelegate> void addSlots(ContainerForestry container, T inventory, boolean hasFrames) {
// Queen/Princess
container.addSlotToContainer(new SlotFiltered(inventory, InventoryBeeHousing.SLOT_QUEEN, 29, 39));
// Drone
container.addSlotToContainer(new SlotFiltered(inventory, InventoryBeeHousing.SLOT_DRONE, 29, 65));
// Frames
if (hasFrames) {
int slotFrames = InventoryApiary.SLOT_FRAMES_1;
container.addSlotToContainer(new SlotFiltered(inventory, slotFrames++, 66, 23));
container.addSlotToContainer(new SlotFiltered(inventory, slotFrames++, 66, 52));
container.addSlotToContainer(new SlotFiltered(inventory, slotFrames, 66, 81));
}
// Product Inventory
int slotProduct = InventoryBeeHousing.SLOT_PRODUCT_1;
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 116, 52));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 137, 39));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 137, 65));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 116, 78));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 95, 65));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct++, 95, 39));
container.addSlotToContainer(new SlotOutput(inventory, slotProduct, 116, 26));
}
}
@@ -11,30 +11,54 @@
package forestry.apiculture.gui;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.inventory.ICrafting;
import forestry.apiculture.tiles.TileBeeHousingBase;
import forestry.apiculture.BeeHousingInventory;
import forestry.apiculture.tiles.TileAbstractBeeHousing;
import forestry.apiculture.tiles.TileApiary;
import forestry.core.gui.ContainerTile;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.packets.PacketGuiUpdate;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
public class ContainerBeeHousing extends ContainerTile<TileBeeHousingBase> implements IContainerBeeHousing {
public class ContainerBeeHousing extends ContainerTile<TileAbstractBeeHousing> {
public ContainerBeeHousing(InventoryPlayer player, TileBeeHousingBase tile, boolean hasFrames) {
public ContainerBeeHousing(InventoryPlayer player, TileAbstractBeeHousing tile, boolean hasFrames) {
super(tile, player, 8, 108);
ContainerBeeHelper.addSlots(this, tile, hasFrames);
// Queen/Princess
this.addSlotToContainer(new SlotFiltered(tile, BeeHousingInventory.SLOT_QUEEN, 29, 39));
// Drone
this.addSlotToContainer(new SlotFiltered(tile, BeeHousingInventory.SLOT_DRONE, 29, 65));
// Frames
if (hasFrames) {
final int slotFrames1 = TileApiary.ApiaryInventory.SLOT_FRAMES_1;
this.addSlotToContainer(new SlotFiltered(tile, slotFrames1, 66, 23));
this.addSlotToContainer(new SlotFiltered(tile, slotFrames1 + 1, 66, 52));
this.addSlotToContainer(new SlotFiltered(tile, slotFrames1 + 2, 66, 81));
}
// Product Inventory
this.addSlotToContainer(new SlotOutput(tile, 2, 116, 52));
this.addSlotToContainer(new SlotOutput(tile, 3, 137, 39));
this.addSlotToContainer(new SlotOutput(tile, 4, 137, 65));
this.addSlotToContainer(new SlotOutput(tile, 5, 116, 78));
this.addSlotToContainer(new SlotOutput(tile, 6, 95, 65));
this.addSlotToContainer(new SlotOutput(tile, 7, 95, 39));
this.addSlotToContainer(new SlotOutput(tile, 8, 116, 26));
}
private int beeProgress = 0;
@Override
public void updateProgressBar(int i, int j) {
tile.getGUINetworkData(i, j);
}
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
int beeProgress = tile.getBeekeepingLogic().getBeeProgressPercent();
if (this.beeProgress != beeProgress) {
this.beeProgress = beeProgress;
IForestryPacketClient packet = new PacketGuiUpdate(tile);
sendPacketToCrafters(packet);
for (Object crafter : crafters) {
tile.sendGUINetworkData(this, (ICrafting) crafter);
}
}
@@ -12,14 +12,14 @@ package forestry.apiculture.gui;
import net.minecraft.entity.player.EntityPlayer;
import forestry.apiculture.inventory.ItemInventoryHabitatLocator;
import forestry.apiculture.items.ItemHabitatLocator.HabitatLocatorInventory;
import forestry.core.gui.ContainerItemInventory;
import forestry.core.gui.slots.SlotFiltered;
import forestry.core.gui.slots.SlotOutput;
public class ContainerHabitatLocator extends ContainerItemInventory<ItemInventoryHabitatLocator> {
public class ContainerHabitatLocator extends ContainerItemInventory<HabitatLocatorInventory> {
public ContainerHabitatLocator(EntityPlayer player, ItemInventoryHabitatLocator inventory) {
public ContainerHabitatLocator(EntityPlayer player, HabitatLocatorInventory inventory) {
super(inventory, player.inventory, 8, 102);
// Energy
@@ -10,21 +10,26 @@
******************************************************************************/
package forestry.apiculture.gui;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.apiculture.inventory.ItemInventoryImprinter;
import forestry.apiculture.network.packets.PacketImprintSelectionResponse;
import forestry.apiculture.items.ItemImprinter.ImprinterInventory;
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.packets.PacketGuiSelectRequest;
import forestry.core.network.ForestryPacket;
import forestry.core.network.PacketGuiSelect;
import forestry.core.network.PacketId;
import forestry.core.proxy.Proxies;
public class ContainerImprinter extends ContainerItemInventory<ItemInventoryImprinter> implements IGuiSelectable {
public class ContainerImprinter extends ContainerItemInventory<ImprinterInventory> implements IGuiSelectable {
public ContainerImprinter(InventoryPlayer inventoryplayer, ItemInventoryImprinter inventory) {
private boolean isNetSynced = false;
public ContainerImprinter(InventoryPlayer inventoryplayer, ImprinterInventory inventory) {
super(inventory, inventoryplayer, 8, 103);
// Input
@@ -34,26 +39,67 @@ public class ContainerImprinter extends ContainerItemInventory<ItemInventoryImpr
}
@Override
public void handleSelectionRequest(EntityPlayerMP player, PacketGuiSelectRequest packetRequest) {
if (packetRequest.getPrimaryIndex() == 0) {
if (packetRequest.getSecondaryIndex() == 0) {
inventory.advancePrimary();
} else {
inventory.regressPrimary();
}
} else {
if (packetRequest.getSecondaryIndex() == 0) {
inventory.advanceSecondary();
} else {
inventory.regressSecondary();
}
public void onContainerClosed(EntityPlayer entityplayer) {
if (entityplayer.worldObj.isRemote) {
return;
}
PacketImprintSelectionResponse packetResponse = new PacketImprintSelectionResponse(inventory.getPrimaryIndex(), inventory.getSecondaryIndex());
Proxies.net.sendToPlayer(packetResponse, player);
// 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 setSelection(PacketImprintSelectionResponse packetPayload) {
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;
}
@Override
public void handleSelectionChange(EntityPlayer player, PacketGuiSelect packet) {
if (packet.getSecondaryIndex() == 0) {
if (packet.getPrimaryIndex() == 0) {
inventory.advancePrimary();
} else {
inventory.advanceSecondary();
}
} else if (packet.getPrimaryIndex() == 0) {
inventory.regressPrimary();
} else {
inventory.regressSecondary();
}
}
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) {
inventory.setPrimaryIndex(packetPayload.getPrimaryIndex());
inventory.setSecondaryIndex(packetPayload.getSecondaryIndex());
}
@@ -1,40 +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.gui;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.entities.EntityMinecartBeeHousingBase;
import forestry.core.gui.ContainerEntity;
import forestry.core.network.IForestryPacketClient;
import forestry.core.network.packets.PacketGuiUpdateEntity;
public class ContainerMinecartBeehouse extends ContainerEntity<EntityMinecartBeeHousingBase> implements IContainerBeeHousing {
public ContainerMinecartBeehouse(InventoryPlayer player, EntityMinecartBeeHousingBase entity, boolean hasFrames) {
super(entity, player, 8, 108);
ContainerBeeHelper.addSlots(this, entity, hasFrames);
}
private int beeProgress = 0;
@Override
public void detectAndSendChanges() {
super.detectAndSendChanges();
int beeProgress = entity.getBeekeepingLogic().getBeeProgressPercent();
if (this.beeProgress != beeProgress) {
this.beeProgress = beeProgress;
IForestryPacketClient packet = new PacketGuiUpdateEntity(entity, entity);
sendPacketToCrafters(packet);
}
}
}
@@ -12,15 +12,16 @@ package forestry.apiculture.gui;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.multiblock.IAlvearyControllerInternal;
import forestry.apiculture.multiblock.TileAlveary;
import forestry.apiculture.multiblock.IAlvearyController;
import forestry.apiculture.multiblock.TileAlvearyPlain;
import forestry.core.config.Constants;
import forestry.core.gui.GuiForestryTitled;
import forestry.core.gui.ledgers.OwnerLedger;
import forestry.core.render.EnumTankLevel;
public class GuiAlveary extends GuiForestryTitled<ContainerAlveary, TileAlveary> {
public class GuiAlveary extends GuiForestryTitled<ContainerAlveary, TileAlvearyPlain> {
public GuiAlveary(InventoryPlayer inventory, TileAlveary tile) {
public GuiAlveary(InventoryPlayer inventory, TileAlvearyPlain tile) {
super(Constants.TEXTURE_PATH_GUI + "/alveary.png", new ContainerAlveary(inventory, tile), tile);
ySize = 190;
@@ -30,14 +31,39 @@ public class GuiAlveary extends GuiForestryTitled<ContainerAlveary, TileAlveary>
protected void drawGuiContainerBackgroundLayer(float var1, int mouseX, int mouseY) {
super.drawGuiContainerBackgroundLayer(var1, mouseX, mouseY);
IAlvearyControllerInternal alvearyController = inventory.getMultiblockLogic().getController();
IAlvearyController alvearyController = inventory.getAlvearyController();
drawHealthMeter(guiLeft + 20, guiTop + 37, alvearyController.getHealthScaled(46), EnumTankLevel.rateTankLevel(alvearyController.getHealthScaled(100)));
}
private void drawHealthMeter(int x, int y, int height, EnumTankLevel rated) {
int i = 176 + rated.getLevelScaled(16);
int i = 176;
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();
IAlvearyController alvearyController = inventory.getAlvearyController();
ledgerManager.add(new OwnerLedger(ledgerManager, alvearyController));
}
}
@@ -10,27 +10,26 @@
******************************************************************************/
package forestry.apiculture.gui;
import net.minecraft.inventory.Container;
import net.minecraft.entity.player.InventoryPlayer;
import forestry.apiculture.tiles.TileAbstractBeeHousing;
import forestry.apiculture.tiles.TileApiary;
import forestry.apiculture.tiles.TileBeehouse;
import forestry.core.config.Constants;
import forestry.core.gui.GuiForestryTitled;
import forestry.core.render.EnumTankLevel;
public class GuiBeeHousing<C extends Container & IContainerBeeHousing> extends GuiForestryTitled<C, IGuiBeeHousingInventory> {
public class GuiBeeHousing extends GuiForestryTitled<ContainerBeeHousing, TileAbstractBeeHousing> {
public enum Icon {
APIARY("/apiary.png"),
BEE_HOUSE("/alveary.png");
public GuiBeeHousing(InventoryPlayer inventory, TileApiary tile) {
super(Constants.TEXTURE_PATH_GUI + "/apiary.png", new ContainerBeeHousing(inventory, tile, true), tile);
private final String path;
Icon(String path) {
this.path = path;
}
ySize = 190;
}
public GuiBeeHousing(IGuiBeeHousingInventory tile, C container, Icon icon) {
super(Constants.TEXTURE_PATH_GUI + icon.path, container, tile);
public GuiBeeHousing(InventoryPlayer inventory, TileBeehouse tile) {
super(Constants.TEXTURE_PATH_GUI + "/alveary.png", new ContainerBeeHousing(inventory, tile, false), tile);
ySize = 190;
}
@@ -42,8 +41,24 @@ public class GuiBeeHousing<C extends Container & IContainerBeeHousing> extends G
}
private void drawHealthMeter(int x, int y, int height, EnumTankLevel rated) {
int i = 176 + rated.getLevelScaled(16);
int i = 176;
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);
}
@@ -21,24 +21,26 @@ import forestry.api.apiculture.EnumBeeType;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.api.apiculture.IBee;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAlleleArea;
import forestry.api.genetics.IAlleleInteger;
import forestry.api.genetics.IAlleleTolerance;
import forestry.apiculture.genetics.BeeGenome;
import forestry.apiculture.inventory.ItemInventoryBeealyzer;
import forestry.apiculture.items.ItemBeeGE;
import forestry.apiculture.items.ItemBeealyzer.BeealyzerInventory;
import forestry.core.config.ForestryItem;
import forestry.core.genetics.alleles.AlleleBoolean;
import forestry.core.gui.ContainerAlyzer;
import forestry.core.gui.GuiAlyzer;
import forestry.core.gui.widgets.ItemStackWidget;
import forestry.core.utils.StringUtil;
import forestry.plugins.PluginApiculture;
import forestry.core.utils.vect.Vect;
public class GuiBeealyzer extends GuiAlyzer {
public GuiBeealyzer(EntityPlayer player, ItemInventoryBeealyzer inventory) {
super(BeeManager.beeRoot, player, new ContainerAlyzer(inventory, player), inventory, "gui.beealyzer");
public GuiBeealyzer(EntityPlayer player, BeealyzerInventory inventory) {
super("rootBees", player, new ContainerAlyzer(inventory, player), inventory, "gui.beealyzer");
ArrayList<ItemStack> beeList = new ArrayList<>();
PluginApiculture.items.beeDroneGE.addCreativeItems(beeList, false);
((ItemBeeGE) ForestryItem.beeDroneGE.item()).addCreativeItems(beeList, false);
for (ItemStack beeStack : beeList) {
IAlleleBeeSpecies species = BeeGenome.getSpecies(beeStack);
if (species != null) {
@@ -55,8 +57,8 @@ public class GuiBeealyzer extends GuiAlyzer {
IBee bee = null;
EnumBeeType beeType = EnumBeeType.DRONE;
for (int k = ItemInventoryBeealyzer.SLOT_SPECIMEN; k <= ItemInventoryBeealyzer.SLOT_ANALYZE_5; k++) {
if (k == ItemInventoryBeealyzer.SLOT_ENERGY) {
for (int k = BeealyzerInventory.SLOT_SPECIMEN; k <= BeealyzerInventory.SLOT_ANALYZE_5; k++) {
if (k == BeealyzerInventory.SLOT_ENERGY) {
continue;
}
@@ -97,81 +99,89 @@ public class GuiBeealyzer extends GuiAlyzer {
private void drawAnalyticsPage1(IBee bee, EnumBeeType type) {
textLayout.startPage(COLUMN_0, COLUMN_1, COLUMN_2);
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
textLayout.drawLine(StringUtil.localize("gui.active"), COLUMN_1);
textLayout.drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
drawLine(StringUtil.localize("gui.active"), COLUMN_1);
drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
textLayout.newLine();
textLayout.newLine();
newLine();
newLine();
{
String customPrimaryBeeKey = "bees.custom.beealyzer." + type.getName() + "." + bee.getGenome().getPrimary().getUnlocalizedName().replace("bees.species.", "");
String customSecondaryBeeKey = "bees.custom.beealyzer." + type.getName() + "." + bee.getGenome().getSecondary().getUnlocalizedName().replace("bees.species.", "");
drawSpeciesRow(StringUtil.localize("gui.species"), bee, EnumBeeChromosome.SPECIES, checkCustomName(customPrimaryBeeKey), checkCustomName(customSecondaryBeeKey));
textLayout.newLine();
newLine();
}
drawChromosomeRow(StringUtil.localize("gui.lifespan"), bee, EnumBeeChromosome.LIFESPAN);
textLayout.newLine();
newLine();
drawChromosomeRow(StringUtil.localize("gui.speed"), bee, EnumBeeChromosome.SPEED);
textLayout.newLine();
newLine();
drawChromosomeRow(StringUtil.localize("gui.pollination"), bee, EnumBeeChromosome.FLOWERING);
textLayout.newLine();
newLine();
drawChromosomeRow(StringUtil.localize("gui.flowers"), bee, EnumBeeChromosome.FLOWER_PROVIDER);
textLayout.newLine();
newLine();
textLayout.drawLine(StringUtil.localize("gui.fertility"), COLUMN_0);
drawLine(StringUtil.localize("gui.fertility"), COLUMN_0);
IAlleleInteger primaryFertility = (IAlleleInteger) bee.getGenome().getActiveAllele(EnumBeeChromosome.FERTILITY);
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);
textLayout.newLine();
drawChromosomeRow(StringUtil.localize("gui.area"), bee, EnumBeeChromosome.TERRITORY);
textLayout.newLine();
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);
newLine();
drawChromosomeRow(StringUtil.localize("gui.effect"), bee, EnumBeeChromosome.EFFECT);
textLayout.newLine();
textLayout.endPage();
newLine();
endPage();
}
private void drawAnalyticsPage2(IBee bee, EnumBeeType type) {
textLayout.startPage(COLUMN_0, COLUMN_1, COLUMN_2);
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
textLayout.drawLine(StringUtil.localize("gui.active"), COLUMN_1);
textLayout.drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
drawLine(StringUtil.localize("gui.active"), COLUMN_1);
drawLine(StringUtil.localize("gui.inactive"), COLUMN_2);
textLayout.newLine();
newLine();
drawRow(StringUtil.localize("gui.climate"), AlleleManager.climateHelper.toDisplay(bee.getGenome().getPrimary().getTemperature()),
AlleleManager.climateHelper.toDisplay(bee.getGenome().getSecondary().getTemperature()), bee, EnumBeeChromosome.SPECIES);
textLayout.newLine();
newLine();
IAlleleTolerance tempToleranceActive = (IAlleleTolerance) bee.getGenome().getActiveAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE);
IAlleleTolerance tempToleranceInactive = (IAlleleTolerance) bee.getGenome().getInactiveAllele(EnumBeeChromosome.TEMPERATURE_TOLERANCE);
textLayout.drawLine(" " + StringUtil.localize("gui.tolerance"), COLUMN_0);
drawLine(" " + StringUtil.localize("gui.tolerance"), COLUMN_0);
drawToleranceInfo(tempToleranceActive, COLUMN_1);
drawToleranceInfo(tempToleranceInactive, COLUMN_2);
textLayout.newLine(16);
newLine(16);
drawRow(StringUtil.localize("gui.humidity"), AlleleManager.climateHelper.toDisplay(bee.getGenome().getPrimary().getHumidity()),
AlleleManager.climateHelper.toDisplay(bee.getGenome().getSecondary().getHumidity()), bee, EnumBeeChromosome.SPECIES);
textLayout.newLine();
newLine();
IAlleleTolerance humidToleranceActive = (IAlleleTolerance) bee.getGenome().getActiveAllele(EnumBeeChromosome.HUMIDITY_TOLERANCE);
IAlleleTolerance humidToleranceInactive = (IAlleleTolerance) bee.getGenome().getInactiveAllele(EnumBeeChromosome.HUMIDITY_TOLERANCE);
textLayout.drawLine(" " + StringUtil.localize("gui.tolerance"), COLUMN_0);
drawLine(" " + StringUtil.localize("gui.tolerance"), COLUMN_0);
drawToleranceInfo(humidToleranceActive, COLUMN_1);
drawToleranceInfo(humidToleranceInactive, COLUMN_2);
textLayout.newLine(16);
newLine(16);
String yes = StringUtil.localize("yes");
String no = StringUtil.localize("no");
@@ -190,29 +200,29 @@ public class GuiBeealyzer extends GuiAlyzer {
diurnal1 = !bee.getGenome().getSecondary().isNocturnal() ? yes : no;
}
textLayout.drawLine(StringUtil.localize("gui.diurnal"), COLUMN_0);
textLayout.drawLine(diurnal0, COLUMN_1, getColorCoding(false));
textLayout.drawLine(diurnal1, COLUMN_2, getColorCoding(false));
textLayout.newLineCompressed();
drawLine(StringUtil.localize("gui.diurnal"), COLUMN_0);
drawLine(diurnal0, COLUMN_1, getColorCoding(false));
drawLine(diurnal1, COLUMN_2, getColorCoding(false));
newLineCompressed();
textLayout.drawLine(StringUtil.localize("gui.nocturnal"), COLUMN_0);
textLayout.drawLine(nocturnal0, COLUMN_1, getColorCoding(false));
textLayout.drawLine(nocturnal1, COLUMN_2, getColorCoding(false));
textLayout.newLineCompressed();
drawLine(StringUtil.localize("gui.nocturnal"), COLUMN_0);
drawLine(nocturnal0, COLUMN_1, getColorCoding(false));
drawLine(nocturnal1, COLUMN_2, getColorCoding(false));
newLineCompressed();
String primary = StringUtil.readableBoolean(bee.getGenome().getTolerantFlyer(), yes, no);
String secondary = StringUtil.readableBoolean(((AlleleBoolean) bee.getGenome().getInactiveAllele(EnumBeeChromosome.TOLERANT_FLYER)).getValue(), yes, no);
drawRow(StringUtil.localize("gui.flyer"), primary, secondary, bee, EnumBeeChromosome.TOLERANT_FLYER);
textLayout.newLineCompressed();
newLineCompressed();
primary = StringUtil.readableBoolean(bee.getGenome().getCaveDwelling(), yes, no);
secondary = StringUtil.readableBoolean(((AlleleBoolean) bee.getGenome().getInactiveAllele(EnumBeeChromosome.CAVE_DWELLING)).getValue(), yes, no);
drawRow(StringUtil.localize("gui.cave"), primary, secondary, bee, EnumBeeChromosome.CAVE_DWELLING);
textLayout.newLine();
newLine();
String displayText;
if (type == EnumBeeType.PRINCESS || type == EnumBeeType.QUEEN) {
@@ -221,57 +231,57 @@ public class GuiBeealyzer extends GuiAlyzer {
displayText = "bees.stock.ignoble";
}
displayText = StringUtil.localize(displayText);
textLayout.drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
}
if (bee.getGeneration() >= 0) {
textLayout.newLineCompressed();
newLineCompressed();
displayText = StringUtil.localizeAndFormat("gui.beealyzer.generations", bee.getGeneration());
textLayout.drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
drawCenteredLine(displayText, 8, 208, fontColor.get("gui.beealyzer.binomial"));
}
textLayout.endPage();
endPage();
}
private void drawAnalyticsPage3(IBee bee) {
textLayout.startPage(COLUMN_0, COLUMN_1, COLUMN_2);
startPage(COLUMN_0, COLUMN_1, COLUMN_2);
textLayout.drawLine(StringUtil.localize("gui.beealyzer.produce") + ":", COLUMN_0);
drawLine(StringUtil.localize("gui.beealyzer.produce") + ":", COLUMN_0);
textLayout.newLine();
newLine();
int x = COLUMN_0;
for (ItemStack stack : bee.getProduceList()) {
widgetManager.add(new ItemStackWidget(widgetManager, x, textLayout.getLineY(), stack));
widgetManager.add(new ItemStackWidget(x, getLineY(), stack));
x += 18;
if (x > 148) {
x = COLUMN_0;
textLayout.newLine();
newLine();
}
}
textLayout.newLine();
textLayout.newLine();
textLayout.newLine();
textLayout.newLine();
newLine();
newLine();
newLine();
newLine();
textLayout.drawLine(StringUtil.localize("gui.beealyzer.specialty") + ":", COLUMN_0);
textLayout.newLine();
drawLine(StringUtil.localize("gui.beealyzer.specialty") + ":", COLUMN_0);
newLine();
x = COLUMN_0;
for (ItemStack stack : bee.getSpecialtyList()) {
widgetManager.add(new ItemStackWidget(widgetManager, x, textLayout.getLineY(), stack));
widgetManager.add(new ItemStackWidget(x, getLineY(), stack));
x += 18;
if (x > 148) {
x = COLUMN_0;
textLayout.newLine();
newLine();
}
}
textLayout.endPage();
endPage();
}
}
@@ -10,17 +10,15 @@
******************************************************************************/
package forestry.apiculture.gui;
import com.google.common.collect.LinkedListMultimap;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collection;
import java.util.Collections;
import java.util.EnumMap;
import java.util.EnumSet;
import java.util.List;
import java.util.Locale;
import java.util.Map;
import java.util.Set;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraft.util.StatCollector;
import net.minecraft.world.biome.BiomeGenBase;
@@ -28,57 +26,70 @@ import net.minecraftforge.common.BiomeDictionary;
import org.lwjgl.opengl.GL11;
import forestry.apiculture.gui.widgets.HabitatSlot;
import forestry.apiculture.inventory.ItemInventoryHabitatLocator;
import forestry.apiculture.items.ItemHabitatLocator.HabitatLocatorInventory;
import forestry.core.config.Constants;
import forestry.core.gui.GuiForestry;
import forestry.core.gui.widgets.Widget;
import forestry.core.proxy.Proxies;
import forestry.core.render.SpriteSheet;
import forestry.core.render.TextureManager;
public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, ItemInventoryHabitatLocator> {
private static final LinkedListMultimap<String, BiomeDictionary.Type> habitats = LinkedListMultimap.create();
public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, HabitatLocatorInventory> {
static {
habitats.putAll("Ocean", Arrays.asList(BiomeDictionary.Type.OCEAN, BiomeDictionary.Type.BEACH));
habitats.put("Plains", BiomeDictionary.Type.PLAINS);
habitats.put("Desert", BiomeDictionary.Type.SANDY);
habitats.putAll("Forest", Arrays.asList(BiomeDictionary.Type.FOREST, BiomeDictionary.Type.RIVER));
habitats.put("Jungle", BiomeDictionary.Type.JUNGLE);
habitats.put("Taiga", BiomeDictionary.Type.CONIFEROUS);
habitats.put("Hills", BiomeDictionary.Type.MOUNTAIN);
habitats.put("Swamp", BiomeDictionary.Type.SWAMP);
habitats.put("Snow", BiomeDictionary.Type.SNOWY);
habitats.put("Mushroom", BiomeDictionary.Type.MUSHROOM);
habitats.put("Nether", BiomeDictionary.Type.NETHER);
habitats.put("End", BiomeDictionary.Type.END);
}
private final List<HabitatSlot> habitatSlots = new ArrayList<>(habitats.size());
private final HabitatSlot[] habitatSlots = new HabitatSlot[]{
new HabitatSlot(0, "Ocean"), // ocean, beach
new HabitatSlot(1, "Plains"),
new HabitatSlot(2, "Desert"), // desert, desert hills
new HabitatSlot(3, "Forest"), // forest, forestHills, river
new HabitatSlot(4, "Jungle"), // jungle, jungleHills
new HabitatSlot(5, "Taiga"), // taiga, taigaHills
new HabitatSlot(6, "Hills"), // extremeHills, extremeHillsEdge
new HabitatSlot(7, "Swamp"),
new HabitatSlot(8, "Snow"), // Ice plains, mountains, frozen rivers, frozen oceans
new HabitatSlot(9, "Mushroom"),
new HabitatSlot(10, "Nether"),
new HabitatSlot(11, "End")};
private final Map<BiomeDictionary.Type, HabitatSlot> biomeToHabitat = new EnumMap<>(BiomeDictionary.Type.class);
private int startX;
private int startY;
public GuiHabitatLocator(EntityPlayer player, ItemInventoryHabitatLocator item) {
public GuiHabitatLocator(EntityPlayer player, HabitatLocatorInventory item) {
super(Constants.TEXTURE_PATH_GUI + "/biomefinder.png", new ContainerHabitatLocator(player, item), item);
xSize = 176;
ySize = 184;
int slot = 0;
for (String habitatName : habitats.keySet()) {
int x;
int y;
if (slot > 5) {
x = 18 + (slot - 6) * 20;
int x;
int y;
for (HabitatSlot slot : habitatSlots) {
if (slot.slot > 5) {
x = 18 + (slot.slot - 6) * 20;
y = 50;
} else {
x = 18 + slot * 20;
x = 18 + slot.slot * 20;
y = 32;
}
Collection<BiomeDictionary.Type> biomes = habitats.get(habitatName);
HabitatSlot habitatSlot = new HabitatSlot(widgetManager, x, y, habitatName, biomes);
habitatSlots.add(habitatSlot);
widgetManager.add(habitatSlot);
slot++;
slot.setPosition(x, y);
this.widgetManager.add(slot);
}
biomeToHabitat.put(BiomeDictionary.Type.OCEAN, habitatSlots[0]);
biomeToHabitat.put(BiomeDictionary.Type.BEACH, habitatSlots[0]);
biomeToHabitat.put(BiomeDictionary.Type.PLAINS, habitatSlots[1]);
biomeToHabitat.put(BiomeDictionary.Type.SANDY, habitatSlots[2]);
biomeToHabitat.put(BiomeDictionary.Type.FOREST, habitatSlots[3]);
biomeToHabitat.put(BiomeDictionary.Type.RIVER, habitatSlots[3]);
biomeToHabitat.put(BiomeDictionary.Type.JUNGLE, habitatSlots[4]);
biomeToHabitat.put(BiomeDictionary.Type.CONIFEROUS, habitatSlots[5]);
biomeToHabitat.put(BiomeDictionary.Type.MOUNTAIN, habitatSlots[6]);
biomeToHabitat.put(BiomeDictionary.Type.SWAMP, habitatSlots[7]);
biomeToHabitat.put(BiomeDictionary.Type.SNOWY, habitatSlots[8]);
biomeToHabitat.put(BiomeDictionary.Type.MUSHROOM, habitatSlots[9]);
biomeToHabitat.put(BiomeDictionary.Type.NETHER, habitatSlots[10]);
biomeToHabitat.put(BiomeDictionary.Type.END, habitatSlots[11]);
}
@Override
@@ -86,22 +97,31 @@ public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, Item
super.drawGuiContainerBackgroundLayer(var1, mouseX, mouseY);
String str = StatCollector.translateToLocal("item.for.habitatLocator.name").toUpperCase();
fontRendererObj.drawString(str, startX + 8 + textLayout.getCenteredOffset(str, 138), startY + 16, fontColor.get("gui.screen"));
fontRendererObj.drawString(str, startX + 8 + getCenteredOffset(str, 138), startY + 16, fontColor.get("gui.screen"));
// Set active according to valid biomes.
Set<BiomeDictionary.Type> activeBiomeTypes = EnumSet.noneOf(BiomeDictionary.Type.class);
for (HabitatSlot habitatSlot : habitatSlots) {
habitatSlot.isActive = false;
}
for (BiomeGenBase biome : inventory.getBiomesToSearch()) {
Collections.addAll(activeBiomeTypes, BiomeDictionary.getTypesForBiome(biome));
}
for (HabitatSlot habitatSlot : habitatSlots) {
habitatSlot.setActive(activeBiomeTypes);
for (BiomeDictionary.Type biomeType : activeBiomeTypes) {
HabitatSlot habitatSlot = biomeToHabitat.get(biomeType);
if (habitatSlot != null) {
habitatSlot.isActive = true;
}
}
for (HabitatSlot slot : habitatSlots) {
slot.draw(startX, startY);
}
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f); // Reset afterwards.
}
@Override
@@ -111,4 +131,53 @@ public class GuiHabitatLocator extends GuiForestry<ContainerHabitatLocator, Item
startX = (this.width - this.xSize) / 2;
startY = (this.height - this.ySize) / 2;
}
public class HabitatSlot extends Widget {
private final int slot;
private final String name;
private final String iconIndex;
public boolean isActive = false;
public HabitatSlot(int slot, String name) {
super(widgetManager, 0, 0);
this.slot = slot;
this.name = name;
this.iconIndex = "habitats/" + name.toLowerCase(Locale.ENGLISH);
}
@Override
public String getLegacyTooltip(EntityPlayer player) {
return name;
}
public IIcon getIcon() {
return TextureManager.getInstance().getDefault(iconIndex);
}
public void setPosition(int x, int y) {
this.xPos = x;
this.yPos = y;
}
@Override
public void draw(int startX, int startY) {
if (getIcon() != null) {
GL11.glDisable(GL11.GL_LIGHTING);
if (!isActive) {
GL11.glColor4f(0.2f, 0.2f, 0.2f, 0.2f);
} else {
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
}
Proxies.common.bindTexture(SpriteSheet.ITEMS);
manager.gui.drawTexturedModelRectFromIcon(startX + xPos, startY + yPos, getIcon(), 16, 16);
GL11.glEnable(GL11.GL_LIGHTING);
}
}
}
}
@@ -15,35 +15,35 @@ import java.util.HashMap;
import java.util.List;
import java.util.Map;
import net.minecraft.client.renderer.RenderHelper;
import net.minecraft.entity.player.InventoryPlayer;
import net.minecraft.item.ItemStack;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.apiculture.genetics.BeeGenome;
import forestry.apiculture.inventory.ItemInventoryImprinter;
import forestry.apiculture.items.ItemBeeGE;
import forestry.apiculture.items.ItemImprinter.ImprinterInventory;
import forestry.core.config.Constants;
import forestry.core.config.ForestryItem;
import forestry.core.gui.GuiForestry;
import forestry.core.gui.GuiUtil;
import forestry.core.network.packets.PacketGuiSelectRequest;
import forestry.core.proxy.Proxies;
import forestry.core.utils.StringUtil;
import forestry.plugins.PluginApiculture;
public class GuiImprinter extends GuiForestry<ContainerImprinter, ItemInventoryImprinter> {
public class GuiImprinter extends GuiForestry<ContainerImprinter, ImprinterInventory> {
private int startX;
private int startY;
private final Map<String, ItemStack> iconStacks = new HashMap<>();
public GuiImprinter(InventoryPlayer inventoryplayer, ItemInventoryImprinter inventory) {
public GuiImprinter(InventoryPlayer inventoryplayer, ImprinterInventory inventory) {
super(Constants.TEXTURE_PATH_GUI + "/imprinter.png", new ContainerImprinter(inventoryplayer, inventory), inventory);
xSize = 176;
ySize = 185;
List<ItemStack> beeList = new ArrayList<>();
PluginApiculture.items.beeDroneGE.addCreativeItems(beeList, false);
((ItemBeeGE) ForestryItem.beeDroneGE.item()).addCreativeItems(beeList, false);
for (ItemStack beeStack : beeList) {
IAlleleBeeSpecies species = BeeGenome.getSpecies(beeStack);
if (species != null) {
@@ -54,6 +54,7 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ItemInventoryI
@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;
@@ -74,7 +75,9 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ItemInventoryI
}
private void drawBeeSpeciesIcon(IAlleleBeeSpecies bee, int x, int y) {
GuiUtil.drawItemStack(this, iconStacks.get(bee.getUID()), x, y);
RenderHelper.enableStandardItemLighting();
drawItemStack(iconStacks.get(bee.getUID()), x, y);
RenderHelper.disableStandardItemLighting();
}
private static int getHabitatSlotAtPosition(int i, int j) {
@@ -103,9 +106,9 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ItemInventoryI
}
if (k == 0) {
advanceSelection(slot);
container.advanceSelection(slot);
} else {
regressSelection(slot);
container.regressSelection(slot);
}
}
@@ -116,16 +119,4 @@ public class GuiImprinter extends GuiForestry<ContainerImprinter, ItemInventoryI
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));
}
}
@@ -1,14 +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.gui;
public interface IContainerBeeHousing {
}
@@ -1,20 +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.gui;
import net.minecraft.inventory.IInventory;
import forestry.core.tiles.ITitled;
public interface IGuiBeeHousingInventory extends ITitled, IInventory {
/** Returns scaled queen health or breeding progress */
int getHealthScaled(int i);
}
@@ -1,69 +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.gui.widgets;
import java.util.Collection;
import java.util.Collections;
import java.util.Locale;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.util.IIcon;
import net.minecraftforge.common.BiomeDictionary;
import org.lwjgl.opengl.GL11;
import forestry.core.gui.widgets.Widget;
import forestry.core.gui.widgets.WidgetManager;
import forestry.core.proxy.Proxies;
import forestry.core.render.SpriteSheet;
import forestry.core.render.TextureManager;
public class HabitatSlot extends Widget {
private final Collection<BiomeDictionary.Type> biomes;
private final String name;
private final String iconIndex;
public boolean isActive = false;
public HabitatSlot(WidgetManager widgetManager, int xPos, int yPos, String name, Collection<BiomeDictionary.Type> biomes) {
super(widgetManager, xPos, yPos);
this.biomes = biomes;
this.name = name;
this.iconIndex = "habitats/" + name.toLowerCase(Locale.ENGLISH);
}
@Override
public String getLegacyTooltip(EntityPlayer player) {
return name;
}
public IIcon getIcon() {
return TextureManager.getInstance().getDefault(iconIndex);
}
public void setActive(Collection<BiomeDictionary.Type> biomes) {
isActive = !Collections.disjoint(this.biomes, biomes);
}
@Override
public void draw(int startX, int startY) {
if (getIcon() != null) {
if (!isActive) {
GL11.glColor4f(0.2f, 0.2f, 0.2f, 0.2f);
} else {
GL11.glColor4f(1.0f, 1.0f, 1.0f, 1.0f);
}
Proxies.render.bindTexture(SpriteSheet.ITEMS);
manager.gui.drawTexturedModelRectFromIcon(startX + xPos, startY + yPos, getIcon(), 16, 16);
}
}
}
@@ -1,18 +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.inventory;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeeHousingInventory;
public interface IApiaryInventory extends IBeeHousingInventory {
void wearOutFrames(IBeeHousing beeHousing, int amount);
}
@@ -1,70 +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.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import forestry.apiculture.multiblock.TileAlvearySieve;
import forestry.core.inventory.InventoryAdapterTile;
import forestry.core.inventory.watchers.ISlotPickupWatcher;
import forestry.core.utils.ItemStackUtil;
import forestry.plugins.PluginCore;
public class InventoryAlvearySieve extends InventoryAdapterTile<TileAlvearySieve> implements ISlotPickupWatcher {
public static final int SLOT_POLLEN_1 = 0;
public static final int SLOTS_POLLEN_COUNT = 4;
public static final int SLOT_SIEVE = 4;
public InventoryAlvearySieve(TileAlvearySieve alvearySieve) {
super(alvearySieve, 5, "Items", 1);
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
return ItemStackUtil.isIdenticalItem(PluginCore.items.craftingMaterial.getWovenSilk(), itemStack);
}
public boolean canStorePollen() {
if (getStackInSlot(SLOT_SIEVE) == null) {
return false;
}
for (int i = SLOT_POLLEN_1; i < SLOT_POLLEN_1 + SLOTS_POLLEN_COUNT; i++) {
if (getStackInSlot(i) == null) {
return true;
}
}
return false;
}
public void storePollenStack(ItemStack itemstack) {
for (int i = SLOT_POLLEN_1; i < SLOT_POLLEN_1 + SLOTS_POLLEN_COUNT; i++) {
if (getStackInSlot(i) == null) {
setInventorySlotContents(i, itemstack);
return;
}
}
}
/* ISlotPickupWatcher */
@Override
public void onPickupFromSlot(int slotIndex, EntityPlayer player) {
if (slotIndex == SLOT_SIEVE) {
for (int i = SLOT_POLLEN_1; i < SLOT_POLLEN_1 + SLOTS_POLLEN_COUNT; i++) {
setInventorySlotContents(i, null);
}
} else {
setInventorySlotContents(SLOT_SIEVE, null);
}
}
}
@@ -1,96 +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.inventory;
import java.util.ArrayList;
import java.util.Collection;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBee;
import forestry.api.apiculture.IBeeHousing;
import forestry.api.apiculture.IBeekeepingMode;
import forestry.api.apiculture.IHiveFrame;
import forestry.apiculture.InventoryBeeHousing;
import forestry.core.access.IAccessHandler;
import forestry.core.utils.SlotUtil;
public class InventoryApiary extends InventoryBeeHousing implements IApiaryInventory {
public static final int SLOT_FRAMES_1 = 9;
public static final int SLOT_FRAMES_COUNT = 3;
public InventoryApiary(IAccessHandler accessHandler) {
super(12, accessHandler);
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
if (SlotUtil.isSlotInRange(slotIndex, SLOT_FRAMES_1, SLOT_FRAMES_COUNT)) {
return (itemStack.getItem() instanceof IHiveFrame) && (getStackInSlot(slotIndex) == null);
}
return super.canSlotAccept(slotIndex, itemStack);
}
// override for pipe automation
@Override
public boolean isItemValidForSlot(int slotIndex, ItemStack itemStack) {
if (SlotUtil.isSlotInRange(slotIndex, SLOT_FRAMES_1, SLOT_FRAMES_COUNT)) {
return false;
}
return super.isItemValidForSlot(slotIndex, itemStack);
}
public Collection<IHiveFrame> getFrames() {
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);
if (stackInSlot == null) {
continue;
}
Item itemInSlot = stackInSlot.getItem();
if (itemInSlot instanceof IHiveFrame) {
hiveFrames.add((IHiveFrame) itemInSlot);
}
}
return hiveFrames;
}
public void wearOutFrames(IBeeHousing beeHousing, int amount) {
IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(beeHousing.getWorld());
int wear = Math.round(amount * beekeepingMode.getWearModifier());
for (int i = SLOT_FRAMES_1; i < SLOT_FRAMES_1 + SLOT_FRAMES_COUNT; i++) {
ItemStack hiveFrameStack = getStackInSlot(i);
if (hiveFrameStack == null) {
continue;
}
Item hiveFrameItem = hiveFrameStack.getItem();
if (!(hiveFrameItem instanceof IHiveFrame)) {
continue;
}
IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem;
ItemStack queenStack = getQueen();
IBee queen = BeeManager.beeRoot.getMember(queenStack);
ItemStack usedFrame = hiveFrame.frameUsed(beeHousing, hiveFrameStack, queen, wear);
setInventorySlotContents(i, usedFrame);
}
}
}
@@ -1,36 +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.inventory;
import net.minecraft.item.ItemStack;
import net.minecraftforge.fluids.Fluid;
import forestry.apiculture.multiblock.TileAlvearyHygroregulator;
import forestry.core.fluids.FluidHelper;
import forestry.core.inventory.InventoryAdapterTile;
public class InventoryHygroregulator extends InventoryAdapterTile<TileAlvearyHygroregulator> {
public static final short SLOT_INPUT = 0;
public InventoryHygroregulator(TileAlvearyHygroregulator alvearyHygroregulator) {
super(alvearyHygroregulator, 1, "CanInv");
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
if (slotIndex == SLOT_INPUT) {
Fluid fluid = FluidHelper.getFluidInContainer(itemStack);
return tile.getTankManager().accepts(fluid);
}
return false;
}
}
@@ -1,29 +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.inventory;
import net.minecraft.item.ItemStack;
import forestry.api.apiculture.BeeManager;
import forestry.apiculture.multiblock.TileAlvearySwarmer;
import forestry.core.inventory.InventoryAdapterTile;
import forestry.core.utils.ItemStackUtil;
public class InventorySwarmer extends InventoryAdapterTile<TileAlvearySwarmer> {
public InventorySwarmer(TileAlvearySwarmer alvearySwarmer) {
super(alvearySwarmer, 4, "SwarmInv");
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
return ItemStackUtil.containsItemStack(BeeManager.inducers.keySet(), itemStack);
}
}
@@ -1,34 +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.inventory;
import java.util.List;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import forestry.api.apiculture.BeeManager;
import forestry.core.config.Config;
import forestry.core.gui.IHintSource;
import forestry.core.inventory.ItemInventoryAlyzer;
public class ItemInventoryBeealyzer extends ItemInventoryAlyzer implements IHintSource {
public ItemInventoryBeealyzer(EntityPlayer player, ItemStack itemStack) {
super(BeeManager.beeRoot, player, itemStack);
}
/* IHintSource */
@Override
public List<String> getHints() {
return Config.hints.get("beealyzer");
}
}
@@ -1,130 +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.inventory;
import com.google.common.collect.ImmutableSet;
import java.util.List;
import java.util.Set;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.world.biome.BiomeGenBase;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBee;
import forestry.api.core.IErrorSource;
import forestry.api.core.IErrorState;
import forestry.apiculture.items.HabitatLocatorLogic;
import forestry.apiculture.items.ItemHabitatLocator;
import forestry.core.config.Config;
import forestry.core.errors.EnumErrorCode;
import forestry.core.gui.IHintSource;
import forestry.core.inventory.ItemInventory;
import forestry.plugins.PluginApiculture;
public class ItemInventoryHabitatLocator extends ItemInventory implements IErrorSource, IHintSource {
private static final short SLOT_ENERGY = 2;
private static final short SLOT_SPECIMEN = 0;
private static final short SLOT_ANALYZED = 1;
private final HabitatLocatorLogic locatorLogic;
public ItemInventoryHabitatLocator(EntityPlayer player, ItemStack itemstack) {
super(player, 3, itemstack);
ItemHabitatLocator habitatLocator = (ItemHabitatLocator) itemstack.getItem();
this.locatorLogic = habitatLocator.getLocatorLogic();
}
private static boolean isEnergy(ItemStack itemstack) {
if (itemstack == null || itemstack.stackSize <= 0) {
return false;
}
Item item = itemstack.getItem();
return PluginApiculture.items.honeyDrop == item || PluginApiculture.items.honeydew == item;
}
@Override
public void onSlotClick(EntityPlayer player) {
if (getStackInSlot(SLOT_ANALYZED) != null) {
if (locatorLogic.isBiomeFound()) {
return;
}
} else if (getStackInSlot(SLOT_SPECIMEN) != null) {
// Requires energy
if (!isEnergy(getStackInSlot(SLOT_ENERGY))) {
return;
}
// Decrease energy
decrStackSize(SLOT_ENERGY, 1);
setInventorySlotContents(SLOT_ANALYZED, getStackInSlot(SLOT_SPECIMEN));
setInventorySlotContents(SLOT_SPECIMEN, null);
}
IBee bee = BeeManager.beeRoot.getMember(getStackInSlot(SLOT_ANALYZED));
// No bee, abort
if (bee == null) {
return;
}
locatorLogic.startBiomeSearch(bee, player);
}
public Set<BiomeGenBase> getBiomesToSearch() {
return locatorLogic.getTargetBiomes();
}
/* IHintSource */
@Override
public List<String> getHints() {
return Config.hints.get("habitat.locator");
}
/* IErrorSource */
@Override
public ImmutableSet<IErrorState> getErrorStates() {
if (getStackInSlot(SLOT_ANALYZED) != null) {
return ImmutableSet.of();
}
ImmutableSet.Builder<IErrorState> errorStates = ImmutableSet.builder();
ItemStack specimen = getStackInSlot(SLOT_SPECIMEN);
if (!BeeManager.beeRoot.isMember(specimen)) {
errorStates.add(EnumErrorCode.NO_SPECIMEN);
}
if (!isEnergy(getStackInSlot(SLOT_ENERGY))) {
errorStates.add(EnumErrorCode.NO_HONEY);
}
return errorStates.build();
}
/* IFilterSlotDelegate */
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
if (slotIndex == SLOT_ENERGY) {
return isEnergy(itemStack);
} else if (slotIndex == SLOT_SPECIMEN) {
return BeeManager.beeRoot.isMember(itemStack);
}
return false;
}
}
@@ -1,136 +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.inventory;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IAlleleBeeSpecies;
import forestry.api.apiculture.IBee;
import forestry.apiculture.genetics.Bee;
import forestry.core.inventory.ItemInventory;
public class ItemInventoryImprinter extends ItemInventory {
private static final short specimenSlot = 0;
private static final short imprintedSlot = 1;
private int primaryIndex = 0;
private int secondaryIndex = 0;
public ItemInventoryImprinter(EntityPlayer player, ItemStack itemStack) {
super(player, 2, itemStack);
}
public void advancePrimary() {
if (primaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) {
primaryIndex++;
} else {
primaryIndex = 0;
}
}
public void advanceSecondary() {
if (secondaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) {
secondaryIndex++;
} else {
secondaryIndex = 0;
}
}
public void regressPrimary() {
if (primaryIndex > 0) {
primaryIndex--;
} else {
primaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1;
}
}
public void regressSecondary() {
if (secondaryIndex > 0) {
secondaryIndex--;
} else {
secondaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1;
}
}
public IAlleleBeeSpecies getPrimary() {
return BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getGenome().getPrimary();
}
public IAlleleBeeSpecies getSecondary() {
return BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getGenome().getPrimary();
}
public IBee getSelectedBee() {
return new Bee(BeeManager.beeRoot.templateAsGenome(
BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getIdent()),
BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getIdent())));
}
public int getPrimaryIndex() {
return primaryIndex;
}
public int getSecondaryIndex() {
return secondaryIndex;
}
public void setPrimaryIndex(int index) {
primaryIndex = index;
}
public void setSecondaryIndex(int index) {
secondaryIndex = index;
}
@Override
public void onSlotClick(EntityPlayer player) {
ItemStack specimen = getStackInSlot(specimenSlot);
if (specimen == null) {
return;
}
// Only imprint bees
if (!BeeManager.beeRoot.isMember(specimen)) {
return;
}
// Needs space
if (getStackInSlot(imprintedSlot) != null) {
return;
}
IBee imprint = getSelectedBee();
if (imprint == null) {
return;
}
NBTTagCompound nbttagcompound = new NBTTagCompound();
imprint.writeToNBT(nbttagcompound);
specimen.setTagCompound(nbttagcompound);
setInventorySlotContents(imprintedSlot, specimen);
setInventorySlotContents(specimenSlot, null);
}
@Override
public String getInventoryName() {
return "Imprinter";
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
return BeeManager.beeRoot.isMember(itemStack);
}
}
@@ -1,57 +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.items;
import java.awt.Color;
import java.util.Locale;
public enum EnumHoneyComb {
HONEY(new Color(0xe8d56a), new Color(0xffa12b)),
COCOA(new Color(0x674016), new Color(0xffb62b), true),
SIMMERING(new Color(0x981919), new Color(0xffb62b)),
STRINGY(new Color(0xc8be67), new Color(0xbda93e)),
FROZEN(new Color(0xf9ffff), new Color(0xa0ffff)),
DRIPPING(new Color(0xdc7613), new Color(0xffff00)),
SILKY(new Color(0x508907), new Color(0xddff00)),
PARCHED(new Color(0xdcbe13), new Color(0xffff00)),
MYSTERIOUS(new Color(0x161616), new Color(0xe099ff), true),
IRRADIATED(new Color(0xeafff3), new Color(0xeeff00), true),
POWDERY(new Color(0xe4e4e4), new Color(0xffffff), true),
REDDENED(new Color(0x4b0000), new Color(0x6200e7), true),
DARKENED(new Color(0x353535), new Color(0x33ebcb), true),
OMEGA(new Color(0x191919), new Color(0x6dcff6), true),
WHEATEN(new Color(0xfeff8f), new Color(0xffffff), true),
MOSSY(new Color(0x2a3313), new Color(0x7e9939)),
MELLOW(new Color(0x886000), new Color(0xfff960));
//""(new Color(0xd7bee5), new Color(0xfd58ab)); // kindof pinkish
public static final EnumHoneyComb[] VALUES = values();
public final String name;
public final int primaryColor;
public final int secondaryColor;
private final boolean secret;
EnumHoneyComb(Color primary, Color secondary) {
this(primary, secondary, false);
}
EnumHoneyComb(Color primary, Color secondary, boolean secret) {
this.name = toString().toLowerCase(Locale.ENGLISH);
this.primaryColor = primary.getRGB();
this.secondaryColor = secondary.getRGB();
this.secret = secret;
}
public boolean isSecret() {
return secret;
}
}
@@ -1,60 +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.items;
import java.awt.Color;
import java.util.Locale;
import forestry.core.items.ItemOverlay;
public enum EnumHoneyDrop implements ItemOverlay.IOverlayInfo {
HONEY(new Color(0xecb42d), new Color(0xe8c814)),
CHARGED(new Color(0x800505), new Color(0x9c0707), true),
OMEGA(new Color(0x191919), new Color(0x4a8ca7), true);
public static final EnumHoneyDrop[] VALUES = values();
private final String name;
private final int primaryColor;
private final int secondaryColor;
private final boolean secret;
EnumHoneyDrop(Color primary, Color secondary) {
this(primary, secondary, false);
}
EnumHoneyDrop(Color primary, Color secondary, boolean secret) {
this.name = toString().toLowerCase(Locale.ENGLISH);
this.primaryColor = primary.getRGB();
this.secondaryColor = secondary.getRGB();
this.secret = secret;
}
@Override
public String getName() {
return name;
}
@Override
public int getPrimaryColor() {
return primaryColor;
}
@Override
public int getSecondaryColor() {
return secondaryColor;
}
@Override
public boolean isSecret() {
return secret;
}
}
@@ -1,53 +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.items;
import java.awt.Color;
import java.util.Locale;
import forestry.core.items.ItemOverlay;
public enum EnumPollenCluster implements ItemOverlay.IOverlayInfo {
NORMAL(new Color(0xa28a25), new Color(0xa28a25)),
CRYSTALLINE(new Color(0xffffff), new Color(0xc5feff));
public static final EnumPollenCluster[] VALUES = values();
private final String name;
private final int primaryColor;
private final int secondaryColor;
EnumPollenCluster(Color primary, Color secondary) {
this.name = toString().toLowerCase(Locale.ENGLISH);
this.primaryColor = primary.getRGB();
this.secondaryColor = secondary.getRGB();
}
@Override
public String getName() {
return name;
}
@Override
public int getPrimaryColor() {
return primaryColor;
}
@Override
public int getSecondaryColor() {
return secondaryColor;
}
@Override
public boolean isSecret() {
return false;
}
}
@@ -1,59 +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.items;
import java.awt.Color;
import java.util.Locale;
import forestry.core.items.ItemOverlay;
public enum EnumPropolis implements ItemOverlay.IOverlayInfo {
NORMAL(new Color(0xc5b24e)),
STICKY(new Color(0xc68e57)),
PULSATING(new Color(0x2ccdb1), true),
SILKY(new Color(0xddff00));
public static final EnumPropolis[] VALUES = values();
private final String name;
private final int primaryColor;
private final boolean secret;
EnumPropolis(Color color) {
this(color, false);
}
EnumPropolis(Color color, boolean secret) {
this.name = toString().toLowerCase(Locale.ENGLISH);
this.primaryColor = color.getRGB();
this.secret = secret;
}
@Override
public String getName() {
return name;
}
@Override
public int getPrimaryColor() {
return primaryColor;
}
@Override
public int getSecondaryColor() {
return 0;
}
@Override
public boolean isSecret() {
return secret;
}
}
@@ -1,201 +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.items;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.Set;
import net.minecraft.entity.Entity;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.entity.player.EntityPlayerMP;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeDictionary;
import forestry.api.apiculture.IBee;
import forestry.apiculture.network.packets.PacketHabitatBiomePointer;
import forestry.core.proxy.Proxies;
import forestry.core.utils.vect.Vect;
public class HabitatLocatorLogic {
private static final int maxChecksPerTick = 100;
private static final int maxSearchRadiusIterations = 500;
private static final int spacing = 20;
private static final int minBiomeRadius = 8;
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));
Collections.addAll(waterBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.OCEAN));
Collections.addAll(waterBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.RIVER));
Collections.addAll(netherBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.NETHER));
Collections.addAll(endBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.END));
}
private Set<BiomeGenBase> targetBiomes = new HashSet<>();
private boolean biomeFound = false;
private int searchRadiusIteration = 0;
private int searchAngleIteration = 0;
private Vect searchCenter;
public boolean isBiomeFound() {
return biomeFound;
}
public Set<BiomeGenBase> getTargetBiomes() {
return targetBiomes;
}
public void startBiomeSearch(IBee bee, EntityPlayer player) {
this.targetBiomes = new HashSet<>(bee.getSuitableBiomes());
this.searchAngleIteration = 0;
this.searchRadiusIteration = 0;
this.biomeFound = false;
this.searchCenter = new Vect(player);
BiomeGenBase currentBiome = player.worldObj.getBiomeGenForCoords(searchCenter.x, searchCenter.z);
removeInvalidBiomes(currentBiome, targetBiomes);
// reset the locator coordinates
Proxies.render.setHabitatLocatorTexture(null, null);
}
public void onUpdate(World world, Entity player) {
if (world.isRemote) {
return;
}
if (targetBiomes.isEmpty()) {
return;
}
// once we've found the biome, slow down to conserve cpu and network data
if (biomeFound && world.getTotalWorldTime() % 20 != 0) {
return;
}
ChunkCoordinates target = findNearestBiome(player, targetBiomes);
// send an update if we find the biome
if (target != null && player instanceof EntityPlayerMP) {
Proxies.net.sendToPlayer(new PacketHabitatBiomePointer(target), (EntityPlayerMP) player);
biomeFound = true;
}
}
private ChunkCoordinates findNearestBiome(Entity player, Collection<BiomeGenBase> biomesToSearch) {
Vect playerPos = new Vect(player);
// If we are in a valid spot, we point to ourselves.
ChunkCoordinates coordinates = getChunkCoordinates(playerPos, player.worldObj, biomesToSearch);
if (coordinates != null) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
return new ChunkCoordinates(playerPos.x, playerPos.y, playerPos.z);
}
// check in a circular pattern, starting at the center and increasing radius each step
final int radius = spacing * (searchRadiusIteration + 1);
double angleSpacing = 2.0f * Math.asin(spacing / (2.0 * radius));
// round to nearest divisible angle, for an even distribution
angleSpacing = 2.0 * Math.PI / Math.round(2.0 * Math.PI / angleSpacing);
// do a limited number of checks per tick
for (int i = 0; i < maxChecksPerTick; i++) {
double angle = angleSpacing * searchAngleIteration;
if (angle > 2.0 * Math.PI) {
searchAngleIteration = 0;
searchRadiusIteration++;
if (searchRadiusIteration > maxSearchRadiusIterations) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
searchCenter = playerPos;
}
return null;
} else {
searchAngleIteration++;
}
int xOffset = Math.round((float) (radius * Math.cos(angle)));
int zOffset = Math.round((float) (radius * Math.sin(angle)));
Vect pos = searchCenter.add(xOffset, 0, zOffset);
coordinates = getChunkCoordinates(pos, player.worldObj, biomesToSearch);
if (coordinates != null) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
return coordinates;
}
}
return null;
}
private static ChunkCoordinates getChunkCoordinates(Vect pos, World world, Collection<BiomeGenBase> biomesToSearch) {
BiomeGenBase biome;
biome = world.getBiomeGenForCoords(pos.x, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x - minBiomeRadius, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x + minBiomeRadius, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x, pos.z - minBiomeRadius);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x, pos.z + minBiomeRadius);
if (!biomesToSearch.contains(biome)) {
return null;
}
return new ChunkCoordinates(pos.x, pos.y, pos.z);
}
private static void removeInvalidBiomes(BiomeGenBase currentBiome, Set<BiomeGenBase> biomesToSearch) {
biomesToSearch.removeAll(waterBiomes);
if (BiomeDictionary.isBiomeOfType(currentBiome, BiomeDictionary.Type.NETHER)) {
biomesToSearch.retainAll(netherBiomes);
} else {
biomesToSearch.removeAll(netherBiomes);
}
if (BiomeDictionary.isBiomeOfType(currentBiome, BiomeDictionary.Type.END)) {
biomesToSearch.retainAll(endBiomes);
} else {
biomesToSearch.removeAll(endBiomes);
}
}
}
@@ -12,7 +12,6 @@ package forestry.apiculture.items;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.entity.Entity;
import net.minecraft.entity.EntityLivingBase;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemArmor;
import net.minecraft.item.ItemStack;
@@ -25,9 +24,9 @@ import forestry.api.apiculture.IArmorApiarist;
import forestry.api.core.IArmorNaturalist;
import forestry.api.core.Tabs;
import forestry.core.config.Constants;
import forestry.core.config.ForestryItem;
import forestry.core.render.TextureManager;
import forestry.core.utils.StringUtil;
import forestry.plugins.PluginApiculture;
public class ItemArmorApiarist extends ItemArmor implements IArmorApiarist, IArmorNaturalist {
@@ -39,7 +38,7 @@ public class ItemArmorApiarist extends ItemArmor implements IArmorApiarist, IArm
@Override
public String getArmorTexture(ItemStack stack, Entity entity, int slot, String type) {
if (stack != null && stack.getItem() == PluginApiculture.items.apiaristLegs) {
if (ForestryItem.apiaristLegs.isItemEqual(stack)) {
return Constants.ID + ":" + Constants.TEXTURE_APIARIST_ARMOR_SECONDARY;
} else {
return Constants.ID + ":" + Constants.TEXTURE_APIARIST_ARMOR_PRIMARY;
@@ -49,7 +48,7 @@ public class ItemArmorApiarist extends ItemArmor implements IArmorApiarist, IArm
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister register) {
itemIcon = TextureManager.registerTex(register, StringUtil.cleanItemName(this));
itemIcon = TextureManager.getInstance().registerTex(register, StringUtil.cleanItemName(this));
}
@SideOnly(Side.CLIENT)
@@ -73,11 +72,6 @@ public class ItemArmorApiarist extends ItemArmor implements IArmorApiarist, IArm
return false;
}
@Override
public boolean protectEntity(EntityLivingBase entity, ItemStack armor, String cause, boolean doProtect) {
return true;
}
@Override
public boolean protectPlayer(EntityPlayer player, ItemStack armor, String cause, boolean doProtect) {
return true;
@@ -17,6 +17,7 @@ import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.NBTTagCompound;
import net.minecraft.util.EnumChatFormatting;
import net.minecraft.util.IIcon;
@@ -32,6 +33,7 @@ import forestry.api.core.Tabs;
import forestry.api.genetics.AlleleManager;
import forestry.api.genetics.IAllele;
import forestry.api.genetics.IAlleleSpecies;
import forestry.api.genetics.IIndividual;
import forestry.apiculture.genetics.BeeGenome;
import forestry.core.config.Config;
import forestry.core.genetics.ItemGE;
@@ -42,8 +44,9 @@ public class ItemBeeGE extends ItemGE {
private final EnumBeeType type;
public ItemBeeGE(EnumBeeType type) {
super(Tabs.tabApiculture);
super();
this.type = type;
setCreativeTab(Tabs.tabApiculture);
if (type != EnumBeeType.DRONE) {
setMaxStackSize(1);
}
@@ -109,21 +112,27 @@ public class ItemBeeGE extends ItemGE {
@SuppressWarnings("rawtypes")
@Override
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) {
if (type == EnumBeeType.QUEEN) {
return;
}
addCreativeItems(itemList, true);
}
@SuppressWarnings({"rawtypes", "unchecked"})
public void addCreativeItems(List itemList, boolean hideSecrets) {
for (IBee bee : BeeManager.beeRoot.getIndividualTemplates()) {
for (IIndividual individual : BeeManager.beeRoot.getIndividualTemplates()) {
// Don't show secret bees unless ordered to.
if (hideSecrets && bee.isSecret() && !Config.isDebug) {
if (hideSecrets && individual.isSecret() && !Config.isDebug) {
continue;
}
ItemStack beeStack = BeeManager.beeRoot.getMemberStack(bee, type.ordinal());
if (beeStack != null) {
itemList.add(beeStack);
}
NBTTagCompound nbttagcompound = new NBTTagCompound();
ItemStack someStack = new ItemStack(this);
individual.writeToNBT(nbttagcompound);
someStack.setTagCompound(nbttagcompound);
itemList.add(someStack);
}
}
@@ -169,18 +178,12 @@ public class ItemBeeGE extends ItemGE {
}
}
@Override
@SideOnly(Side.CLIENT)
@Override
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) {
+68 -38
View File
@@ -1,38 +1,68 @@
/*******************************************************************************
* 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.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import forestry.api.core.Tabs;
import forestry.apiculture.gui.GuiBeealyzer;
import forestry.apiculture.inventory.ItemInventoryBeealyzer;
import forestry.core.gui.ContainerAlyzer;
import forestry.core.items.ItemWithGui;
public class ItemBeealyzer extends ItemWithGui {
public ItemBeealyzer() {
setCreativeTab(Tabs.tabApiculture);
}
@Override
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
ItemInventoryBeealyzer inventory = new ItemInventoryBeealyzer(player, heldItem);
return new GuiBeealyzer(player, inventory);
}
@Override
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
ItemInventoryBeealyzer inventory = new ItemInventoryBeealyzer(player, heldItem);
return new ContainerAlyzer(inventory, player);
}
}
/*******************************************************************************
* 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.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import net.minecraft.world.World;
import forestry.api.apiculture.BeeManager;
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;
import forestry.core.network.GuiId;
public class ItemBeealyzer extends ItemAlyzer {
public ItemBeealyzer() {
super();
setMaxStackSize(1);
setCreativeTab(Tabs.tabApiculture);
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {
if (!world.isRemote) {
entityplayer.openGui(ForestryAPI.instance, GuiId.BeealyzerGUI.ordinal(), world, (int) entityplayer.posX, (int) entityplayer.posY, (int) entityplayer.posZ);
}
return itemstack;
}
public static class BeealyzerInventory extends AlyzerInventory implements IHintSource {
public BeealyzerInventory(EntityPlayer player, ItemStack itemStack) {
super(player, 7, itemStack);
}
@Override
protected ISpeciesRoot getSpeciesRoot() {
return BeeManager.beeRoot;
}
// / IHINTSOURCE
@Override
public boolean hasHints() {
return Config.hints.get("beealyzer") != null && Config.hints.get("beealyzer").length > 0;
}
@Override
public String[] getHints() {
return Config.hints.get("beealyzer");
}
}
}
@@ -1,22 +1,26 @@
/*******************************************************************************
* 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.energy.blocks;
import forestry.core.blocks.BlockRegistry;
import forestry.core.items.ItemBlockForestry;
public class BlockRegistryEnergy extends BlockRegistry {
public final BlockEngine engine;
public BlockRegistryEnergy() {
engine = registerBlock(new BlockEngine(), ItemBlockForestry.class, "engine");
}
}
/*******************************************************************************
* 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.items;
import net.minecraft.block.Block;
import forestry.core.items.IStructureBlockItem;
import forestry.core.items.ItemBlockForestry;
/**
* @author CovertJaguar <http://www.railcraft.info/>
*/
public class ItemBlockAlveary extends ItemBlockForestry implements IStructureBlockItem {
public ItemBlockAlveary(Block block) {
super(block);
}
}
@@ -10,51 +10,75 @@
******************************************************************************/
package forestry.apiculture.items;
import com.google.common.collect.ImmutableSet;
import java.util.Collection;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
import java.util.Set;
import net.minecraft.client.renderer.texture.IIconRegister;
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.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.util.ChunkCoordinates;
import net.minecraft.world.World;
import net.minecraft.world.biome.BiomeGenBase;
import net.minecraftforge.common.BiomeDictionary;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.api.apiculture.BeeManager;
import forestry.api.apiculture.IBee;
import forestry.api.core.EnumHumidity;
import forestry.api.core.EnumTemperature;
import forestry.api.core.ForestryAPI;
import forestry.api.core.IErrorSource;
import forestry.api.core.IErrorState;
import forestry.api.core.Tabs;
import forestry.api.genetics.AlleleManager;
import forestry.apiculture.gui.ContainerHabitatLocator;
import forestry.apiculture.gui.GuiHabitatLocator;
import forestry.apiculture.inventory.ItemInventoryHabitatLocator;
import forestry.apiculture.render.TextureHabitatLocator;
import forestry.core.items.ItemWithGui;
import forestry.core.config.Config;
import forestry.core.config.ForestryItem;
import forestry.core.errors.EnumErrorCode;
import forestry.core.gui.IHintSource;
import forestry.core.inventory.ItemInventory;
import forestry.core.items.ItemInventoried;
import forestry.core.network.GuiId;
import forestry.core.proxy.Proxies;
import forestry.core.utils.StringUtil;
import forestry.core.utils.vect.Vect;
public class ItemHabitatLocator extends ItemInventoried {
public class ItemHabitatLocator extends ItemWithGui {
private static final String iconName = "forestry:biomefinder";
private final HabitatLocatorLogic locatorLogic;
private Set<BiomeGenBase> targetBiomes = new HashSet<>();
private boolean biomeFound = false;
private int searchRadiusIteration = 0;
private int searchAngleIteration = 0;
private Vect searchCenter;
public ItemHabitatLocator() {
setCreativeTab(Tabs.tabApiculture);
super();
setMaxStackSize(1);
locatorLogic = new HabitatLocatorLogic();
}
public HabitatLocatorLogic getLocatorLogic() {
return locatorLogic;
setCreativeTab(Tabs.tabApiculture);
}
@Override
public void onUpdate(ItemStack p_77663_1_, World world, Entity player, int p_77663_4_, boolean p_77663_5_) {
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {
if (!world.isRemote) {
locatorLogic.onUpdate(world, player);
entityplayer.openGui(ForestryAPI.instance, GuiId.HabitatLocatorGUI.ordinal(), world, (int) entityplayer.posX, (int) entityplayer.posY, (int) entityplayer.posZ);
}
return itemstack;
}
/* TEXTURES */
@@ -82,13 +106,266 @@ public class ItemHabitatLocator extends ItemWithGui {
list.add(StringUtil.localize("gui.humidity") + ": " + AlleleManager.climateHelper.toDisplay(humidity));
}
@Override
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
return new GuiHabitatLocator(player, new ItemInventoryHabitatLocator(player, heldItem));
private void startBiomeSearch(IBee bee, EntityPlayer player) {
this.targetBiomes = new HashSet<>(bee.getSuitableBiomes());
this.searchAngleIteration = 0;
this.searchRadiusIteration = 0;
this.biomeFound = false;
this.searchCenter = new Vect(player);
BiomeGenBase currentBiome = player.worldObj.getBiomeGenForCoords(searchCenter.x, searchCenter.z);
removeInvalidBiomes(currentBiome, targetBiomes);
// reset the locator coordinates
Proxies.common.setHabitatLocatorCoordinates(null, null);
}
@Override
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
return new ContainerHabitatLocator(player, new ItemInventoryHabitatLocator(player, heldItem));
public void onUpdate(ItemStack p_77663_1_, World world, Entity player, int p_77663_4_, boolean p_77663_5_) {
if (world.isRemote) {
return;
}
if (targetBiomes.isEmpty()) {
return;
}
// once we've found the biome, slow down to conserve cpu and network data
if (biomeFound && world.getTotalWorldTime() % 20 != 0) {
return;
}
ChunkCoordinates target = findNearestBiome(player, targetBiomes);
// send an update if we find the biome
if (target != null) {
Proxies.common.setHabitatLocatorCoordinates(player, target);
biomeFound = true;
}
}
private ChunkCoordinates findNearestBiome(Entity player, Collection<BiomeGenBase> biomesToSearch) {
final int maxChecksPerTick = 100;
final int maxSearchRadiusIterations = 500;
final int spacing = 20;
Vect playerPos = new Vect(player);
// If we are in a valid spot, we point to ourselves.
ChunkCoordinates coordinates = getChunkCoordinates(playerPos, player.worldObj, biomesToSearch);
if (coordinates != null) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
return new ChunkCoordinates(playerPos.x, playerPos.y, playerPos.z);
}
// check in a circular pattern, starting at the center and increasing radius each step
final int radius = spacing * (searchRadiusIteration + 1);
double angleSpacing = 2.0f * Math.asin(spacing / (2.0 * radius));
// round to nearest divisible angle, for an even distribution
angleSpacing = 2.0 * Math.PI / Math.round(2.0 * Math.PI / angleSpacing);
// do a limited number of checks per tick
for (int i = 0; i < maxChecksPerTick; i++) {
double angle = angleSpacing * searchAngleIteration;
if (angle > 2.0 * Math.PI) {
searchAngleIteration = 0;
searchRadiusIteration++;
if (searchRadiusIteration > maxSearchRadiusIterations) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
searchCenter = playerPos;
}
return null;
} else {
searchAngleIteration++;
}
int xOffset = Math.round((float) (radius * Math.cos(angle)));
int zOffset = Math.round((float) (radius * Math.sin(angle)));
Vect pos = searchCenter.add(xOffset, 0, zOffset);
coordinates = getChunkCoordinates(pos, player.worldObj, biomesToSearch);
if (coordinates != null) {
searchAngleIteration = 0;
searchRadiusIteration = 0;
return coordinates;
}
}
return null;
}
private static ChunkCoordinates getChunkCoordinates(Vect pos, World world, Collection<BiomeGenBase> biomesToSearch) {
// to avoid reporting very tiny patches, check around the point want
final int minBiomeRadius = 8;
BiomeGenBase biome;
biome = world.getBiomeGenForCoords(pos.x, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x - minBiomeRadius, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x + minBiomeRadius, pos.z);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x, pos.z - minBiomeRadius);
if (!biomesToSearch.contains(biome)) {
return null;
}
biome = world.getBiomeGenForCoords(pos.x, pos.z + minBiomeRadius);
if (!biomesToSearch.contains(biome)) {
return null;
}
return new ChunkCoordinates(pos.x, pos.y, pos.z);
}
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));
Collections.addAll(waterBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.OCEAN));
Collections.addAll(waterBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.RIVER));
Collections.addAll(netherBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.NETHER));
Collections.addAll(endBiomes, BiomeDictionary.getBiomesForType(BiomeDictionary.Type.END));
}
private static void removeInvalidBiomes(BiomeGenBase currentBiome, Set<BiomeGenBase> biomesToSearch) {
biomesToSearch.removeAll(waterBiomes);
if (BiomeDictionary.isBiomeOfType(currentBiome, BiomeDictionary.Type.NETHER)) {
biomesToSearch.retainAll(netherBiomes);
} else {
biomesToSearch.removeAll(netherBiomes);
}
if (BiomeDictionary.isBiomeOfType(currentBiome, BiomeDictionary.Type.END)) {
biomesToSearch.retainAll(endBiomes);
} else {
biomesToSearch.removeAll(endBiomes);
}
}
public static class HabitatLocatorInventory extends ItemInventory implements IErrorSource, IHintSource {
private static final short SLOT_ENERGY = 2;
private static final short SLOT_SPECIMEN = 0;
private static final short SLOT_ANALYZED = 1;
private final ItemHabitatLocator habitatLocator;
public HabitatLocatorInventory(EntityPlayer player, ItemStack itemstack) {
super(player, 3, itemstack);
this.habitatLocator = (ItemHabitatLocator) itemstack.getItem();
}
private static boolean isEnergy(ItemStack itemstack) {
if (itemstack == null || itemstack.stackSize <= 0) {
return false;
}
return ForestryItem.honeyDrop.isItemEqual(itemstack) || ForestryItem.honeydew.isItemEqual(itemstack);
}
@Override
public void onSlotClick(EntityPlayer player) {
if (getStackInSlot(SLOT_ANALYZED) != null) {
if (habitatLocator.biomeFound) {
return;
}
} else if (getStackInSlot(SLOT_SPECIMEN) != null) {
// Requires energy
if (!isEnergy(getStackInSlot(SLOT_ENERGY))) {
return;
}
// Decrease energy
decrStackSize(SLOT_ENERGY, 1);
setInventorySlotContents(SLOT_ANALYZED, getStackInSlot(SLOT_SPECIMEN));
setInventorySlotContents(SLOT_SPECIMEN, null);
}
IBee bee = BeeManager.beeRoot.getMember(getStackInSlot(SLOT_ANALYZED));
// No bee, abort
if (bee == null) {
return;
}
habitatLocator.startBiomeSearch(bee, player);
}
public Set<BiomeGenBase> getBiomesToSearch() {
return habitatLocator.targetBiomes;
}
// / IHINTSOURCE
@Override
public boolean hasHints() {
return Config.hints.get("habitatlocator") != null && Config.hints.get("habitatlocator").length > 0;
}
@Override
public String[] getHints() {
return Config.hints.get("habitatlocator");
}
// / IERRORSOURCE
@Override
public ImmutableSet<IErrorState> getErrorStates() {
if (getStackInSlot(SLOT_ANALYZED) != null) {
return ImmutableSet.of();
}
ImmutableSet.Builder<IErrorState> errorStates = ImmutableSet.builder();
ItemStack specimen = getStackInSlot(SLOT_SPECIMEN);
if (!BeeManager.beeRoot.isMember(specimen)) {
errorStates.add(EnumErrorCode.NOTHINGANALYZE);
}
if (!isEnergy(getStackInSlot(SLOT_ENERGY))) {
errorStates.add(EnumErrorCode.NOHONEY);
}
return errorStates.build();
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
if (slotIndex == SLOT_ENERGY) {
Item item = itemStack.getItem();
return item == ForestryItem.honeydew.item() || item == ForestryItem.honeyDrop.item();
} else if (slotIndex == SLOT_SPECIMEN) {
return BeeManager.beeRoot.isMember(itemStack);
}
return false;
}
}
}
@@ -20,9 +20,51 @@ import net.minecraft.item.ItemStack;
import forestry.api.core.Tabs;
import forestry.core.config.Config;
import forestry.core.config.ForestryItem;
import forestry.core.items.ItemForestryMultiPass;
public class ItemHoneycomb extends ItemForestryMultiPass {
private static class CombInfo {
public final String name;
public final int primaryColor;
public final int secondaryColor;
public boolean isSecret = false;
public CombInfo(String name, int primaryColor, int secondaryColor) {
this.name = name;
this.primaryColor = primaryColor;
this.secondaryColor = secondaryColor;
}
public CombInfo setIsSecret() {
this.isSecret = true;
return this;
}
}
private final CombInfo[] combs = new CombInfo[]{
new CombInfo("honey", 0xe8d56a, 0xffa12b), // 0
new CombInfo("cocoa", 0x674016, 0xffb62b).setIsSecret(), // 1
new CombInfo("simmering", 0x981919, 0xffb62b), // 2
new CombInfo("stringy", 0xc8be67, 0xbda93e), // 3
new CombInfo("frozen", 0xf9ffff, 0xa0ffff), // 4
new CombInfo("dripping", 0xdc7613, 0xffff00), // 5
new CombInfo("silky", 0x508907, 0xddff00), // 6
new CombInfo("parched", 0xdcbe13, 0xffff00), // 7
new CombInfo("mysterious", 0x161616, 0xe099ff).setIsSecret(), // 8
new CombInfo("irradiated", 0xeafff3, 0xeeff00).setIsSecret(), // 9
new CombInfo("powdery", 0xe4e4e4, 0xffffff).setIsSecret(), // 10
new CombInfo("reddened", 0x4b0000, 0x6200e7).setIsSecret(), // 11
new CombInfo("darkened", 0x353535, 0x33ebcb).setIsSecret(), // 12
new CombInfo("omega", 0x191919, 0x6dcff6).setIsSecret(), // 13
new CombInfo("wheaten", 0xfeff8f, 0xffffff).setIsSecret(), // 14
new CombInfo("mossy", 0x2a3313, 0x7e9939), // 15
new CombInfo("mellow", 0x886000, 0xfff960) // 16
// new CombInfo("", 0xd7bee5, 0xfd58ab), // kindof pinkish
};
public ItemHoneycomb() {
super();
setMaxDamage(0);
@@ -42,53 +84,44 @@ public class ItemHoneycomb extends ItemForestryMultiPass {
@Override
public String getUnlocalizedName(ItemStack stack) {
EnumHoneyComb honeyComb = EnumHoneyComb.VALUES[stack.getItemDamage()];
return super.getUnlocalizedName(stack) + "." + honeyComb.name;
return super.getUnlocalizedName(stack) + "." + combs[stack.getItemDamage()].name;
}
@Override
public int getColorFromItemStack(ItemStack itemstack, int j) {
EnumHoneyComb honeyComb = EnumHoneyComb.VALUES[itemstack.getItemDamage()];
if (j == 0) {
return honeyComb.primaryColor;
return combs[itemstack.getItemDamage()].primaryColor;
} else {
return honeyComb.secondaryColor;
return combs[itemstack.getItemDamage()].secondaryColor;
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) {
for (int i = 0; i < EnumHoneyComb.VALUES.length; i++) {
EnumHoneyComb honeyComb = EnumHoneyComb.VALUES[i];
if (!honeyComb.isSecret() || Config.isDebug) {
for (int i = 0; i < combs.length; i++) {
if (!combs[i].isSecret || Config.isDebug) {
itemList.add(new ItemStack(this, 1, i));
}
}
}
private static EnumHoneyComb getRandomCombType(Random random, boolean includeSecret) {
List<EnumHoneyComb> validCombs = new ArrayList<>(EnumHoneyComb.VALUES.length);
for (int i = 0; i < EnumHoneyComb.VALUES.length; i++) {
EnumHoneyComb honeyComb = EnumHoneyComb.VALUES[i];
if (!honeyComb.isSecret() || includeSecret) {
validCombs.add(honeyComb);
private int getRandomCombType(Random random, boolean includeSecret) {
List<Integer> validCombs = new ArrayList<>(combs.length);
for (int i = 0; i < combs.length; i++) {
if (!combs[i].isSecret || includeSecret) {
validCombs.add(i);
}
}
if (validCombs.isEmpty()) {
return null;
return 0;
} else {
return validCombs.get(random.nextInt(validCombs.size()));
}
}
public ItemStack getRandomComb(int amount, Random random, boolean includeSecret) {
EnumHoneyComb honeyComb = getRandomCombType(random, includeSecret);
return get(honeyComb, amount);
}
public ItemStack get(EnumHoneyComb honeyComb, int amount) {
return new ItemStack(this, amount, honeyComb.ordinal());
public static ItemStack getRandomComb(int qty, Random random, boolean includeSecret) {
return ForestryItem.beeComb.getItemStack(qty, ((ItemHoneycomb) ForestryItem.beeComb.item()).getRandomCombType(random, includeSecret));
}
}
+162 -36
View File
@@ -1,36 +1,162 @@
/*******************************************************************************
* 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.items;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.ItemStack;
import forestry.api.core.Tabs;
import forestry.apiculture.gui.ContainerImprinter;
import forestry.apiculture.gui.GuiImprinter;
import forestry.apiculture.inventory.ItemInventoryImprinter;
import forestry.core.items.ItemWithGui;
public class ItemImprinter extends ItemWithGui {
public ItemImprinter() {
setCreativeTab(Tabs.tabApiculture);
}
@Override
public Object getGui(EntityPlayer player, ItemStack heldItem, int data) {
return new GuiImprinter(player.inventory, new ItemInventoryImprinter(player, heldItem));
}
@Override
public Object getContainer(EntityPlayer player, ItemStack heldItem, int data) {
return new ContainerImprinter(player.inventory, new ItemInventoryImprinter(player, heldItem));
}
}
/*******************************************************************************
* 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.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.IAlleleBeeSpecies;
import forestry.api.apiculture.IBee;
import forestry.api.core.ForestryAPI;
import forestry.api.core.Tabs;
import forestry.apiculture.genetics.Bee;
import forestry.core.inventory.ItemInventory;
import forestry.core.items.ItemForestry;
import forestry.core.network.GuiId;
public class ItemImprinter extends ItemForestry {
public static class ImprinterInventory extends ItemInventory {
private static final short specimenSlot = 0;
private static final short imprintedSlot = 1;
private int primaryIndex = 0;
private int secondaryIndex = 0;
public ImprinterInventory(EntityPlayer player, ItemStack itemStack) {
super(player, 2, itemStack);
}
public void advancePrimary() {
if (primaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) {
primaryIndex++;
} else {
primaryIndex = 0;
}
}
public void advanceSecondary() {
if (secondaryIndex < BeeManager.beeRoot.getIndividualTemplates().size() - 1) {
secondaryIndex++;
} else {
secondaryIndex = 0;
}
}
public void regressPrimary() {
if (primaryIndex > 0) {
primaryIndex--;
} else {
primaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1;
}
}
public void regressSecondary() {
if (secondaryIndex > 0) {
secondaryIndex--;
} else {
secondaryIndex = BeeManager.beeRoot.getIndividualTemplates().size() - 1;
}
}
public IAlleleBeeSpecies getPrimary() {
return BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getGenome().getPrimary();
}
public IAlleleBeeSpecies getSecondary() {
return BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getGenome().getPrimary();
}
public IBee getSelectedBee() {
return new Bee(BeeManager.beeRoot.templateAsGenome(
BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(primaryIndex).getIdent()),
BeeManager.beeRoot.getGenomeTemplates().get(BeeManager.beeRoot.getIndividualTemplates().get(secondaryIndex).getIdent())));
}
public int getPrimaryIndex() {
return primaryIndex;
}
public int getSecondaryIndex() {
return secondaryIndex;
}
public void setPrimaryIndex(int index) {
primaryIndex = index;
}
public void setSecondaryIndex(int index) {
secondaryIndex = index;
}
@Override
public void onSlotClick(EntityPlayer player) {
ItemStack specimen = getStackInSlot(specimenSlot);
if (specimen == null) {
return;
}
// Only imprint bees
if (!BeeManager.beeRoot.isMember(specimen)) {
return;
}
// Needs space
if (getStackInSlot(imprintedSlot) != null) {
return;
}
IBee imprint = getSelectedBee();
if (imprint == null) {
return;
}
NBTTagCompound nbttagcompound = new NBTTagCompound();
imprint.writeToNBT(nbttagcompound);
specimen.setTagCompound(nbttagcompound);
setInventorySlotContents(imprintedSlot, specimen);
setInventorySlotContents(specimenSlot, null);
}
@Override
public String getInventoryName() {
return "Imprinter";
}
@Override
public boolean canSlotAccept(int slotIndex, ItemStack itemStack) {
return BeeManager.beeRoot.isMember(itemStack);
}
}
public ItemImprinter() {
super();
setCreativeTab(Tabs.tabApiculture);
setMaxStackSize(1);
}
@Override
public ItemStack onItemRightClick(ItemStack itemstack, World world, EntityPlayer entityplayer) {
if (!world.isRemote) {
entityplayer.openGui(ForestryAPI.instance, GuiId.ImprinterGUI.ordinal(), world, (int) entityplayer.posX, (int) entityplayer.posY,
(int) entityplayer.posZ);
}
return itemstack;
}
}
@@ -1,116 +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.items;
import java.util.List;
import net.minecraft.block.BlockDispenser;
import net.minecraft.block.BlockRailBase;
import net.minecraft.client.renderer.texture.IIconRegister;
import net.minecraft.creativetab.CreativeTabs;
import net.minecraft.entity.player.EntityPlayer;
import net.minecraft.item.Item;
import net.minecraft.item.ItemMinecart;
import net.minecraft.item.ItemStack;
import net.minecraft.util.IIcon;
import net.minecraft.world.World;
import cpw.mods.fml.relauncher.Side;
import cpw.mods.fml.relauncher.SideOnly;
import forestry.apiculture.entities.EntityMinecartApiary;
import forestry.apiculture.entities.EntityMinecartBeeHousingBase;
import forestry.apiculture.entities.EntityMinecartBeehouse;
import forestry.core.render.TextureManager;
public class ItemMinecartBeehouse extends ItemMinecart {
private final String[] definition = new String[]{"cart.beehouse", "cart.apiary"};
public ItemMinecartBeehouse() {
super(0);
setMaxDamage(0);
setHasSubtypes(true);
BlockDispenser.dispenseBehaviorRegistry.putObject(this, null);
}
@Override
public boolean onItemUse(ItemStack itemStack, EntityPlayer player, World world, int x, int y, int z, int side, float facingX, float facingY, float facingZ) {
if (!BlockRailBase.func_150051_a(world.getBlock(x, y, z))) {
return false;
}
if (!world.isRemote) {
EntityMinecartBeeHousingBase entityMinecart;
if (itemStack.getItemDamage() == 0) {
entityMinecart = new EntityMinecartBeehouse(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F));
} else {
entityMinecart = new EntityMinecartApiary(world, (double) ((float) x + 0.5F), (double) ((float) y + 0.5F), (double) ((float) z + 0.5F));
}
entityMinecart.setOwner(player.getGameProfile());
if (itemStack.hasDisplayName()) {
entityMinecart.setMinecartName(itemStack.getDisplayName());
}
world.spawnEntityInWorld(entityMinecart);
}
--itemStack.stackSize;
return true;
}
@Override
public String getUnlocalizedName(ItemStack stack) {
if (stack.getItemDamage() >= definition.length || stack.getItemDamage() < 0) {
return "item.forestry.unknown";
} else {
return "item.for." + definition[stack.getItemDamage()];
}
}
/* ICONS */
@SideOnly(Side.CLIENT)
private IIcon[] icons;
@SideOnly(Side.CLIENT)
@Override
public void registerIcons(IIconRegister register) {
icons = new IIcon[definition.length];
for (int i = 0; i < definition.length; i++) {
icons[i] = TextureManager.registerTex(register, definition[i]);
}
}
@Override
public IIcon getIconFromDamage(int damage) {
if (damage >= definition.length || damage < 0) {
return icons[0];
} else {
return icons[damage];
}
}
@SuppressWarnings({"rawtypes", "unchecked"})
@Override
public void getSubItems(Item item, CreativeTabs par2CreativeTabs, List itemList) {
for (int i = 0; i < definition.length; i++) {
itemList.add(new ItemStack(this, 1, i));
}
}
public ItemStack getBeeHouseMinecart() {
return new ItemStack(this, 1, 0);
}
public ItemStack getApiaryMinecart() {
return new ItemStack(this, 1, 1);
}
}
@@ -1,26 +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.items;
import net.minecraft.item.ItemStack;
import forestry.api.core.Tabs;
import forestry.core.items.ItemOverlay;
public class ItemPollenCluster extends ItemOverlay {
public ItemPollenCluster() {
super(Tabs.tabApiculture, EnumPollenCluster.VALUES);
}
public ItemStack get(EnumPollenCluster pollenCluster, int amount) {
return new ItemStack(this, amount, pollenCluster.ordinal());
}
}
Loaded 100 of 961 files, more files were not shown because too many files have changed in this diff. Show more