HyCodeYourTale
classpublicPriority 3

SandwichAssignments

com.hypixel.hytale.builtin.hytalegenerator.propdistributions.SandwichAssignments

extends Assignments

3

Methods

3

Public Methods

2

Fields

1

Constructors

Constructors

public
SandwichAssignments(List<SandwichAssignments.VerticalDelimiter> verticalDelimiters, int runtime)

Methods

Public Methods (3)

public
List<Prop> getAllPossibleProps()
@Nonnull@Override
public
int getRuntime()
@Override
public
Prop propAt(Vector3d position, WorkerIndexer.Id id, double distanceTOBiomeEdge)
@Override

Fields

Private/Package Fields (2)

privateint runtime
privateList<SandwichAssignments.VerticalDelimiter> verticalDelimiters

Inheritance

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.propdistributions;

import com.hypixel.hytale.builtin.hytalegenerator.props.Prop;
import com.hypixel.hytale.builtin.hytalegenerator.threadindexer.WorkerIndexer;
import com.hypixel.hytale.math.vector.Vector3d;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;

public class SandwichAssignments extends Assignments {
   @Nonnull
   private final List<SandwichAssignments.VerticalDelimiter> verticalDelimiters;
   private final int runtime;

   public SandwichAssignments(@Nonnull List<SandwichAssignments.VerticalDelimiter> verticalDelimiters, int runtime) {
      this.runtime = runtime;
      this.verticalDelimiters = new ArrayList<>(verticalDelimiters);
   }

   @Override
   public Prop propAt(@Nonnull Vector3d position, @Nonnull WorkerIndexer.Id id, double distanceTOBiomeEdge) {
      if (this.verticalDelimiters.isEmpty()) {
         return Prop.noProp();
      } else {
         for (SandwichAssignments.VerticalDelimiter fd : this.verticalDelimiters) {
            if (fd.isInside(position.y)) {
               return fd.assignments.propAt(position, id, distanceTOBiomeEdge);
            }
         }

         return Prop.noProp();
      }
   }

   @Override
   public int getRuntime() {
      return this.runtime;
   }

   @Nonnull
   @Override
   public List<Prop> getAllPossibleProps() {
      ArrayList<Prop> list = new ArrayList<>();

      for (SandwichAssignments.VerticalDelimiter f : this.verticalDelimiters) {
         list.addAll(f.assignments.getAllPossibleProps());
      }

      return list;
   }

   public static class VerticalDelimiter {
      double maxY;
      double minY;
      Assignments assignments;

      public VerticalDelimiter(@Nonnull Assignments propDistributions, double minY, double maxY) {
         this.minY = minY;
         this.maxY = maxY;
         this.assignments = propDistributions;
      }

      boolean isInside(double fieldValue) {
         return fieldValue < this.maxY && fieldValue >= this.minY;
      }
   }
}