ConnectedBlockFaceTagRule class
Пакет: com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule
Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/config/rule/ConnectedBlockFaceTagRule.java
extends: ConnectedBlockRule
Поля (15)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<ConnectedBlockFaceTagRule> |
CODEC |
|
FaceTagConnectedBlockRule |
var1 |
|
boolean |
var10 |
|
|
var10 |
|
boolean |
var2 |
|
|
var2 |
|
Vector3i |
var4 |
|
BlockType |
var5 |
|
Vector3ic |
var5 |
|
ConnectedBlockShapeConfig |
var6 |
|
HashSet |
var6 |
|
ConnectedBlockFaceTags |
var7 |
|
boolean |
var7 |
|
RotationTuple |
var8 |
|
Vector3i |
var9 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(String var12 : var3) |
|
|
if if(var6 == null) |
|
|
if if(var7 == null) |
|
|
if if(var8 == null) |
|
|
if if(var7 && this.matchType == MatchType.Any) |
|
|
if if(!var7) |
private |
boolean |
testboolean test(ConnectedBlockRule.Context var1, Vector3ic var2, Set<String> var3) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.connectedblocks.config.rule;
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.validation.Validators;
class="kw">import com.hypixel.hytale.math.vector.Vector3iUtil;
class="kw">import com.hypixel.hytale.protocol.ConnectedBlockMatchType;
class="kw">import com.hypixel.hytale.protocol.FaceTagConnectedBlockRule;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.RotationTuple;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.ConnectedBlockFaceTags;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.MatchType;
class="kw">import com.hypixel.hytale.server.core.universe.world.connectedblocks.config.shape.ConnectedBlockShapeConfig;
class="kw">import java.util.HashSet;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import org.joml.Vector3i;
class="kw">import org.joml.Vector3ic;
class="kw">public class ConnectedBlockFaceTagRule class="kw">extends ConnectedBlockRule {
class="kw">public class="kw">static class="kw">final BuilderCodec<ConnectedBlockFaceTagRule> CODEC = BuilderCodec.builder(ConnectedBlockFaceTagRule.class, ConnectedBlockFaceTagRule::new)
.append(new KeyedCodec<>("PositionOffset", Vector3iUtil.CODEC, false), (var0, var1) -> var0.positionOffset.set(var1), var0 -> var0.positionOffset)
.add()
.<ConnectedBlockFaceTags>append(new KeyedCodec<>("FaceTags", ConnectedBlockFaceTags.CODEC, true), (var0, var1) -> var0.tags = var1, var0 -> var0.tags)
.addValidator(Validators.nonNull())
.add()
.<MatchType>append(new KeyedCodec<>("MatchType", new EnumCodec<>(MatchType.class)), (var0, var1) -> var0.matchType = var1, var0 -> var0.matchType)
.addValidator(Validators.nonNull())
.add()
.documentation("A connected block rule that checks if there are face tags present from adjacent blocks")
.build();
class="kw">private class="kw">final Vector3i positionOffset = new Vector3i();
class="kw">private ConnectedBlockFaceTags tags;
class="kw">private MatchType matchType;
class="kw">public ConnectedBlockFaceTagRule() {
}
class="kw">private boolean test(ConnectedBlockRule.Context var1, Vector3ic var2, Set<String> var3) {
Vector3i var4 = new Vector3i(this.positionOffset).add(var2);
BlockType var5 = var1.getLocalBlockType(var4);
ConnectedBlockShapeConfig var6 = var1.getShapeForBlockType(var5);
if (var6 == null) {
class="kw">return false;
}
ConnectedBlockFaceTags var7 = var6.getFaceTags();
if (var7 == null) {
class="kw">return false;
}
RotationTuple var8 = var1.getLocalRotation(var4);
if (var8 == null) {
class="kw">return false;
}
Vector3i var9 = new Vector3i(var2).negate();
var8.undoRotationTo(var9);
var6.getRelativeRotation().undoRotationTo(var9);
boolean var10 = !var3.isEmpty();
for (String var12 : var3) {
if (!var7.contains(var9, var12)) {
var10 = false;
}
}
class="kw">return var10;
}
@Override
class="kw">public boolean check(ConnectedBlockRule.Context var1) {
boolean var2 = true;
for (Entry var4 : this.tags.getBlockFaceTags().entrySet()) {
Vector3ic var5 = var4.getKey();
HashSet var6 = var4.getValue();
boolean var7 = this.test(var1, var5, var6);
if (var7 && this.matchType == MatchType.Any) {
class="kw">return true;
}
if (!var7) {
var2 = false;
}
}
class="kw">return this.matchType == MatchType.All ? var2 : false;
}
@Override
class="kw">public com.hypixel.hytale.protocol.ConnectedBlockRule toPacket() {
FaceTagConnectedBlockRule var1 = new FaceTagConnectedBlockRule();
var1.positionOffset = new com.hypixel.hytale.protocol.Vector3i(this.positionOffset.x, this.positionOffset.y, this.positionOffset.z);
var1.faceTags = this.tags == null ? null : this.tags.toPacket();
var1.matchType = this.matchType == MatchType.All ? ConnectedBlockMatchType.All : ConnectedBlockMatchType.Any;
class="kw">return var1;
}
}