CarryOn/src/main/java/tschipp/carryon/common/helper/StringParser.java
2017-10-01 21:24:53 +02:00

159 lines
3.4 KiB
Java

package tschipp.carryon.common.helper;
import javax.annotation.Nullable;
import org.apache.logging.log4j.Level;
import net.minecraft.block.Block;
import net.minecraft.block.state.IBlockState;
import net.minecraft.item.Item;
import net.minecraft.item.ItemStack;
import net.minecraft.nbt.JsonToNBT;
import net.minecraft.nbt.NBTException;
import net.minecraft.nbt.NBTTagCompound;
import tschipp.carryon.CarryOn;
public class StringParser
{
@Nullable
public static Block getBlock(String string)
{
if(string == null)
return null;
NBTTagCompound tag = getTagCompound(string);
if (tag != null)
string = string.replace(tag.toString(), "");
if (string.contains(";"))
string = string.replace(string.substring(string.indexOf(";")), "");
Block block = Block.getBlockFromName(string);
if (block == null)
new InvalidConfigException("Block Parsing Error. Invalid Name: " + string).printException();
return block;
}
public static int getMeta(String string)
{
if(string == null)
return 0;
NBTTagCompound tag = getTagCompound(string);
if (tag != null)
string = string.replace(tag.toString(), "");
if (string.contains(";"))
{
int meta = 0;
try
{
meta = Integer.parseInt(string.substring(string.indexOf(";")).replace(";", ""));
}
catch (Exception e)
{
new InvalidConfigException("Meta Parsing Error at: " + string + " : " + e.getMessage()).printException();
}
return meta;
}
return 0;
}
@Nullable
public static IBlockState getBlockState(String string)
{
if(string == null)
return null;
NBTTagCompound tag = getTagCompound(string);
if (tag != null)
string = string.replace(tag.toString(), "");
int meta = getMeta(string);
if (meta == 0)
{
Block block = getBlock(string);
if(block != null)
return block.getDefaultState();
}
try
{
return getBlock(string).getStateFromMeta(meta);
}
catch (Exception e)
{
new InvalidConfigException("Blockstate parsing Exception at: " + string + " : " + e.getMessage()).printException();
return null;
}
}
@Nullable
public static Item getItem(String string)
{
if(string == null)
return null;
NBTTagCompound tag = getTagCompound(string);
if (tag != null)
string = string.replace(tag.toString(), "");
if (string.contains(";"))
string = string.replace(string.substring(string.indexOf(";")), "");
return Item.getByNameOrId(string);
}
public static ItemStack getItemStack(String string)
{
if(string == null)
return null;
Item item = getItem(string);
if(item == null)
return null;
ItemStack stack = new ItemStack(item, 1, getMeta(string));
NBTTagCompound tag = getTagCompound(string);
if (tag != null)
stack.setTagCompound(tag);
return stack;
}
@Nullable
public static NBTTagCompound getTagCompound(String string)
{
NBTTagCompound tag = null;
if(string == null)
return null;
if (string.contains("{"))
{
if (!string.contains("}"))
new InvalidConfigException("Missing } at : " + string).printException();
String nbt = string.substring(string.indexOf("{"));
string = string.replace(nbt, "");
try
{
tag = JsonToNBT.getTagFromJson(nbt);
}
catch (NBTException e)
{
new InvalidConfigException("Error while parsing NBT: " + e.getMessage()).printException();
return null;
}
}
else if (string.contains("}"))
new InvalidConfigException("Missing { at : " + string).printException();
return tag;
}
}