YuRaNnNzZZ — Сегодня, в 11:46
а какой именно стак то блять
This commit is contained in:
parent
62df3558e7
commit
b3863a2820
@ -449,15 +449,19 @@ object MatterManager {
|
||||
}
|
||||
|
||||
stream.map {
|
||||
ResolvedRecipe(
|
||||
it.ingredients.stream()
|
||||
.filter { !it.isActuallyEmpty }
|
||||
.map { it.items.stream().map(::RecipeEntry) },
|
||||
ImmutableStack(it.getResultItem(server.registryAccess())),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
)
|
||||
try {
|
||||
ResolvedRecipe(
|
||||
it.ingredients.stream()
|
||||
.filter { !it.isActuallyEmpty }
|
||||
.map { it.items.stream().map(::RecipeEntry) },
|
||||
ImmutableStack(it.getResultItem(server.registryAccess())),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
)
|
||||
} catch(err: Throwable) {
|
||||
throw RuntimeException("Processing simple recipe ${it.id}", err)
|
||||
}
|
||||
}
|
||||
.filter {
|
||||
if (it.inputs.isEmpty()) {
|
||||
@ -491,79 +495,83 @@ object MatterManager {
|
||||
}
|
||||
|
||||
stream.map {
|
||||
// avoid reality snap when recipe has no output
|
||||
val resultItem = it.getResultItem(server.registryAccess())
|
||||
try {
|
||||
// avoid reality snap when recipe has no output
|
||||
val resultItem = it.getResultItem(server.registryAccess())
|
||||
|
||||
if (resultItem.isEmpty) {
|
||||
null
|
||||
} else {
|
||||
var width: Int
|
||||
var height: Int
|
||||
|
||||
if (it is IShapedRecipe<*>) {
|
||||
width = it.recipeWidth
|
||||
height = it.recipeHeight
|
||||
if (resultItem.isEmpty) {
|
||||
null
|
||||
} else {
|
||||
width = 3
|
||||
height = 3
|
||||
}
|
||||
var width: Int
|
||||
var height: Int
|
||||
|
||||
if (width * height < it.ingredients.size) {
|
||||
width = it.ingredients.size.coerceAtLeast(width)
|
||||
height = it.ingredients.size.coerceAtLeast(height)
|
||||
}
|
||||
|
||||
val container = TransientCraftingContainer(object : AbstractContainerMenu(null, 0) {
|
||||
override fun quickMoveStack(pPlayer: Player, pIndex: Int): ItemStack {
|
||||
return ItemStack.EMPTY
|
||||
if (it is IShapedRecipe<*>) {
|
||||
width = it.recipeWidth
|
||||
height = it.recipeHeight
|
||||
} else {
|
||||
width = 3
|
||||
height = 3
|
||||
}
|
||||
|
||||
override fun stillValid(pPlayer: Player): Boolean {
|
||||
return false
|
||||
}
|
||||
}, width, height)
|
||||
|
||||
val realIngredients = ArrayList<ArrayList<RecipeEntry>>()
|
||||
|
||||
for (c in it.ingredients.indices) {
|
||||
if (it.ingredients[c].isActuallyEmpty) {
|
||||
continue
|
||||
if (width * height < it.ingredients.size) {
|
||||
width = it.ingredients.size.coerceAtLeast(width)
|
||||
height = it.ingredients.size.coerceAtLeast(height)
|
||||
}
|
||||
|
||||
for ((i, ingredient) in it.ingredients.withIndex()) {
|
||||
if (i != c) {
|
||||
container[i] = if (ingredient.isActuallyEmpty) ItemStack.EMPTY else ingredient.items.firstOrNull() ?: ItemStack.EMPTY
|
||||
val container = TransientCraftingContainer(object : AbstractContainerMenu(null, 0) {
|
||||
override fun quickMoveStack(pPlayer: Player, pIndex: Int): ItemStack {
|
||||
return ItemStack.EMPTY
|
||||
}
|
||||
}
|
||||
|
||||
val result = ArrayList<RecipeEntry>()
|
||||
override fun stillValid(pPlayer: Player): Boolean {
|
||||
return false
|
||||
}
|
||||
}, width, height)
|
||||
|
||||
for (item in it.ingredients[c].items) {
|
||||
container[c] = item
|
||||
val realIngredients = ArrayList<ArrayList<RecipeEntry>>()
|
||||
|
||||
if (!it.assemble(container, server.registryAccess()).isEmpty) {
|
||||
val residue = it.getRemainingItems(container)
|
||||
for (c in it.ingredients.indices) {
|
||||
if (it.ingredients[c].isActuallyEmpty) {
|
||||
continue
|
||||
}
|
||||
|
||||
val thisResidue = residue[c]
|
||||
|
||||
if (thisResidue.isEmpty) {
|
||||
result.add(RecipeEntry(item))
|
||||
} else {
|
||||
result.add(RecipeEntry(ImmutableStack(item), ImmutableStack(thisResidue)))
|
||||
for ((i, ingredient) in it.ingredients.withIndex()) {
|
||||
if (i != c) {
|
||||
container[i] = if (ingredient.isActuallyEmpty) ItemStack.EMPTY else ingredient.items.firstOrNull() ?: ItemStack.EMPTY
|
||||
}
|
||||
}
|
||||
|
||||
val result = ArrayList<RecipeEntry>()
|
||||
|
||||
for (item in it.ingredients[c].items) {
|
||||
container[c] = item
|
||||
|
||||
if (!it.assemble(container, server.registryAccess()).isEmpty) {
|
||||
val residue = it.getRemainingItems(container)
|
||||
|
||||
val thisResidue = residue[c]
|
||||
|
||||
if (thisResidue.isEmpty) {
|
||||
result.add(RecipeEntry(item))
|
||||
} else {
|
||||
result.add(RecipeEntry(ImmutableStack(item), ImmutableStack(thisResidue)))
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
realIngredients.add(result)
|
||||
}
|
||||
|
||||
realIngredients.add(result)
|
||||
ResolvedRecipe(
|
||||
realIngredients.stream().map { it.stream() },
|
||||
ImmutableStack(resultItem),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
)
|
||||
}
|
||||
|
||||
ResolvedRecipe(
|
||||
realIngredients.stream().map { it.stream() },
|
||||
ImmutableStack(resultItem),
|
||||
isCritical = isCritical,
|
||||
name = it.id,
|
||||
allowBacktrack = allowBacktrack
|
||||
)
|
||||
} catch(err: Throwable) {
|
||||
throw RuntimeException("Processing crafting table recipe ${it.id}", err)
|
||||
}
|
||||
}.filterNotNull().filter {
|
||||
if (it.inputs.isEmpty()) {
|
||||
@ -1346,8 +1354,8 @@ object MatterManager {
|
||||
val multiplier: Double = 1.0
|
||||
) {
|
||||
init {
|
||||
require(!multiplier.isNaN()) { "Provided stack cost multiplier is NaN" }
|
||||
require(!multiplier.isInfinite()) { "Provided stack cost multiplier is infinite" }
|
||||
require(!multiplier.isNaN()) { "Provided stack cost multiplier is NaN (item: $item)" }
|
||||
require(!multiplier.isInfinite()) { "Provided stack cost multiplier is infinite (item: $item)" }
|
||||
}
|
||||
|
||||
constructor(item: Item, count: Int) : this(item, 1.0 / count.toDouble())
|
||||
|
Loading…
Reference in New Issue
Block a user