Several mimic fixes, with actually cleaned up commit history. (#1379)
* Reimplemented a lot of mimic logic and did a first run of changing how mimics store their states. * Finished removing all metadata calls for blocks replaced by mimics. * Update EntityMimic.java * Update ItemBlockMimic.java * Update TileMimic.java * How did I even replace a semicolon with a slash. * Changed all tabs to 4 spaces. Changed Serializer to StateUtil * Fixed spacing again, hopefully for the last time
This commit is contained in:
parent
7954d04421
commit
ebfd8ce9a3
6 changed files with 238 additions and 52 deletions
37
src/main/java/WayofTime/bloodmagic/util/StateUtil.java
Normal file
37
src/main/java/WayofTime/bloodmagic/util/StateUtil.java
Normal file
|
@ -0,0 +1,37 @@
|
|||
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 blockInfo)
|
||||
{
|
||||
String[] split = blockInfo.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])); // Find the block
|
||||
if (block == Blocks.AIR)
|
||||
return Blocks.AIR.getDefaultState(); // The block is air, so we're looking at invalid data
|
||||
|
||||
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("="); // Separates property and value
|
||||
IProperty property = blockState.getProperty(valueSplit[0]);
|
||||
if (property != null)
|
||||
returnState = returnState.withProperty(property, (Comparable) property.parseValue(valueSplit[1]).get()); // Force the property into the state
|
||||
}
|
||||
|
||||
return returnState;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue