@Override public TickRateModulation tickingRequest(final IGridNode node, int ticksSinceLastCall) { if (this.inv.getStackInSlot(9) != null) { this.pushOut(this.inv.getStackInSlot(9)); // did it eject? if (this.inv.getStackInSlot(9) == null) { this.markDirty(); } this.ejectHeldItems(); this.updateSleepiness(); this.progress = 0; return this.isAwake ? TickRateModulation.IDLE : TickRateModulation.SLEEP; } if (this.myPlan == null) { this.updateSleepiness(); return TickRateModulation.SLEEP; } if (this.reboot) { ticksSinceLastCall = 1; } if (!this.isAwake) { return TickRateModulation.SLEEP; } this.reboot = false; int speed = 10; switch (this.upgrades.getInstalledUpgrades(Upgrades.SPEED)) { case 0: this.progress += this.userPower(ticksSinceLastCall, speed = 10, 1.0); break; case 1: this.progress += this.userPower(ticksSinceLastCall, speed = 13, 1.3); break; case 2: this.progress += this.userPower(ticksSinceLastCall, speed = 17, 1.7); break; case 3: this.progress += this.userPower(ticksSinceLastCall, speed = 20, 2.0); break; case 4: this.progress += this.userPower(ticksSinceLastCall, speed = 25, 2.5); break; case 5: this.progress += this.userPower(ticksSinceLastCall, speed = 50, 5.0); break; } if (this.progress >= 100) { for (int x = 0; x < this.craftingInv.getSizeInventory(); x++) { this.craftingInv.setInventorySlotContents(x, this.inv.getStackInSlot(x)); } this.progress = 0; final ItemStack output = this.myPlan.getOutput(this.craftingInv, this.getWorldObj()); if (output != null) { FMLCommonHandler.instance() .firePlayerCraftingEvent( Platform.getPlayer((WorldServer) this.getWorldObj()), output, this.craftingInv); this.pushOut(output.copy()); for (int x = 0; x < this.craftingInv.getSizeInventory(); x++) { this.inv.setInventorySlotContents( x, Platform.getContainerItem(this.craftingInv.getStackInSlot(x))); } if (this.inv.getStackInSlot(10) == null) { this.forcePlan = false; this.myPlan = null; this.pushDirection = ForgeDirection.UNKNOWN; } this.ejectHeldItems(); try { final TargetPoint where = new TargetPoint( this.worldObj.provider.dimensionId, this.xCoord, this.yCoord, this.zCoord, 32); final IAEItemStack item = AEItemStack.create(output); NetworkHandler.instance.sendToAllAround( new PacketAssemblerAnimation( this.xCoord, this.yCoord, this.zCoord, (byte) speed, item), where); } catch (final IOException e) { // ;P } this.markDirty(); this.updateSleepiness(); return this.isAwake ? TickRateModulation.IDLE : TickRateModulation.SLEEP; } } return TickRateModulation.FASTER; }