From 867af762b9a04c6e8456a583d3f4aa1702aabf18 Mon Sep 17 00:00:00 2001 From: Draknyte1 Date: Thu, 30 Jun 2016 13:47:04 +1000 Subject: %Refactored all of the GT related code into the xmod package instead of being in its own. %Renamed intermod package to xmod. --- .../core/xmod/forestry/HANDLER_Forestry.java | 28 + .../apiculture/blocks/FR_BlockAlveary.java | 219 ++++++ .../blocks/FR_BlockRegistryApiculture.java | 41 ++ .../apiculture/items/FR_ItemHiveFrame.java | 67 ++ .../items/FR_ItemRegistryApiculture.java | 58 ++ .../items/magicbees/FR_StringManager.java | 30 + .../items/magicbees/MB_HiveFrameType.java | 107 +++ .../items/magicbees/MB_ItemMagicHiveFrame.java | 62 ++ .../apiculture/multiblock/FR_TileAlveary.java | 199 +++++ .../apiculture/multiblock/TileAlvearyMutatron.java | 232 ++++++ .../inventory/FR_ContainerAlvearyMutatron.java | 28 + .../inventory/FR_GuiAlvearyMutatron.java | 26 + .../multiblock/inventory/FR_InventoryMutatron.java | 29 + .../multiblock/inventory/MutatronHandler.java | 22 + .../forestry/apiculture/tiles/FR_TileHandler.java | 14 + .../xmod/forestry/core/gui/FR_FontRenderer.java | 111 +++ .../xmod/forestry/core/gui/FR_GuiForestry.java | 272 +++++++ .../forestry/core/gui/FR_GuiForestryTitled.java | 33 + .../core/xmod/forestry/core/gui/FR_GuiUtil.java | 145 ++++ .../xmod/forestry/core/gui/FR_WidgetManager.java | 90 +++ .../core/xmod/gregtech/HANDLER_Gregtech.java | 41 ++ .../xmod/gregtech/api/energy/IC2ElectricItem.java | 55 ++ .../api/energy/IC2ElectricItemManager.java | 95 +++ .../xmod/gregtech/api/enums/GregtechItemList.java | 203 ++++++ .../gregtech/api/enums/GregtechOreDictNames.java | 39 + .../gregtech/api/enums/GregtechOrePrefixes.java | 776 ++++++++++++++++++++ .../gregtech/api/enums/GregtechTextureSet.java | 144 ++++ .../xmod/gregtech/api/enums/GregtechTextures.java | 200 +++++ .../api/gui/CONTAINER_IronBlastFurnace.java | 31 + .../gregtech/api/gui/CONTAINER_MultiMachine.java | 35 + .../xmod/gregtech/api/gui/CONTAINER_SafeBlock.java | 120 +++ .../gregtech/api/gui/CONTAINER_SteamCondenser.java | 97 +++ .../gregtech/api/gui/GUI_IronBlastFurnace.java | 30 + .../xmod/gregtech/api/gui/GUI_MultiMachine.java | 63 ++ .../core/xmod/gregtech/api/gui/GUI_SafeBlock.java | 49 ++ .../xmod/gregtech/api/gui/GUI_SteamCondenser.java | 55 ++ .../api/interfaces/GregtechItemContainer.java | 24 + .../interfaces/internal/IGregtech_RecipeAdder.java | 24 + .../internal/Interface_ItemBehaviour.java | 41 ++ .../internal/Interface_OreRecipeRegistrator.java | 16 + .../Interface_OreRecipeRegistrator_GT.java | 16 + .../interfaces/internal/Interface_ToolStats.java | 155 ++++ .../gregtech/api/items/Gregtech_Generic_Item.java | 176 +++++ .../xmod/gregtech/api/items/Gregtech_MetaItem.java | 323 +++++++++ .../gregtech/api/items/Gregtech_MetaItem_Base.java | 549 ++++++++++++++ .../gregtech/api/items/Gregtech_MetaItem_X32.java | 194 +++++ .../xmod/gregtech/api/items/Gregtech_MetaTool.java | 605 ++++++++++++++++ .../implementations/GregtechMetaCondensor.java | 164 +++++ .../implementations/GregtechMetaEnergyBuffer.java | 402 ++++++++++ .../GregtechMetaPipeEntity_Cable.java | 235 ++++++ .../implementations/GregtechMetaSafeBlock.java | 76 ++ .../base/GregtechMetaBoilerBase.java | 328 +++++++++ .../base/GregtechMetaSafeBlockBase.java | 343 +++++++++ .../base/GregtechMetaTileEntity.java | 67 ++ .../base/GregtechMeta_MultiBlockBase.java | 805 +++++++++++++++++++++ .../base/GregtechRocketFuelGeneratorBase.java | 263 +++++++ .../implementations/base/GregtechSteelBoiler.java | 290 ++++++++ .../creative/GregtechMetaCreativeEnergyBuffer.java | 268 +++++++ .../xmod/gregtech/api/objects/GregtechFluid.java | 27 + .../gregtech/api/objects/GregtechItemData.java | 130 ++++ .../api/objects/GregtechMaterialStack.java | 42 ++ .../api/objects/GregtechRenderedTexture.java | 162 +++++ .../api/util/GregtechOreDictUnificator.java | 366 ++++++++++ .../xmod/gregtech/api/util/GregtechRecipe.java | 677 +++++++++++++++++ .../api/util/GregtechRecipeRegistrator.java | 339 +++++++++ .../xmod/gregtech/common/GregtechRecipeAdder.java | 119 +++ .../core/xmod/gregtech/common/Meta_GT_Proxy.java | 386 ++++++++++ .../common/blocks/GregtechMetaCasingBlocks.java | 457 ++++++++++++ .../blocks/GregtechMetaCasingBlocksAbstract.java | 140 ++++ .../common/blocks/GregtechMetaCasingItems.java | 11 + .../common/blocks/GregtechMetaItemCasings1.java | 33 + .../blocks/GregtechMetaItemCasingsAbstract.java | 45 ++ .../common/blocks/fluid/GregtechFluidHandler.java | 36 + .../common/items/MetaGeneratedGregtechItems.java | 155 ++++ .../common/items/MetaGeneratedGregtechTools.java | 24 + .../GregtechMetaTileEntityRocketFuelGenerator.java | 119 +++ ...GregtechMetaTileEntityElectricBlastFurnace.java | 236 ++++++ ...GregtechMetaTileEntityIndustrialCentrifuge.java | 452 ++++++++++++ .../GregtechMetaTileEntityIndustrialCokeOven.java | 267 +++++++ ...GregtechMetaTileEntityIndustrialPlatePress.java | 249 +++++++ .../GregtechMetaTileEntityIronBlastFurnace.java | 369 ++++++++++ .../gregtech/common/tools/TOOL_Gregtech_Base.java | 168 +++++ .../tools/TOOL_Gregtech_BaseMultiblockItem.java | 49 ++ .../TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java | 27 + .../xmod/gregtech/loaders/Processing_Block.java | 107 +++ .../xmod/gregtech/loaders/Processing_Ingot1.java | 68 ++ .../xmod/gregtech/loaders/Processing_Plate1.java | 56 ++ .../core/xmod/growthcraft/HANDLER_Growthcraft.java | 65 ++ .../psychedelicraft/HANDLER_Psychedelicraft.java | 27 + .../xmod/psychedelicraft/fluids/PS_Fluids.java | 54 ++ .../HANDLER_ThermalFoundation.java | 37 + .../block/TF_Block_Fluid_Cryotheum.java | 188 +++++ .../block/TF_Block_Fluid_Pyrotheum.java | 181 +++++ .../xmod/thermalfoundation/block/TF_Blocks.java | 26 + .../xmod/thermalfoundation/fluid/TF_Fluids.java | 53 ++ .../core/xmod/thermalfoundation/item/TF_Items.java | 79 ++ .../recipe/TF_Gregtech_Recipes.java | 62 ++ 97 files changed, 15298 insertions(+) create mode 100644 src/Java/miscutil/core/xmod/forestry/HANDLER_Forestry.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockAlveary.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockRegistryApiculture.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/items/FR_ItemHiveFrame.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/items/FR_ItemRegistryApiculture.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/FR_StringManager.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/FR_TileAlveary.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/TileAlvearyMutatron.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_ContainerAlvearyMutatron.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_GuiAlvearyMutatron.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_InventoryMutatron.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/MutatronHandler.java create mode 100644 src/Java/miscutil/core/xmod/forestry/apiculture/tiles/FR_TileHandler.java create mode 100644 src/Java/miscutil/core/xmod/forestry/core/gui/FR_FontRenderer.java create mode 100644 src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiForestry.java create mode 100644 src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiForestryTitled.java create mode 100644 src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiUtil.java create mode 100644 src/Java/miscutil/core/xmod/forestry/core/gui/FR_WidgetManager.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/HANDLER_Gregtech.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/energy/IC2ElectricItem.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/energy/IC2ElectricItemManager.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechItemList.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOreDictNames.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechOrePrefixes.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextureSet.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/enums/GregtechTextures.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/CONTAINER_IronBlastFurnace.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/CONTAINER_MultiMachine.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/CONTAINER_SafeBlock.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/CONTAINER_SteamCondenser.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/GUI_IronBlastFurnace.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/GUI_MultiMachine.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/GUI_SafeBlock.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/gui/GUI_SteamCondenser.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/GregtechItemContainer.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/IGregtech_RecipeAdder.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ItemBehaviour.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_OreRecipeRegistrator.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_OreRecipeRegistrator_GT.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/interfaces/internal/Interface_ToolStats.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/items/Gregtech_Generic_Item.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/items/Gregtech_MetaItem.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/items/Gregtech_MetaItem_Base.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/items/Gregtech_MetaItem_X32.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/items/Gregtech_MetaTool.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/GregtechMetaCondensor.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/GregtechMetaEnergyBuffer.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/GregtechMetaPipeEntity_Cable.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/GregtechMetaSafeBlock.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechMetaBoilerBase.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechMetaSafeBlockBase.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechMetaTileEntity.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechMeta_MultiBlockBase.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechRocketFuelGeneratorBase.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/base/GregtechSteelBoiler.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/metatileentity/implementations/creative/GregtechMetaCreativeEnergyBuffer.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/objects/GregtechFluid.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/objects/GregtechItemData.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/objects/GregtechMaterialStack.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/objects/GregtechRenderedTexture.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/util/GregtechOreDictUnificator.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/util/GregtechRecipe.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/api/util/GregtechRecipeRegistrator.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/GregtechRecipeAdder.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/Meta_GT_Proxy.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/GregtechMetaCasingBlocks.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/GregtechMetaCasingBlocksAbstract.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/GregtechMetaCasingItems.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/GregtechMetaItemCasings1.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/GregtechMetaItemCasingsAbstract.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/blocks/fluid/GregtechFluidHandler.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/items/MetaGeneratedGregtechItems.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/items/MetaGeneratedGregtechTools.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/generators/GregtechMetaTileEntityRocketFuelGenerator.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityElectricBlastFurnace.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrialCentrifuge.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrialCokeOven.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIndustrialPlatePress.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tileentities/machines/multi/GregtechMetaTileEntityIronBlastFurnace.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tools/TOOL_Gregtech_Base.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tools/TOOL_Gregtech_BaseMultiblockItem.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/common/tools/TOOL_Gregtech_MaxEfficiencyMultiBlockItem.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/loaders/Processing_Block.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/loaders/Processing_Ingot1.java create mode 100644 src/Java/miscutil/core/xmod/gregtech/loaders/Processing_Plate1.java create mode 100644 src/Java/miscutil/core/xmod/growthcraft/HANDLER_Growthcraft.java create mode 100644 src/Java/miscutil/core/xmod/psychedelicraft/HANDLER_Psychedelicraft.java create mode 100644 src/Java/miscutil/core/xmod/psychedelicraft/fluids/PS_Fluids.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/HANDLER_ThermalFoundation.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/block/TF_Block_Fluid_Cryotheum.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/block/TF_Block_Fluid_Pyrotheum.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/block/TF_Blocks.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/fluid/TF_Fluids.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/item/TF_Items.java create mode 100644 src/Java/miscutil/core/xmod/thermalfoundation/recipe/TF_Gregtech_Recipes.java (limited to 'src/Java/miscutil/core/xmod') diff --git a/src/Java/miscutil/core/xmod/forestry/HANDLER_Forestry.java b/src/Java/miscutil/core/xmod/forestry/HANDLER_Forestry.java new file mode 100644 index 0000000000..94beb5618e --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/HANDLER_Forestry.java @@ -0,0 +1,28 @@ +package miscutil.core.xmod.forestry; + +import miscutil.core.lib.LoadedMods; +import miscutil.core.xmod.forestry.apiculture.blocks.FR_BlockRegistryApiculture; +import miscutil.core.xmod.forestry.apiculture.items.FR_ItemRegistryApiculture; +import miscutil.core.xmod.forestry.apiculture.tiles.FR_TileHandler; + +public class HANDLER_Forestry { + + public static void preInit(){ + if (LoadedMods.Forestry){ + FR_ItemRegistryApiculture.RegisterApiculture(); + FR_BlockRegistryApiculture.RegistryApiculture(); + } + } + + public static void Init(){ + if (LoadedMods.Forestry){ + FR_TileHandler.init(); + } + } + + public static void postInit(){ + if (LoadedMods.Forestry){ + + } + } +} diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockAlveary.java b/src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockAlveary.java new file mode 100644 index 0000000000..62669ef8d0 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockAlveary.java @@ -0,0 +1,219 @@ +/******************************************************************************* + * 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.xmod.forestry.apiculture.blocks; + +import java.util.ArrayList; +import java.util.List; + +import miscutil.core.creative.AddToCreativeTab; +import miscutil.core.xmod.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.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 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 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; + } + return new TileAlvearyMutatron(); + } + + @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[7]; + 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]; + } + return icons[MUTATRON_OFF]; + } + + @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/xmod/forestry/apiculture/blocks/FR_BlockRegistryApiculture.java b/src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockRegistryApiculture.java new file mode 100644 index 0000000000..ebde18655f --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/blocks/FR_BlockRegistryApiculture.java @@ -0,0 +1,41 @@ +/******************************************************************************* + * Copyright (c) 2011-2014 SirSengir. + * All rights reserved. This program and the accompanying materials + * are made available under the terms of the GNU Lesser Public License v3 + * which accompanies this distribution, and is available at + * http://www.gnu.org/licenses/lgpl-3.0.txt + * + * Various Contributors including, but not limited to: + * SirSengir (original work), CovertJaguar, Player, Binnie, MysteriousAges + ******************************************************************************/ +package miscutil.core.xmod.forestry.apiculture.blocks; + +import miscutil.core.lib.CORE; +import net.minecraft.block.Block; +import net.minecraft.item.ItemBlock; +import net.minecraft.item.ItemStack; +import net.minecraftforge.oredict.OreDictionary; +import cpw.mods.fml.common.registry.GameRegistry; +import forestry.core.blocks.BlockRegistry; +import forestry.core.items.ItemBlockForestry; +import forestry.core.utils.StringUtil; +public class FR_BlockRegistryApiculture extends BlockRegistry { + + public static FR_BlockAlveary alveary; + + public static void RegistryApiculture() { + if (CORE.DEBUG){ + alveary = registerBlock2(new FR_BlockAlveary(), ItemBlockForestry.class, "alveary"); + } + } + + protected static T registerBlock2(T block, Class itemClass, String name, Object... itemCtorArgs) { + block.setBlockName(name); + GameRegistry.registerBlock(block, itemClass, StringUtil.cleanBlockName(block), itemCtorArgs); + return block; + } + + protected static void registerOreDictWildcard(String oreDictName, Block block) { + OreDictionary.registerOre(oreDictName, new ItemStack(block, 1, OreDictionary.WILDCARD_VALUE)); + } +} \ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/items/FR_ItemHiveFrame.java b/src/Java/miscutil/core/xmod/forestry/apiculture/items/FR_ItemHiveFrame.java new file mode 100644 index 0000000000..cd517fd1ad --- /dev/null +++ b/src/Java/miscutil/core/xmod/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.xmod.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/xmod/forestry/apiculture/items/FR_ItemRegistryApiculture.java b/src/Java/miscutil/core/xmod/forestry/apiculture/items/FR_ItemRegistryApiculture.java new file mode 100644 index 0000000000..f2a64a9f90 --- /dev/null +++ b/src/Java/miscutil/core/xmod/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.xmod.forestry.apiculture.items; +import miscutil.core.xmod.forestry.apiculture.items.magicbees.MB_HiveFrameType; +import miscutil.core.xmod.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 registerItem(T item, String name) { + item.setUnlocalizedName(name); + GameRegistry.registerItem(item, StringUtil.cleanItemName(item)); + return item; + } +} + + diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/FR_StringManager.java b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/FR_StringManager.java new file mode 100644 index 0000000000..f08f1fd542 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/FR_StringManager.java @@ -0,0 +1,30 @@ +package miscutil.core.xmod.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/xmod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java new file mode 100644 index 0000000000..5921867eae --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_HiveFrameType.java @@ -0,0 +1,107 @@ +package miscutil.core.xmod.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/xmod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java new file mode 100644 index 0000000000..78e0afb55b --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/items/magicbees/MB_ItemMagicHiveFrame.java @@ -0,0 +1,62 @@ +package miscutil.core.xmod.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/xmod/forestry/apiculture/multiblock/FR_TileAlveary.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/FR_TileAlveary.java new file mode 100644 index 0000000000..06633a87cf --- /dev/null +++ b/src/Java/miscutil/core/xmod/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.xmod.forestry.apiculture.multiblock; + +import java.io.IOException; +import java.util.List; + +import miscutil.core.xmod.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 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 getBeeModifiers() { + return getMultiblockLogic().getController().getBeeModifiers(); + } + + @Override + public Iterable 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 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/xmod/forestry/apiculture/multiblock/TileAlvearyMutatron.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/TileAlvearyMutatron.java new file mode 100644 index 0000000000..c784f69ea7 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/TileAlvearyMutatron.java @@ -0,0 +1,232 @@ +/******************************************************************************* + * 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.xmod.forestry.apiculture.multiblock; + +import java.util.Map.Entry; +import java.util.Stack; + +import miscutil.core.xmod.forestry.apiculture.blocks.FR_BlockAlveary; +import miscutil.core.xmod.forestry.apiculture.multiblock.inventory.FR_ContainerAlvearyMutatron; +import miscutil.core.xmod.forestry.apiculture.multiblock.inventory.FR_GuiAlvearyMutatron; +import miscutil.core.xmod.forestry.apiculture.multiblock.inventory.FR_InventoryMutatron; +import net.minecraft.entity.player.EntityPlayer; +import net.minecraft.inventory.ISidedInventory; +import net.minecraft.item.ItemStack; +import net.minecraft.nbt.NBTTagCompound; +import net.minecraft.nbt.NBTTagList; +import forestry.api.apiculture.BeeManager; +import forestry.api.apiculture.EnumBeeType; +import forestry.api.apiculture.IBee; +import forestry.api.multiblock.IAlvearyComponent; +import forestry.apiculture.blocks.BlockAlveary; +import forestry.apiculture.network.packets.PacketActiveUpdate; +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; +import forestry.core.proxy.Proxies; +import forestry.core.tiles.IActivatable; +import forestry.core.utils.ItemStackUtil; + +public class TileAlvearyMutatron extends FR_TileAlveary implements ISidedInventory, IActivatable, IAlvearyComponent.Active { + + private final FR_InventoryMutatron inventory; + private final Stack pendingSpawns = new Stack<>(); + private boolean active; + + public TileAlvearyMutatron() { + super(FR_BlockAlveary.Type.MUTATRON); + this.inventory = new FR_InventoryMutatron(this); + } + + @Override + public IInventoryAdapter getInternalInventory() { + return inventory; + } + + @Override + public boolean allowsAutomation() { + return true; + } + + /* UPDATING */ + @Override + public void updateServer(int tickCount) { + if (pendingSpawns.size() > 0) { + setActive(true); + if (tickCount % 1000 == 0) { + trySpawnSwarm(); + } + } else { + setActive(false); + } + + if (tickCount % 500 != 0) { + return; + } + + ItemStack princessStack = getPrincessStack(); + if (princessStack == null) { + return; + } + + int chance = consumeInducerAndGetChance(); + if (chance == 0) { + return; + } + + // Try to spawn princess + if (worldObj.rand.nextInt(1000) >= chance) { + return; + } + + // Queue swarm spawn + IBee princess = BeeManager.beeRoot.getMember(princessStack); + princess.setIsNatural(false); + pendingSpawns.push(BeeManager.beeRoot.getMemberStack(princess, EnumBeeType.PRINCESS.ordinal())); + } + + @Override + public void updateClient(int tickCount) { + + } + + private ItemStack getPrincessStack() { + ItemStack princessStack = getMultiblockLogic().getController().getBeeInventory().getQueen(); + + if (BeeManager.beeRoot.isMated(princessStack)) { + return princessStack; + } + + return null; + } + + private int consumeInducerAndGetChance() { + if (getInternalInventory() == null) { + return 0; + } + + for (IInvSlot slot : InventoryIterator.getIterable(getInternalInventory())) { + ItemStack stack = slot.getStackInSlot(); + for (Entry entry : BeeManager.inducers.entrySet()) { + if (ItemStackUtil.isIdenticalItem(entry.getKey(), stack)) { + slot.decreaseStackInSlot(); + return entry.getValue(); + } + } + } + + return 0; + } + + private void trySpawnSwarm() { + + ItemStack toSpawn = pendingSpawns.peek(); + HiveDescriptionSwarmer hiveDescription = new HiveDescriptionSwarmer(toSpawn); + Hive hive = new Hive(hiveDescription); + + int chunkX = (xCoord + worldObj.rand.nextInt(40 * 2) - 40) / 16; + int chunkZ = (zCoord + worldObj.rand.nextInt(40 * 2) - 40) / 16; + + if (HiveDecorator.genHive(worldObj, worldObj.rand, chunkX, chunkZ, hive)) { + pendingSpawns.pop(); + } + } + + /* NETWORK */ + + @Override + protected void encodeDescriptionPacket(NBTTagCompound packetData) { + super.encodeDescriptionPacket(packetData); + packetData.setBoolean("Active", active); + } + + @Override + protected void decodeDescriptionPacket(NBTTagCompound packetData) { + super.decodeDescriptionPacket(packetData); + setActive(packetData.getBoolean("Active")); + } + + /* TEXTURES */ + @Override + public int getIcon(int side) { + if (side == 0 || side == 1) { + return BlockAlveary.BOTTOM; + } + + if (active) { + return BlockAlveary.ALVEARY_SWARMER_ON; + } else { + return BlockAlveary.ALVEARY_SWARMER_OFF; + } + } + + /* SAVING & LOADING */ + @Override + public void readFromNBT(NBTTagCompound nbttagcompound) { + super.readFromNBT(nbttagcompound); + setActive(nbttagcompound.getBoolean("Active")); + + NBTTagList nbttaglist = nbttagcompound.getTagList("PendingSpawns", 10); + for (int i = 0; i < nbttaglist.tagCount(); i++) { + NBTTagCompound nbttagcompound1 = nbttaglist.getCompoundTagAt(i); + pendingSpawns.add(ItemStack.loadItemStackFromNBT(nbttagcompound1)); + } + } + + @Override + public void writeToNBT(NBTTagCompound nbttagcompound) { + super.writeToNBT(nbttagcompound); + nbttagcompound.setBoolean("Active", active); + + NBTTagList nbttaglist = new NBTTagList(); + ItemStack[] offspring = pendingSpawns.toArray(new ItemStack[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 boolean isActive() { + return active; + } + + @Override + public void setActive(boolean active) { + if (this.active == active) { + return; + } + + this.active = active; + + if (!worldObj.isRemote) { + Proxies.net.sendNetworkPacket(new PacketActiveUpdate(this), worldObj); + } + } + + @Override + public Object getGui(EntityPlayer player, int data) { + return new FR_GuiAlvearyMutatron(player.inventory, this); + } + + @Override + public Object getContainer(EntityPlayer player, int data) { + return new FR_ContainerAlvearyMutatron(player.inventory, this); + } +} diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_ContainerAlvearyMutatron.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_ContainerAlvearyMutatron.java new file mode 100644 index 0000000000..5af0978631 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_ContainerAlvearyMutatron.java @@ -0,0 +1,28 @@ +package miscutil.core.xmod.forestry.apiculture.multiblock.inventory; + +import miscutil.core.xmod.forestry.apiculture.multiblock.TileAlvearyMutatron; +import net.minecraft.entity.player.InventoryPlayer; +import forestry.core.gui.ContainerTile; +import forestry.core.gui.slots.SlotFiltered; + +public class FR_ContainerAlvearyMutatron extends ContainerTile { + public FR_ContainerAlvearyMutatron(InventoryPlayer player, TileAlvearyMutatron tile) { + super(tile, player, 8, 87); + this.addSlotToContainer(new SlotFiltered(tile, 0, 79, 52)); + this.addSlotToContainer(new SlotFiltered(tile, 1, 100, 39)); + this.addSlotToContainer(new SlotFiltered(tile, 2, 58, 39)); + this.addSlotToContainer(new SlotFiltered(tile, 3, 79, 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 + ******************************************************************************/ diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_GuiAlvearyMutatron.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_GuiAlvearyMutatron.java new file mode 100644 index 0000000000..b85d5e38a0 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_GuiAlvearyMutatron.java @@ -0,0 +1,26 @@ +package miscutil.core.xmod.forestry.apiculture.multiblock.inventory; + +import miscutil.core.lib.CORE; +import miscutil.core.xmod.forestry.apiculture.multiblock.TileAlvearyMutatron; +import miscutil.core.xmod.forestry.core.gui.FR_GuiForestryTitled; +import net.minecraft.entity.player.InventoryPlayer; + +public class FR_GuiAlvearyMutatron extends FR_GuiForestryTitled { + + public FR_GuiAlvearyMutatron(InventoryPlayer inventory, TileAlvearyMutatron tile) { + super(CORE.MODID+"/swarmer.png", new FR_ContainerAlvearyMutatron(inventory, tile), tile); + } + + } + + +/******************************************************************************* + * 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 + ******************************************************************************/ \ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_InventoryMutatron.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_InventoryMutatron.java new file mode 100644 index 0000000000..aa51d3ebb1 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/FR_InventoryMutatron.java @@ -0,0 +1,29 @@ +package miscutil.core.xmod.forestry.apiculture.multiblock.inventory; + +import miscutil.core.xmod.forestry.apiculture.multiblock.TileAlvearyMutatron; +import net.minecraft.item.ItemStack; +import forestry.api.apiculture.BeeManager; +import forestry.core.inventory.InventoryAdapterTile; +import forestry.core.utils.ItemStackUtil; + +public class FR_InventoryMutatron extends InventoryAdapterTile { + public FR_InventoryMutatron(TileAlvearyMutatron alvearyMutatron) { + super(alvearyMutatron, 4, "mutatronInv"); + } + @Override + public boolean canSlotAccept(int slotIndex, ItemStack itemStack) { + return ItemStackUtil.containsItemStack(BeeManager.inducers.keySet(), itemStack); + } +} + + +/******************************************************************************* + * 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 + ******************************************************************************/ \ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/MutatronHandler.java b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/MutatronHandler.java new file mode 100644 index 0000000000..e629eeca51 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/multiblock/inventory/MutatronHandler.java @@ -0,0 +1,22 @@ +/******************************************************************************* + * 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.xmod.forestry.apiculture.multiblock.inventory; + +public class MutatronHandler { + + + + + + + + +} \ No newline at end of file diff --git a/src/Java/miscutil/core/xmod/forestry/apiculture/tiles/FR_TileHandler.java b/src/Java/miscutil/core/xmod/forestry/apiculture/tiles/FR_TileHandler.java new file mode 100644 index 0000000000..7ab787052b --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/apiculture/tiles/FR_TileHandler.java @@ -0,0 +1,14 @@ +package miscutil.core.xmod.forestry.apiculture.tiles; + +import miscutil.core.lib.CORE; +import miscutil.core.xmod.forestry.apiculture.multiblock.TileAlvearyMutatron; +import cpw.mods.fml.common.registry.GameRegistry; + +public class FR_TileHandler { + + public static void init(){ + if (CORE.DEBUG){ + GameRegistry.registerTileEntity(TileAlvearyMutatron.class, "MiscUtils.AlvearyMutatron"); + } + } +} diff --git a/src/Java/miscutil/core/xmod/forestry/core/gui/FR_FontRenderer.java b/src/Java/miscutil/core/xmod/forestry/core/gui/FR_FontRenderer.java new file mode 100644 index 0000000000..27de0a712c --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/core/gui/FR_FontRenderer.java @@ -0,0 +1,111 @@ +/******************************************************************************* + * 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.xmod.forestry.core.gui; + +import net.minecraft.client.gui.FontRenderer; + +import org.lwjgl.opengl.GL11; + +import forestry.core.render.FontColour; + +public class FR_FontRenderer { + private static final int LINE_HEIGHT = 12; + + private final FR_GuiForestry guiForestry; + private final int defaultFontColor; + private FontRenderer fontRendererObj; + + public int column0; + public int column1; + public int column2; + public int line; + + public FR_FontRenderer(FR_GuiForestry guiForestry, FontColour fontColour) { + this.guiForestry = guiForestry; + this.defaultFontColor = fontColour.get("gui.screen"); + } + + public void setFontRendererObj(FontRenderer fontRendererObj) { + this.fontRendererObj = fontRendererObj; + } + + public void startPage() { + line = LINE_HEIGHT; + GL11.glPushMatrix(); + } + + public void startPage(int column0, int column1, int column2) { + + this.column0 = column0; + this.column1 = column1; + this.column2 = column2; + + startPage(); + } + + public int getLineY() { + return line; + } + + public void newLine() { + line += LINE_HEIGHT; + } + + public void newLineCompressed() { + line += (LINE_HEIGHT - 2); + } + + public void newLine(int lineHeight) { + line += lineHeight; + } + + public void endPage() { + GL11.glPopMatrix(); + } + + public void drawRow(String text0, String text1, String text2, int colour0, int colour1, int colour2) { + drawLine(text0, column0, colour0); + drawLine(text1, column1, colour1); + drawLine(text2, column2, colour2); + } + + public void drawLine(String text, int x) { + drawLine(text, x, defaultFontColor); + } + + public void drawSplitLine(String text, int x, int maxWidth) { + drawSplitLine(text, x, maxWidth, defaultFontColor); + } + + public void drawCenteredLine(String text, int x, int color) { + drawCenteredLine(text, x, guiForestry.getSizeX(), color); + } + + public void drawCenteredLine(String text, int x, int width, int color) { + fontRendererObj.drawString(text, guiForestry.getGuiLeft() + x + getCenteredOffset(text, width), guiForestry.getGuiTop() + line, color); + } + + public void drawLine(String text, int x, int color) { + fontRendererObj.drawString(text, guiForestry.getGuiLeft() + x, guiForestry.getGuiTop() + line, color); + } + + public void drawSplitLine(String text, int x, int maxWidth, int color) { + fontRendererObj.drawSplitString(text, guiForestry.getGuiLeft() + x, guiForestry.getGuiTop() + line, maxWidth, color); + } + + public int getCenteredOffset(String string) { + return getCenteredOffset(string, guiForestry.getSizeX()); + } + + public int getCenteredOffset(String string, int xWidth) { + return (xWidth - fontRendererObj.getStringWidth(string)) / 2; + } +} diff --git a/src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiForestry.java b/src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiForestry.java new file mode 100644 index 0000000000..1a2863a528 --- /dev/null +++ b/src/Java/miscutil/core/xmod/forestry/core/gui/FR_GuiForestry.java @@ -0,0 +1,272 @@ +/******************************************************************************* + * 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.xmod.forestry.core.gui; + +import java.util.List; + +import miscutil.core.lib.CORE; +import net.minecraft.client.Minecraft; +import net.minecraft.client.gui.FontRenderer; +import net.minecraft.client.gui.inventory.GuiContainer; +import net.minecraft.client.renderer.OpenGlHelper; +import net.minecraft.client.renderer.RenderHelper; +import net.minecraft.client.renderer.entity.RenderItem; +import net.minecraft.entity.player.InventoryPlayer; +import net.minecraft.inventory.Container; +import net.minecraft.inventory.IInventory; +import net.minecraft.inventory.Slot; +import net.minecraft.util.ResourceLocation; + +import org.lwjgl.opengl.GL11; +import org.lwjgl.opengl.GL12; + +import forestry.api.core.IErrorLogicSource; +import forestry.api.core.IErrorSource; +import forestry.core.access.IRestrictedAccess; +import forestry.core.config.Config; +import forestry.core.gui.IHintSource; +import forestry.core.gui.ledgers.ClimateLedger; +import forestry.core.gui.ledgers.HintLedger; +import forestry.core.gui.ledgers.LedgerManager; +import forestry.core.gui.ledgers.OwnerLedger; +import forestry.core.gui.ledgers.PowerLedger; +import forestry.core.proxy.Proxies; +import forestry.core.render.FontColour; +import forestry.core.tiles.IClimatised; +import forestry.core.tiles.IPowerHandler; + +public abstract class FR_GuiForestry extends GuiContainer { + protected final I inv