diff --git a/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java b/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java index 55ab2ff2..312a07ca 100644 --- a/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java +++ b/src/api/java/appeng/api/networking/crafting/ICraftingCPU.java @@ -23,9 +23,14 @@ package appeng.api.networking.crafting; +import appeng.api.config.Actionable; +import appeng.api.networking.IGrid; +import appeng.api.networking.energy.IEnergyGrid; import appeng.api.networking.security.BaseActionSource; import appeng.api.networking.storage.IBaseMonitor; import appeng.api.storage.data.IAEItemStack; +import appeng.api.storage.data.IAEStack; +import appeng.api.storage.data.IItemList; public interface ICraftingCPU extends IBaseMonitor { /** @@ -52,4 +57,38 @@ public interface ICraftingCPU extends IBaseMonitor { * @return an empty string or the name of the cpu. */ String getName(); + + void getListOfItem(final IItemList list, final CraftingItemList whichList); + + void cancel(); + + IAEItemStack getItemStack(final IAEItemStack what, final CraftingItemList storage2); + + long getElapsedTime(); + + long getRemainingItemCount(); + + long getStartItemCount(); + + void addCrafting(final ICraftingPatternDetails details, final long crafts); + + void addStorage(final IAEItemStack extractItems); + + void addEmitable(final IAEItemStack i); + + void updateCraftingLogic(final IGrid grid, final IEnergyGrid eg, final ICraftingGrid cc); + + ICraftingLink getLastCraftingLink(); + + boolean canAccept(final IAEStack input); + + IAEStack injectItems(final IAEStack input, final Actionable type, final BaseActionSource src); + + ICraftingLink submitJob(final IGrid g, final ICraftingJob job, final BaseActionSource src, final ICraftingRequester requestingMachine); + + boolean isMaking(final IAEItemStack what); + + boolean isActive(); + + boolean isDestroyed(); } diff --git a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java index 4183a5ac..da66d0fd 100644 --- a/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java +++ b/src/main/java/appeng/container/implementations/ContainerCraftingCPU.java @@ -39,7 +39,6 @@ import appeng.core.sync.packets.PacketMEInventoryUpdate; import appeng.core.sync.packets.PacketValueConfig; import appeng.helpers.ICustomNameObject; import appeng.me.cluster.IAEMultiBlock; -import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.tile.crafting.TileCraftingTile; import appeng.util.Platform; import net.minecraft.entity.player.EntityPlayer; @@ -53,7 +52,7 @@ public class ContainerCraftingCPU extends AEBaseContainer private final IItemList list = AEApi.instance().storage().createItemList(); private IGrid network; - private CraftingCPUCluster monitor = null; + private ICraftingCPU monitor = null; private String cpuName = null; @GuiSync(0) @@ -110,9 +109,9 @@ public class ContainerCraftingCPU extends AEBaseContainer } } - if (c instanceof CraftingCPUCluster) { + if (c instanceof ICraftingCPU) { this.cpuName = c.getName(); - this.setMonitor((CraftingCPUCluster) c); + this.setMonitor((ICraftingCPU) c); this.list.resetStatus(); this.getMonitor().getListOfItem(this.list, CraftingItemList.ALL); this.getMonitor().addListener(this, null); @@ -242,11 +241,11 @@ public class ContainerCraftingCPU extends AEBaseContainer this.eta = eta; } - CraftingCPUCluster getMonitor() { + ICraftingCPU getMonitor() { return this.monitor; } - private void setMonitor(final CraftingCPUCluster monitor) { + private void setMonitor(final ICraftingCPU monitor) { this.monitor = monitor; } diff --git a/src/main/java/appeng/crafting/CraftingTreeNode.java b/src/main/java/appeng/crafting/CraftingTreeNode.java index af0ba2f4..f2ca9589 100644 --- a/src/main/java/appeng/crafting/CraftingTreeNode.java +++ b/src/main/java/appeng/crafting/CraftingTreeNode.java @@ -26,12 +26,12 @@ import java.util.List; import appeng.api.AEApi; import appeng.api.config.Actionable; import appeng.api.config.FuzzyMode; +import appeng.api.networking.crafting.ICraftingCPU; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.security.BaseActionSource; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; -import appeng.me.cluster.implementations.CraftingCPUCluster; import com.google.common.collect.Lists; import net.minecraft.world.World; @@ -313,7 +313,7 @@ public class CraftingTreeNode { public void setJob( final MECraftingInventory storage, - final CraftingCPUCluster craftingCPUCluster, + final ICraftingCPU ICraftingCPU, final BaseActionSource src ) throws CraftBranchFailure { for (final IAEItemStack i : this.used) { @@ -323,17 +323,17 @@ public class CraftingTreeNode { throw new CraftBranchFailure(i, i.getStackSize()); } - craftingCPUCluster.addStorage(ex); + ICraftingCPU.addStorage(ex); } if (this.howManyEmitted > 0) { final IAEItemStack i = this.what.copy(); i.setStackSize(this.howManyEmitted); - craftingCPUCluster.addEmitable(i); + ICraftingCPU.addEmitable(i); } for (final CraftingTreeProcess pro : this.nodes) { - pro.setJob(storage, craftingCPUCluster, src); + pro.setJob(storage, ICraftingCPU, src); } } diff --git a/src/main/java/appeng/crafting/CraftingTreeProcess.java b/src/main/java/appeng/crafting/CraftingTreeProcess.java index 6fc62308..16a59954 100644 --- a/src/main/java/appeng/crafting/CraftingTreeProcess.java +++ b/src/main/java/appeng/crafting/CraftingTreeProcess.java @@ -24,13 +24,13 @@ import java.util.Map.Entry; import appeng.api.AEApi; import appeng.api.config.Actionable; +import appeng.api.networking.crafting.ICraftingCPU; import appeng.api.networking.crafting.ICraftingGrid; import appeng.api.networking.crafting.ICraftingPatternDetails; import appeng.api.networking.security.BaseActionSource; import appeng.api.storage.data.IAEItemStack; import appeng.api.storage.data.IItemList; import appeng.container.ContainerNull; -import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.util.Platform; import cpw.mods.fml.common.FMLCommonHandler; import net.minecraft.inventory.InventoryCrafting; @@ -287,13 +287,13 @@ public class CraftingTreeProcess { void setJob( final MECraftingInventory storage, - final CraftingCPUCluster craftingCPUCluster, + final ICraftingCPU ICraftingCPU, final BaseActionSource src ) throws CraftBranchFailure { - craftingCPUCluster.addCrafting(this.details, this.crafts); + ICraftingCPU.addCrafting(this.details, this.crafts); for (final CraftingTreeNode pro : this.nodes.keySet()) { - pro.setJob(storage, craftingCPUCluster, src); + pro.setJob(storage, ICraftingCPU, src); } } diff --git a/src/main/java/appeng/me/cache/CraftingGridCache.java b/src/main/java/appeng/me/cache/CraftingGridCache.java index 6ff0ff4d..5bd4d48a 100644 --- a/src/main/java/appeng/me/cache/CraftingGridCache.java +++ b/src/main/java/appeng/me/cache/CraftingGridCache.java @@ -49,7 +49,6 @@ import appeng.crafting.CraftingJob; import appeng.crafting.CraftingLink; import appeng.crafting.CraftingLinkNexus; import appeng.crafting.CraftingWatcher; -import appeng.me.cluster.implementations.CraftingCPUCluster; import appeng.me.helpers.GenericInterestManager; import appeng.tile.crafting.TileCraftingStorageTile; import appeng.tile.crafting.TileCraftingTile; @@ -82,8 +81,8 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper CRAFTING_POOL = Executors.newCachedThreadPool(factory); } - private final Set craftingCPUClusters - = new HashSet(); + private final Set ICraftingCPUs + = new HashSet(); private final Set craftingProviders = new HashSet(); private final Map craftingWatchers @@ -131,7 +130,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } } - for (final CraftingCPUCluster cpu : this.craftingCPUClusters) { + for (final ICraftingCPU cpu : this.ICraftingCPUs) { cpu.updateCraftingLogic(this.grid, this.energyGrid, this); } } @@ -259,14 +258,14 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } private void updateCPUClusters() { - this.craftingCPUClusters.clear(); + this.ICraftingCPUs.clear(); for (final IGridNode cst : this.grid.getMachines(TileCraftingStorageTile.class)) { final TileCraftingStorageTile tile = (TileCraftingStorageTile) cst.getMachine(); - final CraftingCPUCluster cluster = (CraftingCPUCluster) tile.getCluster(); + final ICraftingCPU cluster = (ICraftingCPU) tile.getCluster(); if (cluster != null) { - this.craftingCPUClusters.add(cluster); + this.ICraftingCPUs.add(cluster); if (cluster.getLastCraftingLink() != null) { this.addLink((CraftingLink) cluster.getLastCraftingLink()); @@ -346,7 +345,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper @Override public boolean canAccept(final IAEStack input) { - for (final CraftingCPUCluster cpu : this.craftingCPUClusters) { + for (final ICraftingCPU cpu : this.ICraftingCPUs) { if (cpu.canAccept(input)) { return true; } @@ -368,7 +367,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper @Override public IAEStack injectItems(IAEStack input, final Actionable type, final BaseActionSource src) { - for (final CraftingCPUCluster cpu : this.craftingCPUClusters) { + for (final ICraftingCPU cpu : this.ICraftingCPUs) { input = cpu.injectItems(input, type, src); } @@ -461,27 +460,27 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper return null; } - CraftingCPUCluster cpuCluster = null; + ICraftingCPU cpuCluster = null; - if (target instanceof CraftingCPUCluster) { - cpuCluster = (CraftingCPUCluster) target; + if (target instanceof ICraftingCPU) { + cpuCluster = (ICraftingCPU) target; } if (target == null) { - final List validCpusClusters - = new ArrayList(); - for (final CraftingCPUCluster cpu : this.craftingCPUClusters) { + final List validCpusClusters + = new ArrayList(); + for (final ICraftingCPU cpu : this.ICraftingCPUs) { if (cpu.isActive() && !cpu.isBusy() && cpu.getAvailableStorage() >= job.getByteTotal()) { validCpusClusters.add(cpu); } } - Collections.sort(validCpusClusters, new Comparator() { + Collections.sort(validCpusClusters, new Comparator() { @Override public int compare( - final CraftingCPUCluster firstCluster, - final CraftingCPUCluster nextCluster + final ICraftingCPU firstCluster, + final ICraftingCPU nextCluster ) { if (prioritizePower) { final int comparison = ItemSorters.compareLong( @@ -523,7 +522,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper @Override public ImmutableSet getCpus() { - return ImmutableSet.copyOf(new ActiveCpuIterator(this.craftingCPUClusters)); + return ImmutableSet.copyOf(new ActiveCpuIterator(this.ICraftingCPUs)); } @Override @@ -533,7 +532,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper @Override public boolean isRequesting(final IAEItemStack what) { - for (final CraftingCPUCluster cluster : this.craftingCPUClusters) { + for (final ICraftingCPU cluster : this.ICraftingCPUs) { if (cluster.isMaking(what)) { return true; } @@ -553,7 +552,7 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } public boolean hasCpu(final ICraftingCPU cpu) { - return this.craftingCPUClusters.contains(cpu); + return this.ICraftingCPUs.contains(cpu); } public GenericInterestManager getInterestManager() { @@ -561,10 +560,10 @@ public class CraftingGridCache implements ICraftingGrid, ICraftingProviderHelper } private static class ActiveCpuIterator implements Iterator { - private final Iterator iterator; - private CraftingCPUCluster cpuCluster; + private final Iterator iterator; + private ICraftingCPU cpuCluster; - public ActiveCpuIterator(final Collection o) { + public ActiveCpuIterator(final Collection o) { this.iterator = o.iterator(); this.cpuCluster = null; } diff --git a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java index e02ea5b2..8e0a0741 100644 --- a/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java +++ b/src/main/java/appeng/me/cluster/implementations/CraftingCPUCluster.java @@ -104,10 +104,12 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { this.max = max; } + @Override public boolean isDestroyed() { return this.isDestroyed; } + @Override public ICraftingLink getLastCraftingLink() { return this.myLastLink; } @@ -189,6 +191,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { } } + @Override public boolean canAccept(final IAEStack input) { if (input instanceof IAEItemStack) { final IAEItemStack is = this.waitingFor.findPrecise((IAEItemStack) input); @@ -199,6 +202,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { return false; } + @Override public IAEStack injectItems(final IAEStack input, final Actionable type, final BaseActionSource src) { if (!(input instanceof IAEItemStack)) { @@ -456,6 +460,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { return true; } + @Override public void cancel() { if (this.myLastLink != null) { this.myLastLink.cancel(); @@ -487,8 +492,9 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { this.storeItems(); // marks dirty } + @Override public void updateCraftingLogic( - final IGrid grid, final IEnergyGrid eg, final CraftingGridCache cc + final IGrid grid, final IEnergyGrid eg, final ICraftingGrid cc ) { if (!this.getCore().isActive()) { return; @@ -523,7 +529,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { if (this.remainingOperations > 0) { do { this.somethingChanged = false; - this.executeCrafting(eg, cc); + this.executeCrafting(eg, (CraftingGridCache)cc); } while (this.somethingChanged && this.remainingOperations > 0); } this.usedOps[2] = this.usedOps[1]; @@ -754,6 +760,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { this.markDirty(); } + @Override public ICraftingLink submitJob( final IGrid g, final ICraftingJob job, @@ -862,6 +869,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { return this.myName; } + @Override public boolean isActive() { final TileCraftingTile core = this.getCore(); @@ -908,6 +916,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { } } + @Override public void getListOfItem(final IItemList list, final CraftingItemList whichList) { switch (whichList) { @@ -949,15 +958,18 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { } } + @Override public void addStorage(final IAEItemStack extractItems) { this.inventory.injectItems(extractItems, Actionable.MODULATE, null); } + @Override public void addEmitable(final IAEItemStack i) { this.waitingFor.add(i); this.postCraftingStatusChange(i); } + @Override public void addCrafting(final ICraftingPatternDetails details, final long crafts) { TaskProgress i = this.tasks.get(details); @@ -968,6 +980,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { i.value += crafts; } + @Override public IAEItemStack getItemStack(final IAEItemStack what, final CraftingItemList storage2) { IAEItemStack is; @@ -1153,6 +1166,7 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { return this.getCore().getWorldObj(); } + @Override public boolean isMaking(final IAEItemStack what) { final IAEItemStack wat = this.waitingFor.findPrecise(what); return wat != null && wat.getStackSize() > 0; @@ -1191,14 +1205,17 @@ public final class CraftingCPUCluster implements IAECluster, ICraftingCPU { this.remainingItemCount = this.getRemainingItemCount() - is.getStackSize(); } + @Override public long getElapsedTime() { return this.elapsedTime; } + @Override public long getRemainingItemCount() { return this.remainingItemCount; } + @Override public long getStartItemCount() { return this.startItemCount; } diff --git a/src/main/java/appeng/me/legacy/CraftingJobPacket.java b/src/main/java/appeng/me/legacy/CraftingJobPacket.java new file mode 100644 index 00000000..153974f5 --- /dev/null +++ b/src/main/java/appeng/me/legacy/CraftingJobPacket.java @@ -0,0 +1,17 @@ +package appeng.me.legacy; + +import java.util.ArrayList; +import java.util.List; +import net.minecraft.item.ItemStack; + +public class CraftingJobPacket +{ + public ItemStack Target; + public List Dependencies; + public List Missing; + + public CraftingJobPacket() { + this.Dependencies = new ArrayList(); + this.Missing = new ArrayList(); + } +}