hytale-server/com/hypixel/hytale/builtin/hytalegenerator/positionproviders/SpherePositionProvider.java

28 lines
1004 B
Java

package com.hypixel.hytale.builtin.hytalegenerator.positionproviders;
import com.hypixel.hytale.builtin.hytalegenerator.VectorUtil;
import javax.annotation.Nonnull;
public class SpherePositionProvider extends PositionProvider {
@Nonnull
private final PositionProvider positionProvider;
private final double range;
public SpherePositionProvider(@Nonnull PositionProvider positionProvider, double range) {
this.positionProvider = positionProvider;
this.range = range;
}
@Override
public void positionsIn(@Nonnull PositionProvider.Context context) {
PositionProvider.Context childContext = new PositionProvider.Context(context);
childContext.consumer = position -> {
double distance = position.length();
if (VectorUtil.isInside(position, context.minInclusive, context.maxExclusive) && distance <= this.range) {
context.consumer.accept(position);
}
};
this.positionProvider.positionsIn(childContext);
}
}