Reference<ResourceContainer*> ResourceSpawnImplementation::createResource(int units) {
   	Reference<ResourceContainer*> newResource = NULL;

   	newResource = (getZoneServer()->createObject(containerCRC, 2)).castTo<ResourceContainer*>();

   	if(newResource == NULL) {
   		error("Unable to create resource container, using generic.  CRC attempted was: " + String::valueOf(containerCRC));
   		print();
   		String genericContainer = "object/resource_container/organic_food.iff";
   		newResource = (getZoneServer()->createObject(genericContainer.hashCode(), 2)).castTo<ResourceContainer*>();
   	}

   	Locker locker(newResource);

   	newResource->setSpawnObject(_this.getReferenceUnsafeStaticCast());

   	if (units != 0)
   		newResource->setQuantity(units);

   	String resourceName = getFinalClass() + " (" + getName() + ")"; 
    	newResource->setCustomObjectName(resourceName, false);

   	++containerReferenceCount;

   	return newResource;
}
void ResourceSpawnImplementation::fillAttributeList(AttributeListMessage* alm,
		CreatureObject* object) {

		alm->insertAttribute("resource_class", getFinalClass());

		for (int i = 0; i < spawnAttributes.size(); ++i) {
			String attrib;
			int value = getAttributeAndValue(attrib, i);
			alm->insertAttribute(attrib, value);
		}

		alm->insertInt(0);
}
void ResourceSpawnImplementation::print() {
	info("**** Resource Data ****\n", true);
	info("Class: " + getFinalClass(), true);
	info("Name: " + spawnName, true);
	info("--------Classes--------", true);
	for (int i = 0; i < spawnClasses.size(); ++i)
		info(spawnClasses.get(i) + "(" + stfSpawnClasses.get(i) + ")", true);
	info("------Attributes-------", true);

	for (int i = 0; i < spawnAttributes.size(); ++i) {
		String attrib;
		int value = getAttributeAndValue(attrib, i);
		info(attrib + " " + value, true);
	}

	for (int i = 0; i < spawnMaps.size(); ++i) {
		info(spawnMaps.elementAt(i).getKey());
		spawnMaps.get(i).print();
	}

	info("***********************", true);
}