ErodeOperation class
Пакет: com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential
Файл: com/hypixel/hytale/builtin/buildertools/scriptedbrushes/operations/sequential/ErodeOperation.java
extends: SequenceBrushOperation
Поля (19)
| Модификаторы | Тип | Имя |
|---|---|---|
final |
BuilderCodec<ErodeOperation> |
CODEC |
|
public final int |
erosionFaces |
|
public final int |
erosionIterations |
|
public final int |
fillFaces |
|
public final int |
fillIterations |
|
int |
var11 |
|
int |
var12 |
|
int |
var13 |
|
|
var13 |
|
int |
var14 |
|
|
var14 |
|
IntIterator |
var15 |
|
int |
var16 |
|
int |
var17 |
|
int |
var5 |
|
int |
var5 |
|
int |
var6 |
|
int |
var6 |
|
Int2IntMap |
var7 |
Методы (15)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
|
ErodePreset ErodePreset(int nullxx, int nullxxx, int nullxxxx, int nullxxxxx) |
abstract |
|
FloatClean FloatClean(6, 1, 6, 1) |
|
|
for for(Vector3i var11 : FACES_TO_CHECK) |
|
|
for for(Vector3i var10 : FACES_TO_CHECK) |
|
|
if if(this.iterationIndex < this.erodePresetArg.erosionIterations) |
|
|
if if(var5 == 0) |
|
|
if if(var12 != 0) |
|
|
if if(var6 >= this.erodePresetArg.fillFaces) |
|
|
if if(var17 > var14) |
|
|
if if(var5 != 0) |
|
|
if if(var11 == 0) |
|
|
if if(var6 >= this.erodePresetArg.erosionFaces) |
private |
void |
iterateErosionvoid iterateErosion(@Nonnull BrushConfigEditStore var1, int var2, int var3, int var4) |
private |
void |
iterateFillvoid iterateFill(@Nonnull BrushConfigEditStore var1, int var2, int var3, int var4) |
abstract |
|
super super("erode", "Erodes blocks following a preset", true) |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.sequential;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfig;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfigCommandExecutor;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.BrushConfigEditStore;
class="kw">import com.hypixel.hytale.builtin.buildertools.scriptedbrushes.operations.system.SequenceBrushOperation;
class="kw">import com.hypixel.hytale.builtin.buildertools.utils.Material;
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.component.ComponentAccessor;
class="kw">import com.hypixel.hytale.component.Ref;
class="kw">import com.hypixel.hytale.server.core.universe.world.storage.EntityStore;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntMap;
class="kw">import it.unimi.dsi.fastutil.ints.Int2IntOpenHashMap;
class="kw">import it.unimi.dsi.fastutil.ints.IntIterator;
class="kw">import javax.annotation.Nonnull;
class="kw">import org.joml.Vector3i;
class="kw">public class ErodeOperation class="kw">extends SequenceBrushOperation {
class="kw">public class="kw">static class="kw">final BuilderCodec<ErodeOperation> CODEC = BuilderCodec.builder(ErodeOperation.class, ErodeOperation::new)
.append(
new KeyedCodec<>("ErodePreset", new EnumCodec<>(ErodeOperation.ErodePreset.class)),
(var0, var1) -> var0.erodePresetArg = var1,
var0 -> var0.erodePresetArg
)
.documentation("An erosion preset to use with the operation")
.add()
.documentation("Erodes blocks following a preset")
.build();
class="kw">private ErodeOperation.ErodePreset erodePresetArg = ErodeOperation.ErodePreset.Default;
class="kw">private class="kw">static class="kw">final Vector3i[] FACES_TO_CHECK = new Vector3i[]{
new Vector3i(0, -1, 0), new Vector3i(0, 1, 0), new Vector3i(0, 0, 1), new Vector3i(0, 0, -1), new Vector3i(1, 0, 0), new Vector3i(-1, 0, 0)
};
int iterationIndex;
class="kw">public ErodeOperation() {
super("erode", "Erodes blocks following a preset", true);
}
@Override
class="kw">public void modifyBrushConfig(
@Nonnull Ref<EntityStore> var1, @Nonnull BrushConfig var2, @Nonnull BrushConfigCommandExecutor var3, @Nonnull ComponentAccessor<EntityStore> var4
) {
}
@Override
class="kw">public boolean modifyBlocks(
Ref<EntityStore> var1,
BrushConfig var2,
BrushConfigCommandExecutor var3,
@Nonnull BrushConfigEditStore var4,
int var5,
int var6,
int var7,
ComponentAccessor<EntityStore> var8
) {
if (this.iterationIndex < this.erodePresetArg.erosionIterations) {
this.iterateErosion(var4, var5, var6, var7);
} else {
this.iterateFill(var4, var5, var6, var7);
}
class="kw">return true;
}
@Override
class="kw">public void beginIterationIndex(int var1) {
this.iterationIndex = var1;
}
@Override
class="kw">public int getNumModifyBlockIterations() {
class="kw">return this.erodePresetArg.erosionIterations + this.erodePresetArg.fillIterations;
}
class="kw">private void iterateFill(@Nonnull BrushConfigEditStore var1, int var2, int var3, int var4) {
int var5 = var1.getBlock(var2, var3, var4);
if (var5 == 0) {
int var6 = 0;
Int2IntMap var7 = new Int2IntOpenHashMap();
for (Vector3i var11 : FACES_TO_CHECK) {
int var12 = var1.getBlock(var2 + var11.x, var3 + var11.y, var4 + var11.z);
if (var12 != 0) {
var6++;
var7.put(var12, var7.getOrDefault(var12, 0) + 1);
}
}
if (var6 >= this.erodePresetArg.fillFaces) {
int var13 = var5;
int var14 = 0;
IntIterator var15 = var7.keySet().iterator();
while (var15.hasNext()) {
int var16 = (Integer)var15.next();
int var17 = var7.get(var16);
if (var17 > var14) {
var13 = var16;
var14 = var17;
}
}
var1.setMaterialWithFiller(var2, var3, var4, Material.block(var13));
}
}
}
class="kw">private void iterateErosion(@Nonnull BrushConfigEditStore var1, int var2, int var3, int var4) {
int var5 = var1.getBlock(var2, var3, var4);
if (var5 != 0) {
int var6 = 0;
for (Vector3i var10 : FACES_TO_CHECK) {
int var11 = var1.getBlock(var2 + var10.x, var3 + var10.y, var4 + var10.z);
if (var11 == 0) {
var6++;
}
}
if (var6 >= this.erodePresetArg.erosionFaces) {
var1.setMaterialWithFiller(var2, var3, var4, Material.EMPTY);
}
}
}
class="kw">public enum ErodePreset {
Default(0, 1, 0, 1),
Melt(2, 1, 5, 1),
Fill(5, 1, 2, 1),
Smooth(3, 1, 3, 1),
Lift(6, 0, 1, 1),
FloatClean(6, 1, 6, 1);
class="kw">public class="kw">final int erosionFaces;
class="kw">public class="kw">final int erosionIterations;
class="kw">public class="kw">final int fillFaces;
class="kw">public class="kw">final int fillIterations;
ErodePreset(int nullxx, int nullxxx, int nullxxxx, int nullxxxxx) {
this.erosionFaces = nullxx;
this.erosionIterations = nullxxx;
this.fillFaces = nullxxxx;
this.fillIterations = nullxxxxx;
}
}
}