Force cluster-rebuilds on the first detected change, if their bounds do not match.
Also use a client-side method to update connected textures for crafting cubes if two previously distinct clusters are connected. Refactored MBCalculator to use generics for type checks and remove more casts.
This commit is contained in:
@@ -18,12 +18,7 @@
|
||||
|
||||
package appeng.me.cluster.implementations;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.Collection;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.*;
|
||||
import java.util.Map.Entry;
|
||||
|
||||
import com.google.common.collect.ImmutableList;
|
||||
@@ -45,14 +40,7 @@ import appeng.api.crafting.ICraftingHelper;
|
||||
import appeng.api.networking.IGrid;
|
||||
import appeng.api.networking.IGridHost;
|
||||
import appeng.api.networking.IGridNode;
|
||||
import appeng.api.networking.crafting.CraftingItemList;
|
||||
import appeng.api.networking.crafting.ICraftingCPU;
|
||||
import appeng.api.networking.crafting.ICraftingGrid;
|
||||
import appeng.api.networking.crafting.ICraftingJob;
|
||||
import appeng.api.networking.crafting.ICraftingLink;
|
||||
import appeng.api.networking.crafting.ICraftingMedium;
|
||||
import appeng.api.networking.crafting.ICraftingPatternDetails;
|
||||
import appeng.api.networking.crafting.ICraftingRequester;
|
||||
import appeng.api.networking.crafting.*;
|
||||
import appeng.api.networking.energy.IEnergyGrid;
|
||||
import appeng.api.networking.events.MENetworkCraftingCpuChange;
|
||||
import appeng.api.networking.security.IActionSource;
|
||||
@@ -62,15 +50,10 @@ import appeng.api.storage.IMEMonitorHandlerReceiver;
|
||||
import appeng.api.storage.channels.IItemStorageChannel;
|
||||
import appeng.api.storage.data.IAEItemStack;
|
||||
import appeng.api.storage.data.IItemList;
|
||||
import appeng.api.util.WorldCoord;
|
||||
import appeng.container.ContainerNull;
|
||||
import appeng.core.AELog;
|
||||
import appeng.core.Api;
|
||||
import appeng.crafting.CraftBranchFailure;
|
||||
import appeng.crafting.CraftingJob;
|
||||
import appeng.crafting.CraftingLink;
|
||||
import appeng.crafting.CraftingWatcher;
|
||||
import appeng.crafting.MECraftingInventory;
|
||||
import appeng.crafting.*;
|
||||
import appeng.me.cache.CraftingGridCache;
|
||||
import appeng.me.cluster.IAECluster;
|
||||
import appeng.me.cluster.MBCalculator;
|
||||
@@ -116,9 +99,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU {
|
||||
private long startItemCount;
|
||||
private long remainingItemCount;
|
||||
|
||||
public CraftingCPUCluster(final WorldCoord boundsMin, final WorldCoord boundsMax) {
|
||||
this.boundsMin = boundsMin.getBlockPos();
|
||||
this.boundsMax = boundsMax.getBlockPos();
|
||||
public CraftingCPUCluster(final BlockPos boundsMin, final BlockPos boundsMax) {
|
||||
this.boundsMin = boundsMin.toImmutable();
|
||||
this.boundsMax = boundsMax.toImmutable();
|
||||
}
|
||||
|
||||
@Override
|
||||
@@ -175,7 +158,10 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU {
|
||||
}
|
||||
this.isDestroyed = true;
|
||||
|
||||
MBCalculator.setModificationInProgress(this);
|
||||
boolean ownsModification = !MBCalculator.isModificationInProgress();
|
||||
if (ownsModification) {
|
||||
MBCalculator.setModificationInProgress(this);
|
||||
}
|
||||
try {
|
||||
boolean posted = false;
|
||||
|
||||
@@ -192,7 +178,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU {
|
||||
r.updateStatus(null);
|
||||
}
|
||||
} finally {
|
||||
MBCalculator.setModificationInProgress(null);
|
||||
if (ownsModification) {
|
||||
MBCalculator.setModificationInProgress(null);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user