package jas.spawner.legacy.spawner.creature.handler.parsing.keys;
import jas.spawner.legacy.spawner.creature.handler.parsing.OptionalParser;
import jas.spawner.legacy.spawner.creature.handler.parsing.TypeValuePair;
import jas.spawner.legacy.spawner.creature.handler.parsing.settings.OptionalSettings.Operand;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import net.minecraft.block.Block;
import net.minecraft.entity.EntityLiving;
import net.minecraft.world.World;
import com.google.common.collect.ListMultimap;
public class KeyParserBlockFoot extends KeyParserBase {
public KeyParserBlockFoot(Key key) {
super(key, false, KeyType.CHAINABLE);
}
@Override
public boolean parseChainable(String parseable, ArrayList<TypeValuePair> parsedChainable,
ArrayList<Operand> operandvalue) {
String[] pieces = parseable.split(",");
Operand operand = parseOperand(pieces);
TypeValuePair typeValue = new TypeValuePair(key, OptionalParser.parseBlock(pieces));
if (typeValue.getValue() != null) {
parsedChainable.add(typeValue);
operandvalue.add(operand);
return true;
}
return false;
}
@Override
public boolean parseValue(String parseable, HashMap<String, Object> valueCache) {
throw new UnsupportedOperationException();
}
@Override
public boolean isValidLocation(World world, EntityLiving entity, int xCoord, int yCoord, int zCoord,
TypeValuePair typeValuePair, HashMap<String, Object> valueCache) {
@SuppressWarnings("unchecked")
ListMultimap<String, Integer> iDMetas = (ListMultimap<String, Integer>) typeValuePair.getValue();
Block blockID = world.getBlock(xCoord, yCoord - 1, zCoord);
int meta = world.getBlockMetadata(xCoord, yCoord - 1, zCoord);
boolean foundMatch = false;
for (String blockKey : iDMetas.keySet()) {
Block searchBlock = Block.getBlockFromName(blockKey);
if (searchBlock == null) {
continue;
}
List<Integer> metas = iDMetas.get(blockKey);
for (Integer metaValue : metas) {
if (blockID == searchBlock && metaValue.equals(meta)) {
foundMatch = true;
break;
}
}
}
return foundMatch ? false : true;
}
}