aboutsummaryrefslogtreecommitdiff
path: root/src/Java/miscutil/core
diff options
context:
space:
mode:
Diffstat (limited to 'src/Java/miscutil/core')
-rw-r--r--src/Java/miscutil/core/handler/COMPAT_IntermodStaging.java4
-rw-r--r--src/Java/miscutil/core/intermod/forestry/HANDLER_Forestry.java25
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/blocks/FR_BlockAlveary.java240
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemHiveFrame.java67
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemRegistryApiculture.java58
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/FR_StringManager.java30
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java107
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java62
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/FR_TileAlveary.java199
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/TileAlvearyMutatron.java232
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/inventory/FR_ContainerAlvearyMutatron.java28
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/inventory/FR_GuiAlvearyMutatron.java26
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/inventory/FR_InventoryMutatron.java29
-rw-r--r--src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/inventory/MutatronHandler.java22
-rw-r--r--src/Java/miscutil/core/intermod/forestry/core/gui/FR_FontRenderer.java111
-rw-r--r--src/Java/miscutil/core/intermod/forestry/core/gui/FR_GuiForestry.java272
-rw-r--r--src/Java/miscutil/core/intermod/forestry/core/gui/FR_GuiForestryTitled.java33
-rw-r--r--src/Java/miscutil/core/intermod/forestry/core/gui/FR_GuiUtil.java145
-rw-r--r--src/Java/miscutil/core/intermod/forestry/core/gui/FR_WidgetManager.java90
-rw-r--r--src/Java/miscutil/core/lib/LoadedMods.java12
20 files changed, 1792 insertions, 0 deletions
diff --git a/src/Java/miscutil/core/handler/COMPAT_IntermodStaging.java b/src/Java/miscutil/core/handler/COMPAT_IntermodStaging.java
index 668487c5b7..a1e12cea8b 100644
--- a/src/Java/miscutil/core/handler/COMPAT_IntermodStaging.java
+++ b/src/Java/miscutil/core/handler/COMPAT_IntermodStaging.java
@@ -1,5 +1,6 @@
package miscutil.core.handler;
+import miscutil.core.intermod.forestry.HANDLER_Forestry;
import miscutil.core.intermod.growthcraft.HANDLER_Growthcraft;
import miscutil.core.intermod.thermalfoundation.HANDLER_ThermalFoundation;
import miscutil.gregtech.HANDLER_Gregtech;
@@ -10,17 +11,20 @@ public class COMPAT_IntermodStaging {
HANDLER_Growthcraft.preInit();
HANDLER_ThermalFoundation.preInit();
HANDLER_Gregtech.preInit();
+ HANDLER_Forestry.preInit();
}
public static void init(){
HANDLER_ThermalFoundation.Init();
HANDLER_Gregtech.init();
+ HANDLER_Forestry.Init();
}
public static void postInit(){
HANDLER_ThermalFoundation.postInit();
HANDLER_Gregtech.postInit();
+ HANDLER_Forestry.postInit();
}
diff --git a/src/Java/miscutil/core/intermod/forestry/HANDLER_Forestry.java b/src/Java/miscutil/core/intermod/forestry/HANDLER_Forestry.java
new file mode 100644
index 0000000000..f670477318
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/HANDLER_Forestry.java
@@ -0,0 +1,25 @@
+package miscutil.core.intermod.forestry;
+
+import miscutil.core.intermod.forestry.apiculture.items.FR_ItemRegistryApiculture;
+import miscutil.core.lib.LoadedMods;
+
+public class HANDLER_Forestry {
+
+ public static void preInit(){
+ if (LoadedMods.Forestry){
+ FR_ItemRegistryApiculture.RegisterApiculture();
+ }
+ }
+
+ public static void Init(){
+ if (LoadedMods.Forestry){
+
+ }
+ }
+
+ public static void postInit(){
+ if (LoadedMods.Forestry){
+
+ }
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/blocks/FR_BlockAlveary.java b/src/Java/miscutil/core/intermod/forestry/apiculture/blocks/FR_BlockAlveary.java
new file mode 100644
index 0000000000..24f34e3829
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/blocks/FR_BlockAlveary.java
@@ -0,0 +1,240 @@
+/*******************************************************************************
+ * 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 miscutil.core.intermod.forestry.apiculture.blocks;
+
+import java.util.ArrayList;
+import java.util.List;
+
+import miscutil.core.creative.AddToCreativeTab;
+import miscutil.core.intermod.forestry.apiculture.multiblock.TileAlvearyMutatron;
+import net.minecraft.block.Block;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.creativetab.CreativeTabs;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.tileentity.TileEntity;
+import net.minecraft.util.IIcon;
+import net.minecraft.world.IBlockAccess;
+import net.minecraft.world.World;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.apiculture.MaterialBeehive;
+import forestry.apiculture.multiblock.TileAlveary;
+import forestry.apiculture.multiblock.TileAlvearyPlain;
+import forestry.core.blocks.BlockStructure;
+import forestry.core.render.TextureManager;
+
+public class FR_BlockAlveary extends BlockStructure {
+ public enum Type {
+ PLAIN,
+ MUTATRON;
+ public static final Type[] VALUES = values();
+ }
+
+ public FR_BlockAlveary() {
+ super(new MaterialBeehive(false));
+ setHardness(1.0f);
+ setCreativeTab(AddToCreativeTab.tabMisc);
+ setHarvestLevel("axe", 0);
+ }
+
+ @SuppressWarnings({"rawtypes", "unchecked"})
+ @Override
+ @SideOnly(Side.CLIENT)
+ public void getSubBlocks(Item item, CreativeTabs tab, List list) {
+ for (int i = 0; i < 8; i++) {
+ if (i == 1) {
+ continue;
+ }
+ list.add(new ItemStack(item, 1, i));
+ }
+ }
+
+ @Override
+ public int getRenderType() {
+ return 0;
+ }
+
+ @Override
+ public boolean renderAsNormalBlock() {
+ return true;
+ }
+
+ @Override
+ public ArrayList<ItemStack> getDrops(World world, int x, int y, int z, int metadata, int fortune) {
+ ArrayList<ItemStack> drop = new ArrayList<>();
+ drop.add(new ItemStack(this, 1, metadata != 1 ? metadata : 0));
+ return drop;
+ }
+
+ @Override
+ public int getDamageValue(World world, int x, int y, int z) {
+ int meta = world.getBlockMetadata(x, y, z);
+ return meta != 1 ? meta : 0;
+ }
+
+ /* 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 MUTATRON:
+ return new TileAlvearyMutatron();
+ case PLAIN:
+ default:
+ return new TileAlvearyPlain();
+ }
+ }
+
+ @Override
+ public TileEntity createNewTileEntity(World world, int meta) {
+ return createTileEntity(world, meta);
+ }
+
+ /* ICONS */
+ public static final int PLAIN = 0;
+ public static final int ENTRANCE = 1;
+ public static final int BOTTOM = 2;
+ public static final int LEFT = 3;
+ public static final int RIGHT = 4;
+ public static final int MUTATRON_OFF = 5;
+ public static final int MUTATRON_ON = 6;
+
+ @SideOnly(Side.CLIENT)
+ private IIcon[] icons;
+
+ @SideOnly(Side.CLIENT)
+ @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.mutatron.off");
+ icons[6] = TextureManager.registerTex(register, "apiculture/alveary.mutatron.on");
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public IIcon getIcon(int side, int metadata) {
+ if ((metadata <= 1 || metadata == Type.MUTATRON.ordinal())
+ && (side == 1 || side == 0)) {
+ return icons[BOTTOM];
+ }
+
+ Type type = Type.VALUES[metadata];
+
+ switch (type) {
+ case PLAIN:
+ return icons[PLAIN];
+ case MUTATRON:
+ return icons[MUTATRON_OFF];
+ default:
+ return null;
+ }
+
+ }
+
+ @SideOnly(Side.CLIENT)
+ @Override
+ public IIcon getIcon(IBlockAccess world, int x, int y, int z, int side) {
+ int meta = world.getBlockMetadata(x, y, z);
+
+ if (meta == 1) {
+ return this.getIcon(side, meta);
+ } else if (meta > 1) {
+ return getBlockTextureFromSideAndTile(world, x, y, z, side);
+ }
+
+ Block blockXP = world.getBlock(x + 1, y, z);
+ Block blockXM = world.getBlock(x - 1, y, z);
+
+ if (blockXP == this && blockXM != this) {
+
+ if (world.getBlockMetadata(x + 1, y, z) == 1) {
+
+ if (world.getBlock(x, y, z + 1) != this) {
+ return switchForSide(42, side);
+ } else {
+ return switchForSide(41, side);
+ }
+
+ } else {
+ return this.getIcon(side, meta);
+ }
+
+ } else if (blockXP != this && blockXM == this) {
+ if (world.getBlockMetadata(x - 1, y, z) == 1) {
+
+ if (world.getBlock(x, y, z + 1) != this) {
+ return switchForSide(41, side);
+ } else {
+ return switchForSide(42, side);
+ }
+
+ } else {
+ return this.getIcon(side, meta);
+ }
+ }
+
+ return this.getIcon(side, meta);
+ }
+
+ @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)) {
+ return getIcon(side, 0);
+ }
+
+ return icons[((TileAlveary) tile).getIcon(side)];
+ }
+
+ @SideOnly(Side.CLIENT)
+ private IIcon switchForSide(int textureId, int side) {
+
+ if (side == 4 || side == 5) {
+ if (textureId == 41) {
+ return icons[LEFT];
+ } else {
+ return icons[RIGHT];
+ }
+ } else if (textureId == 41) {
+ return icons[RIGHT];
+ } else {
+ return icons[LEFT];
+ }
+
+ }
+
+ @Override
+ public void onNeighborBlockChange(World world, int x, int y, int z, Block block) {
+ super.onNeighborBlockChange(world, x, y, z, block);
+
+ TileEntity tileEntity = world.getTileEntity(x, y, z);
+ if (tileEntity instanceof TileAlveary) {
+ TileAlveary tileAlveary = (TileAlveary) tileEntity;
+
+ // We must check that the slabs on top were not removed
+ tileAlveary.getMultiblockLogic().getController().reassemble();
+ }
+ }
+
+ public ItemStack get(Type type) {
+ return new ItemStack(this, 1, type.ordinal());
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemHiveFrame.java b/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemHiveFrame.java
new file mode 100644
index 0000000000..de8de491af
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemHiveFrame.java
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ * 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 miscutil.core.intermod.forestry.apiculture.items;
+
+import miscutil.core.creative.AddToCreativeTab;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import forestry.api.apiculture.DefaultBeeModifier;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IHiveFrame;
+
+public class FR_ItemHiveFrame extends Item implements IHiveFrame {
+
+ private final IBeeModifier beeModifier;
+
+ public FR_ItemHiveFrame(int maxDamage, float geneticDecay) {
+ setMaxStackSize(1);
+ setMaxDamage(maxDamage);
+ setCreativeTab(AddToCreativeTab.tabMisc);
+
+ this.beeModifier = new HiveFrameBeeModifier(geneticDecay);
+ }
+
+ @Override
+ public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) {
+ frame.setItemDamage(frame.getItemDamage() + wear);
+ if (frame.getItemDamage() >= frame.getMaxDamage()) {
+ return null;
+ } else {
+ return frame;
+ }
+ }
+
+ @Override
+ public IBeeModifier getBeeModifier() {
+ return beeModifier;
+ }
+
+ private static class HiveFrameBeeModifier extends DefaultBeeModifier {
+ private final float geneticDecay;
+
+ public HiveFrameBeeModifier(float geneticDecay) {
+ this.geneticDecay = geneticDecay;
+ }
+
+ @Override
+ public float getProductionModifier(IBeeGenome genome, float currentModifier) {
+ return (currentModifier < 10f) ? 2f : 1f;
+ }
+
+ @Override
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
+ return this.geneticDecay;
+ }
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemRegistryApiculture.java b/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemRegistryApiculture.java
new file mode 100644
index 0000000000..f648077f4e
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/items/FR_ItemRegistryApiculture.java
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ * 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 miscutil.core.intermod.forestry.apiculture.items;
+import miscutil.core.intermod.forestry.apiculture.items.magicbees.MB_HiveFrameType;
+import miscutil.core.intermod.forestry.apiculture.items.magicbees.MB_ItemMagicHiveFrame;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import net.minecraft.util.WeightedRandomChestContent;
+import net.minecraftforge.common.ChestGenHooks;
+import cpw.mods.fml.common.registry.GameRegistry;
+import forestry.core.items.ItemRegistry;
+import forestry.core.utils.StringUtil;
+
+public class FR_ItemRegistryApiculture extends ItemRegistry {
+
+
+ //----- Apiary Frames ----------------------
+ public static FR_ItemHiveFrame frameUntreated;
+ public static FR_ItemHiveFrame frameImpregnated;
+ public static FR_ItemHiveFrame frameProven;
+ //Magic Bee Frame Items
+ public static MB_ItemMagicHiveFrame hiveFrameMetabolic;
+ public static MB_ItemMagicHiveFrame hiveFrameOblivion;
+
+ public static void RegisterApiculture() {
+
+ //Forestry Frames
+ //frameUntreated = registerItem(new FR_ItemHiveFrame(80, 0.9f), "frameUntreated");
+ //frameImpregnated = registerItem(new FR_ItemHiveFrame(240, 0.4f), "frameImpregnated");
+ //frameProven = registerItem(new FR_ItemHiveFrame(720, 0.3f), "frameProven");
+
+ //Magic Bee like Frames
+ hiveFrameMetabolic = new MB_ItemMagicHiveFrame(MB_HiveFrameType.ACCELERATED);
+ hiveFrameOblivion = new MB_ItemMagicHiveFrame(MB_HiveFrameType.VOID);
+ ChestGenHooks.addItem(ChestGenHooks.STRONGHOLD_CORRIDOR, new WeightedRandomChestContent(new ItemStack(hiveFrameOblivion), 1, 1, 18));
+ ChestGenHooks.addItem(ChestGenHooks.STRONGHOLD_LIBRARY, new WeightedRandomChestContent(new ItemStack(hiveFrameOblivion), 1, 3, 23));
+
+
+
+
+ }
+
+ protected static <T extends Item> T registerItem(T item, String name) {
+ item.setUnlocalizedName(name);
+ GameRegistry.registerItem(item, StringUtil.cleanItemName(item));
+ return item;
+ }
+}
+
+
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/FR_StringManager.java b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/FR_StringManager.java
new file mode 100644
index 0000000000..991b961ba9
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/FR_StringManager.java
@@ -0,0 +1,30 @@
+package miscutil.core.intermod.forestry.apiculture.items.magicbees;
+
+import net.minecraft.util.StatCollector;
+
+public class FR_StringManager
+{
+ public static String getLocalizedString(String key)
+ {
+ if(StatCollector.canTranslate(key))
+ {
+ return StatCollector.translateToLocal(key);
+ }
+ else
+ {
+ return StatCollector.translateToFallback(key);
+ }
+ }
+
+ public static String getLocalizedString(String key, Object... objects)
+ {
+ if(StatCollector.canTranslate(key))
+ {
+ return String.format(StatCollector.translateToLocal(key), objects);
+ }
+ else
+ {
+ return String.format(StatCollector.translateToFallback(key), objects);
+ }
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java
new file mode 100644
index 0000000000..a168c8157b
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java
@@ -0,0 +1,107 @@
+package miscutil.core.intermod.forestry.apiculture.items.magicbees;
+
+import forestry.api.apiculture.IBeeGenome;
+import forestry.api.apiculture.IBeeModifier;
+
+public enum MB_HiveFrameType implements IBeeModifier
+{
+ ACCELERATED("Accelerated", 175, 1f, 2.5f, 0.9f, 1.8f, 1f),
+ VOID("Void", 20, 1f, 1f, 0.0001f, 10f, 1f);
+
+ private final String frameName;
+ public final int maxDamage;
+
+ private final float territoryMod;
+ private final float mutationMod;
+ private final float lifespanMod;
+ private final float productionMod;
+ private final float floweringMod;
+ private final float geneticDecayMod;
+ private final boolean isSealed;
+ private final boolean isLit;
+ private final boolean isSunlit;
+ private final boolean isHellish;
+
+ MB_HiveFrameType(String name, int damage, float territory, float mutation, float lifespan, float production, float geneticDecay) {
+ this(name, damage, territory, mutation, lifespan, production, 1f, geneticDecay, false, false, false, false);
+ }
+
+ MB_HiveFrameType(String name, int damage,
+ float territory, float mutation, float lifespan, float production, float flowering, float geneticDecay,
+ boolean sealed, boolean lit, boolean sunlit, boolean hellish)
+ {
+ this.frameName = name;
+ this.maxDamage = damage;
+
+ this.territoryMod = territory;
+ this.mutationMod = mutation;
+ this.lifespanMod = lifespan;
+ this.productionMod = production;
+ this.floweringMod = flowering;
+ this.geneticDecayMod = geneticDecay;
+ this.isSealed = sealed;
+ this.isLit = lit;
+ this.isSunlit = sunlit;
+ this.isHellish = hellish;
+ }
+
+ public String getName()
+ {
+ return this.frameName;
+ }
+
+ public String getLocalizedName()
+ {
+ return FR_StringManager.getLocalizedString("frame." + this.frameName);
+ }
+
+ @Override
+ public float getTerritoryModifier(IBeeGenome genome, float currentModifier) {
+ return territoryMod;
+ }
+
+ @Override
+ public float getMutationModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
+ return mutationMod;
+ }
+
+ @Override
+ public float getLifespanModifier(IBeeGenome genome, IBeeGenome mate, float currentModifier) {
+ return lifespanMod;
+ }
+
+ @Override
+ public float getProductionModifier(IBeeGenome genome, float currentModifier) {
+ return productionMod;
+ }
+
+ @Override
+ public float getFloweringModifier(IBeeGenome genome, float currentModifier) {
+ return floweringMod;
+ }
+
+ @Override
+ public float getGeneticDecay(IBeeGenome genome, float currentModifier) {
+ return geneticDecayMod;
+ }
+
+ @Override
+ public boolean isSealed() {
+ return isSealed;
+ }
+
+ @Override
+ public boolean isSelfLighted() {
+ return isLit;
+ }
+
+ @Override
+ public boolean isSunlightSimulated() {
+ return isSunlit;
+ }
+
+ @Override
+ public boolean isHellish() {
+ return isHellish;
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java
new file mode 100644
index 0000000000..14234e7aae
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java
@@ -0,0 +1,62 @@
+package miscutil.core.intermod.forestry.apiculture.items.magicbees;
+
+import miscutil.core.creative.AddToCreativeTab;
+import miscutil.core.lib.CORE;
+import net.minecraft.client.renderer.texture.IIconRegister;
+import net.minecraft.item.Item;
+import net.minecraft.item.ItemStack;
+import cpw.mods.fml.common.registry.GameRegistry;
+import cpw.mods.fml.relauncher.Side;
+import cpw.mods.fml.relauncher.SideOnly;
+import forestry.api.apiculture.IBee;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IHiveFrame;
+
+public class MB_ItemMagicHiveFrame extends Item implements IHiveFrame
+{
+ private MB_HiveFrameType type;
+
+ public MB_ItemMagicHiveFrame(MB_HiveFrameType frameType)
+ {
+ super();
+ this.type = frameType;
+ this.setMaxDamage(this.type.maxDamage);
+ this.setMaxStackSize(1);
+ this.setCreativeTab(AddToCreativeTab.tabMisc);
+ this.setUnlocalizedName("frame" + frameType.getName());
+ GameRegistry.registerItem(this, "frame" + frameType.getName());
+ }
+
+ @SideOnly(Side.CLIENT)
+ public void registerIcons(IIconRegister par1IconRegister)
+ {
+ this.itemIcon = par1IconRegister.registerIcon(CORE.MODID + ":frame" + type.getName());
+ }
+
+ // --------- IHiveFrame functions -----------------------------------------
+
+ @Override
+ public ItemStack frameUsed(IBeeHousing housing, ItemStack frame, IBee queen, int wear) {
+ frame.setItemDamage(frame.getItemDamage() + wear);
+
+ if (frame.getItemDamage() >= frame.getMaxDamage()) {
+ // Break the frame.
+ frame = null;
+ }
+
+ return frame;
+ }
+
+ @Override
+ public IBeeModifier getBeeModifier() {
+ return type;
+ }
+
+ @Override
+ public boolean isBookEnchantable(ItemStack itemstack1, ItemStack itemstack2)
+ {
+ return false;
+ }
+
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/FR_TileAlveary.java b/src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/FR_TileAlveary.java
new file mode 100644
index 0000000000..29c4a7f445
--- /dev/null
+++ b/src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/FR_TileAlveary.java
@@ -0,0 +1,199 @@
+/*******************************************************************************
+ * 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 miscutil.core.intermod.forestry.apiculture.multiblock;
+
+import java.io.IOException;
+import java.util.List;
+
+import miscutil.core.intermod.forestry.apiculture.blocks.FR_BlockAlveary;
+import net.minecraft.entity.player.EntityPlayer;
+import net.minecraft.util.ChunkCoordinates;
+import net.minecraft.util.Vec3;
+import net.minecraft.world.biome.BiomeGenBase;
+import forestry.api.apiculture.IBeeHousing;
+import forestry.api.apiculture.IBeeHousingInventory;
+import forestry.api.apiculture.IBeeListener;
+import forestry.api.apiculture.IBeeModifier;
+import forestry.api.apiculture.IBeekeepingLogic;
+import forestry.api.core.EnumHumidity;
+import forestry.api.core.EnumTemperature;
+import forestry.api.core.IErrorLogic;
+import forestry.api.multiblock.IAlvearyComponent;
+import forestry.api.multiblock.IMultiblockController;
+import forestry.apiculture.multiblock.MultiblockLogicAlveary;
+import forestry.core.access.EnumAccess;
+import forestry.core.access.IAccessHandler;
+import forestry.core.access.IRestrictedAccess;
+import forestry.core.config.Config;
+import forestry.core.gui.IHintSource;
+import forestry.core.inventory.IInventoryAdapter;
+import forestry.core.multiblock.MultiblockTileEntityForestry;
+import forestry.core.network.DataInputStreamForestry;
+import forestry.core.network.DataOutputStreamForestry;
+import forestry.core.network.IStreamableGui;
+import forestry.core.tiles.IClimatised;
+import forestry.core.tiles.ITitled;
+
+public abstract class FR_TileAlveary extends MultiblockTileEntityForestry<MultiblockLogicAlveary> implements IBeeHousing, IAlvearyComponent, IRestrictedAccess, IStreamableGui, ITitled, IClimatised, IHintSource {
+ private final String unlocalizedTitle;
+
+ protected FR_TileAlveary() {
+ this(FR_BlockAlveary.Type.PLAIN);
+ }
+
+ protected FR_TileAlveary(FR_BlockAlveary.Type type) {
+ super(new MultiblockLogicAlveary());
+ this.unlocalizedTitle = "tile.alveary." + type.ordinal() + ".name";
+ }
+
+ /* TEXTURES */
+ public int getIcon(int side) {
+ return FR_BlockAlveary.PLAIN;
+ }
+
+ @Override
+ public void onMachineAssembled(IMultiblockController multiblockController, ChunkCoordinates minCoord, ChunkCoordinates maxCoord) {
+ // Re-render this block on the client
+ if (worldObj.isRemote) {
+ this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
+ }
+ worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType());
+ markDirty();
+ }
+
+ @Override
+ public void onMachineBroken() {
+ // Re-render this block on the client
+ if (worldObj.isRemote) {
+ this.worldObj.markBlockForUpdate(xCoord, yCoord, zCoord);
+ }
+ worldObj.notifyBlocksOfNeighborChange(xCoord, yCoord, zCoord, getBlockType());
+ markDirty();
+ }
+
+ /* IHousing */
+ @Override
+ public BiomeGenBase getBiome() {
+ return getMultiblockLogic().getController().getBiome();
+ }
+
+ /* IBeeHousing */
+ @Override
+ public Iterable<IBeeModifier> getBeeModifiers() {
+ return getMultiblockLogic().getController().getBeeModifiers();
+ }
+
+ @Override
+ public Iterable<IBeeListener> getBeeListeners() {
+ return getMultiblockLogic().getController().getBeeListeners();
+ }
+
+ @Override
+ public IBeeHousingInventory getBeeInventory() {
+ return getMultiblockLogic().getController().getBeeInventory();
+ }
+
+ @Override
+ public IBeekeepingLogic getBeekeepingLogic() {
+ return getMultiblockLogic().getController().getBeekeepingLogic();
+ }
+
+ @Override
+ public Vec3 getBeeFXCoordinates() {
+ return getMultiblockLogic().getController().getBeeFXCoordinates();
+ }
+
+ /* IClimatised */
+ @Override
+ public EnumTemperature getTemperature() {
+ return getMultiblockLogic().getController().getTemperature();
+ }
+
+ @Override
+ public EnumHumidity getHumidity() {
+ return getMultiblockLogic().getController().getHumidity();
+ }
+
+ @Override
+ public int getBlockLightValue() {
+ return getMultiblockLogic().getController().getBlockLightValue();
+ }
+
+ @Override
+ public boolean canBlockSeeTheSky() {
+ return getMultiblockLogic().getController().canBlockSeeTheSky();
+ }
+
+ @Override
+ public IErrorLogic getErrorLogic() {
+ return getMultiblockLogic().getController().getErrorLogic();
+ }
+
+ @Override
+ public IAccessHandler getAccessHandler() {
+ return getMultiblockLogic().getController().getAccessHandler();
+ }
+
+ @Override
+ public void onSwitchAccess(EnumAccess oldAccess, EnumAccess newAccess) {
+ getMultiblockLogic().getController().onSwitchAccess(oldAccess, newAccess);
+ }
+
+ @Override
+ public IInventoryAdapter getInternalInventory() {
+ return getMultiblockLogic().getController().getInternalInventory();
+ }
+
+ @Override
+ public String getUnlocalizedTitle() {
+ return unlocalizedTitle;
+ }
+
+ /* IHintSource */
+ @Override
+ public List<String> getHints() {
+ return Config.hints.get("apiary");
+ }
+
+ /* IClimatised */
+ @Override
+ public float getExactTemperature() {
+ return getMultiblockLogic().getController().getExactTemperature();
+ }
+
+ @Override
+ public float getExactHumidity() {
+ return getMultiblockLogic().getController().getExactHumidity();
+ }
+
+ /* IStreamableGui */
+ @Override
+ public void writeGuiData(DataOutputStreamForestry data) throws IOException {
+ getMultiblockLogic().getController().writeGuiData(data);
+ }
+
+ @Override
+ public void readGuiData(DataInputStreamForestry data) throws IOException {
+ getMultiblockLogic().getController().readGuiData(data);
+ }
+
+ @Override
+ public Object getGui(EntityPlayer player, int data) {
+ //return new GuiAlveary(player.inventory, this);
+ return null; //TODO
+ }
+
+ @Override
+ public Object getContainer(EntityPlayer player, int data) {
+ //return new ContainerAlveary(player.inventory, this);
+ return null; //TODO
+ }
+}
diff --git a/src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/TileAlvearyMutatron.java b/src/Java/miscutil/core/intermod/forestry/apiculture/multiblock/TileAlvearyMutatron.java
new file mo