Fix a glitch

This commit is contained in:
Bruno Rybársky 2024-07-05 00:04:34 +02:00
parent b85ab92097
commit ecb926a180
4 changed files with 11 additions and 15 deletions

@ -11,7 +11,7 @@ loader_version=0.15.11
fabric_version=0.100.4+1.21
# Mod Properties
mod_version=3.0.2
mod_version=3.0.3
maven_group=systems.brn
archives_base_name=Server_storage

@ -28,10 +28,7 @@ public class HardDrive {
public Map<ItemStack, Integer> items;
public void loadComponents() {
Map<ItemStack, Integer> loadedItems = driveStack.getComponents().getOrDefault(ITEMSTACK_MAP, new HashMap<>());
if (this.items == null) {
this.items = loadedItems;
}
this.items = driveStack.getComponents().getOrDefault(ITEMSTACK_MAP, new HashMap<>());
updateData();
}
@ -123,20 +120,19 @@ public class HardDrive {
blockEntity.markDirty();
}
public ItemStack removeStackFromInventory(ItemStack stack) {
int outCount = 0;
public ItemStack removeStackFromInventoryRemains(ItemStack stack) {
int outCount = stack.getCount();
ItemStack outStack = stack.copy();
for (Map.Entry<ItemStack, Integer> entry : items.entrySet()) {
if (canCombine(entry.getKey(), stack)) {
int countInDrive = entry.getValue();
int needToRemove = stack.getCount();
if (countInDrive <= needToRemove) {
if (countInDrive <= outCount) {
items.remove(entry.getKey());
needToRemove -= countInDrive;
outCount += needToRemove;
outCount -= countInDrive;
} else {
entry.setValue(countInDrive - needToRemove);
entry.setValue(countInDrive - outCount);
outCount -= countInDrive;
}
break;
}

@ -187,8 +187,8 @@ public class StorageNetwork {
ItemStack outStack = stackToRemove.copy();
for (HardDrive drive : drives) {
outStack = drive.removeStackFromInventory(outStack);
if (outStack.getCount() >= stackToRemove.getCount()) {
ItemStack removedStack = drive.removeStackFromInventoryRemains(outStack);
if (removedStack.getCount() <= 0) {
break;
}
}

@ -92,6 +92,7 @@ public class CraftingScreen extends PagedGui {
}
private boolean canCraft(RecipeEntry<CraftingRecipe> recipeEntry) {
blockEntity.reindexDrives();
for (Ingredient ingredient : recipeEntry.value().getIngredients()) {
if (findMatchingStack(ingredient) == null) {
return false;
@ -119,7 +120,6 @@ public class CraftingScreen extends PagedGui {
// Add crafted item to the appropriate inventory
ItemStack outputStack = recipeEntry.value().getResult(storageScreen.getPlayer().getRegistryManager()).copy();
int maxStackSize = outputStack.getMaxCount();
if (toPlayerInventory) {
PlayerInventory playerInventory = player.getInventory();