AdjacentSide enum
Пакет: com.hypixel.hytale.server.core.universe.world.connectedblocks
Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/ConnectedBlockPatternRule.java
Поля (1)
| Модификаторы | Тип | Имя |
|---|---|---|
|
public final Vector3ic |
relativePosition |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
abstract |
|
West West(Vector3iUtil.WEST) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.connectedblocks;
class="kw">import com.hypixel.hytale.codec.Codec;
class="kw">import com.hypixel.hytale.codec.KeyedCodec;
class="kw">import com.hypixel.hytale.codec.builder.BuilderCodec;
class="kw">import com.hypixel.hytale.codec.codecs.EnumCodec;
class="kw">import com.hypixel.hytale.codec.codecs.array.ArrayCodec;
class="kw">import com.hypixel.hytale.codec.codecs.set.SetCodec;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.server.core.asset.type.buildertool.config.BlockTypeListAsset;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.ConnectedBlockFaceTags;
class="kw">import java.util.Collections;
class="kw">import java.util.HashSet;
class="kw">import java.util.Set;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;
class="kw">public class ConnectedBlockPatternRule {
class="kw">public class="kw">static class="kw">final BuilderCodec<ConnectedBlockPatternRule> CODEC = BuilderCodec.builder(ConnectedBlockPatternRule.class, ConnectedBlockPatternRule::new)
.append(
new KeyedCodec<>("Position", Vector3iUtil.CODEC, false), (var0, var1) -> var0.relativePosition = var1, var0 -> new Vector3i(var0.relativePosition)
)
.add()
.append(
new KeyedCodec<>("IncludeOrExclude", new EnumCodec<>(ConnectedBlockPatternRule.IncludeOrExclude.class), true),
(var0, var1) -> var0.includeOrExclude = var1,
var0 -> var0.includeOrExclude
)
.add()
.append(
new KeyedCodec<>(
"PlacementNormals",
new ArrayCodec<>(new EnumCodec<>(ConnectedBlockPatternRule.AdjacentSide.class), ConnectedBlockPatternRule.AdjacentSide[]::new),
false
),
(var0, var1) -> var0.placementNormals = var1,
var0 -> var0.placementNormals
)
.add()
.documentation("Queries the face the block was placed against")
.append(new KeyedCodec<>("FaceTags", ConnectedBlockFaceTags.CODEC, false), (var0, var1) -> var0.faceTags = var1, var0 -> var0.faceTags)
.add()
.append(
new KeyedCodec<>("Shapes", new SetCodec<>(BlockPattern.BlockEntry.CODEC, HashSet::new, true)),
(var0, var1) -> var0.shapeBlockTypeKeys = var1,
var0 -> var0.shapeBlockTypeKeys
)
.add()
.append(new KeyedCodec<>("BlockTypes", new ArrayCodec<>(Codec.STRING, String[]::new)), (var0, var1) -> {
if (var1 != null) {
Collections.addAll(var0.blockTypes, var1);
}
}, var0 -> var0.blockTypes != null ? var0.blockTypes.toArray(String[]::new) : null)
.add()
.append(new KeyedCodec<>("BlockTypeLists", Codec.STRING_ARRAY), (var0, var1) -> {
if (var1 != null) {
var0.blockTypeListAssets = new BlockTypeListAsset[var1.length];
for (int var2 = 0; var2 < var1.length; var2++) {
var0.blockTypeListAssets[var2] = BlockTypeListAsset.getAssetMap().getAsset(var1[var2]);
if (var0.blockTypeListAssets[var2] == null) {
System.out.println("BlockTypeListAsset with name: " + var1[var2] + " does not exist");
}
}
}
}, var0 -> {
if (var0.blockTypeListAssets == null) {
class="kw">return null;
}
String[] var1 = new String[var0.blockTypeListAssets.length];
for (int var2 = 0; var2 < var0.blockTypeListAssets.length; var2++) {
var1[var2] = var0.blockTypeListAssets[var2].getId();
}
class="kw">return var1;
})
.add()
.build();
class="kw">private ConnectedBlockPatternRule.IncludeOrExclude includeOrExclude;
class="kw">private Vector3ic relativePosition = Vector3iUtil.ZERO;
class="kw">private class="kw">final HashSet<String> blockTypes = new HashSet<>();
@Nullable
class="kw">private BlockTypeListAsset[] blockTypeListAssets;
class="kw">private Set<BlockPattern.BlockEntry> shapeBlockTypeKeys = Collections.emptySet();
class="kw">private ConnectedBlockFaceTags faceTags = ConnectedBlockFaceTags.EMPTY;
class="kw">private ConnectedBlockPatternRule.AdjacentSide[] placementNormals;
class="kw">public ConnectedBlockPatternRule() {
}
class="kw">public Vector3ic getRelativePosition() {
class="kw">return this.relativePosition;
}
@Nonnull
class="kw">public HashSet<String> getBlockTypes() {
class="kw">return this.blockTypes;
}
@Nonnull
class="kw">public Set<BlockPattern.BlockEntry> getShapeBlockTypeKeys() {
class="kw">return this.shapeBlockTypeKeys;
}
class="kw">public ConnectedBlockFaceTags getFaceTags() {
class="kw">return this.faceTags;
}
@Nullable
class="kw">public BlockTypeListAsset[] getBlockTypeListAssets() {
class="kw">return this.blockTypeListAssets;
}
class="kw">public ConnectedBlockPatternRule.AdjacentSide[] getPlacementNormals() {
class="kw">return this.placementNormals;
}
class="kw">public boolean isInclude() {
class="kw">return this.includeOrExclude == ConnectedBlockPatternRule.IncludeOrExclude.INCLUDE;
}
class="kw">public enum AdjacentSide {
Up(Vector3iUtil.UP),
Down(Vector3iUtil.DOWN),
North(Vector3iUtil.NORTH),
East(Vector3iUtil.EAST),
South(Vector3iUtil.SOUTH),
West(Vector3iUtil.WEST);
class="kw">public class="kw">final Vector3ic relativePosition;
AdjacentSide(Vector3ic nullxx) {
this.relativePosition = nullxx;
}
}
class="kw">public enum IncludeOrExclude {
INCLUDE,
EXCLUDE;
IncludeOrExclude() {
}
}
}