minor blueprint db tweaks

This commit is contained in:
Player 2013-11-18 17:58:03 +01:00
parent a035a15632
commit 26a65250f2
2 changed files with 41 additions and 1 deletions

View file

@ -75,6 +75,10 @@ public class Blueprint {
}
}
protected BlueprintMeta getMeta() {
return meta;
}
public BlueprintId getId() {
return meta.getId();
}

View file

@ -38,14 +38,39 @@ import net.minecraft.nbt.NBTTagCompound;
* @author CovertJaguar <http://www.railcraft.info/>
*/
public class BlueprintDatabase {
/**
* Initialize the blueprint database.
*
* @param configDir config directory to read the blueprints from.
*/
public static void init(File configDir) {
blueprintFolder = new File(new File(configDir, "buildcraft"), "blueprints");
if (!blueprintFolder.exists()) blueprintFolder.mkdirs();
loadIndex();
loadIndex(); // TODO: load index in a thread
}
// TODO: server: send ids to the client on connect, mby full meta
// TODO: client: send missing blueprints to the server after receiving the server's ids
/**
* Get a list with the metadata for all available blueprints.
*
* @return meta data iterable
*/
public static Iterable<BlueprintMeta> getList() {
return blueprintMetas.values();
}
/**
* Get a specific blueprint by id.
*
* @note The blueprint will be loaded as needed.
*
* @param id blueprint id
* @return blueprint or null if it can't be retrieved
*/
public static Blueprint get(BlueprintId id) {
Blueprint ret = blueprints.get(id);
@ -59,13 +84,24 @@ public class BlueprintDatabase {
return ret;
}
/**
* Add a blueprint to the database and save it to disk.
*
* @param blueprint blueprint to add
* @return id for the added blueprint
*/
public static BlueprintId add(Blueprint blueprint) {
BlueprintId id = save(blueprint);
blueprint.setId(id);
BlueprintMeta prevValue = blueprintMetas.put(id, blueprint.getMeta());
blueprints.put(id, blueprint);
if (prevValue != null) {
// TODO: duplicate entry, shouldn't happen
}
return id;
}