Search in sources :

Example 31 with GrowSignal

use of com.ferreusveritas.dynamictrees.systems.GrowSignal in project DynamicTrees-BYG by DynamicTreesTeam.

the class TaperedOakLogic method populateDirectionProbabilityMap.

@Override
public int[] populateDirectionProbabilityMap(GrowthLogicKitConfiguration configuration, DirectionManipulationContext context) {
    final GrowSignal signal = context.signal();
    final int[] probMap = context.probMap();
    Direction originDir = signal.dir.getOpposite();
    // Alter probability map for direction change
    // Down is always disallowed
    probMap[0] = 0;
    probMap[1] = signal.isInTrunk() ? context.species().getUpProbability() : 1;
    probMap[2] = probMap[3] = probMap[4] = // Only allow turns when we aren't in the trunk(or the branch is not a twig)
    probMap[5] = !signal.isInTrunk() || context.radius() > 1 ? 2 : 0;
    // Disable the direction we came from
    probMap[originDir.ordinal()] = 0;
    // Favor current travel direction
    probMap[signal.dir.ordinal()] += signal.isInTrunk() ? 0 : signal.numTurns == 1 ? 2 : 1;
    return probMap;
}
Also used : GrowSignal(com.ferreusveritas.dynamictrees.systems.GrowSignal) Direction(net.minecraft.util.Direction)

Aggregations

GrowSignal (com.ferreusveritas.dynamictrees.systems.GrowSignal)31 Direction (net.minecraft.util.Direction)26 Species (com.ferreusveritas.dynamictrees.trees.Species)9 BlockPos (net.minecraft.util.math.BlockPos)9 World (net.minecraft.world.World)8 MapSignal (com.ferreusveritas.dynamictrees.api.network.MapSignal)1 BasicBranchBlock (com.ferreusveritas.dynamictrees.blocks.branches.BasicBranchBlock)1 BranchBlock (com.ferreusveritas.dynamictrees.blocks.branches.BranchBlock)1 DynamicLeavesBlock (com.ferreusveritas.dynamictrees.blocks.leaves.DynamicLeavesBlock)1 NodeShrinker (com.ferreusveritas.dynamictrees.systems.nodemappers.NodeShrinker)1