CustomTemplateConnectedBlockRuleSet class
Пакет: com.hypixel.hytale.server.core.universe.world.connectedblocks
Файл: com/hypixel/hytale/server/core/universe/world/connectedblocks/CustomTemplateConnectedBlockRuleSet.java
extends: ConnectedBlockRuleSet
Поля (8)
| Модификаторы | Тип | Имя |
|---|---|---|
|
CustomConnectedBlockTemplateAsset |
var1 |
|
int |
var10 |
|
Set |
var11 |
|
String |
var5 |
|
BlockPattern |
var6 |
|
Integer[] |
var7 |
|
CustomConnectedBlockTemplateAsset |
var7 |
|
int |
var8 |
Методы (1)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
for for(int var9 = 0; var9 < var8; var9++) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.core.universe.world.connectedblocks;
class="kw">import com.hypixel.hytale.assetstore.map.BlockTypeAssetMap;
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.map.MapCodec;
class="kw">import com.hypixel.hytale.server.core.asset.type.blocktype.config.BlockType;
class="kw">import com.hypixel.hytale.server.core.prefab.selection.mask.BlockPattern;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.ChunkStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.Object2ObjectOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.objects.ObjectOpenHashSet;
class="kw">import java.util.HashMap;
class="kw">import java.util.Map;
class="kw">import java.util.Optional;
class="kw">import java.util.Set;
class="kw">import java.util.Map.Entry;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">import org.joml.Vector3ic;
class="kw">public class CustomTemplateConnectedBlockRuleSet class="kw">extends ConnectedBlockRuleSet {
@Nonnull
class="kw">public class="kw">static class="kw">final BuilderCodec<CustomTemplateConnectedBlockRuleSet> CODEC = BuilderCodec.builder(
CustomTemplateConnectedBlockRuleSet.class, CustomTemplateConnectedBlockRuleSet::new
)
.append(new KeyedCodec<>("TemplateShapeAssetId", Codec.STRING), (var0, var1) -> var0.shapeAssetId = var1, var0 -> var0.shapeAssetId)
.addValidator(CustomConnectedBlockTemplateAsset.VALIDATOR_CACHE.getValidator())
.documentation("The name of a ConnectedBlockTemplateAsset asset")
.add()
.<Map>append(
new KeyedCodec<>("TemplateShapeBlockPatterns", new MapCodec<>(BlockPattern.CODEC, HashMap::new), true),
(var0, var1) -> var0.shapeNameToBlockPatternMap = var1,
var0 -> var0.shapeNameToBlockPatternMap
)
.documentation("You must specify all shapes as a BlockPattern. The shapes are as outlined in the keys of the ShapeTemplateAsset's map.")
.add()
.build();
class="kw">private String shapeAssetId;
@Nonnull
class="kw">private Map<String, BlockPattern> shapeNameToBlockPatternMap = new Object2ObjectOpenHashMap();
@Nonnull
class="kw">private class="kw">final Int2ObjectMap<Set<String>> shapesPerBlockType = new Int2ObjectOpenHashMap();
class="kw">public CustomTemplateConnectedBlockRuleSet() {
}
@Nonnull
class="kw">public Map<String, BlockPattern> getShapeNameToBlockPatternMap() {
class="kw">return this.shapeNameToBlockPatternMap;
}
@Override
class="kw">public void updateCachedBlockTypes(@Nonnull BlockType var1, @Nonnull BlockTypeAssetMap<String, BlockType> var2) {
super.updateCachedBlockTypes(var1, var2);
for (Entry var4 : this.shapeNameToBlockPatternMap.entrySet()) {
String var5 = var4.getKey();
BlockPattern var6 = var4.getValue();
Integer[] var7 = var6.getResolvedKeys();
int var8 = var7.length;
for (int var9 = 0; var9 < var8; var9++) {
int var10 = var7[var9];
Set var11 = (Set<String>)this.shapesPerBlockType.computeIfAbsent(var10, var0 -> new ObjectOpenHashSet());
var11.add(var5);
}
}
}
@Nonnull
class="kw">public Set<String> getShapesForBlockType(int var1) {
class="kw">return (Set<String>)this.shapesPerBlockType.getOrDefault(var1, Set.of());
}
@Nullable
class="kw">public CustomConnectedBlockTemplateAsset getShapeTemplateAsset() {
class="kw">return CustomConnectedBlockTemplateAsset.getAssetMap().getAsset(this.shapeAssetId);
}
@Override
class="kw">public boolean onlyUpdateOnPlacement() {
CustomConnectedBlockTemplateAsset var1 = this.getShapeTemplateAsset();
class="kw">return var1 != null && var1.isDontUpdateAfterInitialPlacement();
}
@Nonnull
@Override
class="kw">public Optional<ConnectedBlocksUtil.ConnectedBlockResult> getConnectedBlockType(
@Nonnull ChunkStore var1, @Nonnull Vector3ic var2, @Nonnull BlockType var3, int var4, @Nonnull Vector3ic var5, boolean var6
) {
CustomConnectedBlockTemplateAsset var7 = this.getShapeTemplateAsset();
class="kw">return var7 == null ? Optional.empty() : var7.getConnectedBlockType(var1, var2, this, var3, var4, var5, true, var6);
}
}