Search in sources :

Example 46 with Vec3i

use of net.minecraft.util.math.Vec3i in project ForestryMC by ForestryMC.

the class Bee method pollinateRandom.

@Override
public boolean pollinateRandom(IBeeHousing housing, IIndividual pollen) {
    IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
    int chance = (int) (genome.getFlowering() * beeModifier.getFloweringModifier(getGenome(), 1f));
    World world = housing.getWorldObj();
    Random random = world.rand;
    // Correct speed
    if (random.nextInt(100) >= chance) {
        return false;
    }
    Vec3i area = getArea(genome, beeModifier);
    Vec3i offset = new Vec3i(-area.getX() / 2, -area.getY() / 4, -area.getZ() / 2);
    BlockPos housingPos = housing.getCoordinates();
    for (int i = 0; i < 30; i++) {
        BlockPos randomPos = VectUtil.getRandomPositionInArea(random, area);
        BlockPos posBlock = VectUtil.add(housingPos, randomPos, offset);
        ICheckPollinatable checkPollinatable = GeneticsUtil.getCheckPollinatable(world, posBlock);
        if (checkPollinatable == null) {
            continue;
        }
        if (!genome.getFlowerProvider().isAcceptedPollinatable(world, checkPollinatable)) {
            continue;
        }
        if (!checkPollinatable.canMateWith(pollen)) {
            continue;
        }
        IPollinatable realPollinatable = GeneticsUtil.getOrCreatePollinatable(housing.getOwner(), world, posBlock, Config.pollinateVanillaTrees);
        if (realPollinatable != null) {
            realPollinatable.mateWith(pollen);
            return true;
        }
    }
    return false;
}
Also used : Vec3i(net.minecraft.util.math.Vec3i) ICheckPollinatable(forestry.api.genetics.ICheckPollinatable) IBeeModifier(forestry.api.apiculture.IBeeModifier) Random(java.util.Random) IPollinatable(forestry.api.genetics.IPollinatable) BlockPos(net.minecraft.util.math.BlockPos) World(net.minecraft.world.World)

Example 47 with Vec3i

use of net.minecraft.util.math.Vec3i in project ForestryMC by ForestryMC.

the class Bee method retrievePollen.

/* FLOWERS */
@Override
@Nullable
public IIndividual retrievePollen(IBeeHousing housing) {
    IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
    int chance = Math.round(genome.getFlowering() * beeModifier.getFloweringModifier(getGenome(), 1f));
    World world = housing.getWorldObj();
    Random random = world.rand;
    // Correct speed
    if (random.nextInt(100) >= chance) {
        return null;
    }
    Vec3i area = getArea(genome, beeModifier);
    Vec3i offset = new Vec3i(-area.getX() / 2, -area.getY() / 4, -area.getZ() / 2);
    BlockPos housingPos = housing.getCoordinates();
    IIndividual pollen = null;
    for (int i = 0; i < 20; i++) {
        BlockPos randomPos = VectUtil.getRandomPositionInArea(random, area);
        BlockPos blockPos = VectUtil.add(housingPos, randomPos, offset);
        ICheckPollinatable pitcher = TileUtil.getTile(world, blockPos, ICheckPollinatable.class);
        if (pitcher != null) {
            if (genome.getFlowerProvider().isAcceptedPollinatable(world, pitcher)) {
                pollen = pitcher.getPollen();
            }
        } else {
            pollen = GeneticsUtil.getPollen(world, blockPos);
        }
        if (pollen != null) {
            return pollen;
        }
    }
    return null;
}
Also used : Vec3i(net.minecraft.util.math.Vec3i) ICheckPollinatable(forestry.api.genetics.ICheckPollinatable) IBeeModifier(forestry.api.apiculture.IBeeModifier) Random(java.util.Random) IIndividual(forestry.api.genetics.IIndividual) BlockPos(net.minecraft.util.math.BlockPos) World(net.minecraft.world.World) Nullable(javax.annotation.Nullable)

Example 48 with Vec3i

use of net.minecraft.util.math.Vec3i in project ForestryMC by ForestryMC.

