package gtPlusPlus.xmod.gregtech.common.helpers; import static gtPlusPlus.core.lib.CORE.configSwitches.enableTreeFarmerParticles; import gregtech.api.enums.OrePrefixes; import gregtech.api.enums.Textures; import gregtech.api.interfaces.ITexture; import gregtech.api.interfaces.tileentity.IGregTechTileEntity; import gregtech.api.items.GT_MetaGenerated_Tool; import gregtech.common.items.GT_MetaGenerated_Item_02; import gtPlusPlus.core.lib.CORE; import gtPlusPlus.core.slots.SlotBuzzSaw.SAWTOOL; import gtPlusPlus.core.util.Utils; import gtPlusPlus.core.util.fluid.FluidUtils; import gtPlusPlus.core.util.math.MathUtils; import gtPlusPlus.core.util.particles.BlockBreakParticles; import gtPlusPlus.xmod.forestry.trees.TreefarmManager; import net.minecraft.block.Block; import net.minecraft.block.IGrowable; import net.minecraft.entity.player.EntityPlayer; import net.minecraft.init.Blocks; import net.minecraft.item.ItemStack; import net.minecraft.world.World; import net.minecraftforge.common.MinecraftForge; import net.minecraftforge.event.entity.player.BonemealEvent; import net.minecraftforge.fluids.FluidStack; import cpw.mods.fml.common.eventhandler.Event.Result; public class TreeFarmHelper { public static final FluidStack fertT1 = FluidUtils.getFluidStack("fluid.fertiliser", 3); public static final FluidStack fertT2 = FluidUtils.getFluidStack("fluid.un18fertiliser", 2); public static final FluidStack fertT3 = FluidUtils.getFluidStack("fluid.un32fertiliser", 1); public static ITexture[][][] getTextureSet() { ITexture[][][] rTextures = new ITexture[10][17][]; for (byte i = -1; i < 16; i++) { rTextures[0][i + 1] = TreeFarmHelper.getFront(i); rTextures[1][i + 1] = TreeFarmHelper.getBack(i); rTextures[2][i + 1] = TreeFarmHelper.getBottom(i); rTextures[3][i + 1] = TreeFarmHelper.getTop(i); rTextures[4][i + 1] = TreeFarmHelper.getSides(i); rTextures[5][i + 1] = TreeFarmHelper.getFrontActive(i); rTextures[6][i + 1] = TreeFarmHelper.getBackActive(i); rTextures[7][i + 1] = TreeFarmHelper.getBottomActive(i); rTextures[8][i + 1] = TreeFarmHelper.getTopActive(i); rTextures[9][i + 1] = TreeFarmHelper.getSidesActive(i); } return rTextures; } public static ITexture[] getFront(final byte aColor) { return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; } public static ITexture[] getBack(final byte aColor) { return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; } public static ITexture[] getBottom(final byte aColor) { return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; } public static ITexture[] getTop(final byte aColor) { return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; } public static ITexture[] getSides(final byte aColor) { return new ITexture[]{Textures.BlockIcons.MACHINE_CASINGS[2][aColor + 1]}; } public static ITexture[] getFrontActive(final byte aColor) { return getFront(aColor); } public static ITexture[] getBackActive(final byte aColor) { return getBack(aColor); } public static ITexture[] getBottomActive(final byte aColor) { return getBottom(aColor); } public static ITexture[] getTopActive(final byte aColor) { return getTop(aColor); } public static ITexture[] getSidesActive(final byte aColor) { return getSides(aColor); } public static boolean applyBonemeal(EntityPlayer player, World world, int intX, int intY, int intZ, short multiplier){ Block block = world.getBlock(intX, intY, intZ); int roll; int rollNeeded; if (multiplier==1){ roll = MathUtils.randInt(1, 15); rollNeeded = 15; } else if (multiplier==2){ roll = MathUtils.randInt(1, 10); rollNeeded = 10; } else { roll = MathUtils.randInt(1, 5); rollNeeded = 5; } if (roll != rollNeeded){ return false; } //EntityPlayer player = FakePlayerFactory.getMinecraft((WorldServer)world); if (!world.isRemote){ if (enableTreeFarmerParticles){ world.playAuxSFX(2005, intX, intY, intZ, 0); } } BonemealEvent event = new BonemealEvent(player, world, block, intX, intY, intZ); if (MinecraftForge.EVENT_BUS.post(event)){ Utils.LOG_MACHINE_INFO("Not sure why this returned false"); return false; } if (event.getResult() == Result.ALLOW){ if (!world.isRemote){ world.playAuxSFX(2005, intX, intY, intZ, 0); } return true; } if (block instanceof IGrowable){ IGrowable igrowable = (IGrowable)block; if (igrowable.func_149851_a(world, intX, intY, intZ, world.isRemote)){ if (!world.isRemote){ if (igrowable.func_149852_a(world, CORE.RANDOM, intX, intY, intZ)){ igrowable.func_149853_b(world, CORE.RANDOM, intX, intY, intZ); } } return true; } } return false; } public static boolean cleanUp(final IGregTechTileEntity aBaseMetaTileEntity){ Utils.LOG_MACHINE_INFO("called cleanUp()"); int cleanedUp = 0; final int xDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetX * 11; final int zDir = net.minecraftforge.common.util.ForgeDirection.getOrientation(aBaseMetaTileEntity.getBackFacing()).offsetZ * 11; for (int h=1;h<175;h++){ for (int i = -11; i <= 11; i++) { for (int j = -11; j <= 11; j++) { Block testBlock = aBaseMetaTileEntity.getBlockOffset(xDir + i, h, zDir + j); if (( (i == -8 || i == 8) || (i == -9 || i == 9) || (i == -10 || i == 10) || (i == -11 || i == 11) ) && ( (j == -8 || j == 8) || (j == -9 || j == 9) || (j == -10 || j == 10) || (j == -11 || j == 11) )){ if (!testBlock.getUnlocalizedName().toLowerCase().contains("air") || !testBlock.getUnlocalizedName().toLowerCase().contains("pumpkin")) Utils.LOG_INFO("5:"+testBlock.getUnlocalizedName()); else aBaseMetaTileEntity.getWorld().setBlock(aBaseMetaTileEntity.getXCoord()+xDir+i, aBaseMetaTileEntity.getYCoord()+h, aBaseMetaTileEntity.getZCoord()+zDir+j, Blocks.bookshelf); } //If not in the middle - don't know how else to check this one without lots of != if ( i != 7 && i != -7 && j != 7 && j != -7 && i != 6 && i != -6 && j != 6 && j != -6 && i != 5 && i != -5 && j != 5 && j != -5 && i != 4 && i != -4 && j != 4 && j != -4 && i != 3 && i != -3 && j != 3 && j != -3 && i != 2 && i != -2 && j != 2 && j != -2 && i != 1 && i != -1 && j != 1 && j != -1 && i != 0 && j != 0 ){ if (!testBlock.getUnlocalizedName().toLowerCase().contains("air") || !testBlock.getUnlocalizedName().toLowerCase().contains("pumpkin")) Utils.LOG_INFO("0:"+testBlock.getUnlocalizedName()); else aBaseMetaTileEntity.getWorld().setBlock(aBaseMetaTileEntity.getXCoord()+xDir+i, aBaseMetaTileEntity.getYCoord()+h, aBaseMetaTileEntity.getZCoord()+zDir+j, Blocks.melon_block); if (TreefarmManager.isLeaves(testBlock) || TreefarmManager.isWoodLog(testBlock)){ Utils.LOG_INFO("1:"+testBlock.getUnlocalizedName()); int posiX, posiY, posiZ; posiX = aBaseMetaTileEntity.getXCoord()+xDir+i; posiY = aBaseMetaTileEntity.getYCoord()+h; posiZ = aBaseMetaTileEntity.getZCoord()+zDir+j; //Utils.LOG_MACHINE_INFO("Cleaning Up some leftovers."); cleanedUp++; aBaseMetaTileEntity.getWorld().setBlockToAir(posiX, posiY, posiZ); new BlockBreakParticles(aBaseMetaTileEntity.getWorld(), posiX, posiY, posiZ, Blocks.dirt); } else { //Utils.LOG_INFO("2:"+testBlock.getUnlocalizedName()); } } else { //Utils.LOG_INFO("1"); } } } } Utils.LOG_MACHINE_INFO("cleaning up | "+cleanedUp ); return true; } public static SAWTOOL isCorrectMachinePart(final ItemStack aStack) { if (aStack != null){ if (aStack.getItem() instanceof GT_MetaGenerated_Item_02 || aStack.getItem() instanceof GT_MetaGenerated_Tool){ if (OrePrefixes.craftingTool.contains(aStack)){ if (aStack.getDisplayName().toLowerCase().contains("saw")){ if (aStack.getItemDamage() == 10){ return SAWTOOL.SAW; } else if (aStack.getItemDamage() == 140){ return SAWTOOL.BUZZSAW; } else { return SAWTOOL.NONE; } } } } } return SAWTOOL.NONE; } }