WallDirection enum
Пакет: com.hypixel.hytale.builtin.hytalegenerator.patterns
Файл: com/hypixel/hytale/builtin/hytalegenerator/patterns/WallPattern.java
Поля (2)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public static final Codec<WallPattern.WallDirection> |
CODEC |
|
N,
S,
E, |
W |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.hytalegenerator.patterns;
class="kw">import com.hypixel.hytale.builtin.hytalegenerator.bounds.Bounds3i;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import java.util.ArrayList;
class="kw">import java.util.List;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class WallPattern class="kw">extends Pattern {
@Nonnull
class="kw">private class="kw">final Pattern wallPattern;
@Nonnull
class="kw">private class="kw">final Pattern originPattern;
@Nonnull
class="kw">private class="kw">final List<WallPattern.WallDirection> directions;
class="kw">private class="kw">final boolean matchAll;
@Nonnull
class="kw">private class="kw">final Bounds3i bounds_voxelGrid;
@Nonnull
class="kw">private class="kw">final Vector3i rWallPosition;
@Nonnull
class="kw">private class="kw">final Pattern.Context rWallContext;
class="kw">public WallPattern(@Nonnull Pattern var1, @Nonnull Pattern var2, @Nonnull List<WallPattern.WallDirection> var3, boolean var4) {
this.wallPattern = var1;
this.originPattern = var2;
this.directions = new ArrayList<>(var3);
this.matchAll = var4;
this.rWallPosition = new Vector3i();
this.rWallContext = new Pattern.Context();
this.bounds_voxelGrid = var2.getBounds_voxelGrid().clone();
Bounds3i var5 = var1.getBounds_voxelGrid().clone();
for (WallPattern.WallDirection var7 : this.directions) {
class="kw">switch (var7) {
case N:
this.bounds_voxelGrid.encompass(var5.clone().offset(new Vector3i(0, 0, -1)));
break;
case S:
this.bounds_voxelGrid.encompass(var5.clone().offset(new Vector3i(0, 0, 1)));
break;
case E:
this.bounds_voxelGrid.encompass(var5.clone().offset(new Vector3i(1, 0, 0)));
break;
case W:
this.bounds_voxelGrid.encompass(var5.clone().offset(new Vector3i(-1, 0, 0)));
}
}
}
@Override
class="kw">public boolean matches(@Nonnull Pattern.Context var1) {
for (WallPattern.WallDirection var3 : this.directions) {
boolean var4 = this.matches(var1, var3);
if (this.matchAll && !var4) {
class="kw">return false;
}
if (var4) {
class="kw">return true;
}
}
class="kw">return false;
}
class="kw">private boolean matches(@Nonnull Pattern.Context var1, @Nonnull WallPattern.WallDirection var2) {
this.rWallPosition.set(var1.position);
class="kw">switch (var2) {
case N:
this.rWallPosition.z--;
break;
case S:
this.rWallPosition.z++;
break;
case E:
this.rWallPosition.x++;
break;
case W:
this.rWallPosition.x--;
}
this.rWallContext.assign(var1);
this.rWallContext.position = this.rWallPosition;
boolean var3 = this.originPattern.matches(var1) && this.wallPattern.matches(this.rWallContext);
this.rWallContext.clearReferences();
class="kw">return var3;
}
@Nonnull
@Override
class="kw">public Bounds3i getBounds_voxelGrid() {
class="kw">return this.bounds_voxelGrid;
}
class="kw">public enum WallDirection {
N,
S,
E,
W;
@Nonnull
class="kw">public class="kw">static class="kw">final Codec<WallPattern.WallDirection> CODEC = new EnumCodec<>(WallPattern.WallDirection.class, EnumCodec.EnumStyle.LEGACY);
WallDirection() {
}
}
}