Mask class
Пакет: com.hypixel.hytale.server.worldgen.util.condition
Файл: com/hypixel/hytale/server/worldgen/util/condition/BlockMaskCondition.java
Поля (3)
| Модификаторы | Тип | Имя |
|---|---|---|
|
private final BlockMaskCondition.MaskEntry[] |
entries |
|
private final boolean |
matchEmpty |
|
BlockMaskCondition.Mask |
var2 |
Методы (7)
| Модификаторы | Возврат | Сигнатура |
|---|---|---|
|
public boolean |
equalspublic boolean equals(@Nullable Object var1) |
|
|
for for(BlockMaskCondition.MaskEntry var6 : this.entries) |
|
public int |
hashCodepublic int hashCode() |
|
|
if if(this == var1) |
|
public boolean |
shouldReplacepublic boolean shouldReplace(int var1, int var2) |
abstract |
|
this this(false, var1) |
|
public String |
toStringpublic String toString() |
Исходный код
Показать/скрыть
class="kw">package com.hypixel.hytale.server.worldgen.util.condition;
class="kw">import com.hypixel.hytale.math.util.MathUtil;
class="kw">import com.hypixel.hytale.server.worldgen.util.ResolvedBlockArray;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMap;
class="kw">import it.unimi.dsi.fastutil.longs.Long2ObjectMaps;
class="kw">import java.util.Arrays;
class="kw">import java.util.Objects;
class="kw">import javax.annotation.Nonnull;
class="kw">import javax.annotation.Nullable;
class="kw">public class BlockMaskCondition {
class="kw">public class="kw">static class="kw">final BlockMaskCondition.Mask DEFAULT_MASK = new BlockMaskCondition.Mask(true, new BlockMaskCondition.MaskEntry[0]);
class="kw">public class="kw">static class="kw">final BlockMaskCondition DEFAULT_TRUE = new BlockMaskCondition();
class="kw">public class="kw">static class="kw">final BlockMaskCondition DEFAULT_FALSE = new BlockMaskCondition();
@Nonnull
class="kw">private BlockMaskCondition.Mask defaultMask = DEFAULT_MASK;
@Nonnull
class="kw">private Long2ObjectMap<BlockMaskCondition.Mask> specificMasks = Long2ObjectMaps.emptyMap();
class="kw">public BlockMaskCondition() {
}
class="kw">public void set(@Nonnull BlockMaskCondition.Mask var1, @Nonnull Long2ObjectMap<BlockMaskCondition.Mask> var2) {
this.defaultMask = var1;
this.specificMasks = var2;
}
class="kw">public boolean eval(int var1, int var2, int var3, int var4) {
BlockMaskCondition.Mask var5 = (BlockMaskCondition.Mask)this.specificMasks.getOrDefault(MathUtil.packLong(var3, var4), this.defaultMask);
class="kw">return var5.shouldReplace(var1, var2);
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
} else if (var1 != null && this.getClass() == var1.getClass()) {
BlockMaskCondition var2 = (BlockMaskCondition)var1;
class="kw">return !this.defaultMask.equals(var2.defaultMask) ? false : Objects.equals(this.specificMasks, var2.specificMasks);
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = this.defaultMask.hashCode();
class="kw">return 31 * var1 + (this.specificMasks != null ? this.specificMasks.hashCode() : 0);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "BlockMaskCondition{defaultMask=" + this.defaultMask + ", specificMasks=" + this.specificMasks + "}";
}
class="kw">public class="kw">static class Mask {
class="kw">private class="kw">final boolean matchEmpty;
class="kw">private class="kw">final BlockMaskCondition.MaskEntry[] entries;
class="kw">public Mask(@Nonnull BlockMaskCondition.MaskEntry[] var1) {
this(false, var1);
}
class="kw">private Mask(boolean var1, @Nonnull BlockMaskCondition.MaskEntry[] var2) {
this.entries = var2;
this.matchEmpty = var1;
}
class="kw">public boolean shouldReplace(int var1, int var2) {
for (BlockMaskCondition.MaskEntry var6 : this.entries) {
if (var6.shouldHandle(var1, var2)) {
class="kw">return var6.shouldReplace();
}
}
class="kw">return this.matchEmpty && (var1 == 0 || var2 == 0);
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
} else if (var1 != null && this.getClass() == var1.getClass()) {
BlockMaskCondition.Mask var2 = (BlockMaskCondition.Mask)var1;
class="kw">return Arrays.equals(this.entries, var2.entries);
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
class="kw">return Arrays.hashCode(this.entries);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "Mask{entries=" + Arrays.toString(this.entries) + "}";
}
}
class="kw">public class="kw">static class MaskEntry {
class="kw">public class="kw">static class="kw">final BlockMaskCondition.MaskEntry WILDCARD_TRUE = new BlockMaskCondition.MaskEntry(true, true);
class="kw">public class="kw">static class="kw">final BlockMaskCondition.MaskEntry WILDCARD_FALSE = new BlockMaskCondition.MaskEntry(true, false);
class="kw">private ResolvedBlockArray blocks = ResolvedBlockArray.EMPTY;
class="kw">private class="kw">final boolean any;
class="kw">private boolean replace;
class="kw">public MaskEntry() {
this(false, false);
}
class="kw">public MaskEntry(boolean var1, boolean var2) {
this.any = var1;
this.replace = var2;
}
class="kw">public void set(ResolvedBlockArray var1, boolean var2) {
this.blocks = var1;
this.replace = var2;
}
class="kw">public boolean shouldHandle(int var1, int var2) {
class="kw">return this.any || this.blocks.contains(var1, var2);
}
class="kw">public boolean shouldReplace() {
class="kw">return this.replace;
}
@Override
class="kw">public boolean equals(@Nullable Object var1) {
if (this == var1) {
class="kw">return true;
}
if (var1 != null && this.getClass() == var1.getClass()) {
BlockMaskCondition.MaskEntry var2 = (BlockMaskCondition.MaskEntry)var1;
if (this.any != var2.any) {
class="kw">return false;
} else {
class="kw">return this.replace != var2.replace ? false : this.blocks.equals(var2.blocks);
}
} else {
class="kw">return false;
}
}
@Override
class="kw">public int hashCode() {
int var1 = this.blocks.hashCode();
var1 = 31 * var1 + (this.any ? 1 : 0);
class="kw">return 31 * var1 + (this.replace ? 1 : 0);
}
@Nonnull
@Override
class="kw">public String toString() {
class="kw">return "MaskEntry{blocks=" + this.blocks + ", replace=" + this.replace + "}";
}
}
}