38 lines
1.6 KiB
Java
38 lines
1.6 KiB
Java
package WayofTime.bloodmagic.util;
|
|
|
|
import net.minecraft.block.Block;
|
|
import net.minecraft.block.properties.IProperty;
|
|
import net.minecraft.block.state.BlockStateContainer;
|
|
import net.minecraft.block.state.IBlockState;
|
|
import net.minecraft.init.Blocks;
|
|
import net.minecraft.util.ResourceLocation;
|
|
import net.minecraftforge.fml.common.registry.ForgeRegistries;
|
|
|
|
public class StateUtil {
|
|
public static IBlockState parseState(String state) {
|
|
if (state.contains("[")) {
|
|
String[] split = state.split("\\[");
|
|
split[1] = split[1].substring(0, split[1].lastIndexOf("]")); // Make sure brackets are removed from state
|
|
|
|
Block block = ForgeRegistries.BLOCKS.getValue(new ResourceLocation(split[0]));
|
|
if (block == Blocks.AIR)
|
|
return block.getDefaultState();
|
|
|
|
BlockStateContainer blockState = block.getBlockState();
|
|
IBlockState returnState = blockState.getBaseState();
|
|
|
|
// Force our values into the state
|
|
String[] stateValues = split[1].split(","); // Splits up each value
|
|
for (String value : stateValues) {
|
|
String[] valueSplit = value.split("=");
|
|
IProperty property = blockState.getProperty(valueSplit[0]);
|
|
if (property != null)
|
|
returnState = returnState.withProperty(property, (Comparable) property.parseValue(valueSplit[1]).get());
|
|
}
|
|
|
|
return returnState;
|
|
} else {
|
|
return ForgeRegistries.BLOCKS.getValue(new ResourceLocation(state)).getDefaultState();
|
|
}
|
|
}
|
|
} |