HyCodeYourTale
classpublicPriority 3

CeilingPattern

com.hypixel.hytale.builtin.hytalegenerator.patterns.CeilingPattern

extends Pattern

2

Methods

2

Public Methods

3

Fields

1

Constructors

Constructors

public
CeilingPattern(Pattern ceilingPattern, Pattern airPattern)

Methods

Public Methods (2)

public
boolean matches(Pattern.Context context)
@Override
public
SpaceSize readSpace()
@Nonnull@Override

Fields

Private/Package Fields (3)

privatePattern airPattern
privatePattern ceilingPattern
privateSpaceSize readSpaceSize

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

import com.hypixel.hytale.builtin.hytalegenerator.bounds.SpaceSize;
import com.hypixel.hytale.math.vector.Vector3i;
import javax.annotation.Nonnull;

public class CeilingPattern extends Pattern {
   @Nonnull
   private final Pattern ceilingPattern;
   @Nonnull
   private final Pattern airPattern;
   @Nonnull
   private final SpaceSize readSpaceSize;

   public CeilingPattern(@Nonnull Pattern ceilingPattern, @Nonnull Pattern airPattern) {
      this.ceilingPattern = ceilingPattern;
      this.airPattern = airPattern;
      SpaceSize ceilingSpace = ceilingPattern.readSpace();
      ceilingSpace.moveBy(new Vector3i(0, 1, 0));
      this.readSpaceSize = SpaceSize.merge(ceilingSpace, airPattern.readSpace());
   }

   @Override
   public boolean matches(@Nonnull Pattern.Context context) {
      Vector3i ceilingPosition = new Vector3i(context.position.x, context.position.y + 1, context.position.z);
      if (context.materialSpace.isInsideSpace(context.position) && context.materialSpace.isInsideSpace(ceilingPosition)) {
         Pattern.Context ceilingContext = new Pattern.Context(context);
         ceilingContext.position = ceilingPosition;
         return this.airPattern.matches(context) && this.ceilingPattern.matches(ceilingContext);
      } else {
         return false;
      }
   }

   @Nonnull
   @Override
   public SpaceSize readSpace() {
      return this.readSpaceSize.clone();
   }
}