From cbe0e497be8e466c380a5b4fa781b314ede9ada3 Mon Sep 17 00:00:00 2001 From: Draknyte1 Date: Sun, 6 Nov 2016 19:32:27 +1000 Subject: Revert "$ Cleaned up the entire project." This reverts commit 0669f5eb9d5029a8b94ec552171b0837605f7747. # Conflicts: # src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMTE_NuclearReactor.java # src/Java/gtPlusPlus/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntity_MassFabricator.java Revert "% Cleaned up Imports." This reverts commit 3654052fb63a571c5eaca7f20714b87c17f7e966. --- src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java | 38 +- .../forestry/bees/alveary/AlvearyBeeListener.java | 8 +- .../bees/alveary/FR_AlvearyFrameBlock.java | 26 +- .../forestry/bees/alveary/FR_BlockAlveary.java | 391 +++++++++--------- .../xmod/forestry/bees/alveary/FR_TileAlveary.java | 175 ++++---- .../bees/alveary/IAlvearyComponentAdvanced.java | 22 +- .../bees/alveary/IAlvearyFrameHousing.java | 1 - .../bees/alveary/ISidedFrameWearingInventory.java | 8 +- .../bees/alveary/TileAlvearyFrameHousing.java | 459 ++++++++++++--------- .../bees/alveary/gui/CONTAINER_FrameHousing.java | 103 +++-- .../bees/alveary/gui/GUI_FrameHousing.java | 74 ++-- .../bees/alveary/gui/InventoryFrameHousing.java | 98 +++-- .../xmod/forestry/bees/items/FR_ItemRegistry.java | 137 +++--- .../xmod/forestry/bees/items/FR_StringUtil.java | 15 +- .../xmod/forestry/bees/items/MB_FrameType.java | 126 +++--- .../xmod/forestry/bees/items/MB_ItemFrame.java | 141 ++++--- .../forestry/bees/recipe/FR_Gregtech_Recipes.java | 118 +++--- 17 files changed, 1048 insertions(+), 892 deletions(-) (limited to 'src/Java/gtPlusPlus/xmod/forestry') diff --git a/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java b/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java index 8052b98dac..ff26064e98 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java +++ b/src/Java/gtPlusPlus/xmod/forestry/HANDLER_FR.java @@ -1,34 +1,34 @@ package gtPlusPlus.xmod.forestry; -import cpw.mods.fml.common.registry.GameRegistry; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.lib.LoadedMods; import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; import gtPlusPlus.xmod.forestry.bees.items.FR_ItemRegistry; import gtPlusPlus.xmod.forestry.bees.recipe.FR_Gregtech_Recipes; +import cpw.mods.fml.common.registry.GameRegistry; public class HANDLER_FR { - public static void Init() { - if (LoadedMods.Forestry) { - // FR_TileHandler.init(); - // new FR_GuiIDRegistry(); - } - } - - public static void postInit() { - if (LoadedMods.Forestry) { - FR_Gregtech_Recipes.registerItems(); - } - } - - public static void preInit() { - if (LoadedMods.Forestry) { + public static void preInit(){ + if (LoadedMods.Forestry){ FR_ItemRegistry.Register(); - if (CORE.configSwitches.enableCustomAlvearyBlocks) { + if (CORE.configSwitches.enableCustomAlvearyBlocks){ GameRegistry.registerTileEntity(TileAlvearyFrameHousing.class, "FrameHousing"); } - // FR_BlockRegistryApiculture.RegistryApiculture(); - } + //FR_BlockRegistryApiculture.RegistryApiculture(); + } + } + + public static void Init(){ + if (LoadedMods.Forestry){ + //FR_TileHandler.init(); + //new FR_GuiIDRegistry(); + } } + + public static void postInit(){ + if (LoadedMods.Forestry){ + FR_Gregtech_Recipes.registerItems(); + } + } } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java index 039c80fe00..6736c54309 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/AlvearyBeeListener.java @@ -6,13 +6,13 @@ import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing; public class AlvearyBeeListener extends DefaultBeeListener { private final IAlvearyFrameHousing apiary; - public AlvearyBeeListener(final IAlvearyFrameHousing apiary) { + public AlvearyBeeListener(IAlvearyFrameHousing apiary) { this.apiary = apiary; } @Override - public void wearOutEquipment(final int amount) { - final InventoryFrameHousing apiaryInventory = this.apiary.getAlvearyInventory(); - apiaryInventory.wearOutFrames(this.apiary, amount); + public void wearOutEquipment(int amount) { + InventoryFrameHousing apiaryInventory = apiary.getAlvearyInventory(); + apiaryInventory.wearOutFrames(apiary, amount); } } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_AlvearyFrameBlock.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_AlvearyFrameBlock.java index 5c6956ec86..2f4437afd1 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_AlvearyFrameBlock.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_AlvearyFrameBlock.java @@ -1,11 +1,15 @@ package gtPlusPlus.xmod.forestry.bees.alveary; +import net.minecraft.util.ChunkCoordinates; + import com.mojang.authlib.GameProfile; -import forestry.api.multiblock.*; -import net.minecraft.util.ChunkCoordinates; +import forestry.api.multiblock.IAlvearyComponent; +import forestry.api.multiblock.IMultiblockComponent; +import forestry.api.multiblock.IMultiblockController; +import forestry.api.multiblock.IMultiblockLogicAlveary; -public class FR_AlvearyFrameBlock implements IAlvearyComponent, IMultiblockComponent { +public class FR_AlvearyFrameBlock implements IAlvearyComponent, IMultiblockComponent{ @Override public ChunkCoordinates getCoordinates() { @@ -14,28 +18,28 @@ public class FR_AlvearyFrameBlock implements IAlvearyComponent, IMultiblockCompo } @Override - public IMultiblockLogicAlveary getMultiblockLogic() { + public GameProfile getOwner() { // TODO Auto-generated method stub return null; } @Override - public GameProfile getOwner() { + public void onMachineAssembled(IMultiblockController arg0, + ChunkCoordinates arg1, ChunkCoordinates arg2) { // TODO Auto-generated method stub - return null; + } @Override - public void onMachineAssembled(final IMultiblockController arg0, final ChunkCoordinates arg1, - final ChunkCoordinates arg2) { + public void onMachineBroken() { // TODO Auto-generated method stub - + } @Override - public void onMachineBroken() { + public IMultiblockLogicAlveary getMultiblockLogic() { // TODO Auto-generated method stub - + return null; } } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_BlockAlveary.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_BlockAlveary.java index d4fce6465b..f087ad75f4 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_BlockAlveary.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_BlockAlveary.java @@ -3,15 +3,6 @@ package gtPlusPlus.xmod.forestry.bees.alveary; import java.util.ArrayList; import java.util.List; -import cpw.mods.fml.common.registry.LanguageRegistry; -import cpw.mods.fml.relauncher.Side; -import cpw.mods.fml.relauncher.SideOnly; -import forestry.apiculture.MaterialBeehive; -import forestry.apiculture.multiblock.TileAlvearyPlain; -import forestry.core.blocks.BlockStructure; -import forestry.core.render.TextureManager; -import gtPlusPlus.GTplusplus; -import gtPlusPlus.core.creative.AddToCreativeTab; import net.minecraft.block.Block; import net.minecraft.client.renderer.texture.IIconRegister; import net.minecraft.creativetab.CreativeTabs; @@ -22,250 +13,262 @@ import net.minecraft.tileentity.TileEntity; import net.minecraft.util.IIcon; import net.minecraft.world.IBlockAccess; import net.minecraft.world.World; +import cpw.mods.fml.common.registry.LanguageRegistry; +import cpw.mods.fml.relauncher.Side; +import cpw.mods.fml.relauncher.SideOnly; +import forestry.apiculture.MaterialBeehive; +import forestry.apiculture.multiblock.TileAlvearyPlain; +import forestry.core.blocks.BlockStructure; +import forestry.core.render.TextureManager; +import gtPlusPlus.GTplusplus; +import gtPlusPlus.core.creative.AddToCreativeTab; -public class FR_BlockAlveary extends BlockStructure { - - public static enum Type { - PLAIN, ERROR, FRAME, MUTATOR, +public class FR_BlockAlveary extends BlockStructure +{ - // Placeholder Values + public static enum Type + { + PLAIN, + ERROR, + FRAME, + MUTATOR, + + //Placeholder Values HEATER, HYGRO, STABILIZER, SIEVE; - public static final Type[] VALUES = Type.values(); + public static final Type[] VALUES = values(); - private Type() { - } + private Type() {} } - /* 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 ALVEARY_FRAME_OFF = 5; - - public static final int ALVEARY_FRAME_ON = 6; - - public static final int ALVEARY_MUTATOR_OFF = 7; + public FR_BlockAlveary() + { + super(new MaterialBeehive(false)); + setHardness(1.0F); + setCreativeTab(AddToCreativeTab.tabBlock); + setHarvestLevel("axe", 0); + + } - public static final int ALVEARY_MUTATOR_ON = 8; + @Override + public boolean onBlockActivated(World world, int x, int y, int z, EntityPlayer player, int side, float lx, float ly, float lz) + { + if (world.isRemote) return true; + + TileEntity te = world.getTileEntity(x, y, z); + if (te != null && te instanceof TileAlvearyFrameHousing) + { + player.openGui(GTplusplus.instance, 0, world, x, y, z); + return true; + } + /*else if (te != null && te instanceof TileAlvearyFrameHousing) + { + player.openGui(GTplusplus.instance, 0, world, x, y, z); + return true; + }*/ + return false; + } + @Override @SideOnly(Side.CLIENT) - private IIcon[] icons; + public void getSubBlocks(Item item, CreativeTabs tab, List list) + { + for (int i = 0; i < 4; i++) { + if (i != 1 && i != 0) { + list.add(new ItemStack(item, 1, i)); + } + } + } - public FR_BlockAlveary() { - super(new MaterialBeehive(false)); - this.setHardness(1.0F); - this.setCreativeTab(AddToCreativeTab.tabBlock); - this.setHarvestLevel("axe", 0); + @Override + public int getRenderType() + { + return 0; + } + + @Override + public boolean renderAsNormalBlock() + { + return true; + } + @Override + public ArrayList getDrops(World world, int x, int y, int z, int metadata, int fortune) + { + ArrayList drop = new ArrayList(); + drop.add(new ItemStack(this, 1, metadata != 1 ? metadata : 0)); + return drop; } + @Override - public TileEntity createNewTileEntity(final World world, final int meta) { - return this.createTileEntity(world, meta); + public int getDamageValue(World world, int x, int y, int z) + { + int meta = world.getBlockMetadata(x, y, z); + return meta != 1 ? meta : 0; } + @Override - public TileEntity createTileEntity(final World world, final int metadata) { - if (metadata < 0 || metadata > Type.VALUES.length) { + public TileEntity createTileEntity(World world, int metadata) + { + if ((metadata < 0) || (metadata > Type.VALUES.length)) { return null; } - - final Type type = Type.VALUES[metadata]; - switch (type) { - case FRAME: - LanguageRegistry.addName(this, "Alveary Frame Housing"); - case MUTATOR: - LanguageRegistry.addName(this, "Alveary Mutator Block"); - case ERROR: - LanguageRegistry.addName(this, "Invalid Alveary Block"); - default: - LanguageRegistry.addName(this, "Unnamed Alveary Block"); + + + + Type type = Type.VALUES[metadata]; + switch (type) + { + case FRAME: + LanguageRegistry.addName(this, "Alveary Frame Housing"); + case MUTATOR: + LanguageRegistry.addName(this, "Alveary Mutator Block"); + case ERROR: + LanguageRegistry.addName(this, "Invalid Alveary Block"); + default: + LanguageRegistry.addName(this, "Unnamed Alveary Block"); } - switch (type) { - case FRAME: - return new TileAlvearyFrameHousing(); - case MUTATOR: - return new TileAlvearyPlain(); - case ERROR: - return new TileAlvearyPlain(); - default: - return new TileAlvearyPlain(); + switch (type) + { + case FRAME: + return new TileAlvearyFrameHousing(); + case MUTATOR: + return new TileAlvearyPlain(); + case ERROR: + return new TileAlvearyPlain(); + default: + return new TileAlvearyPlain(); } } - public ItemStack get(final Type type) { - return new ItemStack(this, 1, type.ordinal()); + + @Override + public Block setBlockName(String name) { + //int meta = this. + return super.setBlockName(name); } - @SideOnly(Side.CLIENT) - private IIcon getBlockTextureFromSideAndTile(final IBlockAccess world, final int x, final int y, final int z, - final int side) { - final TileEntity tile = world.getTileEntity(x, y, z); - if (!(tile instanceof FR_TileAlveary)) { - return this.getIcon(side, 0); - } - return this.icons[((FR_TileAlveary) tile).getIcon(side)]; + + @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 ALVEARY_FRAME_OFF = 5; + public static final int ALVEARY_FRAME_ON = 6; + public static final int ALVEARY_MUTATOR_OFF = 7; + public static final int ALVEARY_MUTATOR_ON = 8; + @SideOnly(Side.CLIENT) + private IIcon[] icons; + @SideOnly(Side.CLIENT) @Override - public int getDamageValue(final World world, final int x, final int y, final int z) { - final int meta = world.getBlockMetadata(x, y, z); - return meta != 1 ? meta : 0; + public void registerBlockIcons(IIconRegister register) { + icons = new IIcon[9]; + 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.framehousing.off"); + icons[6] = TextureManager.registerTex(register, "apiculture/alveary.framehousing.on"); + icons[7] = TextureManager.registerTex(register, "apiculture/alveary.mutator.off"); + icons[8] = TextureManager.registerTex(register, "apiculture/alveary.mutator.on"); } + @SideOnly(Side.CLIENT) @Override - public ArrayList getDrops(final World world, final int x, final int y, final int z, final int metadata, - final int fortune) { - final ArrayList drop = new ArrayList(); - drop.add(new ItemStack(this, 1, metadata != 1 ? metadata : 0)); - return drop; + public IIcon getIcon(int side, int metadata) { + if ((metadata <= 1 + || metadata == Type.FRAME.ordinal() || metadata == Type.MUTATOR.ordinal()) + && (side == 1 || side == 0)) { + return icons[BOTTOM]; + } + Type type = Type.VALUES[metadata]; + switch (type) { + case ERROR: + return icons[PLAIN]; + case FRAME: + return icons[ALVEARY_FRAME_OFF]; + case MUTATOR: + return icons[ALVEARY_MUTATOR_OFF]; + case HEATER: + return icons[ALVEARY_MUTATOR_OFF]; + case HYGRO: + return icons[ALVEARY_MUTATOR_OFF]; + case STABILIZER: + return icons[PLAIN]; + case SIEVE: + return icons[PLAIN]; + default: + return null; + } } @SideOnly(Side.CLIENT) @Override - public IIcon getIcon(final IBlockAccess world, final int x, final int y, final int z, final int side) { - final int meta = world.getBlockMetadata(x, y, z); + 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); } - else if (meta > 1) { - return this.getBlockTextureFromSideAndTile(world, x, y, z, side); - } - final Block blockXP = world.getBlock(x + 1, y, z); - final Block blockXM = world.getBlock(x - 1, y, z); + 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 this.switchForSide(42, side); + return switchForSide(42, side); } - return this.switchForSide(41, side); + return switchForSide(41, side); } return this.getIcon(side, meta); - } - else if (blockXP != this && blockXM == this) { + } else if (blockXP != this && blockXM == this) { if (world.getBlockMetadata(x - 1, y, z) == 1) { if (world.getBlock(x, y, z + 1) != this) { - return this.switchForSide(41, side); + return switchForSide(41, side); } - return this.switchForSide(42, side); + return switchForSide(42, side); } return this.getIcon(side, meta); } return this.getIcon(side, meta); } @SideOnly(Side.CLIENT) - @Override - public IIcon getIcon(final int side, final int metadata) { - if ((metadata <= 1 || metadata == Type.FRAME.ordinal() || metadata == Type.MUTATOR.ordinal()) - && (side == 1 || side == 0)) { - return this.icons[FR_BlockAlveary.BOTTOM]; - } - final Type type = Type.VALUES[metadata]; - switch (type) { - case ERROR: - return this.icons[FR_BlockAlveary.PLAIN]; - case FRAME: - return this.icons[FR_BlockAlveary.ALVEARY_FRAME_OFF]; - case MUTATOR: - return this.icons[FR_BlockAlveary.ALVEARY_MUTATOR_OFF]; - case HEATER: - return this.icons[FR_BlockAlveary.ALVEARY_MUTATOR_OFF]; - case HYGRO: - return this.icons[FR_BlockAlveary.ALVEARY_MUTATOR_OFF]; - case STABILIZER: - return this.icons[FR_BlockAlveary.PLAIN]; - case SIEVE: - return this.icons[FR_BlockAlveary.PLAIN]; - default: - return null; + private IIcon getBlockTextureFromSideAndTile(IBlockAccess world, int x, int y, int z, int side) { + TileEntity tile = world.getTileEntity(x, y, z); + if (!(tile instanceof FR_TileAlveary)) { + return getIcon(side, 0); } + return icons[((FR_TileAlveary) tile).getIcon(side)]; } - @Override - public int getRenderType() { - return 0; - } - - @Override @SideOnly(Side.CLIENT) - public void getSubBlocks(final Item item, final CreativeTabs tab, final List list) { - for (int i = 0; i < 4; i++) { - if (i != 1 && i != 0) { - list.add(new ItemStack(item, 1, i)); + private IIcon switchForSide(int textureId, int side) { + if (side == 4 || side == 5) { + if (textureId == 41) { + return icons[LEFT]; } + return icons[RIGHT]; + } else if (textureId == 41) { + return icons[RIGHT]; + } else { + return icons[LEFT]; } } - @Override - public boolean onBlockActivated(final World world, final int x, final int y, final int z, final EntityPlayer player, - final int side, final float lx, final float ly, final float lz) { - if (world.isRemote) { - return true; - } - - final TileEntity te = world.getTileEntity(x, y, z); - if (te != null && te instanceof TileAlvearyFrameHousing) { - player.openGui(GTplusplus.instance, 0, world, x, y, z); - return true; - } - /* - * else if (te != null && te instanceof TileAlvearyFrameHousing) { - * player.openGui(GTplusplus.instance, 0, world, x, y, z); return true; - * } - */ - return false; - } - - @Override - public void onNeighborBlockChange(final World world, final int x, final int y, final int z, final Block block) { + public void onNeighborBlockChange(World world, int x, int y, int z, Block block) { super.onNeighborBlockChange(world, x, y, z, block); - final TileEntity tileEntity = world.getTileEntity(x, y, z); + TileEntity tileEntity = world.getTileEntity(x, y, z); if (tileEntity instanceof FR_TileAlveary) { - final FR_TileAlveary tileAlveary = (FR_TileAlveary) tileEntity; + FR_TileAlveary tileAlveary = (FR_TileAlveary) tileEntity; // We must check that the slabs on top were not removed tileAlveary.getMultiblockLogic().getController().reassemble(); } } - - @SideOnly(Side.CLIENT) - @Override - public void registerBlockIcons(final IIconRegister register) { - this.icons = new IIcon[9]; - this.icons[0] = TextureManager.registerTex(register, "apiculture/alveary.plain"); - this.icons[1] = TextureManager.registerTex(register, "apiculture/alveary.entrance"); - this.icons[2] = TextureManager.registerTex(register, "apiculture/alveary.bottom"); - this.icons[3] = TextureManager.registerTex(register, "apiculture/alveary.left"); - this.icons[4] = TextureManager.registerTex(register, "apiculture/alveary.right"); - this.icons[5] = TextureManager.registerTex(register, "apiculture/alveary.framehousing.off"); - this.icons[6] = TextureManager.registerTex(register, "apiculture/alveary.framehousing.on"); - this.icons[7] = TextureManager.registerTex(register, "apiculture/alveary.mutator.off"); - this.icons[8] = TextureManager.registerTex(register, "apiculture/alveary.mutator.on"); - } - - @Override - public boolean renderAsNormalBlock() { - return true; - } - - @Override - public Block setBlockName(final String name) { - // int meta = this. - return super.setBlockName(name); - } - - @SideOnly(Side.CLIENT) - private IIcon switchForSide(final int textureId, final int side) { - if (side == 4 || side == 5) { - if (textureId == 41) { - return this.icons[FR_BlockAlveary.LEFT]; - } - return this.icons[FR_BlockAlveary.RIGHT]; - } - else if (textureId == 41) { - return this.icons[FR_BlockAlveary.RIGHT]; - } - else { - return this.icons[FR_BlockAlveary.LEFT]; - } + public ItemStack get(Type type) { + return new ItemStack(this, 1, type.ordinal()); } } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_TileAlveary.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_TileAlveary.java index 2db809ae90..b5b3b73e6b 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_TileAlveary.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/FR_TileAlveary.java @@ -3,160 +3,197 @@ package gtPlusPlus.xmod.forestry.bees.alveary; import java.io.IOException; import java.util.List; -import forestry.api.apiculture.*; -import forestry.api.core.*; +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.*; +import forestry.core.access.EnumAccess; +import forestry.core.access.IAccessHandler; +import forestry.core.access.IRestrictedAccess; import forestry.core.config.Config; import forestry.core.gui.IGuiHandlerForestry; import forestry.core.gui.IHintSource; import forestry.core.inventory.IInventoryAdapter; import forestry.core.multiblock.MultiblockTileEntityForestry; -import forestry.core.network.*; +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; -import net.minecraft.util.ChunkCoordinates; -import net.minecraft.util.Vec3; -import net.minecraft.world.biome.BiomeGenBase; -public abstract class FR_TileAlveary extends MultiblockTileEntityForestry - implements IBeeHousing, IAlvearyComponent, IRestrictedAccess, IStreamableGui, ITitled, IClimatised, IHintSource, - IGuiHandlerForestry { +public abstract class FR_TileAlveary +extends MultiblockTileEntityForestry +implements IBeeHousing, IAlvearyComponent, IRestrictedAccess, IStreamableGui, ITitled, IClimatised, IHintSource, IGuiHandlerForestry +{ private final String unlocalizedTitle; - protected FR_TileAlveary() { + protected FR_TileAlveary() + { this(FR_BlockAlveary.Type.ERROR); } - protected FR_TileAlveary(final FR_BlockAlveary.Type type) { + protected FR_TileAlveary(FR_BlockAlveary.Type type) + { super(new MultiblockLogicAlveary()); - this.unlocalizedTitle = "advanced.tile.for.alveary." + type.ordinal() + ".name"; - + this.unlocalizedTitle = ("advanced.tile.for.alveary." + type.ordinal() + ".name"); + } - @Override - public boolean canBlockSeeTheSky() { - return this.getMultiblockLogic().getController().canBlockSeeTheSky(); + public int getIcon(int side) + { + return 0; } @Override - public IAccessHandler getAccessHandler() { - return this.getMultiblockLogic().getController().getAccessHandler(); + public void onMachineAssembled(IMultiblockController multiblockController, ChunkCoordinates minCoord, ChunkCoordinates maxCoord) + { + if (this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, getBlockType()); + markDirty(); } @Override - public Vec3 getBeeFXCoordinates() { - return this.getMultiblockLogic().getController().getBeeFXCoordinates(); + public void onMachineBroken() + { + if (this.worldObj.isRemote) { + this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); + } + this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, getBlockType()); + markDirty(); } @Override - public IBeeHousingInventory getBeeInventory() { - return this.getMultiblockLogic().getController().getBeeInventory(); + public BiomeGenBase getBiome() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBiome(); } @Override - public IBeekeepingLogic getBeekeepingLogic() { - return this.getMultiblockLogic().getController().getBeekeepingLogic(); + public Iterable getBeeModifiers() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeModifiers(); } @Override - public Iterable getBeeListeners() { - return this.getMultiblockLogic().getController().getBeeListeners(); + public Iterable getBeeListeners() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners(); } @Override - public Iterable getBeeModifiers() { - return this.getMultiblockLogic().getController().getBeeModifiers(); + public IBeeHousingInventory getBeeInventory() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeInventory(); } @Override - public BiomeGenBase getBiome() { - return this.getMultiblockLogic().getController().getBiome(); + public IBeekeepingLogic getBeekeepingLogic() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeekeepingLogic(); } @Override - public int getBlockLightValue() { - return this.getMultiblockLogic().getController().getBlockLightValue(); + public Vec3 getBeeFXCoordinates() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeFXCoordinates(); } @Override - public IErrorLogic getErrorLogic() { - return this.getMultiblockLogic().getController().getErrorLogic(); + public EnumTemperature getTemperature() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getTemperature(); } @Override - public float getExactHumidity() { - return this.getMultiblockLogic().getController().getExactHumidity(); + public EnumHumidity getHumidity() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getHumidity(); } @Override - public float getExactTemperature() { - return this.getMultiblockLogic().getController().getExactTemperature(); + public int getBlockLightValue() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBlockLightValue(); } @Override - public List getHints() { - return Config.hints.get("apiary"); + public boolean canBlockSeeTheSky() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().canBlockSeeTheSky(); } @Override - public EnumHumidity getHumidity() { - return this.getMultiblockLogic().getController().getHumidity(); + public IErrorLogic getErrorLogic() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getErrorLogic(); } - public int getIcon(final int side) { - return 0; + @Override + public IAccessHandler getAccessHandler() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getAccessHandler(); } @Override - public IInventoryAdapter getInternalInventory() { - return this.getMultiblockLogic().getController().getInternalInventory(); + public void onSwitchAccess(EnumAccess oldAccess, EnumAccess newAccess) + { + ((MultiblockLogicAlveary)getMultiblockLogic()).getController().onSwitchAccess(oldAccess, newAccess); } @Override - public EnumTemperature getTemperature() { - return this.getMultiblockLogic().getController().getTemperature(); + public IInventoryAdapter getInternalInventory() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getInternalInventory(); } @Override - public String getUnlocalizedTitle() { + public String getUnlocalizedTitle() + { return this.unlocalizedTitle; } @Override - public void onMachineAssembled(final IMultiblockController multiblockController, final ChunkCoordinates minCoord, - final ChunkCoordinates maxCoord) { - if (this.worldObj.isRemote) { - this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); - } - this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, this.getBlockType()); - this.markDirty(); + public List getHints() + { + return Config.hints.get("apiary"); } @Override - public void onMachineBroken() { - if (this.worldObj.isRemote) { - this.worldObj.markBlockForUpdate(this.xCoord, this.yCoord, this.zCoord); - } - this.worldObj.notifyBlocksOfNeighborChange(this.xCoord, this.yCoord, this.zCoord, this.getBlockType()); - this.markDirty(); + public float getExactTemperature() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getExactTemperature(); } @Override - public void onSwitchAccess(final EnumAccess oldAccess, final EnumAccess newAccess) { - this.getMultiblockLogic().getController().onSwitchAccess(oldAccess, newAccess); + public float getExactHumidity() + { + return ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getExactHumidity(); } @Override - public void readGuiData(final DataInputStreamForestry data) throws IOException { - this.getMultiblockLogic().getController().readGuiData(data); + public void writeGuiData(DataOutputStreamForestry data) + throws IOException + { + ((MultiblockLogicAlveary)getMultiblockLogic()).getController().writeGuiData(data); } @Override - public void writeGuiData(final DataOutputStreamForestry data) throws IOException { - this.getMultiblockLogic().getController().writeGuiData(data); + public void readGuiData(DataInputStreamForestry data) + throws IOException + { + ((MultiblockLogicAlveary)getMultiblockLogic()).getController().readGuiData(data); } } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyComponentAdvanced.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyComponentAdvanced.java index c5c2e0c8f4..b55d2d37a6 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyComponentAdvanced.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyComponentAdvanced.java @@ -5,16 +5,24 @@ import forestry.api.core.IClimateControlled; import forestry.api.multiblock.IMultiblockComponent; import forestry.api.multiblock.IMultiblockLogicAlveary; -public abstract interface IAlvearyComponentAdvanced extends IMultiblockComponent { - public static abstract interface BeeModifier extends IAlvearyComponentAdvanced { - public abstract IBeeModifier getBeeModifier(); - } +public abstract interface IAlvearyComponentAdvanced +extends IMultiblockComponent +{ + @Override + public abstract T getMultiblockLogic(); - public static abstract interface FrameHouse extends IAlvearyComponentAdvanced { + + public static abstract interface FrameHouse + extends IAlvearyComponentAdvanced + { public abstract void changeClimate(int paramInt, IClimateControlled paramIClimateControlled); } - @Override - public abstract T getMultiblockLogic(); + + public static abstract interface BeeModifier + extends IAlvearyComponentAdvanced + { + public abstract IBeeModifier getBeeModifier(); + } } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java index d4166b00c9..6eeefa2696 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/IAlvearyFrameHousing.java @@ -5,6 +5,5 @@ import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing; public interface IAlvearyFrameHousing extends IBeeHousing { InventoryFrameHousing getAlvearyInventory(); - void wearOutFrames(IBeeHousing beeHousing, int amount); } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/ISidedFrameWearingInventory.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/ISidedFrameWearingInventory.java index f8724fc840..523c3e2434 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/ISidedFrameWearingInventory.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/ISidedFrameWearingInventory.java @@ -1,8 +1,10 @@ package gtPlusPlus.xmod.forestry.bees.alveary; -import forestry.api.apiculture.IBeeHousing; import net.minecraft.inventory.ISidedInventory; +import forestry.api.apiculture.IBeeHousing; -public abstract interface ISidedFrameWearingInventory extends ISidedInventory { - public abstract void wearOutFrames(IBeeHousing paramIBeeHousing, int paramInt); +public abstract interface ISidedFrameWearingInventory + extends ISidedInventory +{ + public abstract void wearOutFrames(IBeeHousing paramIBeeHousing, int paramInt); } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java index af1e0b95b3..794b5d1be8 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/TileAlvearyFrameHousing.java @@ -1,14 +1,37 @@ package gtPlusPlus.xmod.forestry.bees.alveary; -import java.util.*; +import java.util.ArrayList; +import java.util.Collection; +import java.util.Iterator; +import java.util.List; +import java.util.Map; +import java.util.Stack; -import forestry.api.apiculture.*; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.IInventory; +import net.minecraft.item.Item; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import forestry.api.apiculture.BeeManager; +import forestry.api.apiculture.DefaultBeeListener; +import forestry.api.apiculture.IBee; +import forestry.api.apiculture.IBeeHousing; +import forestry.api.apiculture.IBeeListener; +import forestry.api.apiculture.IBeeModifier; +import forestry.api.apiculture.IBeekeepingMode; +import forestry.api.apiculture.IHiveFrame; import forestry.api.arboriculture.EnumGermlingType; -import forestry.api.genetics.*; +import forestry.api.genetics.AlleleManager; +import forestry.api.genetics.IIndividual; +import forestry.api.genetics.ISpeciesRoot; import forestry.api.multiblock.IAlvearyComponent; import forestry.apiculture.AlvearyBeeModifier; +import forestry.apiculture.multiblock.MultiblockLogicAlveary; import forestry.apiculture.network.packets.PacketActiveUpdate; -import forestry.apiculture.worldgen.*; +import forestry.apiculture.worldgen.Hive; +import forestry.apiculture.worldgen.HiveDecorator; +import forestry.apiculture.worldgen.HiveDescriptionSwarmer; import forestry.core.inventory.IInventoryAdapter; import forestry.core.inventory.wrappers.IInvSlot; import forestry.core.inventory.wrappers.InventoryIterator; @@ -16,52 +39,21 @@ import forestry.core.proxy.Proxies; import forestry.core.tiles.IActivatable; import forestry.core.utils.ItemStackUtil; import gtPlusPlus.core.util.Utils; -import gtPlusPlus.xmod.forestry.bees.alveary.gui.*; -import net.minecraft.entity.player.EntityPlayer; -import net.minecraft.inventory.IInventory; -import net.minecraft.item.Item; -import net.minecraft.item.ItemStack; -import net.minecraft.nbt.NBTTagCompound; -import net.minecraft.nbt.NBTTagList; - -public class TileAlvearyFrameHousing extends FR_TileAlveary implements ISidedFrameWearingInventory, IActivatable, - IAlvearyComponent.Active, IAlvearyComponent.BeeModifier, IAlvearyFrameHousing, IAlvearyComponent.BeeListener { - static class AlvearyFrameHousingBeeListener extends DefaultBeeListener { - private final InventoryFrameHousing inventory; - - public AlvearyFrameHousingBeeListener(final InventoryFrameHousing inventory) { - this.inventory = inventory; - } - - @Override - public boolean onPollenRetrieved(final IIndividual pollen) { - /* - * if (!((Object) this.inventory).canStorePollen()) { return false; - * } - */ - final ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(pollen.getClass()); - - final ItemStack pollenStack = speciesRoot.getMemberStack(pollen, EnumGermlingType.POLLEN.ordinal()); - if (pollenStack != null) { - // ((Object) this.inventory).storePollenStack(pollenStack); - return true; - } - return false; - } - } - private final InventoryFrameHousing inventory; - private final IBeeListener beeListener; - private final Stack pendingSpawns = new Stack(); - - private boolean active; - - private final IBeeModifier beeModifier = new AlvearyBeeModifier(); - - // private final IBeeListener beeListener = new AlvearyBeeListener(this); - private final Iterable beeListenerList = this.getMultiblockLogic().getController() - .getBeeListeners(); - - public TileAlvearyFrameHousing() { +import gtPlusPlus.xmod.forestry.bees.alveary.gui.CONTAINER_FrameHousing; +import gtPlusPlus.xmod.forestry.bees.alveary.gui.GUI_FrameHousing; +import gtPlusPlus.xmod.forestry.bees.alveary.gui.InventoryFrameHousing; + +public class TileAlvearyFrameHousing +extends FR_TileAlveary +implements ISidedFrameWearingInventory, IActivatable, IAlvearyComponent.Active, IAlvearyComponent.BeeModifier, IAlvearyFrameHousing, IAlvearyComponent.BeeListener +{ + private final InventoryFrameHousing inventory; + private final IBeeListener beeListener; + private final Stack pendingSpawns = new Stack(); + private boolean active; + + public TileAlvearyFrameHousing() + { super(FR_BlockAlveary.Type.FRAME); this.inventory = new InventoryFrameHousing(this); this.beeListener = new AlvearyFrameHousingBeeListener(this.inventory); @@ -69,101 +61,113 @@ public class TileAlvearyFrameHousing extends FR_TileAlveary implements ISidedFra } @Override - public boolean allowsAutomation() { + public IInventoryAdapter getInternalInventory() + { + return this.inventory; + } + + @Override + public boolean allowsAutomation() + { return true; } - private int consumeInducerAndGetChance() { - if (this.getInternalInventory() == null) { - return 0; + @Override + public void updateServer(int tickCount) + { + + if (getInternalInventory() == null) { + return; } - for (final Iterator i$ = InventoryIterator.getIterable(this.getInternalInventory()).iterator(); i$ - .hasNext();) { - final IInvSlot slot = (IInvSlot) i$.next(); - final ItemStack stack = slot.getStackInSlot(); - for (final Map.Entry entry : BeeManager.inducers.entrySet()) { - if (ItemStackUtil.isIdenticalItem(entry.getKey(), stack)) { - slot.decreaseStackInSlot(); - return entry.getValue().intValue(); + + if (this.inventory.getStackInSlot(0) != null) + { + if (((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeekeepingLogic().canWork()){ + setActive(true); + if (tickCount % 1000 == 0) { + wearOutFrames(this, 1); } } - } - final IInvSlot slot; - final ItemStack stack; - return 0; - } + else { + Utils.LOG_INFO("Cannot work - Probably no queen alive."); + } - @Override - protected void decodeDescriptionPacket(final NBTTagCompound packetData) { - super.decodeDescriptionPacket(packetData); - this.setActive(packetData.getBoolean("Active")); - } + } + else + { + setActive(false); + } + if (tickCount % 500 != 0) { + return; + } - @Override - protected void encodeDescriptionPacket(final NBTTagCompound packetData) { - super.encodeDescriptionPacket(packetData); - packetData.setBoolean("Active", this.active); } @Override - public InventoryFrameHousing getAlvearyInventory() { - return this.inventory; - } + public void updateClient(int tickCount) {} - @Override - public IBeeListener getBeeListener() { - return this.beeListener; + private ItemStack getPrincessStack() + { + ItemStack princessStack = ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeInventory().getQueen(); + if (BeeManager.beeRoot.isMated(princessStack)) { + return princessStack; + } + return null; } - @Override - public IBeeModifier getBeeModifier() { - final List beeModifiers = new ArrayList(); - - // beeModifiers.add(this.beeModifier); - for (final IHiveFrame frame : this.getFrames(this.inventory)) { - beeModifiers.add(frame.getBeeModifier()); + private int consumeInducerAndGetChance() + { + if (getInternalInventory() == null) { + return 0; } - return beeModifiers.get(0); + for (Iterator i$ = InventoryIterator.getIterable(getInternalInventory()).iterator(); i$.hasNext();) + { + IInvSlot slot = (IInvSlot)i$.next(); + ItemStack stack = slot.getStackInSlot(); + for (Map.Entry entry : BeeManager.inducers.entrySet()) { + if (ItemStackUtil.isIdenticalItem((ItemStack)entry.getKey(), stack)) + { + slot.decreaseStackInSlot(); + return ((Integer)entry.getValue()).intValue(); + } + } + } + IInvSlot slot; + ItemStack stack; + return 0; } - @Override - public Collection getBeeModifiers() { - final List beeModifiers = new ArrayList(); + private void trySpawnSwarm() + { + ItemStack toSpawn = (ItemStack)this.pendingSpawns.peek(); + HiveDescriptionSwarmer hiveDescription = new HiveDescriptionSwarmer(new ItemStack[] { toSpawn }); + Hive hive = new Hive(hiveDescription); - beeModifiers.add(this.beeModifier); - for (final IHiveFrame frame : this.getFrames(this.inventory)) { - beeModifiers.add(frame.getBeeModifier()); + int chunkX = (this.xCoord + this.worldObj.rand.nextInt(80) - 40) / 16; + int chunkZ = (this.zCoord + this.worldObj.rand.nextInt(80) - 40) / 16; + if (HiveDecorator.genHive(this.worldObj, this.worldObj.rand, chunkX, chunkZ, hive)) { + this.pendingSpawns.pop(); } - return beeModifiers; } @Override - public Object getContainer(final EntityPlayer player, final int data) { - return new CONTAINER_FrameHousing(this, player); - } - - public Collection getFrames(final IInventory inventory) { - final Collection hiveFrames = new ArrayList(inventory.getSizeInventory()); - for (int i = 0; i < inventory.getSizeInventory(); i++) { - final ItemStack stackInSlot = this.getStackInSlot(i); - if (stackInSlot != null) { - final Item itemInSlot = stackInSlot.getItem(); - if (itemInSlot instanceof IHiveFrame) { - hiveFrames.add((IHiveFrame) itemInSlot); - } - } - } - return hiveFrames; + protected void encodeDescriptionPacket(NBTTagCompound packetData) + { + super.encodeDescriptionPacket(packetData); + packetData.setBoolean("Active", this.active); } @Override - public Object getGui(final EntityPlayer player, final int data) { - return new GUI_FrameHousing(this, player); + protected void decodeDescriptionPacket(NBTTagCompound packetData) + { + super.decodeDescriptionPacket(packetData); + setActive(packetData.getBoolean("Active")); } @Override - public int getIcon(final int side) { - if (side == 0 || side == 1) { + public int getIcon(int side) + { + if ((side == 0) || (side == 1)) { return 2; } if (this.active) { @@ -173,41 +177,48 @@ public class TileAlvearyFrameHousing extends FR_TileAlveary implements ISidedFra } @Override - public IInventoryAdapter getInternalInventory() { - return this.inventory; - } + public void readFromNBT(NBTTagCompound nbttagcompound) + { + super.readFromNBT(nbttagcompound); + setActive(nbttagcompound.getBoolean("Active")); - private ItemStack getPrincessStack() { - final ItemStack princessStack = this.getMultiblockLogic().getController().getBeeInventory().getQueen(); - if (BeeManager.beeRoot.isMated(princessStack)) { - return princessStack; + NBTTagList nbttaglist = nbttagcompound.getTagList("PendingSpawns", 10); + for (int i = 0; i < nbttaglist.tagCount(); i++) + { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + this.pendingSpawns.add(ItemStack.loadItemStackFromNBT(nbttagcompound1)); } - return null; - } - private ItemStack getQueenStack() { - final ItemStack queenStack = this.getMultiblockLogic().getController().getBeeInventory().getQueen(); - return queenStack; } @Override - public boolean isActive() { - return this.active; + public void writeToNBT(NBTTagCompound nbttagcompound) + { + super.writeToNBT(nbttagcompound); + nbttagcompound.setBoolean("Active", this.active); + + NBTTagList nbttaglist = new NBTTagList(); + ItemStack[] offspring = (ItemStack[])this.pendingSpawns.toArray(new ItemStack[this.pendingSpawns.size()]); + for (int i = 0; i < offspring.length; i++) { + if (offspring[i] != null) + { + NBTTagCompound nbttagcompound1 = new NBTTagCompound(); + nbttagcompound1.setByte("Slot", (byte)i); + offspring[i].writeToNBT(nbttagcompound1); + nbttaglist.appendTag(nbttagcompound1); + } + } + nbttagcompound.setTag("PendingSpawns", nbttaglist); } @Override - public void readFromNBT(final NBTTagCompound nbttagcompound) { - super.readFromNBT(nbttagcompound); - this.setActive(nbttagcompound.getBoolean("Active")); - - final NBTTagList nbttaglist = nbttagcompound.getTagList("PendingSpawns", 10); - for (int i = 0; i < nbttaglist.tagCount(); i++) { - final NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); - this.pendingSpawns.add(ItemStack.loadItemStackFromNBT(nbttagcompound1)); - } + public boolean isActive() + { + return this.active; } @Override - public void setActive(final boolean active) { + public void setActive(boolean active) + { if (this.active == active) { return; } @@ -217,91 +228,133 @@ public class TileAlvearyFrameHousing extends FR_TileAlveary implements ISidedFra } } - private void trySpawnSwarm() { - final ItemStack toSpawn = this.pendingSpawns.peek(); - final HiveDescriptionSwarmer hiveDescription = new HiveDescriptionSwarmer(new ItemStack[] { - toSpawn - }); - final Hive hive = new Hive(hiveDescription); - - final int chunkX = (this.xCoord + this.worldObj.rand.nextInt(80) - 40) / 16; - final int chunkZ = (this.zCoord + this.worldObj.rand.nextInt(80) - 40) / 16; - if (HiveDecorator.genHive(this.worldObj, this.worldObj.rand, chunkX, chunkZ, hive)) { - this.pendingSpawns.pop(); - } + @Override + public Object getGui(EntityPlayer player, int data) + { + return new GUI_FrameHousing(this, player); } @Override - public void updateClient(final int tickCount) { + public Object getContainer(EntityPlayer player, int data) + { + return new CONTAINER_FrameHousing(this, player); } + private final IBeeModifier beeModifier = new AlvearyBeeModifier(); + //private final IBeeListener beeListener = new AlvearyBeeListener(this); + private final Iterable beeListenerList = ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners(); + @Override - public void updateServer(final int tickCount) { + public Collection getBeeModifiers() + { + List beeModifiers = new ArrayList(); - if (this.getInternalInventory() == null) { - return; + beeModifiers.add(this.beeModifier); + for (IHiveFrame frame : getFrames(this.inventory)) { + beeModifiers.add(frame.getBeeModifier()); } + return beeModifiers; + } - if (this.inventory.getStackInSlot(0) != null) { - if (this.getMultiblockLogic().getController().getBeekeepingLogic().canWork()) { - this.setActive(true); - if (tickCount % 1000 == 0) { - this.wearOutFrames(this, 1); + public Collection getFrames(IInventory inventory) + { + Collection hiveFrames = new ArrayList(inventory.getSizeInventory()); + for (int i = 0; i < inventory.getSizeInventory(); i++) + { + ItemStack stackInSlot = getStackInSlot(i); + if (stackInSlot != null) + { + Item itemInSlot = stackInSlot.getItem(); + if ((itemInSlot instanceof IHiveFrame)) { + hiveFrames.add((IHiveFrame)itemInSlot); } } - else { - Utils.LOG_INFO("Cannot work - Probably no queen alive."); - } - } - else { - this.setActive(false); - } - if (tickCount % 500 != 0) { - return; + return hiveFrames; + } + + @Override + public IBeeModifier getBeeModifier() { + List beeModifiers = new ArrayList(); + + //beeModifiers.add(this.beeModifier); + for (IHiveFrame frame : getFrames(this.inventory)) { + beeModifiers.add(frame.getBeeModifier()); } + return beeModifiers.get(0); + } + private ItemStack getQueenStack() + { + ItemStack queenStack = ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeInventory().getQueen(); + return queenStack; } @Override - public void wearOutFrames(final IBeeHousing beeHousing, final int amount) { - final IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(beeHousing.getWorld()); - final int wear = Math.round(amount * beekeepingMode.getWearModifier()); - for (int i = 0; i < this.inventory.getSizeInventory(); i++) { - final ItemStack hiveFrameStack = this.getStackInSlot(i); - if (hiveFrameStack != null) { - final Item hiveFrameItem = hiveFrameStack.getItem(); - if (hiveFrameItem instanceof IHiveFrame) { - final IHiveFrame hiveFrame = (IHiveFrame) hiveFrameItem; - Utils.LOG_INFO("Wearing out frame by " + amount); - final ItemStack queenStack = this.getQueenStack(); - final IBee queen = BeeManager.beeRoot.getMember(queenStack); - final ItemStack usedFrame = hiveFrame.frameUsed(beeHousing, hiveFrameStack, queen, wear); - - // ((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners(). - - this.setInventorySlotContents(i, usedFrame); + public void wearOutFrames(IBeeHousing beeHousing, int amount) + { + IBeekeepingMode beekeepingMode = BeeManager.beeRoot.getBeekeepingMode(beeHousing.getWorld()); + int wear = Math.round(amount * beekeepingMode.getWearModifier()); + for (int i = 0; i < this.inventory.getSizeInventory(); i++) + { + ItemStack hiveFrameStack = getStackInSlot(i); + if (hiveFrameStack != null) + { + Item hiveFrameItem = hiveFrameStack.getItem(); + if ((hiveFrameItem instanceof IHiveFrame)) + { + IHiveFrame hiveFrame = (IHiveFrame)hiveFrameItem; + Utils.LOG_INFO("Wearing out frame by "+amount); + ItemStack queenStack = getQueenStack(); + IBee queen = BeeManager.beeRoot.getMember(queenStack); + ItemStack usedFrame = hiveFrame.frameUsed(beeHousing, hiveFrameStack, queen, wear); + + //((MultiblockLogicAlveary)getMultiblockLogic()).getController().getBeeListeners(). + + setInventorySlotContents(i, usedFrame); } } } } @Override - public void writeToNBT(final NBTTagCompound nbttagcompound) { - super.writeToNBT(nbttagcompound); - nbttagcompound.setBoolean("Active", this.active); - - final NBTTagList nbttaglist = new NBTTagList(); - final ItemStack[] offspring = this.pendingSpawns.toArray(new ItemStack[this.pendingSpawns.size()]); - for (int i = 0; i < offspring.length; i++) { - if (offspring[i] != null) { - final NBTTagCompound nbttagcompound1 = new NBTTagCompound(); - nbttagcompound1.setByte("Slot", (byte) i); - offspring[i].writeToNBT(nbttagcompound1); - nbttaglist.appendTag(nbttagcompound1); - } - } - nbttagcompound.setTag("PendingSpawns", nbttaglist); + public InventoryFrameHousing getAlvearyInventory() { + return inventory; } + @Override + public IBeeListener getBeeListener() { + return beeListener; + } + + static class AlvearyFrameHousingBeeListener + extends DefaultBeeListener + { + private final InventoryFrameHousing inventory; + + public AlvearyFrameHousingBeeListener(InventoryFrameHousing inventory) + { + this.inventory = inventory; + } + + @Override + public boolean onPollenRetrieved(IIndividual pollen) + { + /*if (!((Object) this.inventory).canStorePollen()) { + return false; + }*/ + ISpeciesRoot speciesRoot = AlleleManager.alleleRegistry.getSpeciesRoot(pollen.getClass()); + + ItemStack pollenStack = speciesRoot.getMemberStack(pollen, EnumGermlingType.POLLEN.ordinal()); + if (pollenStack != null) + { + // ((Object) this.inventory).storePollenStack(pollenStack); + return true; + } + return false; + } + } + + + } diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/CONTAINER_FrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/CONTAINER_FrameHousing.java index c8e4081ee3..c685482266 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/CONTAINER_FrameHousing.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/CONTAINER_FrameHousing.java @@ -1,85 +1,98 @@ package gtPlusPlus.xmod.forestry.bees.alveary.gui; -import forestry.api.apiculture.IHiveFrame; -import forestry.core.gui.tooltips.ToolTip; -import gtPlusPlus.core.lib.CORE; -import gtPlusPlus.core.slots.SlotFrame; -import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.inventory.Container; import net.minecraft.inventory.Slot; import net.minecraft.item.ItemStack; import net.minecraft.util.ResourceLocation; +import forestry.api.apiculture.IHiveFrame; +import forestry.core.gui.tooltips.ToolTip; +import gtPlusPlus.core.lib.CORE; +import gtPlusPlus.core.slots.SlotFrame; +import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; -public class CONTAINER_FrameHousing extends Container { - public static final int INPUT_1 = 0; +public class CONTAINER_FrameHousing extends Container +{ + private TileAlvearyFrameHousing te; - private final TileAlvearyFrameHousing te; - private final ResourceLocation beeFrameIcon = new ResourceLocation(CORE.MODID, - "textures/items/machine_Charger.png"); - public ToolTip newTip = new ToolTip(); - private final SlotFrame beeFrameSlot; + public static final int INPUT_1 = 0; + private final ResourceLocation beeFrameIcon = new ResourceLocation(CORE.MODID, "textures/items/machine_Charger.png"); + public ToolTip newTip = new ToolTip(); + private final SlotFrame beeFrameSlot; - private int slotID = 0; + private int slotID = 0; - public CONTAINER_FrameHousing(final TileAlvearyFrameHousing te, final EntityPlayer player) { + public CONTAINER_FrameHousing(TileAlvearyFrameHousing te, EntityPlayer player) + { this.te = te; - this.beeFrameSlot = new SlotFrame(te, this.slotID++, 80, 35); + this.beeFrameSlot = new SlotFrame(te, slotID++, 80, 35); - // Fuel Slot A - this.beeFrameSlot.setBackgroundIconTexture(this.beeFrameIcon); + //Fuel Slot A + beeFrameSlot.setBackgroundIconTexture(beeFrameIcon); + + addSlotToContainer(beeFrameSlot); - this.addSlotToContainer(this.beeFrameSlot); - - // Inventory - for (int i = 0; i < 3; i++) { - for (int j = 0; j < 9; j++) { - this.addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); + //Inventory + for (int i = 0; i < 3; i++) + { + for (int j = 0; j < 9; j++) + { + addSlotToContainer(new Slot(player.inventory, j + i * 9 + 9, 8 + j * 18, 84 + i * 18)); } } // Hotbar - for (int i = 0; i < 9; i++) { - this.addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142)); + for (int i = 0; i < 9; i++) + { + addSlotToContainer(new Slot(player.inventory, i, 8 + i * 18, 142)); } } @Override - public boolean canInteractWith(final EntityPlayer player) { - return this.te.isUseableByPlayer(player); - } - - @Override - public ItemStack transferStackInSlot(final EntityPlayer player, final int slotRaw) { + public ItemStack transferStackInSlot(EntityPlayer player, int slotRaw) + { ItemStack stack = null; - final Slot slot = (Slot) this.inventorySlots.get(slotRaw); + Slot slot = (Slot)inventorySlots.get(slotRaw); - if (slot != null && slot.getHasStack()) { - final ItemStack stackInSlot = slot.getStack(); + if (slot != null && slot.getHasStack()) + { + ItemStack stackInSlot = slot.getStack(); stack = stackInSlot.copy(); - - // If your inventory only stores certain instances of Items, - // you can implement shift-clicking to your inventory like this: + + + //If your inventory only stores certain instances of Items, + //you can implement shift-clicking to your inventory like this: // Check that the item is the right type - if (!(stack.getItem() instanceof IHiveFrame)) { - return null; + if (!(stack.getItem() instanceof IHiveFrame)){ + return null; } - if (slotRaw < 1) { - if (!this.mergeItemStack(stackInSlot, 3 * 9, this.inventorySlots.size(), true)) { + if (slotRaw < 1) + { + if (!mergeItemStack(stackInSlot, 3 * 9, inventorySlots.size(), true)) + { return null; } } - else if (!this.mergeItemStack(stackInSlot, 0, 3 * 9, false)) { + else if (!mergeItemStack(stackInSlot, 0, 3 * 9, false)) + { return null; } - if (stackInSlot.stackSize == 0) { - slot.putStack((ItemStack) null); + if (stackInSlot.stackSize == 0) + { + slot.putStack((ItemStack)null); } - else { + else + { slot.onSlotChanged(); } } return stack; } + + @Override + public boolean canInteractWith(EntityPlayer player) + { + return te.isUseableByPlayer(player); + } } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/GUI_FrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/GUI_FrameHousing.java index 1acbfd534e..dcf8da3a1a 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/GUI_FrameHousing.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/GUI_FrameHousing.java @@ -1,7 +1,5 @@ package gtPlusPlus.xmod.forestry.bees.alveary.gui; -import org.lwjgl.opengl.GL11; - import gtPlusPlus.core.lib.CORE; import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; import net.minecraft.client.Minecraft; @@ -11,41 +9,41 @@ import net.minecraft.entity.player.EntityPlayer; import net.minecraft.entity.player.InventoryPlayer; import net.minecraft.util.ResourceLocation; -public class GUI_FrameHousing extends GuiContainer { - private final ResourceLocation texture = new ResourceLocation(CORE.MODID, - "textures/gui/machine_Charger.png"); - - private final InventoryPlayer inventory; - private final TileAlvearyFrameHousing te; - - public GUI_FrameHousing(final TileAlvearyFrameHousing te, final EntityPlayer player) { - super(new CONTAINER_FrameHousing(te, player)); - this.inventory = player.inventory; - this.te = te; - } - - @Override - protected void drawGuiContainerBackgroundLayer(final float par1, final int par2, final int par3) { - Minecraft.getMinecraft().renderEngine.bindTexture(this.texture); - - GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); - - final int x = (this.width - this.xSize) / 2; - final int y = (this.height - this.ySize) / 2; - - this.drawTexturedModalRect(x, y, 0, 0, this.xSize, this.ySize); - } +import org.lwjgl.opengl.GL11; - @Override - protected void drawGuiContainerForegroundLayer(final int par1, final int par2) { - this.fontRendererObj.drawString(I18n.format("Alveary Frame Housing"), - this.xSize / 2 - this.fontRendererObj.getStringWidth(I18n.format("Alveary Frame Housing")) / 2, 6, - 4210752, false); - this.fontRendererObj.drawString(I18n.format(this.inventory.getInventoryName()), 8, this.ySize - 96 + 2, - 4210752); - // fontRendererObj.drawString(I18n.format("Charge:"+te.getCharge()+"~"), - // 8, ySize - 96 + 2, 4210752); - // fontRendererObj.drawString(I18n.format("Progress:"+te.getProgress()+"ticks"), - // 80, ySize - 96 + 2, 4210752); - } +public class GUI_FrameHousing extends GuiContainer +{ + private ResourceLocation texture = new ResourceLocation(CORE.MODID, "textures/gui/machine_Charger.png"); + + private InventoryPlayer inventory; + private TileAlvearyFrameHousing te; + + public GUI_FrameHousing(TileAlvearyFrameHousing te, EntityPlayer player) + { + super(new CONTAINER_FrameHousing(te, player)); + inventory = player.inventory; + this.te = te; + } + + @Override + protected void drawGuiContainerBackgroundLayer(float par1, int par2, int par3) + { + Minecraft.getMinecraft().renderEngine.bindTexture(texture); + + GL11.glColor4f(1.0F, 1.0F, 1.0F, 1.0F); + + int x = (width - xSize) / 2; + int y = (height - ySize) / 2; + + drawTexturedModalRect(x, y, 0, 0, xSize, ySize); + } + + @Override + protected void drawGuiContainerForegroundLayer(int par1, int par2) + { + fontRendererObj.drawString(I18n.format("Alveary Frame Housing"), (xSize / 2) - (fontRendererObj.getStringWidth(I18n.format("Alveary Frame Housing")) / 2), 6, 4210752, false); + fontRendererObj.drawString(I18n.format(inventory.getInventoryName()), 8, ySize - 96 + 2, 4210752); + //fontRendererObj.drawString(I18n.format("Charge:"+te.getCharge()+"~"), 8, ySize - 96 + 2, 4210752); + //fontRendererObj.drawString(I18n.format("Progress:"+te.getProgress()+"ticks"), 80, ySize - 96 + 2, 4210752); + } } \ No newline at end of file diff --git a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java index 1c562936bd..9d6dd06f2d 100644 --- a/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java +++ b/src/Java/gtPlusPlus/xmod/forestry/bees/alveary/gui/InventoryFrameHousing.java @@ -1,111 +1,121 @@ package gtPlusPlus.xmod.forestry.bees.alveary.gui; -import com.mojang.authlib.GameProfile; - -import forestry.api.apiculture.*; -import forestry.api.core.*; -import forestry.core.inventory.InventoryAdapterTile; -import forestry.core.utils.ItemStackUtil; -import gtPlusPlus.xmod.forestry.bees.alveary.IAlvearyFrameHousing; -import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; import net.minecraft.item.ItemStack; import net.minecraft.util.ChunkCoordinates; import net.minecraft.util.Vec3; import net.minecraft.world.World; import net.minecraft.world.biome.BiomeGenBase; -public class InventoryFrameHousing extends InventoryAdapterTile - implements IAlvearyFrameHousing { +import com.mojang.authlib.GameProfile; - TileAlvearyFrameHousing alvearyFrame; +import forestry.api.apiculture.BeeManager; +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.core.inventory.InventoryAdapterTile; +import forestry.core.utils.ItemStackUtil; +import gtPlusPlus.xmod.forestry.bees.alveary.IAlvearyFrameHousing; +import gtPlusPlus.xmod.forestry.bees.alveary.TileAlvearyFrameHousing; - public InventoryFrameHousing(final TileAlvearyF