fix MaterialSet issues

This commit is contained in:
dfsek
2021-07-05 01:14:34 -07:00
parent 1a50060ff0
commit d8eeeded60
7 changed files with 54 additions and 61 deletions

View File

@@ -1,12 +1,43 @@
package com.dfsek.terra.api.util;
import com.dfsek.terra.api.block.BlockType;
import com.dfsek.terra.api.block.state.BlockState;
import java.io.Serial;
import java.util.AbstractSet;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public interface MaterialSet extends Set<BlockType> {
static MaterialSet empty() {
return (MaterialSet) (Object) Collections.emptySet();
public class MaterialSet extends HashSet<BlockType> {
@Serial
private static final long serialVersionUID = 3056512763631017301L;
public static MaterialSet singleton(BlockType material) {
MaterialSet set = new MaterialSet();
set.add(material);
return set;
}
public static MaterialSet get(BlockType... materials) {
MaterialSet set = new MaterialSet();
set.addAll(Arrays.asList(materials));
return set;
}
public static MaterialSet get(BlockState... materials) {
MaterialSet set = new MaterialSet();
Arrays.stream(materials).forEach(set::add);
return set;
}
public static MaterialSet empty() {
return new MaterialSet();
}
private void add(BlockState data) {
add(data.getBlockType());
}
}