package openblocks.integration;
import com.google.common.collect.Maps;
import java.util.List;
import java.util.Map;
import net.minecraft.village.Village;
import openblocks.common.tileentity.TileEntityVillageHighlighter;
import openperipheral.api.adapter.IPeripheralAdapter;
import openperipheral.api.adapter.method.ReturnType;
import openperipheral.api.adapter.method.ScriptCallable;
import openperipheral.api.architecture.FeatureGroup;
@FeatureGroup("openblocks-village-highlighter")
public class AdapterVillageHighlighter implements IPeripheralAdapter {
@Override
public Class<?> getTargetClass() {
return TileEntityVillageHighlighter.class;
}
@Override
public String getSourceId() {
return "openblocks_village";
}
@SuppressWarnings({ "unchecked" })
@ScriptCallable(returnTypes = ReturnType.TABLE, description = "Get information about the villages this block is inside")
public Map<?, ?> getVillages(TileEntityVillageHighlighter vh) {
Map<Integer, Object> map = Maps.newHashMap();
int i = 1;
for (Village village : (List<Village>)vh.getWorldObj().villageCollectionObj.getVillageList()) {
if (village.isInRange(vh.xCoord, vh.yCoord, vh.zCoord)) {
Map<String, Object> villageMap = Maps.newHashMap();
villageMap.put("x", village.getCenter().posX - vh.xCoord);
villageMap.put("y", village.getCenter().posY - vh.yCoord);
villageMap.put("z", village.getCenter().posZ - vh.zCoord);
villageMap.put("doors", village.getNumVillageDoors());
villageMap.put("villagers", village.getNumVillagers());
villageMap.put("radius", village.getVillageRadius());
map.put(i++, villageMap);
}
}
return map;
}
}