the class FlowerRegistry method getAreaIterator.

@Override
public Iterator<BlockPos.MutableBlockPos> getAreaIterator(IBeeHousing beeHousing, IBee bee) {
    IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(beeHousing);
    Vec3i area = getArea(bee.getGenome(), beeModifier);
    BlockPos minPos = beeHousing.getCoordinates().add(-area.getX() / 2, -area.getY() / 2, -area.getZ() / 2);
    BlockPos maxPos = minPos.add(area);
    World world = beeHousing.getWorldObj();
    return VectUtil.getAllInBoxFromCenterMutable(world, minPos, beeHousing.getCoordinates(), maxPos);
}
Also used : Vec3i(net.minecraft.util.math.Vec3i) IBeeModifier(forestry.api.apiculture.IBeeModifier) BlockPos(net.minecraft.util.math.BlockPos) World(net.minecraft.world.World)

Example 49 with Vec3i

use of net.minecraft.util.math.Vec3i in project ForestryMC by ForestryMC.

the class FlowerRegistry method getArea.

private static Vec3i getArea(IBeeGenome genome, IBeeModifier beeModifier) {
    Vec3i genomeTerritory = genome.getTerritory();
    float housingModifier = beeModifier.getTerritoryModifier(genome, 1f);
    return VectUtil.scale(genomeTerritory, housingModifier * 3.0f);
}
Also used : Vec3i(net.minecraft.util.math.Vec3i)

Example 50 with Vec3i

use of net.minecraft.util.math.Vec3i in project ForestryMC by ForestryMC.

the class AlleleEffect method getBounding.

public static AxisAlignedBB getBounding(IBeeGenome genome, IBeeHousing housing) {
    IBeeModifier beeModifier = BeeManager.beeRoot.createBeeHousingModifier(housing);
    float territoryModifier = beeModifier.getTerritoryModifier(genome, 1.0f);
    Vec3i area = VectUtil.scale(genome.getTerritory(), territoryModifier);
    Vec3i offset = VectUtil.scale(area, -1 / 2.0f);
    BlockPos min = housing.getCoordinates().add(offset);
    BlockPos max = min.add(area);
    return new AxisAlignedBB(min.getX(), min.getY(), min.getZ(), max.getX(), max.getY(), max.getZ());
}
Also used : AxisAlignedBB(net.minecraft.util.math.AxisAlignedBB) Vec3i(net.minecraft.util.math.Vec3i) IBeeModifier(forestry.api.apiculture.IBeeModifier) BlockPos(net.minecraft.util.math.BlockPos)

Aggregations

Vec3i (net.minecraft.util.math.Vec3i)65 BlockPos (net.minecraft.util.math.BlockPos)35 IBlockState (net.minecraft.block.state.IBlockState)15 World (net.minecraft.world.World)12 EnumFacing (net.minecraft.util.EnumFacing)7 IBeeModifier (forestry.api.apiculture.IBeeModifier)6 SideOnly (net.minecraftforge.fml.relauncher.SideOnly)6 Tessellator (net.minecraft.client.renderer.Tessellator)4 Vec3d (net.minecraft.util.math.Vec3d)4 Random (java.util.Random)3 AxisAlignedBB (net.minecraft.util.math.AxisAlignedBB)3 EnumTemperature (forestry.api.core.EnumTemperature)2 ICheckPollinatable (forestry.api.genetics.ICheckPollinatable)2 EffectLightning (hellfirepvp.fracture.client.effect.fx.EffectLightning)2 EntityFXFacingParticle (hellfirepvp.fracture.client.effect.fx.EntityFXFacingParticle)2 FissureData (hellfirepvp.fracture.common.fissure.FissureData)2 Vector3 (hellfirepvp.fracture.common.util.Vector3)2 BlockArea (ivorius.ivtoolkit.blocks.BlockArea)2 IvBlockCollection (ivorius.ivtoolkit.blocks.IvBlockCollection)2 IvWorldData (ivorius.ivtoolkit.tools.IvWorldData)2