hytale-server/com/hypixel/hytale/builtin/hytalegenerator/BlockMask.java

49 lines
1.6 KiB
Java

package com.hypixel.hytale.builtin.hytalegenerator;
import com.hypixel.hytale.builtin.hytalegenerator.material.Material;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.Nonnull;
public class BlockMask {
private MaterialSet skippedBlocks = new MaterialSet();
private MaterialSet defaultMask = new MaterialSet();
private final List<MaterialSet> sourceBlocks = new ArrayList<>(0);
private final List<MaterialSet> destinationBlocks = new ArrayList<>(0);
public boolean canPlace(@Nonnull Material material) {
return !this.skippedBlocks.test(material);
}
public boolean canPlace(int materialHash) {
return !this.skippedBlocks.test(materialHash);
}
public boolean canReplace(Material source, Material destination) {
return this.canReplace(source.hashMaterialIds(), destination.hashMaterialIds());
}
public boolean canReplace(int sourceHash, int destinationHash) {
for (int i = 0; i < this.sourceBlocks.size(); i++) {
if (this.sourceBlocks.get(i).test(sourceHash)) {
return this.destinationBlocks.get(i).test(destinationHash);
}
}
return !this.defaultMask.test(destinationHash);
}
public void setSkippedBlocks(@Nonnull MaterialSet materialSet) {
this.skippedBlocks = materialSet;
}
public void putBlockMaskEntry(@Nonnull MaterialSet source, @Nonnull MaterialSet destination) {
this.sourceBlocks.add(source);
this.destinationBlocks.add(destination);
}
public void setDefaultMask(@Nonnull MaterialSet materialSet) {
this.defaultMask = materialSet;
}
}