classpublicPriority 3
RandomDirectionality
com.hypixel.hytale.builtin.hytalegenerator.props.directionality.RandomDirectionality
extends Directionality
4
Methods
4
Public Methods
3
Fields
1
Constructors
Constructors
public
RandomDirectionality(Pattern pattern, int seed)Methods
Public Methods (4)
public
Pattern getGeneralPattern()@Nonnull@Override
public
List<PrefabRotation> getPossibleRotations()@Nonnull@Override
public
Vector3i getReadRangeWith(Scanner scanner)@Nonnull@Override
public
PrefabRotation getRotationAt(Pattern.Context context)@Override
Fields
Private/Package Fields (3)
private
Pattern patternprivate
List<PrefabRotation> rotationsprivate
SeedGenerator seedGeneratorInheritance
Parent
Current
Interface
Child
Use mouse wheel to zoom, drag to pan. Click nodes to navigate.
Related Classes
Source Code
package com.hypixel.hytale.builtin.hytalegenerator.props.directionality;
import com.hypixel.hytale.builtin.hytalegenerator.framework.math.SeedGenerator;
import com.hypixel.hytale.builtin.hytalegenerator.patterns.Pattern;
import com.hypixel.hytale.builtin.hytalegenerator.scanners.Scanner;
import com.hypixel.hytale.math.util.FastRandom;
import com.hypixel.hytale.math.vector.Vector3i;
import com.hypixel.hytale.server.core.prefab.PrefabRotation;
import java.util.Collections;
import java.util.List;
import javax.annotation.Nonnull;
public class RandomDirectionality extends Directionality {
@Nonnull
private final List<PrefabRotation> rotations;
@Nonnull
private final Pattern pattern;
@Nonnull
private final SeedGenerator seedGenerator;
public RandomDirectionality(@Nonnull Pattern pattern, int seed) {
this.pattern = pattern;
this.seedGenerator = new SeedGenerator((long)seed);
this.rotations = Collections.unmodifiableList(
List.of(PrefabRotation.ROTATION_0, PrefabRotation.ROTATION_90, PrefabRotation.ROTATION_180, PrefabRotation.ROTATION_270)
);
}
@Nonnull
@Override
public Pattern getGeneralPattern() {
return this.pattern;
}
@Nonnull
@Override
public Vector3i getReadRangeWith(@Nonnull Scanner scanner) {
return scanner.readSpaceWith(this.pattern).getRange();
}
@Nonnull
@Override
public List<PrefabRotation> getPossibleRotations() {
return this.rotations;
}
@Override
public PrefabRotation getRotationAt(@Nonnull Pattern.Context context) {
FastRandom random = new FastRandom(this.seedGenerator.seedAt((long)context.position.x, (long)context.position.y, (long)context.position.z));
return this.rotations.get(random.nextInt(this.rotations.size()));
}
}