Merge branch 'master-MC1.7.10' of github.com:MightyPirates/OpenComputers into master-MC1.8

Conflicts:
	src/main/scala/li/cil/oc/util/ItemCosts.scala
This commit is contained in:
Florian Nücke 2015-03-01 19:54:16 +01:00
commit 1f0a00cf35
4 changed files with 24 additions and 21 deletions

View File

@ -168,7 +168,7 @@ object SaveHandler {
val chunk = e.getChunk.getChunkCoordIntPair val chunk = e.getChunk.getChunkCoordIntPair
val dimPath = new io.File(path, dimension.toString) val dimPath = new io.File(path, dimension.toString)
val chunkPath = new io.File(dimPath, s"${chunk.chunkXPos}.${chunk.chunkZPos}") val chunkPath = new io.File(dimPath, s"${chunk.chunkXPos}.${chunk.chunkZPos}")
if (chunkPath.exists && chunkPath.isDirectory) { if (chunkPath.exists && chunkPath.isDirectory && chunkPath.list() != null) {
for (file <- chunkPath.listFiles() if System.currentTimeMillis() - file.lastModified() > TimeToHoldOntoOldSaves) file.delete() for (file <- chunkPath.listFiles() if System.currentTimeMillis() - file.lastModified() > TimeToHoldOntoOldSaves) file.delete()
} }
saveData.get(dimension) match { saveData.get(dimension) match {
@ -209,7 +209,7 @@ object SaveHandler {
// But that's really not something I'm bothered by, it's a fallback. // But that's really not something I'm bothered by, it's a fallback.
def recurse(file: File) { def recurse(file: File) {
file.setLastModified(System.currentTimeMillis()) file.setLastModified(System.currentTimeMillis())
if (file.isDirectory) file.listFiles().foreach(recurse) if (file.exists() && file.isDirectory && file.list() != null) file.listFiles().foreach(recurse)
} }
recurse(statePath) recurse(statePath)
} }

View File

@ -42,7 +42,7 @@ trait Buffered extends OutputStreamFileSystem {
for (child <- directory.listFiles() if isValidFilename(child.getName)) { for (child <- directory.listFiles() if isValidFilename(child.getName)) {
val childPath = path + child.getName val childPath = path + child.getName
val childFile = new io.File(directory, child.getName) val childFile = new io.File(directory, child.getName)
if (child.isDirectory) { if (child.exists() && child.isDirectory && child.list() != null) {
recurse(childPath + "/", childFile) recurse(childPath + "/", childFile)
} }
else if (!exists(childPath) || !isDirectory(childPath)) { else if (!exists(childPath) || !isDirectory(childPath)) {

View File

@ -3,7 +3,7 @@ package li.cil.oc.server.fs
import java.io import java.io
trait FileInputStreamFileSystem extends InputStreamFileSystem { trait FileInputStreamFileSystem extends InputStreamFileSystem {
protected val root: io.File protected def root: io.File
// ----------------------------------------------------------------------- // // ----------------------------------------------------------------------- //
@ -36,7 +36,7 @@ trait FileInputStreamFileSystem extends InputStreamFileSystem {
override def list(path: String) = new io.File(root, path) match { override def list(path: String) = new io.File(root, path) match {
case file if file.exists() && file.isFile => Array(file.getName) case file if file.exists() && file.isFile => Array(file.getName)
case directory if directory.exists() && directory.isDirectory => case directory if directory.exists() && directory.isDirectory && directory.list() != null =>
directory.listFiles().map(file => if (file.isDirectory) file.getName + "/" else file.getName) directory.listFiles().map(file => if (file.isDirectory) file.getName + "/" else file.getName)
case _ => throw new io.FileNotFoundException("no such file or directory") case _ => throw new io.FileNotFoundException("no such file or directory")
} }

View File

@ -101,24 +101,27 @@ object ItemCosts {
} }
else { else {
val recipes = CraftingManager.getInstance.getRecipeList.map(_.asInstanceOf[IRecipe]) val recipes = CraftingManager.getInstance.getRecipeList.map(_.asInstanceOf[IRecipe])
val recipe = recipes.find(recipe => recipe.getRecipeOutput != null && fuzzyEquals(stack, recipe.getRecipeOutput)) if (recipes == null) Iterable((stack, 1.0))
val (ingredients, output) = recipe match { else {
case Some(recipe: ShapedRecipes) => (recipe.recipeItems.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize) val recipe = recipes.filter(_ != null).find(recipe => recipe.getRecipeOutput != null && fuzzyEquals(stack, recipe.getRecipeOutput))
case Some(recipe: ShapelessRecipes) => (recipe.recipeItems.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize) val (ingredients, output) = recipe match {
case Some(recipe: ShapedOreRecipe) => (recipe.getInput.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize) case Some(recipe: ShapedRecipes) => (recipe.recipeItems.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize)
case Some(recipe: ShapelessOreRecipe) => (recipe.getInput.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize) case Some(recipe: ShapelessRecipes) => (recipe.recipeItems.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize)
case _ => FurnaceRecipes.instance.getSmeltingList.asInstanceOf[util.Map[ItemStack, ItemStack]].find { case Some(recipe: ShapedOreRecipe) => (recipe.getInput.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize)
case (_, value) => fuzzyEquals(stack, value) case Some(recipe: ShapelessOreRecipe) => (recipe.getInput.flatMap(accumulate(_, path :+ stack)).toIterable, recipe.getRecipeOutput.stackSize)
} match { case _ => FurnaceRecipes.instance.getSmeltingList.asInstanceOf[util.Map[ItemStack, ItemStack]].find {
case Some((rein, raus)) => (accumulate(rein, path :+ stack), raus.stackSize) case (_, value) => fuzzyEquals(stack, value)
case _ => (Iterable((stack, 1.0)), 1) } match {
case Some((rein, raus)) => (accumulate(rein, path :+ stack), raus.stackSize)
case _ => (Iterable((stack, 1.0)), 1)
}
} }
val scaled = deflate(ingredients.map {
case (ingredient, count) => (ingredient.copy(), count / output)
}).toArray.sortBy(_._1.getUnlocalizedName)
cache += new ItemStackWrapper(stack.copy()) -> scaled
scaled
} }
val scaled = deflate(ingredients.map {
case (ingredient, count) => (ingredient.copy(), count / output)
}).toArray.sortBy(_._1.getUnlocalizedName)
cache += new ItemStackWrapper(stack.copy()) -> scaled
scaled
} }
} }
case list: java.util.List[ItemStack]@unchecked if !list.isEmpty => case list: java.util.List[ItemStack]@unchecked if !list.isEmpty =>